呂俊龍,陳春燕
(1.蚌埠學(xué)院 計算機科學(xué)與技術(shù)系,安徽 蚌埠 233030;2.蚌埠醫(yī)學(xué)院 計算機教研室,安徽 蚌埠 233030)
任務(wù)驅(qū)動式C語言程序設(shè)計教學(xué)方法實踐
呂俊龍1,陳春燕2
(1.蚌埠學(xué)院 計算機科學(xué)與技術(shù)系,安徽 蚌埠 233030;2.蚌埠醫(yī)學(xué)院 計算機教研室,安徽 蚌埠 233030)
C語言作為計算機專業(yè)的基礎(chǔ)課程,對激發(fā)學(xué)生的編程興趣,養(yǎng)成良好的編程習(xí)慣,有著至關(guān)重要的作用.研究這門課程的教學(xué)方法對于提高教學(xué)質(zhì)量和學(xué)生的專業(yè)技能都有著重要的意義.本文研究任務(wù)驅(qū)動式教學(xué)法,從任務(wù)設(shè)計、任務(wù)分析、任務(wù)實施和任務(wù)評價四個方面介紹任務(wù)驅(qū)動教學(xué)法,對任務(wù)驅(qū)動模式在計算機教學(xué)中的運用做了分析和闡述,實踐表明,任務(wù)驅(qū)動法應(yīng)用于C語言的教學(xué)效果良好.
任務(wù)驅(qū)動;C語言;程序設(shè)計;教學(xué)方法
教學(xué)方法是教師和學(xué)生為了實現(xiàn)共同的教學(xué)目的,完成共同的教學(xué)任務(wù),在教學(xué)過程中運用的方式和手段的總稱[1].根據(jù)不同的教學(xué)內(nèi)容選擇不同的教學(xué)方法,不同學(xué)科的知識內(nèi)容和學(xué)習(xí)要求不同,一門學(xué)科的不同階段的內(nèi)容與要求也不一致,這些都要求教學(xué)方法的學(xué)則具有多樣性和靈活性.
C語言程序設(shè)計是計算機程序設(shè)計的基礎(chǔ)課程,是計算機等相關(guān)專業(yè)的專業(yè)課,學(xué)習(xí)本門課程的目地,主要激發(fā)學(xué)生的編程興趣,養(yǎng)成良好的編程習(xí)慣.當(dāng)前主流語言很多是從C語言衍生出來的,如:C++,C#等,C語言是編程的基礎(chǔ).目前,C語言的教學(xué)存在有很多弊端,導(dǎo)致學(xué)生學(xué)習(xí)積極性不高,學(xué)習(xí)效率低下.C語言程序設(shè)計課程是語法和算法相結(jié)合的一門課程,教師授課往往會把重點放在學(xué)生不感興趣的語法規(guī)則上,以講授理論為主,上機練習(xí)只是驗證理論的手段.C語言是一門實踐性很強的課程,學(xué)生上實驗課前不做任何準(zhǔn)備,對要調(diào)試的程序不理解,程序出錯后沒有分析錯誤的能力,把上機調(diào)試程序變成打字練習(xí).本文結(jié)合時間教學(xué)經(jīng)驗,提出采用任務(wù)驅(qū)動教學(xué)模式[2]改善教學(xué)環(huán)節(jié)的效果,并將其應(yīng)用于實踐,取得了較好的效果.
C語言的知識點比較零碎,如果剛開始就讓學(xué)生記各種語法,學(xué)生會誤認(rèn)為學(xué)習(xí)C語言和其他的記憶類課程沒有區(qū)別,而且容易失去興趣.剛開始給學(xué)生講解時,應(yīng)該以解決某個問題,實現(xiàn)某項任務(wù)為驅(qū)動,從而展開各個知識點.
“任務(wù)驅(qū)動教學(xué)法”是一種建立在建構(gòu)主義理論基礎(chǔ)上的教學(xué)方法[3],將以傳授知識為主的教學(xué)理念,轉(zhuǎn)變?yōu)橐越鉀Q問題,完成任務(wù)為主的多維互動式的教學(xué)理念,讓學(xué)生在完成任務(wù)的同時獲得知識.將一節(jié)課的教學(xué)目標(biāo)和教學(xué)內(nèi)容通過一項或幾項具體任務(wù)的完成來實現(xiàn).這種教學(xué)方式以學(xué)生為主體,教師為主導(dǎo),有利于培養(yǎng)學(xué)生的發(fā)散性思維、和創(chuàng)造性思維.任務(wù)驅(qū)動教學(xué)法一般包括情景創(chuàng)設(shè)、確定任務(wù)、自主學(xué)習(xí)、協(xié)同學(xué)習(xí)、學(xué)習(xí)評價、總結(jié)提高幾個階段.
2.1 任務(wù)確定
任務(wù)驅(qū)動教學(xué)法首先需要解決的是確定任務(wù),選擇與當(dāng)前學(xué)習(xí)主題密切相關(guān)的真實性事件或問題(任務(wù))作為學(xué)習(xí)的中心內(nèi)容,讓學(xué)生面臨一個需要立即去解決的現(xiàn)實問題.在授課開始,提出問題,指出該問題的難點,圍繞授課內(nèi)容引導(dǎo)學(xué)生進行思考.任務(wù)設(shè)計的好壞直接影響教學(xué)效果,一個較好的任務(wù),不僅要用到已學(xué)的知識點,還要能引出新的內(nèi)容.在設(shè)計任務(wù)時有以下三個原則[4]:
第一,任務(wù)要有以引力,能夠激發(fā)學(xué)生的學(xué)習(xí)欲望.
第二,任務(wù)的難度要適中,要根據(jù)學(xué)生的實際情況及現(xiàn)有的知識水平,設(shè)計合理的任務(wù).每個任務(wù)所包含的知識點不宜過多,否則學(xué)生會因為難度太大,解決不了而有挫敗感,降低了學(xué)生的學(xué)習(xí)積極性.任務(wù)也不宜太過簡單,這樣達不到教學(xué)大綱的要求.
第三,任務(wù)要能夠擴展.由簡單的任務(wù)逐漸的過渡到較難的任務(wù).如在講解數(shù)組時,現(xiàn)提出一個問題,在一維數(shù)組當(dāng)中找出一個最小值,并把它與數(shù)組的第一個元素交換.進而在提出,在剩下的元素中找出一個最小值,把它與數(shù)組的第二個元素交換.一個有n個元素的數(shù)組經(jīng)過n趟查找最小值,就會變成一個有序數(shù)組.
2.2 教師引導(dǎo)
針對要完成的任務(wù),把它轉(zhuǎn)換為數(shù)學(xué)模型[5],即提取出要解決的關(guān)鍵問題,即程序要實現(xiàn)的功能.把要求解的問題轉(zhuǎn)化為利用存儲單元讀入數(shù)據(jù),然后計算數(shù)據(jù),最后輸出結(jié)果這樣一個過程.同時設(shè)計好數(shù)據(jù)和中間結(jié)果的存儲結(jié)構(gòu),確定要使用的變量函數(shù).教師要逐步的引導(dǎo)學(xué)生,先用自然語言描述案例的求解過程,再按照結(jié)構(gòu)化程序設(shè)計的思想,將自然語言描述的過程轉(zhuǎn)換為流程圖,設(shè)計算法采用自頂向下的方法逐步求精.
2.3 自主學(xué)習(xí)
學(xué)生需要根據(jù)流程圖,把算法中的每一步轉(zhuǎn)換成一條或多條具體的語句.在編寫代碼的過程中學(xué)生要逐漸的掌握準(zhǔn)確的語言及語法規(guī)則,學(xué)會把自然語言描述的算法轉(zhuǎn)化為C語言描述.學(xué)生在寫代碼的時候難免會出現(xiàn)很多問題,包括語法錯誤、邏輯錯誤,這時不急于幫助學(xué)生找到錯誤并且給他指出來.而是要讓他們反復(fù)的閱讀、運行程序,自己能夠把錯誤找出來.編寫代碼時必須要遵循C語言的基本規(guī)范和表達邏輯,嚴(yán)格遵守程序語句和函數(shù)等的書寫格式,避免語言表達的二義性和非語法錯誤,提高編寫代碼的質(zhì)量.
這時也可以讓學(xué)生分成小組,以小組為單位進行學(xué)習(xí),可以取長補短,在遇到問題時多人共同解決,更容易找到問題所在.一個人孤立學(xué)習(xí)容易喪失學(xué)習(xí)興趣,學(xué)習(xí)小組的方式大家共同學(xué)習(xí),容易培養(yǎng)學(xué)生的團隊精神,激發(fā)學(xué)生向問題的廣度和深度搜索.目前我校機房設(shè)施較好,但師生比較低,故可以采取分組學(xué)習(xí)的方式.
2.4 任務(wù)推進
任務(wù)驅(qū)動式的教學(xué)方法,要求設(shè)定的任務(wù)能夠按難度推進.在學(xué)習(xí)到while循環(huán)時,有一類型非常典型的題目如:

