在普通高中信息技術(shù)新課程標準中,“算法與程序設(shè)計”作為一個選修模塊位列其中,目的是使學生對計算機處理信息的內(nèi)在機理有更進一步的了解。新教材將技能的掌握與方法的應用緊密結(jié)合,并體現(xiàn)了對技術(shù)與人文素養(yǎng)的全面培養(yǎng)。作為一名普通高中信息技術(shù)教師,在新老教材交替中,感到的不僅僅是教材內(nèi)容的變化,更多的是教材中體現(xiàn)出的全新教育理念以及更大的靈活使用教材的空間。當然,針對教學細節(jié)還可以有更多創(chuàng)造性的應用。下面就循環(huán)結(jié)構(gòu)的教學談談自己的觀點。
一、循環(huán)結(jié)構(gòu)的兩種循環(huán)形式
結(jié)構(gòu)化程序設(shè)計思想中,所有的程序都可以由順序、選擇和循環(huán)這三種基本結(jié)構(gòu)組成。其中,尤以循環(huán)結(jié)構(gòu)內(nèi)容最為難以理解和掌握,而它又恰恰是最重要的一種結(jié)構(gòu)形式。
我們知道,循環(huán)結(jié)構(gòu)分為當型循環(huán)(圖1)和直到型循環(huán)(圖2)兩種形式,這兩種循環(huán)方式可以通過控制條件的改變來相互轉(zhuǎn)化。一般當型循環(huán)的表示方式有(以VB6.0為說明語言):Do While…Loop;Do…Loop While。直到型循環(huán)的表示方式有:Do…Loop Until;Do Until…Loop。For…Next結(jié)構(gòu)形式的本質(zhì)是當型循環(huán)。
二、現(xiàn)行教材在教學中的問題
現(xiàn)行教材以及各種培訓教程在介紹循環(huán)結(jié)構(gòu)時,一般都會先介紹For…Next結(jié)構(gòu)形式,因為該結(jié)構(gòu)形式簡單,對于一些已知循環(huán)次數(shù)的問題書寫起來很方便。但學生不易從中理解循環(huán)的本質(zhì)及循環(huán)控制條件。此外,循環(huán)的本質(zhì)在當型和直到型循環(huán)部分進行了比較詳細的介紹,無形中把For…Next孤立為另外一種循環(huán)形式,學生對幾種循環(huán)形式難以融會貫通地理解。在使用For…Next的結(jié)構(gòu)時,循環(huán)條件搞不清楚,不能使用Until或While循環(huán)寫出有固定次數(shù)的循環(huán)代碼……導致在解決具體問題時出現(xiàn)了很多錯誤。例如:求For i=1.1 To 3.5:Next循環(huán)結(jié)束后i的值。由于學生對For…Next結(jié)構(gòu)只是機械地記憶和模仿,所以即便教師進行了過程分析,學生也不能完全理解,因為學生把For…Next與當型循環(huán)完全割裂開來了。再如:用Do While…Loop形式寫出1+2+3+…n的程序段。學生很難分析出循環(huán)控制條件應為i<=n,且在循環(huán)體中總?cè)菀讓=i+1這句代碼忘掉,這又是受了For…Next形式的影響。又如:判斷For i=3 To 1 Step 1:Next循環(huán)會執(zhí)行幾次。學生能順利地判斷出零次,但若改為For i=1 To 1 Step 1:Next循環(huán)會執(zhí)行幾次時,學生還是回答零次。這是因為學生沒有真正理解For…Next循環(huán)的機理。
各種循環(huán)結(jié)構(gòu)形式的書寫格式雖然不同,但是它們反映的本質(zhì)問題還應是一致的。以往的教學順序容易使學生把不同的書寫形式區(qū)分理解和記憶,不利于對本節(jié)知識點的融會貫通。
三、教學設(shè)想
鑒于這種情況,我在教學中對這部分內(nèi)容的教學順序做了如下調(diào)整:先講直到型循環(huán),再講當NO6JdV3R0dwOQNaQuDdtbq4V6R6stvkwJuvIsonpESI=型循環(huán),最后講For…Next循環(huán)。
具體教學過程如下:
提出問題1:北京獲得了2008年的奧運會主辦權(quán)。你知道國際奧委會是如何投票決定主辦權(quán)歸屬的嗎?
對五個申報城市進行表決的程序是:首先進行第一輪投票,如果有哪一個城市得票超過半數(shù),那么該城市將獲得主辦權(quán),表決結(jié)束;如果所有申報城市的票數(shù)都沒有過半數(shù),則將得票最少的城市淘汰,并重復上述過程,直到選出一個主辦城市為止。請用一個算法來表述上述過程。
算法:
S1:投票;
S2:統(tǒng)計票數(shù)。如果有一個城市的票數(shù)超過半數(shù),那么該城市獲得主辦權(quán),轉(zhuǎn)S3,否則淘汰得票數(shù)最少的城市,轉(zhuǎn)S1;
S3:宣布主辦城市。
用流程表示上述算法(圖3)。
該算法中,在主辦城市沒有選出之前,“投票并淘汰得票最少的城市”這一操作將會重復執(zhí)行,直到有一個城市獲半數(shù)以上的票。像這種需要重復執(zhí)行同一操作的結(jié)構(gòu)稱為循環(huán)結(jié)構(gòu)。
用示意圖將該流程表示為圖A(注意圓圈部分是循環(huán)結(jié)束的條件):循環(huán)體一直執(zhí)行,直到條件成立時退出循環(huán),這種循環(huán)稱為直到型循環(huán)。
問題2:寫出求1×2×3×4×5的值的一個算法。
算法A:
S1:設(shè)一個變量T=1;
S2:設(shè)另一個變量i=1;
S3:T←T×i{將T×i的結(jié)果仍放在變量T中};
S4:i←i+1 {i的值增加1};
S5:如果i大于5,則得到的T值就是所要的結(jié)果,否則再執(zhí)行上述的S3、S4。
流程圖見圖4。代碼為:
i=1:T=1
Do
T=T*i
i=i+1
Loop Until i>5
Print T
將算法A修改為算法B,注意與算法A的區(qū)別。
算法B:
S1:設(shè)一個變量T=1;
S2:設(shè)另一個變量為i=1;
S3:如果i不大于5,T←T×i ,執(zhí)行S4,否則轉(zhuǎn)到S5;
S4:i←i+1,重復S3;
S5:輸出T。
分析:在算法B中,執(zhí)行S3、S4是有條件的,當i≤5時才可以。上述循環(huán)結(jié)構(gòu)用示意圖表示為圖B,當條件成立時循環(huán)體才執(zhí)行,這種循環(huán)稱為當型循環(huán)。
流程圖見圖5。代碼表示為:
i=1:T=1
Do While i<=5
T=T*i
i=i+1
Loop
Print T
在算法B中,可以看成i從1到5,用代碼表示為For i=1 To 5;每次增加1用代碼表示為Step 1,合起來寫即為For i=1 To 5 Step 1:Next。這種書寫格式僅是Do While…Loop形式的一個變形,運行機理還是一樣的,當i≤5時循環(huán)體才能被執(zhí)行。再分析它們的區(qū)別:For…Next結(jié)構(gòu)的循環(huán)控制條件是有循環(huán)變量參與的,它必須知道循環(huán)的確切次數(shù),而Do While…Loop形式則不需要。
最后通過舉一些既可以用For循環(huán)格式又可以用While格式的例子加以鞏固,這樣學生就可在理解這兩種循環(huán)格式時融會貫通了。
新教材中很多內(nèi)容都滲透著新課程標準的思想理念。雖然教材是教師教學的方向指南,學生學習的重要資源,但我們不能拘泥于教材,應活用教材并超越教材,根據(jù)具體的課題和不同的學生以及情境科學地、創(chuàng)造性地進行自己的教學設(shè)計。只有我們每個教師的教學設(shè)計更富有智慧和個性,我們的學生才能更富有智慧和個性。
?。ㄗ髡邌挝唬航K大豐高級中學)