VB編程序的基本結構課件_第1頁
VB編程序的基本結構課件_第2頁
VB編程序的基本結構課件_第3頁
VB編程序的基本結構課件_第4頁
VB編程序的基本結構課件_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第3章 程序的基本結構程序開發(fā)的兩步程序基本控制結構(三種)3.1 順序結構 順序結構的程序設計是最簡單的,只要按照解決問題的順序?qū)懗鱿鄳恼Z句就行。順序結構就是各語句按出現(xiàn)的先后次序執(zhí)行 順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三部曲的程序就是順序結構,例如計算圓的面積。6 以下語句形式很常用: dim sum% , x% sum=100 : x=5 sum = sum + x 執(zhí)行后,sum的值為多少? dim n% n=7 n = n + 1 執(zhí)行后,n的值為多少?73.1.2 用戶交互函數(shù) 為了便于應用程序與用戶之間進行信息交互,完成信息的輸入和輸出,用戶可采

2、用文本框、標簽等控件來實現(xiàn),也可用VB.NET提供的InputBox、MsgBox來實現(xiàn)。 InputBox的功能是等待并提示用戶為程序運行輸入指定的數(shù)據(jù),簡稱“輸入對話框”。 MsgBox的功能是進行提示,用以確認某種程序的操作,簡稱“消息框”。 9例 創(chuàng)建一個輸入對話框。如下圖所示:Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _Handles Me.Click Dim myvalue As Object myvalue = InputBox(請輸入數(shù)值,數(shù)值在13之間!, 輸入提示

3、, 1) End Sub102. MsgBox(消息框) MsgBox函數(shù)用于在屏幕上的消息框中顯示簡短消息,并等待用戶單擊按鈕,然后返回一個整數(shù)型的數(shù)值,讓應用程序了解用戶單擊的是哪一個按鈕。語法格式: MsgBox(Prompt,Buttons ,Title)功能:在屏幕上顯示一個消息框,根據(jù)選擇確定其后的操作。11 當用戶單擊消息框上的某按鈕時,MsgBox函數(shù)將返回一個常量來確認該按鈕被按動了,下表是按鈕和常量之間的對應關系。通過對返回值的判斷,就可以確定消息框中到底是哪個按鈕被按動,從而確定程序下一步的運行方式。符號常量值用戶單擊的按鈕vbOK1“確定”vbCancel2“取消”vb

4、Abort3“中止”vbRetry4“重試”vbIgnore5“忽略”vbYes6“是”vbNo7“否”表 Msgbox函數(shù)的可能返回值12例 在Form1_Click()事件過程中定義一個消息框,代碼如下:Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Click Dim s As Integer s = MsgBox(用戶名必須包含數(shù)字和字母, 5 + 48, 警告) If s = vbCancel Then End 若用戶單擊取消,則程序退出End Sub單

5、擊窗體,將彈出消息框,如圖3-5所示。3.2 選擇結構對于要先做判斷再選擇的問題就要使用分支結構,如下面例子, 分支結構的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現(xiàn)的物理順序。單分支結構多行形式 If 表達式 Then 語句塊 End If單行形式 If 表達式 Then 語句塊表達式語句塊TF 當表達式的值為True,執(zhí)行Then后面的語句塊,否則不做任何操作。例:將保存在變量a和 b中的整數(shù)按升序排列。(即a的值一定不大于b的值)分析:ab時,兩者的值交換 If b a Then t = a a = b b = t End If 單分支結構舉例也可改寫成行IF語句,如下所示,

6、If b a Then t = a : a = b: b = t123雙分支結構多行形式 If 表達式 Then 語句塊1 Else 語句塊2 End If 單行形式If 表達式 Then 語句塊1 Else 語句塊2當表達式的值為True時,執(zhí)行Then后面的語句塊1,否則執(zhí)行Else后面的語句塊2表達式語句塊1語句塊2TFIfThenElse例: 計算當 0 x10時,y=x,否則 y=100 ,正確的語句是_。If 0 x10 then y=x else y=100If 0 x and x10 then y=x else y=100 If 0 x and x10 then y=x els

