陳鳳祥 許 勇
摘要:本文通過(guò)分析全國(guó)計(jì)算機(jī)等級(jí)考試通過(guò)率較低的現(xiàn)狀與原因,對(duì)程序設(shè)計(jì)語(yǔ)言的課堂教學(xué)與實(shí)驗(yàn)教學(xué)提出了堅(jiān)持“掌握—學(xué)習(xí)”導(dǎo)向的觀點(diǎn)。根據(jù)學(xué)生情況因材施教,合理組織實(shí)驗(yàn)題目,讓學(xué)生體會(huì)到進(jìn)步和掌握的情感,從而逐步提高程序設(shè)計(jì)能力。
關(guān)鍵詞:計(jì)算機(jī)等級(jí)考試;“掌握—學(xué)習(xí)”導(dǎo)向;能力培養(yǎng)
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A
1我校全國(guó)計(jì)算機(jī)等級(jí)考試通過(guò)率分析
全國(guó)計(jì)算機(jī)等級(jí)考試是由教育部考試中心主辦,用于測(cè)試應(yīng)試人員計(jì)算機(jī)應(yīng)用知識(shí)與能力的等級(jí)水平考試。其考試成績(jī)可以為勞動(dòng)(就業(yè))人員提供計(jì)算機(jī)應(yīng)用知識(shí)與能力的證明,為用人部門(mén)錄用和考核工作人員提供一個(gè)統(tǒng)一、客觀、公正的評(píng)價(jià)標(biāo)準(zhǔn),因此受到高校非計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生和廣大就業(yè)人員的歡迎。作為一線教學(xué)人員,我們也非常關(guān)注學(xué)生們的考試結(jié)果,并將其作為我們改進(jìn)教學(xué)方法的一種參考。通過(guò)對(duì)我校某考點(diǎn)近期連續(xù)三次計(jì)算機(jī)等級(jí)考試(二級(jí)和三級(jí))通過(guò)率的分析,得到了表1和表2。從表1中可以看出,通過(guò)率不高。若是從同時(shí)參加筆試和機(jī)試兩項(xiàng)考試,僅從其中一項(xiàng)看,筆試的平均通過(guò)率明顯高于機(jī)試平均通過(guò)率。只有一次例外,因?yàn)槿?jí)機(jī)試只有一道程序設(shè)計(jì)題,只要選中的題目是考生背下來(lái)的,就能通過(guò),這就會(huì)帶來(lái)一定的偶然性。而二級(jí)機(jī)試中,題量比較大,偶然性大為降低。表2為這三次考試獲得證書(shū)的考生統(tǒng)計(jì)數(shù)據(jù),從表2中可以看出,有相當(dāng)比例的考生是通過(guò)補(bǔ)考而獲得證書(shū),其中尤以補(bǔ)考機(jī)試者為多。
2通過(guò)率較低的原因分析
為什么通過(guò)率較低且有如此多的考生要補(bǔ)考機(jī)試?究其原因,主要是有不少考生只注重“背”而不注重上機(jī)實(shí)驗(yàn)。其次,很多單位只認(rèn)證書(shū)不問(wèn)能力,也造成了不少學(xué)生不愿動(dòng)手寫(xiě)程序。不少學(xué)生甚至分不清編輯源程序與編譯源程序的區(qū)別;有的認(rèn)為只要編譯沒(méi)有語(yǔ)法錯(cuò)誤,程序就正確了;有的考生沒(méi)有掌握常用的算法,面對(duì)試題沒(méi)有解決的思路,當(dāng)然就寫(xiě)不出解決問(wèn)題的程序了;有的考生對(duì)程序設(shè)計(jì)語(yǔ)言本身掌握不牢,無(wú)法用正確的語(yǔ)句寫(xiě)出解決問(wèn)題的程序。
上述情形均從某個(gè)側(cè)面說(shuō)明了我們不少學(xué)生只注重閱讀指導(dǎo)書(shū)上的程序,很少或不愿意動(dòng)手編寫(xiě)與調(diào)試程序,使得程序設(shè)計(jì)能力較弱,從而造成通過(guò)率不高。
3堅(jiān)持“掌握—學(xué)習(xí)”導(dǎo)向,做到因材施教
要改變學(xué)生重書(shū)本,輕動(dòng)手實(shí)驗(yàn)的狀況,真正提高學(xué)生程序設(shè)計(jì)能力,教師的責(zé)任與作用不容忽視。我們不少學(xué)生進(jìn)入大學(xué)前,幾乎沒(méi)有接觸過(guò)計(jì)算機(jī),有的即使用過(guò)計(jì)算機(jī),也幾乎沒(méi)有程序設(shè)計(jì)的概念。從大學(xué)新生入學(xué)到結(jié)束計(jì)算機(jī)課程的教學(xué),從最基本的計(jì)算機(jī)應(yīng)用基礎(chǔ)開(kāi)始,到結(jié)束程序設(shè)計(jì)語(yǔ)言的學(xué)習(xí),只有不到120學(xué)時(shí)(包括課堂教學(xué)和實(shí)驗(yàn)教學(xué))的時(shí)間。在這么短的時(shí)間里,讓學(xué)生掌握使用計(jì)算機(jī)的基本技能和一門(mén)程序設(shè)計(jì)語(yǔ)言,其難度可想而知。李未院士在第四界全國(guó)計(jì)算機(jī)教育論壇上指出:我們要走新型工業(yè)化道路,就要更新知識(shí)結(jié)構(gòu),培養(yǎng)新一代產(chǎn)業(yè)大軍。在不遠(yuǎn)的將來(lái),程序設(shè)計(jì)和數(shù)學(xué)建模將與微積分、高等代數(shù)、大學(xué)物理一樣,成為所有大學(xué)的核心基礎(chǔ)課程。教育的根本目標(biāo)之一是培養(yǎng)學(xué)生的問(wèn)題求解能力。能力應(yīng)該是理性能力,面對(duì)一個(gè)新問(wèn)題,能運(yùn)用所有資源將其解決,這就是對(duì)問(wèn)題的求解能力。為使現(xiàn)在的大學(xué)生,能成為新一代的產(chǎn)業(yè)大軍,培養(yǎng)他們對(duì)問(wèn)題的求解能力,包括程序設(shè)計(jì)能力,是計(jì)算機(jī)教育工作者不可推卸的責(zé)任。在教學(xué)中,我們堅(jiān)持以培養(yǎng)能力為目標(biāo),遵循“掌握—學(xué)習(xí)”導(dǎo)向的理念,使學(xué)生有努力成功的動(dòng)機(jī),讓其體會(huì)到進(jìn)步和掌握的情感。為此,在C語(yǔ)言的教學(xué)部分,我們作了如下嘗試。
3.1分解難點(diǎn),讓學(xué)生能動(dòng)手寫(xiě)出程序
初學(xué)程序設(shè)計(jì)的人,往往不知道該如何將自己的解題方法用計(jì)算機(jī)語(yǔ)言寫(xiě)出。因?yàn)橛?jì)算機(jī)的語(yǔ)言有許多語(yǔ)法規(guī)則、算法的描述、還有數(shù)據(jù)類(lèi)型的約束、運(yùn)算符的表示、以及輸入輸出的實(shí)現(xiàn)等等。倘若按照先講語(yǔ)法規(guī)則,然后介紹算法的描述方法,再講數(shù)據(jù)類(lèi)型及運(yùn)算符的表示,這樣的課堂教學(xué)下來(lái),學(xué)生對(duì)如何寫(xiě)程序仍然很茫然。為了在一開(kāi)始就讓學(xué)生養(yǎng)成自己寫(xiě)程序的習(xí)慣,我們?cè)诮榻B了C語(yǔ)言程序的大致結(jié)構(gòu)后,就開(kāi)始介紹順序結(jié)構(gòu)程序的設(shè)計(jì)。從學(xué)生熟悉的數(shù)學(xué)公式著手,用C語(yǔ)言寫(xiě)出求解的程序。所舉的第一個(gè)例子是求正方形的面積,程序及流程圖如圖1所示:
在這個(gè)例子里,我們用流程圖描述了順序程序的執(zhí)行過(guò)程。盡管這樣的描述并不是最好的方法,但比較直觀,容易理解。同時(shí)我們通過(guò)演示程序的執(zhí)行,改變數(shù)據(jù)類(lèi)型及相應(yīng)輸出函數(shù)printf()中的格式控制字符,使學(xué)生明白,不同的數(shù)據(jù)類(lèi)型,在輸出其值時(shí),應(yīng)匹配不同的格式控制字符。然后,我們指出此程序的不足之處:當(dāng)需要計(jì)算邊長(zhǎng)不同的正方形面積時(shí),每次都要修改程序,不僅麻煩而且容易出錯(cuò),于是很自然地引出了輸入函數(shù)scanf()的使用。同樣地,可以通過(guò)輸入不同數(shù)據(jù)類(lèi)型的計(jì)算過(guò)程,讓格式控制字符的使用反復(fù)刺激學(xué)生大腦,加深他們對(duì)輸入函數(shù)和輸出函數(shù)正確使用的理解。通過(guò)舉一反三,學(xué)生對(duì)如何計(jì)算長(zhǎng)方形的面積、圓柱體的體積的流程圖和程序都能很快理解。在計(jì)算長(zhǎng)方形面積的程序里,我們還解決了用scanf()函數(shù)輸入多個(gè)數(shù)據(jù)時(shí),數(shù)據(jù)之間的分隔符問(wèn)題,這比單獨(dú)講授用scanf()函數(shù)接收輸入數(shù)據(jù)的分隔問(wèn)題更容易被學(xué)生接受和理解。
介紹分支程序設(shè)計(jì)和循環(huán)程序設(shè)計(jì)時(shí),我們?nèi)匀皇褂媚切W(xué)生很熟悉的算法。為此我們首先設(shè)問(wèn),如何解決數(shù)據(jù)輸入時(shí)錯(cuò)誤數(shù)據(jù)的排除?這樣自然地引入了分支程序設(shè)計(jì)的問(wèn)題。我們?cè)谝延辛鞒虉D“計(jì)算面積框”前面添加一判定框,講清楚判定框中兩個(gè)出口的含義,在程序中相應(yīng)位置添加條件語(yǔ)句就可解決問(wèn)題了。這樣對(duì)if語(yǔ)句與if…else語(yǔ)句的使用,學(xué)生接受起來(lái)就更加自然,不必死背語(yǔ)法了。再通過(guò)反復(fù)計(jì)算不同邊長(zhǎng)正方形面積的設(shè)問(wèn)引入循環(huán)結(jié)構(gòu)。于是,在3次課(6學(xué)時(shí))的時(shí)間里,三種程序結(jié)構(gòu)介紹完畢,且基本數(shù)據(jù)類(lèi)型和輸入輸出函數(shù)的使用、格式控制字符的應(yīng)用等,這些編程中最基本的元素在短時(shí)間里不斷地刺激了學(xué)生的大腦。使他們經(jīng)常將已有的知識(shí)與新知識(shí)進(jìn)行連接,并不斷的融合、固化,從而形成長(zhǎng)期記憶。
3.2循序漸進(jìn),掌握程序設(shè)計(jì)的方法,培養(yǎng)程序設(shè)計(jì)的能力
要提高學(xué)生程序設(shè)計(jì)的能力,除了掌握語(yǔ)言本身的語(yǔ)法規(guī)則外,還得掌握一些常用的算法。在后續(xù)的教學(xué)中,我們遵循這樣的原則:即在學(xué)習(xí)新的語(yǔ)法規(guī)則時(shí),用已掌握的算法進(jìn)行程序設(shè)計(jì);學(xué)習(xí)新的算法時(shí),用已學(xué)過(guò)的語(yǔ)法規(guī)則。這樣引導(dǎo)學(xué)生面對(duì)一個(gè)新問(wèn)題,能運(yùn)用所有資源將其解決。同時(shí),我們?yōu)橹鸩脚囵B(yǎng)學(xué)生理解算法的能力,在學(xué)生對(duì)算法有了一些理解能力后,引導(dǎo)學(xué)生逐步讀懂用N-S圖描述的算法,通過(guò)閱讀算法,可以提高學(xué)生的邏輯思維能力。比如模式匹配的問(wèn)題,盡管我們介紹簡(jiǎn)單回溯法,學(xué)生理解起來(lái)仍有一定的難度。我們?cè)趯W(xué)習(xí)字符數(shù)組內(nèi)容時(shí)介紹這個(gè)算法,為使學(xué)生理解起來(lái)容易些,使用雙重循環(huán)描述這個(gè)算法。算法描述如圖2所示。
這樣描述的算法省去了回溯時(shí)計(jì)算i的位置,通過(guò)圖示,再輔以具體的實(shí)例,學(xué)生基本能理解。然后引導(dǎo)他們根據(jù)N-S圖寫(xiě)出程序。到學(xué)習(xí)函數(shù)、指針時(shí),再用這個(gè)算法,學(xué)著用字符數(shù)組和指針作函數(shù)參數(shù),用函數(shù)的返回值判斷st2是否在st1中,這樣學(xué)生對(duì)這個(gè)算法就有了進(jìn)一步的理解。
3.3合理組織實(shí)驗(yàn)題目,逐步提高程序設(shè)計(jì)能力
教育部在2號(hào)文件中指出要“高度重視實(shí)踐環(huán)節(jié),提高學(xué)生實(shí)踐能力”。要提高學(xué)生程序設(shè)計(jì)能力,僅僅依靠良好的課堂教學(xué)效果是不夠的,還需學(xué)生充分利用實(shí)驗(yàn)課的時(shí)間。為此,我們優(yōu)選了既能讓學(xué)生動(dòng)手編寫(xiě)、調(diào)試,又能達(dá)到舉一反三效果的設(shè)計(jì)題,使他們相信自己有能力完成,從而能堅(jiān)持不懈的努力。
在學(xué)習(xí)之初,我們給出求面積和體積一類(lèi)的程序設(shè)計(jì)題,這類(lèi)題目算法簡(jiǎn)單,目的是讓學(xué)生能自己動(dòng)手寫(xiě)程序,掌握程序的結(jié)構(gòu)及基本的語(yǔ)法規(guī)則。因此題目的要求重點(diǎn)在數(shù)據(jù)類(lèi)型的變換和輸入輸出函數(shù)的使用,格式控制字符的正確使用等。同時(shí)在題目中留下讓學(xué)生目前知識(shí)無(wú)法解決的問(wèn)題,使學(xué)生有繼續(xù)學(xué)習(xí)的愿望。
隨著知識(shí)的積累,我們逐步引入了一些常用算法的程序設(shè)計(jì)題,這些常用算法可以用不同的語(yǔ)法規(guī)則去實(shí)現(xiàn)。比如常用的選擇排序算法,學(xué)習(xí)數(shù)組時(shí),實(shí)現(xiàn)對(duì)已給序列排序。學(xué)習(xí)函數(shù)時(shí),將待排序數(shù)組名作函數(shù)參數(shù),學(xué)習(xí)指針時(shí),將待排序數(shù)組的地址傳遞給函數(shù)的形參指針變量,實(shí)現(xiàn)在函數(shù)內(nèi)排好序,在主調(diào)函數(shù)中輸出排好序的結(jié)果。又如模式匹配的簡(jiǎn)單回溯算法,學(xué)習(xí)字符數(shù)組時(shí)可以作為上機(jī)實(shí)踐題,學(xué)習(xí)函數(shù)時(shí) 也作為上機(jī)練習(xí)題,學(xué)習(xí)指針時(shí)同樣作為上機(jī)練習(xí)題。再比如十進(jìn)制整數(shù)轉(zhuǎn)換成八進(jìn)制整數(shù)或十六進(jìn)制整數(shù)的算法,同樣在數(shù)組、函數(shù)、指針的學(xué)習(xí)中都作為程序設(shè)計(jì)練習(xí)題。等等,這樣的練習(xí)題可以有很多。通過(guò)這樣的練習(xí),培養(yǎng)學(xué)生對(duì)同一個(gè)問(wèn)題,用不同的方法去求解的能力。
3.4加強(qiáng)實(shí)驗(yàn)指導(dǎo),引導(dǎo)學(xué)生協(xié)作學(xué)習(xí),使學(xué)生能體驗(yàn)進(jìn)步的快樂(lè)
課堂目標(biāo)定向影響學(xué)生的目標(biāo)定向。在課堂中的活動(dòng)和重點(diǎn)可以分為“掌握—學(xué)習(xí)”導(dǎo)向型和成績(jī)導(dǎo)向型?!罢莆铡獙W(xué)習(xí)”導(dǎo)向型的課堂強(qiáng)調(diào)努力、進(jìn)步、挑戰(zhàn),掌握導(dǎo)向型的課堂有一個(gè)環(huán)境,在那里學(xué)生能體驗(yàn)進(jìn)步和掌握的情感。
盡管是經(jīng)過(guò)優(yōu)選后給出的實(shí)驗(yàn)題目,但對(duì)于初學(xué)者來(lái)說(shuō),寫(xiě)程序時(shí)發(fā)生的錯(cuò)誤仍然不少。如何排錯(cuò)是初學(xué)者最不易掌握的技能,且各種錯(cuò)誤名目繁多,教師此時(shí)需要有耐心,除幫助學(xué)生解答各種問(wèn)題外,還應(yīng)引導(dǎo)學(xué)生學(xué)習(xí)使用調(diào)試工具。對(duì)計(jì)算機(jī)程序而言,有語(yǔ)法錯(cuò)誤程序不能運(yùn)行,有邏輯錯(cuò)誤,得不到正確的結(jié)果。為提高學(xué)生程序設(shè)計(jì)的能力,學(xué)會(huì)調(diào)試程序是很重要的一個(gè)方面。為此我們有意培養(yǎng)學(xué)生排除錯(cuò)誤的能力,首先,引導(dǎo)學(xué)生如何盡快排除語(yǔ)法錯(cuò)誤,然后,引導(dǎo)學(xué)生學(xué)習(xí)使用調(diào)試工具,學(xué)會(huì)單步執(zhí)行程序,查看變量在程序運(yùn)行過(guò)程中值的變化,這樣逐步讓學(xué)生學(xué)習(xí)如何排除邏輯錯(cuò)誤。學(xué)生只有在學(xué)會(huì)使用調(diào)試工具后,其程序設(shè)計(jì)能力才能真正得到提高?!笆谌艘贼~(yú),不如授人以漁”,當(dāng)學(xué)生不需要老師為其排除程序中的錯(cuò)誤時(shí),我們的教學(xué)目標(biāo)就達(dá)到了。另一方面,為培養(yǎng)學(xué)生協(xié)作學(xué)習(xí)的能力,我們?cè)趯?shí)驗(yàn)課時(shí),將學(xué)生分成若干小組,每組4~5人,能力較強(qiáng)的學(xué)生作組長(zhǎng),允許他們以討論的方式完成上機(jī)題目。通過(guò)討論,使他們對(duì)問(wèn)題的求解思路有一個(gè)較清晰的認(rèn)識(shí),共同完成作業(yè)。在這過(guò)程中,能力較強(qiáng)的學(xué)生,幫助較弱的同學(xué),而他自身的能力也會(huì)得到提高。不少得到幫助的同學(xué),也因自己經(jīng)過(guò)努力后能寫(xiě)出程序,而體驗(yàn)到了進(jìn)步的快樂(lè)。采用這種實(shí)驗(yàn)教學(xué)方式多數(shù)學(xué)生愿意動(dòng)手寫(xiě)程序,同學(xué)之間也加深了了解,從而給學(xué)生一個(gè)良好的情感記憶,并有了成功的體驗(yàn)。
4教學(xué)嘗試的效果與總結(jié)
經(jīng)過(guò)一段時(shí)間這樣的教學(xué)嘗試,多數(shù)學(xué)生已養(yǎng)成自己動(dòng)手寫(xiě)程序的習(xí)慣,而且能力較強(qiáng)的學(xué)生已開(kāi)始對(duì)程序的設(shè)計(jì)有了自己獨(dú)到的見(jiàn)解與處理能力了。比如在學(xué)習(xí)指針一章時(shí),講了這樣一個(gè)例題:在一個(gè)串的尾部添加一個(gè)字符。當(dāng)指針s指向串的結(jié)束符,給出這樣的語(yǔ)句{*s=c;s++;*s= 桑日县| 西平县| 琼结县| 遂宁市| 双柏县| 潼关县| 夏津县| 兴隆县| 红安县| 循化| 雷州市| 吴江市| 松桃| 平顺县| 宁城县| 准格尔旗| 广宁县| 昆明市| 小金县| 海丰县| 通城县| 浏阳市| 社旗县| 荣成市| 邵武市| 镇赉县| 巴塘县| 青田县| 晋州市| 大竹县| 临猗县| 开平市| 长子县| 定安县| 固阳县| 双峰县| 民丰县| 桦川县| 松阳县| 云和县| 新营市|