《Visual Basic語言程序設計教程(第二版)》課件第8章 循環(huán)_第1頁
《Visual Basic語言程序設計教程(第二版)》課件第8章 循環(huán)_第2頁
《Visual Basic語言程序設計教程(第二版)》課件第8章 循環(huán)_第3頁
《Visual Basic語言程序設計教程(第二版)》課件第8章 循環(huán)_第4頁
《Visual Basic語言程序設計教程(第二版)》課件第8章 循環(huán)_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

概述單擊窗體,要求在窗體上顯示6行星號分析:要求顯示的信息是每行是由16個星號所構成的字符串,所以可以通過連續(xù)6次調(diào)用窗體的Print方法實現(xiàn)圖形的顯示PrivateSubForm_Click()Print"****************"Print"****************"Print"****************"Print"****************"Print"****************"Print"****************"EndSub若要求顯示10行或更多行這樣的信息若打印信息的行數(shù)要求是由用戶決定專門用于進行重復操作的語句結(jié)構

概述所謂循環(huán)結(jié)構,表示在執(zhí)行語句時,需要對其中的某個或某部分語句重復執(zhí)行多次。對于此類情況可以利用各種循環(huán)結(jié)構來實現(xiàn)。循環(huán)結(jié)構可以分為For循環(huán)、Do循環(huán)和While循環(huán)語句結(jié)構。

循環(huán)For循環(huán)Do循環(huán)While循環(huán)For…NextForEach…Next前測型循環(huán)后測型循環(huán)當型循環(huán)直到型循環(huán)當型循環(huán)直到型循環(huán)8.1Do循環(huán)Do循環(huán)可以分為前測型循環(huán)和后測型循環(huán)兩種結(jié)構。前測型循環(huán)結(jié)構語法格式:

True循環(huán)條件循環(huán)體False格式1(當型)

DoWhile

循環(huán)條件循環(huán)體

LoopFalse循環(huán)條件循環(huán)體True

格式2(直到型)

DoUntil

循環(huán)條件循環(huán)體

Loop當型循環(huán)是當循環(huán)條件為TRUE時進入循環(huán);直到型則是為FALSE進入循環(huán)。8.1Do循環(huán)Do循環(huán)可以分為前測型循環(huán)和后測型循環(huán)兩種結(jié)構。后測型循環(huán)結(jié)構語法格式:

格式1(當型)Do循環(huán)體LoopWhile

循環(huán)條件格式2(直到型)

Do循環(huán)體

LoopUntil

循環(huán)條件循環(huán)條件循環(huán)體TrueFalse循環(huán)條件循環(huán)體False

True前測型循環(huán)是先判斷循環(huán)條件,循環(huán)體執(zhí)行次數(shù)≥0;后測型循環(huán)是先執(zhí)行循環(huán)體,循環(huán)體執(zhí)行次數(shù)≥1

。8.1Do循環(huán)單擊窗體,要求在窗體上顯示6行星號前測型當型循環(huán):將上面的代碼改為前測型直到型循環(huán)、后測型當型循環(huán)和后測型直到型循環(huán)。DimiAsInteger'定義計數(shù)器變量i來記錄目前已輸出的行數(shù)

i=0

DoWhile

i<6

'當輸出行數(shù)未達到6行,反復執(zhí)行下面語句

Print"****************"i=i+1

'每輸出一行信息,計數(shù)器i累加1

Loop

'返回到DoWhile行EndSub

DoUntil

i>5

Print"****************"i=i+1

Loop

Do

Print"****************"i=i+1

Loopwhile

i<6

Do

Print"****************"i=i+1

LoopUntili>5

Val(InputBox("請輸入行數(shù):"))注意:在循環(huán)體中,至少要有一條語句使得循環(huán)趨結(jié)束,使循環(huán)語句在有限的時間內(nèi)執(zhí)行完畢,否則將會出現(xiàn)“死循環(huán)”。例:求S=1+(1+2)+…+(1+2+3+…+100)的值。

編寫代碼:PrivateSubCommand1_Click()

DimsAsLong,nAsInteger,kAsIntegerLabel1.Caption="s=1+(1+2)+(1+2+3)+...(1+2+3+...100)=?"s=0:n=0:k=1

Don=n+k’求“小和”,即求s中的每一項的和。

s=s+n’求“大和”,即求s的累加和。

k=k+1’“大和”的項數(shù)(亦即“小和”中的末項值)。

LoopWhilek<=100Label2.Caption="s=1+(1+2)+(1+2+3)...+(1+2+3+...+100)="&sEndSub8.1

