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