摘要:C語言時高校理工科的一門重要基礎課,本文是在多年的C語言教學實踐中,總結得出的一些C語言的理論和實驗的教學經驗,通過細致的實例講解,提出一些行之有效的C語言教學方法。在理論教學上,提出對教材全局認識來關聯各章節的知識,在關聯中強化理解語言中的相關專業術語;掌握學習語言的思路,同時對教材內容要有所輕重取舍,避免講解過細的語法,從簡到難;并激發同學們學有所思,多提為什么。對實驗強調背思改的練習過程,背程序是學習的基礎,思是對編寫程序的理解,最后通過改程序來強化學生們對計算機執行程序過程的理解和靈活應用能力,最終能自如的編寫程序。
關鍵詞:C語言 程序設計 教學
中圖分類號:TP311.1文獻標識碼:A文章編號:1674-098X(2012)08(c)-0163-02
目前,隨著計算機的廣泛應用,人們無論是生活還是學習,對計算機的使用和利用日益增多,新世紀對大學生不僅僅要求掌握計算機操作,如學習Windows和Office等工具軟件的使用,還要具備一定的實際應用編程能力。C語言是理工科專業的一門重要的基礎課程,學好C語言,為今后借助計算機解決理工科的各個專業上的問題打下堅實的基礎。C語言一般開設在大學一年級或大學二年級的上學期,由此可見其重要性和基礎性。
在學習過程中,一開始,同學們非常重視C語言的學習,表現得積極主動,認真聽講,但是,幾堂課后,這樣的狀態難以維持,普遍認為學習難度過大,枯燥,特別是上機實驗,嚴格1的語法讓同學們幾行代碼換來十多行英文錯誤信息提示,本來英語就不是強項,再加上專業性詞匯摻雜其中,能看懂錯誤提示的同學寥寥無幾,更查不出錯誤,失敗感油然而生,學習興趣2和學習信心倍受挫折,很多同學開始放棄學習C語言。除了這個,C語言難學還有很多原因,首先,C語言本身不是一門簡單的課程;其次,學生們自身的基礎知識不牢固,數學和英語都涉及到;第三,學生學習能力不強;最后教師教授的方式方法也會影響到C語言的學習。C語言對初學者來說,是一個全新的天地,就如同學習一門新外語,它有自己的專業詞匯,語法和語序。就C語言這門課程的名字,很多同學都無法理解,因為它和生活中的語言相差極大,但也被稱為語言。這些都使同學們學習起來困難重重,如何幫助同學們克服困難學好C語言,需要我們作為教師的認真思考教學方法。
1 C語言理論教學的方法探討
傳統的教學方法已經討論過很多,主要是激發同學們的興趣,加強實踐等等,這些對于任何一門計算機課程都是至關重要的。但是不同的計算機課程有自己的特點,本文想從自身多年教學C語言的經驗提出一些更具體和更實用的方法,以期共享和共勉。
1.1 初學C語言時,要對教材內容有一個全局的認識
每次面對初學者,我首先要求看目錄,了解本教材的教學內容大概有哪些章節,然后講解章節之間的聯系。我常在教學時提出一個問題,如果要寫一本關于人的書,請問該書該如何分章節寫?同學們馬上就會回答,人是由頭和四肢,以及各個部件組合起來的,等等。同樣,這本書是寫C語言,那么C語言又該如何寫,章節有哪些,章與章之間有什么聯系。我們的C語言是用來設計程序的,那么程序是什么,同學們可能都知道程序是一系列指令的集合,但再問指令是什么呢,指令就是指揮機器工作的指示和命令,是計算機能識別和理解的最小操作,通常由操作符和操作數構成。而C語言就是要編寫一系列的指令,而每條指令都由操作符和操作數構成,那么操作數有哪些,這樣就可以聯系到為什么教材一開始有一章專門是數據類型,這一章的內容,不僅是C語言,其它所有語言都有這章。操作符又有哪些呢,這樣教材又會專門講到算術運算符、關系運算符、邏輯運算符等,這樣一條指令的兩個組成部分分別講清了它們的構成。一條指令講清楚了,那么一系列的指令又要涉及什么呢,一系列的指令涉及到的是執行順序,也就是流程控制,是順序執行還是選擇或重復執行。這樣一系列的指令加上流程控制就形成了我們的程序。程序也就是這樣被設計出來了。例如,以譚浩強的教材為例,第二章講數據類型,第三章講運算符與表達式,第四五六章開始講三大結構,也就是流程控制,這樣,從語言是設計程序以及程序的定義得出了前六章之間的聯系。至于后面的函數,是用模塊化程序的思想構造更復雜的程序。指針是在前幾章的基礎上更靈活的設計程序。
1.2 對于理論教學,要克服抽象的講解,盡量用通俗的語言和實例進行教學,主動引導同學們提出為什么,激發同學們學有所思
C語言是一門語言,同學們首先對語言的概念要有拓展,不能局限于生活中的語言概念。語言是用來交流的,我們生活中的語言是人與人之間交流使用的,現在所遇到的計算機語言是人與計算機交流使用的工具,因此它也被稱作語言。在教學中,C語言有很多抽象的概念。例如數據類型不同的變量,同學們剛接觸變量,理解有些困難,可以形象的打比方,不同的變量就像不同的盒子,大小尺寸不同,裝載能力就不一樣,所以變量一定要先定義類型,后使用等。其次在講解知識時,多提些為什么,比如為什么要學數據類型,運算符,表達式等等,這些我們開始就強調過,指令就是由操作數和操作符構成的,操作數就是各種各樣類型的數據,操作符就是對數據進行算術、關系和邏輯的算符,而算符和數據合在一起就形成各式各樣的表達式,這樣,知識就關聯起來了。同學們也明白為什么學。
1.3 對于教學內容,要把握好輕重和取舍,避免講解過細的語法
初學者不能要求什么知識都全面的學,這樣會讓學生們不得不知難而退。我們在教學中應該講解常用和基本的知識,學一點會一點。例如數據類型,同學們常遇到的就是整型、字符型,雖然也會遇到浮點型和雙精度型等,但一開始應重點強調整型和字符型。對于函數也是,如scanf和printf函數,它們有很多參數,功能強大而全面,但在教學時,一開始只要求同學們掌握如何輸入輸出整型和字符型,夠用即可。也就是在認識C語言的語法時,先認識C語言的典型個例,再通過個例認識抽象的一類,再從對類的認識過渡到全面認識這一類的所有個例。一開始只能反復強調經典個例,從個別案例慢慢的認識和接受C語言的語法,語義和語序。
2 C語言實驗教學探討
實驗對學習語言是必不可少的一部分,C語言是一門驗證型實驗,但如果只是照搬照抄代碼,運行完事,是不可能學會編程的。在實驗方面,體會比較深刻的是以下兩方面:
2.1 強調背代碼
學習C語言的同學大多數都是理工科的,按照以往的學習方法,他們是看不上死記硬背,認為這是文科的學習方法,但對C的學習,背時必須的。就像學英語背單詞一樣,在背的基礎上,才可能把代碼從書本搬到大腦里,到了大腦才可能被同學們掌握并學著靈活使用。
2.2 強調實踐的技巧,以模仿和改程序為主
C語言的實驗很多都是驗證型的,同學們一般照書輸入,然后運行,這樣上實驗,同學們不可能學會編程。對于初學C語言的同學,常常誤以為把程序輸入計算機,調試和編譯通過,那么實驗的目的就達到了,畢竟初學者能把書上的程序正確的輸入計算機已是不容易了,但真正要學會編程,僅僅練習了輸入、運行通過是遠遠不夠的。實驗一定要有技巧。我們這里強調背程序到改程序相結合的方式。一開始,對一些簡單的程序要求背代碼,在背的基礎上進行驗證性的實驗,然后要改程序,每改一次就運行觀察結果的變化,讓同學們體會掌握語言后計算機是怎樣的按你的意思去完成,這樣反復訓練,同學們才會愛上與機器交流。例如一個簡單的屏幕顯示歡迎的程序,一開始,只要求輸出“Hello World!”,接著要改成交互式的,輸入名字,再輸出名字+“Hello World!”,或者讓程序多輸出幾行“Hello World!”等等。這些都是同學們與機器交流的開始,體會機器如何理解同學們的要求。在循環的教學上,我們更是要求同學們首先把自己當成是計算機,把循環的整個執行的過程模擬寫出來,變量值的變化,循環條件的變化,每循環一次就要求把這些變化全部寫出來,這里一般控制循環的次數在6次左右。這樣反復的訓練,才能真正讓同學們把到計算機的思維學到腦里,才能真正的學會編程。
3 結語
以上幾點教學實踐是從實際的《C語言程序設計》課程教學中得出的,當然,不同的學生和不同的教學內容,還有更為具體和實際的方式方法,筆者所寫是希望對大學計算機基礎教學有一定借鑒作用,在今后還將繼續探索,以期更好的教學效果。
參考文獻
[1] 譚浩強.C程序設計[M].3版.北京:清華大學出版社,2005.
[2] 周強.C語言教學方法探討[J].滁州學院學報,2004(4).
[3] 陳仲民.關于C語言教學方法和程序設計的探討[J].計算機教育,2007(6).
[4] 劉鑫,楊春燕.淺談C語言程序設計教學方法[J].長春理工大學學報(高教版),2009(11).