程序設(shè)計(jì)的3種基本結(jié)構(gòu)課件_第1頁
程序設(shè)計(jì)的3種基本結(jié)構(gòu)課件_第2頁
程序設(shè)計(jì)的3種基本結(jié)構(gòu)課件_第3頁
程序設(shè)計(jì)的3種基本結(jié)構(gòu)課件_第4頁
程序設(shè)計(jì)的3種基本結(jié)構(gòu)課件_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第4章程序設(shè)計(jì)的3種基本結(jié)構(gòu)本章內(nèi)容及要求:

1.了解算法概念及表示,掌握用N—S流程圖表示算法;

2.熟練掌握賦值語句、輸入/輸出消息框函數(shù)的使用;

3.熟練掌握行if語句、塊if結(jié)構(gòu)、SelectCase情況選擇結(jié)構(gòu)有使用,掌握選擇的嵌套結(jié)構(gòu);

4.熟練掌握實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的For/Next循環(huán)結(jié)構(gòu)及ExitFor語句、Do/Loop循環(huán)結(jié)構(gòu)的使用,掌握多重循環(huán)。重點(diǎn):選擇結(jié)構(gòu)及循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)及其應(yīng)用難點(diǎn):選擇的嵌套及多重循環(huán)結(jié)構(gòu)第4章程序設(shè)計(jì)的3種基本結(jié)構(gòu)本章內(nèi)容及要求:重點(diǎn):選擇本章主要內(nèi)容4.1算法及算法的表示

4.2順序結(jié)構(gòu)

4.3選擇結(jié)構(gòu)

4.4循環(huán)結(jié)構(gòu)

4.5其他控制語句

4.6應(yīng)用程序舉例

本章主要內(nèi)容4.1算法及算法的表示

4.2順序結(jié)構(gòu)4.1算法及算法的表示4.1.1算法概述什么是算法:

廣義地講:算法是為完成一項(xiàng)任務(wù)所應(yīng)當(dāng)遵循的一步一步的規(guī)則的、精確的、無歧義的描述,它的總步數(shù)是有限的。

狹義地講:算法是解決一個(gè)問題采取的方法和步驟的描述。4.1算法及算法的表示4.1.1算法概述1)輸入A、B、C。2)A與B中大的一個(gè)放入MAX中。3)把C與MAX中大的一個(gè)放入MAX中。4)輸出MAX,MAX即為最大數(shù)。例4.1輸入三個(gè)數(shù),然后輸出其中最大的數(shù)。

將三個(gè)數(shù)依次輸入到變量A、B、C中,設(shè)變量MAX存放最大數(shù)。其算法如下:

4.1算法及算法的表示1)輸入A、B、C。例4.1輸入三個(gè)數(shù),然后輸出其中例4.2輸入10個(gè)數(shù),打印輸出其中最大的數(shù)。算法如下:(1)輸入1個(gè)數(shù),存入變量A中,將記錄數(shù)據(jù)個(gè)數(shù)的變量N賦值為1,即N=1

(2)將A存入表示最大值的變量Max中,即Max=A

(3)再輸入一個(gè)值給A,如果A>Max則

Max=A,否則Max不變(4)讓記錄數(shù)據(jù)個(gè)數(shù)的變量增加1,即N=N+1

(5)判斷N是否小于10,若成立則轉(zhuǎn)到第(3)步執(zhí)行,否則轉(zhuǎn)到第(6)步(6)打印輸出max4.1算法及算法的表示例4.2輸入10個(gè)數(shù),打印輸出其中最大的數(shù)。算法如下:44.1.2算法的特性有窮性確定性有0個(gè)或多個(gè)輸入有一個(gè)或多個(gè)輸出有效性4.1算法及算法的表示4.1.2算法的特性有窮性4.1算法及算法的表示4.1.3算法的表示一、自然語言與偽代碼表示算法自然語言:就是指人們?nèi)粘J褂玫恼Z言,可以是漢語、英語或其它語言。偽代碼:是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號(hào)(包括數(shù)學(xué)符號(hào))來描述算法。4.1算法及算法的表示4.1.3算法的表示4.1算法及算法的表示例如:例4.1可用如下的偽代碼表示Begin(算法開始)

輸入

A,B,CIFA>B則

A→Max

否則

B→MaxIFC>Max則

