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