摘要:針對(duì)學(xué)生在C語言程序設(shè)計(jì)學(xué)習(xí)中,在邏輯思維建立與題目分析求解方面存在的問題進(jìn)行了深入探討,提出了設(shè)問引導(dǎo)構(gòu)思法、一題多解算法比較、框架教學(xué)法、實(shí)驗(yàn)題目設(shè)計(jì)的層次化與多樣化等思想。通過多年的實(shí)踐教學(xué)表明,這些方法對(duì)提高學(xué)生學(xué)習(xí)興趣、引發(fā)學(xué)生積極思考與提高編程實(shí)踐能力有較好的效果。
關(guān)鍵詞:C語言;教學(xué)引導(dǎo);課堂教學(xué)
作者簡介:劉亞輝(1974-),女,河北任丘人,北京信息科技大學(xué)計(jì)算中心,副教授;李桂芝(1971-),女,遼寧開原人,北京信息科技大學(xué)計(jì)算中心,高級(jí)實(shí)驗(yàn)師。(北京 100192)
基金項(xiàng)目:本文系北京信息科技大學(xué)2012年度高教研究課題資助(項(xiàng)目編號(hào):2012GJYB15)、黑龍江省高等教育學(xué)會(huì)高等教育科學(xué)研究“十二五”規(guī)劃課題(項(xiàng)目編號(hào):HGJXHC110662)、黑龍江省教育科學(xué)規(guī)劃課題(項(xiàng)目編號(hào):GBD1211026)的研究成果。
中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-0079(2013)23-0080-02
C語言是大學(xué)生學(xué)習(xí)程序設(shè)計(jì)的一門入門課程,也是后續(xù)計(jì)算機(jī)專業(yè)課如數(shù)據(jù)結(jié)構(gòu)、編譯原理等課程的基礎(chǔ)。其教學(xué)目的是讓學(xué)生建立基本的編程思想、掌握程序編寫與調(diào)試的基本技能,運(yùn)用所學(xué)知識(shí)解決基本實(shí)際應(yīng)用問題,而教學(xué)目標(biāo)的實(shí)現(xiàn)應(yīng)是以激發(fā)學(xué)生學(xué)習(xí)興趣,調(diào)動(dòng)學(xué)生主動(dòng)性參與學(xué)習(xí)實(shí)踐為基礎(chǔ)。在C語言教學(xué)改革的研究中,通過比較眾多版本的優(yōu)秀教材,[1-3]不難發(fā)現(xiàn):教師在授課過程中靈活運(yùn)用教學(xué)技巧將教學(xué)內(nèi)容合理編排、授課過程中有意識(shí)進(jìn)行思維引導(dǎo)以及合理選擇與設(shè)計(jì)實(shí)驗(yàn)題目,是提高學(xué)生學(xué)習(xí)主動(dòng)性與實(shí)踐能力不可或缺的關(guān)鍵要素。而傳統(tǒng)枯燥的語法講解、快速翻閱幻燈片、擠壓式的編程訓(xùn)練會(huì)讓大一的新生們心理上畏懼與反感,教師無意識(shí)的“填鴨”教學(xué)影響了教學(xué)質(zhì)量。本文結(jié)合教學(xué)實(shí)踐,將教學(xué)過程中的一些實(shí)用教學(xué)方法以及實(shí)驗(yàn)題目層次化與多樣化設(shè)計(jì)方法進(jìn)行闡述,這些方法在激發(fā)學(xué)生學(xué)習(xí)的積極性,提高課堂教學(xué)效果上有一定的借鑒意義。
一、教學(xué)引導(dǎo)
1.從已知到未知
從已知入手,學(xué)生在高中階段已經(jīng)儲(chǔ)備了足夠的數(shù)學(xué)知識(shí),并熟悉多種函數(shù)的應(yīng)用與計(jì)算。所以在第一節(jié)課,教師不但可以演示簡單的Hello入門程序、輸入與輸出語句,而且可以配合講解并演示sin(x)、cos(x)以及l(fā)n(x)等函數(shù)的復(fù)合運(yùn)算。學(xué)生自然感悟到:原來編程可以算數(shù)學(xué)題。此外,還可以結(jié)合專業(yè)知識(shí)演示C語言的應(yīng)用,例如:結(jié)合Matlab、Opencv演示C語言在數(shù)學(xué)計(jì)算、數(shù)字圖像處理等領(lǐng)域的應(yīng)用,讓學(xué)生初步對(duì)編程的用途有所了解,這樣學(xué)生會(huì)有目的地學(xué)習(xí),而不是不知學(xué)為何用。
2.設(shè)問引導(dǎo)構(gòu)思,同步編程演示
教師在講解算法或題目時(shí),采取同步編程演示的方法要好于對(duì)幻燈片不厭其煩多次講解。可以從數(shù)學(xué)思維角度引導(dǎo)學(xué)生勾勒自己的編程思路,并配合編程,使學(xué)生比較容易理解教師的思考過程。首先,在提出問題時(shí),要先聽學(xué)生的想法,而不是填鴨式灌輸教師的思想,學(xué)生的奇思異想有時(shí)也可以開拓教師的思路,可謂教學(xué)相長。其次,在講解時(shí),可以采用設(shè)問方式引導(dǎo)學(xué)生一步步主動(dòng)而深入思考問題的求解方法。思路確定后,對(duì)于怎樣將想法演變?yōu)榇a,循序漸進(jìn)引導(dǎo)學(xué)生順理成章把想法實(shí)現(xiàn),這會(huì)讓學(xué)生增加學(xué)習(xí)的信心。例如:求10個(gè)數(shù)中的最大值問題。求解這個(gè)問題的方法不唯一,教師可以在與學(xué)生進(jìn)行算法溝通后,編程時(shí)比較不同算法(方法一、方法二,見圖1)。同時(shí),進(jìn)一步讓學(xué)生思考只用循環(huán)與用數(shù)組求解的不同之處,最小值、求和以及平均值的求法,舉一反三,程序該如何修改?
3.算法比較,一題多解
學(xué)生在上機(jī)時(shí),會(huì)對(duì)同一題目寫出多樣的程序,注重不同算法的比較,一題多解,有助于學(xué)生學(xué)習(xí)好的算法,同時(shí)也尊重了學(xué)生的獨(dú)立思維。例如:輸入500個(gè)0-20的整數(shù),統(tǒng)計(jì)每個(gè)數(shù)出現(xiàn)的次數(shù)。可以引導(dǎo)學(xué)生思考:循環(huán)多少次?怎樣統(tǒng)計(jì)個(gè)數(shù)?根據(jù)已學(xué)知識(shí)只用if語句可行嗎?與循環(huán)語句結(jié)合該怎樣寫?比較圖2所示(a)、(b)、(c)三個(gè)算法,可以看出(c)算法較好。
4.框架結(jié)構(gòu)法
在讀程序時(shí),初學(xué)者容易混淆語句間的關(guān)系,在if語句與循環(huán)語句同時(shí)出現(xiàn)時(shí),除了借助流程圖外還可以輔助框架結(jié)構(gòu),將循環(huán)語句、if、switch以及其所屬語句關(guān)系用框架分割,以幫助學(xué)生理解復(fù)雜程序。
5.循序漸進(jìn),任務(wù)驅(qū)動(dòng),“滾雪球”式學(xué)習(xí)
對(duì)授課者來說,在有限的學(xué)時(shí)內(nèi)完成授課,若再進(jìn)行一定的綜合題目訓(xùn)練是有一定難度的。但是,可將綜合問題化解到各章。在講解輸入、輸出語句的使用后就可以讓學(xué)生完成簡單的菜單顯示;在講選擇時(shí),可以進(jìn)一步進(jìn)行菜單的選擇設(shè)計(jì);在講循環(huán)時(shí),再添入某一位學(xué)生的各門課成績累加求和、求平均值;在講解數(shù)組后就可對(duì)多位學(xué)生的成績求和、求平均、求最值;講函數(shù)后可以進(jìn)一步將程序模塊化,包括數(shù)據(jù)錄入、查詢、修改、刪除,統(tǒng)計(jì)計(jì)算等;講授結(jié)構(gòu)體、文件與鏈表后,可以建立存儲(chǔ)學(xué)生的信息、動(dòng)態(tài)結(jié)點(diǎn)訪問。隨著對(duì)學(xué)生成績管理系統(tǒng)功能的逐步完善,學(xué)生對(duì)運(yùn)用程序開發(fā)設(shè)計(jì)不但有了基本的認(rèn)識(shí),同時(shí)通過教師有意識(shí)的串聯(lián)講解,也可讓學(xué)生在有限的課時(shí)內(nèi)完成綜合題目的練習(xí)。[4]
二、實(shí)踐設(shè)計(jì)
C語言實(shí)驗(yàn)教學(xué)平臺(tái)能夠完成學(xué)生題目的自動(dòng)判題,有效促進(jìn)了程序語言的教學(xué)改革。但是,題目的選擇與題型設(shè)計(jì)對(duì)教學(xué)平臺(tái)的設(shè)計(jì)提出了更高的要求。
1.實(shí)驗(yàn)題目層次化選擇
在學(xué)習(xí)編程時(shí),學(xué)生理解接受知識(shí)的能力是有差別的。在設(shè)計(jì)題目與設(shè)置要求時(shí),對(duì)少數(shù)有編程基礎(chǔ)的學(xué)生,可提出與解決實(shí)際問題難度適中的題目;對(duì)初次接觸程序但理解能力較強(qiáng)的學(xué)生,可將布置的題目逐步引申,促使學(xué)生循序漸進(jìn)對(duì)所學(xué)知識(shí)點(diǎn)加深理解;對(duì)編程入門較困難的學(xué)生,鼓勵(lì)其用課堂所學(xué)語句模仿編程,以幫助學(xué)生消化理解所學(xué)內(nèi)容,并掌握基本的程序調(diào)試方法。
2.實(shí)驗(yàn)題型多樣化設(shè)計(jì)
C語言實(shí)驗(yàn)教學(xué)平臺(tái)主要以選擇題與編程題為主。在題目設(shè)計(jì)中還可以適當(dāng)根據(jù)知識(shí)點(diǎn)添加程序改錯(cuò)或填空題型,以提高程序調(diào)試能力并降低部分題目的編程難度。除了基礎(chǔ)的編程題型外,還可設(shè)計(jì)有趣的題目,解決如:歌手大獎(jiǎng)賽、青蛙過河、對(duì)聯(lián)文字逆序輸出、密碼破解以及手機(jī)通訊錄等實(shí)際問題。
3.小組協(xié)作互助學(xué)習(xí)
有的學(xué)生比較內(nèi)向,遇到困難時(shí)一般不會(huì)主動(dòng)求助于教師。在上機(jī)時(shí),如果讓快速完成題目的學(xué)生協(xié)助完成,不但增強(qiáng)了他們的自信心,也有助于這些學(xué)生的問題能夠得到及時(shí)解決與反饋。此外,還可以適當(dāng)布置有一定綜合性的題目,讓每組對(duì)題目進(jìn)行模塊劃分,討論、協(xié)作完成并在課堂講解,教師進(jìn)行即時(shí)點(diǎn)評(píng),這樣可以激發(fā)學(xué)生學(xué)習(xí)的興趣與主動(dòng)性,并使教師及時(shí)了解學(xué)生對(duì)知識(shí)點(diǎn)的掌握情況。
4.改革考核方式
在期末考核中,應(yīng)逐步加大上機(jī)考試,尤其是平時(shí)實(shí)驗(yàn)成績?cè)谄谀┏煽冎械谋壤@也是督促學(xué)生重視編程實(shí)踐的方法之一。
三、結(jié)論
本文對(duì)C語言教學(xué)中引導(dǎo)學(xué)生問題求解構(gòu)思、算法比較、框架輔助教學(xué)、實(shí)驗(yàn)題目層次化設(shè)計(jì)、題型多樣化設(shè)計(jì)等方面進(jìn)行了闡述,這些方法對(duì)激發(fā)學(xué)生學(xué)習(xí)興趣,提高編程實(shí)踐的主動(dòng)性與培養(yǎng)編程能力有一定的效果。
參考文獻(xiàn):
[1]譚浩強(qiáng).C程序設(shè)計(jì)[M].第三版.北京:清華大學(xué)出版社,2007.
[2]何欽銘,顏暉.C語言程序設(shè)計(jì)[M].北京:高等教育出版社,2008.
[3]蘇小紅,孫志崗.C語言大學(xué)實(shí)用教程[M].北京:電子工業(yè)出版社,2012.
[4]陳婷.C語言程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)改革與探究[J].實(shí)驗(yàn)技術(shù)與管理,2010,27(10):182-184.
(責(zé)任編輯:劉輝)