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