999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Vb中循環語句深入討論

2007-12-31 00:00:00鄭鳳玲
中國校外教育(下旬) 2007年10期

[摘要]本文簡單介紹了VB語言中循環語句的格式、功能、注意事項。并對Vb語言中循環語句for…next作了深入討論。

[關鍵詞]循環語句 棧 循環棧

循環是很重要的,不要輕視。循環主要是看循環結構。特別是循環嵌套。循環結構是計算機語言里一種重要的結構,它的應用廣泛,最簡單的例子是累加器的作用,還可以用于窮舉法,更直觀的例子是把某件事重復指定的次數,這樣就不用把要重復的語句輸入多次,而通過循環結構完成,非常方便。循環語句是每一門編程語言都不可缺少的語句,利用循環語句可以讓程序員避免頻繁地做同樣的工作。用好循環語句可以讓程序變的簡單易懂,循環結構能夠讓程序重復的執行一行或多行代碼,VB支持以下兩種循環結構:一種是計數型語句,另一種是條件型循環語句。

一、For…next循環

For…next循環能將一組語句重復執行指定的次數,當知道要執行循環的次數時,用這種方法很方便。

具體語法格式是:

For <循環變量>=<初賦值> To <終值> [Step <步長>]

<語句塊>……

……[exit for]

<語句塊>……

Next <循環變量>

其中:循環變量是一個變量,必須為數值型。比如for i=1 to 100循環100次,會被執行指定次數。語句塊:為一些指令可以是一句或多句語句,構成循環體。Exit for可選,退出循環。Next 循環變量, 將控制轉回for語句,以對變量的下一個值重復循環。Step可選,指定每次執行循環變量更換的數量。

功能:(1) 循環變量取初值,登記終值和步長(2)檢查循環變量的當前值是否越過終值。如已越過,則退出循環,執行NEXT的后續語句,否則,做下面的工作;(3)執行循環體內的各語句;(4)遇NEXT語句時,參照對應的FOR語句,將循環變量的值加上步長再賦值給循環變量,返回第(2)步進行比較。

在默認情況下,Step被設為“1”, 如果省略就表明是1可以省略,Step也可以設為負值,例如:

Dim s=0

For I=1 To 10

s=s+I

Next I

這是一個最簡單的累加器的例子,把1到10累加在一起,然后賦值給“s”這樣的效果和上面是一樣的,只不過是倒著加罷了,請看:

Dim s=0

For I=10 To 1 Step -1

s=s+I

Next I

循環的次數: n=int ((終值-初值)/2+1)

各種循環情況的進一步說明:

越過終值的含義是指一個循環經由NEXT結束以后,循環變量的值正好是越過終值后的第一個值(或者說,是循環區內最后一個值加步長),任何變量的當前值,總是要登記入變量表中的。而循環變量也是變量,因此,它的每次取值,都要記入變量表(注意,一個變量取得新值時,舊值被沖掉)。當循環變量取得越過終值的第一個值時,盡管它導致了循環的結束,但在變量表中卻被保留了下來。

二、While…wend循環

While語句也是一個很常用的循環語句,具體語法格式是:

Do While … Loop語句

While … Wend 語句

Do … Loop While

While后面都跟邏輯條件判斷,“Do While … Loop語句”和“While … Wend 語句”作用相似,都是先判斷While后面的條件是否為“真”,如果為“真”則執行里面的語句,如果為“假”,則退出循環,循環直至條件為“假”終止。“Do … Loop While ”與前兩者的區別在于,它不管條件的真假,都會先執行“Do”后面的語句,也就是說,它至少執行語句一次。與While用法相似的還有Until語句,它是直至條件為真則終止循環,句式把While上述三個語句的While換成Until即可,但是因為容易記混,所以我建議只用While即可。Until <條件>可以相當于While Not <條件>。For循環和Whlie循環應當根據適當的環境使用,它們有時也可替換。While…wend只要給定的條件為真,while循環就執行一系列的語句。

具體語法格式是:

While <條件>

<語句塊>

Wend

其中,如果條件成立,既為真,則執行<語句塊>為假就結束循環,將循環穿帶wend后面的語句。

C語言里有一個“for”循環語句,VB里也有“For”關鍵字,作用也差不多,只是VB的“For”語句更容易理解。

像do loop while 和do while loop 的應用有哪些不同的意義呢?

顧名思義,do…loop while就是一開始就要執行一次循環,然后到while時再判斷是否繼續循環

