VB 第5章 選擇分支與循環(huán)_第1頁
VB 第5章 選擇分支與循環(huán)_第2頁
VB 第5章 選擇分支與循環(huán)_第3頁
VB 第5章 選擇分支與循環(huán)_第4頁
VB 第5章 選擇分支與循環(huán)_第5頁
已閱讀5頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章選擇分支與循環(huán)本章內(nèi)容及要求:1.熟練掌握行if語句、塊if結(jié)構(gòu)、SelectCase情況選擇結(jié)構(gòu)有使用,掌握選擇的嵌套結(jié)構(gòu);2.熟練掌握實現(xiàn)循環(huán)結(jié)構(gòu)的For/Next循環(huán)結(jié)構(gòu)及ExitFor語句、Do/Loop循環(huán)結(jié)構(gòu)的使用,掌握多重循環(huán)。分支語句If<表達式>Then語句塊EndIf注:如表達式的值為0表示邏輯假,表達式的值為非0表示邏輯真

If<表達式>Then<語句

>語句塊表達式分支語句例例:已知兩個數(shù)x和y,比較它們的大小,使得x大于y.

Ifx<yThent=x:x=y:y=tEndIfIfx<yThent=x:x=y:y=t語句塊表達式雙分支語句If<表達式>Then<語句塊1>Else<語句塊2>EndIfIf<表達式>Then<語句1>Else

<語句2>語句塊1表達式語句塊2雙分支語句例例如:輸出x,y兩個中值較大的一個值。IFX>YThenPrintXElsePrintYEndIf也可以寫成如下的單行形式:

IFX>YThenPrintXElsePrintY語句塊1表達式語句塊2多分支語句If<表達式1>Then<語句塊1>ElseIf<表達式2>Then<語句塊2>ElseIf

<表達式3>Then<語句塊3>…Else<語句塊N+1>EndIf語句塊1表達式語句塊2語句塊n表達式表達式語句塊n+1多分支語句例例:輸入一學(xué)生成績,評定其等級。方法是:90~100分為“優(yōu)秀”,80~89分為“良好”,70~79分為“中等”,60~69分為“及格”,60分以為“不合格”使用IF語句實現(xiàn)的程序段如下:Ifx>=90thenPrint"優(yōu)秀"ElseIfx>=80ThenPrint"良好"ElseIfx>=70ThenPrint"中等"ElseIfx>=60ThenPrint"及格"ElsePrint"不及格"EndIf語句塊1表達式語句塊2語句塊n表達式表達式語句塊n+1SelectCase測試表達式

Case測試項1

語句塊1Case測試項2

語句塊2CaseElse

語句塊n+1EndSelectSelectCase測試表達式可以是算術(shù)表達式或字符表達式測試項可以是:1.具體取值(用逗號分隔):2,5,92.數(shù)據(jù)范圍:8to15,btog3.判決條件:Is>15,Is<=“P”4.表達式:A+5SelectCase例例如:將上例使用selectcase…..語句來實現(xiàn)的程序段如下:SelectCasexCase90to100Print"優(yōu)秀"Case80to89Print"良好"Case70to79Print"中等"Case60to69Print"及格"CaseElsePrint"不及格"EndSelectSelectCase測試表達式

Case測試項1

語句塊1Case測試項2

語句塊2CaseElse

語句塊n+1EndSelect測試項可以是:1.具體取值(用逗號分隔):2,5,92.數(shù)據(jù)范圍:8to15,btog3.判決條件:Is>15,Is<=“P”4.表達式:A+5求一元二次方程:b*b-4ac>0有兩個實根b*b-4ac=0有一個實根b*b-4ac<0無實根求非線性函數(shù)用selectcase編寫100制轉(zhuǎn)五分制求三角形的面積:sqr(l*l(l-a)*(l-b)*(l-c))

