5、窗體呈現(xiàn)紅色字體 flag = 1 Else Form1.ForeColor=vbBlue 窗體呈現(xiàn)藍色字體 flag = 0 End If Print “歡迎使用VB編程” End Sub,示例3 :將學生成績(score)按五個等級輸出: 優(yōu)90-100,良80-89,中70-79,及格60-69,不及格 <60。將成績輸入文本框(只允許文本框接受數(shù)值數(shù)據(jù)),按回車后,在一個標簽中顯示成績等級。 (詳見書80頁) 算法上的安排: (1) 判斷是否按了回車鍵(If Then) (2) 若按了回車,則 - 獲取成績數(shù)據(jù) - 設置標簽相應屬性 - 評定成績等級,顯示結果
6、- 清空文本框,等待下一次成績輸入 (3) 過濾輸入的非數(shù)值數(shù)據(jù),Select Case 語句,根據(jù)表達式的不同取值,來決定執(zhí)行哪一個語句塊。 格式: Select Case 測試表達式 用來測試條件變量 Case 表達式列表1 表達式的可能取值 語句塊1 Case 表達式列表2 語句塊2 Case Else 語句塊n End Select,如果條件變量的值符合表達式的某個列表,則執(zhí)行該列表下面相應的語句塊。 表達式列表 舉例: Case 1 To 10 如果條件變量的值在1, 10之間 Case Is 100 如果條件變量的值大于100 Case
7、“a” To “z” 如果條件變量的值在a到z之間 Select Case 語句 與 If 語句的作用類似。 示例4. 前面示例3的學生成績輸入與評定問題,也可用Select Case語句替代 If 語句。 (參見書83頁),選擇結構的嵌套,在一個選擇結構中可以包含另一個選擇結構,稱為選擇結構的嵌套。 例如: If 條件 Then 語句塊1 “語句塊1” 可能包含另一個選擇結構 Else 語句塊2 語句塊2可能包含另一個選擇結構 End If 注意: 每個 If 語句要與其 Else、ElseIf、End If 配對。,示例5:已知方程AX2+BX+C=0的系數(shù)A、B、C,用文字說明方
8、程的解:(參見書84頁) 當A=0時,若: B0, 顯示:“有一個實根” B=0,C=0, 顯示:“無定解” B=0,C0, 顯示:“無解” 當A0時,若: D=B*B-4*A*C0,顯示:兩個實根 D=0, 顯示:兩個相等的實根 D<0, 顯示:兩個共軛復根,If a=0 Then If b0 Then Print “有一個實根” Else b=0 If c=0 Then print “無定解” Else print “無解” End If End If Else a不等于0 d=b*b-4*a*c If
9、 d0 Then print “有兩個實根” ElseIf d=0 Then print “有兩個相等的實根” Else print “有兩個共軛復根” End If End If,IIF 函數(shù),1、IIF 用于執(zhí)行簡單的條件判斷操作。 2、IIF是“IfThenElse” 結構的簡寫版本。 IIF函數(shù)的調用格式: 變量 = IIF(條件, True部分, False部分) 功能: 當條件成立時,變量取“True”部分的值,否則變量取“False”部分的值。 例如: Dim A as Integer, S as String 或 Dim A%, S$ A
10、=25 S = IIF(A10, “A大于10”, “A小于等于10” ) 此時 S 的值為: S = “A大于10” 滿足條件A10,變量S 取True部分,4.4 循環(huán)結構,在實際應用中,有些操作(程序段)需要反復執(zhí)行,可以使用循環(huán)結構來實現(xiàn)。,FOR / NEXT 結構,當循環(huán)次數(shù)確定時,可使用For / Next 循環(huán)語句。 格式: For 循環(huán)變量 = 初值 To 終值 Step 步長 循環(huán)體 (程序體) Next 參數(shù)說明: (1) 循環(huán)變量的初值、終值和步長都必須是數(shù)值型表達 式或數(shù)值型變量。 (2) 若步長0,則應該初值 終值,循環(huán)變量遞減; 若步長=1,循環(huán)變量遞增為
11、1,此時步長可以省略。,FOR / NEXT 循環(huán)結構 流程圖 (書85頁),示例6:計算階乘 N! 計算階乘的常用方式(常用定式) 方法1. 從文本框獲取輸入數(shù)據(jù)N: Dim N as integer, i as integer, Dim item% %: 整型數(shù)Integer N=Text1.text 從文本框獲取N的數(shù)值 item = 1 階乘初始值 For i=1 to N 計算N的階乘, 缺省步長為1 item = item*i Next I Print N; “! =”; item,計算階乘 N! 方法2. 利用輸入框(InputBox)獲取數(shù)據(jù)。 Private Sub Fo
12、rm_Click() Dim N As Integer, i As Integer Dim item% N = InputBox(“請輸入一個整數(shù)” ; “計算階乘”) item = 1 For i = 1 To N item = item * i Next i Print N; “! =”; item End Sub,DO / LOOP 語句,循環(huán)次數(shù)不確定,但已知循環(huán)開始或結束 的條件,可使用 DO / LOOP 語句實現(xiàn)循環(huán)。 格式1:先判斷條件,后執(zhí)行循環(huán)體 Do while|until 循環(huán)體(語句塊) Loop 格式2:先執(zhí)行循環(huán)體,后判斷條件
13、 Do 循環(huán)體(語句塊) Loop while|until ,格式說明(詳見書86頁 圖4-9) While : 當滿足條件時,執(zhí)行循環(huán)。 Until : 當滿足條件時,跳出 (結束) 循環(huán)。 循環(huán)體中必須有使循環(huán)條件的邏輯值發(fā)生變化的語句,否則程序將進入死循環(huán),“永無止境”。,計算累加值的常用定式: sum=0 sum = sum +累加項 最后得到的 sum 即為累加結果。 示例7:求 1+2++100 的累加值。 方法1. 用For / Next 循環(huán)求累加。 sum=0 For i = 1 to 100 sum = sum + i Next i,方法2. 用 DO
14、LOOP 循環(huán)求累加。 sum = 0 初值 i = 1 i 是循環(huán)條件變量,初值設為1。 Do While i 100 當滿足條件時,跳出循環(huán),While / Wend語句,功能與 Do While / Loop 語句類似。 格式:While 語句塊 Wend 例:倒計時(書88-89頁) Sub Form_Click ( ) Dim TimeLeft As Integer TimeLeft = 5 While TimeLeft = 1 滿足條件就繼續(xù)執(zhí)行循環(huán)體 Print TimeLeft TimeLeft = TimeLeft 1 Wend End Sub,示例8
15、:求自然對數(shù)的近似值。按下面公式累加,直到最后一個累加項的值小于10-6 為止。 (參見書86-87頁) 程序算法結構可表達為: sum = 1 sum存放累加值。初始累加值=1 (1)開始循環(huán): - 先計算相應階乘 i !(item=item*i) - 再計算相應累加 sum = sum + ( 1 / i! ) (2) 結束循環(huán)。結束條件: (1 / i! ) < 10-6,用 Do while / loop 循環(huán)計算自然對數(shù)近似值: Private Sub Form_Click() Dim sum As Single, item As Single Dim i As Integer,
16、 n As Integer item = 1 sum = 1 i = 1 Do While 1 / item = 0.000001 item = item * i sum = sum + (1 / item) i = i + 1 Loop Print “自然對數(shù)近似值:”; sum, “累加項數(shù):”, i-1 End Sub,從循環(huán)體中退出:Exit 語句,根據(jù)需要,可以在不滿足條件時,中途強迫循環(huán)結束,直接退出。 用 Exit 語句可以直接退出For循環(huán)、Do循環(huán)。,Do While | Until條件 語句序列 Exit Do 語句序列 Loop,For 循環(huán)初值 To 終值
17、 Step 語句序列 Exit For 語句序列 Next 循環(huán)控制變量,循環(huán)嵌套(參見書91頁 圖4-11),1、一個循環(huán)體內可以包含其它選擇結構或循環(huán)結構。 2、內外循環(huán)體不能交叉。 3、內循環(huán)體可跳出來,外循環(huán)體不能跳進去。 4、并列的若干循環(huán)體彼此不能互相跳轉。 5、先執(zhí)行內循環(huán),再執(zhí)行外循環(huán)。 6、注意循環(huán)結構的完整性。 每個For與Next、 Do與Loop、 While與Wend 要配對。,示例9:在窗體上用“ * ”打印菱形。 (參見書91頁) 算法安排: - 根據(jù)行數(shù),確定在該行輸出“ * ”的數(shù)量。 - 確定每行第一個“ * ”出現(xiàn)的位置。 - 換行,準備在下一行輸出“
18、* ”。,Private Sub form_Click() Dim i%, j%, k% CurrentY = 1000 For i = 1 To 9 共打印9行 If i < = 5 Then 15行 k = i k :前5行每行打印的*號個數(shù) Else 69行 k = 10 - i 后4行打印的*號個數(shù)與前5行對稱相等 End If CurrentX = 1000 Print Space(20 - k); 確定每行的*號起始位置 從第 i 行*號起始位置開始按列j輸出每個*號 For j = 1 To 2 * k - 1 Print “*”; Nex
19、t j 下一列 Print 回車換行 Next i 下一行 End Sub,示例10. 打印“斐波那契”數(shù)列1、1、2、3、5、8 中的前40項,要求每行打印10項。 (參見教科書95頁) 分析: “斐波那契”數(shù)列(Fabonacci)的每一項是前兩項之和。首兩項的值為1??捎萌齻€變量F1,F(xiàn)2,F(xiàn)3表示這樣的數(shù)列: F1=1, F2=1, F3=F1+F2,由此開始循環(huán),求出第3項之后的數(shù)列。,Private Sub Form_Click() Dim i%, f1 If i Mod 10 = 0 Then Print 換行 a = 0 End If Next i
20、 End Sub,示例11. 密碼檢驗程序。(教科書95頁) 在文本框中輸入預制的密碼“123456”,并按回車鍵,標簽顯示 “歡迎光臨!”;如果輸入的密碼與預制密碼不吻合,標簽顯示“密碼不對,請重新輸入!”,同時清空文本框,允許再輸入一遍;如果連續(xù)三次輸入的密碼都不對,標簽顯示“已超時,請退出程序!”,文本框失效。運行界面如下圖所示。,,算法: 利用文本框的KeyPress事件。定義一個局部靜態(tài)變量a, 用來記錄輸入密碼次數(shù)(0、1、2)。具體步驟如下: 判斷是否按了回車鍵? 若是,判斷密碼是否正確? 若正確,標簽顯示“歡迎光臨!” 若不正確 判斷a是否大于等于2?
21、若a=2:標簽顯示“已超時,請退出程序!” 文本框設為不可用(enabled=false) 若a<2: 標簽顯示“密碼不對,請重新輸入! 并清空文本框。 a=a+1 (輸入次數(shù)加1),Private Sub Text1_KeyPress(KeyAscii As Integer) Static a As Integer If KeyAscii = 13 Then 按下回車鍵 If Text1.Text = “1234567” Then 密碼輸入正確 Label2.Caption = “歡迎光臨!” Else 密碼錯誤 If a
22、= 2 Then Label2.Caption = “已超時,請退出程序!” Text1.Enabled = False Else Label2.Caption = “密碼不對,請再輸入一遍!” Text1.Text = “” a = a + 1 輸入密碼次數(shù)加1 End If End If Label2.Visible = True End If End Sub,4.5 跳轉控制 Goto 語句(略),Goto 語句格式: Goto 語句標號 功能:無條件地轉移到語句標號指定的程序行去執(zhí)行。 例: Private Sub form_click(
23、) Dim x As Integer Dim sum As Integer Start: Start:語句標號 x = InputBox(請輸入一個整數(shù):) If x = 0 Then Goto 100 If x Mod 2 = 0 Then sum = sum + x End If Goto Start 100 Print “偶數(shù)和為=”; sum 100:語句標號 End Sub,On Goto 語句 格式:On Goto | 功能:根據(jù)“數(shù)值表達式”的值,把控制轉移到幾個指定的語句行中的一個語句。 執(zhí)行過程: 先計算“數(shù)值表達式”的值,將其四舍五入成為整數(shù),然后根據(jù)該
24、整數(shù)值,決定跳到第幾個行標號去執(zhí)行: 若“數(shù)值表達式”的值為1,轉移到OnGoto語句后的第1個行標號所指出的語句行;若為2,轉移到第2個行標號所指出的語句行;依次類推。如果“數(shù)值表達式”的值為0或大于“|”中的項數(shù),將自動執(zhí)行OnGoto語句的下一條語句。,第4章 小結,1、常用的基本控制結構: 順序結構、選擇結構、循環(huán)結構。 2、三種基本結構的語句格式、執(zhí)行流程、用途。編程求解問題時,選用合適的結構來設計算法。 3、掌握一些常用的編程定式: (1) 階乘(連乘)定式(書8586頁) (2) 累加定式(書86頁尾) (3) 兩數(shù)交換(書78頁) (4) 規(guī)則的二維圖形的輸出(例如打印菱形,91頁) (5) 控制一行輸出的數(shù)據(jù)個數(shù)(例如書95頁 實例4.2),作業(yè)與實驗,1、課后練習:教科書 98頁 習題4 2、上機實驗 實驗四 選擇結構 實驗五 循環(huán)結構 必做:基礎題,要求上交實驗作業(yè)。 選做:拓展題,