章飛
摘要:該文主要探討了C語言程序設計課程在現(xiàn)有高等教育體系中教學內容及方法。提出了C語言程序設計課程的教學內容應該分成基礎課程和高級課程兩部分;提出了根據(jù)現(xiàn)實中的問題和需要學習的知識點為依據(jù)來編排教學案例,通過增加問題的難度逐步學習掌握更多的知識點。
關鍵詞:C語言程序設計;教學內容;教學方法
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)13-0161-03
1 C語言程序設計課程在教學中出現(xiàn)的問題
C語言是現(xiàn)今計算機領域通用的語言之一,雖然并不像上個世紀80年代那樣一枝獨秀,但仍具有非凡的魅力。C語言是Thompson、Ritchie等人開發(fā)UNIX操作系統(tǒng)的副產品,并用C語言并UNIX操作系統(tǒng)進行了重寫。在C語言普及后,國際標準化組織又多次對C語言進行了標準化,包括C89標準、C99標準和最新的C11標準。C語言對現(xiàn)代編程語言產生了巨大的影響,許多流行的現(xiàn)代編程語言都借鑒了大量C語言的特性,包括C++,JAVA,OC,Swift,C#等。
考慮到大量新編程語言的普及程度。高等院校學生還有學習C語言的必要嗎?對于這個問題回答:首先,學習C有利于更好的理解其他新式編程語言,能讓程序員更好地掌握繼承自C語言的基本特性。其次,現(xiàn)有大量的C語言代碼需要維護。最后,C語言仍然是眾多工程領域最重要的編程語言,包括嵌入式開發(fā)、智能機器人、智能家居和智能電子產品等。
現(xiàn)今國內大部分高校都會首選C語言作為計算機編程的入門語言。各專業(yè)開設的C語言課程一般都是一個學期講完,學時數(shù)大概在48~64課時之間。由于學生沒有編程基礎,很難在這么短的時間內熟悉C語言的各個知識點。在各個高校C語言程序設計課程教學中,有兩種教學方法比較主流:一種是采用多媒體演示+黑板板書、并用一定的課時量上機練習編程的教學方法,這種方法可以在一學期內講解完C語言課程大部分知識點。但是這種教學方法需要學生課后自己花時間上機練習編程。而且由于教師不在現(xiàn)場,學生出現(xiàn)的問題得不到及時解決,容易對編程產生厭惡感,導致學習失敗。另一種方法是采用教室與機房一體化的教學方法,教師采用多媒體演示+黑板板書,通過設計好的項目來引導學生學習,指導學生現(xiàn)場編程,通過多年的實踐發(fā)現(xiàn),這種教學方法的效果比上一種好,但是由于班級學生人數(shù)眾多,即使采用小班教學,也有30個左右的學生需要指導。在一學期的課時內,沒有足夠的時間指導學生學完全部重要的知識點。
本文的主要目的就是探討C語言程序設計課程中教學的內容及教學方法,提供解決以上教學方式中出現(xiàn)的問題的思路。
2 C語言程序設計課程教學內容的探討
C語言程序設計課程教學中,選擇一本好的教材非常重要。什么是好的教材?首先教材作者應該是C語言編程方面的專家、有實際項目的開發(fā)經驗、熟悉C語言的標準。其次教材中應該有好的教學案例和精選的習題,教學內容應該由淺入深、知識點全面、對C語言初學者經常犯的錯誤有提示和解答。我們不應該選擇那種字典式、看起來全面但不便于學習的教材。國內的有些教材喜歡糾結于語法上的細節(jié),故意把語句寫得很復雜以考查學生是否掌握了相關的語法知識,這樣做甚至會使習題的答案陷入了未定義行為的泥潭,對學生編程能力的提高是有害的。
通過對前面所述的兩種主流教學方法的分析發(fā)現(xiàn),由于C語言程序設計課程學時的限制,不可能既全面的講解各個知識點,又讓學生較快地掌握C語言的編程技術。因此有必要將C語言程序設計課程分成基礎課程和高級課程來教學。
基礎課程包括以下內容:
1)C語言概述和C語言編譯器的使用;
2)C語言的基本概念、格式化輸入/輸出和表達式;
3)選擇語句、循環(huán)語句和基本數(shù)據(jù)類型;
4)數(shù)組、函數(shù)和指針;
5)結構、聯(lián)合與枚舉;
6)底層程序設計;
7)預處理器和多文件程序的編寫。
高級課程包括以下內容:
1)指針和數(shù)組;
2指針的高級應用:動態(tài)存儲分配、鏈表、指向指針的指針和指向函數(shù)的指針;
3)標準庫、輸入/輸出、標準庫對數(shù)值和字符數(shù)據(jù)的支持;
4)錯誤處理和國際化特性;
5)C99標準和C11標準。
在課程教學中,教師最好采用項目化教學的方式,對基本知識點的熟練應用進行重點訓練,使學生能夠用所學的編程知識和技巧解決實際的項目問題。高級課程是否需要開設,關鍵看學生的專業(yè)和需求。對于電氣電子信息類專業(yè)的學生,應該開設C語言的高級課程,使學生有能力使用C語言進行單片機和嵌入式技術的開發(fā)。
3 C語言程序設計課程教學方法的探討
C語言程序設計作為一門應用性很強的課程,檢驗學生學習的效果如何就是看學生編程的能力。歐美高校普遍采用的教學方法是在大班教學中采用多媒體演示+黑板板書的方式教學,然后在小班討論課程中以助教輔導的方式練習編程。國內高校很少采用教授大班講解課程,然后分班由助教輔導的教學模式,這就決定了國內的教學方式與歐美高校有所不同。由于需要教師一個人完成所有的教學任務,一個較好的教學模式就是采用項目化教學方式,將課程分為基礎課程和提高課程進行教學。對C語言編程要求較高的專業(yè),學習基礎課程和高級課程兩個部分,分兩學期完成。對于一般的工科專業(yè),可以只學習基礎課程,重點了解編程的思想和編程的現(xiàn)代方法。
對于C語言程序設計基礎課程,可以采用項目化教學的方式,將主要知識點分解在一系列由實際案例建立起來的項目里來學習。教學的方式是首先引入實際案例,編寫簡單的程序,然后增加新的知識點,通過多個階段逐步建立完整的程序。下面通過對C語言基本概念和格式化輸入輸出的課程部分來說明教學案例的實施過程。
【案例】 我們在乘坐飛機航班時經常要托運行李,航空公司不喜歡運輸又大又輕的箱子,因為箱子要占據(jù)寶貴的運輸空間。事實上,對于這類箱子,航空公司常常要求按照箱子的體積而不是重量來支付費用。通常是把箱子的體積除以6000得到體積重量。如果體積重量大于實際重量,按體積重量收費。假設航空公司雇傭你來編寫一個計算箱子體積重量的程序。其中箱子的長度,寬度,高度分別為120cm,100cm,80cm。很顯然計算箱子的體積重量的公式為:體積重量 = 體積/6000;這里體積和體積重量都是整型變量。你如何用C語言程序解決這個問題?
階段1 引入案例后,告知學生解決上述編程問題,需要用到如下知識點:
1)變量的類型:int型變量;
2)變量的聲明、初始化和賦值;
3)用格式化輸出函數(shù)printf()顯示變量和表達式的值。
先詳細講解以上各知識點,然后說明用C語言編程解決此問題的思路,并給出程序:
階段2 向學生提出如下問題:航空公司運輸?shù)母鱾€箱子大小不一致,因此公司希望你編寫的軟件能夠從鍵盤輸入箱子的長寬高,由此引出知識點:格式化輸出函數(shù)scanf(),并用它改寫程序:
階段3 向學生提問:托運的箱子長度、體積、計算出來的體積重量正好都是整數(shù)嗎?如果不是,該怎么解決?并且告訴學生在C語言中,兩個整數(shù)相除,結果會被截短,小數(shù)點后的所有數(shù)字會丟失,計算的體積重量結果不準確。由此引出C語言中表示小數(shù)的方法:浮點類型數(shù)據(jù)。并講解數(shù)據(jù)類型改為單精度浮點型后,程序應該怎樣改寫。
階段4 講解格式化輸入函數(shù)和格式化輸出函數(shù)的詳細用法,特別是其轉化說明(%m.pX)的具體使用方法及常見的錯誤。在這部分課程的最后,布置給學生的習題是讓學生編程求出給定直徑的球體的體積,用來測試學生的學習效果。
從以上案例的講解可以看出,通過從簡單的情況來逐步增加難度和知識點,學生的編程能力和對知識點的掌握都會得到逐步的增強。在基礎課程部分,我們設計了大概8個左右的項目涵蓋主要的知識點,在教學實踐中使用取得了良好的效果。
對于C語言程序設計高級課程來說,可以設計多種教學方式來實現(xiàn)教學目標,對于電氣電子信息類專業(yè)的學生來說,可以將高級課程的內容附加在單片機或嵌入式技術課程中來教學。對于計算機類專業(yè)的學生來說,可以采用討論班的形式來教學,也可以讓學生參與實際的工程項目來實現(xiàn)教學目標。
4 總結
本文首先討論了C語言程序設計課程教學中出現(xiàn)的一些問題;其次設想將C語言程序設計課程的內容分成基礎課程和高級課程兩個部分來教學;然后講解作者在教學中采用的項目教學法的方式,并列舉一個完整的教學案例來說明具體的教學過程。運用此教學方法的核心是開發(fā)出良好的教學案例,教學案例的開發(fā)不是一件輕松的工作,如果案例程序過于簡潔和做作,學生將無法體會如何將C語言的特性應用于現(xiàn)實世界;另一方面,如果程序過于真實,那么重要的知識點將會很容易被淹沒在過多的細節(jié)中,最好的方案就是采用折中方案。教學案例的開發(fā)最好先通過小而簡單的示例使得概念清晰,然后逐步建立完整的程序。教學中最好不要采用過長的程序,教師在課程中沒有時間講解,學生也沒有足夠的耐心去閱讀,可以在課程的最后,讓學生編寫一個大型的程序以檢驗對整個課程知識點的掌握情況。希望通過此文與從事C語言程序設計課程教學的各位專家進行探討與交流,發(fā)現(xiàn)更多的教學方法,取得更好的教學效果。
參考文獻:
[1] K.N.King. C語言程序設計現(xiàn)代方法[M]. 2版.人民郵電出版社,2010.
[2] 譚浩強. C語言程序設計[M]. 4版.清華大學出版社, 2012.
[3] 吳國鳳. C語言程序設計[M].4版.合肥工業(yè)大學出版社,2012.