C→MaxPrintMaxEnd(算法結(jié)束)4.1算法及算法的表示例如:例4.1可用如下的偽代碼表示4.1算法及算法的表示二、用傳統(tǒng)流程圖表示算法處理框起止框I/O框判斷框流程線連接點(diǎn)1、傳統(tǒng)流程圖中的基本符號(hào)4.1算法及算法的表示二、用傳統(tǒng)流程圖表示算法處理框起止框I/O框判斷框流程線連2、三種基本結(jié)構(gòu)的表示(1)順序結(jié)構(gòu)條件語句1語句2YN語句1語句2(2)選擇結(jié)構(gòu)4.1算法及算法的表示2、三種基本結(jié)構(gòu)的表示條件語句1語句2YN語句1語句2(2)(3)循環(huán)結(jié)構(gòu)a)當(dāng)型循環(huán)b)直到循環(huán)條件語句組YN(b)條件(a)YN語句組4.1算法及算法的表示(3)循環(huán)結(jié)構(gòu)a)當(dāng)型循環(huán)b)直到循環(huán)條件語句組YN(三種基本結(jié)構(gòu)的特點(diǎn):(1)只有一個(gè)入口(2)只有一個(gè)出口(3)不存在死語句(4)不存在死循環(huán)4.1算法及算法的表示三種基本結(jié)構(gòu)的特點(diǎn):(1)只有一個(gè)入口4.1算法及算法的

從10個(gè)數(shù)中選出最大的數(shù)的算法流程圖N<10Max=AN=1A>MaxMax=A輸入A開始再輸入給AN=N+1打印Max結(jié)束YNNY4.1算法及算法的表示從10個(gè)數(shù)中選出最大的數(shù)的算法流程圖N<10M4.1.4用N—S流程圖表示算法將全部算法寫在一個(gè)矩形框內(nèi),在矩形內(nèi)還可包含其它從屬于它的框。三種基本結(jié)構(gòu)的N—S圖表示:語句A語句B語句A語句B條件YN1、順序結(jié)構(gòu)2、選擇結(jié)構(gòu)4.1算法及算法的表示4.1.4用N—S流程圖表示算法將全部算法寫在一個(gè)矩3、循環(huán)結(jié)構(gòu)a)當(dāng)型循環(huán)b)直到循環(huán)例:畫出從10個(gè)數(shù)中選出最大的數(shù)的N—S流程圖。語句組當(dāng)條件成立(a)語句組直到當(dāng)條件成立(b)4.1算法及算法的表示3、循環(huán)結(jié)構(gòu)a)當(dāng)型循環(huán)b)直到循環(huán)例:畫出從10個(gè)數(shù)傳統(tǒng)流程圖N<10Max=AN=1A>MaxMax=A輸入A開始再輸入給AN=N+1打印Max結(jié)束YNNY輸入A當(dāng)N<10Max=AN=N+1打印MaxMax=A,N=1N—S流程圖A>MaxYN輸入A4.1算法及算法的表示傳統(tǒng)流程圖N<10Max=AA>MaxMax=A輸入A開A=Val(InputBox("A=?"))B=Val(InputBox("B=?"))C=Val(InputBox("C=?"))IfA>BthenMax=AElseMax=BEndIfIfC>MaxthenMax=CPrint"Max=";Max下面是例4.1的計(jì)算機(jī)程序,即為用計(jì)算機(jī)語言表示算法:4.1算法及算法的表示A=Val(InputBox("A=?"))下面是例4.1的4.1.5結(jié)構(gòu)化程序設(shè)計(jì)方法(補(bǔ)充)(一)用計(jì)算機(jī)解決問題的過程提出、分析問題確定算法模型設(shè)計(jì)算法編寫程序調(diào)試程序分析輸出結(jié)果正確合理結(jié)束不正確4.1算法及算法的表示4.1.5結(jié)構(gòu)化程序設(shè)計(jì)方法(補(bǔ)充)(一)用計(jì)算機(jī)解決問(二)結(jié)構(gòu)化程序設(shè)計(jì)思想自頂向下、逐步細(xì)化、模塊化自頂向下:先從全局、整體設(shè)計(jì)逐步細(xì)化:將一個(gè)問題分解成幾個(gè)較小的問題解決模塊化:將一個(gè)大任務(wù)分解成若干個(gè)較小的部分,每個(gè)部分承擔(dān)一定功能,稱為“功能模塊”例:給100個(gè)整數(shù),打印輸出其中的素?cái)?shù)。4.1算法及算法的表示(二)結(jié)構(gòu)化程序設(shè)計(jì)思想自頂向下、逐步細(xì)化、模塊化自頂向下:S1N—S流程圖輸入100個(gè)數(shù)存入X1,x2,……x100打印x1…..x100中不等于0的數(shù)讓x1,x2,……x100中的非素變?yōu)?S3S2輸入xi當(dāng)i<=100i=i+1i=1S1細(xì)化xi≠0當(dāng)i<=100i=i+1i=1YN打印xiS3細(xì)化4.1算法及算法的表示S1N—S流程圖輸入100個(gè)數(shù)存入X1,x2,……x100打S1N—S流程圖輸入100個(gè)數(shù)存入X1,x2,……x100打印x1…..x100中不等于0的數(shù)讓x1,……x100中的非素變?yōu)?S3S2S2細(xì)化判斷xi是否是素?cái)?shù),若不是則將xi=0當(dāng)i<=100i=i+1i=1S21r=0r<=將x1除j的余j=j+1j=2YNxi=0直到j(luò)>xi/2S21細(xì)化4.1算法及算法的表示S1N—S流程圖輸入100個(gè)數(shù)存入X1,x2,……x100打輸入100個(gè)數(shù)存入X1,x2,……x100打印x1…..x100中不等于0的數(shù)讓x1,……x100中的非素變?yōu)?細(xì)化后的流程圖輸入xi當(dāng)i<=100i=i+1i=1當(dāng)i<=100i=1r=0r=xi%jj=j+1j=2YNxi=0直到j(luò)>xi/2i=i+1xi≠0當(dāng)i<=100i=1YN打印xii=i+1輸入100個(gè)數(shù)存入X1,x2,……x100打印x1…..x14.2順序結(jié)構(gòu)4.2.1賦值語句

