




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北省2024屆高三年級(jí)大數(shù)據(jù)應(yīng)用調(diào)研聯(lián)合測(cè)評(píng)(Ⅶ)政治試卷(含答案)
- 2023年浙江臺(tái)州市黃巖區(qū)公路與運(yùn)輸管理中心招聘4名筆試參考題庫附帶答案詳解
- 2025至2030年中國(guó)抗氧化焊錫條數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 醫(yī)務(wù)志愿者培訓(xùn)大綱
- 液壓與氣壓傳動(dòng)復(fù)習(xí)分析
- 單位物業(yè)管理與服務(wù)合同
- 高中教務(wù)學(xué)期工作總結(jié)
- 建筑安裝裝飾工程施工合同
- 零售行業(yè)培訓(xùn)體系搭建
- 合同中商品代理協(xié)議
- GMP自檢計(jì)劃與自檢報(bào)告
- 堅(jiān)持男女平等基本國(guó)策(婦聯(lián)培訓(xùn))
- 新聞采訪與寫作-馬工程-第五章
- ISO9001-2015質(zhì)量手冊(cè)和全套程序文件
- 申請(qǐng)結(jié)婚報(bào)告表實(shí)用文檔
- 紀(jì)念五四運(yùn)動(dòng)100周年知識(shí)競(jìng)賽試題題庫與答案
- YY/T 1492-2016心肺轉(zhuǎn)流系統(tǒng)表面涂層產(chǎn)品通用要求
- YS/T 1028.3-2015磷酸鐵鋰化學(xué)分析方法第3部分:磷量的測(cè)定磷鉬酸喹啉稱量法
- JJF 1104-2003國(guó)家計(jì)量檢定系統(tǒng)表編寫規(guī)則
- GB/T 17891-1999優(yōu)質(zhì)稻谷
- 《蘭亭集序》《歸去來兮辭》對(duì)比閱讀課件(教材精研+情境任務(wù))統(tǒng)編版高中語文選擇性必修下冊(cè)
評(píng)論
0/150
提交評(píng)論