PLC編程培訓-Visual Basic程序設計的三種基本結(jié)構(gòu)_第1頁
PLC編程培訓-Visual Basic程序設計的三種基本結(jié)構(gòu)_第2頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、4.1.1 算法概述及特性 一、算法概述廣義地講:算法是為完成一項任務所應當遵循的一步一步的規(guī)則的、精確的、無歧義的描述,它的總步數(shù)是有限的。狹義地講:算法是解決一個問題采取的方法和步驟的描述。下面通過兩個簡單的例子加以說明:【例】輸入10個數(shù),打印輸出其中最大的數(shù)。其算法設計如下:1、輸入1個數(shù),存入變量A中,將記錄數(shù)據(jù)個數(shù)的變量N賦值為1,即N=1。2、將A存入表示最大值的變量Max中,即Max=A。3、再輸入一個值給A,如果AMax,則Max=A,否則Max不變。4、讓記錄數(shù)據(jù)個數(shù)的變量增加1,即N=N+1。5、判斷N是否小于10,若成立則轉(zhuǎn)到第3步執(zhí)行,否則轉(zhuǎn)到第6步。6、打印輸出ma

2、x。二、算法的特性 1、有窮性:一個算法必須在執(zhí)行有窮多個計算步驟后終止。2、確定性:一個算法給出的每個計算步驟,必須都是精確定義的、無二義性的。3、有0個或多個輸入:一個算法中可以沒有輸入,也可以有一個或多個輸入信息,如果需要運行時輸入不同數(shù)據(jù),這些輸入信息是算法所需的初始數(shù)據(jù)。4、有一個或多個輸出:一個算法應有一個或多個輸出,一個算法得到的結(jié)果(中間結(jié)果或最后結(jié)果)就是算法的輸出。沒有輸出的算法是沒有意義的。5、有效性:算法中的每一個步驟必須有效地執(zhí)行,并能得到確定結(jié)果。4.1.2 算法的表示一、自然語言與偽代碼表示算法自然語言:就是指人們?nèi)粘J褂玫恼Z言,可以是漢語、英語或其它語言。用自然

3、語言表示的優(yōu)點是通俗易懂,缺點是文字冗長,容易出現(xiàn)“歧義性”。偽代碼:是用介于自然語言和計算機語言之間的文字和符號(包括數(shù)學符號)來描述算法?!纠枯斎?個數(shù),打印輸出其中最大的數(shù)。可用如下的偽代碼表示:Begin(算法開始)輸入 A,B,CIF AB 則 AMax否則 BMaxIF CMax 則 CMaxPrint MaxEnd (算法結(jié)束)二、 用傳統(tǒng)流程圖表示算法三、三種基本結(jié)構(gòu)的特點1、只有一個入口2、只有一個出口3、不存在死語句4、不存在死循環(huán)【例】輸入10個數(shù),打印輸出其中的最大的數(shù)的流程圖如下圖4-4所示:圖4-44.1.3 用NS流程圖表示算法 NS流程圖完全去掉了帶箭頭的流程

4、線,將全部算法寫在一個矩形框內(nèi),在矩形內(nèi)還可包含其它從屬于它的框。一、順序結(jié)構(gòu)順序結(jié)構(gòu)的NS流程圖如下圖4-5所示,執(zhí)行順序先后。語句A 語句B圖4-5二、選擇結(jié)構(gòu)(a)(b)圖4-6圖4-6(a)所示為條件為真時執(zhí)行語句塊A,條件為假時執(zhí)行語句塊B。圖4-6(b)所示為條件為真時執(zhí)行語句塊,為假時什么都不做。三、循環(huán)結(jié)構(gòu)圖4-7其中圖4-7(a)為 當型循環(huán),圖4-7(b)為直到循環(huán)?!纠慨嫵鰪?0個數(shù)中選出最大的數(shù)的NS流程圖4-8:圖4-8最后需要說明的是:上面介紹的算法表示是給人看的,即是為幫助程序開發(fā)人員閱讀、編寫程序而設計的一種輔助工具,而程序則必須符合計算機語言的語法規(guī)則。以下