形式:變量名=表達(dá)式對(duì)象.屬性=表達(dá)式

功能:將表達(dá)式的值賦值給變量名或指定對(duì)象的屬性。一般用于給變量賦值或?qū)丶O(shè)定屬性值。

例:sRate=0.1Text1.Text="歡迎使用VisualBasic6.0”說明:

1、執(zhí)行過程:先求表達(dá)式的值,然后將值賦值給左邊的變量。

2、右邊的表達(dá)式可以是變量、常量、函數(shù)調(diào)用等特殊的表達(dá)式。

3、不要將“=”理解為數(shù)學(xué)上的等號(hào):

A=A+1是表示將A單元的值加1后以放回到A單元。4.2順序結(jié)構(gòu)4.2.1賦值語句執(zhí)行過程如右圖4、賦值符號(hào)“=”左邊一定只能是變量名或?qū)ο蟮膶傩砸茫荒苁浅A俊⒎?hào)常量、表達(dá)式。下面的賦值語句都是錯(cuò)的: 5=X'左邊是常量。 Abs(X)=20'左邊是函數(shù)調(diào)用,即是表達(dá)式。5、賦值符號(hào)“=”兩邊的數(shù)據(jù)類型一般要求應(yīng)一致。4.2順序結(jié)構(gòu)執(zhí)行過程如右圖4、賦值符號(hào)“=”左邊一定只能是變量名或?qū)ο蟮?.2.2數(shù)據(jù)的輸出——Print方法Print方法的一般格式:

[對(duì)象名.]Print[<表達(dá)式表>][{,|;}]說明:

[對(duì)象名.]可以是窗體名、圖片框名,也可是立即窗口“Debug”。若省略對(duì)象,則表示在當(dāng)前窗體上輸出。用Print方法在圖片框和立即窗口對(duì)象中輸出與在窗體對(duì)象中輸出完全相同。4.2順序結(jié)構(gòu)4.2.2數(shù)據(jù)的輸出——Print方法Print方法的4.2.3用戶交互函數(shù)和過程

1.InputBox函數(shù)變量名=InputBox[$](<提示信息>[,<標(biāo)題>][,<缺省>][,<x坐標(biāo)>][,<y坐標(biāo)>])

其中:提示提示信息,標(biāo)題標(biāo)題區(qū)顯示,缺省輸入?yún)^(qū)缺省值。例如,要在屏幕上顯示如下的對(duì)話框:4.2順序結(jié)構(gòu)4.2.3用戶交互函數(shù)和過程4.2順序結(jié)構(gòu)

例如:有下列語句如下:

Dimx%x=Val(InputBox(“請(qǐng)輸入一個(gè)數(shù)”,“輸入框”,100))

語句執(zhí)行后打開如下對(duì)話框。缺省值標(biāo)題提示4.2順序結(jié)構(gòu)例如:有下列語句如下:缺省值標(biāo)題提示4.2順序結(jié)構(gòu)2.MsgBox函數(shù)和MsgBox過程函數(shù)形式:變量[%]=MsgBox(提示[,按鈕[+圖標(biāo)]+[缺省按鈕]+[模式]][,標(biāo)題])

過程形式:MsgBox提示[,按鈕[+圖標(biāo)]+[缺省按鈕]+[模式]][,標(biāo)題]圖標(biāo)標(biāo)題提示信息命令按鈕4.2順序結(jié)構(gòu)2.MsgBox函數(shù)和MsgBox過程圖標(biāo)標(biāo)題提示信息命令說明:1、“標(biāo)題”和“提示”與InputBox函數(shù)中對(duì)應(yīng)的參數(shù)相同;2、“按鈕+圖標(biāo)+缺省按鈕+模式”是整型表達(dá)式,決定信息框按鈕數(shù)目、出現(xiàn)在信息框上的圖標(biāo)類型及操作模式(見表4.1)4.2順序結(jié)構(gòu)說明:4.2順序結(jié)構(gòu)按鈕及圖標(biāo)值如下:4.2順序結(jié)構(gòu)按鈕及圖標(biāo)值如下:4.2順序結(jié)構(gòu)根據(jù)用戶所選按鈕,函數(shù)返回1—7的整數(shù)值,其含義表4.24.2順序結(jié)構(gòu)

3、若程序中需要返回值,則使用函數(shù),否則可調(diào)用過程。根據(jù)用戶所選按鈕,函數(shù)返回1—7的整數(shù)值,其含義表4.24.2順序結(jié)構(gòu)

用戶可根據(jù)MsgBox函數(shù)的不同返回值,實(shí)現(xiàn)程序的控制流程,就必需通過編寫程序代碼才能實(shí)現(xiàn)。例如:

i=MsgBox("發(fā)生錯(cuò)誤,是否繼續(xù)?",vbYesNo+vbQuestion,"提示信息")

Ifi=7ThenEnd'或?qū)懗蒊fi=vbNoThenEnd……

當(dāng)用戶單擊“否”,程序就結(jié)束,單擊“是”或直接按回車鍵,程序則繼續(xù)向下執(zhí)行。4.2順序結(jié)構(gòu)用戶可根據(jù)MsgBox函數(shù)的4.2.4注釋語句其語法格式為:Rem<注釋內(nèi)容>或

'<注釋內(nèi)容>說明:1.<注釋內(nèi)容>指要包括的任何注釋文本。在Rem關(guān)鍵字和注釋內(nèi)容之間要加一個(gè)空格。可以用一個(gè)英文單引號(hào)“'”來代替Rem關(guān)鍵字。2.如果在其他語句行后面使用Rem關(guān)鍵字,必需用冒號(hào)(:)與語句隔開。若用英文單引號(hào)“'”,則在其他語句行后面不必加冒號(hào)(:)。例如:ConstPI=3.1415925'符號(hào)常量PIS=PI*r*r :Rem計(jì)算圓的面積4.2順序結(jié)構(gòu)4.2.4注釋語句其語法格式為:4.2順序結(jié)構(gòu)4.2.5應(yīng)用舉例例4.3

輸入時(shí)間(小時(shí),分和秒),然后使用輸出消息框輸出總計(jì)多少秒。使用文本框輸入數(shù)據(jù),使用消息框輸出計(jì)算結(jié)果,程序運(yùn)行界面如圖所示。4.2順序結(jié)構(gòu)4.2.5應(yīng)用舉例例4.3輸入時(shí)間(小時(shí),分和秒),然4.2.5應(yīng)用舉例例4.4

編一程序,求一內(nèi)半徑R1=10cm,外半徑R2=20cm的球環(huán)的體積。要求按四舍五入保留到小數(shù)點(diǎn)后4位。解:球的體積公式:4.2順序結(jié)構(gòu)本題所求的球環(huán)面的體積公式:4.2.5應(yīng)用舉例例4.4編一程序,求一內(nèi)半徑R1=1

選擇結(jié)構(gòu)是根據(jù)條件選擇執(zhí)行不同的分支語句,以完成問題的要求。在VisualBasic程序設(shè)計(jì)中,使用IF語句和SelectCase語句來處理選擇結(jié)構(gòu)。

其特點(diǎn)是:根據(jù)所給定的條件成立(True)或不成立(False),從各實(shí)際可能的不同分支中執(zhí)行某一分支的相應(yīng)操作(程序塊),并且任何情況下總有“無論條件多寡,必?fù)衿湟唬浑m然條件眾多,僅選其一”的特性。

4.3選擇結(jié)構(gòu) 選擇結(jié)構(gòu)是根據(jù)條件選擇執(zhí)行不同的分支語句,以完成問題的要求1.If…Then語句(單分支結(jié)構(gòu))

If<表達(dá)式>Then

語句塊

EndIf

If<表達(dá)式>Then<語句>

例:已知兩個(gè)數(shù)x和y,比較它們的大小,使得x大于y.

Ifx<yThent=x:x=y:y=tEndIf

或Ifx<yThent=x:x=y:y=t4.3.1If條件語句1.If…Then語句(單分支結(jié)構(gòu))例:已知兩個(gè)數(shù)x和y,2.If…Then…Else語句(雙分支結(jié)構(gòu))

If<表達(dá)式>Then<語句塊1>Else<語句塊2>EndIf

If<表達(dá)式>Then<語句1>Else<語句2>

雙分支選擇結(jié)構(gòu)執(zhí)行過程4.3選擇結(jié)構(gòu)2.If…Then…Else語句(雙分支結(jié)構(gòu))雙分支選擇例如:輸出x,y兩個(gè)中值較大的一個(gè)值。

IFX>YThenPrintX

ElsePrintYEndIf也可以寫成如下的單行形式:

IFX>YThenPrintXElsePrintY4.3選擇結(jié)構(gòu)例如:輸出x,y兩個(gè)中值較大的一個(gè)值。4.3選擇結(jié)構(gòu)3.條件函數(shù)Iif()IIf函數(shù)可用來執(zhí)行簡(jiǎn)單的條件判斷操作,它相當(dāng)于IF…Then….Else結(jié)構(gòu)。IIF函數(shù)的使用格式:IIF(<表達(dá)式>,<表達(dá)式1>,<表達(dá)式2>)說明:(1)<表達(dá)式>與IF語句中的表達(dá)式相同,通常是關(guān)系表達(dá)式、邏輯表達(dá)式,也可為算術(shù)表達(dá)式。如果是算術(shù)表達(dá)式,其值按非0為True,0為False進(jìn)行判斷。(2)當(dāng)<表達(dá)式>為真時(shí),函數(shù)返回<表達(dá)式1>的值,當(dāng)<表達(dá)式>為假時(shí),函數(shù)返回<表達(dá)式2>的值。(3)<表達(dá)式1>、<表達(dá)式2>可以是任何表達(dá)式。例如:Max=IIF(X>Y,X,Y)它與下面語句等價(jià):

