第四章基本的控制結(jié)構(gòu).ppt_第1頁
第四章基本的控制結(jié)構(gòu).ppt_第2頁
第四章基本的控制結(jié)構(gòu).ppt_第3頁
第四章基本的控制結(jié)構(gòu).ppt_第4頁
第四章基本的控制結(jié)構(gòu).ppt_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第四章 基本的控制結(jié)構(gòu),在前面的事件過程代碼中,我們發(fā)現(xiàn),和傳統(tǒng)的程序設(shè)計(jì)語言一樣,VB也離不開結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu),它們是程序設(shè)計(jì)的基礎(chǔ)。 4.1 順序結(jié)構(gòu) 順序結(jié)構(gòu)就是各語句按出現(xiàn)的先后次序執(zhí)行。一般的程序設(shè)計(jì)語言中,順序結(jié)構(gòu)語言都是由一些賦值語句、輸入/輸出語句等構(gòu)成,VB也不例外。 一、輸出數(shù)據(jù)的基本方法 1、通過Print方法輸出到窗體和圖形框 Print方法的完整格式為: 對(duì)象.Print Spc(n) | Tab(n) expression charpos 其中: 對(duì)象:可為窗體、圖形框或打印機(jī)。省略時(shí)為當(dāng)前窗體。 Expression:要輸出的數(shù)值表達(dá)式或字符串表達(dá)式。

2、多個(gè)表達(dá)式之間要用空格、分號(hào)或逗號(hào)分開。,Charpos:逗號(hào)或分號(hào),指定下個(gè)字符的輸出點(diǎn)。如果省略,則在下一行輸出下一字符。 分號(hào):表示光標(biāo)定位在上一個(gè)顯示的字符后面; 逗號(hào):表示光標(biāo)定位在下一個(gè)打印區(qū)的開始處。一個(gè)打印區(qū)為14列。 Tab(n):VB的標(biāo)準(zhǔn)函數(shù),用于對(duì)輸出字符的定位。用法為: 把顯示或打印的的字符的位置移到參數(shù)n指定的列數(shù),從此列開始輸出數(shù)據(jù)。要輸出的內(nèi)容放在Tab函數(shù)后面,并用分號(hào)隔開;如果當(dāng)前行上的打印位置大于n,則Tab將打印位置移動(dòng)到下一個(gè)輸出行的第n列上,如果n小于1,則將打印位置移動(dòng)到列1。(輸出行最左端的打印位置總是1) 當(dāng)在一個(gè)Print方法中有多個(gè)Tab函

3、數(shù)時(shí),每個(gè)Tab函數(shù)對(duì)應(yīng)一個(gè)輸出項(xiàng),個(gè)輸出項(xiàng)之間用分號(hào)隔開。 如: Private Sub Form_Click() Print Visual Basic; 6.0 Print Tab(5); VB; Tab(8); VB6.0 End Sub,Spc(n):VB標(biāo)準(zhǔn)函數(shù),其作用是在顯示或打印列表中的下一個(gè)表達(dá)式之前插入n個(gè)空格。使用時(shí)spc函數(shù)與輸出項(xiàng)之間用分號(hào)隔開。 如: Private Sub Form_Click() Print Visual Basic; 6.0 Print Tab(5); VB; Tab(8); VB6.0 Print Visual; Spc(5); basic;

4、Spc(8); 6.0 End Sub 注意:Tab函數(shù)從對(duì)象的左端開始記數(shù),而Spc函數(shù)只表示兩個(gè)輸出項(xiàng)之間的間隔。,例:分析以下程序 Private Sub Form_Click( ) Print Print For j = 1 To 5 Print Tab(j); String(6 - j, ); Spc(6); String(j, ) Next j End Sub 本例也可以輸出到一圖形框,只需在Print加上對(duì)象名Picture1即可。,2、通過標(biāo)簽輸出數(shù)據(jù) 通過標(biāo)簽輸出數(shù)據(jù)是利用標(biāo)簽的Caption屬性值來實(shí)現(xiàn)的。見下例:,Private Sub Command1_Click()

5、Label3.Caption = 2 * (Text1.Text) 2 End Sub,3、使用MsgBox()函數(shù)或MsgBox過程 作用:打開一個(gè)對(duì)話框,等待用戶選擇一個(gè)按鈕。 MsgBox()函數(shù)用法如下: 變量=MsgBox(提示,按鈕,標(biāo)題) MsgBox 過程用法如下: MsgBox 提示,按鈕,標(biāo)題 二者的區(qū)別:需要返回值時(shí)用函數(shù),僅為了顯示信息時(shí)用過程 其中: “提示”:不能省,是字符串表達(dá)式,可為漢字。若要多行顯示,必須在每行行末加回車chr(13)和換行chr(10)或直接使用VB內(nèi)部變量vbCrLf。 “標(biāo)題”:字符串表達(dá)式,在對(duì)話框的標(biāo)題欄顯示。 “按鈕”:整形表達(dá)式,