而do while…loop則是開始第一次循環前先判斷while的條件,如果是真才開始第一次循環,是假的話就直接不進入循環。簡而言之do…loop while肯定至少進行一次循環。

三、循環語句的深入討論

因為循環語句具有一定的語句格式和一定的執行過程,所以一般使用起來十分方便。然而循環語句畢竟要比其它語句復雜,特別是在循環體內允許使用轉移、循環等語句,這樣,復雜程度更趨嚴重。在使用循環語句時,稍不小心,將會導致意想不到的后果。為此,對循環語句的執行細節作進一步的討論。從而引出一些使用循環語句時值得注意的問題、常見的錯誤和難點分析。

1.循環語句的執行細節

一個VB的程序的運行中,對于循環語句的處理,是通過循環棧的輔助作用來實現的。所謂“棧”,這是計算機軟件中的一個非常重要的概念。它是一種先進后出(或稱后進先出)的結構。好像一個貨棧一樣,最先放入的貸物,總是放在最底下,再放入貨物時,往上推,而往出取時,總是把最上層的貨物先取走(后進先出)。

計算機中的棧,是存放數據的,它總是開辟在內存中一個固定地址開始的一片連續單元中。這個固定地址,稱為棧底。另外有一個專門的指針(稱為棧指針)在程序未運行前指向這個棧底。當一個數據需要存入棧中(稱為進棧)時,就存入棧指針所指向的地址中,然后棧指針上移一個數據位置。如果再有數據要進棧,作類似的處理。反過來,如果要從棧中取出一個數據(稱為退棧、出棧)時,棧指針首先下移一個數據位置,把所指向的那個數據(實際上是剛才最后一次存入的數據)取出供使用(注意,雖然叫退棧,但這個數據并未從剛才存放的內存位置上消失,只是它已處于棧指針之外,成為無效數據罷了)。可見棧指針是浮動的。進棧、退棧總是通過棧指針找到相應位置的,而棧指針所指向的位置又是通過進棧和退棧改變的。任何時刻棧指針所指向的位置,通常稱為棧頂或棧的當前位置。

所謂循環棧,是專用于處理循環語句的棧的棧結構。棧中的數據是成組存放的,它們有循環變量名、FOR語句所在的位置等一組必要的信息(數據)。現在就可以從棧的角度進一步闡明循環語句執行時的細節了。在程序運行中發現FOR語句時,首先要從循環棧的棧頂到棧底逐組檢查一遍(稱為遍歷),看有無當前待處理的FOR 保留字所用的循環變量名,若是沒有(在程序運行中遇到第一個FOR語句時,肯定是這樣。因為這時棧頂和棧底重合,棧中尚無數據),則使待處理的FOR的有關數據進棧。然后循環變量取初值,執行循環體內的各語句。如果在循環體內又出現了FOR語句,重復上述過程:遍歷循環棧,查找有無待處理的同名循環變量。若還是沒有,第二個FOR的有關數據進棧(這時棧中有兩組數據了)同樣地,內層的(第二個)循環變量取初值,執行內循環體內的各語句。如果這個內循環體中又出現了FOR語句,不言而喻,照上面的辦法去處理。通過上面的敘述,可以看到,對于循環棧而言,FOR的作用,是在循環棧中登錄一些有關數據備查。對于多重循環語句,第一重(最外層)循環的有關數據總是在棧底;最后一重(最內層)循環的有關數據總是在棧頂。

下面,再來敘述一下NEXT的處理過程。

假若處理的是一個單循環,這時循環棧中當然也只有一個數據,這組數據正處在棧指針的當前位置上。程序運行遇到保留字NEXT時,如果NEXT之后跟有變量名,則遍歷循環棧,看棧中有無同名的循環變量名。若是沒有,則給出出錯提示。若是棧中的數據里有NEXT后跟的變量名,則將棧指針指向這組數據,并提出NEXT使用。

那么退同循環又做些什么事呢?很簡單,那就是將棧針下移一組數據的位置(對于單循環而言,這時棧指針又返回棧底,回復到初始狀況了)這也就是使剛剛用過的那組數據退棧了。

知道了單循環NEXT處理過程,對于多重循環的NEXT處理過程,也就迎刃而解了,這里僅就雙循環的情況稍作說明。

