劉 鈞
(皖西學(xué)院,安徽六安 237012)
C語言實(shí)驗(yàn)的改革探索
劉 鈞
(皖西學(xué)院,安徽六安 237012)
總結(jié)了學(xué)生在C語言實(shí)驗(yàn)過程中的問題,對C語言實(shí)驗(yàn)的改革進(jìn)行了分析總結(jié),提出了針對C語言實(shí)驗(yàn)的案例教學(xué)改革方法。
C語言程序設(shè)計(jì);實(shí)驗(yàn)教學(xué);案例教學(xué)
《C語言程序設(shè)計(jì)》是一門重要的計(jì)算機(jī)基礎(chǔ)課程,通過該課程的學(xué)習(xí),學(xué)生在計(jì)算機(jī)語言編程及程序設(shè)計(jì)技術(shù)兩個(gè)方面都能得到鍛煉。C語言是學(xué)習(xí)高級(jí)語言編程的首選語言,通過對C語言的基本特點(diǎn)、語法規(guī)則、程序結(jié)構(gòu)等內(nèi)容的學(xué)習(xí),學(xué)生能逐步掌握程序設(shè)計(jì)的基礎(chǔ)知識(shí)和面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法,形成良好的程序設(shè)計(jì)風(fēng)格,這將為進(jìn)一步學(xué)習(xí)計(jì)算機(jī)相關(guān)課程或從事軟件開發(fā)奠定基礎(chǔ)。
《C語言程序設(shè)計(jì)》是一門實(shí)踐性很強(qiáng)的課程,需要通過大量的上機(jī)實(shí)驗(yàn),才能真正掌握好[1]。因此,除了注重課堂教學(xué)外,重視和搞好實(shí)驗(yàn)教學(xué),加強(qiáng)學(xué)生的動(dòng)手能力培養(yǎng)[2],是提高課程教學(xué)質(zhì)量的關(guān)鍵。
在C語言實(shí)驗(yàn)教學(xué)中還存有各類問題[2][3],主要有如下幾點(diǎn):1、學(xué)生剛開始學(xué)習(xí)C語言時(shí),知道其重要,學(xué)習(xí)熱情也很高,但當(dāng)接觸到C語言開發(fā)環(huán)境,見到單調(diào)、枯燥的界面,總覺得不如 Window s“好玩”,便會(huì)逐步喪失興趣。2、大多數(shù)學(xué)生在實(shí)驗(yàn)課上,忙于錄入編輯源程序,忙于查錯(cuò),簡單驗(yàn)證程序運(yùn)行結(jié)果之后,很少再有深入探討的過程。C語言實(shí)驗(yàn)幾乎成了打字練習(xí)課。3、實(shí)驗(yàn)課時(shí)較少,學(xué)生很難在有限的課時(shí)里收到滿意的學(xué)習(xí)效果。所有學(xué)生或多或少存有玩心,稍有放松,到后期只能是應(yīng)付考試,不求深入。4、學(xué)生與教師溝通有限,一部分學(xué)生怕自己學(xué)得不好,有問題不愿意問,另一部分學(xué)生則什么都問,老師看不到學(xué)生學(xué)習(xí)的主動(dòng)性,教學(xué)情緒也會(huì)受到影響。實(shí)驗(yàn)課后,老師與學(xué)生很難見面,有問題也得不到及時(shí)解決。
在今天的環(huán)境下,如何讓學(xué)生上好實(shí)驗(yàn)課、學(xué)好C語言是大家共同面對的新課題[4][5]。各地各校教師采用了很多方法與對策,值得我們認(rèn)真探討與借鑒。
讓學(xué)生明確學(xué)習(xí)目的、激發(fā)學(xué)生學(xué)習(xí)興趣是所有教師都認(rèn)可的作法。讓學(xué)生明確C語言在計(jì)算機(jī)專業(yè)課程中的地位,清楚C語言程序設(shè)計(jì)在軟件開發(fā)領(lǐng)域里的作用,介紹幾位有成就的學(xué)長當(dāng)年的學(xué)習(xí)歷程,講述幾位企業(yè)家的創(chuàng)業(yè)史,等等。該法雖然有效,但不能天天掛在嘴上,每次面對乏味的操作界面,仍避免不了學(xué)生學(xué)習(xí)興趣的流失。
現(xiàn)今,C語言教程多配有實(shí)驗(yàn)操作指導(dǎo)書,針對每堂實(shí)驗(yàn)課設(shè)定實(shí)驗(yàn)操作項(xiàng)目,對于優(yōu)秀學(xué)生,可以基本完成全部內(nèi)容,但對多數(shù)學(xué)生則難以做到。很多老師會(huì)在每堂實(shí)驗(yàn)課上,從實(shí)驗(yàn)項(xiàng)目中再精選重點(diǎn)內(nèi)容,講解要點(diǎn),提出問題,激勵(lì)探索,并巡回督促學(xué)生完成。此種作法,要求老師具有高度的責(zé)任心,就實(shí)驗(yàn)內(nèi)容來說,有了一定的彈性,學(xué)生也較易完成。老師多付出一分辛勞,學(xué)生也就多得到一份收獲。
一些學(xué)校將部分實(shí)驗(yàn)課搬進(jìn)了多媒體教室,老師演示操作,學(xué)生觀看體驗(yàn)。此方法不能說不是一種改進(jìn),確有其獨(dú)特的功效,它可以將帶有共性的問題及錯(cuò)誤,讓所有同學(xué)都能同時(shí)得到正確解答,可避免教師巡回重復(fù)講解,達(dá)到事半功倍的效果。然而它的缺陷也很明顯,學(xué)生很難全部記住一堂課上的全部要點(diǎn),聽一遍總不如做一遍印象深刻。
其實(shí),在一堂實(shí)驗(yàn)課中出現(xiàn)的共性問題,不會(huì)很多,老師只需在下一次理論課上,用3到5分鐘的時(shí)間即可講清楚,收效也很好。至于學(xué)生,還是應(yīng)當(dāng)讓他們親自下海去品嘗滋味。
一些學(xué)校在開課之初即向?qū)W生布置大作業(yè),作業(yè)的實(shí)用性以及完成作業(yè)的可行性,對學(xué)生都是很強(qiáng)烈的刺激。作業(yè)涉及的難度與深度,讓學(xué)生一時(shí)無法完成,這在學(xué)生心里形成一個(gè)期盼的目標(biāo)。學(xué)生會(huì)分解目標(biāo)、帶著問題自覺學(xué)習(xí),實(shí)驗(yàn)操作訓(xùn)練的積極性是明顯的,每一個(gè)小問題的解決、每一個(gè)小目標(biāo)的實(shí)現(xiàn),都會(huì)給學(xué)生帶來成功的喜悅,增強(qiáng)了信心,對后續(xù)學(xué)習(xí)又是最好的激勵(lì)。
該教學(xué)方法,對一流學(xué)校素質(zhì)好的學(xué)生,是行之有效的。該方法的前提是,學(xué)生具有高度的學(xué)習(xí)自覺性。這一方法在很多學(xué)校中卻無法實(shí)施。但可改進(jìn)一下,分章布置大作業(yè),讓學(xué)生看到一個(gè)更容易實(shí)現(xiàn)的目標(biāo),在一定程度上可以達(dá)到激發(fā)學(xué)生自覺學(xué)習(xí)的目的。
為減少學(xué)生錄入源程序的時(shí)間,減輕學(xué)生粗心出錯(cuò)的負(fù)擔(dān),一些學(xué)校專門組織力量,編寫實(shí)驗(yàn)教學(xué)軟件。軟件依據(jù)一本實(shí)驗(yàn)操作指導(dǎo)書,將大部分練習(xí)與習(xí)題編入其中,學(xué)生只需讀懂練習(xí)源程序,接下來的改進(jìn)、編輯、編譯、運(yùn)行等實(shí)驗(yàn)操作過程都可在教學(xué)軟件的幫助下完成。實(shí)驗(yàn)教學(xué)軟件的使用,在一定程度上提高了學(xué)生實(shí)驗(yàn)操作的效率,使同步完成實(shí)驗(yàn)內(nèi)容成為可能。軟件實(shí)現(xiàn)實(shí)驗(yàn)教學(xué)也存在一些問題,近年來教材更新較快,改寫實(shí)驗(yàn)教學(xué)軟件,使其與實(shí)驗(yàn)操作指導(dǎo)書同步,成了老師的一大負(fù)擔(dān)。軟件實(shí)驗(yàn)教學(xué),雖免除了學(xué)生的錄入負(fù)擔(dān),但無法使學(xué)生接受粗枝大葉的教訓(xùn),離開教學(xué)實(shí)驗(yàn)軟件,自行編程,仍會(huì)犯一些低級(jí)錯(cuò)誤。
C語言實(shí)驗(yàn)教學(xué)在不斷的探索與發(fā)展著,每一種方法的運(yùn)用都不會(huì)十全十美,也不會(huì)處處適用。針對自己學(xué)生的特點(diǎn),針對自己學(xué)校的軟硬件條件,理性分析各種實(shí)驗(yàn)教學(xué)方法對自身的適用程度,合理選用不同的教學(xué)方法,以應(yīng)對不同階段的實(shí)驗(yàn)教學(xué)內(nèi)容,才能達(dá)到較好的實(shí)驗(yàn)教學(xué)效果。
筆者在多年的C語言課程理論與實(shí)驗(yàn)教學(xué)過程中,也在不斷的探索總結(jié),大多數(shù)學(xué)生缺少學(xué)習(xí)的主動(dòng)性,又不是完全不想學(xué),實(shí)驗(yàn)課上多有盲從、不得要領(lǐng)的感覺,若幾次實(shí)驗(yàn)勞而無功,則學(xué)習(xí)興趣便會(huì)慢慢喪失。針對學(xué)生的這些特點(diǎn),經(jīng)過不斷的摸索改進(jìn),逐步形成了案例教學(xué)的實(shí)驗(yàn)教學(xué)方法。
案例教學(xué)中,選用的案例大多來自學(xué)生所用的實(shí)驗(yàn)操作指導(dǎo)書,好處是,學(xué)生可以不用抄題,專心聽講,記錄要點(diǎn)方便。在上C語言實(shí)驗(yàn)課時(shí),學(xué)生每人一機(jī),老師利用軟件播放系統(tǒng),先將案例進(jìn)行播放演示操作,提醒學(xué)生每個(gè)案例的實(shí)驗(yàn)要點(diǎn),在出現(xiàn)學(xué)生不能理解的結(jié)果時(shí),帶著學(xué)生返回查錯(cuò)或重溫理論。每堂實(shí)驗(yàn)課上,案例教學(xué)的過程不宜太長,要留有足夠的時(shí)間讓學(xué)生自主練習(xí),案例教學(xué)結(jié)束時(shí),要給學(xué)生留下問題,明確告訴學(xué)生本次實(shí)驗(yàn)的目的。
這種案例教學(xué)方法,近似達(dá)到了和每位學(xué)生面對面交流討論的教學(xué)效果。學(xué)生都很專注,各有所悟,在之后的自主操作實(shí)驗(yàn)過程中,氣氛熱烈,討論活躍,實(shí)驗(yàn)效果有明顯改進(jìn)。案例教學(xué)也不必每堂必用,這樣容易形成學(xué)生的依賴性,你不講他就不做。
針對《C語言程序設(shè)計(jì)》課程的特點(diǎn),以及教學(xué)大綱的要求,對本課程中的基本內(nèi)容、重點(diǎn)內(nèi)容及部分難點(diǎn)內(nèi)容進(jìn)行了案例教學(xué)實(shí)驗(yàn)課安排,具體把握好以下三個(gè)方面:
掌握運(yùn)算符是學(xué)好C程序設(shè)計(jì)的基礎(chǔ),C語言的運(yùn)算非常靈活,功能十分豐富,運(yùn)算符種類遠(yuǎn)多于其它程序設(shè)計(jì)語言。在表達(dá)式方面較其它程序語言更為簡潔,如自加、自減、逗號(hào)運(yùn)算和三目運(yùn)算使表達(dá)式更為簡單,但初學(xué)者往往會(huì)覺得這種表達(dá)式難讀難理解。案例教學(xué)就是要解決學(xué)生的難字。如:“5*8/ 4%10”、“a=3;b=5;c=++a*b;d=a++*b;e+ =a;g=a>b?a:b;”。通過這些簡單例子的仔細(xì)分析和耐心講解,找出它們與傳統(tǒng)數(shù)學(xué)表述之間存在的差異,使學(xué)生看到它們并非很難,但也不能隨心所欲。
順序結(jié)構(gòu)案例幫助學(xué)生理解程序的執(zhí)行順序,如:“a=b;c=a;”不同于“c=a;a=b;”。案例教學(xué)過程中,將編輯、編譯、查錯(cuò)、修改等過程讓學(xué)生充分體驗(yàn)直到熟練掌握,為以后的訓(xùn)練打好基礎(chǔ)。
分支結(jié)構(gòu)案例幫助學(xué)生理解程序的判斷選擇功能。案例以“if…;else…;”分支結(jié)構(gòu)為主,逐步演化出幾種變形分支結(jié)構(gòu)、嵌套分支結(jié)構(gòu)、多分支結(jié)構(gòu)及sw itch分支結(jié)構(gòu),案例演示過程中,教會(huì)學(xué)生利用首行縮進(jìn)分清結(jié)構(gòu),配合程序流程圖教學(xué),要求學(xué)生對案例自行畫出流程圖,加深理解。
循環(huán)結(jié)構(gòu)是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長的程序結(jié)構(gòu),即減少了源程序重復(fù)書寫的工作量,又達(dá)到了重復(fù)執(zhí)行的目的。C語言中提供有while、do–while和for三種基本循環(huán)結(jié)構(gòu)語句,可以用來處理同一問題,一般情況下它們可以相互替換。循環(huán)結(jié)構(gòu)案例很多,所用案例重點(diǎn)在于弄清三種循環(huán)結(jié)構(gòu)的相同與不同之處,準(zhǔn)確把握循環(huán)控制條件,將同一問題用不同的循環(huán)結(jié)構(gòu)處理。如把while循環(huán)的例題,改用for循環(huán)重新編寫程序,留下問題,要求學(xué)生作新的嘗試。在基本把握三種結(jié)構(gòu)之后,可以增選循環(huán)嵌套案例、分支與循環(huán)組合案例等。配合流程圖,讓學(xué)生充分理解結(jié)構(gòu)化程序設(shè)計(jì)思想和方法。
模塊化程序結(jié)構(gòu)在C語言中是用函數(shù)來實(shí)現(xiàn)的,即將復(fù)雜的C程序分為若干模塊,每個(gè)模塊都編寫成一個(gè)C函數(shù),然后通過主函數(shù)調(diào)用函數(shù)及子函數(shù)調(diào)用函數(shù)來實(shí)現(xiàn)較大型問題的C程序編寫,因此常說:C程序=主函數(shù)+子函數(shù)。該部分案例教學(xué)內(nèi)容較難,例程也較大,重點(diǎn)應(yīng)放在對函數(shù)的定義、調(diào)用、參數(shù)傳遞及函數(shù)的返回值等要點(diǎn)的理解和應(yīng)用中,例程中的函數(shù)力求簡明,在學(xué)生能充分把握之后,可以增加函數(shù)嵌套調(diào)用案例與遞歸調(diào)用案例,促進(jìn)學(xué)生進(jìn)一步鞏固提高。
自主編寫程序,大部分工作就是分析問題,找到解決問題的方法,再以相應(yīng)的編程語言寫出代碼。這就要求學(xué)生應(yīng)當(dāng)掌握一些基本算法。《C語言程序設(shè)計(jì)》教程雖以講授語言為主,其中介紹的一些簡單算法應(yīng)當(dāng)?shù)玫匠浞种匾?如兩個(gè)數(shù)的交換、三個(gè)數(shù)的比較、選擇法排序和冒泡法排序、遞推與遞歸算法等。案例教學(xué)可以作到一法多例,力求簡明、清晰,學(xué)生往往能在解誤的同時(shí)提出自已的想法,案例會(huì)在這種分析討論過程中被提高完善。好的案例教學(xué)可以讓學(xué)生接受并掌握簡單算法的思想,增強(qiáng)學(xué)生分析問題解決問題的能力。
C語言實(shí)驗(yàn)采用案例教學(xué)法后,學(xué)生普遍提高了對本課程學(xué)習(xí)的興趣,認(rèn)為編程不是枯燥的事,只要掌握了好的學(xué)習(xí)方法,通過適量的實(shí)踐,就能編寫出較好的C語言程序。
激勵(lì)機(jī)制可以引進(jìn)教學(xué)過程中。將部分程序設(shè)計(jì)題在全體學(xué)生中征集評(píng)比最優(yōu)設(shè)計(jì),在討論改進(jìn)中,教師進(jìn)行點(diǎn)評(píng),激勵(lì)學(xué)生追求完美。
基于校園網(wǎng)絡(luò)平臺(tái),加強(qiáng)師生聯(lián)系,強(qiáng)化課外輔導(dǎo)教學(xué)。網(wǎng)絡(luò)技術(shù)的成熟與普及,極大地延伸了教學(xué)空間。實(shí)驗(yàn)教學(xué)的課后輔導(dǎo)可以通過網(wǎng)絡(luò)平臺(tái)來實(shí)現(xiàn),主要方式有三種,一是建設(shè)教師個(gè)人網(wǎng)站;二是借助Internet上的諸多公共論壇和個(gè)人留言板;三是通過電子郵件。
C語言由于是面向過程的程序設(shè)計(jì)語言,所以,初學(xué)者難以掌握,字符界面和繁雜的語法規(guī)則容易讓學(xué)生失去學(xué)習(xí)興趣,影響教學(xué)質(zhì)量。針對C語言實(shí)驗(yàn)教學(xué)出現(xiàn)的各種問題,各?;蚨嗷蛏俚囟疾扇×艘恍┐胧?對原先的教學(xué)進(jìn)行了一些改革,但都無法做到一方治百病。再好的方法也只是方法,最終還是要靠人去實(shí)施,靠教師和學(xué)生共同努力才能達(dá)到預(yù)期效果。在實(shí)際的教學(xué)實(shí)踐中,應(yīng)根據(jù)具體情況采用不同的方法,師生多投入多交流,才能取得良好的整體教學(xué)效果。
[1]楊路明.C語言程序設(shè)計(jì)教程(第二版)[M].北京:北京郵電大學(xué)出版社,2005.
[2]鄧維斌,周玉敏.提高C語言實(shí)驗(yàn)教學(xué)效果的探索[J].實(shí)驗(yàn)室研究與探索,2006,25(3):359-361.
[3]尹慶莉.C語言實(shí)驗(yàn)教學(xué)改革探析[J].福建電腦,2009, (7):215.
[4]徐章艷.“C語言程序設(shè)計(jì)”實(shí)驗(yàn)教學(xué)的探討[J].電器電子教學(xué)學(xué)報(bào),2004,26(2):84-85.
[5]陳網(wǎng)鳳,張盛華,高曉蓉.程序設(shè)計(jì)語言實(shí)驗(yàn)教學(xué)模式改革初探[J].牡丹江教育學(xué)院學(xué)報(bào),2005,93(5):94-95.
Reform Exploration on the Experiment of C Language
LIU Jun
(West Anhui University,Lu’an237012,China)
This paper summarizes some problems in experience of C language programming,analysis and summary of reform exploration on the Experiment of C Language.The author proposes reform methods of case teaching of C experiment.
C language programming;experimental teaching;case teaching
TP312C
A
1009-9735(2010)02-0069-03
2010-02-26
劉鈞(1959-),男,安徽合肥人,皖西學(xué)院實(shí)驗(yàn)師,研究方向:理論物理、計(jì)算機(jī)應(yīng)用。