Do循環(huán)Untilk>1008.1Do循環(huán)設計采用歐幾里德算法求解兩個自然數(shù)的最大公約數(shù)的程序算法分析:“歐幾里德算法”①輸入兩個自然數(shù)m、n②求m除以n的余數(shù)r③m←n④n←r⑤若r≠0,則重復執(zhí)行②③④(循環(huán)),否則轉(zhuǎn)⑥⑥輸出m和n的最大公約數(shù)m輸入兩個自然數(shù)m,nr=mModnm=nn=rr<>0輸出最大公約數(shù)m開始結(jié)束FalseTrue8.1Do循環(huán)設計采用歐幾里德算法求解兩個自然數(shù)的最大公約數(shù)的程序界面設計:利用文本框來接收數(shù)據(jù)和顯示結(jié)果,利用命令按鈕的單擊事件完成最大公約數(shù)的計算。False輸入兩個自然數(shù)m,nr=mModnm=nn=rr<>0輸出最大公約數(shù)m開始結(jié)束TruePrivateSubCommand1_Click()

DimmAsInteger,nAsInteger,rAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)EndSubPrivateSubCommand2_Click()

Text1.Text=""Text2.Text=""Text3.Text=""EndSubPrivateSubCommand3_Click()

EndEndSubPrivateSubCommand1_Click()

DimmAsInteger,nAsInteger,rAsIntegerm=Val(Text1.Text)n=Val(Text2.Text)Dor=mModnm=nn=rLoopWhiler<>0Text3.Text=mEndSubPrivateSubCommand2_Click()

Text1.Text=""Text2.Text=""Text3.Text=""EndSubPrivateSubCommand3_Click()EndEndSub8.1Do循環(huán)設計一個小程序,能夠?qū)崿F(xiàn)接收若干的專家的考評打分,輸入-1表示打分結(jié)束,最后計算出平均考評分界面設計:由于要接收的數(shù)據(jù)無法預知其個數(shù),所以不適合利用文本框來接收數(shù)據(jù),所以采用輸入函數(shù)InputBox,結(jié)合循環(huán)實現(xiàn)利用窗體的單擊事件完成最大公約數(shù)的計算,并在窗體上而顯示結(jié)果輸入一個專家打分Mark總分累加Total=Total+Mark輸出平均考評分Average開始結(jié)束FalseTrue總考評分清零Total=0Mark<>-1輸入下一個專家打分MarkAverage=Total/Num考評分個數(shù)清零Num=0考評分個數(shù)累加Num=Num+1PrivateSubForm_Click()

DimTotalAsSingle,markAsSingle,averageAsSingleDimNumAsIntegerTotal=0:Num=0

mark=Val(InputBox("請輸入第"&Num+1&"個專家評分(-1表示結(jié)束輸入):"))DoWhilemark<>-1Total=Total+markNum=Num+1

mark=Val(InputBox("請輸入第"&Num+1&"個專家評分(-1表示結(jié)束輸入):"))Loopaverage=Total/NumMsgBoxNum&"個專家的平均分為:"&averageEndSub習題1.依次在輸入5、4、3、2、1、-1,輸出結(jié)果是?

PrivateSubCommand_Click()

X=0DoUntilx=-1a=Val(InputBox(“請輸入A的值”))b=Val(InputBox(“請輸入B的值”))x=Val(InputBox(“請輸入X的值”))a=a+b+xprintaLoopEndSub輸出兩個結(jié)果,分別是12和2習題2.依次在輸入5、4、3、2、1、-1,輸出結(jié)果為_______PrivateSubCommand_Click()

X=0DoUntilx=-1a=Val(InputBox(“請輸入A的值”))b=Val(InputBox(“請輸入B的值”))x=Val(InputBox(“請輸入X的值”))a=a+b+xLoopprintaEndSub輸出結(jié)果只有一個,23.運行下列程序,單擊窗體,則執(zhí)行結(jié)果是()

PrivateSubForm_Click()

s=0Dos=(s+1)*(s+2)Number=Number+1LoopUntils>=30PrintNumber;sEndSubA)01B)3030C)430D)3182習題4.運行下列程序,單擊窗體,則執(zhí)行結(jié)果是()

PrivateSubForm_Click()

b=1a=2DoWhileb<10b=2*a+bLoopPrintbEndSubA)13B)17C)21D)33習題習題5.運行下列程序,單擊窗體,則執(zhí)行結(jié)果是

PrivateSubForm_Click()