其中l(wèi)=(a+b+c)/2分支習(xí)題補充分支習(xí)題:設(shè)計一個由計算機來當小學(xué)低年級學(xué)生算術(shù)老師的VB應(yīng)用程序,要求給出一系列的兩個1~10數(shù)的四則運算的算術(shù)題,學(xué)生輸入該題的答案,計算機根據(jù)學(xué)生的答案判斷正確與否,并給出成績,單擊結(jié)束命令按鈕,退出應(yīng)用程序。分析:產(chǎn)生1~10操作數(shù),可通過Int(10*Rnd+1)實現(xiàn)選擇結(jié)構(gòu)的嵌套在IF語句的Then分支和Else分支中可以完整地嵌套另一IF語句或SelectCase語句,同樣SelectCase語句每一個Case分支中都可嵌套另一IF語句或另一SelectCase語句。下面是兩種正確的嵌套形式:(1)IF<條件1>Then….. IF<條件2>Then……Else….. EndIf….Else…. IF<條件3>Then ….. Else ….. EndIf…..EndIF(2)IF<條件1>Then ….. SelectCase… Case…… IF<條件1>Then …… Else ….. EndIf …… Case…. ….. EndSelect …. EndIF嵌套注意:只要在一個分支內(nèi)嵌套,不出現(xiàn)交叉,滿足結(jié)構(gòu)規(guī)則,其嵌套的形式將有很多種,嵌套層次也可以任意多。對于多層IF嵌套結(jié)構(gòu)中,要特別注意IF與Else的配對關(guān)系,一個Else必須與IF配對,配對的原則是:在寫含有多層嵌套的程序時,建議使用縮進對齊方式,這樣容易閱讀和維護。循環(huán)結(jié)構(gòu)(當型)語句塊表達式y(tǒng)esno語句塊表達式y(tǒng)esno先判別,后執(zhí)行no先執(zhí)行,后判別循環(huán)結(jié)構(gòu)語句(當型)DoWhile<條件表達式>…[ExitDo]…LoopDo…[ExitDo]…LoopWhile<條件表達式>N=1Dowhilen<=10printnN=n+1loopN=1doprintnN=n+1Loopwhilen<=10循環(huán)結(jié)構(gòu)(直到型)語句塊表達式no語句塊表達式noyes先判別,后執(zhí)行yes先執(zhí)行,后判別循環(huán)結(jié)構(gòu)語句(直到型)DoUntil<條件表達式>…[ExitDo]…LoopDo…[ExitDo]…LoopUntil<條件表達式>N=1dountiln>10printnN=n+1loopN=1doprintnN=n+1loopuntiln>10ExitDoIf<條件表達式>ThenExitDo在循環(huán)體內(nèi),當某一條件滿足時,直接退出循環(huán)說明:1)當使用While<條件>構(gòu)成循環(huán)時,當條件為“真”,則反復(fù)執(zhí)行循環(huán)體,當條件為“假”,則退出循環(huán)。2)當使用Until<條件>構(gòu)成循環(huán)時,當條件為“假”,則反復(fù)執(zhí)行循環(huán)體,直到條件成立,即為“真”時,則退出循環(huán)。3)在循環(huán)體內(nèi)一般應(yīng)有一個專門用來改變條件表達式中變量的語句,以使隨著循環(huán)的執(zhí)行,條件趨于不成立(或成立),最后達到退出循環(huán)。4)語句ExitDo的作用是退出它所在的循環(huán)結(jié)構(gòu),它只能用在DO/Loop結(jié)構(gòu)中,并且常常是同選擇結(jié)構(gòu)一起出現(xiàn)在循環(huán)結(jié)構(gòu)中,用來實現(xiàn)當滿足某一條件時提前退出循環(huán)。For/Next循環(huán)語句ForX=AToB[StepC]…[ExitFor]…NextX語句塊X超過ByesnoX=x+cX=a計算a,b,c1.循環(huán)次數(shù)計算:(B-A)/C+12.循環(huán)方向:由C的正負決定3.離開循環(huán)后X的值為:X=X+C>B4.X不能是Boolean或數(shù)組元素。5.X,A,B,C可以是小數(shù)6.A,B,C一次計算后,就不在改變。例循環(huán)次數(shù)例:ForI=2To13Step3PrintI,NextIPrint“I=“,I循環(huán)執(zhí)行次數(shù)輸出I的值分別為:

