第4章程序結(jié)構(gòu)_第1頁(yè)
第4章程序結(jié)構(gòu)_第2頁(yè)
第4章程序結(jié)構(gòu)_第3頁(yè)
第4章程序結(jié)構(gòu)_第4頁(yè)
第4章程序結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章程序結(jié)構(gòu)第7講:教材P65~P76

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

4.2選擇結(jié)構(gòu)第8講:教材P77~P84

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

4.4本章小結(jié)實(shí)訓(xùn)3:教材P84~P85

上機(jī)實(shí)訓(xùn)結(jié)束第7講:教材P65~P76講解內(nèi)容順序結(jié)構(gòu)選擇結(jié)構(gòu)同學(xué)們好,現(xiàn)在開(kāi)始上課!4.1順序結(jié)構(gòu)4.1.1賦值語(yǔ)句4.1.2Print方法4.1.3With結(jié)構(gòu)返回首頁(yè)4.1.1賦值語(yǔ)句賦值語(yǔ)句是程序設(shè)計(jì)中最常用、最基本的語(yǔ)句,用于為變量或?qū)ο蟮膶傩再x值,格式如下:格式1:變量名=表達(dá)式格式2:[對(duì)象名.]屬性名=表達(dá)式在格式2中,若省略對(duì)象名,則默認(rèn)對(duì)象為當(dāng)前窗體。對(duì)象類型變量的賦值比較特殊,需要使用Set關(guān)鍵字,格式如下:Set對(duì)象變量名=表達(dá)式

返回首頁(yè)返回本節(jié)4.1.2Print方法(1)

1.用Print方法輸出數(shù)據(jù)

Print方法用于在窗體、圖片框或打印機(jī)等對(duì)象上輸出數(shù)據(jù),格式如下:[對(duì)象名.]Print[輸出項(xiàng)列表][{;|,}]說(shuō)明:對(duì)象名:可以是窗體、圖片框或打印機(jī)等對(duì)象,若省略對(duì)象名,則在當(dāng)前窗體上輸出數(shù)據(jù)。輸出項(xiàng)列表:要輸出的內(nèi)容(表達(dá)式)。若有多個(gè)輸出項(xiàng),可用逗號(hào)或分號(hào)隔開(kāi)。分號(hào)(;):各輸出項(xiàng)連續(xù)輸出,中間無(wú)空格。4.1.2Print方法(2)逗號(hào)(,):各輸出項(xiàng)按分區(qū)格式輸出,即將一個(gè)輸出行以14個(gè)字符的寬度為單位分成若干區(qū)段(稱為“打印區(qū)”),每個(gè)區(qū)段輸出一個(gè)表達(dá)式的值。如果調(diào)用Print方法的語(yǔ)句以分號(hào)或逗號(hào)結(jié)束,則下一次執(zhí)行Print方法時(shí)將在同一行輸出;否則,每執(zhí)行一次Print方法即自動(dòng)換行。Print方法在Form_Load事件過(guò)程中不起作用。如果要在該事件中顯示數(shù)據(jù),必須在該過(guò)程內(nèi)加上Form.Show方法或把窗體的AutoRedraw屬性設(shè)置為True。技巧:在輸入Print關(guān)鍵字時(shí)可以只輸入問(wèn)號(hào)(?),VB會(huì)自動(dòng)將其翻譯成Print。4.1.2Print方法(3)2.與Print方法有關(guān)的函數(shù)VB提供了Spc和Tab兩個(gè)函數(shù),用于配合Print方法對(duì)輸出進(jìn)行定位。(1)Spc函數(shù)格式:Spc(n)Spc函數(shù)用于插入n個(gè)空格。例如:Print"你好!";Spc(8);"Hello!"輸出結(jié)果:你好!Hello!4.1.2Print方法(4)(2)Tab函數(shù)格式:Tab[(n)]Tab函數(shù)用于將輸出位置定位于第n列。若省略參數(shù)n,則將插入點(diǎn)移動(dòng)到下一個(gè)打印區(qū)的起點(diǎn)。如果n小于當(dāng)前顯示位置,則將輸出位置移到下一行第n列。例如:Print"1234567890"Print"Hello";Tab(10);"China"Print"Hello";Tab;"China"Print"Hello";Tab(4);"China"4.1.2Print方法(5)若在窗體的Form_Click事件中加入以上代碼,則單擊窗體后輸出如圖4.2所示的結(jié)果。返回首頁(yè)返回本節(jié)圖4.2Tab函數(shù)示例