IFX>YThenMax=xElseMax=Y

4.3選擇結(jié)構(gòu)3.條件函數(shù)Iif()4.3選擇結(jié)構(gòu)4.If…Then…ElseIf語句(多分支結(jié)構(gòu))

形式:

If<表達(dá)式1>Then <語句塊1> ElseIf<表達(dá)式2>Then <語句塊2> … [Else

語句塊n+1] EndIf執(zhí)行過程4.3選擇結(jié)構(gòu)4.If…Then…ElseIf語句(多分支結(jié)構(gòu))執(zhí)行過程例4.6:輸入一學(xué)生成績(jī),評(píng)定其等級(jí)。方法是:90~100分為“優(yōu)秀”,80~89分為“良好”,70~79分為“中等”,60~69分為“及格”,60分以為“不合格”4.3選擇結(jié)構(gòu)使用IF語句實(shí)現(xiàn)的程序段如下:Ifx>=90thenPrint"優(yōu)秀"ElseIfx>=80ThenPrint"良好"ElseIfx>=70ThenPrint"中等"ElseIfx>=60ThenPrint"及格"ElsePrint"不及格"EndIf思考與討論例4.6:輸入一學(xué)生成績(jī),評(píng)定其等級(jí)。方法是:90~100分4.3.2SelectCase語句(情況語句)形式:SelectCase變量或表達(dá)式

Case表達(dá)式列表1

語句塊1 Case表達(dá)式列表2

語句塊2 … [CaseElse

語句塊n+1]EndSelect數(shù)值型或字符串表達(dá)式4.3選擇結(jié)構(gòu)4.3.2SelectCase語句(情況語句)數(shù)值型或說明:

<表達(dá)式列表>:與<變量或表達(dá)式>同類型的下面四種形式之一:表達(dá)式A+5

一組枚舉表達(dá)式(用逗號(hào)分隔)

2,4,6,8

表達(dá)式1To表達(dá)式2

60to100Is關(guān)系運(yùn)算符表達(dá)式

Is<604.3選擇結(jié)構(gòu)說明:4.3選擇結(jié)構(gòu)例如:將例4.6使用selectcase…..語句來實(shí)現(xiàn)的程序段如下:SelectCasexCase90to100Print"優(yōu)秀"Case80to89Print"良好"Case70to79Print"中等"Case60to69Print"及格"CaseElsePrint"不及格"EndSelect4.3選擇結(jié)構(gòu)例如:將例4.6使用selectcase…..語句來實(shí)現(xiàn)2.Choose函數(shù)Choose函數(shù)使用格式: Choose(<數(shù)值表達(dá)式>,<表達(dá)式1>….<表達(dá)式n>)說明:Choose函數(shù)根據(jù)<數(shù)值表達(dá)式>的值來決定返回其后<表達(dá)式列表>中的那個(gè)表達(dá)式的值。如果<數(shù)值表達(dá)式>的值為1,則返回<表達(dá)式1>的值,如果<數(shù)值表達(dá)式>的值為2,則返回<表達(dá)式2>的值,以此類推。若<數(shù)值表達(dá)式>的值小于1或大于n,則函數(shù)返回Null(空)。

例如:根據(jù)Nop的值,得到+、-、*,/的運(yùn)算符,可由理面語句來實(shí)現(xiàn)。 Nop=Int(Rnd*4)+1 OP=Choose(Nop,"+","-","*","/")4.3選擇結(jié)構(gòu)2.Choose函數(shù)4.3選擇結(jié)構(gòu)4.3.3選擇結(jié)構(gòu)的嵌套下面是兩種正確的嵌套形式:(1)

IF<條件1>Then…..IF<條件2>Then……Else…..EndIf….Else….IF<條件3>Then…..Else…..EndIf…..EndIF(2)IF<條件1>Then…..SelectCase…Case……IF<條件2>Then……Else…..EndIf……Case….…..EndSelect….EndIF4.3選擇結(jié)構(gòu)4.3.3選擇結(jié)構(gòu)的嵌套4.3選擇結(jié)構(gòu)

注意:只能在一個(gè)分支內(nèi)嵌套,不出現(xiàn)交叉。滿足結(jié)構(gòu)規(guī)則,其嵌套的形式將有很多種,嵌套層次也可以任意多。

對(duì)于多層IF嵌套結(jié)構(gòu)中,要特別注意IF與Else的配對(duì)關(guān)系,一個(gè)Else必須與IF配結(jié),配對(duì)的原則是:else總是與離它最近、且尚未配對(duì)的if配對(duì)。

在寫含有多層嵌套的程序時(shí),建議使用縮進(jìn)對(duì)齊方式,這樣容易閱讀和維護(hù)。4.3選擇結(jié)構(gòu)注意:只能在一個(gè)分支內(nèi)嵌套,不出現(xiàn)交叉。滿足結(jié)構(gòu)規(guī)例4.7

