袁 梅
(桂林理工大學(xué)南寧分校,廣西 南寧530001)
《C語(yǔ)言程序設(shè)計(jì)》課程是電子類專業(yè)的重要專業(yè)基礎(chǔ)必修課,學(xué)好C語(yǔ)言是為了后續(xù)的課程打下編程語(yǔ)言基礎(chǔ),但C語(yǔ)言有大量的語(yǔ)法和概念,邏輯抽象,枯燥難學(xué),初學(xué)者在編程過(guò)程中容易出錯(cuò),無(wú)法自己分析解決問(wèn)題,過(guò)于依賴?yán)蠋煹闹笇?dǎo)來(lái)解決問(wèn)題,而教學(xué)過(guò)程中大班教學(xué)往往不能全部兼顧及時(shí)指導(dǎo),如果不能及時(shí)解決問(wèn)題,學(xué)生學(xué)習(xí)積極性容易受挫[1],產(chǎn)生厭學(xué)情緒。因此在《C語(yǔ)言程序設(shè)計(jì)》教學(xué)過(guò)程中提出典型錯(cuò)誤分析強(qiáng)化訓(xùn)練法,讓學(xué)生正面接受挫折教育,把編程失敗經(jīng)驗(yàn)內(nèi)化升級(jí)為成功基石,從而構(gòu)建自己的知識(shí)體系[2],達(dá)到讓學(xué)生自己分析問(wèn)題、解決問(wèn)題具有自主學(xué)習(xí)能力的教學(xué)目標(biāo)。
學(xué)生在初學(xué)C語(yǔ)言時(shí),對(duì)其語(yǔ)法和概念還處于半知不解,理解了皮毛,因此在編程實(shí)驗(yàn)過(guò)程中容易遇到變量未定義、單詞拼寫出錯(cuò)、標(biāo)識(shí)符前后不一致、中文輸入法標(biāo)點(diǎn)符號(hào)有誤、輸入輸出函數(shù)應(yīng)用有誤等等各種語(yǔ)法錯(cuò)誤,雖然編譯軟件會(huì)提示錯(cuò)誤,但高職學(xué)生英語(yǔ)底子較差,對(duì)編譯軟件的英文錯(cuò)誤提示像看天書一樣不能理解,無(wú)法自己分析和處理所遇到的問(wèn)題。同時(shí)學(xué)生又害怕編程失敗,抗拒心理較嚴(yán)重[3]。因此,在課程教學(xué)中提出失敗經(jīng)驗(yàn)鼓勵(lì)法,正確引導(dǎo)學(xué)生不懼失誤,正確面對(duì)編程過(guò)程中的挫折,同時(shí)深化對(duì)C語(yǔ)言知識(shí)點(diǎn)的掌握和應(yīng)用。
學(xué)生在C語(yǔ)言編程過(guò)程中,順利通過(guò)軟件編譯無(wú)誤后,程序可以執(zhí)行操作,但在執(zhí)行時(shí)發(fā)現(xiàn)程序運(yùn)行結(jié)果達(dá)不到預(yù)期的效果,比如說(shuō)循環(huán)語(yǔ)句判斷語(yǔ)句多加分號(hào)、判斷是否相等時(shí)習(xí)慣性數(shù)學(xué)思維用等號(hào)判斷、數(shù)據(jù)區(qū)間判斷表達(dá)式有誤、條件滿足時(shí)執(zhí)行多個(gè)語(yǔ)句未使用花括號(hào)、switch語(yǔ)句漏掉break語(yǔ)句、除法運(yùn)算整數(shù)相除被忽略小數(shù)等邏輯錯(cuò)誤,這對(duì)于剛?cè)腴T學(xué)習(xí)C語(yǔ)言的學(xué)生,經(jīng)驗(yàn)尚淺,在沒(méi)有任何提示的情況下要發(fā)現(xiàn)程序段問(wèn)題是比較難的。因此在教學(xué)過(guò)程中引入錯(cuò)誤案例解析法,把典型的邏輯錯(cuò)誤通過(guò)演示操作并解析原因,做出正確解決方案,給學(xué)生作為經(jīng)驗(yàn)參考。
如果C語(yǔ)言編程時(shí)沒(méi)有語(yǔ)法錯(cuò)誤也排除了邏輯錯(cuò)誤,可是執(zhí)行程序時(shí)還是出現(xiàn)異常[1],結(jié)果不正確、突然閃退或者停止工作等問(wèn)題,如輸入函數(shù)格式說(shuō)明符和輸入列表的數(shù)據(jù)類型不一致、除數(shù)為0、數(shù)據(jù)溢出等執(zhí)行錯(cuò)誤,非??简?yàn)學(xué)生知識(shí)點(diǎn)的熟悉程度,需要仔細(xì)分析程序和借助調(diào)試工具,要有深厚的C語(yǔ)言編程功力。
C語(yǔ)言編程過(guò)程中,引導(dǎo)學(xué)生遇到錯(cuò)誤時(shí)無(wú)所畏懼,采用了失敗經(jīng)驗(yàn)鼓勵(lì)措施,讓學(xué)生將遇到的所有錯(cuò)誤提示和現(xiàn)象全部記錄下來(lái)[1],形成學(xué)習(xí)筆記,并記錄相同問(wèn)題的出現(xiàn)次數(shù),學(xué)生每提出一個(gè)問(wèn)題均可累加學(xué)習(xí)經(jīng)驗(yàn)值,若能提出解決方案者再累加學(xué)習(xí)經(jīng)驗(yàn)值,該經(jīng)驗(yàn)值作為過(guò)程性考核評(píng)價(jià)體系的重要指標(biāo)之一。通過(guò)失敗經(jīng)驗(yàn)鼓勵(lì)的方法:一讓學(xué)生習(xí)慣并正視編程問(wèn)題,樹立學(xué)習(xí)信心;二是通過(guò)累加經(jīng)驗(yàn)值的方式鼓勵(lì)學(xué)生自己嘗試分析問(wèn)題解決問(wèn)題,從而達(dá)到讓學(xué)生主動(dòng)學(xué)習(xí)的教學(xué)目標(biāo)。
一些C語(yǔ)言編程的邏輯錯(cuò)誤和執(zhí)行錯(cuò)誤,編譯軟件均未有錯(cuò)誤提示,導(dǎo)致學(xué)生無(wú)從下手,糾其原因是編程經(jīng)驗(yàn)太少,因此采用錯(cuò)誤案例解析法,把常見的邏輯錯(cuò)誤和執(zhí)行錯(cuò)誤案例“引經(jīng)據(jù)典”放入教學(xué)案例中[1],在教學(xué)過(guò)程中操作演示錯(cuò)誤出現(xiàn)的現(xiàn)象,分析其原因,提出解決方案,為學(xué)生提供一個(gè)參考坐標(biāo),再次遇到類似問(wèn)題時(shí)有所啟迪。同時(shí)在課后布置有類似錯(cuò)誤的“來(lái)找茬”作業(yè),強(qiáng)化訓(xùn)練學(xué)生檢錯(cuò)技巧,深化理解知識(shí)點(diǎn),增加其實(shí)戰(zhàn)經(jīng)驗(yàn),使其熟能生巧構(gòu)建自己的知識(shí)體系。
在《C語(yǔ)言程序設(shè)計(jì)》課程學(xué)習(xí)中,學(xué)生初學(xué)編程時(shí)遇到問(wèn)題容易不知所措過(guò)于依賴教師,但由于大多教學(xué)是采用合班上課,學(xué)生人數(shù)居多,教師無(wú)法全部兼顧,面面俱到,若學(xué)生的問(wèn)題得不到及時(shí)的解決,容易打擊其學(xué)習(xí)積極性產(chǎn)生厭學(xué)情緒。因此采用學(xué)生助教指導(dǎo)的策略,讓學(xué)生自愿擔(dān)當(dāng)教師助教,在自己完成實(shí)驗(yàn)的情況下去幫助指導(dǎo)其它同學(xué)分析問(wèn)題和解決問(wèn)題,獲得自己的學(xué)習(xí)經(jīng)驗(yàn)值,增加實(shí)戰(zhàn)經(jīng)驗(yàn)。遇到問(wèn)題的學(xué)生還可以把問(wèn)題上傳到藍(lán)墨云班課APP里的討論活動(dòng)中,鼓勵(lì)討論組里的學(xué)生參與討論和提出解決方案,不僅可以提高指導(dǎo)的覆蓋面,還可以激發(fā)學(xué)生的學(xué)習(xí)熱情和動(dòng)力,通過(guò)自己的助教獲得自己的學(xué)習(xí)經(jīng)驗(yàn)值。
函數(shù)在C語(yǔ)言教學(xué)中,學(xué)生比較難掌握的一個(gè)內(nèi)容,在教學(xué)過(guò)程中,采用“失敗經(jīng)驗(yàn)鼓勵(lì)法”讓把學(xué)生平時(shí)編程中遇到的問(wèn)題放在討論區(qū)中進(jìn)行案例共享,教師根據(jù)學(xué)生的失敗經(jīng)驗(yàn)進(jìn)行“錯(cuò)誤案例解析”,形成一個(gè)“典型案例”,該案例有語(yǔ)法錯(cuò)誤、邏輯錯(cuò)誤和執(zhí)行錯(cuò)誤,讓學(xué)生來(lái)找茬,案例如下所示。
1-------#include
2-------void Bmi(n);
3-------void main()
4-------{float w,h,bmi;
5-------scanf(“%d%d”,&w,&h);
6-------bmi=w/(h*h);
7-------BMI(w,h,bmi);}
8-------void BMI(n);
9-------{if(bmi>40)printf(“超胖!”);
10-------else if(35 11-------else if(30 12-------else if(25 13-------else printf(“正常!”);} (1)語(yǔ)法錯(cuò)誤:如第 2、7、8 行中,函數(shù)頭的定義、聲明和調(diào)用問(wèn)題。 (2)邏輯錯(cuò)誤:如第 10、11、12行中關(guān)系運(yùn)算表達(dá)式表示區(qū)間的問(wèn)題。 (3)執(zhí)行錯(cuò)誤:如第5行,輸入函數(shù)格式說(shuō)明符和輸入列表的數(shù)據(jù)類型不一致。 課內(nèi)通過(guò)教師的錯(cuò)誤案例分析,學(xué)生懂得函數(shù)的定義、聲明和調(diào)用過(guò)程中不規(guī)范的編程問(wèn)題,通過(guò)課后作業(yè)“來(lái)找茬”檢驗(yàn)學(xué)生的掌握情況,其答題情況匯總?cè)鐖D1所示。語(yǔ)法錯(cuò)誤經(jīng)過(guò)學(xué)生的經(jīng)驗(yàn)分享、教師的錯(cuò)誤案例分析及學(xué)生助教的指導(dǎo)學(xué)習(xí)已經(jīng)得到解決,而邏輯錯(cuò)誤和執(zhí)行錯(cuò)誤少數(shù)同學(xué)還未完全掌握解決方法,這還需要依靠編程實(shí)戰(zhàn)來(lái)累積學(xué)習(xí)經(jīng)驗(yàn)。 圖1 函數(shù)課后作業(yè)“來(lái)找茬”不同錯(cuò)誤類型的掌握情況 學(xué)生在《C語(yǔ)言程序設(shè)計(jì)》編程過(guò)程中,常遇到語(yǔ)法錯(cuò)誤、邏輯錯(cuò)誤和執(zhí)行錯(cuò)誤,糾其原因是編程經(jīng)驗(yàn)不足,語(yǔ)法知識(shí)點(diǎn)功底不深厚。教學(xué)過(guò)程中一是采用了失敗經(jīng)驗(yàn)鼓勵(lì)法有效引導(dǎo)學(xué)生面對(duì)編程錯(cuò)誤;二是通過(guò)錯(cuò)誤案例解析課內(nèi)引經(jīng)據(jù)典課后找茬再做經(jīng)驗(yàn)總結(jié)漸進(jìn)式強(qiáng)化訓(xùn)練,步步為營(yíng);三是鼓勵(lì)學(xué)習(xí)能力優(yōu)者充當(dāng)助教參與教學(xué),激發(fā)學(xué)生的學(xué)習(xí)激情。通過(guò)這一系列的典型錯(cuò)誤分析強(qiáng)化訓(xùn)練方法克服了學(xué)生對(duì)編程問(wèn)題的恐懼心理,樹立學(xué)習(xí)信心,大大改善了課程的教學(xué)質(zhì)量和效果。4 結(jié)束語(yǔ)