4.1.3With結(jié)構(gòu)(1)使用With結(jié)構(gòu)可以對(duì)某個(gè)對(duì)象執(zhí)行一系列語(yǔ)句,而不用重復(fù)指出該對(duì)象的名稱。With結(jié)構(gòu)的格式如下:With對(duì)象

語(yǔ)句塊EndWith例如,要改變一個(gè)對(duì)象的多個(gè)屬性,可以在With結(jié)構(gòu)中添加為該對(duì)象的多個(gè)屬性賦值的語(yǔ)句,此時(shí)只需引用對(duì)象一次而不是在每個(gè)屬性賦值時(shí)都要引用它。下面的示例說(shuō)明了如何使用With結(jié)構(gòu)來(lái)給同一個(gè)對(duì)象的幾個(gè)屬性賦值。4.1.3With結(jié)構(gòu)(2)'為文本框字體對(duì)象的多個(gè)屬性賦值WithText1.Font

'下面只需輸入圓點(diǎn)即可引用對(duì)象的屬性或方法

.Name="隸書(shū)"

'字體名

.Size=12

'字號(hào)

.Bold=True

'粗體

.Italic=True

'斜體

.Underline=True

'下劃線EndWith注意:當(dāng)程序一旦進(jìn)入With結(jié)構(gòu),對(duì)象就不能改變。因此不能用一個(gè)With結(jié)構(gòu)來(lái)設(shè)置多個(gè)不同的對(duì)象。

順序結(jié)構(gòu)示例下面通過(guò)實(shí)例說(shuō)明順序結(jié)構(gòu)程序設(shè)計(jì)的特點(diǎn)。【P67例4.1】求一元二次方程ax2+bx+c=0的根。設(shè)計(jì)步驟如下:(1)新建工程,在窗體上添加五個(gè)文本框、兩個(gè)命令按鈕和五個(gè)標(biāo)簽。文本框均采用默認(rèn)名稱,Text屬性均為空。其他對(duì)象的屬性設(shè)置如表4.1所示。注:標(biāo)簽Label7用于顯示二次方程通式的指數(shù),六號(hào)字。

(2)編寫代碼。雙擊【計(jì)算】按鈕,打開(kāi)代碼窗口,輸入以下代碼:

PrivateSubcmdCalcu_Click()DimaAsSingle,bAsSingle,cAsSingleDimDAsSingleDimx1AsSingle,x2AsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)D=b*b-4*a*c'二次方程求根的判別式

x1=(-b+Sqr(D))/(2*a)'用求根公式計(jì)算x1和x2x2=(-b-Sqr(D))/(2*a)

'顯示結(jié)果,最多保留4位小數(shù)Text4.Text=Format(x1,"0.####")Text5.Text=Format(x2,"0.####")EndSub在【結(jié)束】按鈕的單擊事件中用End語(yǔ)句結(jié)束程序運(yùn)行。運(yùn)行程序,單擊【計(jì)算】按鈕即可解出方程的根。運(yùn)行效果如圖4.3所示。注意:上面的程序是有缺陷的。當(dāng)a=0或判別式(變量D)的值小于0時(shí),將出現(xiàn)錯(cuò)誤,導(dǎo)致程序崩潰。因此,應(yīng)設(shè)法判斷變量a和D的值所處的范圍,并作相應(yīng)的處理。這不是順序結(jié)構(gòu)所能完成的任務(wù),需采用下面將要介紹的選擇結(jié)構(gòu)才能實(shí)現(xiàn)。

返回首頁(yè)返回本節(jié)圖4.3二次方程求根

單擊演示(例4.1)4.2選擇結(jié)構(gòu)

4.2.1If語(yǔ)句4.2.2SelectCase語(yǔ)句

4.2.3條件函數(shù)返回首頁(yè)4.2.1If語(yǔ)句1.If…Then結(jié)構(gòu)2.If…Then…Else結(jié)構(gòu)3.If...Then...ElseIf結(jié)構(gòu)4.If語(yǔ)句的嵌套

返回首頁(yè)返回本節(jié)1.If…Then結(jié)構(gòu)(1)If…Then結(jié)構(gòu)的流程如圖4.4所示。該結(jié)構(gòu)表示“如果條件滿足就執(zhí)行Then后邊的語(yǔ)句,否則不執(zhí)行任何操作”。語(yǔ)法格式如下:(1)單行形式If條件

