何成
摘 要:本文主要介紹了循環(huán)語(yǔ)句構(gòu)成的3個(gè)基本要素:初始值、循環(huán)條件、使循環(huán)趨于結(jié)束的語(yǔ)句,詳細(xì)解釋了“當(dāng)型循環(huán)”和“直到型循環(huán)”2種構(gòu)成形式及二者的相似與區(qū)別。通過(guò)對(duì)具體的數(shù)學(xué)問(wèn)題求解對(duì)比分析了Visual Basic程序設(shè)計(jì)語(yǔ)言中6中基本的語(yǔ)法結(jié)構(gòu),并描述了2種Exit語(yǔ)句的用途并對(duì)應(yīng)實(shí)際的具體案例。本人為Visual Basic程序設(shè)計(jì)初學(xué)者提供了一個(gè)有效的學(xué)習(xí)利器,使初學(xué)者從形式靈活多樣的語(yǔ)法結(jié)構(gòu)中脫離開(kāi)來(lái)并真正掌握程序設(shè)計(jì)的主旨。
關(guān)鍵詞:循環(huán)條件 步長(zhǎng) 事件驅(qū)動(dòng)
中圖分類號(hào):G712 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2018)02(b)-0189-02
程序設(shè)計(jì)語(yǔ)言語(yǔ)句結(jié)構(gòu)一般分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),順序結(jié)構(gòu)和選擇結(jié)構(gòu)只能處理一些簡(jiǎn)單的不需要重復(fù)的問(wèn)題,但在解決實(shí)際問(wèn)題過(guò)程中,有些問(wèn)題是在某一特定條件下在被反復(fù)的執(zhí)行,需要對(duì)某條語(yǔ)句或某段語(yǔ)句反復(fù)執(zhí)行,這種語(yǔ)句就是循環(huán)結(jié)構(gòu)。
Visual Basic是目前常用的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,它是在Basic語(yǔ)言基礎(chǔ)上發(fā)展而來(lái)的,具有可視化的圖形界面,以事件驅(qū)動(dòng)的方式為運(yùn)行的機(jī)制,功能比較強(qiáng)大。Visual Basic循環(huán)語(yǔ)句形式非常靈活,它不但提供了6種基本的循環(huán)語(yǔ)句格式,還提供了Exit語(yǔ)句參數(shù),靈活多樣的變化形式往往造成初學(xué)者的困惑,本文將對(duì)各語(yǔ)句形式做統(tǒng)一的辨析與討論,希望可以成為VB使用者的有效的利器。
1 循環(huán)語(yǔ)句基本思想
1.1 構(gòu)成循環(huán)的基本要素
循環(huán)語(yǔ)句由3個(gè)基本要素構(gòu)成:循環(huán)的初始值、循環(huán)條件、使循環(huán)趨于結(jié)束的語(yǔ)句,有很多地方簡(jiǎn)單的稱這3者為循環(huán)初值、循環(huán)終止及循環(huán)變化值。一個(gè)循環(huán)體必須由這3部分構(gòu)成,否則很容易出現(xiàn)死循環(huán),一個(gè)程序設(shè)計(jì)初學(xué)者最容易犯的錯(cuò)誤就是編寫(xiě)死循環(huán)。
循環(huán)的初始值是設(shè)置循環(huán)變量的初值;循環(huán)條件表達(dá)式作為設(shè)置循環(huán)終止的條件,當(dāng)條件為真,則繼續(xù)執(zhí)行循環(huán)體,否則結(jié)束循環(huán);使循環(huán)趨向于結(jié)束的語(yǔ)句,一般是以改變循環(huán)變量值的形式出現(xiàn),很多時(shí)候也稱之為“步長(zhǎng)”,這也是初次接觸循環(huán)語(yǔ)句的程序設(shè)計(jì)者最容易忽略的地方。
1.2 循環(huán)語(yǔ)句的分類
循環(huán)語(yǔ)句一般由“當(dāng)型循環(huán)”和“直到型循環(huán)”2種形式構(gòu)成,二者的區(qū)別在于“當(dāng)型循環(huán)”先判斷循環(huán)終止條件,滿足此條件則執(zhí)行循環(huán)體語(yǔ)句,而“直到型循環(huán)”是先執(zhí)行一次循環(huán)體語(yǔ)句再判斷循環(huán)條件。這2種語(yǔ)句一般情況下并無(wú)區(qū)別,只有當(dāng)循環(huán)的初始值不滿足循環(huán)條件時(shí),“當(dāng)型循環(huán)”一次循環(huán)語(yǔ)句沒(méi)有執(zhí)行,而“直到型循環(huán)”執(zhí)行了一次循環(huán)語(yǔ)句。
1.3 循環(huán)結(jié)構(gòu)的應(yīng)用
循環(huán)語(yǔ)句的用處非常靈活,可解決已知循環(huán)次數(shù)的問(wèn)題,如:求自然數(shù)1~100的累加和是多少?可以解決循環(huán)次數(shù)不固定的問(wèn)題,如:表達(dá)式s=1+2+……+n中,當(dāng)s〉3000是n的值最小是多少?這2種問(wèn)題均可以通過(guò)設(shè)置初值、終止及步長(zhǎng)來(lái)解決。
2 Visual Basic中的循環(huán)語(yǔ)句形式
2.1 基本語(yǔ)句形式
Visual Basic提供了6種基本的循環(huán)語(yǔ)句,分別是:While語(yǔ)句、Do while……loop語(yǔ)句、Do……loop while語(yǔ)句、Do Until……loop語(yǔ)句、Do……loop Until語(yǔ)句、For語(yǔ)句。Visual Basic還提供了一種特殊的Exit語(yǔ)句可以跳出循環(huán),它具有2種基本形式,分別是:Exit do語(yǔ)句,Exit for語(yǔ)句。
2.2 基本循環(huán)語(yǔ)句的具體例題分析
此處以循環(huán)語(yǔ)句的入門(mén)程序“求自然數(shù)1~100的累加和是多少?”為例,分別利用不同的語(yǔ)句實(shí)現(xiàn)對(duì)問(wèn)題的求解,此處為了重點(diǎn)對(duì)比分析循環(huán)語(yǔ)句構(gòu)成的差異,而暫且忽略聲明語(yǔ)句等一些基本語(yǔ)句,其基本思想同樣適用于其他程序設(shè)計(jì)語(yǔ)言。這里設(shè)置存儲(chǔ)累加和的變量為s,并通過(guò)s=0對(duì)變量s賦初值;設(shè)置循環(huán)變量為i,并通過(guò)i=1對(duì)變量i賦初值。具體循環(huán)結(jié)構(gòu)如表1所示。
這里前5種一般用于求解循環(huán)終止條件已知的問(wèn)題,最后一種一般用于求解已知循環(huán)次數(shù)的問(wèn)題(當(dāng)循環(huán)變量步長(zhǎng)為1此處可以省略step1)。而前3種是先判斷循環(huán)條件再執(zhí)行循環(huán)體,第4及第5種是后判斷循環(huán)條件再執(zhí)行循環(huán)體,這里如果循環(huán)變量的初始值i=101,則前3種程序運(yùn)行的結(jié)果s為0,而第4及第5種程序運(yùn)行的結(jié)果s為101。
本程序例題為各種程序設(shè)計(jì)語(yǔ)言循環(huán)結(jié)構(gòu)的入門(mén)程序,以此程序?yàn)榛A(chǔ)通過(guò)簡(jiǎn)單修改循環(huán)的初值、終值、變化值可以求解很多問(wèn)題,例如:自然數(shù)1~100的偶數(shù)和是多少?自然數(shù)1~100的奇數(shù)和是多少?100~200間所有自然數(shù)的和是多少?6的階乘是多少?根據(jù)特定的數(shù)學(xué)公式,可以求解圓周率π及自然對(duì)數(shù)e等等復(fù)雜的問(wèn)題,看似復(fù)雜的問(wèn)題難處只在于數(shù)學(xué)求解公式,程序設(shè)計(jì)思想跟本題無(wú)任何不同之處。
2.3 基本循環(huán)語(yǔ)句的各語(yǔ)句適用范圍
很多題目可以采用任何一種語(yǔ)句實(shí)現(xiàn),如上文所示例題,但For語(yǔ)句形式上簡(jiǎn)單明了,它集循環(huán)初值、終值、步長(zhǎng)為一條語(yǔ)句,但它適用范圍窄,如果循環(huán)次數(shù)不確定則不能用此語(yǔ)句求解。而另外5種語(yǔ)句語(yǔ)法靈活,基本可以完成各種各樣的循環(huán)操作。
2.4 循環(huán)語(yǔ)句中的Exit語(yǔ)句
Exit語(yǔ)句分為Exit do語(yǔ)句和Exit for語(yǔ)句2種。其中,Exit do語(yǔ)句用于Do……loop循環(huán)體中,當(dāng)程序中遇到Exit do語(yǔ)句則跳出循環(huán),執(zhí)行l(wèi)oop后語(yǔ)句;Exit for語(yǔ)句用于For……next循環(huán)體中,當(dāng)程序中遇到Exit for語(yǔ)句則跳出循環(huán),執(zhí)行next后語(yǔ)句。
這里以求解上文中提到的“表達(dá)式s=1+2+……+n中,當(dāng)s〉3000是n的值最小是多少?”為例進(jìn)行程序的簡(jiǎn)單編寫(xiě)。這里設(shè)置存儲(chǔ)累加和的變量為s,并通過(guò)s=0對(duì)變量s賦初值;設(shè)置循環(huán)變量為i,并通過(guò)i=1對(duì)變量i賦初值。則題目的具體求解過(guò)程如表2所示。
循環(huán)語(yǔ)句還可以解決“水仙花數(shù)”、“素?cái)?shù)”、“完數(shù)”及“最大公約數(shù)”等這種有趣的數(shù)學(xué)問(wèn)題,還可以通過(guò)雙重循環(huán)來(lái)解決“排序”、“楊輝三角”、“百錢(qián)百雞”等復(fù)雜的數(shù)學(xué)問(wèn)題,對(duì)于常見(jiàn)的“雞兔同籠”也可輕易求解。
3 結(jié)論
(1)程序設(shè)計(jì)語(yǔ)言語(yǔ)句結(jié)構(gòu)一般分為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),順序結(jié)構(gòu)和選擇結(jié)構(gòu)只能處理一些簡(jiǎn)單的不需要重復(fù)的問(wèn)題,而循環(huán)語(yǔ)句可以解決對(duì)某條語(yǔ)句或某段語(yǔ)句反復(fù)執(zhí)行的問(wèn)題。
(2)循環(huán)語(yǔ)句由循環(huán)的初始值、循環(huán)條件、使循環(huán)趨于結(jié)束的語(yǔ)句3個(gè)基本要素構(gòu)成,循環(huán)語(yǔ)句一般由“當(dāng)型循環(huán)”和“直到型循環(huán)”2種形式構(gòu)成,當(dāng)循環(huán)的初始值不滿足循環(huán)條件時(shí)2種語(yǔ)句運(yùn)算結(jié)果不同。
(3)以求解自然數(shù)1~100累加和為例對(duì)6種Visual Basic基本循環(huán)語(yǔ)句結(jié)構(gòu)作了對(duì)比分析,辨析了各種結(jié)構(gòu)的適用范圍和優(yōu)缺點(diǎn)。并具體解釋了“當(dāng)型循環(huán)”和“直到型循環(huán)”2種形式對(duì)程序結(jié)果的影響。
參考文獻(xiàn)
[1] FrancescoBalena著,翔實(shí)組,翔實(shí)組.Visual Basic 6編程技術(shù)大全[J].2000.
[2] 求是科技,Visual Basic 6.0程序設(shè)計(jì)與開(kāi)發(fā)技術(shù)大全[M].北京:人民郵電出版社,2006.
[3] 李曉輝,肖蓉暉.用VisualBasic編寫(xiě)控制程序方法[J].計(jì)算機(jī)工程與應(yīng)用,1998(6):50-53.
[4] 龔沛曾,陸慰民,楊志強(qiáng).Visual Basic程序設(shè)計(jì)簡(jiǎn)明教程[M].2版.北京:高等教育出版社,2003.
[5] 劉圣才,李春葆.Visual Basic 6程序設(shè)計(jì)導(dǎo)學(xué)[M].北京:清華大學(xué)出版社,2002.
[6] 張艷.新編Visual Basic程序設(shè)計(jì)教程:Visual Basic程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2014.
[7] 劉剛.Visual Basic程序設(shè)計(jì)與應(yīng)用案例[M].北京:高等教育出版社,2003.
[8] 張東亮,張?chǎng)危炖蚓?新編VISUAL BASIC程序設(shè)計(jì)教程[M].北京:航空工業(yè)出版社,2005.
[9] 張榮華,殷士勇.Visual Basic程序設(shè)計(jì)與應(yīng)用[M].北京:清華大學(xué)出版社,2008.
[10]教傳艷,王果.Visual Basic 6.0程序設(shè)計(jì)完全自學(xué)手冊(cè)[M].北京:人民郵電出版社,2009.