王世貴
摘要:FOR循環(huán)作為高中信息技術(shù)VB模塊中的重難點(diǎn)之一,其執(zhí)行過程的深入理解和執(zhí)行原理的準(zhǔn)確把握,是學(xué)生能夠全面正確地掌握和科學(xué)合理地應(yīng)用該循環(huán)結(jié)構(gòu)的前提和保證。本文從實(shí)際出發(fā),指出了學(xué)生容易出現(xiàn)問題的幾個(gè)關(guān)鍵知識(shí)點(diǎn),幫助學(xué)生系統(tǒng)地理解該循環(huán)結(jié)構(gòu)。
關(guān)鍵詞:信息技術(shù);FOR循環(huán);循環(huán)變量;循環(huán)次數(shù)
中圖分類號(hào):G632.3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2017)01-0141-01
在高中信息技術(shù)中,F(xiàn)OR循環(huán)結(jié)構(gòu)是VB程序設(shè)計(jì)模塊中的重點(diǎn),更是難點(diǎn)。在循環(huán)次數(shù)可以確定的情況下,一般習(xí)慣于用FOR循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)算法,因?yàn)檫@種結(jié)構(gòu)語句格式簡單,執(zhí)行過程容易理解,使用起來比較方便。
在FOR循環(huán)的實(shí)際中,需要介紹該循環(huán)的功能、語句格式以及執(zhí)行過程,讓學(xué)生明確該循環(huán)可以做什么、怎樣用這種結(jié)構(gòu)來解決實(shí)際問題。所以,這里對(duì)這種結(jié)構(gòu)做一個(gè)更深層次地解析,幫助學(xué)生更好地掌握這部分內(nèi)容。
先給出FOR循環(huán)的一般語句格式:FOR i=e1 to e2 [step e3]
……
NEXT i
其中i為循環(huán)控制變量,e1、e2、e3為控制循環(huán)的參數(shù),分別表示初值、終值和步長。
For循環(huán)的執(zhí)行過程:(1)計(jì)算表達(dá)式e1、e2、e3的值。(2)將e1賦給循環(huán)變量i。(3)判斷是否進(jìn)入循環(huán)。當(dāng)i的值沒有超過e2時(shí)就進(jìn)入循環(huán);當(dāng)i的值超過e2時(shí)就跳出循環(huán),執(zhí)行Next語句的下一語句。(4)i增加一個(gè)步長值,然而再返回FOR語句執(zhí)行判斷操作。
1 正確深入地理解執(zhí)行過程,特別注重領(lǐng)會(huì)兩個(gè)關(guān)鍵知識(shí)點(diǎn)
在講解FOR循環(huán)語句格式時(shí),如果只是單純的從語法角度出發(fā),機(jī)械的分析語句格式,而沒有將執(zhí)行過程結(jié)合起來進(jìn)行理解,那么學(xué)生就不能夠很好的把握對(duì)于循環(huán)變量的值的變化等情況,自然造成對(duì)結(jié)構(gòu)原理的理解出現(xiàn)偏差。在理解FOR循環(huán)執(zhí)行過程時(shí)需要學(xué)生把握以下兩個(gè)關(guān)鍵點(diǎn):
(1)循環(huán)變量初值的改變。當(dāng)程序運(yùn)行到FOR語句,判斷出循環(huán)變量i的值不滿足循環(huán)條件時(shí),不能誤認(rèn)為程序不執(zhí)行循環(huán)體,循環(huán)變量i的值就沒有發(fā)生改變。
例如:i=0
For i=10 To 1 Step 2
……
Next i
Print “i=”;i
以上程序段運(yùn)行后,大部分學(xué)生會(huì)認(rèn)為程序運(yùn)行結(jié)果是i=0,其實(shí)正確結(jié)果為i=10。導(dǎo)致錯(cuò)誤的原因就是沒能正確地理解For循環(huán)的執(zhí)行過程,學(xué)生會(huì)認(rèn)為只有在判斷能進(jìn)入循環(huán)時(shí)才給循環(huán)變量賦初值,而忽略了FOR語句無條件執(zhí)行的特殊情況。
(2)循環(huán)變量終值的改變。當(dāng)FOR循環(huán)執(zhí)行循環(huán)體若干次以后,再次判斷循環(huán)變量的值不再滿足循環(huán)條件時(shí),不能將對(duì)循環(huán)變量i的終值的理解停留在最后一次執(zhí)行循環(huán)體前的狀態(tài),而是最后一次執(zhí)行NEXT語句后的狀態(tài)。
例如:For i =1 to 10 step 2
……
Next i
Print “i=”;i
以上程序段運(yùn)行后,也有一部分學(xué)生認(rèn)為結(jié)果為i=9,但正確結(jié)果為i=11。導(dǎo)致錯(cuò)誤的原因還是沒能正確地理解For循環(huán)的執(zhí)行過程,忽略了Next語句的功能。
因此,學(xué)生如果不能全面深入地理解FOR循環(huán)執(zhí)行過程的話,在解決具體問題是就會(huì)發(fā)生錯(cuò)誤。
2 全面準(zhǔn)確地把握?qǐng)?zhí)行原理,深刻認(rèn)識(shí)特殊情況下循環(huán)次數(shù)的計(jì)算方法
我們發(fā)現(xiàn),關(guān)于For循環(huán)的循環(huán)次數(shù)問題也讓很多同學(xué)感到苦惱。對(duì)于循環(huán)參數(shù)是數(shù)值常量的情況,一般會(huì)利用int((e2-e1)/e3)+1順利解決。但對(duì)于一些特殊情況,比如循環(huán)變量或循環(huán)參數(shù)的值在循環(huán)體中不斷發(fā)生變化,往往計(jì)算循環(huán)次數(shù)就比較犯難。舉個(gè)例子:a = 4: b = 0: c = -1
' t = 0 '循環(huán)次數(shù)計(jì)數(shù)器
For i = a To b Step c
a = a + 1
b = b + 1
c = c - 1
' t = t + 1
' Print "第"; t; "次循環(huán)后:"; "a = "; a; "; b = "; b; "; c = "; c
Next i
上述程序段中,很多同學(xué)認(rèn)為循環(huán)參數(shù)a、b、c在每次循環(huán)的值都不同,因此無法確定循環(huán)次數(shù)。下面我們做個(gè)驗(yàn)證,將上述代碼中的注釋語句釋放為有效運(yùn)行代碼,運(yùn)行結(jié)果為:
從運(yùn)行結(jié)果發(fā)現(xiàn),循環(huán)次數(shù)只有五次。其實(shí)很多同學(xué)都忽略了一個(gè)前提,就是For循環(huán)一般是在已知循環(huán)次數(shù)的情況下使用的,那么必然要求循環(huán)的初值、終值和步長這三個(gè)參數(shù)的值必須提前確定。一旦初值、終值和步長的值被確定,在整個(gè)循環(huán)過程中都不會(huì)再改變,即使在它們中包含的變量的值在循環(huán)體內(nèi)被改變,也不會(huì)影響循環(huán)的執(zhí)行次數(shù),仍可用Int((e2-e1)/e3)+l來計(jì)算。
還有一種特殊情況,如果循環(huán)變量i在循環(huán)體內(nèi)被重新賦值,則循環(huán)次數(shù)就會(huì)發(fā)生變化。比如在上例的next語句前增加一條語句i=i-1,則循環(huán)次數(shù)就會(huì)變成3次。
通過前面幾個(gè)問題的解析,相信會(huì)給同學(xué)們帶來一些幫助。再次提醒大家,在學(xué)習(xí)FOR循環(huán)時(shí)一定要特別注重執(zhí)行過程的分析,全面把握?qǐng)?zhí)行原理,對(duì)程序中影響循環(huán)次數(shù)的各種因素,一定要正確深入地理解,只有這樣,才能在實(shí)際應(yīng)用中熟練使用FOR循環(huán)解決問題。