Then語(yǔ)句(2)塊(多行)形式If條件

Then

語(yǔ)句塊EndIf1.If…Then結(jié)構(gòu)(2)一般情況下,“條件”是運(yùn)算結(jié)果為邏輯值的表達(dá)式,若表達(dá)式的值為True,則條件成立,若表達(dá)式的值為False,則條件不成立?!皸l件”也可以是運(yùn)算結(jié)果為數(shù)值的表達(dá)式,此時(shí)VB將表達(dá)式的值解釋成邏輯值:0為False,非零為True。需要注意的是,If…Then的單行格式不用EndIf語(yǔ)句,整個(gè)語(yǔ)句必須寫在一行上。如果條件為真時(shí)需要執(zhí)行多條語(yǔ)句,所有語(yǔ)句必須在同一行上并且以冒號(hào)分開(kāi),如:If條件

Then語(yǔ)句1:語(yǔ)句2:語(yǔ)句3為了使程序便于維護(hù),提高其可讀性,建議盡量不要采用這種單行多句的形式。如果需要在Then關(guān)鍵字后面執(zhí)行多條語(yǔ)句,應(yīng)使用塊形式的If…Then…EndIf結(jié)構(gòu)。1.If…Then結(jié)構(gòu)(3)【P69例4.2】編寫程序,在文本框中輸入一個(gè)整數(shù),判斷該數(shù)是不是偶數(shù)。分析:判斷某整數(shù)的奇偶性,可以檢查該數(shù)能否被2整除。若某數(shù)能被2整除,則該數(shù)為偶數(shù)。設(shè)計(jì)步驟如下:(1)建立用戶界面,設(shè)置對(duì)象屬性。各對(duì)象的屬性如表4.2所示。表4.2例4.2對(duì)象屬性(2)編寫程序代碼?!芭袛唷泵畎粹o的Click事件代碼如下:PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)IfxMod2=0ThenLabel2.Caption=x&"是偶數(shù)。"

EndIfEndSub“清除”命令按鈕Click事件的代碼如下:PrivateSubCommand2_Click()Text1.Text=""Label2.Caption=""EndSub運(yùn)行結(jié)果如圖4.5所示。圖4.5If...Then示例

單擊演示(例4.2)【P70例4.3】限制用戶輸入合法數(shù)據(jù)。文本框是常用的數(shù)據(jù)輸入控件,為了防止用戶輸入錯(cuò)誤數(shù)據(jù),可以在文本框的KeyPress事件中檢查用戶的按鍵。KeyPress事件有一個(gè)KeyAscii參數(shù),用于傳送或改變用戶按鍵的ASCII碼。在KeyPress事件過(guò)程中將KeyAscii設(shè)置為0即可取消按鍵。在本例中,要求只能輸入數(shù)字,若輸入非數(shù)字字符則取消本次按鍵。代碼如下:PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfNotIsNumeric(Chr(KeyAscii))And_ KeyAscii<>8ThenKeyAscii=0EndSub

返回首頁(yè)返回本節(jié)返回小節(jié)單擊演示(例4.3)2.If…Then…Else結(jié)構(gòu)(1)

(1)單行形式If條件

Then語(yǔ)句1Else語(yǔ)句2(2)塊形式If條件

Then

語(yǔ)句塊1Else

語(yǔ)句塊2EndIf2.If…Then…Else結(jié)構(gòu)(2)

【P70例4.4】改進(jìn)例4.2,使程序能判斷整數(shù)的奇偶性。分析:判斷某數(shù)的奇偶性,就是檢查該數(shù)能否被2整除,若能被2整除,該數(shù)為偶數(shù),否則為奇數(shù)。PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)If(xMod2)=0ThenLabel2.Caption=x&"是偶數(shù)"

Else'增加Else子句,顯示奇數(shù)

Label2.Caption=x&"是奇數(shù)"

EndIfEndSub返回首頁(yè)返回本節(jié)返回小節(jié)單擊演示(例4.4)3.If...Then...ElseIf結(jié)構(gòu)(1)

語(yǔ)法格式如下:

If條件1Then

語(yǔ)句塊1ElseIf條件2Then

語(yǔ)句塊2...ElseIf條件nThen

語(yǔ)句塊nElse

語(yǔ)句塊n+1EndIf3.If...Then...ElseIf結(jié)構(gòu)(2)

