摘要:本文從 C 語言的教學入手,在如何提高非計算機專業的計算機語言教學質量的教學工作中做了一些努力,目的是為后續計算機類課程的學習打下良好的基礎。
關鍵詞:教學方法;綜合性實驗;題庫建設;考核方式
中圖分類號:G642文獻標識碼:B
文章編號:1672-5913(2007)06-0056-03
1 前言
隨著計算機科學的發展,計算機逐漸成為了人們生活中不可缺少的工具,而程序設計是人類利用和開發計算機各種功能最直接的方法,因此,對于理工科的學生而言,掌握一門高級語言及其基本編程技能是必要的。除此之外,在學習高級語言程序設計的過程中,通過分析、分解、歸納、整理最終得出算法的思維能力的訓練,有助于培養、提高學生分析問題和解決問題的方法與能力。目前,C語言是近年來國內外得到迅速推廣使用的一種高級程序設計語言,它功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可移植性好等諸多優點使得C語言程序設計幾乎成為高等理工院校本科低年級必開的一門重要計算機程序設計課程。我院將C語言作為理工科學生的第一門程序設計語言課程。
絕大多數學生在學習C語言程序設計這門課前,對計算機語言、算法、數據結構和程序設計一無所知,更沒有任何抽象建模的基本知識,加上初學C語言時涉及的概念比較復雜抽象,規則繁多,以致多數學生普遍反映C語言難懂難學。如果前面簡單的小程序寫不出做不對,當涉及較復雜算法的程序時就更無從下手,慢慢地就會產生一種排斥心理,甚至放棄對C語言更深入的學習,這就是該門課教學質量普遍不高的癥結所在。面對上述情況,許多教師一直都在努力研究、探索、改進教學方法和手段,目的就是將學生順利地領進計算機語言程序設計的大門,對后續計算機語言程序設計課程的學習起到了奠定基礎的作用。
2 選定一本合適的教材
C語言同所有算法語言一樣都由自己特定語句組成,每條語句又有自己的一些特定使用規則。現在有關C語言程序設計的教材版本很多,作為C語言程序設計課程的教材,介紹的都是C語言的語法規則和定義,這些內容相對來說既枯燥又難記,在講授的過程中,難以引起學生的興趣。
我們一直選用潭浩強編寫的《C程序設計》。它的特點是章節劃分合理,內容完整,敘述清楚,例題適中,有代表性,屬于經典性教材。但它也存在敘述過于細致,略顯繁瑣的缺點,相應配套的實驗指導沒有解題思路,且習題偏重于數學,面向客觀事物的領域不夠寬,所以面向不同專業可選擇的習題不足。C語言教學的最終目的是使學生在牢固掌握理論知識的基礎上,具備一定的編程能力。如何將程序設計的理論與實踐相結合,是C語言教學中的重點。我們結合專業特點,選用或自編實驗題目,盡量提高學生學習的興趣。
3 教學與實踐
3.1 兼顧課堂教學和學生自學的多媒體課件
利用各類計算機軟件,根據本校學生的特點,制作出高水平的C語言程序設計多媒體課件。使教學過程具有形象、直觀、生動、信息量大等特點。
講授“C語言程序設計”課程,要充分利用多媒體課件,但不能過于依賴課件,我們觀察教師若自始至終坐在課堂控制臺前,始終以課件授課,難以達到好的教學效果。教師必須在使用課件的同時,穿插使用黑板,將重要知識的演繹過程強調出來。
將課堂教學和網絡教學相結合,制作適合自學的網絡版課件,發布到課程建設網絡平臺。該課件應層次結構清楚,較之課堂用教學課件內容更加全面、詳細。能夠自由選擇章節,使用方便,供學生下載、學習。
3.2 綜合性實驗
C語言的教學模式通常是以語言的語法系統為主線,以小型練習、驗證性實驗為訓練手段,往往只對一兩個語法要點進行有針對性的練習。一般的C語言課程,大致是按照“數據類型-基本結構-數組-函數-指針-結構體-文件”這樣一個順序來組織的。在課程的起始階段,系統地講述C語言的各種數據類型和輸入輸出格式,極為瑣碎,需要花費大量的時間,又沒有足夠多的例子來映證這些內容的重要性,導致進入程序設計緩慢。
我們根據C語言的特點,將教學劃分為兩個大的階段:前者主要包括程序基本結構、數據類型與操作符、數組與字符串、函數等基本的語言要素,有了這些知識,學生就能夠解決完整的編程問題;后者主要包括指針、結構體、文件等語言要素,有了這部分知識,學生應該能夠解決更高級的編程問題。
在前一階段,應該以較快的速度,讓學生接觸程序基本結構、數據類型、輸入輸出的靈活用法、數組、函數等編程基本概念,在這些知識積累到一定程度后,應加以梳理和總結,消化前面的各知識點,使之達到一定程度的系統化,這時給出一兩個較大的綜合實例程序,分析其結構與語句,也就是引領學生讀懂程序,通過解釋程序中各個語句的作用,使學生進一步掌握程序語言的一些細節知識,能夠修改程序的片斷,觀察程序的運行行為,然后再要求學生模仿已有的程序去做相似的問題,讓學生對C語言編程的概貌有所了解。此時可安排一次期中測驗,以起到鞏固、復習的作用。
第二階段,是深入學習的階段。要講清指針、結構體、文件的應用特點和優勢,尤其是指針的內容,鼓勵學生在程序設計時多用指針完成,這時的程序設計已有第一階段做基礎,在程序設計上可以對學生提出更高的要求。
為了加強教學效果,我們在兩個階段之后,各布置了一個綜合性實驗讓學生練習。綜合性實驗的編程問題覆蓋了前面所講過的全部或大部知識。由于綜合性實驗涉及的問題較完整和較有實際意義,因此能夠引起學生的興趣,并使其復習前段時間所學的知識,以達到強化教學的效果。
3.3 引導學生帶著問題學習
C程序設計語言的知識體系是一個循序漸進的過程,先后的知識點相關性很大,語句簡潔、緊湊,語法限制不太嚴格,程序設計自由度大。在系統的教學過程中,大部分學生的語法細節掌握得相當好,但是涉及到較大的實際編程問題時,還是顯得困難;還有的學生始終無法學會如何把實際問題也就是算法轉化為程序語言,他們面對一個問題,往往心中只有一些模糊的想法,而無法寫出一行行的程序,久而久之,連原來學會的語法細節也遺忘殆盡。這一問題是目前C語言教學中普遍存在的。這是因為學生缺乏預習的學習習慣,并未帶著問題聽課,而是等著老師的灌輸,所以比較生硬地理解語句。
針對上述問題,我們提出,應該在C語言教學中緊密結合專業特點,編選帶有專業特點的題目,采用提出一個實際問題,分析、確立解析該問題的算法,實現逐項轉換成程序語句的方法,放棄過度追求語言知識本身的系統化和細節化的做法,通過一系列精心設計的案例,讓學生在編程的過程中進行學習。這樣將純粹的學習語言和真正的應用相結合,有助于學生對計算機語言的深入理解,同時學生也感興趣;從而培養了學生分析問題、解決問題、綜合思維的能力。
采用上面的教學模式后,我們發現,許多原來花費大量時間也難以講清的問題,現在學生領會和理解這部分知識就比較自然。
3.4 認真選題,靈活多樣,激發學生的學習興趣
課堂教學,教師要適當使用課堂練習和提問,運用多種方式活躍課堂氣氛。首先,課堂練習的題目要有趣味,結合實際。如模擬計算器、猜數字或字母游戲、查找本班某一個或多個同學的信息等程序設計。我們曾通過查找本班某一個或多個同學的信息的程序運行完成抽查點名。教師可以讓學生在課堂上自編簡單程序并進行演示,不拘泥于一種算法,若發現學生有新穎的、獨特的算法,教師應鼓勵學生自己講解個人的解題思路,盡量讓學生自由發揮。必要時,還可以布置一個小系統,如簡單的學籍管理系統等,讓學生綜合運用所學知識去加以實現。其目的是在有限的學時內,盡可能地提高學生的編程能力。
3.5 上機實踐環節的質量保證
程序設計是一門實際操作性非常強的課程,學生初學時往往由于對實驗的目的、內容理解不深,在上機操作時常常是盲目地把課本的例題作為上機實驗內容,機械地編寫、調試程序,并未真正理解程序中每一個語句所完成的功能以及語法,最終面對程序運行的正確結果而收獲甚微。保證實踐教學環節的質量,就是真正做到提高學生的上機動手能力、實際解決問題的能力以及知識綜合運用能力。
為此,我們對上機實踐環節做到實驗內容精心準備,每個實驗既有很明確的目的,同時也與相關的其他知識連貫。實驗時,重點讓學生自己動手,學生有問題,盡量給予提示,啟發學生自己思考解決問題。指導學生要針對學習任務,依據學習規則,詳細設計實習步驟,充分發揮學生的主觀能動性,鼓勵學生主動對學習的程序、函數、工具及方法進行有效操作,從而提高學習質量和效率。在實習過程中應該注重學生之間的相互交流和相互學習,當發現具有創意的作業后,就應該及時通過網絡推薦給其他同學學習,或在授課過程通過多媒體教室演示給學生并給予評論和提出改進方法,促使封閉學習向開放學習的轉換。
同時強調上機實驗輔導的管理,控制合班人數,一個老師輔導一個自然班(40人左右),保證輔導質量。教師在上機實踐環節做到實驗有題目、有檢查,嚴格課堂紀律,避免學生放任自流,注意平時成績的記錄。要求上機實驗面對面提問檢查不少于實驗課時的30%。
4 題庫建設
根據C語言二級等級考試大綱要求,采取擇優選取和自己編寫相結合的方式,構建起覆蓋大綱要求的知識點,包括大量經典習題的C語言精選題庫。按章節、題型加以整理、編排。題庫通過網絡提供給學生,并在教學過程中選取典型題目做講解或練習,引領并督促學生利用題庫加深對C語言知識的理解。因計算機二級等級考試有筆試與上機操作,所以在教學中我們注重客觀習題與主觀編程的并行訓練,每次作業均有20道客觀習題與1~2個編程習題。
5 改革考核方式
C語言程序設計課程的考核分為閉卷理論考試和上機考試。重點考核學生的程序閱讀能力和編寫能力。
閉卷理論考試延續傳統考試方式,沒有大的改動,只是在題型選擇上與計算機等級考試題型一致,包括:概念選擇、讀程序寫結果、程序代碼填空等,在考題內容上注意嚴格按照教學大綱的要求覆蓋各知識點,各知識點的定位重點在基本概念而不是語法細節。這部分占總成績的70%。
上機考試有所改革,利用我們自主開發的“通用網絡考試系統”,學生登錄考試系統自動隨機抽題,一道改錯題,一道編程題。重點測試考生調試程序、程序改錯、編寫程序等綜合能力,偏重實際應用性強的題型,其中改錯題占40%,編程題至少占60%。上機考試部分占總成績的10%。
編程題靈活多樣,或編完整的一個程序,或補充程序的部分函數,重在考核典型算法的應用,各題的評分標準側重于步驟和過程,而非完全根據答案的對錯。
平時成績占總成績的20%,這樣有利于學生對平時作業的重視,也能夠比較客觀地反映學生的真實學習情況。
6 總結
程序設計的學習和使用貫穿于整個大學階段,第一門計算機語言的課程教學質量對后續計算機課程的教學起到至關重要的作用。只有針對不同專業,考慮學生的特點、專業的特點,結合實際教學內容,重點介紹程序設計的思路和方法,做到以程序設計為主線,以提高編程能力為目的,重點掌握程序設計的方法和思路,在分析程序和程序設計中讓學生逐步熟悉語法和應用語句,提高學生分析問題、解決問題的能力,為學生建立獨立于任何特定編程語言的算法概念和結構,建立程序設計、軟件工程的整體框架,才能達到我們教學的真正目的。
參考文獻:
[1] 中國高等院校計算機基礎教育課程體系[M].北京:清華大學出版社,2006.
[2] 劉達明,甘玲.如何提高計算機專業的C語言教學質量[J].計算機教育,2005,(8):32-33.
收稿日期:2006-11-14
作者簡介:關忠仁(1957-),漢,男,四川人,高級工程師,研究方向:計算機網絡應用。