5、是上面例子的計算機程序,即為用計算機語言表示算法:Private Sub Form_Click()Dim a%, max%, i%a=Val(InputBox(A=?)max=aFor i=1 To 10a=Val(InputBox(A=?)If amax Then max=aNext iPrint Max=; maxEnd Sub4.2.1 賦值語句 計算機要完成指定的工作,首先要接收計算機內(nèi)部或外界給予的各種數(shù)據(jù),賦值語句是一種數(shù)據(jù)賦給計算機內(nèi)部變量或?qū)傩缘拿?。一、賦值語句的格式格式1:let=格式2:let.=說明: 應符合Visual Basic的變量命名約定。 可以是常量、變量、表

6、達式及帶有屬性的對象。 缺省時為當前窗體。二、賦值語句的功能將表達式的值賦值給變量名或指定對象的屬性。一般用于給變量賦值或?qū)丶O定屬性值。三、賦值語句的幾種形式(一)給變量賦值例如:Dim v As IntegerDim book As String*20v=26book=Visual Basic 把數(shù)值26賦給整型變量v,把字符串“Visual Basic”賦給字符串變量book。26與“Visual Basic”都為常量,常量是表達式最簡單的形式。可以將一個表達式的值賦給一個變量,所以下面的賦值語句是合法的:Dim sum1 As DoubleDim price1 As Single,p

7、rice2 As Singleprice1=198.6price2=1386.95*0.8sum1=price1*23+price2*500(二)為對象的屬性賦值在VB中可以在程序中用賦值語句為對象的屬性設置屬性值(有的屬性則必須如此)。它的一般格式為:對象.屬性=屬性值例如,為命令按鈕cmdDisplay的Caption屬性設置值:cmdDisplay.Caption=顯示文本為文本框txtDisplay的FontName及FontSize屬性設置值:txtDisplay.FontName=SystemtxtDisplay.FontSize=18(三)為用戶自定義類型聲明的變量的各元素賦值為

8、用戶自定義類型聲明的變量的各元素賦值,它的一般格式為:變量名.元素名=表達式例如:Type bookname As String*30auther As String*10price As Singlepublisher As String*50End Type Dim bookMessage As bookbookM=Visual Basic程序設計教程bookMessage.auther=張洪bookMessage.price=26.80bookMessage.publisher=科學出版社四、注意點和常見錯誤 “=”賦值號與數(shù)學中的等號的含義不同。 賦值語句多次使用

9、的結(jié)果為最后一次的賦值。例如:a=3a=4a=5 a的結(jié)果為5 類型相容。1、數(shù)值型的表達式可以直接賦值給任一類型的變量。2、數(shù)字字符串可以直接賦給數(shù)值型變量,也可以直接賦給邏輯型,日期型變量及可變類型的變量。3、邏輯型表達式可以直接賦給數(shù)值變量,也可賦給其他類型的變量。例如:strs$=01 等價于 strs$=“false” 當賦值號“=”兩邊類型不同時,“向左看齊”。 賦值語句除了其本身用途以外,經(jīng)常用于變量的累加,累乘及變量交換。錯誤1:賦值號兩邊的量左右互換。錯誤2:賦值號左邊為常量,函數(shù)名,表達式。錯誤3:多個變量被同時賦予一個表達式,或多個值同時賦給同一個變量。4.2.2 數(shù)據(jù)的

10、輸出Print方法 格式:.Print;|,:窗體如:Form1.Print Hello圖片框如:Picture1.Print Hello打印機如:Printer.Print Hello立即窗口如:Debug .Print Hello省略:默認為當前窗體。:是一個或多個表達式,若為多個表達式,則各表達式之間用“,”或“;”隔開。省略此項,則輸出一空行。逗號:用“,”分隔各表達式時,各項在以14個字符位置為單位劃分出的區(qū)段中輸出,每個區(qū)段輸出一項。分號:用“;”分隔各表達式時,各項按緊湊格式輸出。說明: 輸出時,數(shù)值型數(shù)據(jù)前有一個符號位(正號不顯),后面留一個空格位;字符串原樣輸出,前后無空格。