【P72例4.5】改進(jìn)例4.1求一元二次方程ax2+bx+c=0的根的程序,修正其中的缺陷。分析:首先應(yīng)判斷方程中二次項(xiàng)的系數(shù)a:若a=0,則不是二次方程,不作求根運(yùn)算;若a≠0,則根據(jù)判別式b2-4ac的值求根。方程的根有三種情況:①

b2-4ac=0,方程有兩個(gè)相等的實(shí)根;②

b2-4ac>0,方程有兩個(gè)不等的實(shí)根;③

b2-4ac<0,方程無(wú)實(shí)根,有兩個(gè)共軛復(fù)根。

程序界面設(shè)計(jì)與例4.1相同。根據(jù)以上分析,將“計(jì)算”按鈕單擊事件過(guò)程的代碼修改如下:PrivateSubcmdCalcu_Click()DimaAsSingle,bAsSingle,cAsSingleDimDAsSingleDimx1,x2'將x1、x2聲明為變體型,可以存放不同類型的數(shù)據(jù)

a=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)D=b*b-4*a*c'二次方程求根的判別式

IfAbs(a-0)<1.0E-6Then'a=0,不是二次方程

x1="不是二次方程"x2=x1ElseIfAbs(D-0)<1.0E-6Then'a≠0,D=0,方程有相等二實(shí)根

x1=-b/(2*a)x2=x1ElseIfD>1.0E-6Then

'a≠0,D>0,方程有不等二實(shí)根

x1=(-b+Sqr(D))/(2*a)x2=(-b-Sqr(D))/(2*a)Else

'a≠0,D<0,方程有兩個(gè)共軛復(fù)根

p=-b/(2*a)q=Sqr(-D)/(2*a)x1=p&"+"&q&"i"x2=p&"-"&q&"i"EndIfText4.Text=x1Text5.Text=x2EndSub在上述代碼中,變量D存放判別式(b2-4ac)的值。實(shí)際上,當(dāng)D=0或D>0時(shí),都是用求根公式計(jì)算x1和x2,因此可將兩個(gè)ElseIf子句合并:ElseIfD>=0Then'D≥0,方程有兩個(gè)實(shí)根

x1=(-b+Sqr(D))/(2*a)x2=(-b-Sqr(D))/(2*a)返回首頁(yè)返回本節(jié)返回小節(jié)單擊演示(例4.5)4.If語(yǔ)句的嵌套嵌套是指在一個(gè)控制結(jié)構(gòu)中插入另一個(gè)控制結(jié)構(gòu)。If語(yǔ)句的嵌套是指在一個(gè)If語(yǔ)句中插入另一個(gè)If語(yǔ)句。內(nèi)嵌的If語(yǔ)句可以出現(xiàn)在關(guān)鍵字Then或Else之后的語(yǔ)句塊中。If語(yǔ)句嵌套常用于復(fù)雜的多分支選擇,它的一般形式如下:If條件1Then

…If條件2Then

…EndIf

…EndIf例如,例4.5中二次方程求根的If語(yǔ)句可以改為下面的形式:Ifa=0Then'a=0,不是二次方程

x1="不是二次方程"

x2=x1Else'a≠0‘內(nèi)嵌If語(yǔ)句開(kāi)始。

D≥0,方程有兩個(gè)實(shí)根IfAbs(D)>=1.0E-6Thenx1=(-b+Sqr(D))/(2*a)x2=(-b-Sqr(D))/(2*a)Elsep=-b/(2*a)q=Sqr(-D)/(2*a)x1=p&"+"&q&"i"x2=p&"-"&q&"i"EndIf'內(nèi)嵌If語(yǔ)句結(jié)束EndIf返回首頁(yè)返回本節(jié)返回小節(jié)4.2.2SelectCase語(yǔ)句(1)

SelectCase測(cè)試表達(dá)式

Case值表1

語(yǔ)句塊1

Case值表2

語(yǔ)句塊2

Case值表n

語(yǔ)句塊nCaseElse

語(yǔ)句塊n+1EndSelect4.2.2SelectCase語(yǔ)句(2)

說(shuō)明:(1)“測(cè)試表達(dá)式”可以是數(shù)值表達(dá)式或字符串表達(dá)式。(2)“值表”與“測(cè)試表達(dá)式”的類型必需相同。(3)當(dāng)使用多個(gè)表達(dá)式組成“值表”時(shí),表達(dá)式與表達(dá)式之間要用逗號(hào)隔開(kāi)。(4)“值表”由以下形式的表達(dá)式組成:形式示例說(shuō)明(1)表達(dá)式Case100+a數(shù)值或字符串表達(dá)式(2)一組用逗號(hào)分隔的枚舉值Case2,4,6,8測(cè)試表達(dá)式的值等于2,4,6,8之一(3)表達(dá)式1To表達(dá)式2Case1To101≤

