陸淑娟
摘 要 文章針對C語言教學(xué)的現(xiàn)狀,將任務(wù)驅(qū)動法應(yīng)用于C語言教學(xué)過程中,充分發(fā)揮教師主導(dǎo)和學(xué)生的主體作用,培養(yǎng)學(xué)生學(xué)習(xí)興趣及分析解決問題的能力,切實提高教學(xué)效果。
關(guān)鍵詞 任務(wù)驅(qū)動法 C語言 程序設(shè)計 案例教學(xué)
中圖分類號:G424 文獻標識碼:A DOI:10.16400/j.cnki.kjdks.2016.05.057
Abstract In view of the status of C language teaching, task-driven method will be applied to the teaching process. Because of this, task-driven method can play teacher-led and student-centered, and improve students' interest in learning and analytical problem-solving skills. Practice has proved that the application of the teaching method was beneficial to achieve good teaching results.
Key words task-driven method; C language; program design; case teaching
1 C語言教學(xué)現(xiàn)狀
C語言作為計算機編程的一種常用語言,具有語言功能豐富、使用靈活、程序的可移植性好、執(zhí)行效率高等優(yōu)點。①目前,很多高校都將C語言程序設(shè)計作為一門重要的計算機基礎(chǔ)課來開設(shè)。然而,在教學(xué)中,大多采用傳統(tǒng)的教學(xué)方式,以教師的教為中心,學(xué)生處于被動接收狀態(tài),學(xué)習(xí)缺乏主動性,整體學(xué)習(xí)效果不理想。由于C語言的語法細節(jié)多,很多教師都做到了面面俱到,學(xué)生初學(xué)時會覺得枯燥無味,當(dāng)學(xué)生被大量的語法細節(jié)淹沒時,對后續(xù)的編程階段也產(chǎn)生了很大的負面作用,很多學(xué)生只是簡單模仿。這就造成了這樣一種現(xiàn)象,對于教師的講解能聽懂,但是遇到問題不會獨立思考。而隨著需要解決的問題越來越復(fù)雜,學(xué)生的挫敗感也越來越強,最終導(dǎo)致對課程完全失去興趣。
因此,改進教學(xué)方式,提高學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的編程能力,對于提高C語言的教學(xué)質(zhì)量具有重要意義。
2 任務(wù)驅(qū)動教學(xué)法
建構(gòu)主義學(xué)習(xí)理論認為應(yīng)當(dāng)將學(xué)生作為教學(xué)的主體,強調(diào)學(xué)習(xí)是一個主動的過程,而教師作為教學(xué)的引導(dǎo)者,激發(fā)學(xué)生的學(xué)習(xí)動機。②“任務(wù)驅(qū)動教學(xué)法”正是一種建立在建構(gòu)主義學(xué)習(xí)理論基礎(chǔ)上的教學(xué)法,它認為教學(xué)應(yīng)當(dāng)以解決問題、完成任務(wù)為主,使學(xué)生處于積極的學(xué)習(xí)狀態(tài),主動去探究,通過對問題的理解提出解決方案,在解決問題的過程中獲得新經(jīng)驗,再和原有的知識經(jīng)驗相互作用,從而不斷地充實豐富自己的知識體系。③
C語言的教學(xué)目標正是需要學(xué)生可以獨立地進行編程,解決一個個的問題,為將來軟件的開發(fā)打下扎實的基礎(chǔ)。在C語言程序設(shè)計的教學(xué)過程中引進任務(wù)驅(qū)動教學(xué)法,可以使學(xué)生在一個個有趣的任務(wù)下展開學(xué)習(xí),當(dāng)一個任務(wù)完成時,學(xué)生會獲得成就感,繼而可以更有學(xué)習(xí)的動力和信心,逐步形成良性循環(huán),最終培養(yǎng)學(xué)生獨立探索、解決問題的能力,能真正運用好C語言技術(shù)。
3 任務(wù)驅(qū)動法教學(xué)設(shè)計
在將任務(wù)驅(qū)動法應(yīng)用到教學(xué)中時,基本包含以下四個部分:任務(wù)的設(shè)計、任務(wù)的分析、任務(wù)的實施和任務(wù)的評價。④四個部分相輔相成,貫穿于整個教學(xué)過程中。
其中,任務(wù)的設(shè)計非常重要,可以說是任務(wù)驅(qū)動教學(xué)中最為關(guān)鍵的一步,任務(wù)設(shè)計的好壞直接決定了教學(xué)目標是否能成功實現(xiàn)。在設(shè)計時,要根據(jù)不同的章節(jié)、涵蓋的知識點等內(nèi)容設(shè)置不同的任務(wù)。要以激發(fā)學(xué)生的學(xué)習(xí)興趣為出發(fā)點,對于學(xué)生來說,如果任務(wù)太難會打擊積極性,太容易又會失去求知欲,所以,要特別注意任務(wù)的合理性、層次性、趣味性、知識面的覆蓋性,遵循從簡單逐漸過渡到復(fù)雜的原則,及時將難點與重點分散,充分調(diào)動學(xué)生的好奇心和求知欲。
例如,在講解循環(huán)時,可以用求一個正整數(shù)的逆數(shù)的例子。這時候就可以分層次地設(shè)計任務(wù)。從易到難,設(shè)計成遞進形式。任務(wù)設(shè)計如下:
(1)先求一個三位正整數(shù)的逆(輸入365,輸出563)。
(2)求一個四位正整數(shù),或者五位正整數(shù)的逆數(shù)。
(3)不限定位數(shù),求任意一個正整數(shù)的逆數(shù)。
接下來是任務(wù)的分析和實施。從第一層任務(wù)開始,對于明確的三位數(shù),學(xué)生們都會采用將百,十,個位數(shù)一個個分離出來再重組成一個數(shù)的方法,盡管算式不太一樣,但基本方法都一致,核心代碼類似如下:
a=x/100;
b=(x-a*100)/10;
c=x % 10;
y=c*100+b*10+a;
在三位數(shù)已經(jīng)解決的基礎(chǔ)上,進行任務(wù)(2),繼續(xù)將問題擴展到四位數(shù),或者五位數(shù),這時,大部分學(xué)生會繼續(xù)沿用三位數(shù)的解決方法,定義4個或者5個變量存放不同位上的數(shù)再重新組合,但也有學(xué)生開始思考如果一個數(shù)很大、位數(shù)很多的時候,這種方法是否合適。
對于完成的任務(wù)教師作出評價和總結(jié),肯定正確的思路,并拋出新的問題,將任務(wù)(3)提出,給出一個正整數(shù),不限定位數(shù),如何求?學(xué)生們開始思考、分析、討論,有學(xué)生會提出先計算一個數(shù)的位數(shù),然后再采用上述的方法,但隨即就會有其他學(xué)生否定,認為這種方法太過繁瑣,當(dāng)位數(shù)很多的時候需要定義很多的變量,很多的計算式,幾乎是人工完成計算,不能稱之為算法。
這個時候,舊的知識已經(jīng)不夠,教師就可以對任務(wù)作出分析,引導(dǎo)、提示學(xué)生,對于任意一個數(shù)都可以很方便求出的應(yīng)該是個位數(shù),只要對10取余就可以,而接下來如何讓原本的十位數(shù)、百位數(shù)等也成為個位數(shù)呢?學(xué)生在思考討論后得出結(jié)論,假設(shè)變量為x,對它重復(fù)進行a = x%10,x = x/10的運算,直到x=0為止,就可以將一個數(shù)的各位全部分離出來。教師對此可作出評價和反饋,肯定學(xué)生正確的思路,到此為止,問題解決了一半,學(xué)生的興趣也被充分地調(diào)動起來,教師就可以繼續(xù)分析,提示學(xué)生,如果說整除10可以將一個數(shù)的高位逐漸移到低位,那么每次取余的數(shù)如何將它逐漸移到高位去呢?根據(jù)上面的分析,學(xué)生可以很容易得出y = y*10+a的式子。這個時候,教師就可以把while循環(huán)的一般形式作出介紹,學(xué)生很容易就能寫出程序段如下:
while(x>0)
{
a=x%10;
x=x/10;
y=y*10+a;
}
這樣就很自然地從舊的知識過渡到了新的知識,在對任務(wù)作出總結(jié)后,教師再繼續(xù)講解while循環(huán)的結(jié)構(gòu),使用時的一些注意事項等內(nèi)容,學(xué)生就能很快地接受新知識。這個例子體現(xiàn)了任務(wù)的層次性,從易到難,從特殊到一般,在這里涵蓋了基本的算術(shù)運算和循環(huán)的知識點。學(xué)生在一步步解決問題的過程中體會到了樂趣,也對新知識的掌握更加牢固了。
除了層次性以外,也可以設(shè)計一些趣味性的任務(wù),讓學(xué)生感覺在玩中學(xué),帶著興趣去思考,效果自然會好于只接受枯燥的理論知識。例如,在講解數(shù)組時設(shè)計猜數(shù)字的游戲任務(wù)來引入二分法查找,在講解循環(huán)時提出“雞兔同籠”問題,講解迭代法時提出“兔子生小兔子”(斐波拉契數(shù)列)問題,講解遞歸時提出小猴子吃桃問題,等等。讓學(xué)生在一次次完成有趣的任務(wù)時自然地接受新知識,往往會事半功倍。
回顧上面的教學(xué)案例,可以將任務(wù)驅(qū)動法歸納為一個教學(xué)設(shè)計流程圖。如圖1所示。
可以注意到,在以上任務(wù)實施的過程中也包含了任務(wù)的分析。對任務(wù)的分析應(yīng)具有針對性和啟發(fā)性,鼓勵學(xué)生自己思考,自己解決問題。當(dāng)學(xué)生提出思路和想法時,盡量順著學(xué)生的思路去分析,肯定其中正確的方法,對于錯誤的方案要指出原因或者直接采用錯誤思路得出結(jié)果,然后反過來讓學(xué)生去找出錯誤的原因,并且讓學(xué)生自己去繼續(xù)修正。這樣既提高了學(xué)生分析問題、解決問題的能力,同時也充分鼓勵了學(xué)生的創(chuàng)新意識。
同樣,對任務(wù)的評價和反饋也貫穿其中,對于積極思考、順利完成的學(xué)生給予充分的肯定,對于沒有完成的學(xué)生也要給予鼓勵和幫助。對于任務(wù)完成時采用的各種方法都給予一定的點評,表揚有創(chuàng)新的學(xué)生。另外,在總結(jié)的過程中也要注意查漏補缺,讓學(xué)生了解自己掌握的知識和進度。同時將完成任務(wù)的過程中出現(xiàn)的普遍問題再次強調(diào)、講解,幫助學(xué)生理清脈絡(luò),達到鞏固已有知識點的目的,并能掌握新的知識點。
4 結(jié)論
與傳統(tǒng)的教學(xué)模式相比,任務(wù)驅(qū)動模式優(yōu)勢明顯,在這種教學(xué)方式下,學(xué)生成為了學(xué)習(xí)的主體,學(xué)生主動參與、不斷地探索創(chuàng)新,很大程度上調(diào)動了學(xué)生的學(xué)習(xí)積極性,提高了學(xué)生獨立分析和解決問題的能力,同時也充分促進了師生互動。當(dāng)然,在這種模式下也要注意任務(wù)的量和難度,避免有學(xué)生“吃不飽”,有學(xué)生“吃不下”。
通過教學(xué)實踐表明,任務(wù)驅(qū)動教學(xué)法在C語言教學(xué)中的應(yīng)用效果良好,是一種高效可行的教學(xué)方法。隨著教學(xué)改革的不斷深入,這種教學(xué)法將會得到更為廣泛的應(yīng)用。
注釋
① 譚浩強.C程序設(shè)計(第4版)[M].北京:清華大學(xué)出版社,2013.
② 肖曉霞,羅鐵清.建構(gòu)主義學(xué)習(xí)理論在C語言教學(xué)中的應(yīng)用研究[J].湖南師范大學(xué)教育科學(xué)學(xué)報,2012(6):100-102,120.
③ 林惠標.任務(wù)驅(qū)動法在C程序設(shè)計教學(xué)中的應(yīng)用[J].新課程研究(中旬刊),2011(5):98-100.
④ 楊冬風(fēng),陳爭光.任務(wù)驅(qū)動式教學(xué)模式在C語言程序設(shè)計課程中的應(yīng)用[J].現(xiàn)代農(nóng)業(yè)科技,2015(4):326-327.