設(shè)計(jì)一個(gè)用戶身份驗(yàn)證程序,運(yùn)行界面如下圖所示。4.3選擇結(jié)構(gòu)

設(shè)密碼分別為1234567(普通用戶)、1989643(授權(quán)用戶)和1687799(特許用戶),按回車鍵表示密碼輸入結(jié)束。如果輸入密碼正確,則用MsgBox對(duì)話框顯示“你的口令正確,已通過身份驗(yàn)證”并顯示用戶類型;否則顯示“密碼不符,要重試一遍嗎!”(有“是”和“否”兩個(gè)按鈕),當(dāng)用戶單擊“是”則將焦點(diǎn)定位到文本框中、清除文本框中的內(nèi)容并允許再輸入一遍,如果單擊“否”則退出程序。例4.7設(shè)計(jì)一個(gè)用戶身份驗(yàn)證程序,運(yùn)行界面如下圖所示。44.4循環(huán)結(jié)構(gòu)

1.For循環(huán)語句(一般用于循環(huán)次數(shù)已知)形式:

For循環(huán)變量=初值to終值[Step步長(zhǎng)]

語句塊

[ExitFor]

語句塊

Next循環(huán)變量循環(huán)體>0初值<終值當(dāng)=1時(shí),可省<0初值>終值=0死循環(huán)

步長(zhǎng)4.4循環(huán)結(jié)構(gòu)4.4循環(huán)結(jié)構(gòu)循環(huán)體>0初值<終值當(dāng)=1時(shí),可省循環(huán)次數(shù)例:ForI=2To13Step3PrintI,NextIPrint“I=“,I循環(huán)執(zhí)行次數(shù):

輸出I的值分別為:25811出了循環(huán)輸出為:I=144.4循環(huán)結(jié)構(gòu)Int((13-2)/3+1)=4循環(huán)次數(shù)例:ForI=2To13Step例4.8編程計(jì)算:S=1+2+3+…+100DimS%,I%S=0‘累加前變量S為0ForI=1to100S=S+INextIPrint"S=",S當(dāng)N<=100N=N+1打印SS=0,N=1S=S+N4.4循環(huán)結(jié)構(gòu)例4.8編程計(jì)算:S=1+2+3+…+100DimS%,形式1:(當(dāng)型循環(huán))

Do{While|Until}<條件>

語句塊

[ExitDo]

語句塊

Loop4.4.2Do…Loop循環(huán)語句4.4循環(huán)結(jié)構(gòu)形式1:(當(dāng)型循環(huán))形式2:(直到循環(huán))

Do

語句塊

[ExitDo]

語句塊

Loop{While|Until}<條件>4.4循環(huán)結(jié)構(gòu)形式2:(直到循環(huán))4.4循環(huán)結(jié)構(gòu)條件語句塊語句塊TFExitDo條件語句塊語句塊TFExitDoDoUntil…Loop執(zhí)行過程Do…LoopUntil執(zhí)行過程4.4循環(huán)結(jié)構(gòu)條件語句塊語句塊TFExitDo條件語句塊語句塊T說明:(1)當(dāng)使用While<條件>構(gòu)成循環(huán)時(shí),當(dāng)條件為“真”,則反復(fù)執(zhí)行循環(huán)體,當(dāng)條件為“假”,則退出循環(huán)。(2)當(dāng)使用Until<條件>構(gòu)成循環(huán)時(shí),當(dāng)條件為“假”,則反復(fù)執(zhí)行循環(huán)體,直到條件成立,即為“真”時(shí),則退出循環(huán)。4.4循環(huán)結(jié)構(gòu)說明:4.4循環(huán)結(jié)構(gòu)

(3)在循環(huán)體內(nèi)一般應(yīng)有一個(gè)專門用來改變條件表達(dá)式中變量的語句,以使隨著循環(huán)的執(zhí)行,條件趨于不成立(或成立),最后達(dá)到退出循環(huán)。(4)語句ExitDo的作用是退出它所在的循環(huán)結(jié)構(gòu),它只能用在DO/Loop結(jié)構(gòu)中,并且常常是同選擇結(jié)構(gòu)一起出現(xiàn)在循環(huán)結(jié)構(gòu)中,用來實(shí)現(xiàn)當(dāng)滿足某一條件時(shí)提前退出循環(huán)。4.4循環(huán)結(jié)構(gòu)(3)在循環(huán)體內(nèi)一般應(yīng)有一個(gè)專門用來改變條件表達(dá)式中DimSAsInteger,IAsIntegerS=0'累加前變量S為0I=1'給控制循環(huán)的變量賦初值DoWhileI<=100'該語句改為DoUntilI>100S=S+II=I+1LoopPrint"S=";S例4.9改寫程序計(jì)算:S=1+2+3+…+100DimSAsInteger,IAsInteger4.4.3While…Wend語句使用格式如下:While<條件><循環(huán)塊>Wend