測(cè)試表達(dá)式的值

≤10(4)Is關(guān)系運(yùn)算符表達(dá)式CaseIs>20

測(cè)試表達(dá)式的值>204.2.2SelectCase語(yǔ)句(3)

【P75例4.6】設(shè)計(jì)一個(gè)程序,輸入成績(jī),根據(jù)以下條件判斷成績(jī)的等級(jí):90~100等級(jí)A80~89等級(jí)B70~79等級(jí)C60~69等級(jí)D60以下

等級(jí)E(1)新建工程,在窗體中添加兩個(gè)標(biāo)簽,一個(gè)文本框,一個(gè)標(biāo)題為“顯示等級(jí)”的命令按鈕。(2)為“顯示等級(jí)”按鈕的單擊事件編寫如下代碼:PrivateSubCommand1_Click()DimScoreAsIntegerScore=Val(Text1.Text)SelectCaseScoreCase90To100Label2.Caption=Score&"分為等級(jí)A"Case80To89Label2.Caption=Score&"分為等級(jí)B"Case70To79Label2.Caption=Score&"分為等級(jí)C"Case60To69Label2.Caption=Score&"分為等級(jí)D"Case0To59Label2.Caption=Score&"分為等級(jí)E"CaseElseLabel2.Caption="成績(jī)有誤,請(qǐng)重新輸入!"

EndSelectEndSub返回首頁(yè)返回本節(jié)單擊演示(例4.6)4.2.3條件函數(shù)VB提供了3個(gè)條件函數(shù):IIf、Choose和Switch,它們可以部分地代替If語(yǔ)句或SelectCase語(yǔ)句。其中IIf和Choose函數(shù)較為常用。1.IIf函數(shù)2.Choose函數(shù)返回首頁(yè)返回本節(jié)1.IIf函數(shù)(1)IIf函數(shù)(ImmediateIf的縮寫)是If...Then...Else結(jié)構(gòu)的簡(jiǎn)化形式,語(yǔ)法格式如下:IIf(條件,True值,False值)

其中,“條件”是運(yùn)算結(jié)果為邏輯值的表達(dá)式,也可以是運(yùn)算結(jié)果為數(shù)值的表達(dá)式,若采用后者,則0為False,非零為True。“True值”是當(dāng)條件成立時(shí)IIf函數(shù)的返回值,“False值”是條件不成立時(shí)該函數(shù)的返回值。

1.IIf函數(shù)(2)例如,已知兩個(gè)數(shù)x和y,比較其大小,將較大的數(shù)存入變量z:z=IIf(x>y,x,y)該語(yǔ)句與以下語(yǔ)句等價(jià):Ifx>yThenz=xElsez=y顯然,使用IIf函數(shù)可以簡(jiǎn)化代碼。

返回首頁(yè)返回本節(jié)返回小節(jié)2.Choose函數(shù)(1)Choose函數(shù)可以部分地代替SelectCase語(yǔ)句的功能。語(yǔ)法格式如下:Choose(整數(shù)表達(dá)式,選項(xiàng)列表)

Choose函數(shù)根據(jù)“整數(shù)表達(dá)式”的值返回“選項(xiàng)列表”中的某個(gè)值。整數(shù)表達(dá)式的值實(shí)際上是選項(xiàng)列表的索引,它的取值范圍下界為1,上界為選項(xiàng)列表中的項(xiàng)目總數(shù)。如果整數(shù)表達(dá)式的值為1,則返回列表中的第一個(gè)選項(xiàng);如果整數(shù)表達(dá)式的值為2,則返回列表中的第二個(gè)選項(xiàng),依此類推。2.Choose函數(shù)(2)例如:DimstrColorAsString,iIndexAsIntegeriIndex=3'執(zhí)行以下語(yǔ)句后strColor的值為"藍(lán)"

strColor=Choose(iIndex,“紅”,“綠”,“藍(lán)”)上述第三行語(yǔ)句與以下語(yǔ)句等價(jià):2.Choose函數(shù)(3)SelectCaseiIndexCase1strColor="紅"

Case2strColor="綠"

