算法與程序設(shè)計(jì)是高中信息技術(shù)選修課程之一,學(xué)習(xí)算法與程序設(shè)計(jì)就是要讓學(xué)生了解并掌握如何使用計(jì)算機(jī)解決問(wèn)題,尤其使學(xué)生進(jìn)一步體驗(yàn)算法思想,了解算法和程序設(shè)計(jì)在解決問(wèn)題過(guò)程中的地位和作用,這是學(xué)習(xí)本模塊的關(guān)鍵。
那么作為計(jì)算機(jī)教師,我們?cè)鯓硬拍苌虾眠@門課?下面是我在教學(xué)上得一些心得和體會(huì)。
一、游戲?qū)?,激發(fā)學(xué)生興趣
“興趣是最好的老師”。學(xué)生有興趣時(shí),注意力高度集中,思維異?;钴S,求知欲異常激烈,能夠發(fā)揮出潛在的學(xué)習(xí)積極性、主動(dòng)性和自覺(jué)性。它在學(xué)生的學(xué)習(xí)中具有重要的作用,而算法是一門枯燥的學(xué)科,學(xué)生感興趣與否關(guān)鍵看教學(xué)方法的選擇?!端惴ㄅc程序設(shè)計(jì)》選用的程序設(shè)計(jì)語(yǔ)言是VB,我就從比較有趣的VB程序開(kāi)始,我從網(wǎng)絡(luò)上查找了一些現(xiàn)成的小實(shí)例,然后經(jīng)過(guò)改進(jìn),給同學(xué)們演示。如猜數(shù)小游戲,出題小程序,貪吃蛇,小球碰撞等,看完這些學(xué)生是既興奮羨慕,個(gè)個(gè)都摩拳擦掌,然后我找了一些小程序如計(jì)算圓面積。以激發(fā)學(xué)生的學(xué)習(xí)興趣。
二、聯(lián)系生活,巧妙解決問(wèn)題
算法來(lái)源于生活,是解決問(wèn)題的策略和步驟的提煉,將算法融入生活,我們的課也會(huì)通俗易懂多姿多彩。排序算法是《算法與程序設(shè)計(jì)》中較難理解的一種算法,如果純粹地以數(shù)字為例進(jìn)行介紹,給予學(xué)生的印象不會(huì)太深刻,而且會(huì)顯得過(guò)于抽象,不通俗易懂。所以針對(duì)這一現(xiàn)象,我們可以充分利用學(xué)生對(duì)排隊(duì)這一活動(dòng)的熟悉程度來(lái)引出排序算法,加深學(xué)生對(duì)排序算法的直觀印象,促進(jìn)學(xué)生對(duì)排序算法的理解。具體可以這樣操作,在提出排序算法之前,教師可在班級(jí)內(nèi)隨機(jī)抽取10名高矮不一的學(xué)生隨機(jī)站立,并在這十名學(xué)生背后依次貼上10、9、8、7、6、5、4、3、2、1這十個(gè)數(shù)(高的同學(xué)對(duì)應(yīng)大的數(shù),矮的同學(xué)對(duì)應(yīng)小的數(shù)),然后請(qǐng)這十位學(xué)生演示以不同的方法從矮到高的排隊(duì)過(guò)程,教師可在一旁指導(dǎo)學(xué)生先按照冒泡排序的方法進(jìn)行排隊(duì)演示,并記錄他們演示過(guò)程中的每一次移動(dòng)。
通過(guò)這樣的演示活動(dòng),學(xué)生對(duì)排序算法就會(huì)產(chǎn)生相對(duì)直觀的認(rèn)識(shí),也不會(huì)對(duì)排序算法望而生畏,對(duì)排序算法的理解也將更加清晰明了。還有一些如超市購(gòu)物打折,郵局寄包裹等,都是與我們得生活密不可分的問(wèn)題。
三、設(shè)置疑問(wèn),活躍課堂氣氛
學(xué)起于思,思起于疑。學(xué)生的積極思維,往往是從疑問(wèn)開(kāi)始的,有了疑問(wèn),才會(huì)進(jìn)一步思考、探索,激起求知欲。教師若能根據(jù)這一心理特征,以問(wèn)題引路,故布疑陣,創(chuàng)設(shè)矛盾,設(shè)置懸念,則會(huì)強(qiáng)烈地激發(fā)學(xué)生探求問(wèn)題奧妙的積極性,誘導(dǎo)學(xué)生由疑到思,由思到知。比如在教FOR循環(huán)語(yǔ)句時(shí),我把j的終始值寫成了一個(gè)自然數(shù),雖然程序能夠運(yùn)行,但花形卻不對(duì)。
'@
'@@
'@@@
'@@@@
'@@@@@
'@@@@@@
Private Sub Command1_Click()
Dim i As Integer '定義i為整型變量
Dim j As Integer '定義j為整型變量
For i = 1 To 6 Step 1
For j = 1 To i Step 1
Print "@";
Next j
Next i
End Sub
這就激起了學(xué)生的疑惑,引發(fā)了學(xué)生的思考。我隨機(jī)引出外循環(huán)控制行數(shù),內(nèi)循環(huán)控制每一行的個(gè)數(shù),經(jīng)過(guò)仔細(xì)推敲,學(xué)生發(fā)現(xiàn)每一行的個(gè)數(shù)與所在行保持一致,j的終始值應(yīng)該為i。
這樣通過(guò)設(shè)疑激疑,引導(dǎo)學(xué)生將程序完善,最終解疑,不僅可以激發(fā)學(xué)生的學(xué)習(xí)熱情,調(diào)動(dòng)他們的學(xué)習(xí)積極性,其解決問(wèn)題后的成就感也會(huì)油然而生。
四、授之以漁,教會(huì)學(xué)生自己調(diào)試
一個(gè)程序如何順利的 “脫產(chǎn)”,調(diào)試的過(guò)程是非常重要的。學(xué)過(guò)、鉆研過(guò)程序設(shè)計(jì)的人都有同樣的感受,很多情況下,調(diào)試程序的過(guò)程會(huì)比程序編寫的過(guò)程更為困難。任何一個(gè)天才都不敢說(shuō),他編的程序是100%正確的。幾乎每一個(gè)稍微復(fù)雜一點(diǎn)的程序都必須經(jīng)過(guò)反復(fù)的調(diào)試、修改,最終才完成。所以說(shuō),程序的調(diào)試是編程中的一項(xiàng)重要技術(shù)。很多老師都深有體會(huì),學(xué)生編寫程序只能是紙上談兵,一上機(jī)運(yùn)行就錯(cuò)誤百出,自己又不會(huì)查錯(cuò),一節(jié)課下來(lái),老師是馬不停蹄的修改學(xué)生程序,同時(shí)這也打擊了學(xué)生學(xué)習(xí)算法的積極性。
實(shí)際上對(duì)于剛剛接觸程序的學(xué)生來(lái)說(shuō),犯的錯(cuò)誤具有共性,主要是標(biāo)點(diǎn)符號(hào)錯(cuò)誤,“:”與“;”分不清楚或者漏掉標(biāo)點(diǎn);關(guān)鍵詞與變量名之間沒(méi)有空格;語(yǔ)句不完整,IF沒(méi)有END IF,F(xiàn)OR沒(méi)有NEXT;對(duì)象名或?qū)傩圆徽_等。只要學(xué)生稍微掌握一些調(diào)試、運(yùn)行程序的方法就能大大提高程序運(yùn)行得效率。因此,每次上機(jī)課后我都會(huì)在自己的備課本上記錄學(xué)生出現(xiàn)得問(wèn)題,以便在以后上課時(shí)進(jìn)行總結(jié)。我把學(xué)生分組,遇到問(wèn)題組內(nèi)先討論,真解決不了,再來(lái)請(qǐng)教老師。
當(dāng)然通過(guò)以上方法多半只能發(fā)現(xiàn)語(yǔ)法錯(cuò)誤,對(duì)邏輯錯(cuò)誤則無(wú)能為力,因而在學(xué)生能初步檢查語(yǔ)法錯(cuò)誤后,就教他們調(diào)試程序技巧,設(shè)置斷點(diǎn),逐語(yǔ)句跟蹤程序,監(jiān)視變量值等。通過(guò)以上訓(xùn)練學(xué)生不但能自己調(diào)試程序,同時(shí)也幫助了他們理解程序,尤其是到循環(huán)結(jié)構(gòu)以后,這種作用就更明顯了,而且這種能力完全可以遷移到今后的學(xué)習(xí)和生活中去。
以上是我對(duì)該課程十幾年來(lái)的教學(xué)心得,隨著機(jī)器人大賽的火熱,算法與程序教學(xué)再次成為熱點(diǎn)。算法存在著很大的探索空間,我想教師不應(yīng)該只是教學(xué)者,更應(yīng)該成為研究者和學(xué)習(xí)者,要加強(qiáng)教學(xué)反思,才能提高自己的教學(xué)水平。
(作者單位:江蘇省徐州市豐縣順河中學(xué))