黃寶貞 張 琦 馮 瑤
文章編號(hào):1672-5913(2009)02-0130-02
摘要:本文從C語(yǔ)言程序設(shè)計(jì)這門(mén)課程的特點(diǎn)出發(fā),結(jié)合應(yīng)用型本科院校的特點(diǎn)以及筆者的教學(xué)經(jīng)驗(yàn),對(duì)如何提高C程序設(shè)計(jì)課程教學(xué)效果給出幾點(diǎn)體會(huì)。
關(guān)鍵詞:應(yīng)用型本科院校;C語(yǔ)言;程序設(shè)計(jì);教學(xué)經(jīng)驗(yàn);教學(xué)效果
中圖分類(lèi)號(hào):G642
文獻(xiàn)標(biāo)識(shí)碼:B
C語(yǔ)言程序設(shè)計(jì)是計(jì)算機(jī)、通信、信計(jì)等相關(guān)專(zhuān)業(yè)的專(zhuān)業(yè)基礎(chǔ)課程,同時(shí)也是數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、嵌入式系統(tǒng)等計(jì)算機(jī)專(zhuān)業(yè)課程的前導(dǎo)課程。通過(guò)這門(mén)課程的學(xué)習(xí),可使學(xué)生獲得程序設(shè)計(jì)語(yǔ)言的知識(shí),培養(yǎng)一定的軟件開(kāi)發(fā)能力,還可鍛煉學(xué)生的邏輯思維能力,對(duì)學(xué)生綜合素質(zhì)的提高也具有一定的促進(jìn)作用。但是由于C語(yǔ)言牽涉到的概念比較復(fù)雜,規(guī)則繁多,使用靈活,容易出錯(cuò),不少初學(xué)者感到學(xué)習(xí)困難。如何提高此課程的教學(xué)效果呢?筆者經(jīng)過(guò)不懈的探索,結(jié)合筆者的教學(xué)經(jīng)驗(yàn),總結(jié)了如下體會(huì)。
1 注意方式方法,培養(yǎng)學(xué)生對(duì)程序設(shè)計(jì)語(yǔ)言的興趣
對(duì)于剛開(kāi)始接觸C語(yǔ)言的同學(xué),一定要把C語(yǔ)言的用途講清楚。例如可用C語(yǔ)言編寫(xiě)各種系統(tǒng)軟件(如Windows)和應(yīng)用軟件;還可以編寫(xiě)一些小游戲;C語(yǔ)言是數(shù)據(jù)結(jié)構(gòu)等專(zhuān)業(yè)課的基礎(chǔ)等;使學(xué)生明白學(xué)習(xí)C語(yǔ)言的目的和目標(biāo)。
C語(yǔ)言的教材很多都是一開(kāi)始就介紹一些程序代碼和函數(shù)使用規(guī)則,而學(xué)生對(duì)語(yǔ)法、函數(shù)一無(wú)所知。如果按照書(shū)本順序進(jìn)行講解,學(xué)生一開(kāi)始理解起來(lái)很吃力,就失去了對(duì)C語(yǔ)言的學(xué)習(xí)興趣。為了使初學(xué)者能盡快地掌握,培養(yǎng)學(xué)生的學(xué)習(xí)興趣就成為關(guān)鍵。在課程講授過(guò)程中,不先講授比較煩人的定義和規(guī)則,而是從具體問(wèn)題入手,努力把枯燥無(wú)味的“語(yǔ)言”講得生動(dòng)、活潑。因此,筆者給學(xué)生找一些比較有意思的問(wèn)題,如“水仙花數(shù)”、“兔子問(wèn)題”、“哥德巴赫猜想”等,用算法語(yǔ)言來(lái)求解,培養(yǎng)學(xué)生的學(xué)習(xí)興趣,使學(xué)生體會(huì)程序設(shè)計(jì)的用途和一種全新的解決問(wèn)題的方法。
在上機(jī)課時(shí),可以給出幾個(gè)簡(jiǎn)單并有輸出結(jié)果的程序源代碼,讓學(xué)生編輯并上機(jī)調(diào)試。當(dāng)他們自己從鍵盤(pán)輸入的程序輸出結(jié)果的時(shí)候,學(xué)生對(duì)程序設(shè)計(jì)的興趣自然就產(chǎn)生了。在同學(xué)們自己輸入程序的過(guò)程中,肯定會(huì)出現(xiàn)這樣或那樣的錯(cuò)誤,比如沒(méi)有在行的末尾輸入分號(hào);函數(shù)名字輸錯(cuò)了;括號(hào)少輸入半邊等錯(cuò)誤。針對(duì)這些錯(cuò)誤,再去講授語(yǔ)法,告訴學(xué)生在C語(yǔ)言中是有規(guī)定和規(guī)則去約束的。錯(cuò)誤的地方在C語(yǔ)言中是如何規(guī)定的,應(yīng)該如何去做。這樣子,學(xué)生們接受起來(lái)比較容易,記憶也比較深刻。
其次,還要借助于多媒體教學(xué)。多媒體輔助教學(xué)能夠化靜為動(dòng),寓教于樂(lè),培養(yǎng)和激發(fā)學(xué)生的學(xué)習(xí)興趣,能將抽象的問(wèn)題形象化,便于學(xué)生對(duì)知識(shí)點(diǎn)的理解和運(yùn)用,還能節(jié)約傳統(tǒng)的板書(shū)時(shí)間,使課堂講解時(shí)間相對(duì)增加,大課堂信息量。
2完善課堂教學(xué)
針對(duì)應(yīng)用型本科院校培養(yǎng)應(yīng)用型人才的特點(diǎn),必須調(diào)整新的教學(xué)思路。初步設(shè)計(jì)分三步走,首先要學(xué)好C語(yǔ)言的語(yǔ)法、規(guī)則這些基礎(chǔ)知識(shí);其次,培養(yǎng)學(xué)生具有好的編程思想和方法;最后,通過(guò)安排課程設(shè)計(jì),學(xué)生可以獨(dú)立編寫(xiě)一個(gè)軟件。
2.1學(xué)好基礎(chǔ)知識(shí)
講授C語(yǔ)言的基礎(chǔ)知識(shí),最好是結(jié)合一些簡(jiǎn)單小程序來(lái)逐一介紹C語(yǔ)言成分及語(yǔ)法使用規(guī)則。因?yàn)橐恍┥驳闹R(shí)點(diǎn)會(huì)使學(xué)生感到厭煩,一旦失去學(xué)習(xí)的興趣,就沒(méi)有學(xué)習(xí)的動(dòng)力了,也就學(xué)習(xí)不好了。在教學(xué)過(guò)程中,針對(duì)C語(yǔ)言的特點(diǎn),要舉一反三,要有計(jì)算機(jī)的最終運(yùn)行結(jié)果。也就是說(shuō)在上課的過(guò)程中,不要單純講授理論,要將程序引入到課堂上。比如講++i 和i++的區(qū)別:++i是先執(zhí)行i=i+1后,再使用i的值;而i++ 是先使用i 的值后,再執(zhí)行i=i+1。如:i=3,printf("%d",++i)輸出值為4;若用printf("%d”,i++),則輸出值為3。這個(gè)可以編寫(xiě)一個(gè)程序,將運(yùn)行結(jié)果呈現(xiàn)給學(xué)生。在講解了這個(gè)例子后,再在這個(gè)基礎(chǔ)上適當(dāng)?shù)淖饕幌滦薷?,先讓同學(xué)們回答應(yīng)該是一個(gè)什么樣的結(jié)果,最后運(yùn)行程序把正確的結(jié)果呈現(xiàn)給大家。
2.2學(xué)好算法
語(yǔ)言只是程序設(shè)計(jì)的形式,而算法才是靈魂。沒(méi)有正確的算法,計(jì)算機(jī)解決不了任何問(wèn)題,因此,要將分析算法作為教學(xué)重點(diǎn)。要引導(dǎo)學(xué)生實(shí)現(xiàn)從編寫(xiě)簡(jiǎn)單的小程序到靈活運(yùn)用C語(yǔ)言編程解決具有一定難度的實(shí)際問(wèn)題的轉(zhuǎn)變。在教學(xué)過(guò)程中,結(jié)合實(shí)例由淺入深地介紹了一些典型的算法,如迭代、遞歸、貪心、回溯等方法,逐步提高學(xué)生良好的編程能力,培養(yǎng)學(xué)生良好的編程思想和編程風(fēng)格。有一些學(xué)生對(duì)C語(yǔ)言的語(yǔ)法和句式掌握得很好,但一面對(duì)具體問(wèn)題就一片空白,不知如何運(yùn)用所學(xué)知識(shí)來(lái)解決,這就要求教師在講程序設(shè)計(jì)前要先介紹如何分析問(wèn)題、設(shè)計(jì)算法并將算法正確表示出來(lái)。
例如利用函數(shù)調(diào)用來(lái)解決問(wèn)題時(shí),很多學(xué)生不知怎樣來(lái)設(shè)計(jì)形式參數(shù)。教師在講解這部分的例題或習(xí)題時(shí)應(yīng)先引導(dǎo)學(xué)生回顧形式參數(shù)的作用——用于接收被調(diào)函數(shù)需要主調(diào)函數(shù)傳給它的數(shù)據(jù)。然后分析被調(diào)函數(shù)需要主調(diào)函數(shù)傳給它什么類(lèi)型的數(shù)據(jù)有幾個(gè)。有的可通過(guò)全局變量傳遞,有的就需要通過(guò)實(shí)際參數(shù)傳給形式參數(shù),這樣就設(shè)計(jì)出了形式參數(shù)的數(shù)目和類(lèi)型。
在講解解決某一個(gè)問(wèn)題的算法時(shí),可將多種算法聯(lián)系起來(lái)分析,通過(guò)對(duì)一個(gè)問(wèn)題提出多種解決方案,來(lái)開(kāi)闊學(xué)生的思維,培養(yǎng)他們的編程技巧和方法。
兔子問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?
首先,這個(gè)問(wèn)題可以使用循環(huán)結(jié)構(gòu)來(lái)完成:
#include
Void main( )
{
long f1,f2;
int i;
f1=f2=1;
for(i=1;i<=10;i++)
{
printf("%12ld %12ld",f1,f2);
if(i%2==0) printf(" ");/*控制輸出,每行四個(gè)*/
f1=f1+f2; /*前兩個(gè)月加起來(lái)賦值給第三個(gè)月*/
f2=f1+f2; /*前兩個(gè)月加起來(lái)賦值給第三個(gè)月*/
}
}
當(dāng)然,也可以使用遞歸算法來(lái)實(shí)現(xiàn):
#include
long fun(int n)
{
if (n==1) return 1;
if (n==2) return 1;
if (n>2)return fun(n-1)+fun(n-2);
}
void main( )
{ int i;
for(i=0;i<9;i++)
{
printf("%12ld",fun(i));
}
}
2.3課程設(shè)計(jì)
課程結(jié)束后,會(huì)安排C語(yǔ)言的課程設(shè)計(jì)。筆者會(huì)精心設(shè)計(jì)一些課題,題目均具有較強(qiáng)的應(yīng)用背景,如成績(jī)管理系統(tǒng)、商品管理系統(tǒng)、工資管理系統(tǒng)等,使學(xué)生能迅速適應(yīng)從開(kāi)發(fā)小程序到開(kāi)發(fā)大程序的轉(zhuǎn)變。要求學(xué)生經(jīng)過(guò)需求分析、軟件設(shè)計(jì)、編碼、測(cè)試等軟件開(kāi)發(fā)的各階段,最后提交源代碼及有關(guān)文檔。實(shí)踐證明,在軟件開(kāi)發(fā)的過(guò)程中,C語(yǔ)言的基礎(chǔ)知識(shí)更扎實(shí)了,同時(shí)提高學(xué)生的軟件開(kāi)發(fā)水平。
3重視語(yǔ)言實(shí)踐環(huán)節(jié),注重上機(jī)實(shí)驗(yàn)指導(dǎo)
對(duì)一個(gè)年級(jí)的學(xué)生問(wèn)卷調(diào)查顯示,在學(xué)程序設(shè)計(jì)和算法分析時(shí),學(xué)生的普遍反映就是看得清楚,聽(tīng)得明白,遇到實(shí)際問(wèn)題就無(wú)從下手,顯得很被動(dòng)。究其原因,主要是沒(méi)對(duì)實(shí)驗(yàn)引起足夠的重視,導(dǎo)致動(dòng)手能力差。在國(guó)外計(jì)算機(jī)課程中,實(shí)驗(yàn)占學(xué)生成績(jī)相當(dāng)大的比重,而在國(guó)內(nèi)除了極少數(shù)重點(diǎn)大學(xué)外,這方面做得非常差。
實(shí)驗(yàn)是C語(yǔ)言課堂教學(xué)的必要補(bǔ)充,課堂上難于理解的以及模糊的概念可以通過(guò)上機(jī)實(shí)驗(yàn)解決,因此應(yīng)該有針對(duì)性地布置一些實(shí)驗(yàn)練習(xí)。C語(yǔ)言程序設(shè)計(jì)上課與上機(jī)的學(xué)時(shí)安排比例應(yīng)該為1:1。在教學(xué)中,我們非常重視實(shí)驗(yàn)這一環(huán)節(jié),及時(shí)解答在實(shí)驗(yàn)中碰到的問(wèn)題。
4結(jié)束語(yǔ)
針對(duì)當(dāng)前應(yīng)用型本科院校的教學(xué)特點(diǎn),并從教學(xué)實(shí)踐出發(fā),提出了一個(gè)新的教學(xué)思路供大家探討,使得理論與實(shí)踐相結(jié)合,再配以課程設(shè)計(jì),實(shí)踐證明,教學(xué)效果顯著。
參考文獻(xiàn)
[1] 彭秀芬,吳璞. 淺論C語(yǔ)言教學(xué)方法[J]. 計(jì)算機(jī)教育.
[2] 成紅勝. 應(yīng)用型本科院校C語(yǔ)言教學(xué)初探[J]. 林區(qū)教學(xué),2007,(2).
[3] 劉達(dá)明. 如何提高計(jì)算機(jī)專(zhuān)業(yè)的C語(yǔ)言教學(xué)質(zhì)量[J]. 計(jì)算機(jī)教育,2005,(8).