【摘要】C語言由于鮮明的語言特點和嚴謹的邏輯,成為大學本科計算機專業和計算機相關專業的首選重要課程,被廣泛采用做為重要的計算機教學語言。筆者長期從事C語言的實踐教學,深刻體會C語言實踐教學的重要性,本文中筆者將從C語言實踐教學情況分析入手,分析高校學生學習C語言遇到的難點,并針對這些現狀,在C語言拓展教學方法和優化教學方法等方面提出具體的教學方法改革措施。
【關鍵詞】C語言 實踐教學 教學 改革
【中圖分類號】G64 【文獻標識碼】A 【文章編號】2095-3089(2015)06-0255-02
C語言是一種理想的結構化語言,其語言邏輯結構清晰,編譯、運行效率高,數據類型豐富,靈活性強,有助于初學者掌握模塊設計思想,并對數據結構的運用有一定的認識,對培養學生的抽象思維能力有很大幫助,因此它已成為許多高校計算機專業甚至部分非計算機專業的一門必修課。而C語言是一門比較抽象且實踐性很強的課程[1],要讓學生運用C語言編寫程序解決實際問題,如果只重視理論教學而忽視實踐教學,容易讓學生感覺C語言難、不易學,失去對C語言的興趣,所以C語言在強調理論教學的同時,也需要重視實踐的重要性,通過教授基本知識之外加強編程實踐,使學生在掌握C語言語法知識的同時,也掌握C語言程序設計的思想和方法,這樣才能引導和促使學生充分掌握C語言,運用好C語言,編出簡潔高效的程序,增強學生的動手能力。因此,如何在C語言教學中啟發并訓練學生的編程思維,是每個教師應深思的問題。以下是筆者在C語言上機實踐教學中的一些想法,愿大家共同交流探討。
一、C語言實踐課的重要性
學習C語言應當充分注意實踐環節。通過上機練習的實踐,讓學生將課堂上學習到的理論知識帶入實踐環節,通過程序編譯運行,查看程序結果,完成與程序的一次次的“親密接觸”,從編譯環境、調試方法學習入手,讓學生在實踐中驗證理論知識并對于在理論知識學習過程產生的疑惑,并通過實踐方式加以驗證和解決[2]。同樣在上機實踐中如果驗證通過某一個程序后,學生可以嘗試的改變程序中某些語句,甚至設置一些跳轉語句或者中斷語句,觀察和分析在不同情況下的編譯和運行結果,上機實踐能讓學生很直觀的感受到程序的存在、變化和結果。應當說,上機實踐是鞏固和發展理論知識的十分重要的環節。
二、C語言實踐課存在的問題
目前在高校C語言實踐教學活動中,存在以下一些現象和問題:
(1)學生學習C語言的積極性沒有充分調動起來。C語言的許多基礎知識都是概念性強、理論性強,內容豐富且抽象,具有嚴密邏輯性的[3],初次學習難度比較大,學生容易會產生畏難情緒,如果沒有及時有效的引導,許多學生會失去學習興趣,不容易堅持學習,影響了學習的效果。
(2)高校中C語言一般大班授課,同時理論課和實踐課分開進行。首先大班聽課,人數較多,聽課的效果會出現參差不齊的情況。另外理論課老師負責理論教學,實踐教學部分則由實踐室老師負責輔導,任課老師和實踐輔導老師如果溝通交流不夠,容易存在對學生實踐教學真實情況掌握不足的現象,讓任課老師在傳授理論知識時失去了一定的針對性。
(3)學生在完成理論作業時,由于老師布置程序的題目一般情況下都是統一的,這樣作業涉及的代碼編寫也存在一定的相似度,學生的作業不容易存在差異化,不容易讓老師了解學生知識點掌握的情況,所以對于C語言這樣一門實踐性很強的課程,僅靠布置書面作業和書面批改作業的方法來督促學生學習和了解學習情況存在不夠全面和不夠客觀的問題。
三、C語言實踐課教學改革的原則探討
(1)實踐教學是學習C語言最好的推動力。充分運用案例教學完成C語言的第一次授課。大部分的同學都是初次接觸C語言,C語言或是任何一種計算機語言,對他們而言,都是陌生的,也是神秘的。實踐教學很重要就是把握好第一次的教學,我們在實踐中稱為C語言導學模式。在C語言課程的第一次教學,我們建議教師抓住學生的心理特征,有針對性的收集一定數量和具有一定代表性的C語言程序案例,直接通過程序案例結果,為學生展示程序運行結果畫面,例如從早期的骰子游戲到如今的電腦游戲,讓學生產生一定的興趣,并保持這種興趣,能增強不斷學習的信心,而不是通過簡單的C語言程序做為第一次課程的內容。
(2)培養良好的程序編寫和邏輯習慣。對程序設計控制結構,要求學生熟練掌握結構的表達,培養學生良好的“結構描述、語言表達”的編程習慣,例如循環控制的兩種結構三種表達:while{……};do{……}while;for{……}語句,必須嚴格按照兩種結構圖進行理解三種表達語句中各個表達式的含義。對先判斷后執行使用while{……}格式,而先執行后判斷使用do{……}while 格式,以上兩種格式通常在無法確定循環控制次數情況下使用,在已知循環控制次數或控制步長情況下通常使用for{……}語句[5]。類似這樣的基礎,均要嚴格要求學生掌握,保持良好的編程習慣和邏輯習慣。
四、C語言實踐課教學改革的方法探討
(1)由于有些學校存在師資力量或是教室資源的問題,不容易取消大班聽課的模式,故建議在上機實踐課中,分小組進行,由3-5個同學組成一個小組,小組成員可以共同完成某一個自選的題目,但是要求列出每個成員完成的內容和效果,由老師組織,讓團隊成員講解設計的原理和過程,讓學生在實踐中掌握真知。另外為了方便掌握上機實踐教學情況,建議任課老師最好兼任實踐室輔導老師,或者要和實踐室輔導老師保持密切聯系、經常溝通,及時了解學生的上機作業情況,適時調整授課進度和難點解析。隨時明確:“C語言不是看會的,也不是聽會的,而是親自動手實踐練會的”。
(2)上機實踐教學中,除了基礎教學知識之外,不要給學生限定作業題目,允許學生根據自己的興趣愛好,選擇一個范圍,并以小組團隊為單位,設計并完成C語言程序設計實例,例如有些學生喜歡體育項目,可以根據體育項目,運用C語言設計一個編排比賽日程的小程序,通過類似的實踐方式,培養了學生問題求解和編程能力,還有利于培養他們探索與創新的能力,同時能有效增加學生學習的信心和興趣,激發學生的求知欲望,便于學生更加深入學習和研究其他程序語言。
(3)定期舉行答疑會,邀請有經驗的高年級學生和任課教師共同為學生答疑解惑,同時將問題和對應的解決方法收集起來,形成文檔資料,再完成統一講解后,提供給大家,讓學生能分享到其他同學的疑惑和具體的解決方法,提高答疑的效率和學生解決問題的能力。
(4)將框架思想融合到實踐教學中,使用“框架思想”可培養學生的全局思維和算法的整體設計能力,當學生有了一點編程基礎后,要利用偽代碼或流程圖,從算法設計的角度講解編程思路,而不應拘泥于語法細節,不分主次、逐條語句的講解代碼[4]。例如學生學習重點章函數時,由于新的算法已很少,實踐教學主要是學習用函數調用的方法來重新編制以前所熟悉的程序,那么我們可以把重點放在函數的設計框架上,體現參數設計、返回值設計等關鍵問題,而無需細講函數體的實現細節。
(5)運用比較的方法學習語法和算法,將實踐任務問題作為理論課的內容在課堂上講述、討論。對于同樣的題目,可以確定若干不同的算法,比較其優劣,分析其原因,在比較過程中體會并掌握算法、語法知識。例如C語言里Char?鄢和Char[]的區別,本質上來說,Char?鄢s定義了一個Char型的指針,它只知道所指向的內存單元,并不知道這個內存單元有多大,所以:當Char?鄢s = “hello”;后,不能使用s[0]=‘a;語句進行賦值。這是將提示內存不能為“written”。當用Char s[]=“hello”;后,完全可以使用s[0]=‘a;進行賦值,這是常規的數組操作。若定義: Char s[] = “hello”; Char ?鄢p = s; 也可以使用p[0] = ‘a;因為這是p ==s,都是指向數組的指針[5]。
下面看另外一種定義:
Char?鄢s = (Char?鄢)malloC(n);//其中n為要開辟空間的大小 這句話其實相當于:
Char s[n];
定義的也是一個指向數組的指針,便可進行數組的下標操作
例子
#inClude
int main(int argC, Char?鄢 argv[])
{
Char?鄢buf1 = “this is a test”;
Char buf2[] = “this is a test”;
printf(“size of buf1: %d\n”, sizeof(buf1));
printf(“size of buf2: %d\n”, sizeof(buf2));
return 0;
}
結果是:
size of buf1: 4
size of buf2: 15
類似的比較學習例子還有很多,建議可以按不同的學習章節,整理出不同的比較內容,提供給學生理解并應用。
五、結束語
C語言程序上機實踐教學要講究方法,重在培養學生的實踐能力,多給予學生實踐機會,設計合理的實踐方案,讓學生能真正體會到C語言學習的奧妙。本文介紹了C語言實踐學習的重要性,探討了實踐教學的一些原則和方法,今后還需要繼續探索教學方式和方法,促使實踐教學充分發揮作用,能讓學生在計算機語言學上打下扎實的基礎,為后續的學習提供高效的學習方法。
參考文獻:
[1]趙衛績,劉井蓮,樊守芳. 實例教學法在C語言循環結構教學中的應用[J].通化師范學院學報.2012(02).
[2]袁學倩.《C語言程序設計》課程教學改革的探討[J].科技信息. 2012(21).
[3]劉弘岳.淺談C語言教學實踐[J].才智.2013(25).
[4]賴永秀,李凌,饒妮妮.任務驅動法在C語言實踐教學中的應用[J]實驗科學與技術2012(03).
[5]譚浩強.C語言程序設計(第三版)[M].北京:清華大學出版社,2005.7.
作者簡介:
劉臻(1978-),女,臺灣人,碩士學位,主要從事計算機教學研究。