上海戲劇學院附屬戲曲學校 郭 毅
相傳國際象棋是由印度舍罕王手下的大臣薩.班達依爾發(fā)明的,舍罕王準備獎賞達依爾,問他想得到怎樣的獎賞,達依爾說:“陛下,請您在這張棋盤的第一個小格內(nèi)賞給我一粒麥子,在第二個小格內(nèi)給兩粒,在第三個小格內(nèi)給四粒,照這樣下去,每一小格內(nèi)都比前一小格內(nèi)的麥粒數(shù)加一倍,直到把每一小格都擺上麥粒為止。并把這樣擺滿棋盤上六十四格的麥粒賞給您的仆人”。國王認為這位大臣的要求不算多,就爽快地答應了。國王叫人抬來麥子并按這位大臣的要求,在棋盤的小格內(nèi)擺放麥粒,在第一個格內(nèi)放一粒,在第二格內(nèi)放兩粒,第三格內(nèi)放四粒……第十格內(nèi)放五百一十二粒,還沒擺到第二十格,一袋麥子已經(jīng)用光了。國王這才發(fā)現(xiàn),即使把全國的麥子都拿來,也兌現(xiàn)不了他對這位大臣的獎賞承諾,這位大臣所要求的麥粒數(shù)究竟是多少呢?
1.窗體設(shè)置
2.程序清單
累加器為:0,計數(shù)器為第一項的值:1
在上述算法一的設(shè)計中,我們考慮到了每一個格子中的麥粒數(shù)目是成等比級數(shù)的遞增,但是,同時我們也考慮到對于前后格子中的麥粒數(shù)目的表達式中,等比級數(shù)的指數(shù)是一個等差數(shù)列。
1.程序清單一:
累加器為0:S=0
計數(shù)器為1:I=1
2.程序清單二:
累加器為0:S=0
計數(shù)器為0:I=0
3.程序清單三:
累加器為1:S=1
計數(shù)器為0:I=0
4.程序清單四:
累加器為1:S=1
計數(shù)器為1:I=1
綜上所述,循環(huán)程序中的三要素:變量初始化、循環(huán)體、循環(huán)條件可以說是一環(huán)套著一環(huán),只要有一個要素變化了,其它二者也要做相應的變化才能實現(xiàn)相同的程序運算結(jié)果。該問題的解決中牽扯到累加器和計數(shù)器的初值設(shè)置,并且二者之間在程序中是有關(guān)聯(lián)的,這種關(guān)聯(lián)的關(guān)系也就決定了所附的初值引發(fā)了循環(huán)體的變化。在此基礎(chǔ)上,不僅僅可以設(shè)計單純數(shù)字的變化,也可以讓學生嘗試圖形的變化,試著讓學生利用循環(huán)程序繪制不同的圖形效果等,讓學生深刻體會不管是怎樣實現(xiàn)視覺上還是抽象的數(shù)字上面的循環(huán)變化,都離不開變量初始化、循環(huán)體、循環(huán)條件的關(guān)聯(lián)。至此利用多種算法來編寫程序,無疑給學生帶來更多解決問題的思路,開拓學生的視野,培養(yǎng)學生的一種發(fā)散性思維能力。同時,讓學生切身感受到針對一個問題可以有多種算法,體驗算法的多樣性。算法給學生留下“條條大路通羅馬”的經(jīng)驗,因此,也激勵著學生在思考問題的時候,會想到更多更好更精簡的算法來解決它。有了自己獨有的算法,自然而然會調(diào)動其極大的學習興趣,這也是我們教師如何把枯燥的算法程序的學習轉(zhuǎn)變?yōu)閷W習興趣的切入點。毋庸置疑,能夠把學生引入算法設(shè)計的殿堂,對于我們教師來說,前期艱辛的準備工作不可缺少,教學多納入“授之以漁,而不是授之以魚”的方法,首先,讓學生對算法結(jié)構(gòu)有個清晰的概念,其次,自己應該想到各種解決問題的方法。只有這樣,才能把問題的來龍去脈透徹詳盡的加以把握。