7、e y=100If 0 x or x= A And UCase(ch) = 0 And ch a Then c = a: a = b: b = cEnd IfIf b c Then x = b ElseIf a c Then x = c Else x = aEnd IfMsgbox( x=“ & x)End SubPrivate Sub Form1_Click()Dim a, b, c, d As SingleDim x As Singlea = 100b = 20c = 1000 x=100If語句的嵌套是指If或Else后面的語句塊中又包含If語句. If 表達式1 Then If 表達式

8、2 Then End If End IfIf語句的嵌套 本章目錄將前面的例子改用 Select Case 語句實現(xiàn): Select Case ch Case a To z, A To Z MsgBox (ch + 是字母字符) Case 0 To 9 MsgBox (ch & 是數(shù)字字符) Case Else MsgBox (ch + 是其他字符) End SelectSelect語句舉例 Dim Number% Number = Val(InputBox(輸入整數(shù)) Select Case Number Case 1 To 5 范圍為1,5 Msgbox( Between 1 and 5“)

9、 Case 6, 7, 8 Msgbox (Between 6 and 8“) Case 9, 10 Msgbox (Greater than 8“) Case Else Msgbox (Not between 1 and 10“) End SelectSelect語句舉例格式: IIf(表達式,TruePart,F(xiàn)alsePart)IIf函數(shù)是If Then Else 結構的簡潔表示例如,將x,y中大的數(shù),放入Tmax變量中:Tmax = IIf(x y,x,y) 該語句與如下語句等價 :If x y Then Tmax = x Else Tmax = y IIF函數(shù)3.3 循環(huán)結構問題1:

10、 求 1100之間的奇數(shù)之和 即計算 1 + 3 + 5 + 7 + 9 + 。 + 97 + 99 變量 i : 從1 到 100 之間的奇數(shù) 和: 變量sum 最初設置sum=0 第一次:i的初值為1 sum=sum+i sum=0+1=1 第二次 :i=i+2 執(zhí)行后 i=3 sum=sum+i 執(zhí)行后 sum=4 第三次 :i=i+2 執(zhí)行后 i=5 sum=sum+i 執(zhí)行后 sum=9 。 直至i=終值當步長為1時,可省略Step 步長 。 0 初值終值 不執(zhí)行循環(huán)體=終值, 則循環(huán) 若 初值 終值通過Exit For循環(huán)變量= 初值循環(huán)變量= 終值循環(huán)體循環(huán)變量 =循環(huán)變量 +步

11、長TFExit ForFOR循環(huán)的執(zhí)行流程循環(huán)終止條件:循環(huán)變量 = 終值循環(huán)體循環(huán)變量 =循環(huán)變量 +步長TFExit ForFOR語句的循環(huán)次數(shù)如何計算? For i=1 to 3 step 1 循環(huán)次數(shù): ( (3-1)/1 )+1For i=1 to 5 step 2 循環(huán)次數(shù): ( (5-1)/2)+1For i=1 to 6 step 2 循環(huán)次數(shù): int( (6-1)/2)+1For i=6 to 1 step -2 (注意:步長為負數(shù)) 循環(huán)次數(shù): int( (1-6)/(-2) )+1計算下列循環(huán)語句的次數(shù)(1)For i= 5.5 to 3.5 step -0.5Int

12、( ( 3.5-5.5)/(-0.5)+1 =5(2) For i= 3.5 to 5.5 step -0.5 不執(zhí)行循環(huán)體(3) For i= -3 to 20 step 0步長為0,死循環(huán)循環(huán)體內(nèi)需要有 exit for 語句才可跳出該循環(huán)39例4.8 下列程序結果是( )? Private Sub Form1_Click(ByVal sender As _ Object, ByVal e As System.EventArgs) _ Handles Me.Click Dim i As Integer, sum As Long Dim t1#, n t1 = 1 : sum = 0 : n

13、 = 0 For i = 1 To 3 n = n + 1 t1 = t1 * i sum = sum + t1 Next i MsgBox(sum= & sum & n= & n) End Sub注意:跳出循環(huán)后,循環(huán)控制變量值的問題。例:程序段: Dim i As Integer For i = 2 To 13 Step 3 Msgbox( i) Next i Msgbox( i=“ & i)結果:sum= 9 n= 3結果: i 14 Dim s%, i% s = 1 For i = 1 To 10 s = s * i If i = 2 Then Exit For End If Next

14、 i Msgbox(“s=“ & s & “ i=“ & i)通過Exit For 語句終止循環(huán)后,循環(huán)控制變量 的值?s=2 i=2FOR循環(huán)舉例例: 求100以內(nèi)能被3和7整除的所有正整數(shù)之和. 要求打印出符合條件的正整數(shù)以及他們的和。 Dim sum%, i% sum = 0 For i = 1 To 100 If (i Mod 3) = 0 And (i Mod 7) = 0 Then sum = sum + i msgbox (i=“ & i) End If Next i msgbox( sum=“ & sum)結果:i= 21i= 42i= 63i= 84sum= 210例:判斷x

15、是否是素數(shù)?注:素數(shù)又稱質(zhì)數(shù)。指僅能被1和此整數(shù)自身整除的大于或等于2的整數(shù)。判別方法是: 對于數(shù)x 從 i=2,3,x-1判別x能否被i整除,只要有一個能整除,x就不是素數(shù),否則x是素數(shù)。 Dim x , i as integer, flag as boolean x = Val(InputBox(“輸入一個大于1,且小于32767的正整數(shù)) flag=true For i = 2 To x - 1 If (x Mod i) = 0 Then Msgbox( x & 不是素數(shù) “& x & mod & i & =0“) flag=false Exit For End If Next i If

16、 ? Then Msgbox( x & 是素數(shù)“)flag=true另一種判斷方法:對執(zhí)行完循環(huán)體后循環(huán)變量i的值進行判斷3.3.2 DoLoop語句問題: 需統(tǒng)計某班成績(mark) 大于80 的學生人數(shù)(num) num初始值設為0循環(huán)條件:mark80 時,num=num+1 但循環(huán)次數(shù)知道么?循環(huán)次數(shù)需要根據(jù)條件來判斷循環(huán)次數(shù)未知使用 DoLoop語句3.3.2 DOLoop語句DoLoop語句用于循環(huán)次數(shù)未知的循環(huán)結構。格式1: Do While|Until 條件 語句塊 Exit Do 語句塊Loop格式2: Do 語句塊 Exit Do 語句塊Loop While|Until 條

17、件 特點:1.先執(zhí)行后判斷,循環(huán)體至少執(zhí)行一次2.循環(huán)次數(shù) 1特點:1.先判斷后執(zhí)行,循環(huán)體可能一次都不執(zhí)行2.循環(huán)次數(shù) 0。While條件: 條件結果為True(或 非0)時執(zhí)行循環(huán)體;為False(或0)時結束循環(huán)Until條件: 條件結果為True(或 非0)時結束循環(huán)體;為False(或0)時執(zhí)行循環(huán)45Dim i ,x as integeri=4x=5DO while i 0 i=i+1 x=x+2Loop Msgbox( “i=“ & I &“ x=“ & x)循環(huán)體執(zhí)行的次數(shù)?程序段的執(zhí)行結果?執(zhí)行次數(shù):0次結果為: i= 4 x= 5Dim i ,x as integeri=4

18、X=5DO i=i+1 x=x+2Loop while i 0Msgbox( “i=“ & I &“ x=“ & x)執(zhí)行次數(shù):1次結果為: i= 5 x= 7思考:while位于關鍵字Do后面和位于關鍵字loop后面對循環(huán)控制的區(qū)別 ?46Dim i%,x%i=6x=9DO while i = 7 i=i+1 x=x+2Loop Msgbox( “i=“& i &“ x=“ & x)循環(huán)體執(zhí)行的次數(shù)?程序段的執(zhí)行結果?執(zhí)行次數(shù):2次 結果為: i= 8 x= 13Dim i%,x%i=6x=9DO i=i+1 x=x+2Loop while i =1次時,while關鍵字可以寫在Do關鍵字或

19、者Loop關鍵字 的后面47Dim i% , x%i=6x=9DO while i = 6 i=i+1 x=x+2Loop Msgbox( “i=“ & i &“ x=“ & x)循環(huán)體執(zhí)行的次數(shù)?程序段的執(zhí)行結果?執(zhí)行次數(shù):1次 結果為: i= 7 x= 11Dim i% , x%i=6x=9DO i=i+1 x=x+2Loop while i =0 n = n + 1 j = j + n * (n + 1)LoopMsgbox(“n=“ & n & “ j=“ & j)循環(huán)體執(zhí)行的次數(shù)?程序段的執(zhí)行結果?執(zhí)行次數(shù):0次結果為: n=0 j=1Dim j% ,n%j = 1: n = 0Do

20、 n = n + 1 j = j + n * (n + 1)Loop Until n =0Msgbox(“n=“ & n & “ j=“ & j)執(zhí)行次數(shù):1次結果為: n=1 j=3思考:Until位于關鍵字Do后面和位于關鍵字Loop后面對循環(huán)控制的區(qū)別 ?49Dim i%, x%i=4x=5DO until i 4 i=i+1 x=x+2Loop Msgbox(“i=“ & i & “ x=“ & x)執(zhí)行次數(shù):1次結果為: i= 5 x= 7Dim i%, x%i=4x=5DO i=i+1 x=x+2Loop until i 4Msgbox( “i=“ & i & “ x=“ & x)

21、執(zhí)行次數(shù):1次結果為: i= 5 x= 7使用Until 關鍵字時,循環(huán)次數(shù)=1次時,Until關鍵字可以寫在Do關鍵字或者Loop關鍵字 的后面Do循環(huán)舉例珠穆朗瑪峰高度:8848米例:將厚度為0.5毫米的紙張對折多少次后,其總厚度可超過珠穆朗瑪峰的高度?Dim num%, n!n=0.5*10(-3)num=0Do until n 8848 n=2*n num=num+1 LoopMsgbox(“折疊次數(shù)為“ & num)能否以毫米做單位?Dim num% , n!n=0.5Do until n8848*103可以,因為n為單精度類型,不會溢出Do循環(huán)舉例例:用輾轉(zhuǎn)相除法(歐幾里德算法),

22、求正整數(shù)m和n的最大公約數(shù)和最小公倍數(shù)最大公約數(shù) 算法:1. 對于已知兩數(shù),令mn2.令r為m / n 所得余數(shù) (0 r n) 若 r= 0,算法結束;n 即為最大公約數(shù)。3. 互換:置 mn,nr,并返回第2步Private Sub Form1_Click(ByVal _ sender As Object, ByVal e As _ System.EventArgs) Handles Me.Click Dim r%, m%, n% m = InputBox(請輸入正整數(shù)m!) n = InputBox(請輸入正整數(shù)n!) r = m Mod n Do While (r 0) m = n n

23、 = r r = m Mod n Loop MsgBox(最大公約數(shù)= & n) End Sub3.3.3 多重循環(huán) 在一個循環(huán)體內(nèi)又包含了另一個完整的循環(huán)稱為循環(huán)的嵌套。 左邊的嵌套循環(huán)也稱為雙重循環(huán)注意:要避免循環(huán)交叉Dim i%, j% Dim n%, m%, k%m = 0: k = 0For i = 1 To 5 k = k + 1 n = 0 For j = 1 To 3 n = n + 1 m = m + 1 Next jNext i123456789101153 For i=1 To 10 For i=1 To 20 Next i Next i For i =1 To 10 F

24、or j=1 To 20 Next j Next i For i =1 To 10 For j=1 To 20 Next i Next j For i =1 To 10 Next i For i =1 To 10 Next i對于循環(huán)的嵌套,要注意以下事項:內(nèi)循環(huán)變量與外循環(huán)變量不能同名;外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉;不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),反之則可以。正確錯誤錯錯小技巧:Next后不寫循環(huán)變量名,可避免循環(huán)交叉。3.3.3 多重循環(huán)Dim i%, j% Dim n%, m%, k%m = 0: k = 0For i = 1 To 5 k = k + 1 n = 0 For j =

25、1 To 3 n = n + 1 m = m + 1 Next jNext iMsgbox(i= & i)Msgbox(j= & j)Msgbox(k= & k)Msgbox(n= & n)Msgbox(m= & m)123456789101112131415161.外循環(huán)(i循環(huán))的循環(huán)體中的語句5共執(zhí)行了多少次?答案:52.內(nèi)循環(huán)(j循環(huán))的循環(huán)體中的語句9共執(zhí)行了多少次?答案:5*33.雙重循環(huán)結束后,變量 i, j, n, m, k的值分別是多少?答案: i= 6 j=4 k= 5 n=3 m= 154.語句7執(zhí)行了多少次? 答案: 5次3.3.3 多重循環(huán) 問題:當時鐘轉(zhuǎn)了1圈時(即

26、12個小時),秒針在這段時間向前走了多少下?每走一下為1秒思考:秒針走滿1圈,分針+1;秒針又從頭開始走分針走滿1圈,時針+1;分針、秒針從頭開始走時針走滿1圈,即12小時,循環(huán)結束Dim i%, j%,k% i為時針,j為分針,k為秒針Dim num%num=0For i = 1 To 12 for j=1 to 60 for k=1 to 60 num=num+1 Next k Next jNext iMsgbox(“num=“ & num)問題:循環(huán)結束后,num為多少?多重循環(huán)的循環(huán)次數(shù)等于每一重循環(huán)次數(shù)的乘積num=43200FOR循環(huán)的嵌套舉例例:輸出矩形的九九乘法表分析:For

27、i = 1 To 9 For j = 1 To 9 ? Next 輸出顯示Nextij解決此類問題的一般規(guī)律是利用雙重循環(huán):外循環(huán)控制行內(nèi)循環(huán)控制列如此,可寫出基本框架:九九表可看作是由字符組成的平面圖形。 Private Sub Form1_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Me.Click Dim j As Integer, i As Integer Dim s As String For i = 1 To 9 For j = 1 To 9 s = s & i & x & j & = &

28、 String.Format(0,-6, Str(i * j) Next j s = s & vbCrLf vbCrLf用來控制換行 Next i Label1.Text = s End Sub591. Exit語句 在VB.Net中,有多種形式的Exit語句,用于退出某種控制結構的執(zhí)行。 Exit的形式如下:Exit For、Exit Do、Exit Sub、Exit Function等。2. End語句 獨立的End語句用于結束一個程序的運行,它可以放在任何事件過程中。 在VB.Net中,還有多種形式的End語句,用于結束一個過程或塊,在控制語句或過程中經(jīng)常使用。End語句的多種形式如下:

29、End If、End Select、End With、End Type 、End Sub 、End Function 等,它與對應的語句配對使用。3.3.4 退出和結束語句 603.4綜合應用結果是每項累加之和。假設累加之和放在變量ee中 ,其變量類型? 初值? 變量類型:! 初值=0每項寫為1/t 分析分母t: 第一項:0!=1 令 t=1 i的初值? 第二項:1 !1 *0! t=1*t t=i*t i=1 第三項:2! 2* 1 ! t=2*t t=i*t i=2 第四項 :3! 3* 2! t=3*t t=i*t i=3 第K項 : (K-1)! (k-1)* t 例:求自然對數(shù)e的近似值,要求其誤差小于0.00001 。公式: t的數(shù)據(jù)類型? 變量t 初值:1 結束的判斷? 要求其誤差小于0.00001, 即 1/t 0.00001時結束循環(huán) do until 1/t = 0.00001 循環(huán)體: ee=ee+1/t i=i+1 循環(huán)體外

溫馨提示

  • 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

提交評論