下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、4.1.1 算法概述及特性 一、算法概述廣義地講:算法是為完成一項(xiàng)任務(wù)所應(yīng)當(dāng)遵循的一步一步的規(guī)則的、精確的、無(wú)歧義的描述,它的總步數(shù)是有限的。狹義地講:算法是解決一個(gè)問題采取的方法和步驟的描述。下面通過兩個(gè)簡(jiǎn)單的例子加以說(shuō)明:【例】輸入10個(gè)數(shù),打印輸出其中最大的數(shù)。其算法設(shè)計(jì)如下:1、輸入1個(gè)數(shù),存入變量A中,將記錄數(shù)據(jù)個(gè)數(shù)的變量N賦值為1,即N=1。2、將A存入表示最大值的變量Max中,即Max=A。3、再輸入一個(gè)值給A,如果AMax,則Max=A,否則Max不變。4、讓記錄數(shù)據(jù)個(gè)數(shù)的變量增加1,即N=N+1。5、判斷N是否小于10,若成立則轉(zhuǎn)到第3步執(zhí)行,否則轉(zhuǎn)到第6步。6、打印輸出ma
2、x。二、算法的特性 1、有窮性:一個(gè)算法必須在執(zhí)行有窮多個(gè)計(jì)算步驟后終止。2、確定性:一個(gè)算法給出的每個(gè)計(jì)算步驟,必須都是精確定義的、無(wú)二義性的。3、有0個(gè)或多個(gè)輸入:一個(gè)算法中可以沒有輸入,也可以有一個(gè)或多個(gè)輸入信息,如果需要運(yùn)行時(shí)輸入不同數(shù)據(jù),這些輸入信息是算法所需的初始數(shù)據(jù)。4、有一個(gè)或多個(gè)輸出:一個(gè)算法應(yīng)有一個(gè)或多個(gè)輸出,一個(gè)算法得到的結(jié)果(中間結(jié)果或最后結(jié)果)就是算法的輸出。沒有輸出的算法是沒有意義的。5、有效性:算法中的每一個(gè)步驟必須有效地執(zhí)行,并能得到確定結(jié)果。4.1.2 算法的表示一、自然語(yǔ)言與偽代碼表示算法自然語(yǔ)言:就是指人們?nèi)粘J褂玫恼Z(yǔ)言,可以是漢語(yǔ)、英語(yǔ)或其它語(yǔ)言。用自然
3、語(yǔ)言表示的優(yōu)點(diǎn)是通俗易懂,缺點(diǎn)是文字冗長(zhǎng),容易出現(xiàn)“歧義性”。偽代碼:是用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)(包括數(shù)學(xué)符號(hào))來(lái)描述算法?!纠枯斎?個(gè)數(shù),打印輸出其中最大的數(shù)??捎萌缦碌膫未a表示:Begin(算法開始)輸入 A,B,CIF AB 則 AMax否則 BMaxIF CMax 則 CMaxPrint MaxEnd (算法結(jié)束)二、 用傳統(tǒng)流程圖表示算法三、三種基本結(jié)構(gòu)的特點(diǎn)1、只有一個(gè)入口2、只有一個(gè)出口3、不存在死語(yǔ)句4、不存在死循環(huán)【例】輸入10個(gè)數(shù),打印輸出其中的最大的數(shù)的流程圖如下圖4-4所示:圖4-44.1.3 用NS流程圖表示算法 NS流程圖完全去掉了帶箭頭的流程
4、線,將全部算法寫在一個(gè)矩形框內(nèi),在矩形內(nèi)還可包含其它從屬于它的框。一、順序結(jié)構(gòu)順序結(jié)構(gòu)的NS流程圖如下圖4-5所示,執(zhí)行順序先后。語(yǔ)句A 語(yǔ)句B圖4-5二、選擇結(jié)構(gòu)(a)(b)圖4-6圖4-6(a)所示為條件為真時(shí)執(zhí)行語(yǔ)句塊A,條件為假時(shí)執(zhí)行語(yǔ)句塊B。圖4-6(b)所示為條件為真時(shí)執(zhí)行語(yǔ)句塊,為假時(shí)什么都不做。三、循環(huán)結(jié)構(gòu)圖4-7其中圖4-7(a)為 當(dāng)型循環(huán),圖4-7(b)為直到循環(huán)?!纠慨嫵鰪?0個(gè)數(shù)中選出最大的數(shù)的NS流程圖4-8:圖4-8最后需要說(shuō)明的是:上面介紹的算法表示是給人看的,即是為幫助程序開發(fā)人員閱讀、編寫程序而設(shè)計(jì)的一種輔助工具,而程序則必須符合計(jì)算機(jī)語(yǔ)言的語(yǔ)法規(guī)則。以下
5、是上面例子的計(jì)算機(jī)程序,即為用計(jì)算機(jī)語(yǔ)言表示算法: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 賦值語(yǔ)句 計(jì)算機(jī)要完成指定的工作,首先要接收計(jì)算機(jī)內(nèi)部或外界給予的各種數(shù)據(jù),賦值語(yǔ)句是一種數(shù)據(jù)賦給計(jì)算機(jī)內(nèi)部變量或?qū)傩缘拿?。一、賦值語(yǔ)句的格式格式1:let=格式2:let.=說(shuō)明: 應(yīng)符合Visual Basic的變量命名約定。 可以是常量、變量、表
6、達(dá)式及帶有屬性的對(duì)象。 缺省時(shí)為當(dāng)前窗體。二、賦值語(yǔ)句的功能將表達(dá)式的值賦值給變量名或指定對(duì)象的屬性。一般用于給變量賦值或?qū)丶O(shè)定屬性值。三、賦值語(yǔ)句的幾種形式(一)給變量賦值例如:Dim v As IntegerDim book As String*20v=26book=Visual Basic 把數(shù)值26賦給整型變量v,把字符串“Visual Basic”賦給字符串變量book。26與“Visual Basic”都為常量,常量是表達(dá)式最簡(jiǎn)單的形式??梢詫⒁粋€(gè)表達(dá)式的值賦給一個(gè)變量,所以下面的賦值語(yǔ)句是合法的:Dim sum1 As DoubleDim price1 As Single,p
7、rice2 As Singleprice1=198.6price2=1386.95*0.8sum1=price1*23+price2*500(二)為對(duì)象的屬性賦值在VB中可以在程序中用賦值語(yǔ)句為對(duì)象的屬性設(shè)置屬性值(有的屬性則必須如此)。它的一般格式為:對(duì)象.屬性=屬性值例如,為命令按鈕cmdDisplay的Caption屬性設(shè)置值:cmdDisplay.Caption=顯示文本為文本框txtDisplay的FontName及FontSize屬性設(shè)置值:txtDisplay.FontName=SystemtxtDisplay.FontSize=18(三)為用戶自定義類型聲明的變量的各元素賦值為
8、用戶自定義類型聲明的變量的各元素賦值,它的一般格式為:變量名.元素名=表達(dá)式例如:Type bookname As String*30auther As String*10price As Singlepublisher As String*50End Type Dim bookMessage As bookbookM=Visual Basic程序設(shè)計(jì)教程bookMessage.auther=張洪bookMessage.price=26.80bookMessage.publisher=科學(xué)出版社四、注意點(diǎn)和常見錯(cuò)誤 “=”賦值號(hào)與數(shù)學(xué)中的等號(hào)的含義不同。 賦值語(yǔ)句多次使用
9、的結(jié)果為最后一次的賦值。例如:a=3a=4a=5 a的結(jié)果為5 類型相容。1、數(shù)值型的表達(dá)式可以直接賦值給任一類型的變量。2、數(shù)字字符串可以直接賦給數(shù)值型變量,也可以直接賦給邏輯型,日期型變量及可變類型的變量。3、邏輯型表達(dá)式可以直接賦給數(shù)值變量,也可賦給其他類型的變量。例如:strs$=01 等價(jià)于 strs$=“false” 當(dāng)賦值號(hào)“=”兩邊類型不同時(shí),“向左看齊”。 賦值語(yǔ)句除了其本身用途以外,經(jīng)常用于變量的累加,累乘及變量交換。錯(cuò)誤1:賦值號(hào)兩邊的量左右互換。錯(cuò)誤2:賦值號(hào)左邊為常量,函數(shù)名,表達(dá)式。錯(cuò)誤3:多個(gè)變量被同時(shí)賦予一個(gè)表達(dá)式,或多個(gè)值同時(shí)賦給同一個(gè)變量。4.2.2 數(shù)據(jù)的
10、輸出Print方法 格式:.Print;|,:窗體如:Form1.Print Hello圖片框如:Picture1.Print Hello打印機(jī)如:Printer.Print Hello立即窗口如:Debug .Print Hello省略:默認(rèn)為當(dāng)前窗體。:是一個(gè)或多個(gè)表達(dá)式,若為多個(gè)表達(dá)式,則各表達(dá)式之間用“,”或“;”隔開。省略此項(xiàng),則輸出一空行。逗號(hào):用“,”分隔各表達(dá)式時(shí),各項(xiàng)在以14個(gè)字符位置為單位劃分出的區(qū)段中輸出,每個(gè)區(qū)段輸出一項(xiàng)。分號(hào):用“;”分隔各表達(dá)式時(shí),各項(xiàng)按緊湊格式輸出。說(shuō)明: 輸出時(shí),數(shù)值型數(shù)據(jù)前有一個(gè)符號(hào)位(正號(hào)不顯),后面留一個(gè)空格位;字符串原樣輸出,前后無(wú)空格。
11、 如果在語(yǔ)句行末尾有“;”,則下一個(gè)Print輸出的內(nèi)容,將緊跟在當(dāng)前Print輸出內(nèi)容后面;如果在語(yǔ)句行末尾有“,”,則下一個(gè)Print輸出的內(nèi)容,將在當(dāng)前Print輸出內(nèi)容的下一區(qū)段輸出;如果在語(yǔ)句行末尾無(wú)分隔符,則輸出完本語(yǔ)句內(nèi)容后換行,即在新的一行輸出下一個(gè)Print的內(nèi)容?!纠縋rivate Sub Form_Load()Form1.ShowPrint 12345678901234567890Print產(chǎn)生空行Print 2+4=; 2 + 4,Print取消上面一句末尾逗號(hào)的作用Print 2-4=;Print 2-4End Sub4.2.3 用戶交互函數(shù)和過程 一、數(shù)據(jù)的輸入I
12、nputBox函數(shù)(一)格式變量名=InputBox$(, , )說(shuō)明: :不能缺省。通常為字符串常量、變量和字符串表達(dá)式??捎肅hr(13)、Chr(10)、Chr(13) & Chr(10)、vbCrLf換行。 :字符串表達(dá)式。決定對(duì)話框標(biāo)題區(qū)顯示的信息,若缺省,則以工程名作為對(duì)話框的標(biāo)題。 :通常為數(shù)值常量、字符串常量或常量表達(dá)式。輸入文本編輯區(qū)默認(rèn)值,如果省略,則默認(rèn)為空。 、:確定對(duì)話框在屏幕上顯示的位置,為整型表達(dá)式,用來(lái)確定對(duì)話框左上角在屏幕上的位置。坐標(biāo)單位為twip。 返回值:字符串(在對(duì)話框中單擊取消則返回)。(二)功能打開一對(duì)話框,等待用戶輸入正文或按下按鈕,并返回包含文
13、本框內(nèi)容的字符串?!纠繂螕簟按_定”,返回文本框中的文本到變量R中。單擊“取消”,返回一個(gè)零長(zhǎng)度的字符串。注意: 各項(xiàng)參數(shù)次序必須一一對(duì)應(yīng),除第一項(xiàng)參數(shù)“提示”不能省略外,其余參數(shù)均可省略,如果處于中間位置的參數(shù)省略,其對(duì)應(yīng)的逗號(hào)不能省略。 由InputBox函數(shù)返回的數(shù)據(jù)類型是字符類型數(shù)據(jù),如果要得到數(shù)值類型數(shù)據(jù),則必須用Val()函數(shù)進(jìn)行類型轉(zhuǎn)換。二、MsgBox函數(shù)和MsgBox過程(一)格式函數(shù)格式:變量%=MsgBox(提示,按鈕圖標(biāo)+缺省按鈕+模式,標(biāo)題)過程形式:MsgBox 提示,按鈕圖標(biāo)+缺省按鈕+模式,標(biāo)題說(shuō)明: “標(biāo)題”和“提示”與InputBox函數(shù)中對(duì)應(yīng)的參數(shù)相同。
14、“按鈕圖標(biāo)+缺省按鈕+模式”是整型表達(dá)式,決定信息框按鈕數(shù)目、出現(xiàn)在信息框上的圖標(biāo)類型及操作模式(如下表所示),若程序中需要返回值,則使用函數(shù),否則可調(diào)用過程。 返回值:由在對(duì)話框中按下哪種按鈕決定。按鈕及圖標(biāo)值如表4-1(a);根據(jù)用戶所選按鈕,函數(shù)返回17的整數(shù)值,其含義如表4-1(b)。 表4-1(a) 按鈕及圖標(biāo)表4-1(b) 函數(shù)返回值在對(duì)話框中顯示消息,等待用戶單擊按鈕,并返回一個(gè)整數(shù)告訴用戶單擊了哪個(gè)按鈕。例:4.2.4 注釋語(yǔ)句 為了提高程序的可讀性,通常在程序的適當(dāng)位置加上必要的注釋。在VB中用“”或Rem來(lái)標(biāo)識(shí)一條注釋語(yǔ)句。格式: | Rem 功能:給語(yǔ)句或程序段加上注釋,
15、以提高可讀性?!纠縋rivate Sub Form_Activate()Rem 本程序用于計(jì)算圓的面積Dim R As String, AREA As Single R為半徑R=InputBox(請(qǐng)輸入半徑, , 1) :Rem 輸入半徑AREA=3.14*Val(R)2以下將半徑和面積輸出到窗體上Print Val(R), AREAEnd Sub說(shuō)明: 指要包括的任何注釋文本。在Rem關(guān)鍵字和之間要加一個(gè)空格??梢杂靡粋€(gè)英文單引號(hào)“”來(lái)代替Rem關(guān)鍵字。 如果在其他語(yǔ)句行后面使用Rem關(guān)鍵字,必需用冒號(hào)(:)與語(yǔ)句隔開。若用英文單引號(hào)“”,則在其他語(yǔ)句行后面不必加冒號(hào)(:)。4.3.1 I
16、f條件語(yǔ)句在程序設(shè)計(jì)中經(jīng)常遇到這類問題,它需要根據(jù)不同的情況采用不同的處理方法。例如,一元二次方程的求根問題,要根據(jù)判別式小于零或大于等于零的情況,采用不同的數(shù)學(xué)表達(dá)式進(jìn)行計(jì)算。對(duì)于這類問題,如果用順序結(jié)構(gòu)編程,顯然力不從心。必須借助選擇結(jié)構(gòu)。本章主要介紹實(shí)現(xiàn)選擇結(jié)構(gòu)的語(yǔ)句。包括:行If語(yǔ)句、塊If語(yǔ)句、Else If語(yǔ)句、Select Case語(yǔ)句,以及選擇結(jié)構(gòu)在程序設(shè)計(jì)中的應(yīng)用。一、單行結(jié)構(gòu)條件語(yǔ)句格式:If Then Else 圖4-8 單行If語(yǔ)句流程圖功能:首先判斷“條件”,其值為真時(shí),執(zhí)行語(yǔ)句組1;為假時(shí)執(zhí)行語(yǔ)句組2。當(dāng)缺省Else中的內(nèi)容時(shí),該選擇結(jié)構(gòu)只對(duì)條件滿足的情況進(jìn)行處理。
17、說(shuō)明: :一般為關(guān)系表達(dá)式、布爾表達(dá)式、數(shù)值表達(dá)式(0為False,非0為True)、字符串表達(dá)式(0為False,非0為True)。通常把關(guān)系表達(dá)式或邏輯表達(dá)式的值為真時(shí),稱為條件滿足;值為假時(shí),稱為條件不滿足。反之亦然。 、:分別是“條件”滿足或不滿足時(shí),處理方法的描述,可以是若干個(gè)語(yǔ)句,各語(yǔ)句之間用冒號(hào)隔開。 可以沒有Else部分,這時(shí)必須有。 IfThen、Else、End If是VB的保留字?!纠吭O(shè)界面如右圖所示,用文本框輸入x的值,單擊“計(jì)算Y”按鈕時(shí),根據(jù)以下公式,計(jì)算y的值。代碼如下:Private Sub Command1_Click()X=Val(Text1.Text)
18、If X0,Y0;在B象限時(shí)X0;在C象限時(shí)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條件語(yǔ)句三、塊結(jié)構(gòu)條件語(yǔ)句格式:If ThenElseIf ThenElseIf ThenElseEnd If圖4-10塊結(jié)構(gòu)的If語(yǔ)句流程功能:1、依次判斷條件,如果找到一個(gè)滿足的條件,則執(zhí)行其下面的語(yǔ)句塊,然后跳過End If,執(zhí)行后面的程序。2、如果所列出的條件都不滿足,則執(zhí)行Else語(yǔ)句后面的語(yǔ)句塊;如果所列出的條件都不滿足,又沒
19、有Else子句,則直接跳過End If,不執(zhí)行任何語(yǔ)句塊。【例】如圖4-11輸入華氏溫度F,利用公式C=5/9*(F-32)轉(zhuǎn)換成攝氏溫度C,根據(jù)轉(zhuǎn)換結(jié)果C的不同值,按以下要求給出相應(yīng)的提示。C40時(shí),打印HOT 30C40時(shí),打印 WARM 20C30時(shí),打印 ROOM TEMPERATURE 10C20時(shí),打印 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語(yǔ)句,實(shí)際完成的是塊If的嵌套,它和塊If嵌套的格式上有很大區(qū)別,ElseIf結(jié)構(gòu)只有一對(duì)If和End If語(yǔ)句。另外應(yīng)注意:ElseIf和ElseIf的區(qū)別。4.3.2 Select Case語(yǔ)句(情況語(yǔ)句)當(dāng)對(duì)一個(gè)表達(dá)式的不同取值情況作不同處理時(shí),用ElseIf語(yǔ)句程序結(jié)構(gòu)顯得較為雜亂,而用Select Case語(yǔ)句將使程序的結(jié)構(gòu)更清晰,Select Case語(yǔ)句又稱為情況語(yǔ)句。格式:Select Case Case
21、 Case Case ElseEnd Select說(shuō)明: Select Case、Case、Case Else、End Select都是關(guān)鍵字。 :可以是數(shù)值型或字符串型表達(dá)式。 Case 表達(dá)式表:表中的表項(xiàng)為如下形式: 表達(dá)式1,表達(dá)式2.如:Case 1,3,5 表達(dá)式1 TO 表達(dá)式2如:Case 10 TO 30Case A TO Z Is 如:Case Is=10Case Is=0與Case 0相同。 語(yǔ)句塊為一條或多條語(yǔ)句。圖4-12 Select Case語(yǔ)句流程功能:根據(jù)測(cè)試表達(dá)式的值,按順序匹配Case后的表達(dá)式,如果匹配成功,則執(zhí)行該Case下的語(yǔ)句塊,然后轉(zhuǎn)到End S
22、elect語(yǔ)句之后繼續(xù)執(zhí)行。Select Case語(yǔ)句的執(zhí)行過程是:先求“測(cè)試表達(dá)式”的值,然后順序測(cè)試該值符合哪一個(gè)Case子句中情況,如果找到了,則執(zhí)行該Case子句下面的語(yǔ)句塊,然后執(zhí)行End Select下面的語(yǔ)句;如果沒找到,則執(zhí)行Case Else下面的語(yǔ)句塊,然后執(zhí)行End Select下面的語(yǔ)句。注意:1、測(cè)試表達(dá)式的類型應(yīng)與Case后表達(dá)式類型一致,且三種形式可以混用。如:Case Is8Bonus=100Case ElseBonus=0End Select End Sub4.4.1 ForNext循環(huán)語(yǔ)句在實(shí)際工作中,常遇到一些操作過程不太復(fù)雜,但又需要反復(fù)進(jìn)行相同處理的問
23、題。所謂循環(huán)就是重復(fù)地執(zhí)行一組語(yǔ)句,循環(huán)結(jié)構(gòu)非常適合于解決處理的過程相同、處理的數(shù)據(jù)相關(guān),但處理的具體值不同的問題。我們把能夠處理這類問題的語(yǔ)句稱為循環(huán)語(yǔ)句。VB提供了三種不同風(fēng)格的循環(huán)語(yǔ)句,它們分別是: ForNext循環(huán)語(yǔ)句; WhileWend循環(huán)語(yǔ)句; DoLoop循環(huán)語(yǔ)句。我們將對(duì)這3種循環(huán)語(yǔ)句逐一介紹。一、ForNext循環(huán)語(yǔ)句For.Next 語(yǔ)句以指定次數(shù)來(lái)重復(fù)執(zhí)行循環(huán)體ForNext之間的語(yǔ)句組。格式:For 循環(huán)控制變量=初值 To 終值 Step 步長(zhǎng)語(yǔ)句組Exit For語(yǔ)句組Next 循環(huán)控制變量 For、To、Step、Exit For、Next是關(guān)鍵字。循環(huán)控制變
24、量:也稱“循環(huán)變量”、“計(jì)數(shù)變量”或“循環(huán)計(jì)數(shù)器”。它是一個(gè)數(shù)值變量。但不能是布爾型變量或數(shù)組元素。初值:循環(huán)變量的初值,是一個(gè)數(shù)值表達(dá)式。終值:循環(huán)變量的終值。是一個(gè)數(shù)值表達(dá)式。步長(zhǎng):可選參數(shù)。是循環(huán)控制變量的增量,是一個(gè)數(shù)值表達(dá)式。其值可以是正數(shù)(為遞增循環(huán)),或負(fù)數(shù)(為遞減循環(huán)),但不能為0。缺省該項(xiàng)時(shí)步長(zhǎng)值為1。語(yǔ)句組:是循環(huán)體,為放在For和Next之間的一條或多條語(yǔ)句。Exit For 語(yǔ)句:隨時(shí)退出循環(huán)??梢栽谘h(huán)體中任何位置放置任意個(gè)Exit For 語(yǔ)句。 經(jīng)常用在條件判斷之后,例如If.Then,并將控制權(quán)轉(zhuǎn)移到緊接在Next之后的語(yǔ)句。Next:循環(huán)終端語(yǔ)句,后跟的“循環(huán)
25、變量”與For語(yǔ)句中的“循環(huán)變量”必須相同。For循環(huán)的執(zhí)行過程是:首先將“初值”賦給“循環(huán)控制變量”,檢查“循環(huán)控制變量”的值是否超過“終值”,如果超過就跳出循環(huán),執(zhí)行Next后面的語(yǔ)句;否則執(zhí)行一次“循環(huán)體”,遇到Next語(yǔ)句,然后“循環(huán)控制變量”+“步長(zhǎng)”又賦給“循環(huán)控制變量”,重復(fù)上述過程。這里所說(shuō)的“超過”有兩種含義,大于或小于。步長(zhǎng)為正值時(shí),檢查循環(huán)變量是否大于終值;步長(zhǎng)為負(fù)值時(shí),檢查循環(huán)變量是否小于終值。使用Step關(guān)鍵字,可以由所指定的值增加或減少循環(huán)變量。圖4-13 For-Next循環(huán)流程圖注意: For語(yǔ)句和Next語(yǔ)句必須成對(duì)出現(xiàn),缺一不可,且For語(yǔ)句必須在Next語(yǔ)
26、句之前。 循環(huán)次數(shù)由初值、終值和步長(zhǎng)確定,計(jì)算公式為:循環(huán)次數(shù)=Int(終值初值)/步長(zhǎng))+1 可以省略Next語(yǔ)句中的循環(huán)變量名。建議加上循環(huán)變量名,使程序具有可讀性?!纠壳驨!(N為自然數(shù))。分析:由階乘的定義,我們可以得出N!=1*2*(N-2)*(N-1)*N=(N-1)!*N,也就是說(shuō),一個(gè)自然數(shù)的階乘,等于該自然數(shù)與前一個(gè)自然數(shù)階乘的乘積。代碼如下:Private Sub Form_Click()Dim I%,f&,n%n=InputBox(輸入一個(gè)自然數(shù):,輸入提示,10)f=1For I=1 To nf=f*INext I.Print n;!=;fEnd Sub圖4-144.
27、4.2 DoLoop循環(huán)語(yǔ)句 Do循環(huán)具有較強(qiáng)的靈活性,它可以根據(jù)需要決定是條件滿足時(shí)執(zhí)行循環(huán)體,還是一直執(zhí)行循環(huán)體直到條件滿足。而它所用的時(shí)間是不確定的。格式為:Do While | Until 條件語(yǔ)句組Exit Do語(yǔ)句組Loop或: Do語(yǔ)句組Exit Do語(yǔ)句組Loop While | Until 條件其中:Do、Loop、While、Until都是關(guān)鍵字。大括號(hào)中的While、Until選其一。語(yǔ)句組:是需要重復(fù)執(zhí)行的一條或多條語(yǔ)句,即循環(huán)體。條件:是數(shù)值表達(dá)式或字符串表達(dá)式,其值為True或False。如果“條件”是 Null,則“條件”會(huì)被當(dāng)作False。當(dāng)只有Do、Loop兩
28、個(gè)關(guān)鍵字構(gòu)成的Do循環(huán)時(shí),程序?qū)o(wú)限循環(huán)。為了使程序有限循環(huán),必須使用關(guān)鍵字While或Until或Exit Do: While:是當(dāng)“條件”為True時(shí)執(zhí)行循環(huán)。 Until:是在“條件”變?yōu)門rue之前重復(fù)執(zhí)行。 Exit Do:隨時(shí)跳出Do Loop循環(huán)。同Exit For。注意:可以按ESC或CTRL+BREAK鍵來(lái)終止無(wú)窮循環(huán)。當(dāng)使用While關(guān)鍵字去檢查Do.Loop語(yǔ)句中的條件時(shí),有兩種方法??梢栽谶M(jìn)入循環(huán)之前檢查條件,也可以在循環(huán)至少運(yùn)行一次之后才檢查條件。一、Do While Loop語(yǔ)句 該語(yǔ)句的執(zhí)行原則是:首先判斷條件,若為False,則跳出該語(yǔ)句;否則(條件為True)
29、,執(zhí)行循環(huán)體,遇到Loop語(yǔ)句,然后再判斷條件。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)中的語(yǔ)句將永遠(yuǎn)不會(huì)執(zhí)行。二、DoLoop While語(yǔ)句該語(yǔ)句的執(zhí)行原則是:先執(zhí)行循環(huán)體,然后再判斷“條件”,若為False,
30、則跳出該語(yǔ)句;否則(即“條件”為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語(yǔ)句While.Wend語(yǔ)句構(gòu)成當(dāng)循環(huán),只要指定的條件為True,則會(huì)重復(fù)執(zhí)
31、行一系列的語(yǔ)句。程序格式如下:While 條件語(yǔ)句組Wend其中:While、Wend是關(guān)鍵字。條件:是數(shù)值表達(dá)式或字符串表達(dá)式,其計(jì)算結(jié)果為True或False。如果“條件”為Null,則“條件”會(huì)視為False。語(yǔ)句組:為一條或多條語(yǔ)句,即循環(huán)體。當(dāng)條件為True時(shí)執(zhí)行。While.Wend語(yǔ)句的執(zhí)行過程:首先判斷條件,若為True,則執(zhí)行語(yǔ)句組,一直執(zhí)行到Wend語(yǔ)句。然后回到While語(yǔ)句,再一次檢查“條件”,如果還是為True,則重復(fù)執(zhí)行。如果不為True,則程序會(huì)從Wend語(yǔ)句之后的語(yǔ)句繼續(xù)執(zhí)行。While.Wend語(yǔ)句流程圖4-19所示如下: 圖4-19 While.Wend循環(huán)
32、流程注意:While.Wend循環(huán)也可以是多層的嵌套結(jié)構(gòu)。每個(gè)Wend匹配它上面最近的While語(yǔ)句。【例】執(zhí)行下面程序代碼:Private Sub Command1_Click()Dim CounterCounter=0 設(shè)置變量初值。While Counter 19 時(shí)則循環(huán)終止。MsgBox 循環(huán)次數(shù)為: & CounterEnd Sub4.4.4 循環(huán)的嵌套多重循環(huán)結(jié)構(gòu)在一個(gè)循環(huán)體內(nèi)又包含了一個(gè)完整的循環(huán),這樣的結(jié)構(gòu)稱為多重循環(huán)或循環(huán)的嵌套。在程序設(shè)計(jì)時(shí),許多問題要用二重或多重循環(huán)才能解決。我們前面學(xué)過的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é)束后,再進(jìn)行下一次外循環(huán),如此反復(fù),直到外循環(huán)結(jié)束。說(shuō)明 嵌套的循環(huán)可以是ForNext循環(huán),也可以是 DoLoop循環(huán)。 FOR循環(huán)有一個(gè)公共端點(diǎn),可使用一個(gè)NEXT語(yǔ)句,循環(huán)變量按從內(nèi)到外排列。 外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉。 嵌套循環(huán)應(yīng)選用不同的循環(huán)變量?!纠壳?【例】公雞5個(gè)錢一只,母雞三個(gè)錢一只、小雞一個(gè)錢三只,要用100個(gè)錢買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)語(yǔ)句比較一般情況下,4種循環(huán)語(yǔ)句可以相互代替,其中WhileWend語(yǔ)句與Do while.Loop語(yǔ)句等價(jià),下表4-
35、2給出了各種循環(huán)語(yǔ)句的區(qū)別。表4-2 For.toNextDo while/until.LoopDo.Loop While/until.循環(huán)類型當(dāng)型循環(huán)當(dāng)型循環(huán)直到循環(huán)循環(huán)控制條件循環(huán)變量大于或小于終值條件成立/不成立執(zhí)行循環(huán)條件成立/不成立執(zhí)行循環(huán)循環(huán)變量初值在FOR語(yǔ)句行中在DO之前在DO之前使循環(huán)結(jié)束For語(yǔ)句中無(wú)需專門語(yǔ)句必須用專門語(yǔ)句必須使用專門語(yǔ)句使用場(chǎng)合循環(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)即整個(gè)選擇結(jié)構(gòu)都屬于循環(huán)體。在選擇結(jié)構(gòu)中嵌套循環(huán)結(jié)構(gòu)時(shí),則要求整個(gè)循環(huán)結(jié)構(gòu)必須完整地嵌套在一個(gè)分支
36、內(nèi),一個(gè)循環(huán)結(jié)構(gòu)不允許出現(xiàn)在兩個(gè)或兩個(gè)以上的分支內(nèi)。下面用幾個(gè)例子(如圖4-22)來(lái)說(shuō)明:圖4-224.5.1 Goto語(yǔ)句Goto 語(yǔ)句無(wú)條件地轉(zhuǎn)移到它所在過程中指定的行。其格式為:Goto 其中: Goto是關(guān)鍵字。 :是任何字符額組合,不區(qū)分大小寫,必須以字母開頭,以冒號(hào)(:)結(jié)尾。標(biāo)號(hào)必須是放在行的開始位置。 :行號(hào)可以是任何數(shù)值的組合,在使用行號(hào)的模塊內(nèi),該組合是唯一的。標(biāo)號(hào)必須是放在行的開始位置。 在程序中的使用格式為:標(biāo)號(hào)|行號(hào):語(yǔ)句例如Line1:X=0注意:1、Goto只能跳到它所在過程中的行。2、在一個(gè)過程中,標(biāo)號(hào)或行號(hào)都必須是唯一的。3、太多的Goto語(yǔ)句,會(huì)使程序代碼不
37、容易閱讀及調(diào)試。盡可能使用結(jié)構(gòu)化控制語(yǔ)句 (Do.Loop、For.Next、If.Then.Else、Select Case),應(yīng)盡量避免使用它。4.5.2 Exit語(yǔ)句Exit語(yǔ)句用于退出Do.Loop、For.Next、Function或Sub代碼塊。對(duì)應(yīng)的使用格式為:Exit Do、Exit For、Exit Function、Exit Sub。分別表示退出DO循環(huán)、For循環(huán)、函數(shù)過程、子過程。格式:Exit DoExit ForExit FunctionExit PropertyExit Sub它們都是關(guān)鍵字。在程序中的作用如下: 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立即從包含該語(yǔ)句的Function過程中退出。程序會(huì)從調(diào)用 Function 的語(yǔ)句之后的語(yǔ)句繼續(xù)執(zhí)行。 Exit Property立即從包含該語(yǔ)句的Property過程中退出。程序會(huì)從調(diào)用Property過程的語(yǔ)句之后的語(yǔ)句繼續(xù)執(zhí)行。 Exit Sub立即從包含該語(yǔ)句的Sub過程中退出。程序會(huì)從調(diào)用Sub過程的語(yǔ)句之后的語(yǔ)句繼續(xù)執(zhí)行?!纠渴褂肊xit語(yǔ)句退出For.Next循環(huán)、Do.Loop循環(huán)及子過程。Pri
39、vate Sub Form_Click()Dim I, OneNumDo 建立無(wú)窮循環(huán)For I=1 To 1000 循環(huán)1000次OneNum=Int(Rnd*1000) 生成一隨機(jī)數(shù)碼Select Case OneNum 檢查隨機(jī)數(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語(yǔ)句格式:End功能:結(jié)束一個(gè)程序的運(yùn)行。End語(yǔ)句不調(diào)用Unload、QueryUnload、或 Terminate事件或任何其它Visual Basic代碼,只是生硬地終止代碼執(zhí)行。關(guān)閉由Open語(yǔ)句打開的文件,并且釋放程序所占用的內(nèi)存。在Visual Basic中還有多種形式的End語(yǔ)句,用于結(jié)束一個(gè)程序塊或過程。其形式有:End IfEnd SelectEnd TypeEnd WithEnd SubEnd Function等它們與對(duì)應(yīng)的語(yǔ)句配對(duì)使用?!纠縋rivate Sub Command1_Click()EndEnd Sub該過程用于結(jié)束程序,即單擊命令按鈕Command
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2017村黨支部書記述職報(bào)告范文3篇
- 胎盤EVs在細(xì)胞信號(hào)轉(zhuǎn)導(dǎo)中的應(yīng)用-洞察分析
- 碳金融產(chǎn)品創(chuàng)新案例-洞察分析
- 專題2.1 有理數(shù)的加法【八大題型】(舉一反三)(人教版2024)(解析版)
- 無(wú)人駕駛在交通領(lǐng)域的應(yīng)用研究-洞察分析
- 投資管理行業(yè)數(shù)字化轉(zhuǎn)型-洞察分析
- 藝術(shù)教育政策環(huán)境分析-洞察分析
- 私募行業(yè)的大數(shù)據(jù)挖掘與價(jià)值發(fā)現(xiàn)-洞察分析
- 響應(yīng)式UI框架探索-洞察分析
- 甜菊苷在食品工業(yè)中的應(yīng)用-洞察分析
- 2024年泉州德化城建集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 負(fù)指數(shù)冪的計(jì)算題50道初一
- 壓力管道無(wú)損檢測(cè)通用工藝
- 南京市玄武區(qū)北京東路小學(xué)六年級(jí)上冊(cè)期末數(shù)學(xué)試卷及答案
- 北京二中學(xué)教育集團(tuán)2024屆數(shù)學(xué)八上期末綜合測(cè)試試題含解析
- 甲基丙二酸血癥
- 23秋國(guó)家開放大學(xué)《液壓氣動(dòng)技術(shù)》形考任務(wù)1-3參考答案
- 移動(dòng)時(shí)代騰訊O2O戰(zhàn)略研究
- 公司勞動(dòng)紀(jì)律考核辦法
- 21ZJ111 變形縫建筑構(gòu)造
- 三年級(jí)上冊(cè)美術(shù)教學(xué)設(shè)計(jì)-第19課吉祥虎 贛美版
評(píng)論
0/150
提交評(píng)論