25811

出了循環(huán)輸出為:I=14例:編程計算:S=1+2+3+…+100DimS%,N%S=0'累加前變量S為0ForN=1to100S=S+NNextIPrint"S=",S循環(huán)語句使用須知循環(huán)可以嵌套,構(gòu)成多重循環(huán)DO循環(huán)為條件循環(huán),循環(huán)內(nèi)一定要有改變條件的語句,否則會造成死循環(huán)。FOR循環(huán)為次數(shù)循環(huán),X,A,B,C的值是已知數(shù)值。A,B,C的值可以是小數(shù),但是如果說明其為整型的話,會四舍五入?循環(huán)嵌套不可以交叉?。。⊙h(huán)習(xí)題1.求N!階層X=1*2*3*4*…..*N2.求100內(nèi)可以同時被3和7整除的數(shù)3.求e4.解高次方程:(牛頓迭代法/二分法)5.求素數(shù)While…Wend語句使用格式如下:While<條件><循環(huán)塊>Wend說明:該語句的功能與DoWhile<條件>….Loop實現(xiàn)的循環(huán)完全相同。程序例題一,四則運算程序參考程序二,高次方程求解:1.牛頓迭代法2.二分法三,求最大公約數(shù)、最小公倍數(shù)例:

求兩個整數(shù)的最大公約數(shù)、最小公倍數(shù)算法使用轉(zhuǎn)碾除法,實現(xiàn)的程序代碼如下:Dimn%,m%,nm%,r%m=Val(InputBox("m="))n=Val(InputBox("n="))nm=n*mIfm<nThent=m:m=n:n=tr=mmodnDoWhiler<>0m=nn=rr=mmodnLoopPrint"最大公約數(shù)=",nPrint"最小公倍數(shù)=",nm/n循環(huán)的嵌套——多重循環(huán)結(jié)構(gòu)如果在一個循環(huán)內(nèi)完整地包含另一個循環(huán)結(jié)構(gòu),則稱為多重循環(huán),或循環(huán)嵌套,嵌套的層數(shù)可以根據(jù)需要而定,嵌套一層稱為二重循環(huán),嵌套二層稱為三重循環(huán)。上面介紹的幾種循環(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…..Loop例如:打印九九乘法表Fori=1To9Forj=1To9se=i&"×"&j&"="&i*jPicture1.PrintTab((j-1)*9+1);se;NextjPicture1.PrintNexti循環(huán)總結(jié)對于循環(huán)的嵌套要注意以下事項:內(nèi)循環(huán)變量與外循環(huán)變量不能同名外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),也不能從外循環(huán)轉(zhuǎn)向內(nèi)循環(huán).

Forii=1To10Forjj=1To20… Nextii NextjjForii=1To10Forii=1To20… Nextii Nextii

Forii=1To10Forjj=1To20… NextjjNextii

Forii=1To10…NextiiForii=1To10…Nextii循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)的嵌套在循環(huán)結(jié)構(gòu)中可以完整嵌套選擇結(jié)構(gòu)即整個選擇結(jié)構(gòu)都屬于循環(huán)體。在選擇結(jié)構(gòu)中嵌套循環(huán)結(jié)構(gòu)時,則要求整個循環(huán)結(jié)構(gòu)必須完整地嵌套在一個分支內(nèi),一個循環(huán)結(jié)構(gòu)不允許出現(xiàn)在兩個或兩個以上的分支內(nèi)。(1)ForI=…………IF…Then……EndIF……NextI(6)IF…Then……ForI=…………EndIF……NextI(5)SelectCase……ForI=…………Case…………Case…………NextI………EndSelect(3)ForI=…………IF…Then……NextI……EndIF(2)IF…Then……ForI=…………NextI……EndIF(4)ForI=…………SelectCase…Case…………Case…………EndSelect……NextI×××√√√判斷嵌套的正誤!幾種循環(huán)語句比較Goto

語句形式:

