胡燕萍
摘 要:在VB教學(xué)過程中,根據(jù)實際需要導(dǎo)入各種類型的傳統(tǒng)游戲和益智類的小游戲,從而使學(xué)生能更加深刻地體會到算法的精髓,喜歡上程序設(shè)計并且激發(fā)學(xué)生自主設(shè)計程序的想法。
關(guān)鍵詞:游戲;VB教學(xué);算法
一談到游戲,很多人都會用有色眼鏡去看待它,把它往貶義的道路上驅(qū)趕。這個游戲到底“殘害”了多少青少年純潔的心靈,讓他們走上了游戲的“不歸路”。其實游戲本身并沒有過錯,電腦游戲也同樣如此,只是作為玩游戲的人,并沒有把握好尺度,原本美好的東西讓人成癮。既然大多數(shù)學(xué)生都喜歡游戲,那么把游戲引入到平時的教學(xué)中,是否可以吸引學(xué)生的注意力,從而提高課堂效率?
在當(dāng)前的信息技術(shù)選修模塊教學(xué)中,大部分學(xué)校選擇《多媒體技術(shù)與應(yīng)用》,只有少部分學(xué)校選擇《算法與程序設(shè)計》。前者形象、具體,而后者單調(diào)、抽象。但是后者對于學(xué)生邏輯思維能力的培養(yǎng)確實大有好處,而且和數(shù)學(xué)必修三的部分內(nèi)容一致。所以,學(xué)生還是希望有“一箭雙雕”的效果出現(xiàn)。既然方向選定,如何學(xué)好《算法與程序設(shè)計》就成為關(guān)鍵。從解析算法到枚舉算法,從選擇排序到冒泡排序,從順序查找到折半查找,再到最后的遞歸算法。學(xué)生如何在有限的時間里弄懂這些概念,確實需要時間、方法和技巧。
在過去的兩年教學(xué)時間里,我開始嘗試用游戲進(jìn)行導(dǎo)入,讓各類不同的游戲貫穿整個VB教學(xué)過程,確實收到了比較好的效果。我在這里把游戲分為兩大類:傳統(tǒng)游戲和電腦益智游戲,都是屬于小型游戲,且有自己特定的功能。一般傳統(tǒng)游戲主要用于導(dǎo)入,以及形象的演示過程,讓學(xué)生能更好地體會。而小型益智類的游戲則主要是激發(fā)學(xué)生的學(xué)習(xí)興趣,用所學(xué)的只是去設(shè)計類似的游戲程序,學(xué)有所用。下面將細(xì)分成四個部分來進(jìn)行展示。
一、利用華羅庚的“泡茶”游戲,來說明算法的優(yōu)劣性
想要泡茶喝,但當(dāng)時的情況是:開水沒有,水壺要洗,茶壺和茶杯要洗,火已經(jīng)生了,茶葉也有了,怎么辦?我為每個工種設(shè)計了一個時間:洗開水壺1分鐘,灌涼水1分鐘,洗茶壺1分鐘,洗茶杯2分鐘,拿茶葉1分鐘,燒開水10分鐘,泡茶1分鐘。當(dāng)我把每個工種的時間直接在大屏幕上顯示后,讓學(xué)生來思考誰能利用最快的時間泡出熱氣騰騰的茶水,而且每個工種都到位?有些學(xué)生看到題目不假思索地直接回答17分鐘,也有學(xué)生回答13分鐘。但是每出來一個答案,學(xué)生會自己判斷是否正確。學(xué)生的熱情非常高,幾乎每個學(xué)生都能參與進(jìn)來,你的答案可能是17分鐘,也有可能是13分鐘。這些都是正確的答案,但是只有一種效率是最高的。從這個游戲環(huán)節(jié)中,學(xué)生可以直接明白:解決問題的算法有多種,但是有優(yōu)劣之分,而我們學(xué)習(xí)的目的就是設(shè)計出一個高效的算法。
二、從智力游戲“神父過河”中理解算法的表示方式——流
程圖
算法的表示形式有多種,比如自然語言、流程圖、偽代碼等,到底哪個才是最佳的表示方式,這些實際問題需要讓學(xué)生進(jìn)行體會。所以,我挑選了“神父過河”的智力游戲,游戲內(nèi)容大概是:三個神父和三個魔鬼要過河,一條船每次只能載三個人過河。在河的兩邊,如果神父的個數(shù)多于魔鬼的個數(shù),神父安全。反之,神父將被魔鬼吃掉,游戲結(jié)束。之所以選擇這個游戲:第一,是因為這個游戲稍微有點難度,更能提起學(xué)生的挑戰(zhàn)欲望;第二,完成這個游戲需要九個步驟,學(xué)生在描述自己的攻關(guān)思路時,需要用自然語言進(jìn)行描述,需要清晰的思路。
當(dāng)成功攻關(guān)的學(xué)生把游戲步驟詳細(xì)用自然語言描述以后,讓學(xué)生再一次上臺過關(guān)。學(xué)生很難記清剛才自然語言描述的全部過程,就會選擇更加簡便的記錄步驟的方式,這個時候流程圖就呼之欲出,解決了剛才出現(xiàn)的問題,而且能更加深刻地領(lǐng)會到流程圖的特點——直觀、易用。
三、利用游戲“按照身高整理一列隊伍”,來體會冒泡排序和選擇排序的精髓
在排序這部分內(nèi)容中,重要的是讓學(xué)生體會排序的過程以及特點。冒泡排序的特點:每次都是從頭開始,而且是相鄰兩個元素進(jìn)行互換。而選擇排序的特點:每次都找出一個最值,放在最前面的位置。如何來更好地理解這個過程?我就在班級中隨機挑選了6位身高比較接近的同學(xué),在教室前面我準(zhǔn)備了6把椅子讓他們隨意坐下。坐下的目的是不讓下面的學(xué)生直接看出身高。冒泡排序可以這樣操作:按照從低到高的原則,我先讓第1個學(xué)生和第2個站起來,比較高低,矮的坐第1個位置,高的坐第2個位置;隨后讓第2個學(xué)生和第3個學(xué)生站起來,同樣,矮的坐第2個位置,高的坐第3個位置。依此類推,當(dāng)?shù)?個和第6個學(xué)生比較完畢后,個子最高的學(xué)生就坐在了第6個位置上。緊接著進(jìn)行第二輪,第三輪比較……臺上的6位學(xué)生起起落落,終于塵埃落定,也體會到了一點:麻煩。這就是冒泡排序。在演示選擇排序的時候,同樣也是6位學(xué)生隨意就座,但是我增加了一個道具,就是沒有刻度的竹竿先測量一下第1個學(xué)生的身高,到達(dá)了哪個位置,做一個記號。然后拿著這個竹竿在剩余學(xué)生中依次測量,記錄個子最高的學(xué)生在哪個位置。如果發(fā)現(xiàn)最高的學(xué)生在第5個位置,那么就和第1個位置上的學(xué)生進(jìn)行交換,反之不動。抓住這些關(guān)鍵點之后,在閱讀代碼時就能分清楚:如果是相鄰兩個進(jìn)行比較,那么肯定有“if a(i)>a(i+1) then ”這個式樣的句子。如果有竹竿記錄最大值的位置,那么肯定有類似的“k=I, if a(k)>a(j) then k=j”這種句式。其實學(xué)生判斷到底是哪種排序的依據(jù)就在于此。
四、利用“猜數(shù)字”的游戲,讓學(xué)生更好地理解折半查找算法,并且激勵學(xué)生自己動手寫出小游戲
曾經(jīng)在央視2套有個風(fēng)靡一時的游戲,就是看商品猜價格。有些人猜到邏輯混亂,而有些人則是非常輕松地在主持人的提示之下拿到最后的戰(zhàn)利品。這個到底是怎么做到的?我也把猜數(shù)字的游戲搬到了課堂,并且還承諾只要猜對就有獎品贈送。這個游戲是我自己設(shè)計的,隨機產(chǎn)生一個100以內(nèi)的整數(shù),讓學(xué)生猜數(shù)字,并且根據(jù)系統(tǒng)的提示進(jìn)行數(shù)字調(diào)整。學(xué)生的興趣很高,學(xué)生猜的過程其實和電視節(jié)目中一樣,有思路混亂的學(xué)生,明明系統(tǒng)提示“太大了!”仍舊還要猜大的數(shù);也有學(xué)生思路非常清晰,能在7次之內(nèi)把最后結(jié)果猜到,最后讓這個學(xué)生公布訣竅,其實就是折半查找的要點所在:每次都找中間點,并且不斷縮小范圍。從代碼上來看,就肯定能找到類似的句子“m=(L+R)\2和L=M+1,R=M-1”。本次的猜數(shù)字游戲,還需要學(xué)生在上完新課后進(jìn)行自己獨立設(shè)計。這是一個學(xué)生完全有能力自己獨立編寫的程序。
在兩年的教學(xué)過程中發(fā)現(xiàn),游戲確實可以對學(xué)生的課堂學(xué)習(xí)效果有較好的促進(jìn)作用。不管是在信息技術(shù)基礎(chǔ)的教學(xué)中,還是在算法與程序設(shè)計的教學(xué)中,只要教師挑選到了合適的游戲并加以合理利用,肯定可以讓游戲大放光彩的。唯一可惜的是,由于高中課程緊張,一個學(xué)期的算法學(xué)習(xí)只能算是冰山一角,要想真正讓學(xué)生喜歡程序設(shè)計、學(xué)好程序設(shè)計,需要各個環(huán)節(jié)的配合和協(xié)調(diào),讓學(xué)生真正能獨立寫出一些小的游戲程序,從而促進(jìn)自己的學(xué)習(xí)。
參考文獻(xiàn):
[1]陶增樂.信息技術(shù)基礎(chǔ)[M].浙江教育出版社,2004,4(1).
[2]陶增樂.算法與程序設(shè)計[M].浙江教育出版社,2005,7(1).