11、 如果在語句行末尾有“;”,則下一個Print輸出的內(nèi)容,將緊跟在當前Print輸出內(nèi)容后面;如果在語句行末尾有“,”,則下一個Print輸出的內(nèi)容,將在當前Print輸出內(nèi)容的下一區(qū)段輸出;如果在語句行末尾無分隔符,則輸出完本語句內(nèi)容后換行,即在新的一行輸出下一個Print的內(nèi)容?!纠縋rivate Sub Form_Load()Form1.ShowPrint 12345678901234567890Print產(chǎn)生空行Print 2+4=; 2 + 4,Print取消上面一句末尾逗號的作用Print 2-4=;Print 2-4End Sub4.2.3 用戶交互函數(shù)和過程 一、數(shù)據(jù)的輸入I

12、nputBox函數(shù)(一)格式變量名=InputBox$(, , )說明: :不能缺省。通常為字符串常量、變量和字符串表達式??捎肅hr(13)、Chr(10)、Chr(13) & Chr(10)、vbCrLf換行。 :字符串表達式。決定對話框標題區(qū)顯示的信息,若缺省,則以工程名作為對話框的標題。 :通常為數(shù)值常量、字符串常量或常量表達式。輸入文本編輯區(qū)默認值,如果省略,則默認為空。 、:確定對話框在屏幕上顯示的位置,為整型表達式,用來確定對話框左上角在屏幕上的位置。坐標單位為twip。 返回值:字符串(在對話框中單擊取消則返回)。(二)功能打開一對話框,等待用戶輸入正文或按下按鈕,并返回包含文

13、本框內(nèi)容的字符串?!纠繂螕簟按_定”,返回文本框中的文本到變量R中。單擊“取消”,返回一個零長度的字符串。注意: 各項參數(shù)次序必須一一對應,除第一項參數(shù)“提示”不能省略外,其余參數(shù)均可省略,如果處于中間位置的參數(shù)省略,其對應的逗號不能省略。 由InputBox函數(shù)返回的數(shù)據(jù)類型是字符類型數(shù)據(jù),如果要得到數(shù)值類型數(shù)據(jù),則必須用Val()函數(shù)進行類型轉(zhuǎn)換。二、MsgBox函數(shù)和MsgBox過程(一)格式函數(shù)格式:變量%=MsgBox(提示,按鈕圖標+缺省按鈕+模式,標題)過程形式:MsgBox 提示,按鈕圖標+缺省按鈕+模式,標題說明: “標題”和“提示”與InputBox函數(shù)中對應的參數(shù)相同。

14、“按鈕圖標+缺省按鈕+模式”是整型表達式,決定信息框按鈕數(shù)目、出現(xiàn)在信息框上的圖標類型及操作模式(如下表所示),若程序中需要返回值,則使用函數(shù),否則可調(diào)用過程。 返回值:由在對話框中按下哪種按鈕決定。按鈕及圖標值如表4-1(a);根據(jù)用戶所選按鈕,函數(shù)返回17的整數(shù)值,其含義如表4-1(b)。 表4-1(a) 按鈕及圖標表4-1(b) 函數(shù)返回值在對話框中顯示消息,等待用戶單擊按鈕,并返回一個整數(shù)告訴用戶單擊了哪個按鈕。例:4.2.4 注釋語句 為了提高程序的可讀性,通常在程序的適當位置加上必要的注釋。在VB中用“”或Rem來標識一條注釋語句。格式: | Rem 功能:給語句或程序段加上注釋,