6、決定對(duì)話框中按鈕的數(shù)目和類型及出現(xiàn)在對(duì)話框上的圖形類型。具體見P77,例1:單擊窗體,出現(xiàn)如下對(duì)話框:,例2:單擊窗體,出現(xiàn)如下對(duì)話框:,例3:單擊窗體,出現(xiàn)如下對(duì)話框:,二、輸入數(shù)據(jù)的基本方法 1、使用賦值語句 格式1:變量名=表達(dá)式 格式2:對(duì)象名.屬性名=表達(dá)式 使用賦值語句時(shí)應(yīng)注意: 1)語句格式要正確 賦值號(hào)左邊只能是變量名,不能是函數(shù)或表達(dá)式 如下面形式是錯(cuò)誤的: cos(x)=y 5=y X+3=y,不能在同一個(gè)賦值語句中給多個(gè)變量賦值 如寫成:x=y=z=1 就是錯(cuò)誤的,而應(yīng)該寫成: x=1: y=1: z=1 2)數(shù)據(jù)類型問題 當(dāng)賦值號(hào)左邊變量類型與右邊表達(dá)式類型不一致時(shí),分

7、下面三種情況: 若均為數(shù)值型,而類型不同時(shí),以變量類型為準(zhǔn); 當(dāng)變量為數(shù)值型,而表達(dá)式為數(shù)字字符串,則自動(dòng)轉(zhuǎn)換成數(shù)值型再賦值。當(dāng)表達(dá)式中有非數(shù)字字符或是空字符串時(shí),出現(xiàn)“類型不匹配”; 任何非字符類型賦值給字符型變量時(shí),均自動(dòng)轉(zhuǎn)換為字符,2、使用InputBox( )函數(shù) InputBox( )函數(shù)可以彈出一個(gè)對(duì)話框接收用戶從鍵盤輸入的信息。使用格式為: 變量名= InputBox( 提示信息,標(biāo)題,默認(rèn)值,X坐標(biāo),Y坐標(biāo)) 其中: 提示信息、標(biāo)題:含義同MsgBox( ); 變量:用于接收輸入信息。由于該函數(shù)的返回值是字符串,故要接收數(shù)值型數(shù)據(jù)時(shí),需要用Val( )函數(shù)進(jìn)行轉(zhuǎn)換; 默認(rèn)值:指

8、明當(dāng)在輸入對(duì)話框中無輸入時(shí),則將該值作為輸入內(nèi)容; X坐標(biāo)與Y坐標(biāo):指定對(duì)話框的位置(相對(duì)與屏幕左上角),若忽略,則出現(xiàn)在屏幕中央。 此外,各參數(shù)次序必須一一對(duì)應(yīng),除了“提示”一項(xiàng)不能省略外,其余各項(xiàng)均可省略,但處于中間的默認(rèn)部分要用逗號(hào)占位符跳過。,例:單擊窗體,產(chǎn)生一個(gè)如下的輸入對(duì)話框:,又例:分析以下代碼的作用 Dim Strname as string *40 Dim Strs1 as string *40 Strs1=“請(qǐng)輸入你的姓名”+chr(13)+chr(10)+”然后單擊確定” Strname=InputBox(strs1,”輸入框”, ,100,100) Print str

9、name,4.2 選擇結(jié)構(gòu) VB中提供了各種形式的條件語句來實(shí)現(xiàn)選擇結(jié)構(gòu)。即對(duì)條件進(jìn)行判斷,根據(jù)判斷結(jié)果,選擇執(zhí)行不同的分支。下面分別介紹。 一、if條件語句 1、If .Then語句(單分支結(jié)構(gòu)) 形式 :(1) If Then End if (2) If Then 這是最簡單的if語句,不多講,2、If.Then.Else語句(雙分支結(jié)構(gòu)) 形式: (1) If Then Else End if (2) If Then Else 例:下面的事件過程判斷輸入數(shù)的奇偶性,并根據(jù)判斷的結(jié)果輸出文字信息。,Private Sub cmd1_Click ( ) Dim int1 As Integer