這類問題的解決方法是相同的,我們可以先從簡單的題1開始,學(xué)生很容易就能夠想到題1的解決方法,每次循環(huán)結(jié)束分母加1為下一次循環(huán)做準(zhǔn)備.題2與題1不同的是分母不是累加而是做階乘,題3要求每次累加前要把每一項乘以-1.題4分母的規(guī)律要稍微的難分析一點,但是學(xué)生在前3題的基礎(chǔ)上做題4,只要引導(dǎo)學(xué)生分析清楚分母的規(guī)律,這個題目就迎刃而解.
2.5 學(xué)習(xí)評價
學(xué)生完成任務(wù)后,教師要及時評價學(xué)生完成任務(wù)的情況.對順利完成任務(wù)的學(xué)生要給予充分的肯定,點評所用方法的優(yōu)缺點.對沒有完成任務(wù)的學(xué)生也要給予鼓勵,分析他們方案的不足.老師客觀具體積極的評價,能增強學(xué)生的學(xué)習(xí)信心,保持學(xué)習(xí)的積極性,激發(fā)學(xué)習(xí)興趣.需要特別指出的是,對學(xué)生學(xué)習(xí)效果的評價,不應(yīng)該只對學(xué)生進行橫向的比較,特別是對于后進生,更應(yīng)該關(guān)心學(xué)生學(xué)習(xí)過程中的點滴進步,鼓勵學(xué)生有更大的進步.
興趣與愛好是最好的老師,初次接觸C語言,很多學(xué)生也會感到好奇,隨著課程的深入,很容易使學(xué)生產(chǎn)生枯燥無味的感覺.因此采用一些趣味的程序,把學(xué)生的好奇心轉(zhuǎn)化為學(xué)習(xí)興趣激發(fā)學(xué)生的學(xué)習(xí)積極性.
在課堂教學(xué)中,以解決某一個實際的問題,在解決問題完成任務(wù)的同時,使學(xué)生掌握知識,并且不覺得枯燥乏味[6].在講到循環(huán)結(jié)構(gòu)的嵌套時有一個非常典型的問題“百錢百雞”問題.這是中國古代數(shù)學(xué)家提出的問題:“雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,翁,母,雛各幾何?”學(xué)生拿到這個題目后會覺得很新穎,也覺得很簡單,好像馬上就能夠做出答案來.這個問題轉(zhuǎn)化成數(shù)學(xué)模型,很快就能夠得到一個三元一次方程組,但是只有兩個方程,這個方程組有多個解,看似很簡單的問題,想要用手工的方法解出全部解,還是花費很多的時間的.這個題目本身解法不難,但是要把幾百組數(shù)據(jù)依次的代入方程,這正好符合程序設(shè)計的思想,用循環(huán)來解決.用兩個嵌套的循環(huán)語句,窮舉所有的可能性,在此過程中講解循環(huán)語句的具體用法.這樣在完成這個任務(wù)的同時,學(xué)生就掌握了循環(huán)嵌套的用法,以及窮舉法的思想,學(xué)生也不覺得課堂枯燥乏味,能夠更好的激發(fā)學(xué)生的學(xué)習(xí)興趣,教學(xué)效果也會事半功倍.
針對我校C語言教學(xué)存在的問題,在教學(xué)過程中應(yīng)用了任務(wù)驅(qū)動式的教學(xué)方法,在很大程度上改善了過去單純強調(diào)語法、知識掌握的教學(xué)模式,增強了學(xué)生學(xué)習(xí)C語言的積極性,教學(xué)過程中培養(yǎng)學(xué)生的主動學(xué)習(xí)意識和團隊精神.經(jīng)過多個班級的教學(xué)試驗表明,任務(wù)驅(qū)動式教學(xué)方法非常適合C語言的教學(xué),學(xué)生學(xué)習(xí)熱情高漲,使學(xué)生養(yǎng)成了良好的程序設(shè)計習(xí)慣,取得了很好的教學(xué)效果.
〔1〕劉曉燕,申艷梅.“C語言程序設(shè)計”教學(xué)方法探析[J].計算機教育,2010(6):94-96.
〔2〕熊春榮.“C語言程序設(shè)計”課程案例驅(qū)動教學(xué)模式的研究與實踐[J].玉林師范學(xué)院學(xué)報(自然科學(xué)),2010,31(5):119-121.
〔3〕宋加濤,王蔚,楊忠秀,任小波.任務(wù)驅(qū)動法在 C語言實驗教學(xué)中的應(yīng)用研究[J].合肥工業(yè)大學(xué)學(xué)報(社會科學(xué)版),2010,24(2):5-8.
〔4〕宋文琳.任務(wù)驅(qū)動教學(xué)法在C語言程序設(shè)計課程中的應(yīng)用[J].計算機時代,2012(10):53-54.
〔5〕森干,李莉.醫(yī)學(xué)信息管理專業(yè)案例驅(qū)動式C語言程序設(shè)計教學(xué)方法實踐 [J].醫(yī)學(xué)信息,2011,24(9):5606-5608.
〔6〕郭慧敏,詹林超.將C語言趣味化教學(xué)進行到底——提高C語言課程教學(xué)效果方法之我見 [J].電腦知識與技術(shù),2010,6(28):8030-8032.
G642
A
1673-260X(2014)02-0027-02
安徽省優(yōu)秀青年人才基金項目(2010SQRL126);安徽省蚌埠學(xué)院自然科學(xué)基金項目(2011ZR 11);安徽省蚌埠學(xué)院工程研究中心項目(BBXYGC2012B04).