15、以提高可讀性?!纠縋rivate Sub Form_Activate()Rem 本程序用于計算圓的面積Dim R As String, AREA As Single R為半徑R=InputBox(請輸入半徑, , 1) :Rem 輸入半徑AREA=3.14*Val(R)2以下將半徑和面積輸出到窗體上Print Val(R), AREAEnd Sub說明: 指要包括的任何注釋文本。在Rem關鍵字和之間要加一個空格。可以用一個英文單引號“”來代替Rem關鍵字。 如果在其他語句行后面使用Rem關鍵字,必需用冒號(:)與語句隔開。若用英文單引號“”,則在其他語句行后面不必加冒號(:)。4.3.1 I

16、f條件語句在程序設計中經(jīng)常遇到這類問題,它需要根據(jù)不同的情況采用不同的處理方法。例如,一元二次方程的求根問題,要根據(jù)判別式小于零或大于等于零的情況,采用不同的數(shù)學表達式進行計算。對于這類問題,如果用順序結(jié)構(gòu)編程,顯然力不從心。必須借助選擇結(jié)構(gòu)。本章主要介紹實現(xiàn)選擇結(jié)構(gòu)的語句。包括:行If語句、塊If語句、Else If語句、Select Case語句,以及選擇結(jié)構(gòu)在程序設計中的應用。一、單行結(jié)構(gòu)條件語句格式:If Then Else 圖4-8 單行If語句流程圖功能:首先判斷“條件”,其值為真時,執(zhí)行語句組1;為假時執(zhí)行語句組2。當缺省Else中的內(nèi)容時,該選擇結(jié)構(gòu)只對條件滿足的情況進行處理。

17、說明: :一般為關系表達式、布爾表達式、數(shù)值表達式(0為False,非0為True)、字符串表達式(0為False,非0為True)。通常把關系表達式或邏輯表達式的值為真時,稱為條件滿足;值為假時,稱為條件不滿足。反之亦然。 、:分別是“條件”滿足或不滿足時,處理方法的描述,可以是若干個語句,各語句之間用冒號隔開。 可以沒有Else部分,這時必須有。 IfThen、Else、End If是VB的保留字?!纠吭O界面如右圖所示,用文本框輸入x的值,單擊“計算Y”按鈕時,根據(jù)以下公式,計算y的值。代碼如下:Private Sub Command1_Click()X=Val(Text1.Text)

18、If X0,Y0;在B象限時X0;在C象限時0,Y0,Y0 Then If Y0 Then Print IN A Else Print IN D Else If Y0 Then Print IN B Else Print IN CEnd Sub4.3.1 If條件語句三、塊結(jié)構(gòu)條件語句格式:If ThenElseIf ThenElseIf ThenElseEnd If圖4-10塊結(jié)構(gòu)的If語句流程功能:1、依次判斷條件,如果找到一個滿足的條件,則執(zhí)行其下面的語句塊,然后跳過End If,執(zhí)行后面的程序。2、如果所列出的條件都不滿足,則執(zhí)行Else語句后面的語句塊;如果所列出的條件都不滿足,又沒

19、有Else子句,則直接跳過End If,不執(zhí)行任何語句塊。【例】如圖4-11輸入華氏溫度F,利用公式C=5/9*(F-32)轉(zhuǎn)換成攝氏溫度C,根據(jù)轉(zhuǎn)換結(jié)果C的不同值,按以下要求給出相應的提示。C40時,打印HOT 30C40時,打印 WARM 20C30時,打印 ROOM TEMPERATURE 10C20時,打印 COOL 040 ThenLabel2.Caption=HOTElseIf C30 ThenLabel2.Caption=WARMElseIf C20 ThenLabel2.Caption=ROOM TEMPERATUREElseIf C10 ThenLabel2.Caption=

20、COOL ElseIf C0 ThenLabel2.Caption=COLDElseLabel2.Caption=FREEZINGEnd IfEnd Sub 注意:ElseIf語句,實際完成的是塊If的嵌套,它和塊If嵌套的格式上有很大區(qū)別,ElseIf結(jié)構(gòu)只有一對If和End If語句。另外應注意:ElseIf和ElseIf的區(qū)別。4.3.2 Select Case語句(情況語句)當對一個表達式的不同取值情況作不同處理時,用ElseIf語句程序結(jié)構(gòu)顯得較為雜亂,而用Select Case語句將使程序的結(jié)構(gòu)更清晰,Select Case語句又稱為情況語句。格式:Select Case Case

