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