鴻 磊 張雪松
目前,國內(nèi)高等職業(yè)院校程序設(shè)計基礎(chǔ)課程的教學(xué)內(nèi)容一般偏重于計算機編程語言或完全是編程語言的教學(xué)。教學(xué)模式一般也是傳統(tǒng)的模式,即十分注重某種編程語言基本語句、語法和一些細節(jié)的分析。這樣,該類課程基本上是以高級語言自身的體系為脈絡(luò)展開教學(xué)的。由于教學(xué)不是站在如何應(yīng)用計算機工具編程解決實際問題或?qū)嶋H項目的角度,就沒有把邏輯與編程解題思路放在主體地位,也就沒有很好講解如何分析問題和解決問題。結(jié)果導(dǎo)致學(xué)生程序設(shè)計能力、上機解題能力訓(xùn)練不夠,更談不上引導(dǎo)學(xué)生進行課題研究和科研探索。于是,很多學(xué)生在學(xué)習(xí)時感到內(nèi)容枯燥難學(xué),學(xué)過之后又不能用程序設(shè)計有效解決實際問題。
根據(jù)以上經(jīng)驗教訓(xùn),經(jīng)過清華大學(xué)吳文虎教授的特別指點,本人在本學(xué)院某些班級進行程序設(shè)計課程改革試點,積累適合高職學(xué)生特點的教學(xué)素材并通過具體的試驗得出有效的教學(xué)方法。最終總結(jié)出12個字:“重興趣,重實踐,引競爭,引接口”。
重興趣——興趣是最好的老師
我國的高專學(xué)生,他們雖然高考成績比較差,但在其他方面,只要他們感興趣,學(xué)習(xí)就很有效果。這說明他們的智力和記憶力不比其他本科學(xué)生差,關(guān)鍵是學(xué)生有沒有興趣。老師要發(fā)掘他們潛在的能力,使用同學(xué)們感興趣的方法講授他們感興趣的內(nèi)容,即使是枯燥的程序設(shè)計。否則,此課程將如同他們學(xué)習(xí)第二外語。
本課程要鍛煉學(xué)生掌握解決實際問題的程序設(shè)計思想和養(yǎng)成良好的程序設(shè)計習(xí)慣,使學(xué)生具備用計算機解決實際問題的思想和眼光。要開闊思想,打好一個思維設(shè)計的基礎(chǔ)。
我首先引用校園中的“程序”:
NO1.學(xué)生到指定的教室上課
NO2.老師檢查上課筆記
NO3.帶筆記的學(xué)生,可以讓老師檢查,轉(zhuǎn)到NO5;否則,回宿舍拿筆記(選擇),轉(zhuǎn)到NO4
NO4. 回到宿舍,拿到筆記,轉(zhuǎn)到NO1
NO5.老師檢查筆記
NO6.上課,學(xué)生認真聽老師講課,并記筆記
NO7. 下課鈴響了,上午4節(jié)課(循環(huán))是否上完(條件),上完轉(zhuǎn)到NO8,否則轉(zhuǎn)到NO1執(zhí)行
NO8.下課去食堂
然后,通過具體實例而分散的介紹語法難點,避免了學(xué)生因枯燥和畏難而產(chǎn)生厭學(xué)情緒。
例如:已知side1,side2,side3為三角形的三邊,根據(jù)公式area=sqrt(fabs(p*(p- side2)*(p-side3)))求其面積。其中p=(side1+side2+side3)/2。通過此例說明計算機程序分析和編寫的過程,學(xué)習(xí)相關(guān)的語法點。要求呈現(xiàn)在學(xué)生面前的是一個程序的整體,而非一個個相對凌亂的語法點。分析的具體步驟如下:
(1)學(xué)習(xí)根據(jù)題意如何分析算法;
(2)學(xué)習(xí)并畫出流程圖;
(3)根據(jù)流程圖寫出代碼,主要代碼如下:
p=(side1+side2+side3)/2;
area=sqrt(fabs(p*(p-side2)*(p-side3));//求三角形面積
cout<<“三角形面積為:”<<“area”<<endl;//輸出面積
(4)分析講解代碼中使用的新語法點;
(5) 根據(jù)原有知識遇到困難,再拓展其他相關(guān)的新語法點。將外在的需要轉(zhuǎn)化為學(xué)生內(nèi)在的求知欲。
首先,通過實際舉例輸入2,2,9,讓學(xué)生自己找到程序的漏洞,引出選擇語句if…else…。主要算法如下:
if((side1+side2)>side3&&(side1+side3)>side2&&(side2+side3)>side1)
{p=(side1+side2+side3)/2;
area=sqrt(fabs(p*(p-side1)*((p-side2)*(p-side3));//求三角形面積
cout<<“三角形面積為:”<<“area”<<endl;}//輸出面積
else
cout<<“輸入出錯”;//輸出“輸入出錯”
然后,通過實際運行操作。當輸入數(shù)值不滿足條件,運行立即結(jié)束。這讓學(xué)生感覺不方便。于是引出循環(huán)語句while。
核心算法如下:
while(!(side1+side2>side3&&(side1+side3)>side2&&(side2+side3)>side1))
{cout<<“輸入錯誤,請重新輸入:”<<endl;//輸出“輸入錯誤,請重新輸入:”
cin>>side1>>side2>>side3;//初始化
}
在此過程中遇到什么新知識講什么,實例講完一定要通過知識進行總結(jié),通過多種解法把相關(guān)的其他語言點進行系統(tǒng)的分析。這樣知識有了連貫,既使學(xué)生產(chǎn)生興趣,新知識的引入也有理有據(jù),水到渠成,學(xué)生更容易接受。
重實驗——實踐出真知
我第一節(jié)課就講編譯環(huán)境的使用。首先要求學(xué)生上機自己調(diào)試修改錯誤的程序,漸漸根據(jù)某一段核心算法補全程序。然后通過某一流程圖和具體測試數(shù)據(jù),自己上機分析程序的具體流向,切實保證學(xué)生理解并掌握每一條語句,例如選擇和循環(huán)語句。最后,要求學(xué)生根據(jù)實際有趣的題目分析簡單的算法,編寫自己第一個程序。做到根據(jù)學(xué)生知識水平逐漸增加,實驗的難度也逐漸增加,實驗難度和學(xué)生知識水平一定要保持相對同步,使他們每次上機都有比較適合的任務(wù),每次上機都有成就感。否則,很可能挫傷他們的自信,因而討厭學(xué)習(xí)程序設(shè)計,特別是在開始階段和第一次寫程序階段。
引競爭——重獎之下必有勇夫
我每一節(jié)課都以完整的程序講授,每周給同學(xué)一兩道比較超前的有意思的題目,一個月之后我會根據(jù)能力挑選出小老師,輔導(dǎo)其他同學(xué)上機,成為小老師的同學(xué),期末成績給90分,以此作為鼓勵。不出一個月,果然有幾個同學(xué)的程序設(shè)計水平明顯高于其他同學(xué)。通過幾位帶動十幾位,十幾位帶動全班,使得學(xué)習(xí)氣氛越來越濃。以前,大多數(shù)同學(xué)有從眾心理,上課不聽講,上機玩游戲;現(xiàn)在,通過興趣和超前題目的引導(dǎo),讓班級幾個比較有悟性的同學(xué)先掌握程序設(shè)計編程和上機,并帶動其他想學(xué)但接受能力慢的同學(xué),使不想學(xué)的同學(xué)自己開始想辦法學(xué)。上機實驗大家比著學(xué),比著練。
引接口——承上啟下
根據(jù)高職高專的教學(xué)要求,老師講授的應(yīng)該是直接解決實際工作問題的具體辦法,應(yīng)以解決工作問題的模式傳授知識。所以,課程針對性越來越強,但針對性強的同時局限性也越大,課程之間缺少必要的聯(lián)系。使得同學(xué)們雖然在解決實際問題時能把所學(xué)的知識用上,但缺少與其他知識的聯(lián)系,無法解決其他比較復(fù)雜的問題。例如:學(xué)習(xí)程序設(shè)計基礎(chǔ)這門基礎(chǔ)課后,開設(shè)一些不同的程序設(shè)計專業(yè)課程,而此類課程沒有與程序設(shè)計基礎(chǔ)進行很好的過渡。使學(xué)生很難把以前的知識與新學(xué)的知識融會貫通,從而更好的掌握新的知識。所以,我們在講授程序設(shè)計基礎(chǔ)之后,根據(jù)專業(yè)需要做一些接口教學(xué),計算機相關(guān)專業(yè)可以增加OOP程序設(shè)計思想,還可以根據(jù)要求補充MFC或 .NET編程的基礎(chǔ)知識,從具體的系統(tǒng)實例出發(fā),讓學(xué)生對MFC或 .NET設(shè)計有個感性認識,為以后學(xué)習(xí)打好基礎(chǔ);電子信息相關(guān)專業(yè)可以增加C語言嵌入式系統(tǒng)編程,從“交通燈序列控制器”,“電動恐龍”實例出發(fā),通過使用業(yè)界標準的編譯器Keil C介紹嵌入式軟件編程,并通過硬件仿真器仿真。最終,使程序設(shè)計基礎(chǔ)以一種平臺的方式可以與不同專業(yè)方向的相關(guān)程序設(shè)計課程進行無縫連接,做到程序設(shè)計的連貫性。
經(jīng)過具體的教學(xué)實踐,我們?nèi)〉昧溯^好的教學(xué)效果,學(xué)生也給予了很高的評價。
總之,學(xué)好這門課既要動手,又要動腦,必須經(jīng)過理性思維和理性實踐。