a=100Dos=s+aa=a+1LoopWhilea>111PrintaEndSub結(jié)果:a=1016.運行下列程序,單擊窗體,則執(zhí)行結(jié)果是_____PrivateSubForm_Click()

s=0i=1DoWhilei<=100If(i\5)*5=iThens=s+1i=i+1EndIfLoopPrintsEndSub結(jié)果:死循環(huán)習題7.運行下列程序,單擊窗體,則執(zhí)行結(jié)果是____PrivateSubForm_Click()

s=0i=1DoWhilei<=100If(i\5)*5=iThens=s+1EndIfi=i+1LoopPrintsEndSub結(jié)果:s=20習題8.2While循環(huán)語法格式:

While

循環(huán)條件

循環(huán)體

Wend這種結(jié)構使用完全類似于Do-Loop的當型循環(huán)(格式1),表示當循環(huán)條件為True時,反復執(zhí)行循環(huán)體,直到循環(huán)條件為False為止。例如:求S=1+(1+2)+…(1+2+…+100)的值。程序代碼:PrivateSubCommand_Click()Dimsaslong,nasInteger,kasIntegers=0:n=0:k=1Whilek<=100n=n+k:s=s+n:k=k+1WendLabel2.Caption=“1+(1+2)+…(1+2+…+100)=”&s語法格式如下:

For循環(huán)變量=初值to終值[step步長]

執(zhí)行語句

Next循環(huán)變量8.3For…Next循環(huán)Truei<=終值循環(huán)體Falsei=i+步長控制變量i=初值注意:步長可以為正、負,也可以是整數(shù)或小數(shù)。若省略,默認值為1。當步長為正數(shù)時,終值>初值;為負數(shù)時,終值<初值。Next表示循環(huán)控制變量取下一個值,即:i=i+步長For循環(huán)的循環(huán)次數(shù)由循環(huán)變量的初值、終值和步長決定:

Int((終值-初值)/步長)+1循環(huán)次數(shù)的一般計算公式:

Int((終值-初值)/步長)+1例如:ForI=2to18step3 c=c+1

NextI

上述For的循環(huán)次數(shù)

=Int((18-2)/3)+1=6第幾次循環(huán)I沒有進行循環(huán)時215283114145176208.3

For…Next語句循環(huán)次數(shù)的兩種特殊情況:初值、終值和步長表達式中所包含的變量在循環(huán)體內(nèi)被改變,也不會影響循環(huán)次數(shù)。8.3

For…Next語句例如:c=18

ForI=2tocstep3c=c+1

NextI第幾次循環(huán)cI未循環(huán)時2152831141451762018192021222324說明:代碼段中雖然變量c在循環(huán)體內(nèi)改變,但循環(huán)控制變量I的終值依舊為18,并未改變,因此循環(huán)次數(shù)=6當循環(huán)變量在循環(huán)體內(nèi)被重新賦值,則會影響和改變循環(huán)次數(shù)。8.3

For…Next語句例如:c=18

ForI=2to18step3c=c+1I=I+2

NextI說明:循環(huán)體中循環(huán)控制變量I被改變,循環(huán)次數(shù)由原來的6次變?yōu)?次。第幾次循環(huán)cI未循環(huán)時21429314419181920212271217228.3For…Next循環(huán)For循環(huán)實現(xiàn):單擊窗體,要求在窗體上顯示6行星號分析:循環(huán)體:Print"****************",循環(huán)變量I表示輸出行,從1變化到6,即循環(huán)變量I的初值為1,終值為6,步長為1,循環(huán)次數(shù)為6PrivateSubForm_Click()DimIAsInteger'定義一個循環(huán)變量I來控制輸出的行數(shù)

'當輸出行數(shù)沒有超過6行,就反復執(zhí)行下面的語句ForI=1To6'步長為1,可省略Step1Print"****************"NextI'完成I根據(jù)步長完成遞增,即I=I+1,并返回到For行EndSub習題1.PrivateSubForm_Click()ForI=7to90step5printINextIEndSub上述程序共執(zhí)行執(zhí)行循環(huán)體的次數(shù)是()

A)14B)15C)16D)172.在窗體上放置一個命令按鈕,然后編寫如下事件過程:

PrivateSubCommand1_Click()x=5Fori=1to20Step2x=x+i\5NextiPrintxEndSub程序運行后,單擊命令按鈕,輸出結(jié)果為()A)21B)22C)23D)24習題3.運行下列程序,單擊窗體,則執(zhí)行結(jié)果是()

