艾鴻 劉躍軍
摘 要:C語言程序設計是高等院校非計算機專業的一門必修基礎課程,文章針對教學過程中出現的問題進行討論和分析,對教學方法、思維培養、實踐教學、考核方式等方面提出建議和思考。
關鍵詞:非計算機專業;C語言程序設計;教學探索
一、 引言
C語言憑借功能豐富、應用廣泛、可移植性好的特點,成為非計算機專業學生的首選入門的編程課程。該課程目的是使學生掌握程序設計的基本方法并逐步形成正確的程序設計思想。但相對專業學生扎實的知識基礎和較長的課時安排,非計算機專業教學安排存在課時比計算機專業的少,任務重,在教學實踐中產生教與學的沖突。
二、 C語言程序設計教學存在的問題
(一) 課程知識點多且零散
C語言語法知識點多,內容分散、理論性強。學生能夠編寫出正確的程序,需要對語法知識進行全面的掌握,并具有流暢的思路。但教學中,按照教材順序逐章節講解教學模式,導致學生多關注細節而忽略的程序設計的本質,最終影響教學效果。
(二) 實踐教學環節薄弱
C語言具有較強的實踐性,由于課時的局限,非計算機專業學生缺少充足的設計型和創新型實驗,使綜合性實驗很難和實際問題緊密結合,學生無法將所學的知識應用到實際中去,導致學生失去學習的興趣,創新能力和學以致用的綜合能力的受到限制。
(三) 學生基礎差異大,缺乏深入思考
由于高校各個專業學生的知識背景不同,在理解及應用計算機編程知識方面存在較大的差異。部分學生只會驗證教材例題正確性,做不到對問題深入思考,舉一反三。對編程思想理解不透,而C語言編程需要非常強的邏輯思維能力,隨著學習的深入,學習難度增強,導致在其他專業課、課程設計、畢業設計要用到時無法獨立編程。
(四) 學生重視度較低,學習興趣不高
部分非計算機專業的學生認為,C語言程序設計是計算機公共基礎課與他們所學的專業無關,學習積極性不高,重視度不夠,缺乏學習興趣。還有部分愛好計算機的學生感覺C語言程序設計編程直觀性沒有Java、C++、C#等相關程序設計語言好,學習過程需要識記的內容多,無法產生學習興趣。
三、 教學探索與實踐
(一) 培養程序思維
C語言的教學目的是讓學生掌握高級語言的編程的基本概念,建立計算思維,在面對實際問題是學會利用邏輯思維解決問題。計算思維的本質來源于對工程建設和數學科學的理性思考,語言編程問題并不單純歸結于模型的思考過程,應以人腦思維為邏輯起點,抽象出計算思維,上升為C語言程序設計思維。C語言程序設計中的思維主要體現在抽象和自動化。
抽象包括使用函數、常量、變量、數組、鏈表等元素表達實際問題中的系統、功能等特征。自動化表現為通過設計函數功能實現函數的自動跳轉和調用,最終實現系統功能。
因此教學中依據C語言的抽象和自動化的特點進行教學,淡化語法上的細節部分,按照“人腦思維—計算思維—C語言程序設計思維”的順序完成例題演示、習題講解,努力將計算思維融入C語言建構中,使學生的思維能力得到鍛煉。
(二) 改進教學模式
C語言教材一般在章節安排上先介紹數據類型、表達式、運算符后開始程序編寫。若按部就班地進行教學內容的講解,教學效果較差。因此在教學中微調教學安排,調整部分章節的順序,部分基礎內容開始講解時做了取舍。
如對基本的數據類型中整型和浮點型、輸入輸出格式“%d”,“%f”以及算術運算和賦值語句進行介紹后,就進行可以簡單計算器的程序編寫,不必要對大量數據類型、表達式以及運算符進行講解,讓學生嘗試程序編寫、編譯和調試,讓學生先建立學習的信心和成就感。在后續的章節中再慢慢地滲透其他內容。
針對學生一聽就懂,一編就亂這一現象,提出驗證—修改—創新的實踐教學方式。
驗證主要是檢驗教材或老師給的程序結果。在這個看似簡單的過程可能存在符號輸入錯誤、保留字拼寫錯誤、0誤以為o、變量沒有定義或變量重復定義,缺少語句結束符分號等。通過這個過程使學生可以總結問題,快速地找到程序中出現的語法錯誤、連接錯誤和功能錯誤。
修改是經過驗證性的編寫程序后,根據要求對程序進行適當的修改,觀察輸出結果的變化,并將修改后的程序與原來的程序進行比較,鼓勵學生分析修改部分對運行結果的影響。
創新是解決實際問題實現新功能。將實際問題抽象-提取特征-設計程序,是學生綜合能力的培養。
例如:循環結構累和內容采用求1+2+…+100和的例題講解要求學生驗證程序;擴展1+2+…+n的和與1*2*…10!階乘的積求解要求學生考慮修改的內容并與原來程序對比找出區別與聯系;拓展訓練求1+2!+…+n!學生通過例題—擴展—拓展訓練理解這部分內容,就能更好的應用和創新。
(三) 合理的考核方式
考核是對學生的學習情況進行檢測的重要過程。在C語言程序設計教學過程中,對傳統的考核方式進行改變和創新,突出學生的實踐能力的考核,不斷提高學生的實踐能力的水平。教學過程中并非依靠最后的期末考試來確定學生的成績,而是將課程的考核貫穿整個學期。
考核采用總成績=期末成績40%+階段考試成績20%+綜合實驗成績20%+平時成績20%;期末考試、階段考試均采取機考的方式實施教考分離,考核能較客觀地反映出學生的綜合能力,促進學生學習的主動性;平時成績由課堂表現、實驗成績組成。總成績中實踐環節所占比重較大,在一定程度上提高教師和學生對實踐的重視。
(四) 開展編程競賽
競賽對學生設計能力、實踐能力、心理素質都有較高的要求。競賽不但全面考核學生綜合能力而且能夠鍛煉學生的實際動手能力,使學生真正能利用C語言完成程序設計,解決實際問題。
在教學過程中引入競賽的趣味程序,讓學生對競賽有所了解,鼓勵學生多參加學校開展各種計算機競賽,同時鼓勵學生參加全國性程序大賽,比如:藍橋杯、天梯賽等。以競賽調動學生的學習熱情,使學生勇于思考,敢于創新,提高學生學習的內動力。指導的學生參加競賽取得成績后,學生在后續的課程和創新項目中保持良好的學習動力和專業素養,為學生學業規劃和職業規劃夯實基礎。
四、 結語
C語言程序設計的教學不僅培養學生分析問題、解決問題、編寫程序的能力,而且使學生掌握程序設計的方法。結合2015-2018年期間具體教學實踐表明,適量的減少理論課講授,加大實踐環節的力度,完善考核方式的舉措比較符合當前非計算機專業學生實際情況,具有較好的可操作性,收到較好的教學效果。
其中參加藍橋杯的非計算機專業學生通過課程的學習打下基礎,經過集訓取得很好的成績,有些學生甚至考研轉到計算機方向。可見學生在學習過程中通過調動學習的積極性,提高學習興趣,提升編程能力,培養程序設計的思維的重要性。在未來的教學中,還需不斷地改進教學方法,真正做到以學生為主,以學為主;使C語言和學生的專業更加緊密地結合起來,使學生學有所用,為后續的學習奠定良好的基礎。
參考文獻:
[1]徐寶文,李志譯.(美)Brian W. Kernighan/(美)Dennis M. Ritchie. C程序設計語言第2版[M].北京:機械工業出版社,2004.
[2]譚浩強.C程序設計第4版[M].北京:清華大學出版社,2010.
[3]徐新愛.基于學科競賽的《C語言程序設計》課程教學改革研究[J].西南師范大學學報(自然科學版),2015,40(9):224-228.
作者簡介:艾鴻,上海市,上海海洋大學信息學院;
劉躍軍,上海市,上海大學計算機工程與科學學院。