曹海英+元元+郝兵
摘要:在C語言課程的教學中不僅要讓學生掌握C語言語法與程序結構,更重要的是培養學生掌握常用的算法并且能夠利用計算機語言設計程序,解決實際問題的能力。實踐能力的培養主要依靠實驗教學,高校需要重視C語言的實驗教學,在開展實驗教學時可以依據學生對知識掌握、應用的認知規律,進行分層試驗教學。
關鍵詞:程序設計;實驗;教學;分層
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2017)34-0128-02
大多數的理工科院系都選擇C語言作為程序設計學習的入門課程,因為C語言語法結構簡潔精妙,程序代碼少,運行效率快且高效,程序設計人員都愿意使用C語言去描述算法,所以想提高利用計算機求解問題的能力,就必須掌握C語言。C語言能夠深入系統底層,用C語言可以編寫設備驅動程序和操作系統。很多新型的語言都是衍生自C語言,如C++、Java、C#,掌握了C語言,有了C語言的基礎,經過簡單的學習,就可以用這些新型的語言去開發軟件。從上可知C語言在程序設計中占據重要的地位。
1 C程序設計教學內容
C程序設計作為高校的計算機基礎核心課程,教學過程中不僅要讓學生掌握C語言語法與程序結構;更要通過該門課程的教學讓學生掌握一定的程序設計算法與思想,培養學生利用計算機求解問題的能力。提高C語言編程能力必須依靠一個又一個上機實驗,不斷地“思考——編程—調試—運行—測試—反思”,這就需要保證C語言程序設計課程的實驗教學學時。但隨著高校教學改革的不斷深入,教學課時在不斷的縮減,因此需要教師在教學的過程中,不能面面俱到的講授,而是必須梳理知識脈絡,以“理論夠用,突出實踐”為原則,將課程教學內容進行整合優化,形成教學內容邏輯框架,如圖1所示。
2 階段式分層實驗教學
C程序設計課程的實驗教學環節在課程教學中具有重要的作用,充分利用有限的實驗學時開展高效的實驗教學,可以幫助學生理解程序設計的思想,學會運用理論知識編程解決實際問題。按照學生的認知規律和軟件工程思想,在實驗教學時,可進行階段式分層實驗教學。
2.1 階段式實驗教學
第一階段:引起求知欲。為了提高學生實踐應用能力,需要在有限的學時內組織好實驗教學。教學應從誘發和激起求知欲開始,讓學生產生知與不知的矛盾,激發起求知的內在動力。可以采用生活中的原型實例,例如:在學習switch語句設計多分支選擇結構程序時,可以引入銀行排隊系統的小票、政務大廳服務選項選擇等實例,通過提出這些身邊的依據數字選擇進行服務的實例是如何通過switch語句實現的問題,必定能引起學生的學習興趣,再逐步引導學生利用switch語句設計程序,解決該類問題。
第二階段:引導設計算法,找出解決具體問題的數學模型,確定使用計算機思維解決問題的基本思想方法和步驟。通過算法的表示方法如:自然語言、結構化流程圖、偽代碼等對解決問題采取的方法和步驟進行具體的描述。包括需要什么數據(輸入什么數據、處理什么數據,輸出什么結果);采用結構化程序設計中的順序結構、選擇結構、循環結構中的什么結構;使用什么語句以及如何安排這些語句等。建議選擇使用結構化流程圖來描述算法,并且可以直接在RAPTOR軟件中繪制流程圖,驗證算法是否正確。
第三階段:利用最新學習的C語言的知識與技能,實現程序編寫。在編寫程序時要注重培養學生養成良好的程序設計風格。編寫的源程序要文檔化,標識符應按意取名,復雜的數據結構、程序的主要功能應加注釋。程序中語句構造的原則是:簡單直接,不能為了追求效率而使代碼復雜化。不要一行多個語句,不同層次的語句采用縮進形式,使程序的邏輯結構和功能特征更加清晰。
第四階段:程序測試與錯誤分析,調試,修改程序。通過程序的測試可以發現程序中的Bug,調試解決這些Bug,是提高程序設計能力的最有效的手段。程序出錯可以分為:編譯錯誤,鏈接錯誤,運行錯誤。在程序學習初期,常會犯前兩種錯誤,主要是不熟悉C語言的語法,或者是調用標準庫函數時,函數名沒有拼寫正確,這樣的錯誤通過引導學生學會查看Message窗口的提示信息,找到錯誤的位置,修改即可。最難的是運行錯誤,可能出現程序無法正常運行,或者使用測試用例進行測試時,運行的結果與預期不一致。對于程序無法運行,往往在程序中存在隱藏的邏輯錯誤,不容易發現,在調試時可以引導學生合理的使用調試工具:設置端點、單步跟蹤、監視窗口;并且合理配合調試方法:逆向推理、分治排除、縮減輸入等。找出程序錯誤,促使程序正常運行。
程序能夠正常運行時要設置典型的測試用例,根據要測試程序的結構還是測試程序的功能,分別進行軟件工程中的白盒測試與黑盒測試。這樣可以培養學生以軟件工程的思維去開發程序,使學生在學習程序設計的初級階段就樹立正確的軟件工程觀點。這樣做不僅可以為學生將來從事計算機應用設計打下良好的基礎,而且有利于培養學生分析問題的完整性,提高學生的解決實際問題的能力。
第五階段:優化程序,找出最優的解決方法。在實驗教學中,相同的實踐內容,學生可以給出很多的解決問題的方法,通過教師的引導,讓學生發現自己的程序設計的不足,優化算法、優化代碼。算法優化主要考慮時間復雜度、空間復雜度的問題,需要程序執行所耗費的時間要少,并且程序在運行過程中占用臨時存儲空間小。代碼優化一般需要與算法優化同步進行,代碼優化主要涉及具體的編程技巧。同樣的算法與功能,不同的寫法也可能讓程序效率有差異。一般而言,代碼優化主要是針對循環結構進行分析處理。
2.2 分層實驗教學
在C語言的學習中要求學生程序設計的能力在教學中逐層提高,從基本的程序設計,到涉及數組、結構體、指針的中級程序設計能力,以及涉及文件的高級程序設計能力。在進行實驗教學設計時可以設計綜合型的實踐內容,比如學生點餐系統,在學習的過程中,分層次逐步完善系統功能,如表1所示。
相同的內容可以根據學生對知識的掌握規律即認識、理解、掌握、應用,分層設計實驗教學內容。實驗教學內容層次分為驗證型、應用型、綜合型、設計型。實驗教學的難度逐層遞進、在不斷的實踐中逐步提高其C語言的編程水平。
3 結束語
學習程序設計語言的目的不僅僅是掌握知識點,還要理解程序設計的思想,學會運用理論知識編程解決實際問題。實驗教學不僅可以使學生加深對理論知識的理解,強化記憶,而且可以很好地鍛煉學生的實際動手操作能力,培養其邏輯思維方式和計算思維方式,引導學生學會如何應用所學知識解決實際問題。想要提高實驗教學的教學質量,需要根據學生學習的規律與實際情況不斷地進行教學探索。
參考文獻:
[1] 謝鵬,曾升,白金鑫,等.原型實例在C語言程序設計課程中的應用[J].山東工業技術,2016(12).
[2] 李文娟,郭永紅.基于C語言的學生成績管理系統的設計與實現[J].中央民族大學學報:自然科學版,2016(2).
[3] 劉光蓉.融入計算思維的C語言實驗教學設計[J].實驗室研究與探索,2015(10).
[4] 顧泰龍,李遠靜.基于C語言的計算機軟件編程實驗研究[J].軟件工程師,2013(8).
[5] 賴永秀,李凌,饒妮妮.任務驅動法在C語言實踐教學中的應用[J].實驗科學與技術,2012(3).