21、 Case Case ElseEnd Select說明: Select Case、Case、Case Else、End Select都是關鍵字。 :可以是數(shù)值型或字符串型表達式。 Case 表達式表:表中的表項為如下形式: 表達式1,表達式2.如:Case 1,3,5 表達式1 TO 表達式2如:Case 10 TO 30Case A TO Z Is 如:Case Is=10Case Is=0與Case 0相同。 語句塊為一條或多條語句。圖4-12 Select Case語句流程功能:根據(jù)測試表達式的值,按順序匹配Case后的表達式,如果匹配成功,則執(zhí)行該Case下的語句塊,然后轉(zhuǎn)到End S

22、elect語句之后繼續(xù)執(zhí)行。Select Case語句的執(zhí)行過程是:先求“測試表達式”的值,然后順序測試該值符合哪一個Case子句中情況,如果找到了,則執(zhí)行該Case子句下面的語句塊,然后執(zhí)行End Select下面的語句;如果沒找到,則執(zhí)行Case Else下面的語句塊,然后執(zhí)行End Select下面的語句。注意:1、測試表達式的類型應與Case后表達式類型一致,且三種形式可以混用。如:Case Is8Bonus=100Case ElseBonus=0End Select End Sub4.4.1 ForNext循環(huán)語句在實際工作中,常遇到一些操作過程不太復雜,但又需要反復進行相同處理的問

23、題。所謂循環(huán)就是重復地執(zhí)行一組語句,循環(huán)結(jié)構(gòu)非常適合于解決處理的過程相同、處理的數(shù)據(jù)相關,但處理的具體值不同的問題。我們把能夠處理這類問題的語句稱為循環(huán)語句。VB提供了三種不同風格的循環(huán)語句,它們分別是: ForNext循環(huán)語句; WhileWend循環(huán)語句; DoLoop循環(huán)語句。我們將對這3種循環(huán)語句逐一介紹。一、ForNext循環(huán)語句For.Next 語句以指定次數(shù)來重復執(zhí)行循環(huán)體ForNext之間的語句組。格式:For 循環(huán)控制變量=初值 To 終值 Step 步長語句組Exit For語句組Next 循環(huán)控制變量 For、To、Step、Exit For、Next是關鍵字。循環(huán)控制變

24、量:也稱“循環(huán)變量”、“計數(shù)變量”或“循環(huán)計數(shù)器”。它是一個數(shù)值變量。但不能是布爾型變量或數(shù)組元素。初值:循環(huán)變量的初值,是一個數(shù)值表達式。終值:循環(huán)變量的終值。是一個數(shù)值表達式。步長:可選參數(shù)。是循環(huán)控制變量的增量,是一個數(shù)值表達式。其值可以是正數(shù)(為遞增循環(huán)),或負數(shù)(為遞減循環(huán)),但不能為0。缺省該項時步長值為1。語句組:是循環(huán)體,為放在For和Next之間的一條或多條語句。Exit For 語句:隨時退出循環(huán)??梢栽谘h(huán)體中任何位置放置任意個Exit For 語句。 經(jīng)常用在條件判斷之后,例如If.Then,并將控制權轉(zhuǎn)移到緊接在Next之后的語句。Next:循環(huán)終端語句,后跟的“循環(huán)

25、變量”與For語句中的“循環(huán)變量”必須相同。For循環(huán)的執(zhí)行過程是:首先將“初值”賦給“循環(huán)控制變量”,檢查“循環(huán)控制變量”的值是否超過“終值”,如果超過就跳出循環(huán),執(zhí)行Next后面的語句;否則執(zhí)行一次“循環(huán)體”,遇到Next語句,然后“循環(huán)控制變量”+“步長”又賦給“循環(huán)控制變量”,重復上述過程。這里所說的“超過”有兩種含義,大于或小于。步長為正值時,檢查循環(huán)變量是否大于終值;步長為負值時,檢查循環(huán)變量是否小于終值。使用Step關鍵字,可以由所指定的值增加或減少循環(huán)變量。圖4-13 For-Next循環(huán)流程圖注意: For語句和Next語句必須成對出現(xiàn),缺一不可,且For語句必須在Next語

