摘要: 結合C語言課程對高職軟件類學生的學情進行了簡要的分析,從提高學生的學習自信心、激發(fā)其學習興趣、強化其學習動機以及運用知識能力等角度出發(fā),以for循環(huán)結構為例,重構并優(yōu)化了相關的教學內容和教法,進而取得了較為滿意的教學效果。文章的最后進行了有關的教學反思和討論。
關鍵詞: C語言; for循環(huán)結構; 教學設計
中圖分類號:G642文獻標志碼:B 文章編號:1006-8228(2012)05-49-03
Teaching design and practice for loop structure of C in higher vocational colleges
Huang Xiongbo
(Department of Computer Science, Foshan Professional Technical College, Foshan, Guangdong 528137, China)
Abstract: In order to make students interest in study and have more self-confidence, the paper analyses the student's situation of learning C language, reconstructs and optimizes the content of for-loop structure of C language course, gets the satisfying effectiveness. The paper reflects and discusses about teaching last.
Key words: C language; for-loop structure; teaching design
1 C語言課程特點及學情分析
當前的高職生源主要是統(tǒng)招錄取的普通高中畢業(yè)生,少量來源于中專、技?;蚵殬I(yè)中學對口升學(3+證書)的學生。?近年來,由于社會對高職教育缺乏足夠的了解,加上一些用人單位片面地追求高學歷,使得高職院校的學生與本科院校的學生相比處于劣勢,不少高職學生甚至覺得自己是“非正規(guī)”的大學生[1]。高職學生的這種自卑失落情緒導致了他們在就學期間學習目標不明確、學習興趣不高,面對學習中遇到的困難缺乏信心和毅力。
C語言是一種面向過程的通用程序設計語言,它具有表達簡明、使用靈活、豐富的數(shù)據(jù)結構、良好的程序可移植性和高效率的目標代碼等眾多優(yōu)點[2],因而已成為高職軟件類學生的必修課程。從高職軟件類的課程體系來看,C語言是面向對象程序設計語言、數(shù)據(jù)結構、動態(tài)網(wǎng)頁編程等后續(xù)課程的前導課,因而該課程一般在第一學年中開設。在還沒有進入專業(yè)的情況下,C語言的教學案例往往取材于數(shù)學問題求解或數(shù)學味道很濃的工程問題求解,這不僅導致課程枯燥難學,一定程度上也使學生出現(xiàn)了厭學的情緒。
基于多年的高職C語言課程的教學經驗積累和反思,作者對該課程的教學內容、教法及教學過程作了重構和優(yōu)化,初步取得了一定成效。下面就for循環(huán)結構的教學方法加以介紹和討論。
2 循環(huán)結構的教學設計與實踐
2.1 教學內容的選取
C語言提供了三種循環(huán)結構,for語句(步長型循環(huán)),while語句(當型循環(huán))和do-while(直到型),它們在一定程度上可相互轉換。對于for語句,我們按照從易到難的認知規(guī)律,選取了1+2+…+n的求和問題、規(guī)則圖形的打印輸出以及九九乘法表的打印輸出等為教學案例。為了增強教學內容的趣味性、提高學習自信心和運用知識的能力,在主要的教學案例引入了多種編程解決方案,并進一步,指引和鼓勵學生深化現(xiàn)有的解決方案。
2.2 教學方法設計
在整個課堂教學過程中,教師首先串講分析教學案例的編程原理、要點和難點,并展示初步的解決方案;然后組織學生進行分組思考、討論、深化現(xiàn)有的解決方案;在上機調試程序結束后,各個小組進行簡要發(fā)言,介紹實驗過程中遇到的問題及相關解決辦法等;最后,教師小結、點評各個小組的解決方案,歸納分析一些共性的問題,并啟發(fā)點題整個教學案例[3]。
2.3 教學過程的實施
2.3.1 1+2+…+n的求和問題
① 教師結合電子課件串講分析:C語言一個編譯工具,用戶利用它提供的語言描述規(guī)則可以把某一問題的手工求解想法傳遞至計算機中,由機器來完成問題的求解。在該教學案例中,我們的手工求解是這樣的一個過程:
② 組織學生思考、討論并提問:在已學的知識基礎上,要用C語言描述上述求解過程,將會出現(xiàn)什么問題?
教師指出:出現(xiàn)的問題有兩點,需要定義n-1個形如sum1,sum2,…sumn的變量;需要編寫n-1次兩數(shù)相加的計算過程。
教師啟發(fā):根據(jù)順序程序的運行特點,可把上述的求解過程改寫為:sum=1+2,sum=sum+3,…,sum=sum+n,故此時只需定義一個變量sum即可;而在n-1次兩數(shù)相加的計算過程中,每次都呈現(xiàn)出兩個值不同的數(shù)在作加法運算的規(guī)律,為了有效地處理這種具有共性的重復過程,C語言引入了循環(huán)結構。
③ 導入循環(huán)結構知識點:著重圍繞循環(huán)結構的使用場合(存在共性的重復過程)和循環(huán)次數(shù)的控制(循環(huán)條件)展開講解。
進一步,教師結合for語句一般格式{for(表達式1;表達式2;表達式3)}和圖1所示的流程圖詳盡剖析循環(huán)結構的運行過程。
[求解表達式1] [表達式2][語句][求解表達式3][for語句的
下一語句]
圖1語句的流程圖
④ 承上啟下,引領學生用for語句編寫式子1+2+…+n的求和問題:
#include
main()
{
int i ,n,sum=0;
printf("請輸入式子 中的 :");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum=sum+i;
printf(" %d=%d",n,sum) ;
}
⑤ 學生上機調試程序。
2.3.2 九九乘法表的打印輸出問題
圖2九九乘法表的打印輸出示意圖
① 教師結合電子課件串講分析:九九乘法表共有9行數(shù)據(jù),且隨著行數(shù)的增加,其輸出的列數(shù)也在增加如圖2所示。不難發(fā)現(xiàn),圖2具有“某兩數(shù)相乘的打印輸出”這一共性的重復過程,為此可用循環(huán)結構來編程實現(xiàn)該問題。由于該輸出涉及行、列兩個方向,所以須用雙重循環(huán)來實現(xiàn),即在外循環(huán)控制行(列)數(shù),相應地,在內循環(huán)控制列(行)數(shù);此時,可結合已學的多分支語句(分支中有分支)來串講多循環(huán)語句(循環(huán)中有循環(huán))。
② 教師現(xiàn)場編寫示范程序,并用多媒體課件展示多重循環(huán)的過程。這里的教學重點和難點是讓學生深刻領會,外循環(huán)的循環(huán)體又是一個循環(huán)結構,而外循環(huán)的下一次循環(huán)必須等待內循環(huán)的循環(huán)結束后才能重新開始。
#include
main()
{
int i ,j;
for(i=1;i<=9;i++) /*i變量控制輸出的行數(shù)*/
{
for(j=1;j<=i;j++) /*j變量控制每行輸出的列數(shù)*/
printf("%d×%d=%2d",i,j,i*j);
printf(" "); /*換行*/
}
}
③ 教師輔導學生調試示范程序。
④ 教師展示如圖3(先從上至下,后從左至右)和圖4(先從右至左,后從下至上)所示的九九乘法表的打印輸出新方案(注意調度和激發(fā)學生的學習興趣)。
圖3先從上至下,后從左至右地輸出九九乘法表
圖4先從右至左,后從下至上地輸出九九乘法表
⑤ 組織學生思考、討論并提問:要實現(xiàn)圖3和圖4所示的打印輸出方案,關鍵要解決什么問題?教師結合圖3指出,當打印輸出完第1列第9行數(shù)據(jù)時,其當前的輸出光標就處于圖3中的 [A]標志處,按照“先從上至下,后從左至右”的輸出規(guī)則,此時需要把輸出光標移至 [B]標志處。啟發(fā)學生,由于C語言的printf函數(shù)只能緊隨當前光標輸出,為此,要實現(xiàn)圖3所示的輸出方案核心就是要解決光標的定位問題。
⑥ 讓學生在互聯(lián)網(wǎng)絡中搜索“C語言的輸出光標定位問題”,培養(yǎng)學生網(wǎng)絡學習的能力。教師總結,并根據(jù)搜索結果引入gotoxy函數(shù):
聲明:#include
原型:void gotoxy(int x,int y);
功能:對屏幕的光標進行定位;其中:x為列坐標,y為行坐標。
⑦ 有了gotoxy函數(shù)后,用戶就可以隨意對當前輸出光標進行定位。為了培養(yǎng)學生運用知識的能力,教師稍作引導后,便布置學生運用gotoxy函數(shù)編程實現(xiàn)圖3所示的輸出方案。在這一過程中,給學生施加適當?shù)膲毫Γ缭?0-15分鐘內獨立完成和記名考核等,可營造一種良好的學習氛圍。待絕大部分同學完成后,教師公布標準程序。該程序如下。
#include
#include
main()
{
int i,j,x,y;
long k;
for(i=1; i<=9; i++) /*i變量控制輸出的行數(shù)*/
{
for(j=i; j<=9; j++) /*j變量控制每行輸出的列數(shù)*/
{
y=j; /*設置行坐標*/
x=(i-1)*7+1; /*設置列坐標,乘法表的列寬為7*/
gotoxy(x,y);
for(k=1; k<100000000; k++)
; /*為了觀察整個輸出過程,引入空循環(huán)來延時*/
printf("%d×%d=%2d",i,j,i*j);
}
}
}
⑧ 各小組發(fā)言,教師點題。
⑨ 課后作業(yè):按照直角三角形的斜邊“從上至下,從外至內”輸出九九乘法表。
3 教學反思和討論
3.1 先育人后教書
在傳授課程知識的過程中,要始終關懷愛護每一位學生。作者以自身從中專學歷為起點,多年來一直自強不息地對知識執(zhí)著追求的經歷來激發(fā)學生,指引他們崇尚科學、樹立積極向上的人生價值觀。C語言抽象難學,所以在課程的開始階段,應放慢教學進度,耐心細致地反復講解;在學習上嚴格要求學生,對每一個知識點、每一個程序絕對要人人過關。事實上,當學生的基礎知識扎實以后,其將來提升的空間也就越大,也很容易完成“要我學”到“我要學”的過程轉換,學習自信心也就逐漸形成。以下是一位08級學生在課程實訓答辯時的總結,他說:“剛學C語言課程時,我認為我這一輩子都學不了,但是經過老師的耐心教導和自己不懈的努力,我覺得C語言并不難學,在今后的學習過程中,遇到任何困難我也不怕!”
3.2 學習最終的目的是學會學習
向學生傳遞“學習最終的目的是學會學習”的理念。學習是兩件事情,學是模仿,習是練習和運用,學而不習就不算學習。在教學案例的設計上教師應站在一定的高度融入自己獨到的解決方案,而授課過程中不僅應教會學生完成新方案,還要讓學生懂得教師為什么會想出這一種新方案。這對提高學生運用知識的能力非常關鍵。在課程的中期階段,注意培養(yǎng)學生閱讀教材的能力,教師還要選取一些適合C語言課程的文獻與學生共同研讀和探討,力求讓學生在課程的后期階段能減少對老師的依賴,初步具有一定的學習能力。課堂教學中,還可以融人文、歷史、地理、時事、哲學和自然科學等內容于課堂中,做到傳授知識、關愛鼓勵和施加壓力等有機結合,切實讓學生深刻領會到學習不僅是一件享受生活的事情,而且也是一個發(fā)現(xiàn)自我、肯定自我和超越自我的過程。
3.3 考核改革促進學生綜合素質的提高
考核既是衡量學生掌握知識技能的尺度,也是學生學習方法的導向。近年來,作者在C語言教學中深化與教學同步的過程實踐考核,并注重學生綜合素質能力的培養(yǎng)。在課程的不同階段中安排難度合適的的綜合實訓項目,并根據(jù)學習情況把學生分成多個學習小組,學習小組除了完成相實訓項目的程序編寫以外,還要撰寫實訓報告和參加答辯。教師根據(jù)各個小組的項目完成情況及學生在團隊中所起的作用、實訓報告的寫作能力和答辯的表達能力綜合評定成績。該考核方法已嘗試了四年多,效果非常明顯,由于各個階段都要進行考核,學生的出勤率、學習積極性等均有良好的表現(xiàn);同時,學生的團隊合作能力、專業(yè)寫作能力以及口頭表達能力也得到了很好的訓練。
3.4 教研活動做到實處
C語言課程教學團隊每月定期召開教研會議,對重構后的課程教學案例的重點、難點、教學效果及教學方法進行交流和討論;合適的時候,允許有不同知識層次的學生參與教研活動,聽取學生在學習過程中遇到的問題以及相關訴求。
4 結束語
高職院校的專業(yè)建設與課程改革是提高人才培養(yǎng)質量的關鍵;專任教師在刻苦鉆研專業(yè)知識、努力提高職業(yè)技能的同時,還應扎根于一線教學中深入課程建設。本文以for循環(huán)結構教學單元為例,展示了C語言課程的課堂教學方法。實踐證明了這些教學方法在教書育人方面的成效性。
參考文獻:
[1] 趙翠.高職院校學生自信心培養(yǎng)研究—基于學校管理的研究視角[J].
交通職業(yè)教育,2011.5:25~26
[2] 高福成.C語言程序設計教程[M].清華大學出版社,2005.
[3] 黃雄波.高職C語言程序設計中牛頓迭代算法的教學探索[J].電腦知
識與技術,2007.14(22):1147~1148