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