10、,int2 As Integer int1=Cint(txt1.text) int2=int1 Mod 2 if int2=0 Then txt2.text=“這是一個(gè)偶數(shù)” Else txt2.text=“這是一個(gè)奇數(shù)” End if End sub,3、IfThenElseIf 語句(多分支結(jié)構(gòu)) 多分支結(jié)構(gòu)是當(dāng)實(shí)際處理的問題有多種條件時(shí)使用。 形式:If Then ElseIf Then Else End if 注意: 不管有幾個(gè)分支,程序只執(zhí)行一個(gè)。 當(dāng)有多個(gè)條件同時(shí)滿足時(shí),只執(zhí)行第一個(gè)與之匹配的語句塊。 上式中的 部分是只有當(dāng)前面的所有條件都不成立時(shí)才執(zhí)行。,例:已知變量strC中存

11、放了一個(gè)字符,判斷該字符是字母、數(shù)字、還是其它字符,并做相應(yīng)的顯示。 If Ucase(strC)=“A” And Ucase(strC)=“0” And strC=“9” Then Print strC+”是數(shù)字字符” Else Print strC+”是其它字符” End if 注意:此例中Ucase( )是小寫轉(zhuǎn)換為大寫函數(shù)。而Lcase( )是大寫轉(zhuǎn)換為小寫函數(shù)。,4、If語句的嵌套 形式和其它高級(jí)語言中的嵌套形式相同。即: If Then If Then . End if . End if,例:編一帳號(hào)和密碼輸入檢驗(yàn)程序,對(duì)輸入帳號(hào)和密碼規(guī)定如下: (1)帳號(hào)不超過6位數(shù)字,密碼5位

12、字符,在本題中,密碼規(guī)定為“Zhang”。 (2)密碼在輸入時(shí)在屏幕上以“*”出現(xiàn)。 (3)當(dāng)輸入不正確時(shí)(如帳號(hào)為非數(shù)字字符、密碼不正確),顯示有關(guān)信息。若單擊“取消”按鈕,則停止程序的運(yùn)行。 程序代碼見下頁。,Private Sub Command1_Click() If Not IsNumeric(txtzh) Or Len(txtzh.Text) 6 Then MsgBox 帳號(hào)有非數(shù)字字符或長度位數(shù)不對(duì) txtzh.Text = txtmm.Text = txtzh.SetFocus Else If txtmm.Text = “Zhang Then MsgBox 歡迎進(jìn)入系統(tǒng) Els

13、e MsgBox 密碼錯(cuò)誤 txtmm.Text = txtmm.SetFocus End If End If End Sub,Private Sub Command2_Click() End End Sub,二、Select Case語句 Select Case語句是根據(jù)一個(gè)表達(dá)式的值來執(zhí)行多個(gè)語句塊中的一個(gè)。其形式為: Select Case 測試表達(dá)式 Case 表達(dá)式1 Case 表達(dá)式2 . Case 表達(dá)式n Case Else End Select,說明: 當(dāng)執(zhí)行此語句時(shí),首先計(jì)算測試表達(dá)式的值,然后用這個(gè)值由上到下依次與各個(gè)Case語句之后的表達(dá)式進(jìn)行比較,如果匹配,則執(zhí)行該C

14、ase語句后的語句塊。然后執(zhí)行End Select之后的語句。 如果沒有一個(gè)表達(dá)式匹配,且有case Else語句時(shí),則執(zhí)行case Else語句后的語句塊。 如果有多個(gè)case語句都匹配,則只執(zhí)行從上到下第一個(gè)匹配的case語句后的語句塊。,例:窗體上有一個(gè)按鈕cmdRank和兩個(gè)文本框txtInput、txtOutput,在文本框txtInput中輸入成績,單擊按鈕后,在txtOutput中顯示級(jí)別。,Private Sub cmdRand_Click( ) dim intMark As Integer intMark=Cint(txtInput.text) Select Case int

15、Mark Case Is=90 txtOutput.text=“優(yōu)秀” Case Is=80 txtOutput.text=“良好”,Case Is=70 txtOutput.text=“中等” Case Is=60 txtOutput.text=“及格” Case Else txtOutput.text=“重修” End Select End sub,從上例中可以看出,case后面使用的是Is,實(shí)際上case后面不能是一個(gè)邏輯值,一般也不能直接出現(xiàn)測試表達(dá)式,而只能使用以下幾種: 一組用逗號(hào)分隔的枚舉值; 表達(dá)式1 to 表達(dá)式2(包含表達(dá)式1 和 表達(dá)式2 的值); Is關(guān)系運(yùn)算符表達(dá)式