26、句之前。 循環(huán)次數(shù)由初值、終值和步長確定,計算公式為:循環(huán)次數(shù)=Int(終值初值)/步長)+1 可以省略Next語句中的循環(huán)變量名。建議加上循環(huán)變量名,使程序具有可讀性?!纠壳驨?。∟為自然數(shù))。分析:由階乘的定義,我們可以得出N!=1*2*(N-2)*(N-1)*N=(N-1)!*N,也就是說,一個自然數(shù)的階乘,等于該自然數(shù)與前一個自然數(shù)階乘的乘積。代碼如下:Private Sub Form_Click()Dim I%,f&,n%n=InputBox(輸入一個自然數(shù):,輸入提示,10)f=1For I=1 To nf=f*INext I.Print n;!=;fEnd Sub圖4-144.

27、4.2 DoLoop循環(huán)語句 Do循環(huán)具有較強的靈活性,它可以根據(jù)需要決定是條件滿足時執(zhí)行循環(huán)體,還是一直執(zhí)行循環(huán)體直到條件滿足。而它所用的時間是不確定的。格式為:Do While | Until 條件語句組Exit Do語句組Loop或: Do語句組Exit Do語句組Loop While | Until 條件其中:Do、Loop、While、Until都是關鍵字。大括號中的While、Until選其一。語句組:是需要重復執(zhí)行的一條或多條語句,即循環(huán)體。條件:是數(shù)值表達式或字符串表達式,其值為True或False。如果“條件”是 Null,則“條件”會被當作False。當只有Do、Loop兩

28、個關鍵字構(gòu)成的Do循環(huán)時,程序?qū)o限循環(huán)。為了使程序有限循環(huán),必須使用關鍵字While或Until或Exit Do: While:是當“條件”為True時執(zhí)行循環(huán)。 Until:是在“條件”變?yōu)門rue之前重復執(zhí)行。 Exit Do:隨時跳出Do Loop循環(huán)。同Exit For。注意:可以按ESC或CTRL+BREAK鍵來終止無窮循環(huán)。當使用While關鍵字去檢查Do.Loop語句中的條件時,有兩種方法??梢栽谶M入循環(huán)之前檢查條件,也可以在循環(huán)至少運行一次之后才檢查條件。一、Do While Loop語句 該語句的執(zhí)行原則是:首先判斷條件,若為False,則跳出該語句;否則(條件為True)

29、,執(zhí)行循環(huán)體,遇到Loop語句,然后再判斷條件。Do WhileLoop流程圖4-15所示如下:圖4-15 Do WhileLoop循環(huán)流程 【例】執(zhí)行下面程序代碼:Private Sub Command1_Click()Counter=0myNum=20Do While myNum15myNum=myNum-1Counter=Counter+1LoopMsgBox 循環(huán)次數(shù)為: &CounterEnd Sub圖4-16注意:如果將myNum的初值由20替換成9,則循環(huán)中的語句將永遠不會執(zhí)行。二、DoLoop While語句該語句的執(zhí)行原則是:先執(zhí)行循環(huán)體,然后再判斷“條件”,若為False,

30、則跳出該語句;否則(即“條件”為True)再執(zhí)行循環(huán)體,然后再判斷“條件”。DoLoop While流程圖4-17所示如下:圖4-17 DoLoop Until循環(huán)流程【例】執(zhí)行下面程序代碼:Private Sub Command1_Click()Counter=0myNum=9Do Until myNum=10myNum=myNum-1Counter=Counter+1If myNum10 Then Exit DoLoopMsgBox循環(huán)次數(shù)為: &CounterEnd Sub圖4-184.4.3 WhileWend語句While.Wend語句構(gòu)成當循環(huán),只要指定的條件為True,則會重復執(zhí)

