張 野,宋 微
(渤海大學(xué) 信息科學(xué)與技術(shù)學(xué)院,遼寧 錦州 121000)
?
程序設(shè)計(jì)實(shí)驗(yàn)課堂錯(cuò)誤轉(zhuǎn)化提升策略研究
張野,宋微
(渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院,遼寧錦州121000)
摘要:針對(duì)目前程序設(shè)計(jì)類課程實(shí)驗(yàn)教學(xué)中存在的問題,本文結(jié)合計(jì)算機(jī)專業(yè)課程的教學(xué)內(nèi)容,通過總結(jié)和分析,給出了提升學(xué)生程序設(shè)計(jì)能力的方法.以《C語言程序設(shè)計(jì)》課程為例,指出學(xué)生在學(xué)習(xí)中所出現(xiàn)的常見錯(cuò)誤,并重點(diǎn)闡述"語法錯(cuò)誤"、"邏輯錯(cuò)誤"、"隱性錯(cuò)誤"等典型錯(cuò)誤進(jìn)行轉(zhuǎn)化提升的策略,建立錯(cuò)誤資源共享庫(kù).教學(xué)實(shí)踐證明,實(shí)驗(yàn)錯(cuò)誤轉(zhuǎn)化提升策略能夠提高學(xué)生的學(xué)習(xí)興趣,增強(qiáng)學(xué)生的應(yīng)用能力.
關(guān)鍵詞:程序設(shè)計(jì);實(shí)驗(yàn)錯(cuò)誤;轉(zhuǎn)化提升;策略
程序設(shè)計(jì)基礎(chǔ)課程作為大學(xué)計(jì)算機(jī)專業(yè)、軟件專業(yè)的必修課程,也是各理工科的核心專業(yè)課,而該類課程的實(shí)驗(yàn)與實(shí)踐教學(xué)是提升相關(guān)專業(yè)學(xué)生就業(yè)競(jìng)爭(zhēng)實(shí)力的有效途徑.實(shí)驗(yàn)教學(xué)的本質(zhì)是一種創(chuàng)造活動(dòng),是培養(yǎng)人的活動(dòng),有計(jì)劃、有組織地把科學(xué)知識(shí),思維能力、實(shí)驗(yàn)方法、操作技能傳授給學(xué)生[1],通過實(shí)驗(yàn)教學(xué),不僅培養(yǎng)學(xué)生的能力,而且啟發(fā)他們的創(chuàng)新精神和創(chuàng)新意識(shí),實(shí)驗(yàn)教學(xué)更要培養(yǎng)他們嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和誠(chéng)實(shí)的優(yōu)良品質(zhì).但是在傳統(tǒng)教學(xué)理念支配下,目前的程序設(shè)計(jì)類課程的實(shí)驗(yàn)教學(xué),主要以老師講,學(xué)生聽,實(shí)驗(yàn)照書敲代碼等形式,在學(xué)生實(shí)驗(yàn)過程中,經(jīng)常性的出現(xiàn)語法錯(cuò)誤、語句錯(cuò)誤等低級(jí)錯(cuò)誤,反映出學(xué)生編程能力不足,教學(xué)效果比較差[2].很多專家學(xué)者和一線教師在程序設(shè)計(jì)類課程中,探討了很多有意義的教學(xué)方法,取得了一定的效果[3][4].
學(xué)生在分析問題、設(shè)計(jì)算法到程序?qū)崿F(xiàn)的學(xué)習(xí)過程中,不斷的會(huì)出現(xiàn)實(shí)驗(yàn)錯(cuò)誤,基于實(shí)驗(yàn)錯(cuò)誤是教學(xué)過程的巨大財(cái)富的思想,充分挖掘?qū)嶒?yàn)錯(cuò)誤的價(jià)值,本文對(duì)程序設(shè)計(jì)類課程中學(xué)生常見的錯(cuò)誤類型進(jìn)行分析,提出一系列錯(cuò)誤轉(zhuǎn)化提升的教學(xué)策略,并在《C語言程序設(shè)計(jì)》課程中進(jìn)行了教學(xué)實(shí)踐,取得了較好的教學(xué)效果.
1.1程序設(shè)計(jì)類課程與課程群分析
程序設(shè)計(jì)類課程與專業(yè)方向緊密相關(guān),課程內(nèi)容自成體系,程序設(shè)計(jì)作為目前計(jì)算機(jī)及相關(guān)專業(yè)的主流技術(shù),占有舉足輕重的作用.但是在實(shí)際的教學(xué)過程,大多數(shù)學(xué)生的程序設(shè)計(jì)水平不高.程序設(shè)計(jì)水平直接決定了學(xué)生對(duì)計(jì)算機(jī)專業(yè)知識(shí)的應(yīng)用能力,也是學(xué)習(xí)后續(xù)專業(yè)課的基礎(chǔ),因此,如何提升實(shí)驗(yàn)教學(xué)水平成為保證學(xué)生編程能力提升的關(guān)鍵[5].
程序設(shè)計(jì)語言的學(xué)習(xí)很難在一個(gè)學(xué)期的時(shí)間將一門語言完全掌握,編程內(nèi)容的學(xué)習(xí)應(yīng)該滲透到其他專業(yè)課的學(xué)習(xí)之中[6].但是由于現(xiàn)在的課程設(shè)置基本按照課程的教學(xué)要求,未能考慮到課程之間的聯(lián)系性,因此,有必要分析程序設(shè)計(jì)課程的課程群,以便教師在教學(xué)過程中建立學(xué)生的學(xué)習(xí)體系,提升學(xué)生的就業(yè)競(jìng)爭(zhēng)力.以計(jì)算機(jī)專業(yè)為例,計(jì)算機(jī)程序設(shè)計(jì)類課程基本集中在計(jì)算機(jī)軟件方向,包括《C語言程序設(shè)計(jì)》、《面向?qū)ο蟪绦蛟O(shè)計(jì)》、《數(shù)據(jù)結(jié)構(gòu)》、《計(jì)算機(jī)網(wǎng)絡(luò)》、《數(shù)據(jù)庫(kù)原理與應(yīng)用》、《軟件工程》等.下面以《C語言程序設(shè)計(jì)》為例,說明程序設(shè)計(jì)對(duì)學(xué)生實(shí)踐能力培養(yǎng)的重要作用,如圖1所示.
圖1學(xué)生程序設(shè)計(jì)能力培養(yǎng)層次
《C語言程序設(shè)計(jì)》是專業(yè)基礎(chǔ)課程,是學(xué)生第一門計(jì)算機(jī)程序設(shè)計(jì)課程,因而在教學(xué)過程中應(yīng)該注重對(duì)學(xué)生分析問題、解決問題能力的培養(yǎng),側(cè)重學(xué)生編程能力的養(yǎng)成.減少項(xiàng)目類、綜合性的實(shí)驗(yàn)內(nèi)容,注重程序設(shè)計(jì)的基礎(chǔ)性與實(shí)用性[7].
1.2實(shí)驗(yàn)錯(cuò)誤類型分析
1.2.1語法錯(cuò)誤分析
對(duì)于學(xué)生,由于接觸編程時(shí)間較短,在編程過程中沒有符合語法規(guī)則而產(chǎn)生的語法錯(cuò)誤是最常見的錯(cuò)誤[9].如:表達(dá)式不完整、關(guān)鍵字錯(cuò)誤、數(shù)據(jù)類型不匹配等.語法錯(cuò)誤可以使用集成開發(fā)環(huán)境來進(jìn)行調(diào)試,編譯器會(huì)對(duì)程序中的語法錯(cuò)誤進(jìn)行判斷,編譯系統(tǒng)會(huì)自動(dòng)提示相應(yīng)的錯(cuò)誤位置和錯(cuò)誤原因.但是由于學(xué)生初次接觸程序設(shè)計(jì)基礎(chǔ)課程,對(duì)專業(yè)術(shù)語不敏感,很難找到錯(cuò)誤.學(xué)生遇到錯(cuò)誤,第一時(shí)間就會(huì)找老師解決,老師在實(shí)驗(yàn)課的大量工作就會(huì)解決這些基礎(chǔ)性錯(cuò)誤,難以完成既定的教學(xué)目標(biāo). 1.2.2邏輯錯(cuò)誤分析
程序通過編譯器的語法錯(cuò)誤檢測(cè),但是程序在運(yùn)行時(shí)出現(xiàn)錯(cuò)誤,導(dǎo)致程序被中斷,或者程序的運(yùn)行結(jié)果沒有得到預(yù)期的結(jié)果.例如:除數(shù)為0、運(yùn)算符使用不正確、循環(huán)語句邊界錯(cuò)誤等.邏輯錯(cuò)誤不會(huì)產(chǎn)生錯(cuò)誤提示信息,或者不能準(zhǔn)確定位錯(cuò)誤產(chǎn)生的位置[10].學(xué)生由于編程的經(jīng)驗(yàn)尚淺,很難準(zhǔn)確判斷出錯(cuò)的代碼段,不能方便的調(diào)試程序,錯(cuò)誤難于排除.
1.2.3執(zhí)行錯(cuò)誤分析
程序能夠通過編譯器的檢查,運(yùn)行也沒有出現(xiàn)錯(cuò)誤,但是執(zhí)行的結(jié)果不是用戶所期望的,或者執(zhí)行的結(jié)果無法人工判斷對(duì)錯(cuò)[11].例如:查找年齡大于40歲的職工,結(jié)果中出現(xiàn)了30歲的職工,這顯然不是用戶所期望的結(jié)果;在數(shù)學(xué)計(jì)算中,由于很難人工計(jì)算出結(jié)果,因此,不能判斷出結(jié)果是否正確,只有當(dāng)發(fā)現(xiàn)明顯的誤差結(jié)果時(shí),需要重頭排查,才會(huì)發(fā)現(xiàn)程序出現(xiàn)錯(cuò)誤.一般情況下,編譯器在編譯程序時(shí),不能檢測(cè)到程序中的邏輯錯(cuò)誤,也不會(huì)產(chǎn)生邏輯錯(cuò)誤的提示,因此邏輯錯(cuò)誤比較難排除,需要程序員仔細(xì)的分析程序,并借助集成開發(fā)環(huán)境提供的調(diào)試工具,才能找到出錯(cuò)的原因,并排除錯(cuò)誤.
2.1主動(dòng)設(shè)置語法錯(cuò)誤,將語法錯(cuò)誤轉(zhuǎn)化為教學(xué)資源
在教學(xué)設(shè)計(jì)階段,根據(jù)以往的經(jīng)驗(yàn),事先預(yù)計(jì)學(xué)生有可能出現(xiàn)的語法錯(cuò)誤,并把這些錯(cuò)誤放在學(xué)生要完成的實(shí)驗(yàn)中,通過主動(dòng)設(shè)置錯(cuò)誤,讓學(xué)生在改正錯(cuò)誤的過程中加深印象,理解錯(cuò)誤中所涉及的問題,減少以后再次出現(xiàn)錯(cuò)誤的幾率.例如在使用C語言作數(shù)學(xué)運(yùn)算時(shí),必須注意運(yùn)算結(jié)果的數(shù)據(jù)類型,如果運(yùn)算結(jié)果超出運(yùn)算數(shù)據(jù)類型所表示的數(shù)值范圍,必須進(jìn)行強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換.
2.2因勢(shì)利導(dǎo)邏輯錯(cuò)誤,將邏輯錯(cuò)誤轉(zhuǎn)化為重難點(diǎn)教學(xué)
邏輯錯(cuò)誤是一種很好的課堂資源,這些資源對(duì)突破課程的重難點(diǎn)教學(xué)非常有幫助.學(xué)生出現(xiàn)了邏輯錯(cuò)誤,表明學(xué)生在學(xué)習(xí)重難點(diǎn)的過程中遇到了問題,由于教學(xué)中的講解都是能夠正確運(yùn)行的程序,學(xué)生在學(xué)習(xí)時(shí)不存在理解上的障礙,但是在實(shí)驗(yàn)過程中,往往出現(xiàn)大量的錯(cuò)誤,說明學(xué)生對(duì)重難點(diǎn)的知識(shí)遷移有困難.例如在循環(huán)語句的講解,對(duì)循環(huán)語句的正確描述是教學(xué)的重難點(diǎn),在使用while和do while編寫程序時(shí),學(xué)生會(huì)出現(xiàn)語句次序顛倒致使程序結(jié)果不符合要求、條件表達(dá)式錯(cuò)誤、循環(huán)邊界錯(cuò)誤等邏輯錯(cuò)誤.教師可以利用這些典型錯(cuò)誤引導(dǎo)學(xué)生進(jìn)行討論和總結(jié),從而建立和完善學(xué)生的知識(shí)結(jié)構(gòu).
2.3激活隱形錯(cuò)誤,培養(yǎng)學(xué)生創(chuàng)新能力
學(xué)生在學(xué)習(xí)編程的過程中比較注重結(jié)果,很難發(fā)現(xiàn)隱形錯(cuò)誤.教師遇到此類問題,不要直接指出錯(cuò)誤,而是要引導(dǎo)學(xué)生多觀察、多思考,學(xué)生對(duì)程序的隱形錯(cuò)誤有較大的興趣,找到錯(cuò)誤后會(huì)非常興奮.造成隱形錯(cuò)誤的原因通常是學(xué)生對(duì)某些關(guān)鍵環(huán)節(jié)把握不夠準(zhǔn)確,教師可以利用這個(gè)機(jī)會(huì),引導(dǎo)學(xué)生進(jìn)行知識(shí)結(jié)構(gòu)的再構(gòu)建,培養(yǎng)學(xué)生的探究能力與創(chuàng)新能力.
2.4整合錯(cuò)誤,建立錯(cuò)誤共享資源庫(kù)
發(fā)現(xiàn)錯(cuò)誤的一個(gè)很重要的價(jià)值是提醒其他同學(xué)減少同類錯(cuò)誤.在上機(jī)實(shí)驗(yàn)操作中,要求學(xué)生把每次課堂上出現(xiàn)的錯(cuò)誤記錄下來,放到錯(cuò)誤共享資源庫(kù),學(xué)生在調(diào)試程序時(shí),如果發(fā)現(xiàn)錯(cuò)誤,也可以從資源庫(kù)里“檢索”.已經(jīng)完成任務(wù)的同學(xué)在建立錯(cuò)誤共享資源庫(kù)的過程中提高了分析問題的能力,也有效的緩解教師的壓力,使得教師可以側(cè)重于對(duì)一些共性的問題進(jìn)行關(guān)注.
程序設(shè)計(jì)基礎(chǔ)課程上機(jī)實(shí)驗(yàn)操作是程序設(shè)計(jì)基礎(chǔ)課程的必備環(huán)節(jié),在程序設(shè)計(jì)基礎(chǔ)課程中所占比例在40%以上,在教學(xué)大綱和教學(xué)內(nèi)容的要求下,程序設(shè)計(jì)基礎(chǔ)課程的教學(xué)流程首先由教師明確實(shí)驗(yàn)任務(wù)、講解實(shí)驗(yàn)內(nèi)容,然后學(xué)生自主上機(jī)練習(xí),教師負(fù)責(zé)答疑.我們?cè)O(shè)計(jì)的實(shí)驗(yàn)錯(cuò)誤轉(zhuǎn)化提升策略在教學(xué)流程中添加了程序錯(cuò)誤調(diào)試的過程,要求學(xué)生在上機(jī)編程中對(duì)出現(xiàn)的錯(cuò)誤進(jìn)行記錄并自行設(shè)計(jì)解決方法,完成程序錯(cuò)誤調(diào)試.具體的實(shí)驗(yàn)教學(xué)流程如圖2所示.
圖2程序設(shè)計(jì)基礎(chǔ)課程實(shí)驗(yàn)教學(xué)流程
實(shí)驗(yàn)錯(cuò)誤轉(zhuǎn)化提升的教學(xué)效果評(píng)價(jià)選取《C語言程序設(shè)計(jì)》課程教材中的10個(gè)程序進(jìn)行學(xué)習(xí),這些程序涵蓋變量定義、流程控制、函數(shù)、結(jié)構(gòu)體等內(nèi)容.選取兩個(gè)班級(jí)共計(jì)60名同學(xué),并對(duì)學(xué)生分為三組,第一組采取三種實(shí)驗(yàn)錯(cuò)誤轉(zhuǎn)化提升策略,并配合學(xué)生錯(cuò)誤共享資源庫(kù)進(jìn)行實(shí)驗(yàn)學(xué)習(xí),第二組采用傳統(tǒng)的上機(jī)實(shí)驗(yàn)方式,第三組由學(xué)生自主上機(jī)學(xué)習(xí),并配合錯(cuò)誤共享資源庫(kù)進(jìn)行錯(cuò)誤修正.學(xué)生在學(xué)習(xí)10周后進(jìn)行測(cè)試,測(cè)試結(jié)果分別統(tǒng)計(jì)語法錯(cuò)誤、邏輯錯(cuò)誤、隱形錯(cuò)誤的數(shù)量,實(shí)驗(yàn)統(tǒng)計(jì)結(jié)果如圖3所示.
圖3實(shí)驗(yàn)錯(cuò)誤轉(zhuǎn)化提升教學(xué)效果評(píng)價(jià)
從圖3中,我們可以明顯地看出小組之間存在著明顯的差異,尤其在語法錯(cuò)誤和邏輯錯(cuò)誤方面,差別較大.
通過對(duì)各個(gè)小組的測(cè)試結(jié)果進(jìn)行分析,我們可以得出如下結(jié)論:
(1)語法錯(cuò)誤作為實(shí)驗(yàn)課程的出現(xiàn)頻率最高的一種錯(cuò)誤類型,決定了學(xué)生學(xué)習(xí)興趣的持續(xù)和后續(xù)學(xué)習(xí)的基礎(chǔ).通過本文的錯(cuò)誤轉(zhuǎn)化提升策略,學(xué)生在語法錯(cuò)誤的修正方面具有了較好的效果,而未經(jīng)過錯(cuò)誤轉(zhuǎn)化提升策略訓(xùn)練的學(xué)生,盡管在學(xué)習(xí)過程中能夠改正部分語法錯(cuò)誤,但是存在著“常改常犯”的不良習(xí)慣,缺少總結(jié)與提升的過程.值得注意的是,第三組自主學(xué)習(xí)的同學(xué),經(jīng)過錯(cuò)誤共享資源庫(kù)的幫助,語法錯(cuò)誤的數(shù)量明顯減少,但是邏輯錯(cuò)誤和隱性錯(cuò)誤的數(shù)量未出現(xiàn)明顯變化.因此,錯(cuò)誤共享資源庫(kù)對(duì)學(xué)生改善語法錯(cuò)誤的效果較為明顯.
(2)由于學(xué)生的語法錯(cuò)誤明顯減少,導(dǎo)致在教學(xué)過程中邏輯錯(cuò)誤出現(xiàn)的幾率增高,學(xué)生在實(shí)驗(yàn)過程中,著重解決程序的邏輯問題,進(jìn)而對(duì)程序?qū)崿F(xiàn)的思路和算法的理解有了進(jìn)一步的提高,教師也在教學(xué)過程中側(cè)重對(duì)學(xué)生邏輯思維能力的培養(yǎng),對(duì)學(xué)生編程能力的培養(yǎng)與編程習(xí)慣的養(yǎng)成起到了積極的作用.
(3)經(jīng)過錯(cuò)誤轉(zhuǎn)化提升方法訓(xùn)練的學(xué)生,在出現(xiàn)隱性錯(cuò)誤的數(shù)量上高于另外兩組,主要原因在于學(xué)生的語法錯(cuò)誤和邏輯錯(cuò)誤數(shù)量相對(duì)較少,編程已經(jīng)進(jìn)入到一個(gè)知識(shí)結(jié)果再構(gòu)建的過程,盡管隱性錯(cuò)誤的數(shù)量高于另外兩組,但是在總體的錯(cuò)誤數(shù)量顯示出該組學(xué)生的技術(shù)水平要遠(yuǎn)遠(yuǎn)超過另外兩組的平均水平,也體現(xiàn)出了學(xué)生在學(xué)習(xí)過程中的探究能力和創(chuàng)新能力.
本文從理論和實(shí)踐兩個(gè)方面,研究了程序設(shè)計(jì)課程實(shí)驗(yàn)錯(cuò)誤轉(zhuǎn)化提升策略,從實(shí)踐應(yīng)用情況來看,取得了比較理想的效果,學(xué)生的編程素養(yǎng)和編程能力得到了很大的提高.學(xué)生的錯(cuò)誤是課堂教學(xué)的寶貴財(cái)富,我們應(yīng)充分利用這些錯(cuò)誤帶給我們的教學(xué)契機(jī).實(shí)驗(yàn)錯(cuò)誤也只有在不斷地改正中行進(jìn),在教師的良好駕馭中轉(zhuǎn)化提升,才能更好的提升學(xué)生的編程能力.實(shí)驗(yàn)錯(cuò)誤轉(zhuǎn)化提升策略的應(yīng)用,使得傳統(tǒng)的計(jì)算機(jī)實(shí)驗(yàn)教學(xué)模式發(fā)生了重大的改變.通過實(shí)驗(yàn)錯(cuò)誤轉(zhuǎn)化提升的訓(xùn)練和錯(cuò)誤共享資源庫(kù)的構(gòu)建,讓學(xué)生不再停留在上機(jī)改錯(cuò)的低層次學(xué)習(xí),從而在根本上改變學(xué)生對(duì)學(xué)習(xí)編程的畏難心理,真正做到從錯(cuò)誤走向正確.
參考文獻(xiàn):
〔1〕葛文庚,藺莉.程序設(shè)計(jì)基礎(chǔ)課程教學(xué)模式研究與設(shè)計(jì)[J].電子設(shè)計(jì)工程,2012(04):44-46.
〔2〕許碧榮.電子專業(yè)PLC實(shí)驗(yàn)的教學(xué)改革與實(shí)踐[J].電子科技,2010(12):112-113.
〔3〕徐慧,郭榮祥,周建美.多維一體的“數(shù)據(jù)結(jié)構(gòu)”實(shí)踐教學(xué)系統(tǒng)的構(gòu)建[J].計(jì)算機(jī)教育,2011(10): 66-70.
〔4〕張鵬,戚梅.《編譯原理》課程教學(xué)改革探討[J].電子設(shè)計(jì)工程,2012(05):8.
〔5〕王曉杰,王蕓.工程化方法在《數(shù)據(jù)結(jié)構(gòu)》實(shí)踐教學(xué)中的應(yīng)用[J].福建電腦,2011(3):182-183.
〔6〕張勇.“Java程序設(shè)計(jì)”課程教學(xué)改革研究[J].電腦知識(shí)與技術(shù),2011(24):5980-5981.
〔7〕于曉強(qiáng),趙秀巖,閆丕濤.計(jì)算機(jī)程序設(shè)計(jì)課程中計(jì)算思維能力的培養(yǎng)[J].計(jì)算機(jī)教育,2011 (13):18-21.
基金項(xiàng)目:渤海大學(xué)教學(xué)改革研究項(xiàng)目(BDJG-14-QN-B-001)
收稿日期:2015年11月22日
中圖分類號(hào):TP311;G642
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1673-260X(2016)02-0256-03
赤峰學(xué)院學(xué)報(bào)·自然科學(xué)版2016年4期