王金社
【摘 要】《C語言程序設計》一直是計算機專業及相關專業的專業的基礎課。C語言是一門高級程序設計語言。為解決C 語言在教學中的重點和難點,作者結合多年的教學經驗, 從三個方面對教學方法的改進進行了討論, 以期提高教學效果。
【關鍵詞】C 語言 程序設計 教學方法
《C語言程序設計》是計算機各類專業的基礎課程。全國計算機等級考試、全國計算機應用技術證書考試(NIT)和各學校組織的大學生計算機統一考試等都將C 語言列入了考試范圍。C語言是一門高級程序設計語言,學會運用C 語言編寫程序解決實際問題,有利于提高學生的思維能力,同時對學習其他語言課程具有很大的幫助。由于醫學院校學生基礎較薄弱, 在學習中普遍認為C 語言語法多, 枯燥難懂, 全部課程完成后, 感覺知識零亂, 只能看懂程序, 而不會編寫程序, 不會應用C 語言解決實際問題。
在教學過程中教師應將要講解問題盡量簡單化, 使學生先了解語句的用途, 在此基礎上再去了解其相應的規則。C語言初學者首先遇到的問題是毫無頭緒, 不知從何處下手。他們即使在課堂上認真的聆聽了老師的講述或者是認真的閱讀了書上的例子, 但在上機輸入這些程序后, 會出現各種各樣的問題。以往大多數同學在學完C 語言后, 普遍反映看得清程序的設計代碼意義, 但遇到實際問題就無從下手, 不知所措。這種情形將降低他們學習好C 語言的信心、學習興趣以及學習主動性。事實上出現這種問題對于C 語言初學者來說是很正常的。教師要做的是找到一種好的方法, 使學生在短暫的課堂學習時間內對C 語言知識進行積累, 使學生少出現這種問題。要做到這一點, 就必須要求學生, 從小程序入手, 一步步的實踐和學習。
一、注意方式方法, 盡量提高學生的學習興趣
現在常用于實驗教學的是Microsoft Visual C++6.0。該系統能夠指出程序中錯誤的位置和類型, 這樣學生上機調試程序時就能發現并糾正語句錯誤,解決了對TurboC不是很熟悉的同學操作不方便的問題?!禖語言程序設計》的特點是實踐性強,對于醫學院校學生而言, 普遍存在學生抱怨程序設計太難、太深奧、不好學、畏懼閱讀程序、編寫程序無從下手等問題。這是因為每一個C 語言程序必須經歷算法設計、書寫程序、調試運行的三個過程與其它有直觀操作和概念的課程相比較, 顯得比較抽象、復雜。因此, 針對學生的畏難情緒, 調動學生學習的積極性, 要學會用學生生活中的小實例來結合C 語言教學。比如,銀行的存取款系統就是用C語言來實現的;在學校就餐時使用的磁卡收費系統同樣也是用C語言編寫的;學生玩的網絡游戲也是用C語言來實現的。學好C 語言可以修改、編寫自己喜歡的游戲,于是他們明白了C 語言離我們很近,而且很有用。這樣,既可以培養學生學習的興趣,充分調動他們學習的主動性,也可以為C 語言一些章節的實例講解作好準備。
二、啟發式教學, 激起學生的編程熱情
誰都愛聽故事, 但并非誰都愛學編程, 那些抽象的概念和復雜的算法常把學生搞得痛苦不堪。因此, 把愛聽的故事和不愛學的程序結合起來就是教學的一大特色。學生聽到的是一段故事、一個比喻、一則笑話, 記下的是故事所含的概念和算法。例如,講解交換兩個變量的值的時,為了啟發學生理解該算法,我引入兒時幫媽媽打醬油的故事。假如媽媽讓我們把油瓶子和醋瓶子調換過來, 該怎么做呢? 先拿出個空瓶子, 把醬油倒在空瓶子里, 然后把醋倒在已經空了的醬油瓶子里,最后,將醬油倒入醋瓶子。設有兩個瓶子a和b,分別盛放醬油和醋,要求將它們互換。因此,引入中間變量c, 代表空瓶子。
#include
main()
{int a,b,c;
scanf(“%d %d”,&a,&b);
printf(“a=%d,b=%d\n”,a,b);
c=a; a=b; c=b;
printf(“a=%d,b=%d\n”,a,b);}
程序輸入:22 33
程序輸出結果為:
a=22,b=33
a=33,b=22
程序學會了, 大家對學習編程也產生濃厚的興趣, 取得很好的教學效果。同時,乘熱打鐵,要求學生獨立完成類似的程序,學思結合,學思并重。例如,寫一個程序判斷某年是不是閏年。什么是閏年? 中文說每四年一閏,但每一百年不閏;并且還要每四百年一閏。這樣的表達式要寫成程序有些費勁, 如果用英文表達,閏年的標準是滿足兩種情況之一:如果( if) 它能被4 整除, 并且(&&) 不能被100 整除;或者( ||) 能被400 整除。什么是整除? 就是余數(mod==0) 為零。我們知道其英文表達方式, 很容易寫出下列程序:
#include
main()
{int year;
scanf(“%d”,&year);
if(year%4==0&&year%100! =0||year%400==0)
printf(“%d is a leap year”,year);
else
printf(“%d is not a leap year”,year);}
C 語言課程中的知識點大都是比較枯燥的, 所以老師在授課時,應該把枯燥無味的知識點和我們日常生活中的例子聯系起來, 這樣學生理解起來容易,老師講授起來也輕松。比如,老師在講授指針的概念的時候, 這一章節是C 語言中的難點, 如果老師就按課本上知識點講,很多學生都被講蒙了。這個時候可以引入我們日常生活中學生宿舍的例子,假如我們要找張三,來到101 房間,里面存放著一張紙條“104 房間”,這樣我們可以到104 房間找到張三,101 房間存放的是張三所在房間的號碼(地址),可以間接通過101 房間找到張三?;蛘?,如果我們知道張三104房間的,可以直接到104 房間找到人。這樣,就可以比較形象的給同學講清楚指針的概念,讓同學理解起來更容易。另外,課堂上老師授課時,還應注意循序漸進的授課思路,不能認為講的程序越難學生學起來越有興趣,如果上來就講太難的程序,很多同學直接就不想接著往下聽了,很容易打擊同學的學習積極性。在C 語言教學中, 雙重循環和函數調用是難點, 所以這兩個知識點老師應該精講、細講。在講解雙重循環時, 很多書上會有菱形星號的輸出圖形的題目,這個時候,老師可以先給學生講正方形的星號圖形如何輸出,再看直角三角形星號圖形輸出,再看等腰三角形星號圖形輸出,這樣菱形星號圖形輸出就可以讓同學課下自己去實現了。
在函數調用時,要給學生講清楚形參和實參的區別,后面講了指針后,回顧前面講的傳值調用,根據指針存儲地址的特點,再講授函數傳地址調用。
三、鼓勵學生經常上機,提高學生動手實踐能力
學習計算機語言必須將理論與實踐相結合, 學好程序的關鍵是動手與動腦編寫程序,親自上機調試程序是提高編程能力的捷徑。針對初學者上機編程常會出現錯誤而不會調試的特點,教師在講解程序時,可以運用多媒體教室或計算機網絡教室向學生演示程序從編輯、編譯、鏈接到運行的全過程, 對常見的錯誤進行調試改錯,讓學生對程序設計有一個直觀的了解,同時學會一些程序改錯與調試的基本方法。在教學過程中,選擇例題應注意由易到難,逐步深入,結合實際,融會貫通。課堂教學是傳授知識的重要途徑,因而,動手能力的培養更不容忽視。
對于計算機課程來說,動手能力的培養就是上機實踐。在C 語言的教學過程中,上機實踐這一環節是特別重要的。首先,它是消化課堂教學內容的最好途徑,能將所學的知識有效織起來;其次,能提高學生分析問題和解決問題的能力,培養程序和調試程序的能力。因此,C 語言的上機實踐是必不可少的。對于C 語言上機實驗課,可采用兩種方法, 上機調試和現場編程。一是老師在講授完理論課后就給同學布置上機題目,讓學生在課下自己編寫, 上課時把自己課下編寫的程序調試運行。二是如果大多數學生都能順利運行,老師現場布置和本次課密切相關的程序,讓學生現場自己編,這樣可以提高一些程度好的同學的學習積極性,同時程度差的同學調試成功老師提前布置好的作業,也有成就感。另外,在上機時要督促學生在上課時間內完成任務。當學生碰到問題時,不立即解答,而是進行提示。先讓其思考、分析后再回答學生。前期實驗時,解決學生的基本語法問題,后期則只解決算法問題,不解決語法問題。這樣,可以讓學生自己找簡單語法問題,自己解決不了的向其他學生求教。這樣,可以給學生一定的壓力,避免有的學生不自己思考,有問題就問,到了學期結束,連最簡單的語法錯誤自己都解決不了(并不是不懂,而是學習態度問題)。這樣,也可以讓一部分同學在幫同學解決問題的同時,自己又加深對知識點的理解。實驗結束后, 要求寫好實驗報告, 寫好小結。自我分析上機出現的問題和解決的方法, 通過本次上機學到了哪些知識, 又有哪些不足。這樣,即可以鍛煉學生的表達能力,又可以讓學生課下對上課所學知識有一個清晰的回顧,有一個思考的過程。
以上是筆者結合多年教學的一點經驗體會,實際上在教學過程中應注意的問題還有很多。一個《C程序設計》教師要想成功,其關鍵就在于對教學內容(教什么)和教學方法(如何教)進行合理的組合。但是,現實中由于教學目的、教學內容及學生情況等因素的千差萬別,沒有哪一種教學模式或方法是普遍適用的,惟一的原則就是根據實際情況采用合適的教學模式和教學方法。
參考文獻:
[1]譚浩強.C語言程序設計(第二版)[M].北京:清華大學出版社,1999.
[2]譚浩強.C語言程序設計上機輔導[M].北京:清華大學出版社,1999.