版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
VisualBasic程序設計教程2第四章基本的控制結(jié)構(gòu)4.1順序結(jié)構(gòu)4.2選擇結(jié)構(gòu)和控件4.4循環(huán)結(jié)構(gòu)4.5其它控制語句和控件4.6綜合應用4.7程序調(diào)試本章目錄3VB具有結(jié)構(gòu)化程序設計的三種程序控制結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),是程序設計的基礎。本章目錄(1)順序結(jié)構(gòu)
各語句按出現(xiàn)的先后次序執(zhí)行bABa用傳統(tǒng)流程圖表示為引言4(2)選擇結(jié)構(gòu)傳統(tǒng)流程圖:條件?AB不成立成立根據(jù)條件決定執(zhí)行的語句5(3)循環(huán)結(jié)構(gòu)I、當型循環(huán)結(jié)構(gòu)
條件?成立循環(huán)體不成立循環(huán)體不成立成立條件?II、直到型循環(huán)結(jié)構(gòu)
根據(jù)條件重復執(zhí)行語句(稱為循環(huán)體)64.1順序結(jié)構(gòu)本章目錄4.1.1引例例4.1華氏溫度與攝氏溫度之間轉(zhuǎn)換。要求:已知華氏溫度,轉(zhuǎn)換成攝氏溫度;同樣,已知攝氏溫度,轉(zhuǎn)換成華氏溫度;
換顯示保留兩位小數(shù)。華氏溫度與攝氏溫度之間轉(zhuǎn)換的公式是:
程序運行不管輸入攝氏溫度C多少,顯示結(jié)果華氏溫度始終不變,原因?計算機始終按照人安排的順序執(zhí)行代碼Dimf!,c!f=9/5*c+32c=Val(Text1.Text)Text2.Text=Format(f,"0.00")c=Val(Text1.Text)f=9/5*c+327
一般程序設計語言中順序結(jié)構(gòu)的常用簡單語句:
賦值語句和輸入/輸出語句等。在VB中
賦值語句
輸入/輸出通過:
文本框控件、標簽控件、
InputBox函數(shù)、MsgBox函數(shù)
Print方法84.1.2賦值語句作用:計算表達式的值,再將此值賦給變量或?qū)ο髮傩?。例如?/p>
x!=0.1‘x為單精度變量,獲得值0.1Text1.Text=""'清除文本框的內(nèi)容
Text1.Text="歡迎使用VB.Net"本章目錄形式:變量名=表達式對象名.屬性名=表達式9賦值語句注意點
“=”符號有兩個意義
賦值號、關(guān)系運算符等號形式相同,系統(tǒng)會根據(jù)所處的位置判斷符號意義。賦值號左邊只能是變量,不能是常量、常數(shù)符 號、表達式。下面均為錯誤的賦值語句:Now()=x+y'左邊是表達式(函數(shù))5=sqr(s)+x+y'
左邊是常量x+y=z '
左邊是表達式本章目錄10常用賦值語句形式
累加sum=sum+x計數(shù)
n=n+1本章目錄賦值號兩邊類型不同時的處理
①當兩邊精度不同時,表達式的值會轉(zhuǎn)換成左邊變量的精度。②當表達式是數(shù)字字符串,左邊是數(shù)值類型,自動轉(zhuǎn)換成數(shù)值類型再賦值,當表達式有非數(shù)字字符或空串,則出錯。③邏輯型賦值給數(shù)值型時,True轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0; 反之當數(shù)值型賦值給邏輯型時,非0轉(zhuǎn)換為True,0為False。④任何非字符類型賦值給字符類型,自動轉(zhuǎn)換為字符類型。
11形式:變量=InputBox(提示[,標題][,默認值])4.1.3數(shù)據(jù)輸出和輸入本章目錄
注意:提示項不能省略。若要多行提示,可在每行行末加回車換行vbCrLf。例4.2利用InputBox輸入基本工資和營業(yè)額,按營業(yè)額的5%提成,計算實發(fā)工資并顯示。
作用:打開一個對話框,等待用戶輸入,返回字符 串類型的輸入值。1.InputBox函數(shù)12作用:打開信息框,等待用戶選擇一個按鈕。
MsgBox函數(shù)返回所選按鈕的整型值,
變量=MsgBox(提示[,按鈕][,標題])
MsgBox過程無返回值,獨立的語句:
MsgBox
提示[,按鈕][,標題]2.MsgBox函數(shù)和過程本章目錄按鈕:決定信息框按鈕的數(shù)目、名稱及圖標。返回結(jié)果:返回所按的按鈕值此兩項均為整型表達式13MsgBox按鈕設置本章目錄14MsgBox所選按鈕返回值
例4.3編一賬號和密碼輸入的檢驗程序,當輸入不正確,如賬號為非數(shù)字字符,密碼不正確等,顯示有關(guān)信息,再輸入。本章目錄153.Print方法形式:[對象.]Print[定位函數(shù)][輸出表達式列表][分隔符]作用:在窗體、圖形框輸出信息,缺省對象為窗體Write輸出后不換行定位函數(shù):Spc(n)
用于在輸出時插入n個空格;
Tab(n)
定位于從對象最左端算起的n列。
輸出表達式列表:用逗號分隔;缺省輸出空行。分隔符:“;”不換行;缺省換行例4.4使用Print方法輸出圖形。16順序結(jié)構(gòu)要點掌握計算機按照語句出現(xiàn)的先后順序執(zhí)行掌握賦值語句掌握InputBox輸入數(shù)據(jù)掌握MsgBox對話框顯示信息和按鈕的作用掌握Print方法完成實驗二、順序結(jié)構(gòu)174.2選擇結(jié)構(gòu)和控件計算機要處理的問題往往是復雜多變的,僅采用順序結(jié)構(gòu)是不夠的。必須利用選擇結(jié)構(gòu)等來解決實際應用中的各種問題。VB中主要通過If條件語句和Select情況語句來實現(xiàn)。它們都是對條件進行判斷,根據(jù)判斷結(jié)果,選擇執(zhí)行不同的分支。本章目錄例1.1移動到窗體邊界判斷If(Label1.Top>Height)ThenLabel1.Top=0184.2.1If條件語句1.If…Then語句(單分支結(jié)構(gòu))
If<表達式>Then
語句塊
EndIf或
If<表達式>Then<語句>表達式:算術(shù)、關(guān)系、邏輯表達式。語句塊:可以是一句或多句語句表達式值:按非零為True,零為False進行判斷。本章目錄作用:當表達式值為True,執(zhí)行Then后面的語句塊 否則不做任何操作。19例:已知兩個數(shù)x和y,比較它們的大小,使得x大于y。
Ifx<yThent=xx=yy=tEndIf或Ifx<yThent=x:x=y:y=t本章目錄注意:簡單If形式無EndIf時,只能是一句語句或語句間用冒號分隔,而且必須在一行上書寫。20雙分支結(jié)構(gòu)2.If…Then…Else語句If表達式
Then
語句塊1Else
語句塊2EndIf或If
表達式
Then
語句1
Else
語句2
本章目錄作用:當表達式的值為True時,執(zhí)行Then后面 的語句塊1,否則執(zhí)行Else后面的語句塊2
21雙分支結(jié)構(gòu)例計算分段函數(shù)
Ifx<>0Then
雙分支
y=sin(x)+sqr(x*x+1)Else結(jié)構(gòu)實現(xiàn)
y=cos(x)-x^3+3*xEndIf本章目錄
單分支
y=cos(x)-x^3+3*x結(jié)構(gòu)實現(xiàn)Ifx<>0Theny=sin(x)+sqr(x*x+1)
思考如下單分支結(jié)構(gòu)能實現(xiàn)?Ifx<>0Theny=sin(x)+sqr(x*x+1)
y=cos(x)-x^3+3*x22多分支結(jié)構(gòu)3.If…Then…ElseIf語句
形式:
If表達式1Then
語句塊1
ElseIf表達式2Then
語句塊2 …
[Else
語句塊n+1]
EndIf作用:根據(jù)不同的表達式值確定執(zhí)行哪個語句塊本章目錄說明:
不管有幾個分支,依次判斷,當某條件滿足,執(zhí)行相應的語句,其余分支不再執(zhí)行;若條件都不滿足,且有Else子句,則執(zhí)行該語句塊,否則什么也不執(zhí)行。
ElseIf不能寫成
ElseIf23例4.8已知變量ch中存放了一個字符,判斷該字符是字母字符、數(shù)字字符還是其他字符。
多分支結(jié)構(gòu)例本章目錄IfUCase(ch)>="A"AndUCase(ch)<="Z"Then
MsgBox(ch+“是字母字符”)
'考慮大小寫字母
ElseIfch>="0"Andch<="9"Then
'數(shù)字字符
MsgBox(ch+"是數(shù)字字符")
Else
'除上述字符以外的字符
MsgBox(ch+"是其他字符")
EndIf244.2.2SelectCase語句SelectCase變量或表達式
Case表達式列表1
語句塊1
Case
表達式列表2
語句塊2 …[CaseElse
語句塊n+1]EndSelect表達式列表與變量或表達式的類型必須相同,是下面4種形式之一:表達式例:"A"用逗號分隔的枚舉值2,4,6,8表達式1To表達式260To100Is關(guān)系運算符表達式Is<60本章目錄25SelectCase語句例例4.10
將例4.8改用SelectCase
語句實現(xiàn):
本章目錄SelectCasech Case"a"To"z","A"To"Z" MsgBox(ch+"是字母字符") Case"0"To"9" MsgBox(ch+"是數(shù)字字符") CaseElse MsgBox(ch+"是其他字符")EndSelectSelectCase語句比If…Then…ElseIf語句直觀,程序可讀性強。但不是所有的多分支結(jié)構(gòu)均可用SelectCase語句代替If…Then…ElseIf語句。26SelectCase語句例例4.11已知坐標點(x,y),判斷其落在哪個象限。代碼一
Ifx>0Andy>0ThenMsgBox("在第一象限")ElseIfx<0Andy>0ThenMsgBox("在第二象限") ElseIfx<0Andy<0ThenMsgBox("在第三象限") ElseIfx>0Andy<0ThenMsgBox("在第四象限") EndIf
代碼二SelectCasex,yCasex>0Andy>0MsgBox(“在第一象限”)Casex<0Andy>0MsgBox(“在第二象限”)Casex<0Andy<0MsgBox(“在第三象限”)Casex>0Andy<0MsgBox(“在第四象限”)EndSelect代碼二錯誤:1.SelectCase后不能出現(xiàn)多個變量;2.Case后不能出現(xiàn)變量及有關(guān)運算符。本章目錄小結(jié):1.SelectCase語句雖然簡潔,但使用有限制2.雖然If語句條件復雜時書寫不直觀,但是萬能的27If語句的嵌套是指If或Else后面的語句塊中又包含If語If表達式1Then
If表達式2Then…EndIf
…EndIfIf語句的嵌套例4.12
已知x,y,z三個數(shù),使得x>y>z用一個IF語句和一個嵌套的IF語句實現(xiàn)本章目錄Ifx<yThent=x:x=y:y=tIfy<zThent=y:y=z:z=tIfx<yThent=x:x=y:y=tEndIfEndIfX<y?X與y交換y<z?X<y?y與z交換X與y交換TTTFFFx>y>zx≥zz最小F284.2.3條件函數(shù)(1)IIf函數(shù)
IIf(表達式,表達式為真時的值,表達式為假時的值)IIf函數(shù)是If
…
Then
…Else
結(jié)構(gòu)的簡潔表示本章目錄例如,將x,y中大的數(shù),放入Tmax變量中:
Tmax=IIf(x>y,x,y)
該語句與如下語句等價:
Ifx>yThenTmax=xElseTmax=y294.2.3條件函數(shù)(2)Choose函數(shù)
Choose(整數(shù)表達式,選項列表)根據(jù)表達式的值i,返回選項列表中第i個選項。如果整數(shù)表達式的值越出選項范圍時,返回Null例根據(jù)Nop的值,得到+、-、×、÷中的某運算符:
Op=Choose(Nop,"+","-","×","÷")
本章目錄DimnopAsInteger,opAsCharRandomize()nop=Int(Rnd()*4+1)op=Choose(nop,"+","-","×","÷")MsgBox("nop="&nop&"op="&op)例4.13根據(jù)當前日期,顯示今日是星期幾。t=Choose(Weekday(Now),“星期日”,“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”)MsgBox("今天是:"&Now&t)304.2.5選擇控件與分組控件
1.單選按鈕()
單選按鈕以組的形式出現(xiàn),允許選擇一項。
例單選題測試(1)主要屬性
Caption屬性按鈕上顯示的文本
Value屬性表示單選按鈕的狀態(tài):
本章目錄OptionButton(2)主要事件
Click
單擊后使Value屬性為True31一組選項,允許用戶選擇其中一個或多個例多選題測試(1)主要屬性和事件
與單選有相同的屬性和事件,Value屬性類型和值不同:
0——vbUnchecked未選定
1——vbChecked被選定
2——vbGrayed灰色,部分被選定2.復選框()本章目錄323.框架()需要在同一個窗體中建立幾組相互獨立的單選或復選按鈕;具有容器功能。先建立框架控件,然后將各控件放置其中。本章目錄特性:移動、復制、刪除框架,對控件進行Enabled、Visible屬性設置,均作用于框架內(nèi)控件。
主要屬性:Caption框架的標題,無則封閉框線。事件:一般不需要編寫事件過程。Frame33例4.14通過單選按鈕和分組控件設置文本框的Font屬性。實現(xiàn)分析:(1)每個控件都有Click事件:對單選作對應的字體或字號設置;對于復選框因字型是邏輯類型,進行取反設置。(2)也可以加以個Command1按鈕,均在該事件內(nèi)判斷和設置。例4.15選課
34選擇結(jié)構(gòu)要點掌握If語句多種分支形式的正確書寫與使用掌握SelectCase語句的正確書寫與使用掌握單選按鈕、復選框和框架控件的使用完成實驗三、選擇結(jié)構(gòu)
354.3循環(huán)結(jié)構(gòu)計算機最擅長的功能之一:
按規(guī)定的條件,重復執(zhí)行某些操作。4.3.1引例—求π的近似值祖沖之用了15年算出π值到小數(shù)點后面7位;第一臺計算機計算到2000多位1999年東京大學2061.5843億本章目錄例4.16驗證祖沖之有效位7位的計算求π/4=1-1/3+1/5-1/7+1/9…關(guān)鍵找規(guī)律寫通項36VB中提供了主要的兩類循環(huán)語句:
for語句(一般已知循環(huán)次數(shù));
Do語句(一般未知循環(huán)次數(shù))。374.3.2For循環(huán)語句For循環(huán)語句用于控制循環(huán)次數(shù)預知的循環(huán)結(jié)構(gòu)。For循環(huán)變量=初值To終值
[Step步長]
語句塊
[ExitFor]
語句塊Next循環(huán)變量循環(huán)變量必須為數(shù)值型。
>0初值<終值=1時,可省略<0初值>終值=0死循環(huán)步長例4.17計算1~100和
本章目錄Dimi%,sum%Fori=1To100Step1sum=sum+iNextiPrintsum循環(huán)次數(shù)38Sum=0fori=1To100Step2sum=sum+iNextiMsgBox(sum)
Sum=0i=1Re:Ifi<=100Thensum=sum+Ii=i+2GoToReEndIfMsgBox(sum)計算1~100的奇數(shù)和
分別用for、If語句實現(xiàn)循環(huán),理解for語句執(zhí)行過程39for循環(huán)語句循環(huán)流程:(1)循環(huán)變量被賦初值,它僅被賦值一次。(2)判斷循環(huán)變量是否在終值內(nèi)?如果是,執(zhí)行循環(huán)體;如果否,結(jié)束循環(huán),執(zhí)行Next的下一語句。(3)循環(huán)變量加步長,轉(zhuǎn) (2),繼續(xù)循環(huán)本章目錄40例4.18將可打印的ASCII碼制成表格輸出實現(xiàn)思路:
1.循環(huán)的初值、終值;
2.字符和碼值關(guān)系;
3.控制每項占用位數(shù)(Tab
函數(shù));
4.控制每行輸出個數(shù).
8*i+2414.3.3Do…Loop循環(huán)語句形式1:Do{While|Until}<條件>
語句塊
[ExitDo
語句塊]Loop形式2:Do
語句塊
[ExitDo
語句塊]Loop{While|Until}<條件>本章目錄形式1為先判斷后執(zhí)行,有可能一次也不執(zhí)行;形式2為先執(zhí)行后判斷,至少執(zhí)行一次。42Do…Loop流程本章目錄43
直接利用標準函數(shù)問題:1)但求得的年數(shù)不為整數(shù)
2)得不到實際人數(shù)利用循環(huán)求得
上述兩個問題解決了循環(huán)例題例4.19我國有13億人口,按人口年增長0.8%計算,多少年后我國人口超過26億。解此問題兩種方法:
本章目錄44循環(huán)例題例4.20用輾轉(zhuǎn)相除法求兩自然數(shù)的最大公約數(shù)。求最大公約數(shù)的算法思想:例m=14,n=6
的最大公約數(shù)Ifm<nThent=m:m=n:n=tr=mmodnDoWhile(r<>0)m=nn=rr=mmodnLoopMsgBox“最大公約數(shù)=”&n(1)對于兩數(shù)m,n,使得m>n(2)m除以n得余數(shù)r(3)若r≠0,則:
m?n,n?r,再重復執(zhí)行(2)
否則n為最大公約數(shù),結(jié)束本章目錄輾轉(zhuǎn)相減法
m=m-nm>nn=n-mn>m
m、n為公約數(shù)m=nDoWhilem<>nmn
Ifm>nThen146m=m–n86Else26n=n–m24EndIf22Loop454.3.4循環(huán)的嵌套
在一個循環(huán)體內(nèi)又包含了一個完整的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套。循環(huán)嵌套對for語句和Do…Loop語句均適用。例4.21
打印九九乘法表本章目錄思考:打印上三角或下三角程序如何改動?464.4其他控制語句和控件4.4.1GoTo
語句
無條件地轉(zhuǎn)移到標號或行號指定的那行語句。
GoTo{標號|行號}本章目錄代碼說明注意:標號符合標識符規(guī)定;
行號是一個數(shù)字序列;轉(zhuǎn)向的入口處標號或行號應有冒號。47例4.22判斷輸入的數(shù)是否為素數(shù)定義:素數(shù)就是除1和本身以外,不能被其他任何整數(shù)整除的數(shù)。算法:m依次用i=2~m-1去除,只要有一個數(shù)能整除m,m就不是素數(shù);否則m是素數(shù)。思考:要求一定范圍內(nèi),如100~200的素數(shù),程序如何修改?
本章目錄注意:Goto不符合結(jié)構(gòu)化程序設計的規(guī)定改進:增加邏輯型變量Tag,用以判斷是否被整除過例4.23484.4.2Exit和End語句1.Exit語句
VB中有多種形式的Exit語句,用于退出某種控制結(jié)構(gòu)的執(zhí)行。Exit的形式如下:
Exitfor、ExitDo本章目錄492.End語句
獨立的End語句用于結(jié)束一個程序的運行,它可以放在任何事件過程中。與其他控制結(jié)構(gòu)關(guān)鍵字配套的End語句
用于結(jié)束一個控制語句或過程或塊,相當于語句括號。End語句的多種形式如下:
EndIf、EndSelect、EndWith、
EndType、EndFunction、EndSub本章目錄504.4.3滾動條、進度條和定時器1.滾動條(ScrollBar)
用于數(shù)據(jù)輸入工具,也可顯示數(shù)據(jù)。滾動條有水平(H)和垂直(V)兩種。本章目錄Value
滑塊當前位置的值(缺省為0)Min
滑塊最小位置值(缺省為0)Max
滑塊最大位置值(缺省為32767)SmallChange單擊滾動條兩端的箭頭時,Value屬性(滑 塊位置)改變值LargeChange單擊滾動條的空白區(qū)域時,Value屬性改變值51主要事件Scroll
當拖動滑塊時觸發(fā)
Chang
改變Value屬性時觸發(fā)例4.24設計一個調(diào)色板應用程序。設計思想:三個滾動代表三種基本顏色的輸入工具本章目錄注意:任意一個顏色改變均為影響合成的顏色,因此用共享事件來簡化編程。522.進度條(ProgressBar)
用來指示事務處理的進度,顯示的填充數(shù)主要屬性:
Max、Min、Value(執(zhí)行階段被填充的數(shù)目)
編程使用方法:確定Min、Max值。例如果正在下載文件,Max
值為文件的字節(jié)數(shù)。變化的Value值,使得進度條變化。例在該文件下載過程中,Value的值為當前已下載的字節(jié)數(shù)。例4.25設計帶有進度條的倒計時程序
533.定時器(Timer)
定時器以一定的時間間隔產(chǎn)生Timer事件屬性Enabled
為False時定時器不產(chǎn)生Timer事件Interval
觸發(fā)Timer事件的時間間隔,單位ms
事件定時器控件只有一個Timer
產(chǎn)生Tick事件條件:Enabled=True
Interval>0例4.26用一個定時器控制蝴蝶在窗體內(nèi)的飛舞
本章目錄思考:如何控制飛的速度、如何控制飛的每次距離?如果飛的過程有三個狀態(tài)又如何編程?54循環(huán)結(jié)構(gòu)要點掌握For循環(huán)語句的正確書寫與使用掌握Do循環(huán)語句的正確書寫與使用掌握滾動條、進度條
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智慧社區(qū)工程質(zhì)量保證合同3篇
- 2025年度物業(yè)服務合同:某小區(qū)物業(yè)管理公司提供物業(yè)服務協(xié)議3篇
- 二零二五年度廢舊農(nóng)業(yè)機械買賣及保養(yǎng)維修合同3篇
- 二零二五年度水利工程供水供電安全保障合同3篇
- 2025年度生豬銷售與冷鏈倉儲物流服務合同3篇
- 海南體育職業(yè)技術(shù)學院《組成原理與接口技術(shù)》2023-2024學年第一學期期末試卷
- 翻譯專家課程設計
- 運營環(huán)境插畫課程設計
- 2025年初中秋季開學典禮校長講話稿樣本(3篇)
- 二零二五年度攪拌車運輸項目合作框架協(xié)議
- 整合營銷策劃-標準化模板
- 物業(yè)前期介入與承接查驗要點精講培訓
- 四川省廣元市2022-2023學年八年級上學期語文期末試卷(含答案)
- 抗震支吊架-檢驗批質(zhì)量驗收記錄
- 【APP違規(guī)收集個人信息的法律問題分析9800字(論文)】
- 商品房預售合同簽約證明和預告登記申請書
- 質(zhì)量管理體系成熟度評估表
- 單體調(diào)試及試運方案
- 2023-2024學年浙江省杭州市城區(qū)數(shù)學四年級第一學期期末學業(yè)水平測試試題含答案
- 五星級酒店市場調(diào)研報告
- 車輛剮蹭私下解決協(xié)議書(3篇)
評論
0/150
提交評論