摘 要:枚舉算法是Visual Basic程序設(shè)計(jì)的基本算法。傳統(tǒng)的教學(xué)方法,通過(guò)概念和程序引入,枯燥乏味,容易使學(xué)生產(chǎn)生消極畏難情緒。本文優(yōu)選有趣、典型的數(shù)學(xué)問(wèn)題,通過(guò)情景創(chuàng)設(shè),自然而然地引入枚舉算法,喚起學(xué)生的學(xué)習(xí)興趣,并讓學(xué)生充分體驗(yàn)編程的快樂(lè),起到事半功倍的教學(xué)效果。
關(guān)鍵詞:數(shù)學(xué)問(wèn)題;枚舉算法;學(xué)習(xí)興趣
枚舉算法是Visual Basic程序設(shè)計(jì)的基本算法,也是浙江省高職考計(jì)算機(jī)類專業(yè)必考知識(shí)點(diǎn),其重要性不言而喻。因此,怎樣讓學(xué)生輕松掌握枚舉算法,提高學(xué)習(xí)興趣,克服畏難情緒是VB枚舉算法教學(xué)設(shè)計(jì)的關(guān)鍵。
在中職學(xué)生初次接觸VB枚舉算法時(shí),單純講解枯澀的程序及相關(guān)的概念和語(yǔ)句是十分枯燥乏味的。在教學(xué)設(shè)計(jì)時(shí),要充分考慮到中職學(xué)生的水平,優(yōu)選出能更好地幫助學(xué)生掌握枚舉算法的實(shí)例,提出一些數(shù)學(xué)問(wèn)題,讓學(xué)生能積極參與思考、討論數(shù)學(xué)問(wèn)題,教師再利用程序設(shè)計(jì)的枚舉算法來(lái)解答它。通過(guò)這個(gè)過(guò)程,將VB的枚舉算法作為解決問(wèn)題的工具推出,充分利用典型數(shù)學(xué)問(wèn)題的特點(diǎn),從需要出發(fā),激發(fā)起學(xué)生強(qiáng)烈的學(xué)習(xí)興趣,就完全可以起到事半功倍的教學(xué)效果。
在枚舉算法中,循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)的設(shè)計(jì)是重點(diǎn)也是難點(diǎn),在教學(xué)設(shè)計(jì)時(shí),為了讓學(xué)生真正掌握算法和計(jì)算機(jī)語(yǔ)言規(guī)則,選擇一個(gè)典型例題,讓學(xué)生掌握FOR循環(huán)和IF選擇的語(yǔ)句格式,理解其執(zhí)行過(guò)程,然后在此類實(shí)際問(wèn)題中能得心應(yīng)手地運(yùn)用枚舉算法。我正是通過(guò)“興趣”這個(gè)導(dǎo)入點(diǎn),收到了理想的教學(xué)效果。
設(shè)計(jì)教學(xué)流程如下:導(dǎo)入(提出問(wèn)題,引發(fā)思考)→討論(制定競(jìng)賽小組,分組討論后,以小組為單位給出答案,看誰(shuí)答得正確全面)→確定算法(引入枚舉算法解決問(wèn)題的方案)→演示(講解數(shù)學(xué)方法,展示程序代碼,介紹循環(huán)和選擇結(jié)構(gòu))→編程調(diào)試(編寫輸入代碼,體驗(yàn)程序運(yùn)行)→提升(二次競(jìng)賽,解決類似問(wèn)題)。
歷史上典型的百錢買百雞問(wèn)題所需要求解的是:公雞五錢一只,母雞三錢一只,小雞三只值一錢,100錢剛好買了100只雞,公雞、母雞、小雞各買了多少只?學(xué)生通過(guò)心算、列方程等方法計(jì)算,花了很長(zhǎng)的時(shí)間,卻很難把答案全部求解出來(lái),好些學(xué)生是只得到了一組答案,求解不全。這時(shí),我適時(shí)通過(guò)多媒體投影展示教師課前編好的VB程序,只需要輕松單擊按鈕,程序即可在瞬間求得所有解,快速又一個(gè)不漏地給出所有的答案。那么,能夠解決這個(gè)問(wèn)題的奇妙程序是怎樣的呢?教師適時(shí)展示程序的核心代碼如下:
For gj=0 to 20
For mj=0 to 33
xj=100-gj-mj
If gj*5+mj*3+xj/3=100 then print”公雞數(shù)量”;gj,”母雞數(shù)量”;mj,”小雞數(shù)量”;xj
Next mj
Next gj
學(xué)生一個(gè)個(gè)瞪大了眼,緊盯著屏幕:啊,這就是便捷、強(qiáng)大的枚舉算法!在學(xué)生的想像中,這樣的程序設(shè)計(jì)一定有大段大段的程序代碼,非常復(fù)雜!想不到結(jié)構(gòu)如此簡(jiǎn)潔明了,同學(xué)們就知道了“枚舉算法”并不難,消除了學(xué)生的畏難情緒,大大地激發(fā)了學(xué)生的學(xué)習(xí)熱情。
那么,這段代碼為什么能夠解答這個(gè)問(wèn)題呢?老師從學(xué)生熟悉的數(shù)學(xué)方法入手。如果100錢全部用來(lái)買公雞,可以買20只,所以公雞gj可能的數(shù)量范圍應(yīng)該是從0到20只。由此類推,母雞的可能范圍是從0到33只,在此范圍內(nèi)逐個(gè)搜索滿足條件的公雞、母雞的數(shù)量就可以得出答案。指定范圍內(nèi)的搜索是通過(guò)循環(huán)語(yǔ)句FOR實(shí)現(xiàn),條件通過(guò)IF語(yǔ)句列出。這樣,學(xué)生就很容易理解每一句程序代碼的作用,覺(jué)得枚舉算法并不深?yuàn)W,有足夠的信心學(xué)好它。
枚舉算法解決問(wèn)題的基本思想和方法就是在可能的范圍內(nèi)查找滿足條件的答案,具體問(wèn)題具體分析,確定范圍和條件,然后設(shè)計(jì)與實(shí)現(xiàn)。只要搞懂了數(shù)學(xué)問(wèn)題,就不難理解枚舉算法了。接下來(lái),為檢測(cè)學(xué)生的掌握情況,引導(dǎo)學(xué)生探究,拋出一個(gè)有趣的雞兔同籠問(wèn)題:籠子中有一些雞和兔,從上面數(shù)有35個(gè)頭,從下面數(shù)有94只腳,問(wèn)雞和兔各有幾只?通過(guò)這個(gè)問(wèn)題,可以檢驗(yàn)學(xué)生對(duì)于枚舉算法的掌握情況。首先,要求分組討論解決這個(gè)問(wèn)題,這樣有利于培養(yǎng)學(xué)生團(tuán)隊(duì)精神。讓學(xué)生在理清數(shù)學(xué)解法的基礎(chǔ)上,用VB的枚舉算法來(lái)嘗試編程解決,讓學(xué)生自己動(dòng)手在電腦上輸入程序,鍛煉動(dòng)手能力、思考能力、解決問(wèn)題能力。當(dāng)有些學(xué)生遇到困難時(shí),教師給予適當(dāng)啟發(fā)或邀請(qǐng)已完成任務(wù)的同學(xué)給予幫助。這樣,讓所有學(xué)生都能及時(shí)地解決問(wèn)題,都能體驗(yàn)程序運(yùn)行后得出結(jié)果的成就感,這對(duì)于提高和保持學(xué)習(xí)興趣起著舉足輕重的作用。
這節(jié)課在教法上采用的是討論學(xué)習(xí)和任務(wù)驅(qū)動(dòng)相結(jié)合的方法,先拋出學(xué)生非常熟悉、非常典型的數(shù)學(xué)問(wèn)題,充分調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,結(jié)果卻把學(xué)生暫時(shí)難住了!這有利于激發(fā)學(xué)生的求知欲,引導(dǎo)學(xué)生分析問(wèn)題,從數(shù)學(xué)分析過(guò)渡到程序解決,教給學(xué)生枚舉算法的思路。實(shí)踐證明,通過(guò)改變傳統(tǒng)的“教師講、學(xué)生做”的教學(xué)模式,按照上述思路,一切以學(xué)生為主,通過(guò)情景創(chuàng)設(shè),可以自然而然地引入枚舉算法。在教學(xué)過(guò)程中,避免了晦澀難懂的程序解說(shuō),深入淺出,學(xué)生輕輕松松掌握枚舉算法,并能真切地感受到計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言是一種解決問(wèn)題的強(qiáng)大工具。
經(jīng)典的數(shù)學(xué)問(wèn)題,可以有效地激發(fā)學(xué)生的學(xué)生興趣,讓學(xué)生積極主動(dòng)地來(lái)思考問(wèn)題。通過(guò)轉(zhuǎn)移、歸納、總結(jié),培養(yǎng)具體的探究解決問(wèn)題的能力,在這個(gè)過(guò)程中,學(xué)生才真正成為學(xué)習(xí)的主體,在實(shí)踐中體驗(yàn)到了成功的喜悅,很好地掌握和消化枚舉算法的重難點(diǎn)。興趣激發(fā)之后,可以不知不覺(jué)把學(xué)生引入VB世界中去進(jìn)一步學(xué)習(xí)和提升,教學(xué)的目的也真正達(dá)到了!
參考文獻(xiàn):
[1]陳建軍.可視化編程應(yīng)用基礎(chǔ)——Visual Basic[M].北京:高等教育出版社,2012.
作者簡(jiǎn)介:陳敏,中學(xué)高級(jí)教師,浙江省紹興市,浙江諸暨技師學(xué)院。