執行VB程序時,最先要處理的NEXT,一般是屬于最內層的那個循環的。對于它的處理,可以按上面處理單循環的方法去做,直到內層循環結束,相應的數據退棧,外層循環的有關數據處于循環棧頂。如果程序運行中又遇到了NEXT,一般它屬于外層循環的,也可按單重循環的辦法處理,而當它不滿足退出的條件時,總要返回外層循環體的頭上繼續執行。這樣將會再次遇到內循環的FOR,這個FOR的有關數據,也就再次進入循環中。往下運行時如果又遇到了內層循環的(而不是外層循環的)NEXT,則內層循環再次被執行,直到退出。內循環退出后,再遇到的NEXT便屬于外循環的了,再次重復上面的處理過程,直到退出外循環。可見,每遇到一個外循環的NEXT,只要返回其循環體,內循環的有關數據將進棧一次;而每退出一次內循環,這組數據也就退棧一次。從而通過這種進棧、退棧,實現了對循環層次的控制。

2.使用循環語句應注意的問題、常見錯誤和難點分析

(1)不循環或死循環的問題 主要是循環條件、初值、終值、步長的設置有問題;(2)循環語句結構中缺少配對的結束語句 For…next中沒有配對的next語句,do語句沒有一個終結的loop語句等; (3)循環嵌套時,內外循環交叉 外循環必須完全包含內循環;(4)循環結構與IF塊結構交叉 正確的應為IF結構語句塊完全包含循環結構;或循環結構完全包含IF結構;(5)累加、連乘,存放累加、連乘的變量賦初值問題 在一層循環中,存放累加、連乘結果的變量設置應在循環語句前。多層循環中存放累加、連乘結果的變量設置要具體問題分別對待; (6)關于內外轉移的問題 允許從循環體內轉出循環體外,不允許從循環體外轉出循環體內;(7)大數相乘產生“溢出”問題 改變變量聲明類型。

參考文獻:

[1]龔沛曾.visual basic 程序設計簡明教程(第二版).

(作者單位:山西忻州師范學院)

主站蜘蛛池模板: 国产精品人莉莉成在线播放| 成人一级免费视频| AV片亚洲国产男人的天堂| 成人蜜桃网| 亚洲精品午夜天堂网页| 爆操波多野结衣| 精品国产aⅴ一区二区三区| 亚洲人成网址| 国产成人你懂的在线观看| 在线观看亚洲成人| 99精品在线看| 久久这里只有精品8| 黄色污网站在线观看| 五月婷婷导航| 成年人福利视频| 国产极品美女在线播放| 丝袜久久剧情精品国产| 91外围女在线观看| 亚洲人成成无码网WWW| 亚洲视频三级| 国产亚卅精品无码| 精品偷拍一区二区| 天天色综网| 国产玖玖视频| 欧美午夜在线观看| 综合色88| 色综合久久综合网| 亚洲国产成熟视频在线多多| 免费不卡视频| 国产一级毛片高清完整视频版| 久久久久夜色精品波多野结衣| 国产网友愉拍精品视频| 在线精品视频成人网| 久久精品娱乐亚洲领先| 亚洲无码高清视频在线观看| 国产精欧美一区二区三区| 国产福利免费视频| 精品国产成人高清在线| 国产91av在线| 4虎影视国产在线观看精品| 亚洲h视频在线| 高清无码一本到东京热| 国产女人综合久久精品视| 欧美另类视频一区二区三区| 99无码熟妇丰满人妻啪啪| 日韩成人在线一区二区| 啪啪永久免费av| 亚洲一区二区视频在线观看| 国产va免费精品| 欧美a在线看| 日本一区二区三区精品AⅤ| 国产精品99一区不卡| 国产精品成人免费视频99| 色亚洲成人| 亚洲精品视频免费看| 亚洲第一页在线观看| 国产在线观看第二页| 特级精品毛片免费观看| 波多野结衣久久精品| 亚洲色图欧美| 亚洲无线一二三四区男男| 久久久91人妻无码精品蜜桃HD| 亚洲国产黄色| 中文字幕日韩欧美| 无码又爽又刺激的高潮视频| 欧美一级在线播放| 精品91自产拍在线| 被公侵犯人妻少妇一区二区三区| 青青草原国产精品啪啪视频| 露脸一二三区国语对白| 色综合天天综合中文网| 亚洲精品视频免费| 国产91在线|中文| 亚洲三级成人| 亚洲精品无码抽插日韩| 波多野结衣视频一区二区| 制服丝袜一区二区三区在线| 国产理论一区| 亚洲美女视频一区| 亚洲天堂网在线观看视频| 91青青草视频在线观看的| 国产精品无码作爱|