說明:該語句的功能與DoWhile<條件>….Loop實(shí)現(xiàn)的循環(huán)完全相同。4.4循環(huán)結(jié)構(gòu)4.4.3While…Wend語句4.4循環(huán)結(jié)構(gòu)例4.10

求兩個(gè)整數(shù)的最大公約數(shù)、最小公倍數(shù)Dimn%,m%,nm%,r%m=Val(InputBox("m="))n=Val(InputBox("n="))nm=n*mIfm<nThent=m:m=n:n=tr=mmodnDoWhile(r<>0)m=nn=rr=mmodnLoopPrint"最大公約數(shù)=",nPrint"最小公倍數(shù)=",nm/n4.4循環(huán)結(jié)構(gòu)例4.10求兩個(gè)整數(shù)的最大公約數(shù)、最小公倍數(shù)Dimn%

4.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ù)需要而定,嵌套一層稱為二重循環(huán),嵌套二層稱為三重循環(huán)。前面介紹的幾種循環(huán)控制結(jié)構(gòu)可以相互嵌套。4.4循環(huán)結(jié)構(gòu)4.4.4循環(huán)的嵌套——多重循環(huán)結(jié)構(gòu)4.4循環(huán)結(jié)構(gòu)(1)ForI=….…..

ForJ=….….NextJ…..NextI(2)ForI=….…..

DoWhile/Until….….Loop…..NextI(3)DoWhile….…..

ForJ=….….NextJ…..Loop(4)DoWhile/Until….…..

DoWhile/Until….….Loop…..Loop4.4循環(huán)結(jié)構(gòu)(1)ForI=….(2)ForI=….(3)Do例如:打印九九乘法表.

Fori=1To9Forj=1To9se=i&"×"&j&"="&i*jPicture1.PrintTab((j-1)*9+1);se;NextjPicture1.PrintNexti4.4循環(huán)結(jié)構(gòu)例如:打印九九乘法表.4.4循環(huán)結(jié)構(gòu)對(duì)于循環(huán)的嵌套,要注意以下事項(xiàng):

(1)內(nèi)循環(huán)變量與外循環(huán)變量不能同名;

(2)外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉;

(3)不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),也不能從外循環(huán)轉(zhuǎn)向內(nèi)循環(huán)。

4.4循環(huán)結(jié)構(gòu)對(duì)于循環(huán)的嵌套,要注意以下事項(xiàng):4.4循環(huán)結(jié)構(gòu)

Fori=1To10

Forj=1To20… Nexti

NextjFori=1To10Fori=1To20… Nexti Nexti下面是不正確的嵌套4.4循環(huán)結(jié)構(gòu)Fori=1To10Forj=1To20… NextjNextiFori=1To10…NextiFori=1To10…Nexti下面是正確的嵌套Fori=1To104.4循環(huán)結(jié)構(gòu)