PrivateSubForm_Click()E=1:F=1Forj=1To3E=E+F:F=F+ENextj PrintE;FEndSubA)66B)58C)1321D)3455習題4.運行下列程序,單擊窗體,則執(zhí)行結(jié)果是()

PrivateSubForm_Click()Forj=1To15a=a+jMod3NextjPrintaEndSubA)1B)15C)90D)120習題5.運行下列程序,單擊窗體,則執(zhí)行結(jié)果是()

PrivateSubForm_Click()Forj=1To3PrintTab(3*j);(2*j-1)*(2*j-1)NextjPrintEndSubA)B)

C)D)

;?若print語句后有分號,將如何輸出有分號的輸出結(jié)果習題6.運行下列程序,單擊窗體,則執(zhí)行結(jié)果是()

PrivateSubForm_Click()Forj=1To10a=a+j\3+jMod3NextjPrintaEndSubA)20B)25C)30D)35習題8.4循環(huán)嵌套無論是Do循環(huán),還是For-Next循環(huán),都可以在大循環(huán)中套小循環(huán)以嵌套方式使用,而且允許不同類型的循環(huán)相互嵌套使用。嵌套的層數(shù)沒有具體限制,但必須注意:每一個循環(huán)必須有一個唯一的循環(huán)控制變量(不能同名);內(nèi)層的小循環(huán)一定要完整地被包含在外層的大循環(huán)之內(nèi),不得相互交叉。Fori=1To9

Forj=1To9

循環(huán)體

NextjNexti8.4循環(huán)嵌套用循環(huán)實現(xiàn)打印九九乘法表。PrivateSubform_Click()

Fori=1To9Forj=1ToiPrinti&"*"&j&"="&i*j&""NextjNextiEndSub8.4循環(huán)嵌套用循環(huán)實現(xiàn)打印九九乘法表。PrivateSubform_Click()

Fori=1To9Forj=1ToiPrinti&"*"&j&"="&i*j&"";NextjNextIEndSub8.4循環(huán)嵌套用循環(huán)實現(xiàn)打印九九乘法表。PrivateSubform_Click()

Fori=1To9Forj=1ToiPrinti&"*"&j&"="&i*j&"";NextjPrintNextIEndSub8.4循環(huán)嵌套用循環(huán)實現(xiàn)打印九九乘法表。PrivateSubform_Click()

Fori=1To9Forj=1ToiPrintTab((j-1)*7+2);i&"*"&j&"="&i*j&"";NextjPrintNextIEndSub常用算法介紹累加累乘迭代法素數(shù)問題窮舉法求最大值或最小值問題例題:求1+2+3…+n分析:求多項數(shù)據(jù)之和,首先得設置一個累加器sum,存放累加結(jié)果。根據(jù)一般人們求和的步驟,多個數(shù)據(jù)累加的過程如下:sum=0sum=sum+1sum=sum+2sum=sum+3……sum=sum+n累

加求多項數(shù)據(jù)之和,整個累加過程一直在重復執(zhí)行sum=sum+i,一共重復n次。例題:求1+2+3…+n程序代碼設計:累

加PrivateSubForm_Click()DimsumAsInteger,iAsIntegern=Val(InputBox("請輸入累加的終值n:"))sum=0'累加器清零

Fori=1Ton sum=sum+i'累加

NextiPrint"1+...+";n;"=";sumEndSub求1~n之間所有的偶數(shù)之和例題:求10!程序代碼設計:累

乘PrivateSubForm_Click()

DimxAsLongx=1Fori=1To10x=x*iNextiMsgBox"10!的值為:"&xEndSub求最大值或最小值問題求班級學生某一門課成績的最高分這就是一個求最大值的問題。先假設第一個成績就是班級最高分,然后從第二個成績開始依次與假設的最高分比較,若有高于它的,則更新最高分,否則繼續(xù)下一個成績的比較,直至最后一個成績

PrivateSubform_Click()

DimgradeAsSingleMax=0Fori=1To2'假設班級人數(shù)為20人grade=Val(InputBox("請輸入第"&i&"個學生的成績:"))Ifgrade>MaxThenMax=gradeNextiPrintPrint"最高分為";MaxEndSub迭代法求多項式的值,直到最后一項

的絕對值小于10-6

分析:方案2:迭代法——通過找出前后累加項之間的關聯(lián),在前一次累加項的基礎上遞推出后一個累加項,從而實現(xiàn)t的構造迭代法求多項式的值,直到最后一項

的絕對值小于10-6PrivateSubForm_Click()

n=1:t

溫馨提示

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

評論

0/150

提交評論