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