Case3strColor="藍(lán)"EndSelect顯然,使用Choose函數(shù)可以簡(jiǎn)化代碼。返回首頁(yè)返回本節(jié)返回小節(jié)本講到此結(jié)束,謝謝!下課。第8講:教材P77~P84講解內(nèi)容:循環(huán)語(yǔ)句同學(xué)們好,現(xiàn)在開(kāi)始上課!4.3循環(huán)結(jié)構(gòu)

循環(huán)結(jié)構(gòu)是指對(duì)同一程序段重復(fù)執(zhí)行若干次,被重復(fù)執(zhí)行的語(yǔ)句塊稱為循環(huán)體。循環(huán)體的執(zhí)行與否以及次數(shù)多少視循環(huán)類型和條件而定。VB中常用的循環(huán)語(yǔ)句有For…Next語(yǔ)句和Do…Loop語(yǔ)句。For…Next循環(huán)用于已知循環(huán)次數(shù)的情況下,而Do…Loop循環(huán)主要用于不知道循環(huán)次數(shù)的情況下,在給定的條件滿足時(shí)執(zhí)行循環(huán)體。

4.3.1For…Next循環(huán)

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

4.3.3While…Wend循環(huán)

4.3.4循環(huán)的嵌套返回首頁(yè)4.3.1For…Next循環(huán)(1)

For循環(huán)的語(yǔ)法格式如下:For循環(huán)變量=初值

To終值[Step步長(zhǎng)][循環(huán)體]Next[循環(huán)變量]

For…Next循環(huán)簡(jiǎn)稱For循環(huán)。如果知道循環(huán)要執(zhí)行多少次時(shí),就可以使用For循環(huán)。For循環(huán)使用一個(gè)循環(huán)變量(計(jì)數(shù)器)控制循環(huán)體的執(zhí)行次數(shù)。每執(zhí)行一次循環(huán)之后,循環(huán)變量的值就會(huì)自動(dòng)增加或者減少。

4.3.1For…Next循環(huán)(2)

格式說(shuō)明:循環(huán)變量:必須為數(shù)值型。For和Next關(guān)鍵字后面的循環(huán)變量必須相同。初值和終值:均為數(shù)值型,可以是數(shù)值表達(dá)式。步長(zhǎng):數(shù)值型,可以是數(shù)值表達(dá)式,默認(rèn)值為1。若步長(zhǎng)為正數(shù),應(yīng)設(shè)初值≤終值;若步長(zhǎng)為負(fù)數(shù),應(yīng)設(shè)初值≥終值,否則循環(huán)體不會(huì)被執(zhí)行。步長(zhǎng)不應(yīng)為0,否則程序?qū)⑾萑霟o(wú)限循環(huán)(死循環(huán))。循環(huán)體:在循環(huán)中被執(zhí)行的語(yǔ)句塊。若循環(huán)體中無(wú)語(yǔ)句,則為空循環(huán)。在循環(huán)體中可根據(jù)條件加入ExitFor語(yǔ)句強(qiáng)制退出循環(huán)。ExitFor通常出現(xiàn)在選擇結(jié)構(gòu)中。

4.3.1For…Next循環(huán)(3)

【P78例4.7】編制程序,計(jì)算1+2+3+...+200的整數(shù)和。在窗體上放置一個(gè)命令按鈕,編寫如下代碼:PrivateSubCommand1_Click()DimSumAsInteger,iAsIntegerSum=0Fori=1To200Sum=Sum+iNextiPrint"1+2+...+200="&SumEndSub單擊演示(例4.7)4.3.1For…Next循環(huán)(4)

【P79例4.8】制作ASCII碼對(duì)照表。ASCII碼(美國(guó)信息交換標(biāo)準(zhǔn)碼)是7位二進(jìn)制字符集,用來(lái)表示標(biāo)準(zhǔn)美制鍵盤上的字母、符號(hào)以及控制字符。其中,可打印字符的編碼值范圍為32~126(32=空格)。利用Chr函數(shù)可以將字符代碼轉(zhuǎn)換為對(duì)應(yīng)的字符。(1)設(shè)計(jì)界面。程序的界面很簡(jiǎn)單,窗體上無(wú)任何控件。將窗體的背景色設(shè)為白色,Caption屬性設(shè)為“ASCII碼表”。(2)編寫代碼。由于可打印字符的ASCII碼對(duì)照表具有明確的起止范圍,因此,很適于用For…Next循環(huán)制作。單擊窗體時(shí),在循環(huán)中用Print方法將ASCII字符及其代碼直接顯示在窗體上,格式為“字符=字符代碼”,每行顯示8個(gè)字符及其代碼,用Tab函數(shù)控制每個(gè)ASCII碼的打印位置。程序運(yùn)行效果如圖4.14所示。窗體單擊事件的代碼如下:PrivateSubForm_Click()DimintASCAsIntegerDimiAsIntegerClsPrintMe.FontSize=10'設(shè)置字號(hào)

