吳海峰,連 飛,朱世娟
(安慶師范學(xué)院1.計(jì)算機(jī)與信息學(xué)院,2.教務(wù)處,安徽安慶 246133)
“C語(yǔ)言”漸進(jìn)式案例驅(qū)動(dòng)教學(xué)法
吳海峰1,連 飛2,朱世娟1
(安慶師范學(xué)院1.計(jì)算機(jī)與信息學(xué)院,2.教務(wù)處,安徽安慶 246133)
C語(yǔ)言是程序設(shè)計(jì)的入門(mén)課程。首先分析指出C語(yǔ)言教學(xué)中出現(xiàn)的弊端,然后提出應(yīng)用漸進(jìn)式案例驅(qū)動(dòng)教學(xué)法可以消除這些弊端,最后舉兩例進(jìn)行說(shuō)明。教學(xué)實(shí)踐表明,漸進(jìn)式案例驅(qū)動(dòng)教學(xué)法的教學(xué)效果較好,學(xué)生對(duì)算法的掌握程度和動(dòng)手編程解決實(shí)際問(wèn)題的能力得到很大提高。
C語(yǔ)言;教學(xué)法;漸進(jìn)式;案例驅(qū)動(dòng)
C語(yǔ)言作為一門(mén)程序設(shè)計(jì)的入門(mén)課程,其實(shí)踐性極強(qiáng),傳統(tǒng)“純理論式”教學(xué)方法、課程考核方式、學(xué)時(shí)等多種因素導(dǎo)致教學(xué)過(guò)程中出現(xiàn)了一些弊端[1-4]:重語(yǔ)法,輕算法。傳統(tǒng)的C語(yǔ)言教學(xué)通常首先介紹某一知識(shí)點(diǎn),然后講解該知識(shí)點(diǎn)的語(yǔ)法形式和含義,最后舉例說(shuō)明。這種教材的語(yǔ)法闡述非常詳細(xì),信息量大,適合作為學(xué)習(xí)的工具書(shū)。然而“算法是程序設(shè)計(jì)的靈魂”,學(xué)習(xí)C語(yǔ)言的真正目的是為了用它解決實(shí)際問(wèn)題。傳統(tǒng)的教學(xué)方法十分重視語(yǔ)法,卻忽視了算法,教出來(lái)的學(xué)生可能會(huì)讀懂程序,但遇到問(wèn)題需要自己解決時(shí)卻無(wú)從下手。重考試,輕應(yīng)用。很多普通高校將通過(guò)全國(guó)計(jì)算機(jī)等級(jí)考試或者省級(jí)計(jì)算機(jī)水平考試作為C語(yǔ)言課程考核標(biāo)準(zhǔn)。這種做法有利有弊,有利的是實(shí)現(xiàn)了教考分離,學(xué)生可以獲得一個(gè)證書(shū),弊端就是可能導(dǎo)致老師的教學(xué)和學(xué)生的學(xué)習(xí)都以考試為導(dǎo)向,考的講不考的不講,考得多的多講,考得少的少講,反而忽視了C語(yǔ)言的實(shí)際應(yīng)用問(wèn)題。重理論,輕實(shí)驗(yàn)。C語(yǔ)言是一門(mén)實(shí)踐性強(qiáng)的課程,上機(jī)實(shí)驗(yàn)是學(xué)習(xí)的一個(gè)重要和必要的環(huán)節(jié)。然而很多學(xué)校開(kāi)設(shè)的實(shí)驗(yàn)課時(shí)不足,學(xué)生上機(jī)時(shí)滿(mǎn)足于把課本上的代碼輸入計(jì)算機(jī)運(yùn)行一下,設(shè)計(jì)性和綜合性的實(shí)驗(yàn)做得很少。學(xué)生將C語(yǔ)言的學(xué)習(xí)方法等同于高等數(shù)學(xué)的學(xué)習(xí)方法,把大量時(shí)間花在做練習(xí)題上,對(duì)上機(jī)實(shí)驗(yàn)的重視程度不夠。
基于這種情況,結(jié)合多年教學(xué)實(shí)踐,本文總結(jié)出一種“漸進(jìn)式案例驅(qū)動(dòng)教學(xué)法”。該教學(xué)法吸收了“漸進(jìn)式教學(xué)法”[5]和“案例驅(qū)動(dòng)教學(xué)法”[6]各自的優(yōu)點(diǎn),嘗試運(yùn)用漸進(jìn)式案例驅(qū)動(dòng)教學(xué)法,具有如下含義:(1)在實(shí)施案例驅(qū)動(dòng)教學(xué)法時(shí),將復(fù)雜案例的難點(diǎn)進(jìn)行分解,由淺入深,由易到難,這也符合學(xué)習(xí)的規(guī)律;(2)在學(xué)生完成案例后,教師對(duì)理論知識(shí)進(jìn)行系統(tǒng)總結(jié)歸納,進(jìn)行升華,采取漸進(jìn)式教學(xué)法。
設(shè)計(jì)案例時(shí)主要考慮以下幾點(diǎn):(1)所選案例必須涵蓋相關(guān)知識(shí)點(diǎn);(2)案例的難易程度適當(dāng),符合學(xué)生的知識(shí)水平;(3)案例要有典型性,可以舉一反三;(4)案例要由易到難,循序漸進(jìn)。例如,在講授循環(huán)結(jié)構(gòu)時(shí),可以選擇“求多項(xiàng)式之和”的典型案例,設(shè)計(jì)多個(gè)相互關(guān)聯(lián)、難度逐步增加的案例,可以鍛煉學(xué)生的觀察問(wèn)題和分析問(wèn)題的能力,從而達(dá)到舉一反三、事半功倍的效果。案例設(shè)計(jì)過(guò)程如下。
設(shè)計(jì)原則:通過(guò)案例讓學(xué)生理解循環(huán)通常由初始化部分、循環(huán)體部分、循環(huán)控制部分組成,每個(gè)部分的功能及在整個(gè)循環(huán)結(jié)構(gòu)中的作用。
設(shè)計(jì)案例(1):求1+2+3+4+……+n的值。
案例分析:案例(1)是一個(gè)典型的累加求和問(wèn)題,可以通過(guò)模擬計(jì)算器的計(jì)算過(guò)程來(lái)實(shí)現(xiàn)。首先定義一個(gè)變量sum來(lái)暫存得到累加和,開(kāi)始計(jì)算時(shí),sum=0,然后依次將1,2,3,……,n累加到sum中,最后得到的sum值即為所求結(jié)果。通過(guò)觀察可以發(fā)現(xiàn),每次計(jì)算做加法時(shí),除了所加值不一樣,其余部分都相同。這樣可以設(shè)置一個(gè)變量i來(lái)保存所加值,i的值從1逐步變化到n,每次執(zhí)行sum=sum+i進(jìn)行累加后,將i的值加1(i+ +)即可。通過(guò)分析得到如下程序段:
最后根據(jù)案例程序總結(jié)得出for循環(huán)的一般形式及各部分的功能,進(jìn)而推廣到for循環(huán)的變形形式。
課堂教學(xué)是整個(gè)過(guò)程中非常重要的一環(huán)。教師通過(guò)案例,逐步引導(dǎo)學(xué)生學(xué)會(huì)獨(dú)立思考問(wèn)題、分析問(wèn)題、解決問(wèn)題的能力。教師作為課堂的設(shè)計(jì)者和掌控者,要起到引導(dǎo)和控制的作用,使學(xué)生從被動(dòng)接受知識(shí)到主動(dòng)獲取知識(shí),充分發(fā)揮學(xué)生的主觀能動(dòng)性和積極性,激發(fā)學(xué)生的思考能力,使整個(gè)課堂活躍起來(lái)。例如,在講授選擇排序算法時(shí),在案例設(shè)計(jì)時(shí)將這個(gè)問(wèn)題分解成以下5個(gè)案例,由易到難,再逐個(gè)解決,選擇法排序的原理和過(guò)程就一目了然。
案例(2)輸入10個(gè)數(shù),求最小值。
從已經(jīng)學(xué)過(guò)的案例:求三個(gè)數(shù)的最小值引入,從已知到未知,承前啟后,過(guò)渡到新的知識(shí)點(diǎn)。
案例(3)輸入n(n<10),再輸入n個(gè)數(shù),求最小值。
將數(shù)的個(gè)數(shù)由固定到從鍵盤(pán)靈活輸入,從不變到變。注意定義數(shù)組的長(zhǎng)度不能為變量,可以把長(zhǎng)度定義為10。
案例(4)輸入n(n<10),再輸入n個(gè)數(shù),輸出最小值和它所對(duì)應(yīng)的下標(biāo)。
將最小值的表示方式過(guò)渡到采用數(shù)組下標(biāo)的方式,知道下標(biāo)即可輸出對(duì)應(yīng)數(shù)組元素。
案例(5)輸入n(n<10),再輸入n個(gè)數(shù),將最小值與第一個(gè)數(shù)交換,輸出交換后的n個(gè)數(shù)。首先判斷最小值對(duì)應(yīng)下標(biāo)是否等于0,若相等則不須進(jìn)行交換。
案例(6)輸入n(n<10),再輸入n個(gè)數(shù),用選擇法將它們從小到大排序后輸出。
有前面的案例作為鋪墊,再結(jié)合圖1舉例說(shuō)明選擇排序算法的過(guò)程,選擇法排序就變得相對(duì)容易理解。
圖1 選擇排序算法過(guò)程
最后,在學(xué)生基本完成的基礎(chǔ)上,老師給出一個(gè)相對(duì)規(guī)范的程序段作參考,具體如下。
在學(xué)生完成案例后,教師及時(shí)進(jìn)行評(píng)價(jià),將案例中用到的知識(shí)和方法進(jìn)行總結(jié)延伸。同時(shí),對(duì)理論知識(shí)進(jìn)行系統(tǒng)總結(jié)歸納,進(jìn)行升華,形成完整的知識(shí)體系。例如,在完成案例(1)后,對(duì)學(xué)生的完成情況進(jìn)行點(diǎn)評(píng),總結(jié)for循環(huán)的一般形式,進(jìn)而理解循環(huán)的本質(zhì),再推廣到其他形式的循環(huán)結(jié)構(gòu)(while循環(huán)、do-while循環(huán))。
教學(xué)實(shí)踐表明,漸進(jìn)式案例驅(qū)動(dòng)教學(xué)法具有如下優(yōu)點(diǎn):
(1)注重算法分析能力的培養(yǎng)。在教師給出案例后,學(xué)生自己分析,教師從旁引導(dǎo),最終得出解題思路,再利用C語(yǔ)言編程實(shí)現(xiàn)。在分析問(wèn)題和解決問(wèn)題的過(guò)程中,不知不覺(jué)學(xué)會(huì)了算法分析。
(2)注重解決實(shí)際問(wèn)題能力的培養(yǎng)。教學(xué)中所用案例,很多都是實(shí)際問(wèn)題或者從實(shí)際問(wèn)題中提煉引申出來(lái)的,在解決這些案例的過(guò)程中,學(xué)生提高了解決實(shí)際問(wèn)題的能力。
(3)注重動(dòng)手編程能力的培養(yǎng)。在教學(xué)過(guò)程中,選取部分案例,留給學(xué)生課后和上機(jī)實(shí)驗(yàn)時(shí)完成,下次課堂上采用提問(wèn)的方式進(jìn)行抽查,既鍛煉了學(xué)生的動(dòng)手編程能力,又了解了學(xué)生的學(xué)習(xí)狀況,及時(shí)調(diào)整教學(xué)內(nèi)容和教學(xué)計(jì)劃。
漸進(jìn)式案例驅(qū)動(dòng)教學(xué)法吸收案例驅(qū)動(dòng)教學(xué)法[7]的優(yōu)點(diǎn),將枯燥的語(yǔ)法知識(shí)融合到案例中進(jìn)行講解,在學(xué)習(xí)理論知識(shí)的同時(shí)學(xué)會(huì)應(yīng)用,避免學(xué)用脫節(jié),又遵循循序漸進(jìn)的學(xué)習(xí)規(guī)律,將案例中的難點(diǎn)問(wèn)題逐步分解,由易到難,環(huán)環(huán)相扣,讓學(xué)生易于接受。
[1]劉芳,秦興國(guó),王宇英.《C語(yǔ)言程序設(shè)計(jì)》教學(xué)存在的問(wèn)題及改進(jìn)[J].教育理論與實(shí)踐,2012,32(36):51-52.
[2]丁海燕.高級(jí)語(yǔ)言程序設(shè)計(jì)教學(xué)重點(diǎn)與課程改革[J].云南農(nóng)業(yè)大學(xué)學(xué)報(bào),2012,6(6):76-79.
[3]丁麗.項(xiàng)目驅(qū)動(dòng)式教學(xué)法在C語(yǔ)言教學(xué)中的應(yīng)用[J].信息技術(shù)與信息化,2012,(5):33-35.
[4]王平勤,董付國(guó),原達(dá).在C語(yǔ)言教學(xué)中注重培養(yǎng)學(xué)生算法分析的能力[J].微型機(jī)與應(yīng)用(增刊),2007(6):211-213.
[5]崔松健.漸進(jìn)式與項(xiàng)目式教學(xué)方法在《網(wǎng)頁(yè)設(shè)計(jì)技術(shù)》教學(xué)中的融合[J].電腦知識(shí)與技術(shù),2010,6(33):9375-9376.
[6]曹風(fēng)華.案例驅(qū)動(dòng)教學(xué)法在《計(jì)算機(jī)應(yīng)用基礎(chǔ)》課程中的應(yīng)用[J].現(xiàn)代計(jì)算機(jī),2012(12):41-43.
[7]蔡慶華,王一賓,程一飛.案例式C語(yǔ)言程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2012:144-149.
Application of Gradual Case-driven Teaching Method in C Language Teaching
WU Hai-feng1,LIAN Fei2,ZHU Shi-juan1
(1.School of Computer and Information,2.Teaching Affairs Office,Anqing Teachers College,Anqing 246133,China)
C language is an introductory course of programming.First,the drawbacks of C language teaching are pointed out by analyzing.Then,it is proposed that the application of gradual case-driven teachingmethod can remove these drawbacks.Finally,two examples are given.Teaching practice shows that the teaching effect of gradual case-driven teaching method is better;students′ability to learn algorithms and solve practical problems by programming has been greatly improved.
C Language,teachingmethod,gradual,case-driven
G642
A
1007-4260(2014)03-0135-03
時(shí)間:2014-9-15 16:07 網(wǎng)絡(luò)出版地址:http://www.cnki.net/kcms/doi/10.13757/j.cnki.cn34-1150/n.2014.03.033.html
2014-01-27
安徽省2012年重點(diǎn)教學(xué)研究項(xiàng)目(2012jyxm351)資助。
吳海峰,男,安徽宿松人,碩士,安慶師范學(xué)院計(jì)算機(jī)與信息學(xué)院講師,研究方向?yàn)闇y(cè)試數(shù)據(jù)壓縮、計(jì)算機(jī)教育。
安慶師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2014年3期