GoTo{標號|行號}作用:是無條件地轉(zhuǎn)移到標號或行號指定的那行語句.標號是一個字符序列,行號是一個數(shù)字序列。

例求100以內(nèi)的素數(shù):判別某數(shù)m是否為素數(shù)最簡單的方法是:

對于m

從i=2,3,…,m-1判別m能否被i整除,只要有一個能整除,m不是素數(shù),否則m是素數(shù)。

Form=2To100Fori=2Tom-1If(mModi)=0ThenGoTo

NotNextMNextiPrintm

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

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

EndIfEndSelectEndTypeEndWithEndSubEndFunction等它們與對應(yīng)的語句配對使用。暫停語句Stop語句用來暫停程序的執(zhí)行,相當于在事件代碼中設(shè)置斷點。語法格式為:Stop說明:1.Stop語句的主要作用是把解釋程序置為中斷(Break)模式,以便對程序進行檢查和調(diào)試??梢栽诔绦虻娜魏蔚胤椒胖肧top語句,當執(zhí)行Stop語句時,系統(tǒng)將自動打開立即窗口。2.與End語句不同。應(yīng)用程序舉例素數(shù)與哥德巴赫猜想判斷一個給定的整數(shù)是否為素數(shù)。算法思路:素數(shù)指除了能被1和自身外,不能被其他整數(shù)整除的自然數(shù)。判斷整數(shù)N是不是素數(shù)的基本方法是:將N分別除以2,3,…,N-1,若都不能整除,則N為素數(shù)。因為N=Sqr(N)*Sqr(N),所以,當N能被大于等于Sqr(N)的整數(shù)整除時,一定存在一個小于等于Sqr(N)的整數(shù),使N能被它整除,因此只要判斷N能否被2,3,…,Sqr(N)整除即可。算法流程圖如下:DimN%,I%,K%N=Val(InputBox("N=?"))K=Int(Sqr(N))ForI=2ToKIfNModI=0ThenExitForNextIIfI>KThenPrintN;"是素數(shù)"ElsePrintN;"不是素數(shù)"EndIf例4.10編一程序驗證哥德巴赫猜想:一個大于等于6的偶數(shù)可以表示為兩個素數(shù)之和。例如:

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

算法設(shè)計:設(shè)N為大于等于6的任一偶數(shù),將其分解為N1和N2兩個數(shù),使用N1+N2=N,分別判斷N1和N2是否為素數(shù),若都是,則為一組解。若N1不是素數(shù),就不必再檢查N2是否素數(shù)。先從N1=3開始,直到N1=N/2為止。算法流程圖如圖4-29所示。將程序代碼寫到窗體的單擊事件中。實現(xiàn)上面算法的程序代碼如下:PrivateSubForm_Click()DimN%,N1%,N2%,I%,K1%,K2%N=Val(InputBox("輸入大于6的偶數(shù)"))ForN1=3ToN\2Step2K1=Int(Sqr(N1))ForI=2ToK1'判斷N1是否是素數(shù)

IfN1ModI=0ThenExitForNextIIfI>K1Then'如果N1為素數(shù),將N分解為N1+N2N2=N-N1K2=Int(Sqr(N2))

ForI=2ToK2'判斷N2是否是素數(shù)

IfN2ModI=0ThenExitForNextIIfI>K2Then'如果N2也為素數(shù),則打印輸出

PrintN&"="&N1&"+"&N2EndIfEndIfNextN1EndSub如何求1000以內(nèi)的守形數(shù)什么是守形數(shù):設(shè)X為一整數(shù),如果X的低位與X^2相同,則稱X為"守形數(shù)".例如52=25,5是守形數(shù)(算法是:25Mod5=5),252=62525也是守形數(shù),Forn=1To1000Ifn*nMod10=nOrn*nMod100=nOrn*nMod1000=nThenPrintn;“的平方是”;n*n,n;“是一個守形數(shù)"EndIfNextn統(tǒng)計文本框中英文單詞的個數(shù)算法設(shè)計(1)從文本(字符串)的左邊開始,取出一個字符;設(shè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論