31、行一系列的語句。程序格式如下:While 條件語句組Wend其中:While、Wend是關鍵字。條件:是數(shù)值表達式或字符串表達式,其計算結(jié)果為True或False。如果“條件”為Null,則“條件”會視為False。語句組:為一條或多條語句,即循環(huán)體。當條件為True時執(zhí)行。While.Wend語句的執(zhí)行過程:首先判斷條件,若為True,則執(zhí)行語句組,一直執(zhí)行到Wend語句。然后回到While語句,再一次檢查“條件”,如果還是為True,則重復執(zhí)行。如果不為True,則程序會從Wend語句之后的語句繼續(xù)執(zhí)行。While.Wend語句流程圖4-19所示如下: 圖4-19 While.Wend循環(huán)

32、流程注意:While.Wend循環(huán)也可以是多層的嵌套結(jié)構(gòu)。每個Wend匹配它上面最近的While語句?!纠繄?zhí)行下面程序代碼:Private Sub Command1_Click()Dim CounterCounter=0 設置變量初值。While Counter 19 時則循環(huán)終止。MsgBox 循環(huán)次數(shù)為: & CounterEnd Sub4.4.4 循環(huán)的嵌套多重循環(huán)結(jié)構(gòu)在一個循環(huán)體內(nèi)又包含了一個完整的循環(huán),這樣的結(jié)構(gòu)稱為多重循環(huán)或循環(huán)的嵌套。在程序設計時,許多問題要用二重或多重循環(huán)才能解決。我們前面學過的For循環(huán)、While循環(huán)、Do循環(huán)都可以互相嵌套,如在ForNext的循環(huán)體中可

33、以使用While循環(huán),而在WhileWend的循環(huán)體中也可以出現(xiàn)For循環(huán)等。二重循環(huán)的執(zhí)行過程是外循環(huán)執(zhí)行一次,內(nèi)循環(huán)執(zhí)行一遍,在內(nèi)循環(huán)結(jié)束后,再進行下一次外循環(huán),如此反復,直到外循環(huán)結(jié)束。說明 嵌套的循環(huán)可以是ForNext循環(huán),也可以是 DoLoop循環(huán)。 FOR循環(huán)有一個公共端點,可使用一個NEXT語句,循環(huán)變量按從內(nèi)到外排列。 外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉。 嵌套循環(huán)應選用不同的循環(huán)變量?!纠壳?【例】公雞5個錢一只,母雞三個錢一只、小雞一個錢三只,要用100個錢買100只雞,問公雞、母雞、和小雞各買幾只?程序代碼如下:Private Sub Form_Click()Dim

34、I As Integer, J As Integer, K As IntegerPrint Tab(5); 公雞; Tab(15); 母雞; Tab(25); _小雞For I=0 To 20For J=0 To 33 For K=0 To 100 Step 3If I*5+J*3+K3=100 And I+J+K=100 ThenPrint Tab(5); I; Tab(15); J; Tab(25); KEnd IfNext K, J, IEnd Sub4.4.5 幾種循環(huán)語句比較一般情況下,4種循環(huán)語句可以相互代替,其中WhileWend語句與Do while.Loop語句等價,下表4-

35、2給出了各種循環(huán)語句的區(qū)別。表4-2 For.toNextDo while/until.LoopDo.Loop While/until.循環(huán)類型當型循環(huán)當型循環(huán)直到循環(huán)循環(huán)控制條件循環(huán)變量大于或小于終值條件成立/不成立執(zhí)行循環(huán)條件成立/不成立執(zhí)行循環(huán)循環(huán)變量初值在FOR語句行中在DO之前在DO之前使循環(huán)結(jié)束For語句中無需專門語句必須用專門語句必須使用專門語句使用場合循環(huán)次數(shù)容易確定循環(huán)/結(jié)束控制條件易給出循環(huán)/結(jié)束控制條件易給出4.4.6 循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套在循環(huán)結(jié)構(gòu)中可以完整嵌套選擇結(jié)構(gòu)即整個選擇結(jié)構(gòu)都屬于循環(huán)體。在選擇結(jié)構(gòu)中嵌套循環(huán)結(jié)構(gòu)時,則要求整個循環(huán)結(jié)構(gòu)必須完整地嵌套在一個分支

