




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第四章第四章 三種基本結(jié)構(gòu)程序設(shè)計(jì)三種基本結(jié)構(gòu)程序設(shè)計(jì) 本章內(nèi)容及要求: 1.了解算法概念及算法的表示,掌握用NS流程序表示算法 2. 熟練掌握賦值語句、End語句和注釋語句等語句及輸入/輸出消息框函數(shù)的使用; 3. 熟練掌握行if語句、塊if結(jié)構(gòu)、Select Case情況選擇結(jié)構(gòu)有使用,掌握選擇的嵌套結(jié)構(gòu); 4. 熟練掌握實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的For/Next循環(huán)結(jié)構(gòu)及Exit For語句、Do/Loop循環(huán)結(jié)構(gòu)的使用,掌握多重循環(huán)。重點(diǎn):重點(diǎn):選擇結(jié)構(gòu)及循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)及其應(yīng)用選擇結(jié)構(gòu)及循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)及其應(yīng)用難點(diǎn):難點(diǎn):選擇的嵌套及多重循環(huán)結(jié)構(gòu)選擇的嵌套及多重循環(huán)結(jié)構(gòu)4.1 算法及算法的表示算法及
2、算法的表示 4. 1.1 算法概述算法概述 什么是算法: 廣義地講:算法是為完成一項(xiàng)任務(wù)所應(yīng)當(dāng)遵循的一步一步的規(guī)則的、精確的、無歧義的描述,它的總步數(shù)是有限的。 狹義地講:算法是解決一個(gè)問題采取的方法和步驟的描述。下面通過兩個(gè)簡單的例子加以說明:例例4.1 輸入三個(gè)數(shù),然后輸出其中最大的數(shù)。輸入三個(gè)數(shù),然后輸出其中最大的數(shù)。 將三個(gè)數(shù)依次輸入到變量、B、C中,設(shè)變量MAX存放最大數(shù)。其算法如下: 例例4.2 輸入輸入10個(gè)數(shù),打印輸出其中最大的數(shù)。個(gè)數(shù),打印輸出其中最大的數(shù)。算法設(shè)計(jì)如下:算法設(shè)計(jì)如下:(1)輸入1個(gè)數(shù),存入變量A中,將記錄數(shù)據(jù)個(gè)數(shù)的變量N賦值為1,即N=1(2)將A存入表示最
3、大值的變量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)打印輸出max1) 輸入A、B、C。2) A與B中大的一個(gè)放入MAX中。3) 把C與MAX中大的一個(gè)放入MAX中。4) 輸出MAX,MAX即為最大數(shù)。4.1.2 算法的特性算法的特性 有窮性有窮性確定性確定性有有0個(gè)或多個(gè)輸入個(gè)或多個(gè)輸入有一個(gè)或多個(gè)輸出有一個(gè)或多個(gè)輸出有效性有效性4.1.3 算法的表示算法的表示 一、自然語言與偽代碼表示算法自然語言:就是指人們?nèi)粘J褂?/p>
4、的語言,可以是漢語、英語或其它語言。偽代碼:是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號(hào)(包括數(shù)學(xué)符號(hào))來描述算法。 例如:例例如:例4.1可用如下的偽代碼表示可用如下的偽代碼表示Begin(算法開始) 輸入 A,B,C IF AB 則 AMax 否則 BMax IF CMax 則 CMaxPrint MaxEnd (算法結(jié)束)二二 用用傳統(tǒng)傳統(tǒng)流程圖表示算法流程圖表示算法處理框起止框I/O框判斷框流程線連接點(diǎn)1、傳統(tǒng)流程圖中的基本符號(hào)、傳統(tǒng)流程圖中的基本符號(hào)2、三種基本結(jié)構(gòu)的表示、三種基本結(jié)構(gòu)的表示(1)順序結(jié)構(gòu))順序結(jié)構(gòu)條件語句1語句2YN語句1語句2(2)選擇結(jié)構(gòu))選擇結(jié)構(gòu)條件( a )
5、條件語句組(3)循環(huán)結(jié)構(gòu))循環(huán)結(jié)構(gòu)a) 當(dāng)型循環(huán)當(dāng)型循環(huán)b) 直到循環(huán)直到循環(huán)YNYN( b )語句組三種基本結(jié)構(gòu)的特點(diǎn):三種基本結(jié)構(gòu)的特點(diǎn):(1)只有一個(gè)入口)只有一個(gè)入口(2)只有一個(gè)出口)只有一個(gè)出口(3)不存在死語句)不存在死語句(4)不存在死循環(huán))不存在死循環(huán)例:例: 例例4.2輸入輸入10個(gè)數(shù),打印輸出其中的最大的數(shù)的流程圖個(gè)數(shù),打印輸出其中的最大的數(shù)的流程圖從從10個(gè)數(shù)中選出最大的數(shù)的流程圖個(gè)數(shù)中選出最大的數(shù)的流程圖NMaxMax =A輸入A開始再輸入給AN=N+1打印Max結(jié)束YNNY4.1.4 用用NS流程圖表示算法流程圖表示算法 將全部算法寫在一個(gè)矩形框內(nèi),在矩形內(nèi)還可包含
6、其將全部算法寫在一個(gè)矩形框內(nèi),在矩形內(nèi)還可包含其它從屬于它的框它從屬于它的框三種基本結(jié)構(gòu)的三種基本結(jié)構(gòu)的NS圖表示:圖表示:語句A語句B語句A語句B條件YN1、順序結(jié)構(gòu)、順序結(jié)構(gòu)2、選擇結(jié)構(gòu)、選擇結(jié)構(gòu)語句組(3)循環(huán)結(jié)構(gòu))循環(huán)結(jié)構(gòu)a) 當(dāng)型循環(huán)當(dāng)型循環(huán)b) 直到循環(huán)直到循環(huán)當(dāng)條件成立語句組直到當(dāng)條件成立例:例: 畫出從畫出從10個(gè)數(shù)中選出最大的數(shù)的個(gè)數(shù)中選出最大的數(shù)的NS 流程圖流程圖( a )( b )傳統(tǒng)流程圖NMaxMax =A輸入A開始再輸入給AN=N+1打印Max結(jié)束YNNY輸入A當(dāng)N=MaxYNPrivate Sub Form_Click() Dim a%, max%, i% ma
7、x = a For i = 1 To 10 a = Val(InputBox(A=?) If a max Then max = a Next i Print Max=; maxEnd Sub 最后需要說明的是:上面介紹的算法表示是給人看的,即是為幫助程序開發(fā)人員閱讀、編寫程序而設(shè)計(jì)的一種輔助工具,程序則必須符一計(jì)算機(jī)語言的語法規(guī)則。 下面是例4.2的計(jì)算機(jī) 程序,即為用計(jì)算機(jī)語言表示算用計(jì)算機(jī)語言表示算法:法:4.1.6 結(jié)構(gòu)化程序設(shè)計(jì)方法(補(bǔ)充)結(jié)構(gòu)化程序設(shè)計(jì)方法(補(bǔ)充)(一)、用計(jì)算機(jī)解決問題的過程(一)、用計(jì)算機(jī)解決問題的過程提出、分提出、分析問題析問題確定算確定算法模型法模型設(shè)計(jì)設(shè)計(jì)算
8、法算法編寫編寫程序程序調(diào)試調(diào)試程序程序分析輸分析輸出結(jié)果出結(jié)果正確正確合理合理結(jié)束結(jié)束不正確不正確(二)、結(jié)構(gòu)化程序設(shè)計(jì)思想(二)、結(jié)構(gòu)化程序設(shè)計(jì)思想自頂向下、逐步細(xì)化、模塊化自頂向下、逐步細(xì)化、模塊化自頂向下:自頂向下:先從全局、整體設(shè)計(jì)先從全局、整體設(shè)計(jì)逐步細(xì)化:逐步細(xì)化:將一個(gè)問題分解成幾個(gè)較小的問題解決將一個(gè)問題分解成幾個(gè)較小的問題解決模塊化:模塊化: 將一個(gè)大任務(wù)分解成若干個(gè)較小的部分,將一個(gè)大任務(wù)分解成若干個(gè)較小的部分, 每每 個(gè)部分承擔(dān)一定功能,稱為個(gè)部分承擔(dān)一定功能,稱為“功能模功能模塊塊”例:給例:給100個(gè)整數(shù),打印輸出其中的素?cái)?shù)個(gè)整數(shù),打印輸出其中的素?cái)?shù)S1NS流程圖流程
9、圖輸入輸入100個(gè)數(shù)存入個(gè)數(shù)存入X1,x2,x100打印打印x1.x100中中不等于不等于0的數(shù)的數(shù)讓讓x1,x2,x100中的非素變?yōu)橹械姆撬刈優(yōu)?S3S2輸入輸入xi當(dāng)當(dāng)i=100i=i+1i=1S1細(xì)化細(xì)化xi0當(dāng)當(dāng)i=100i=i+1i=1YN打印打印xiS3細(xì)化細(xì)化S1NS流程圖流程圖輸入輸入100個(gè)數(shù)存入個(gè)數(shù)存入X1,x2,x100打印打印x1.x100中中不等于不等于0的數(shù)的數(shù)讓讓x1,x100中的中的非素變?yōu)榉撬刈優(yōu)?S3S2S2細(xì)化細(xì)化判斷判斷xi是否是素?cái)?shù),是否是素?cái)?shù),若不是則將若不是則將xi=0當(dāng)當(dāng)i=100i=i+1i=1S21r=0rxi/2S21細(xì)化細(xì)化輸入輸入10
10、0個(gè)數(shù)存入個(gè)數(shù)存入X1,x2,x100打印打印x1.x100中中不等于不等于0的數(shù)的數(shù)讓讓x1,x100中中的非素變?yōu)榈姆撬刈優(yōu)?細(xì)化后的流程圖細(xì)化后的流程圖輸入輸入xi當(dāng)當(dāng)i=100i=i+1i=1當(dāng)當(dāng)ixi/2i=i+1xi0當(dāng)當(dāng)i=100i=1YN打印打印xii=i+14.2 順序結(jié)構(gòu)順序結(jié)構(gòu)4.2.1 4.2.1 賦值語句賦值語句 形式形式: : 變量名表達(dá)式變量名表達(dá)式 對(duì)象對(duì)象.屬性表達(dá)式屬性表達(dá)式 功能:功能: 將表達(dá)式的值賦值給變量名或指定對(duì)象的屬性。將表達(dá)式的值賦值給變量名或指定對(duì)象的屬性。 一般用于給變量賦值或?qū)丶O(shè)定屬性值一般用于給變量賦值或?qū)丶O(shè)定屬性值. 例:例:
11、 sRate!=0.1 Text1.Text 歡迎使用歡迎使用Visual Basic 6.0”說明:說明: 1 執(zhí)行過程:先求表達(dá)式的值,然后將值賦值給左邊的變量。執(zhí)行過程:先求表達(dá)式的值,然后將值賦值給左邊的變量。 2 右邊的表達(dá)式可以是變量、常量、函數(shù)調(diào)用等特殊的表達(dá)右邊的表達(dá)式可以是變量、常量、函數(shù)調(diào)用等特殊的表達(dá)式。式。 3 不要將不要將“”理解為數(shù)學(xué)上的等號(hào):理解為數(shù)學(xué)上的等號(hào): A=A+1 是表示將是表示將A單元的值加后以放回到單元的值加后以放回到A單元。單元。執(zhí)行過程如右圖執(zhí)行過程如右圖4賦值符號(hào)“=”左邊一定只能是變量名或?qū)ο蟮膶傩砸茫荒苁浅A?、符?hào)常量、表達(dá)式。 下面的
12、賦值語句都是錯(cuò)的:5=X 左邊是常量。Abs(X)=20 左邊是函數(shù)調(diào)用,即是表達(dá)式。 5. 賦值符號(hào)“=”兩邊的數(shù)據(jù)類型一般要求應(yīng)一致。 4.2.2 數(shù)據(jù)的輸出數(shù)據(jù)的輸出Print方法方法 Print方法的一般格式: 對(duì)象名對(duì)象名.Print,|;說明:說明: 對(duì)象名. 可以是窗體名、圖片框名,也可是立即窗口“Debug”。若省略對(duì)象,則表示在當(dāng)前窗體上輸出。在2.3節(jié)窗體對(duì)象的方法中對(duì)Print方法做了詳細(xì)的介紹。用Print方法在圖片框和立即窗口對(duì)象中輸出與在窗體對(duì)象中輸出完全相同。 缺省值標(biāo)題題提示4.2.3 用戶交互函數(shù)和過程用戶交互函數(shù)和過程 1. InputBox函數(shù)變量名=In
13、putBox$(, , ) 其中:提示 提示信息,標(biāo)題 標(biāo)題區(qū)顯示,缺省輸入?yún)^(qū)缺省值 有$ 返回字符類型,否則為數(shù)值類型. 例如,要在屏幕上顯示如下的對(duì)話框: 例如:例如:有下列語句如下: Dim strName As String * 40, strS1 As String * 40 strS1 = “請(qǐng)輸入你的姓名” + Chr(13) + Chr(10) + “然后單擊確定” strName= InputBox$(strS1, “輸入框”, , 100,100) 當(dāng)鍵盤輸入“王曉明” 后,變量strName獲得鍵盤輸入的值.缺省值標(biāo)題題提示2. MsgBox函數(shù)和函數(shù)和MsgBox過程過
14、程 函數(shù)形式函數(shù)形式:變量變量% = MsgBox(提示提示,按鈕按鈕圖標(biāo)圖標(biāo)+ 缺省按鈕缺省按鈕+模式模式,標(biāo)題,標(biāo)題) 過程形式過程形式: MsgBox 提示提示,按鈕按鈕圖標(biāo)圖標(biāo) +缺省按鈕缺省按鈕+ 模式模式,標(biāo)題標(biāo)題圖標(biāo)標(biāo)題提示信息命令按鈕說明:說明: “標(biāo)題標(biāo)題”和和“提示提示”與與InputBox函數(shù)中對(duì)應(yīng)的參數(shù)相函數(shù)中對(duì)應(yīng)的參數(shù)相同;同; “按鈕圖標(biāo)按鈕圖標(biāo) +缺省按鈕缺省按鈕+模式模式”是整型表達(dá)式,決是整型表達(dá)式,決定信息框按鈕數(shù)目、出現(xiàn)在信息框上的圖標(biāo)類型及操作模定信息框按鈕數(shù)目、出現(xiàn)在信息框上的圖標(biāo)類型及操作模式式(見表見表4.1) 若程序中需要返回值,則使用函數(shù),否則
15、可調(diào)用過若程序中需要返回值,則使用函數(shù),否則可調(diào)用過程。程。 按鈕及圖標(biāo)值如下按鈕及圖標(biāo)值如下:根據(jù)用戶所選按鈕,函數(shù)返根據(jù)用戶所選按鈕,函數(shù)返回回1717的整數(shù)值,其含義的整數(shù)值,其含義如下表如下表: :(表(表4.2)4.2)4.2.4 注釋語句 其語法格式為:Rem 或 說明:1. 指要包括的任何注釋文本。在Rem關(guān)鍵字和注釋內(nèi)容之間要加一個(gè)空格??梢杂靡粋€(gè)英文單引號(hào)“”來代替Rem關(guān)鍵字。2. 如果在其他語句行后面使用Rem關(guān)鍵字,必需用冒號(hào)(:)與語句隔開。若用英文單引號(hào)“”,則在其他語句行后面不必加冒號(hào)(:)。例如:Const PI=3.1415925 符號(hào)常量PIS=PI*r*r
16、 : Rem計(jì)算圓的面積4.3 選擇結(jié)構(gòu)選擇結(jié)構(gòu) 1. IfThen語句語句(單分支結(jié)構(gòu)單分支結(jié)構(gòu)) If Then 語句塊語句塊 End If 或或 If Then tyx圖1-3-8 兩 個(gè) 數(shù) 交 換過 程例例:已知兩個(gè)數(shù)已知兩個(gè)數(shù)x和和y,比較它們的,比較它們的大小,大小, 使得使得x大于大于y. If xy Then t=x : x=y: y=t End If 或或 If xy Then t=x: x=y: y=t2. IfThenElse語句(雙分支結(jié)構(gòu)) If Then Else End If If Then Else 例如:輸出例如:輸出x,y兩個(gè)中值較大的一個(gè)值。兩個(gè)中值較大
17、的一個(gè)值。IF XY Then Print XElse Print YEnd If也可以寫成如下的單行形式:也可以寫成如下的單行形式: IF XY Then Print X Else Print Y 雙分支選擇結(jié)構(gòu)執(zhí)行過程 例例4.1 設(shè)計(jì)一個(gè)求解一元二次方程的程序設(shè)計(jì)一個(gè)求解一元二次方程的程序 3. IfThenElseIf語句語句(多分支結(jié)構(gòu)多分支結(jié)構(gòu)) 形式形式: If Then Else If Then Else 語句塊語句塊 n+1 End If 例:輸入一學(xué)生成績,評(píng)定其等級(jí)。方法是:例:輸入一學(xué)生成績,評(píng)定其等級(jí)。方法是:90100分為分為“優(yōu)秀優(yōu)秀”,8089分為分為“良好良好
18、”,7079分為分為“中等中等”,6069分為分為“及格及格”,60分以為分以為“不合格不合格”執(zhí)行過程使用IF語句實(shí)現(xiàn)的程序段如下:If x=90 thenPrint 優(yōu)秀ElseIf x=80 ThenPrint 良好ElseIf x=70 ThenPrint 中等ElseIf x=60 ThenPrint 及格ElsePrint 不及格End If4.3.2 Select Case語句(情況語句)語句(情況語句)形式:形式:Select Case 變量或表達(dá)式變量或表達(dá)式Case 表達(dá)式列表表達(dá)式列表1語句塊語句塊1Case 表達(dá)式列表表達(dá)式列表2語句塊語句塊2Case Else語句塊語
19、句塊n+1End Select:與:與同類型的下面四種形式之一:同類型的下面四種形式之一: 表達(dá)式表達(dá)式 例例: A +5 一組枚舉表達(dá)式一組枚舉表達(dá)式(用逗號(hào)分隔用逗號(hào)分隔) 2, 4, 6, 8 表達(dá)式表達(dá)式1 To 表達(dá)式表達(dá)式2 60 to 100 Is 關(guān)系運(yùn)算符表達(dá)式關(guān)系運(yùn)算符表達(dá)式 Is 60數(shù)值型或字符串表達(dá)式例如:將例例如:將例4.3 使用使用select case.語句來實(shí)現(xiàn)的程序段如下:語句來實(shí)現(xiàn)的程序段如下:Select Case x Case 90 to 100 Print 優(yōu)秀優(yōu)秀 Case 80 to 89 Print 良好良好 Case 70 to 79 Pri
20、nt 中等中等 Case 60 to 69 Print 及格及格 Case Else Print 不及格不及格End Select補(bǔ)充例題:補(bǔ)充例題:設(shè)計(jì)一個(gè)由計(jì)算機(jī)來當(dāng)小學(xué)低年級(jí)學(xué)生算術(shù)老師的設(shè)計(jì)一個(gè)由計(jì)算機(jī)來當(dāng)小學(xué)低年級(jí)學(xué)生算術(shù)老師的VB應(yīng)用程序,要求給出一系列的兩個(gè)應(yīng)用程序,要求給出一系列的兩個(gè)110數(shù)的四則運(yùn)算的算術(shù)數(shù)的四則運(yùn)算的算術(shù)題,學(xué)生輸入該題的答案,計(jì)算機(jī)根據(jù)學(xué)生的答案判斷正確與題,學(xué)生輸入該題的答案,計(jì)算機(jī)根據(jù)學(xué)生的答案判斷正確與否,并給出成績,單擊結(jié)束命令按鈕,退出應(yīng)用程序。否,并給出成績,單擊結(jié)束命令按鈕,退出應(yīng)用程序。 分析分析:產(chǎn)生產(chǎn)生110操作數(shù),可通過操作數(shù),可通
21、過Int(10* Rnd + 1) 實(shí)現(xiàn)實(shí)現(xiàn) 4.3.3 選擇結(jié)構(gòu)的嵌套選擇結(jié)構(gòu)的嵌套 在IF語句的Then分支和Else分支中可以完整地嵌套另一IF語句或Select Case語句,同樣Select Case語句每一個(gè)Case分支中都可嵌套另一IF語句或另一Select Case語句。下面是兩種正確的嵌套形式:(1)IF Then . Then Then Else . End If . Else . IF Then . Else . End If . End IF(2)IF Then .Select Case Case IF Then Else . End If Case. . End Se
22、lect .End IF 注意:只要在一個(gè)分支內(nèi)嵌套,不出現(xiàn)交叉,滿足結(jié)構(gòu)注意:只要在一個(gè)分支內(nèi)嵌套,不出現(xiàn)交叉,滿足結(jié)構(gòu)規(guī)則,其嵌套的形式將有很多種,嵌套層次也可以任意多。規(guī)則,其嵌套的形式將有很多種,嵌套層次也可以任意多。對(duì)于多層對(duì)于多層IF嵌套結(jié)構(gòu)中,要特別注意嵌套結(jié)構(gòu)中,要特別注意IF與與Else的配對(duì)關(guān)系,的配對(duì)關(guān)系,一個(gè)一個(gè)Else必須與必須與IF配結(jié),配對(duì)的原則是:在寫含有多層嵌套配結(jié),配對(duì)的原則是:在寫含有多層嵌套的程序時(shí),建議使用縮進(jìn)對(duì)齊方式,這樣容易閱讀和維護(hù)。的程序時(shí),建議使用縮進(jìn)對(duì)齊方式,這樣容易閱讀和維護(hù)。例例4.4 設(shè)計(jì)一個(gè)用戶身份驗(yàn)證程序,運(yùn)行界面如下圖所示。 4
23、.4 4.4 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)1. For循環(huán)語句循環(huán)語句 (一般用于循環(huán)次數(shù)已知一般用于循環(huán)次數(shù)已知)形式形式 For 循環(huán)變量初值循環(huán)變量初值 to 終值終值 Step 步長步長 語句塊語句塊Exit For 語句塊語句塊 Next 循環(huán)變量循環(huán)變量 循環(huán)變量在終值內(nèi) 圖 1-3-13 For 循環(huán)語句 語句塊 Exit For 語句塊 循環(huán)變量加步長 T F 循 環(huán) 變 量 得 初值 循環(huán)體 0 初值終值 =1 時(shí),可省略終值=0 死循環(huán) 步長步長循環(huán)次數(shù)循環(huán)次數(shù)) 1(步長初值終值Int例例: For I=2 To 13 Step 3 Print I , Next I Print “I
24、=“, I 4) 1(3213Int循環(huán)執(zhí)行次數(shù)循環(huán)執(zhí)行次數(shù) 輸出輸出I的值分別為的值分別為: 2 5 8 11 出了循環(huán)輸出為出了循環(huán)輸出為: I=14例4.5 編程計(jì)算:S=1+2+3+100Dim S%, I%S=0 累加前變量S為0For I=1 to 100 S=S+INext IPrint S=,S 當(dāng)N=100N=N+1打印SS=0,N=1S=S+N例4-5的算法流程圖形式形式1:(當(dāng)型循環(huán)):(當(dāng)型循環(huán)) Do While|Until 語句塊語句塊 Exit Do 語句塊語句塊 Loop 條 件 F T F T E x it D o 語 句 塊 語 句 塊 E x it D o
25、 語 句 塊 語 句 塊 表 達(dá) 式 列 表 1 圖 1 -3 -1 6 D o L o o p W h ile D o W h ile L o o p執(zhí) 行 過 程 4.4.2 DoLoop循環(huán)語句循環(huán)語句 形式形式2:(直到循環(huán))直到循環(huán))Do 語句塊語句塊 Exit Do 語句塊語句塊Loop While|Until 表 達(dá) 式 列 表 1 F T F T E x it D o 語 句 塊 語 句 塊 E x it D o 語 句 塊 語 句 塊 條 件 D o L o o p W h ile的 執(zhí) 行 過 程 圖 1 -3 -1 5 D o W h ile L o o p 條 件語句塊
26、語句塊TFExit Do條 件語句塊語句塊TFExit Do Do UntilLoop執(zhí)行過程執(zhí)行過程 DoLoop Until執(zhí)行過程執(zhí)行過程 說明:說明:(1 1)當(dāng)使用)當(dāng)使用WhileWhile 構(gòu)成循環(huán)時(shí),當(dāng)條件為構(gòu)成循環(huán)時(shí),當(dāng)條件為“真真”,則反復(fù)執(zhí)行循環(huán)體,當(dāng)條件為則反復(fù)執(zhí)行循環(huán)體,當(dāng)條件為“假假”,則退出循環(huán)。,則退出循環(huán)。(2)當(dāng)使用)當(dāng)使用Until 構(gòu)成循環(huán)時(shí),當(dāng)條件為構(gòu)成循環(huán)時(shí),當(dāng)條件為“假假”,則反復(fù)執(zhí)行循環(huán)體,直到條件成立,即為則反復(fù)執(zhí)行循環(huán)體,直到條件成立,即為“真真”時(shí),則退時(shí),則退出循環(huán)。出循環(huán)。(3 3)在循環(huán)體內(nèi)一般應(yīng)有一個(gè)專門用來改變條件表達(dá)式中)在循環(huán)
27、體內(nèi)一般應(yīng)有一個(gè)專門用來改變條件表達(dá)式中變量的語句,以使隨著循環(huán)的執(zhí)行,條件趨于不成立(或成變量的語句,以使隨著循環(huán)的執(zhí)行,條件趨于不成立(或成立),最后達(dá)到退出循環(huán)。立),最后達(dá)到退出循環(huán)。 (4)語句)語句Exit Do的作用是退出它所在的循環(huán)結(jié)構(gòu),它只的作用是退出它所在的循環(huán)結(jié)構(gòu),它只能用在能用在DO/Loop結(jié)構(gòu)中,并且常常是同選擇結(jié)構(gòu)一起出現(xiàn)在結(jié)構(gòu)中,并且常常是同選擇結(jié)構(gòu)一起出現(xiàn)在循環(huán)結(jié)構(gòu)中,用來實(shí)現(xiàn)當(dāng)滿足某一條件時(shí)提前退出循環(huán)。循環(huán)結(jié)構(gòu)中,用來實(shí)現(xiàn)當(dāng)滿足某一條件時(shí)提前退出循環(huán)。 4.4.3 WhileWend語句語句使用格式如下:While Wend 說明:該語句的功能與Do Wh
28、ile .Loop實(shí)現(xiàn)的循環(huán)完全相同。例:用doLoop語句改寫前面的例題4.5例例4.7 求兩個(gè)整數(shù)的最大公約數(shù)、最小公倍數(shù)Dim n%,m%,nm%,r%m=Val(InputBox(m=)n=Val(InputBox(n=)nm=n*mIf mn Then t=m: m=n: n=t r=m mod n Do While (r 0) m=n n=r r= m mod n LoopPrint 最大公約數(shù)=, n Print 最小公倍數(shù)=, nm/n 算法使用轉(zhuǎn)碾除法,流程圖如右,實(shí)現(xiàn)的程序代碼如下: 4.4.4 循環(huán)的嵌套循環(huán)的嵌套多重循環(huán)結(jié)構(gòu)多重循環(huán)結(jié)構(gòu) 如果在一個(gè)循環(huán)內(nèi)完整地包含另一個(gè)
29、循環(huán)結(jié)構(gòu),則稱如果在一個(gè)循環(huán)內(nèi)完整地包含另一個(gè)循環(huán)結(jié)構(gòu),則稱為多重循環(huán),或循環(huán)嵌套,嵌套的層數(shù)可以根據(jù)需要而定,為多重循環(huán),或循環(huán)嵌套,嵌套的層數(shù)可以根據(jù)需要而定,嵌套一層稱為二重循環(huán),嵌套二層稱為三重循環(huán)。嵌套一層稱為二重循環(huán),嵌套二層稱為三重循環(huán)。 上面介紹的幾種循環(huán)控制結(jié)構(gòu)可以相互嵌套,下面是上面介紹的幾種循環(huán)控制結(jié)構(gòu)可以相互嵌套,下面是幾種常見的二重嵌套形式:幾種常見的二重嵌套形式:(1)For I=. . For J=. . Next J . Next I(2)For I=. . Do While/Until . . Loop . Next I(3)Do While. . For J
30、=. . Next J . Loop(4)Do While/Until. . Do While/Until . . Loop . Loop例如:例如:打印九九乘法表打印九九乘法表. For i = 1 To 9 For j = 1 To 9 se = i & & j & = & i * j Picture1.Print Tab(j - 1) * 9 + 1); se; Next j Picture1.Print Next i對(duì)于循環(huán)的嵌套,要注意以下事項(xiàng):對(duì)于循環(huán)的嵌套,要注意以下事項(xiàng):(1) 內(nèi)循環(huán)變量與外循環(huán)變量不能同名;內(nèi)循環(huán)變量與外循環(huán)變量不能同名;(2
31、) 外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉;外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉; (3) 不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),也不能從外循環(huán)轉(zhuǎn)向內(nèi)循環(huán)不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),也不能從外循環(huán)轉(zhuǎn)向內(nèi)循環(huán). 正正 確確錯(cuò)錯(cuò) 誤誤 For ii =1 To 10 For jj=1 To 20 Next ii Next jj For ii =1 To 10 For ii=1 To 20 Next ii Next ii For ii =1 To 10 For jj=1 To 20 Next jj Next ii For ii =1 To 10 Next ii For ii =1 To 10 Next ii 4.4
32、.5 幾種循環(huán)語句比較幾種循環(huán)語句比較 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 語句行中在 DO 之前在 DO 之前使循環(huán)結(jié)束For 語句中無需專門語句必須用專門語句必須使用專門語句使用場(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)的嵌套 在循環(huán)結(jié)構(gòu)中可以完整嵌套選擇結(jié)構(gòu)即整個(gè)選擇結(jié)構(gòu)都屬于循環(huán)體。在選擇結(jié)構(gòu)中嵌套循環(huán)結(jié)構(gòu)時(shí),
33、則要求整個(gè)循環(huán)結(jié)構(gòu)必須完整地嵌套在一個(gè)分支內(nèi),一個(gè)循環(huán)結(jié)構(gòu)不允許出現(xiàn)在兩個(gè)或兩個(gè)以上的分支內(nèi)。 (1)For I= IF Then End IF Next I(6) IF Then For I= End IF Next I(5)Select Case For I= Case Case Next I End Select(3)For I= IF Then Next I End IF(2)IF Then For I= Next I End IF(4)For I= Select Case Case Case End Select Next I4.5 4.5 其它控制語句其它控制語句 4.5.1 Go
34、to 語句語句 形式形式: Go To 標(biāo)號(hào)標(biāo)號(hào)|行號(hào)行號(hào) 作用是無條件地轉(zhuǎn)移到標(biāo)號(hào)或行號(hào)指定的那行語句作用是無條件地轉(zhuǎn)移到標(biāo)號(hào)或行號(hào)指定的那行語句. 標(biāo)號(hào)是一個(gè)字符序列標(biāo)號(hào)是一個(gè)字符序列,行號(hào)是一個(gè)數(shù)字序列。行號(hào)是一個(gè)數(shù)字序列。 例例3.8 求求100以內(nèi)的素?cái)?shù)以內(nèi)的素?cái)?shù) 判別某數(shù)判別某數(shù)m是否為素?cái)?shù)最簡單的方法是是否為素?cái)?shù)最簡單的方法是: 對(duì)于對(duì)于m 從從i=2,3,m-1判別判別m能否被能否被i整除,只要有整除,只要有一個(gè)能整除一個(gè)能整除 ,m不是素?cái)?shù),否則不是素?cái)?shù),否則m是素?cái)?shù)。是素?cái)?shù)。 For m = 2 To 100 For i = 2 To m - 1 If (m Mod i)
35、= 0 Then GoTo NotNextM Next i Print m NotNextM: Next m4.5.2 Exit 語句語句 Exit 語句用于退出 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 語句退出 For.Next 循環(huán)、Do.Loop 循環(huán)及子過程。Private Sub Form_Click()Dim I%, Num% Do 建立無窮循環(huán)。 For I = 1 T
36、o 100 循環(huán) 100 次。 Num = Int(Rnd * 100) 生成一個(gè)099的隨機(jī)數(shù)。 Select Case Num Case 10: Exit For 退出 For.Next 循環(huán)。 Case 50: Exit Do 退出 Do.Loop 循環(huán)。 Case 64: Exit Sub 退出子過程。 End Select Next I LoopEnd Sub4.5.3 End 語句語句 形式: End 功能:結(jié)束一個(gè)程序的運(yùn)行。 在Visual Basic中還有多種形式的End語句,用于結(jié)束一個(gè)程序塊或過程。 其形式有: End If End Select End Type End
37、 With End Sub End Function等它們與對(duì)應(yīng)的語句配對(duì)使用。 4.5.4 暫停語句暫停語句 Stop語句用來暫停程序的執(zhí)行,相當(dāng)于在事件代碼中設(shè)置斷點(diǎn)。語法格式為: Stop說明:1. Stop語句的主要作用是把解釋程序置為中斷(Break)模式,以便對(duì)程序進(jìn)行檢查和調(diào)試。可以在程序的任何地方放置Stop語句,當(dāng)執(zhí)行Stop語句時(shí),系統(tǒng)將自動(dòng)打開立即窗口。2. 與End語句不同。 4.5.5 With.End With 語句語句 形式:形式: With 對(duì)象名對(duì)象名 語句塊語句塊 End With 說明:With 語句可以對(duì)某個(gè)對(duì)象執(zhí)行一系列的語句,而不用重復(fù)指出對(duì)象的名稱
38、。 例如,要改變一個(gè)對(duì)象的多個(gè)屬性,可以在 With 控制結(jié)構(gòu)中加上屬性的賦值語句,這時(shí)候只是引用對(duì)象一次而不是在每個(gè)屬性賦值時(shí)都要引用它。下面的例子顯示了如何使用 With 語句來給同一個(gè)對(duì)象的幾個(gè)屬性賦值。例如,需要對(duì)同一對(duì)象設(shè)置幾個(gè)屬性。途徑之一是使用多條例如,需要對(duì)同一對(duì)象設(shè)置幾個(gè)屬性。途徑之一是使用多條語句。語句。Private Sub Form_Load()Command1.Caption = 退出退出(E&xit)Command1.Top = 500Command1.Left = 4500Command1.Enabled = TrueEnd Sub使用使用With.End
39、 With 語句,上面程序的代碼如下。語句,上面程序的代碼如下。Private Sub Form_Load()With Command1.Caption = OK.Top = 500.Left = 4500.Enabled = TrueEnd WithEnd Sub 4.6 應(yīng)用程序舉例應(yīng)用程序舉例4.6.1 素?cái)?shù)與哥德巴赫猜想素?cái)?shù)與哥德巴赫猜想 例例4.9 判斷一個(gè)給定的整數(shù)是否為素?cái)?shù)。 算法思路:素?cái)?shù)指除了能被算法思路:素?cái)?shù)指除了能被1和自身外,不能被其和自身外,不能被其他整數(shù)整除的自然數(shù)。判斷整數(shù)他整數(shù)整除的自然數(shù)。判斷整數(shù)N是不是素?cái)?shù)的基本方是不是素?cái)?shù)的基本方法是:將法是:將N分別除以
40、分別除以2,3,N-1,若都不能整除,若都不能整除,則則N為素?cái)?shù)。因?yàn)闉樗財(cái)?shù)。因?yàn)镹=Sqr(N)*Sqr(N),所以,當(dāng),所以,當(dāng)N能被能被大于等于大于等于Sqr(N)的整數(shù)整除時(shí),一定存在一個(gè)小于等于的整數(shù)整除時(shí),一定存在一個(gè)小于等于Sqr(N)的整數(shù),使的整數(shù),使N能被它整除,因此只要判斷能被它整除,因此只要判斷N能否能否被被2,3,Sqr(N)整除即可。整除即可。 算法流程圖如下:Dim N %, I%, K%N = Val(InputBox(N=?)K= Int(Sqr(N)For I = 2 To K If N Mod I = 0 Then Exit ForNext IIf IK
41、Then Print N; 是素?cái)?shù)是素?cái)?shù)Else Print N; 不是素?cái)?shù)不是素?cái)?shù)End If 例例4.10 編一程序驗(yàn)證哥德巴赫猜想:一個(gè)大于等于編一程序驗(yàn)證哥德巴赫猜想:一個(gè)大于等于6的偶數(shù)的偶數(shù)可以表示為兩個(gè)素?cái)?shù)之和。例如:可以表示為兩個(gè)素?cái)?shù)之和。例如: 6=3+3 8=3+5 10= 3+7 算法設(shè)計(jì):算法設(shè)計(jì):設(shè)設(shè)N為大于等于為大于等于6的的任一偶數(shù),將其分解為任一偶數(shù),將其分解為N1和和N2兩兩個(gè)數(shù),使用個(gè)數(shù),使用N1+N2=N,分別判斷,分別判斷N1和和N2是否為素?cái)?shù),若都是,則是否為素?cái)?shù),若都是,則為一組解。若為一組解。若N1不是素?cái)?shù),就不必不是素?cái)?shù),就不必再檢查再檢查N2是否素?cái)?shù)。先從是否素?cái)?shù)。先從
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單人船舶出售合同范本
- 萌芽課題申報(bào)書
- 提升編導(dǎo)能力課題申報(bào)書
- 和學(xué)校超市合作合同范本
- 賣場(chǎng)出租租賃合同范本
- 為課題申報(bào)書
- 勞動(dòng)合同范例 海南
- 產(chǎn)品競拍合同范本
- 勞務(wù)與員工合同范本
- 加氫原料采購合同范本
- 超載限位器調(diào)試報(bào)告
- 智能微電網(wǎng)應(yīng)用技術(shù)
- 被執(zhí)行人生活費(fèi)申請(qǐng)書范文
- 車間維修現(xiàn)場(chǎng)安全操作規(guī)程范文
- 全面質(zhì)量管理體系條款對(duì)照表
- 高職工商企業(yè)管理專業(yè)人才培養(yǎng)方案
- 2024年中國建筑集團(tuán)招聘筆試參考題庫含答案解析
- 行政法學(xué)基礎(chǔ)講義
- 中建專項(xiàng)施工升降機(jī)安裝專項(xiàng)施工方案
- 錄用通知書offer錄取通知書
- 中建辦公商業(yè)樓有限空間作業(yè)專項(xiàng)施工方案
評(píng)論
0/150
提交評(píng)論