例4.11:將一張面值為100元的人民幣等值換成100張5元、1元和0.5元的零鈔,要求每種零鈔不少于1張,問有哪幾種組合?思考與討論4.4循環(huán)結(jié)構(gòu)例4.11:將一張面值為1004.4.5幾種循環(huán)語句比較4.4循環(huán)結(jié)構(gòu)4.4.5幾種循環(huán)語句比較4.4循環(huán)結(jié)構(gòu)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è)分支內(nèi),一個(gè)循環(huán)結(jié)構(gòu)不允許出現(xiàn)在兩個(gè)或兩個(gè)以上的分支內(nèi)。4.4循環(huán)結(jié)構(gòu)4.4.6循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套在循環(huán)(1)ForI=…………IF…Then……EndIF ……NextI(2)IF…Then……ForI=…………NextI……EndIF4.4循環(huán)結(jié)構(gòu)(3)ForI=…………IF…Then……NextI……EndIF×(1)ForI=……(2)IF…Then4.4(4)ForI=…………SelectCase…Case…………Case…………EndSelect…… NextI(5)SelectCase……ForI=…………Case…………Case…………NextI………EndSelect×(6)IF…Then……ForI=…………EndIF……NextI×(4)ForI=……(5)SelectCase……×(4.5.1Goto語句形式:GoTo{標(biāo)號(hào)|行號(hào)}

作用是無條件地轉(zhuǎn)移到標(biāo)號(hào)或行號(hào)指定的那行語句。

標(biāo)號(hào)是一個(gè)字符序列,行號(hào)是一個(gè)數(shù)字序列。例如: Lp:…… …… gotoLp

4.5其它控制語句

4.5.1Goto語句4.5其它控制語句4.5.2Exit語句

Exit語句用于退出

Do...Loop、For...Next、Function或Sub代碼塊。對(duì)應(yīng)的使用格式為:ExitDo、ExitFor、ExitFunction、ExitSub。分別表示退出DO循環(huán)、For循環(huán)、函數(shù)過程、子過程。4.5其它控制語句

4.5.2Exit語句Exit語句用于退出Do.PrivateSubForm_Click()DimI%,Num%DoWhileTrue'建立無窮循環(huán)。

ForI=1To100'循環(huán)

100次。

Num=Int(Rnd*100)'生成一個(gè)0~99的隨機(jī)數(shù)。

SelectCaseNumCase10:ExitFor'退出

For...Next循環(huán)。

Case50:ExitDo'退出

Do...Loop循環(huán)。

Case64:ExitSub'退出子過程。

EndSelectNextILoopEndSub4.5其它控制語句

PrivateSubForm_Click()4.5其它4.5.3End語句形式:End

功能:結(jié)束一個(gè)程序的運(yùn)行。在VisualBasic中還有多種形式的End語句,用于結(jié)束一個(gè)程序塊或過程。其形式有:

EndIf EndSelect EndTypeEndWith EndSub EndFunction等,它們與對(duì)應(yīng)的語句配對(duì)使用。4.5其它控制語句

4.5.3End語句4.5其它控制語句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其它控制語句

4.5.4暫停語句4.5其它控制語句4.5.5With...EndWith語句形式:

With對(duì)象名語句塊

EndWith

說明:With語句可以對(duì)某個(gè)對(duì)象執(zhí)行一系列的語句,而不用重復(fù)指出對(duì)象的名稱。4.5其它控制語句

4.5.5With...EndWith語句4.5

例如,需要對(duì)同一對(duì)象設(shè)置幾個(gè)屬性。途徑之一是使用多條語句。PrivateSubForm_Load()Command1.Caption="退出(E&xit)"Command1.Top=500Command1.Left=4500Command1.Enabled=TrueEndSub4.5其它控制語句

使用With...EndWith語句,程序的代碼如下。PrivateSubForm_Load()WithCommand1.Caption="退出(E&xit)".Top=500.Left=4500.Enabled=TrueEndWithEndSub例如,需要對(duì)同一對(duì)象設(shè)置幾個(gè)屬性。途徑之一是4.6應(yīng)用程序舉例4.6.1累計(jì)求和、求乘積、計(jì)數(shù)等問題

此類問題都要使用循環(huán),根據(jù)問題的要求,確定循環(huán)變量的初值、終值或結(jié)束條件及用來表示計(jì)數(shù)、和、階乘的變量的初值。

例4.12

編程序計(jì)算:當(dāng)最后一項(xiàng)的絕對(duì)值小于0.000001時(shí)停止計(jì)算,輸出其計(jì)算的結(jié)果及其計(jì)算了多少項(xiàng)。

編程分析:這是用來求級(jí)數(shù)和的一類題目,這類題目一般要寫成s=s+t(t為通項(xiàng))這種形式。本題中相加的各項(xiàng)正負(fù)交替,第i+1項(xiàng)是第i項(xiàng)乘以1/((2*i)*(2*i+1))。程序編寫如下:

4.6應(yīng)用程序舉例4.6.1累計(jì)求和、求乘積、計(jì)數(shù)等問4.6應(yīng)用程序舉例4.6.2素?cái)?shù)與哥德巴赫猜想例4.14判斷一個(gè)給定的整數(shù)是否為素?cái)?shù)。

算法思路:素?cái)?shù)指除了能被1和自身外,不能被其他整數(shù)整除的自然數(shù)。判斷整數(shù)N是不是素?cái)?shù)的基本方法是:將N分別除以2,3,…,N-1,若都不能整除,則N為素?cái)?shù)。因?yàn)镹=Sqr(N)*Sqr(N),所以,當(dāng)N能被大于等于Sqr(N)的整數(shù)整除時(shí),一定存在一個(gè)小于等于Sqr(N)的整數(shù),使N能被它整除,因此只要判斷N能否被2,3,…,Sqr(N)整除即可。算法流程圖如下:4.6應(yīng)用程序舉例4.6.2素?cái)?shù)與哥德巴赫猜想例4.1DimN%,I%,K%N=Val(InputBox("N=?"))K=Int(Sqr(N))ForI=2ToKIfNModI=0ThenExitForNextIIfI>KThenPrintN;"是素?cái)?shù)"ElsePrintN;"不是素?cái)?shù)"EndIf4.6應(yīng)用程序舉例算法流程圖程序代碼:DimN%,I%,K%4.6應(yīng)用程序舉例算法流程圖

例4.15編一程序驗(yàn)證哥德巴赫猜想:一個(gè)大于等于6的偶數(shù)可以表示為兩個(gè)素?cái)?shù)之和。例如:

6=3+38=3+510=3+7

算法設(shè)計(jì):設(shè)N為大于等于6的任一偶數(shù),將其分解為N1和N2兩個(gè)數(shù),使用N1+N2=N,分別判斷N1和N2是否為素?cái)?shù),若都是,則為一組解。若N1不是素?cái)?shù),就不必再檢查N2是否素?cái)?shù)。先從N1=3開始,直到N1=N/2為止。算法流程圖如圖4-29所示。將程序代碼寫到窗體的單擊事件中。實(shí)現(xiàn)上面算法的程序代碼如下:4.6應(yīng)用程序舉例例4.15編一程序驗(yàn)證哥德巴赫猜想:一個(gè)大于PrivateSubForm_Click()DimN%,N1%,N2%,I%,K1%,K2%N=Val(Input

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論