36、內(nèi),一個循環(huán)結(jié)構(gòu)不允許出現(xiàn)在兩個或兩個以上的分支內(nèi)。下面用幾個例子(如圖4-22)來說明:圖4-224.5.1 Goto語句Goto 語句無條件地轉(zhuǎn)移到它所在過程中指定的行。其格式為:Goto 其中: Goto是關鍵字。 :是任何字符額組合,不區(qū)分大小寫,必須以字母開頭,以冒號(:)結(jié)尾。標號必須是放在行的開始位置。 :行號可以是任何數(shù)值的組合,在使用行號的模塊內(nèi),該組合是唯一的。標號必須是放在行的開始位置。 在程序中的使用格式為:標號|行號:語句例如Line1:X=0注意:1、Goto只能跳到它所在過程中的行。2、在一個過程中,標號或行號都必須是唯一的。3、太多的Goto語句,會使程序代碼不

37、容易閱讀及調(diào)試。盡可能使用結(jié)構(gòu)化控制語句 (Do.Loop、For.Next、If.Then.Else、Select Case),應盡量避免使用它。4.5.2 Exit語句Exit語句用于退出Do.Loop、For.Next、Function或Sub代碼塊。對應的使用格式為:Exit Do、Exit For、Exit Function、Exit Sub。分別表示退出DO循環(huán)、For循環(huán)、函數(shù)過程、子過程。格式:Exit DoExit ForExit FunctionExit PropertyExit Sub它們都是關鍵字。在程序中的作用如下: Exit Do提供一種退出Do.Loop循環(huán)的方法

38、,并且只能在Do.Loop循環(huán)中使用。 Exit For提供一種退出For循環(huán)的方法,并且只能在For.Next或For Each.Next循環(huán)中使用。 Exit Function立即從包含該語句的Function過程中退出。程序會從調(diào)用 Function 的語句之后的語句繼續(xù)執(zhí)行。 Exit Property立即從包含該語句的Property過程中退出。程序會從調(diào)用Property過程的語句之后的語句繼續(xù)執(zhí)行。 Exit Sub立即從包含該語句的Sub過程中退出。程序會從調(diào)用Sub過程的語句之后的語句繼續(xù)執(zhí)行?!纠渴褂肊xit語句退出For.Next循環(huán)、Do.Loop循環(huán)及子過程。Pri

39、vate Sub Form_Click()Dim I, OneNumDo 建立無窮循環(huán)For I=1 To 1000 循環(huán)1000次OneNum=Int(Rnd*1000) 生成一隨機數(shù)碼Select Case OneNum 檢查隨機數(shù)碼Case 7: Exit For 如果是7,退出For循Case 29: Exit Do 如果是29,退出Do循環(huán)Case 54: Exit Sub 如果是 54,退出子過程End SelectNext IEnd Sub4.5.3 End語句格式:End功能:結(jié)束一個程序的運行。End語句不調(diào)用Unload、QueryUnload、或 Terminate事件或任何其它Visual Basic代碼,只是生硬地終止代碼執(zhí)行。關閉由Open語句打開的文件,并且釋放程序所占用的內(nèi)存。在Visual Basic中還有多種形式的End語句,用于結(jié)束一個程序塊或過程。其形式有:End IfEnd SelectEnd TypeEnd WithEnd SubEnd Function等它們與對應的語句配對使用?!纠縋rivate Sub Command1_Click()EndEnd Sub該過程用于結(jié)束程序,即單擊命令按鈕Command

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論