PrintTab(29);"ASCII碼對(duì)照表"

Me.FontSize=9

'String函數(shù)返回指定數(shù)目的重復(fù)字符Print"";String$(79,"-")

'intASC為循環(huán)變量,并代表要打印的ASCII碼

ForintASC=32To126PrintTab(10*i+3);_ Chr(intASC);"=";intASC;i=i+1Ifi=8Then'每行顯示8個(gè)ASCII碼

i=0PrintEndIfNextintASCPrintvbCr;"";String$(79,"-")EndSub圖4.14ASCII碼對(duì)照表

返回首頁(yè)返回本節(jié)單擊演示(例4.8)4.3.2Do...Loop循環(huán)(1)

Do...Loop循環(huán)簡(jiǎn)稱Do循環(huán),主要在循環(huán)次數(shù)未知時(shí)使用。Do循環(huán)有兩類語(yǔ)法形式:前測(cè)型循環(huán)(先判斷,后執(zhí)行)Do[{While|Until}條件][循環(huán)體]Loop后測(cè)型循環(huán)(先執(zhí)行,后判斷)Do[循環(huán)體]Loop[{While|Until}條件]

使用While關(guān)鍵字的前測(cè)型和后測(cè)型Do循環(huán)的流程如圖4.15和圖4.16所示。使用Until關(guān)鍵字的Do循環(huán)與之相似,只需將圖中的“T”和“F”互換位置即可。

Do循環(huán)的流程圖4.3.2Do...Loop循環(huán)(2)

說(shuō)明:(1)前測(cè)型循環(huán)先判斷條件,如果為真,執(zhí)行循環(huán)體,否則退出,因此有可能一次也不執(zhí)行循環(huán)體;后測(cè)型循環(huán)先執(zhí)行循環(huán)體,然后判斷條件,因此至少執(zhí)行一次循環(huán)體。(2)While關(guān)鍵字是指當(dāng)條件為真時(shí)執(zhí)行循環(huán)體;Until與之相反,條件為假時(shí)執(zhí)行循環(huán)體,直到條件為真時(shí)退出循環(huán)。二者在功能上并無(wú)本質(zhì)區(qū)別,只要將條件取反,就可以互相取代。例如,DoWhilex>=10與DoUntilx<10是等價(jià)的。(3)在循環(huán)體中可以插入ExitDo語(yǔ)句,隨時(shí)跳出循環(huán)。ExitDo通常用于條件判斷之后(如If...Then)。(4)如果省略了“{While|Until}條件”子句,則為無(wú)條件循環(huán),此時(shí)應(yīng)在循環(huán)體內(nèi)適當(dāng)位置插入ExitDo語(yǔ)句,否則會(huì)陷入死循環(huán)。4.3.2Do...Loop循環(huán)(3)

【P80例4.9】用DoWhile...Loop循環(huán)計(jì)算1到200的奇數(shù)和(1+3+5+...+199)。在窗體上放置一個(gè)命令按鈕,編寫如下代碼:PrivateSubCommand1_Click()DimSumAsInteger,iAsIntegerSum=0i=1DoWhilei<=200Sum=Sum+ii=i+2LoopPrint"1+3+5+...+199="&SumEndSub單擊演示(例4.9)4.3.2Do...Loop循環(huán)(4)

上述功能亦可用For循環(huán)實(shí)現(xiàn):Fori=1To200Step2Sum=Sum+iNext由此可見(jiàn),Do循環(huán)完全可以代替For循環(huán)。盡管如此,在已知循環(huán)次數(shù)的情況下,還是應(yīng)當(dāng)使用For循環(huán),它將使程序更加簡(jiǎn)潔,效率更高。4.3.2Do...Loop循環(huán)(5)

