陸淑娟

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