吳敏
程序設(shè)計對于初中生而言,是一門比較難理解、需要花時間的課程。在學(xué)習(xí)的過程中,學(xué)生往往會因為內(nèi)容比較枯燥、上機時間短而錯誤百出,對程序設(shè)計的學(xué)習(xí)失去信心,甚至從一開始就產(chǎn)生畏懼心理,影響課堂學(xué)習(xí)效果。初中階段的程序設(shè)計學(xué)習(xí),主要難度在于熟悉程序設(shè)計的思想,為高中程序設(shè)計的學(xué)習(xí)打下扎實的基礎(chǔ)。因此,程序設(shè)計教學(xué)中如何引導(dǎo)學(xué)生正視出現(xiàn)的錯誤、充分利用錯誤資源提高自己的學(xué)習(xí)效果,值得每一位信息技術(shù)老師深思。
一、正視錯誤、巧用工具,避免簡單錯誤重復(fù)化
利用記事本文件,隨時記錄錯誤。在程序設(shè)計入門之初,學(xué)生所犯的錯誤多為語法或忘記聲明變量等低級錯誤,而這些錯誤直接影響學(xué)生后期程序設(shè)計的深入學(xué)習(xí)。如果單純地講授語法知識會比較枯燥,且不利于學(xué)生記憶掌握,因此我們可以將語法知識滲透在編程過程中。對于調(diào)試中出現(xiàn)的語法錯誤,可以利用記事本文件拷貝下來,比如C++程序設(shè)計中,學(xué)生會經(jīng)常出現(xiàn)缺少分號、括號不成對等錯誤。通過記事本文件的記錄,學(xué)生會發(fā)現(xiàn)很多錯誤是一樣的,對于那些經(jīng)常出現(xiàn)的錯誤,可以把錯誤情況做成提醒,從而避免簡單錯誤重復(fù)化。
在程序設(shè)計的各個階段,學(xué)生犯的錯誤往往會不一樣。可以讓學(xué)生小組討論某一階段主要面臨的重難點問題,針對重點問題,強化練習(xí),全班討論,逐個擊破。
二、巧用錯誤、加深體驗,提升學(xué)生信息編程思維
1. 將學(xué)生的常見錯誤滲透在教學(xué)演示中,讓學(xué)生學(xué)會糾錯。在程序設(shè)計學(xué)習(xí)過程中,學(xué)生的錯誤很多是有共性的。教師在上課的過程中,要充分考慮學(xué)生可能犯的錯誤,將學(xué)生經(jīng)常出現(xiàn)的錯誤滲透在教學(xué)演示過程中。比如,在編程過程中,經(jīng)常會用到替身變量,但剛開始,學(xué)生往往會忘記替身變量的聲明;教師可在教學(xué)過程有意地出錯,讓學(xué)生糾錯,以加深學(xué)生對變量的理解;還有一些簡單的容易忘記的語法錯誤,在演示過程中時不時地出現(xiàn)幾次,可以讓學(xué)生明白錯誤有時難以避免,對于錯誤,要積極地解決。
2. 體驗錯誤帶來的意想不到的價值,在編程中敢于“犯錯”。在編程過程中,學(xué)生經(jīng)常會出現(xiàn)意想不到的錯誤,由此帶來意想不到的運行結(jié)果。這些錯誤產(chǎn)生的原因不是學(xué)生上課不認(rèn)真聽講,而是學(xué)生真正去認(rèn)真思考了但是思考的過程中可能有不全面的地方。這類錯誤是學(xué)生學(xué)習(xí)、教師教學(xué)過程中珍貴的學(xué)習(xí)資源。我們要善于發(fā)現(xiàn)此類錯誤并能及時地利用其開展延伸教學(xué)。比如,將此類問題設(shè)置成程序糾錯題,讓學(xué)生在糾錯過程中學(xué)會讀程序、分析算法,加深對算法的理解,體現(xiàn)錯誤的價值。
3. 以小組力量收集有價值的錯誤,建立錯誤共享資源庫。程序設(shè)計除了需要學(xué)生邏輯思維嚴(yán)謹(jǐn),還需要學(xué)生有大膽的實踐創(chuàng)新思維。我們要鼓勵學(xué)生正確對待編程過程中出現(xiàn)的錯誤,而不是把錯誤藏起來。因此,可以定期組織學(xué)生交流自己的錯誤記事本,在小組探討的基礎(chǔ)上提出一些有價值的思路,建立共享錯誤資源庫。學(xué)生可以查看其他同學(xué)的錯誤情況,比對自己相似的錯誤,提醒自己避免錯誤重復(fù)化;對于自己還沒有出現(xiàn)過的錯誤,思考一下其中的具體原因,采取應(yīng)對措施,預(yù)防出現(xiàn)此類錯誤。
三、錯中思辨,在錯誤中尋找正確、在正確中尋找錯誤
在錯誤中尋找正確,在正確中尋找錯誤,可以幫助學(xué)生錯中思辨,建立強大的算法思維。編程過程中,寫完程序代碼編且程序可以順利運行,但是運行結(jié)果全是錯誤的,這樣的錯誤往往是由于算法出現(xiàn)了錯誤而導(dǎo)致的。雖然說運行結(jié)果不是起初的設(shè)想,但是也有可能是解決該問題的另一種方法,對于這種錯誤,我們可以鼓勵學(xué)生進行小組探究,在討論中找出錯誤的地方并進行問題的歸納,探究產(chǎn)生錯誤的原因,真正理解編程過程中的程序思想,對這種問題的探究有利于學(xué)生算法思維的培養(yǎng)。例如,在C++程序中打印三角形圖案程序,行列變量i、j的變化可以產(chǎn)生不同的排版效果,教師可以鼓勵學(xué)生大膽“犯錯”,在錯誤中思辨,從而真正領(lǐng)會程序中各個變量的功能,融會貫通,實現(xiàn)從無意識地打印出某種圖形到有目的地完成各種圖形的打印。
在程序設(shè)計中,沒有絕對的錯誤,也沒有絕對的正確。我們要鼓勵學(xué)生從錯誤中吸取經(jīng)驗,培養(yǎng)學(xué)生從正確中反思問題。程序設(shè)計過程中,算法并不是唯一的,不同的算法,運算效率相差懸殊,因此,面對看似正確的程序,我們要引導(dǎo)學(xué)生同題異構(gòu),可以通過設(shè)計運算次數(shù)變量分析程序的運行效率,借助小組探究,互相促進、提高。
總之,編程學(xué)習(xí)中的錯誤是難免的,但并不可怕,錯誤有時也是學(xué)生思維的火花,教師如果能夠引導(dǎo)學(xué)生正確面對、有效利用,“錯誤”產(chǎn)生的思維火花也可以在算法思維的培養(yǎng)中“燎原”。
(作者單位:江蘇省蘇州市吳江區(qū)蘇州灣實驗初級中學(xué))
責(zé)任編輯:王 燕