【P81例4.10】用“輾轉(zhuǎn)相除法”求兩個(gè)自然數(shù)m和n的最大公約數(shù)。分析:用“輾轉(zhuǎn)相除法”求最大公約數(shù)的計(jì)算方法如下:(1)兩數(shù)相除(m除以n),取余數(shù)r;(2)若r≠0,則將除數(shù)改作被除數(shù),余數(shù)改作除數(shù)(m←n,n←r),重復(fù)步驟(1)、(2),直到r=0為止;(3)最后一次相除時(shí)所用的除數(shù)就是最大公約數(shù)。程序設(shè)計(jì):本例采用Do...LoopUntil循環(huán)實(shí)現(xiàn)。程序界面及運(yùn)行效果如圖4.18所示?!坝?jì)算”按鈕單擊事件的代碼如下:PrivateSubCommand1_Click()DimmAsInteger,nAsInteger,rAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)

'若數(shù)據(jù)超出有效范圍,退出本過(guò)程

Ifm<=0Orn<=0ThenExitSub

Do'求最大公約數(shù)

r=mModnm=nn=rLoopUntilr=0'r=0時(shí)退出循環(huán)

'退出循環(huán)時(shí),m中存放的是最后的除數(shù),即最大公約數(shù)

Label4.Caption="兩數(shù)的最大公約數(shù)="&mEndSub返回首頁(yè)返回本節(jié)單擊演示(例4.10)4.3.3While…Wend循環(huán)(1)

While…Wend循環(huán)在條件為True時(shí),執(zhí)行循環(huán)體,語(yǔ)法如下:

While條件語(yǔ)句塊Wend如果條件為True,則執(zhí)行語(yǔ)句塊,到達(dá)Wend時(shí),控制返回While處,再次判斷條件,若為True,則重復(fù)這個(gè)過(guò)程。若為False,則執(zhí)行Wend后續(xù)語(yǔ)句。While…Wend循環(huán)類似于DoWhile…Loop循環(huán),但功能較弱。4.3.3While…Wend循環(huán)(2)

下列代碼提示用戶輸入數(shù)值型數(shù)據(jù)。把輸入的數(shù)據(jù)求和,直到輸入負(fù)值結(jié)束循環(huán)。DimsumAsLong,numAsLongsum=0num=Val(Input("請(qǐng)輸入第一個(gè)數(shù)。"))Whilenum>=0sum=sum+numnum=Val(Input(“請(qǐng)輸入下一個(gè)數(shù),_輸入負(fù)數(shù)結(jié)束。"))Wend返回首頁(yè)返回本節(jié)4.3.4循環(huán)的嵌套(1)在循環(huán)結(jié)構(gòu)中可以嵌套任何循環(huán)結(jié)構(gòu),也可以嵌套選擇結(jié)構(gòu)。【P82例4.11】求100~200之間的素?cái)?shù)。分析:素?cái)?shù)或稱質(zhì)數(shù),是指一個(gè)大于1的整數(shù),除了1和它本身以外不能被其他正整數(shù)整除,這個(gè)數(shù)就是素?cái)?shù)。判斷一個(gè)數(shù)n是否為素?cái)?shù),只要依次用2~作除數(shù)去除n,若n不能被其中任何一個(gè)數(shù)整除,則n即為素?cái)?shù)。本題的求解可用雙重循環(huán)實(shí)現(xiàn),外循環(huán)遍歷100~200之間的所有整數(shù),內(nèi)循環(huán)判斷各數(shù)是否為素?cái)?shù)。程序設(shè)計(jì):在窗體上添加一個(gè)命令按鈕,設(shè)Caption屬性為“開(kāi)始”。運(yùn)行時(shí)單擊該按鈕后用Print方法顯示100~200之間的素?cái)?shù)。“開(kāi)始”按鈕單擊事件的代碼如下:

PrivateSubCommand1_Click()DimnAsInteger,iAsInteger,jAsIntegerDimflagAsBoolean'判斷

n是否為素?cái)?shù)的標(biāo)志

PrintvbCr;Tab(8);"100~200之間的素?cái)?shù)";_ vbCr;String(35,"-")Forn=100To200'外循環(huán)遍歷100~200之間所有整數(shù)

flag=True'先假定

n為素?cái)?shù)

Fori=2ToInt(Sqr(n))'內(nèi)循環(huán)判斷

n是否為素?cái)?shù)

IfnModi=0Then'若

n能被

i整除,不是素?cái)?shù)

flag=False'修改標(biāo)志

ExitFor'退出內(nèi)循環(huán)

EndIfNextIIfflagThen'若

n為素?cái)?shù),顯示(每行7個(gè)數(shù))

Printn;

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論