16、如:,Case 1 to 10 表示測試表達(dá)式的值在110之間 Case “a”,”e”,”i”,”o”,”u” 表示元音字母 Case 2,4,6,8,Is10 表示值為2,4,6,8或大于10,例:已知變量strC中存放了一個(gè)字符,判斷該字符是字母、數(shù)字、還是其它字符,并做相應(yīng)的顯示 Select Case strC Case “a” to “z”,”A” to “Z” Print strC+”是字母字符” Case “0” to “9” Print strC+”是數(shù)字字符” Case Else Print strC+”是其它字符” End Select,6.3 循環(huán)結(jié)構(gòu) 一、For.Ne

17、xt語句 格式:For 循環(huán)變量=初值 To 終值Step 步長 Exit For Next 循環(huán)變量 其中: 循環(huán)變量:必須為數(shù)值型 步長:一般為正,初值應(yīng)小于或等于終值;若為負(fù),初值應(yīng)大于等于終值;默認(rèn)為1 語句塊:構(gòu)成循環(huán)體 Exit For:執(zhí)行到時(shí)退出循環(huán),執(zhí)行Next后的下一條語句。 循環(huán)次數(shù):n=int ((終值-初值)/步長+1) 例:見P89、P90,二、DoLoop語句 1、“當(dāng)型1”結(jié)構(gòu) Do While 條件 語句塊1 Exit do 語句塊2 Loop,執(zhí)行過程:先判斷While后面的循環(huán)條件是否成立,若成立(True),進(jìn)入循環(huán)體,執(zhí)行循環(huán)體內(nèi)容。遇到Loop后,返

18、回到入口處,繼續(xù)上面的判斷。若條件不成立(False),直接執(zhí)行Loop后面的語句。 Exit Do語句是強(qiáng)制退出循環(huán)。當(dāng)While 條件缺省時(shí)常用。 例:計(jì)算1+2+3+100,解法1: Private Sub cmd1_click ( ) dim int1 as integer dim intamount as integer itn1=0 : intAmount=0 Do While int1100 int1=int1+1 intAmount=intAmount+int1 Loop TxtResult.text=intAmount End Sub,解法2: Private Sub cmd

19、1_Click ( ) Dim int1 as integer Dim intAmount as integer int1=1 : intAmount=0 do while int1=100 intAmount=intamount+int1 int1=int1+1 Loop txtResult.text=intAmount End Sub,解法3: Private Sub cmd1_Click ( ) Dim int1 as integer Dim intAmount as integer int1=1 : intAmount=0 Do int1=int1+1 if int1=101 then

20、 Exit Do intAmount=intAmount+int1 Loop txtResult.text=intAmount End Sub,2、“當(dāng)型2”結(jié)構(gòu) Do 循環(huán)體 Loop While 條件 首先執(zhí)行一次循環(huán)體,然后判斷條件是否滿足,如果為True,返回到入口處繼續(xù)執(zhí)行循環(huán)體,否則退出循環(huán),執(zhí)行Loop下面的語句。,3、“直到型1” 格式:Do Untile 條件 循環(huán)體 Loop,顯然,此形式是當(dāng)條件為False時(shí)才進(jìn)行循環(huán),否則退出循環(huán)。,4、“直到型2” 格式: Do 循環(huán)體 Loop Untile 條件 顯然,此形式的循環(huán)體至少可以執(zhí)行一次,例:計(jì)算階乘n!(n為用戶從文

21、本框輸入值) Private Sub command1_click( ) Dim int1 as integer Dim intinput as integer Dim lngresult as long intinput=cint(txtinput.text) int1=1 lngamount=1 Do Until int1=intinput+1 lngamount=lngamount*int1 int1=int1+1 Loop Txtresult.text=lngamount End Sub,Private Sub command1_click( ) For I=0 to 9 For J=

22、0 to 9 For K=0 to 9 text1=I:text2=J:text3=K Form1.refresh For p=1 to 100000 延時(shí) Next p Next K Next J Next I End Sub,Private Sub Form_load( ) Text1=0 text2=0 text3=0 command1.caption=“開始” End Sub,三、循環(huán)的嵌套 例:模擬一個(gè)三位數(shù)的汽車?yán)锍瘫?例:設(shè)計(jì)一個(gè)猜數(shù)字游戲,計(jì)算機(jī)隨機(jī)產(chǎn)生一個(gè)0-100之間的數(shù),給8次機(jī)會(huì),每猜一次通過鍵盤輸入,計(jì)算機(jī)可以給出“大了”、“小了”、“OK”三種提示,當(dāng)出現(xiàn)“OK”時(shí),程序結(jié)束。如果8次都猜不中,用消息框給出正確結(jié)果。,Private Sub Form_Click() X=int(Rnd*101) For j=1 to 8 y=val(i

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論