Presentation is loading. Please wait.

Presentation is loading. Please wait.

計算機程式 廖文淵 Department of Computer Science and Engineering

Similar presentations


Presentation on theme: "計算機程式 廖文淵 Department of Computer Science and Engineering"— Presentation transcript:

1 計算機程式 廖文淵 Department of Computer Science and Engineering
De-Lin Institute of Technology

2 第六章 流程控制 6-1 結構化程式設計 結構化程式設計(Structured programming)是設計、撰寫程式的一種方式
第六章 流程控制 6-1 結構化程式設計 結構化程式設計(Structured programming)是設計、撰寫程式的一種方式 它的宗旨在於簡化程式設計的流程,以及減少邏輯錯誤發生的機會 結構化程式設計是使用有限組的控制結構(Control-flow structure)、由上而下的一種設計方式 區塊(block structure)的概念

3 循序結構 循序結構的敘述會依照它們出現的順序來執行,控制權無條件的由一個敘述緊接著一個敘述、循序的傳遞下去 循序結構是最基礎、簡單的一種方式
它的邏輯圖如下所示 以Visual Basic語法表示循序結構

4 選擇結構 二元選擇結構 If [Condition] Then [Statement]
如果結果為True(真),那麼就執行Then後面的敘述(Statement) 如果測試條件最後為False(假),那麼就不去理會Then後面的敘述,而直接將控制權轉移至If的下一個敘述 這種結構的邏輯圖如下

5 If [Condition] Then [Statement A] Else [Statement B]
如果結果為True(真),那麼就執行Then後面的敘述(Statement) 如果結果為False(假),就執行Else後面的敘述(Statement B) 不論執行了Statement A或是Statement B,執行過後都會將控制權轉移至If的下一個敘述 邏輯圖如下所示

6 多元選擇結構 在各種情況中,視情況選擇一組符合條件的動作來執行 其邏輯圖如下

7 重複結構 重複結構一般又稱為「迴圈(loop)」或「循環(iteration)」 在迴圈結構中,通常會有一個測試條件,決定何時終止重複執行
由於測試條件所出現的位置不同,又區分為前測式迴圈與後測式迴圈兩種

8 前測式迴圈 前測式迴圈是在執行迴圈指令前先做測試,測試結果為True時,才會進入迴圈
進入迴圈之後,開始執行Statement部分;執行過Statement的部分後,再繞回迴圈的測試點進行測試 如果結果仍然為True,則再度進入Statement的部分執行 如此週而復始不斷執行,直到測試條件變成False時,執行迴圈結構的下一個敘述 如果測試條件永遠不會是False時,那麼迴圈就無法停止,形成所謂的無窮迴圈(Infinite loop)

9 後測式迴圈 不論測試條件為何,先執行迴圈指令之後再做測試 如果測試結果為True時,才會離開迴圈,否則再度進入迴圈 其邏輯圖如下所示

10 6-2 條件判斷 下圖是Visual Basic語言中所提供與條件判斷相關的各種語法、函數分類圖

11 If...Then敘述 單行式 If 條件式 Then 當條件式為True時要執行的動作
條件式(Condition) 放的是比較(Comparison)運算或比較運算加邏輯運算的動作 比較運算:將兩個資料以比較運算子連接。所得的結果是一個Boolean型別資料(True或False) 如果在條件式中要進行一個以上的比較運算,那麼這些比較敘述間必須以邏輯運算子連接 比較運算子的優先順序高於邏輯運算子 If A >= B And C <> 1 Then Label1 = “條件成立” If (A >= B) And (C <> 1) Then A = B : C = C + 1 If (A >= B) And (C <> 1) Then A = B : _ C = C + 1 加一個空格及底線,就連上下一列敘述

12 範例 說明 視窗在關閉之前會先詢問使用者是否真的要關閉它 如果使用者回答[是(Y)],那就關閉視窗、把程式結束
如果回答[否(N)],那麼就取消關閉的動作,一切恢復正常 說明 這個範例程式的表單不需要放置任何的控制項

13 當使用者用滑鼠在右上方的關閉鈕上按鈕時,螢幕上會出現如下圖所示的訊息對話方塊,詢問使用者是否要結束視窗
如果按下[是(Y)],則關閉全部視窗,按[否(N)]則會到原來的視窗

14 步驟 修改表單上的屬性 在form的QueryUnload事件程序中填入程式碼
Form1 Name frmIF_Test BorderStyle 1 Caption IF...Then敘述測試 在form的QueryUnload事件程序中填入程式碼 1.Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 2. Dim ReturnCode As Integer 3. ReturnCode = MsgBox(“要關閉視窗嗎?”, vbExclamation +vbYesNo, “詢問”) 4. If ReturnCode = vbNo Then Cancel = True 5.End Sub

15 區塊式 If 條件式 Then 當條件式為True時要執行的動作 End If 例如:
. 當條件式為True時要執行的動作 End If 例如: If (A >= B) And (C <> 1) Then A = B : C = C + 1 等同於 If ( A >= B ) And ( C <> 1) Then A = B C = C + 1

16 If...Then...Else敘述 單行式 區塊式 If 條件式 Then 條件式True時的動作 Else 結果為False的動作
End If

17 範例 說明 運用If…Then…Else敘述來判斷使用者按下訊息對話方塊上的不同按鈕,並做出不同的回應
開始執行時,表單上只有一個命令鈕[我想問問題]

18 用滑鼠在[我想問問題]上按鈕,螢幕上會出現如下圖所示的訊息對話方塊,詢問使用者
如果按下[是(Y)],則訊息對話方塊消失後,在原先視窗的標籤上會出現如下圖所示的字樣

19 按[否(N)]則會出現如下的樣子

20 步驟 在表單上放一個標籤及一個命令鈕控制項 修改表單、標籤、及命令鈕上的屬性 Form1 Label1 Command1 Name
Form1 Label1 Command1 Name frmIF_Test2 lblResult cmdDisplay BorderStyle 1 (預設值) Caption IF-Then-Else測試 我想問問題

21 在cmdDisplay的click事件程序中填入程式碼
1. Private Sub cmdDisplay_Click() 2. Dim ReturnCode As Integer 3. ReturnCode = MsgBox("您有錢嗎?", vbInformation + vbYesNo, "人生一問") 4. If ReturnCode = vbYes Then lblResult = "分我一點吧!" 6. Else lblResult = "我也沒錢耶!" 8. End If 9. End Sub

22 IIf函數 IIf(條件式,當條件式為True時的值,當條件式為False時的值)
例如:J = IIf(S >= 60,“及格”,“不及格”) 當S大於等於60時,則傳回字串“及格”,也就是說J會存入“及格”這個字串 如果S小於60,那麼就傳回字串"不及格",而J中會存入字串"不及格"

23 6-3 比較運算 兩個運算元(Operand)透過中間的比較運算子(Operator)所做的運算
比較運算後的結果只有三種:True、False或Null 意 義 運算子 語法 結果為True的條件 結果為False的條件 小於 < A<B A小於B A大於等於B 小於等於 <= A<=B A小於等於B A大於B 大於 > A>B 大於等於 >= A>=B 等於 = A=B A等於B A不等於B 不等於 <> A<>B A、B分別代表運算元,可以是數字、字串或其他運算的結果 當A或B中有任何一者為Null時,經比較的結果都會是Null

24 6-4 邏輯運算 And運算子 運算元1 運算元2 結 果 True False Null 運算元1的某一個bit
6-4 邏輯運算 And運算子 運算元1 運算元2 結 果 True False Null 運算元1的某一個bit 運算元2中、相對於運算元1的bit 運 算 結 果 1

25 Or運算子 運算元1 運算元2 結 果 True False Null 運算元1的某一個bit 運算元2中、相對於運算元1的bit
運 算 結 果 1

26 Not運算子 在Visual Basic中的False相當於0,True相當於-1
運算元 Not運算的結果 True False Null 運算元的某一個bit 運 算 結 果 1 在Visual Basic中的False相當於0,True相當於-1 False值以二進位表示: True 值以二進位表示: True = Not false False = Not True

27 Xor運算子 運算元1 運算元2 結果 True False Null 運算元1的某一個bit 運算元2中、相對於運算元1的bit 運算結果
1

28 Eqv運算子 運算元1 運算元2 結 果 True False Null 運算元1的某一個bit 運算元2中、相對於運算元1的bit
結 果 True False Null 運算元1的某一個bit 運算元2中、相對於運算元1的bit 運算結果 1

29 6-5 運算子的優先順序 高 低 算術運算子 比較運算子 邏輯運算子 ^ = Not -(負號) <> And * / <
6-5 運算子的優先順序 算術運算子 比較運算子 邏輯運算子 ^ = Not -(負號) <> And * / < Or \ > Xor Mod <= Eqv + - >= Imp & Like Is

30 Examples T Print 2=4-1 Or 2.5 = 5/2 F Print 3 > 0 And 4 <> 4
F Print Not (5 < 10) F Print Not (9 > 5) T Print (5 > 4) And (9 > 5) T Print (7 > 8) Or (Not False) T Print (5 > 2) Xor (9 > 10) T Print (5 < 7) Eqv (8 < 11)

31 6-6 核取方塊(Check Box) 所謂的「核取方塊」 核取方塊(CheckBox) 選項按鈕(Option Button)

32 用滑鼠Click一下方框(□的部分),方框中就會出現一個””的符號,這就表示您選取了這個功能
核取方塊彼此之間的功能都是獨立的 以核取方塊的運作方式就像是複選題;在一群選項中可以選擇好幾個

33 放置核取方塊 放置方式與其他控制項的方式是一樣的 當核取方塊與框架(Frame)合用時,由於牽涉到群組的概念,步驟比較複雜一點
在表單中的核取方塊 在工具箱中的核取方塊圖示

34 常用的屬性 Caption:標題屬性字串顯示在核取盒的右方,告訴使用者這個核取方塊所代表的功能為何
Value:表示核取方塊在執行時的三種狀態,分別是0、1、2,預設值為0,其說明如下 0 表示不核取,也就是說,在執行時核取方塊呈現不 打勾的狀態 1 表示核取,在執行時核取方塊呈現打勾的狀態 2 灰色 ☆ 這個設定值比較特別,核取方塊會呈現打勾 的狀態,但以灰色(或模糊)顯示之 ☆ 表示忽略這個選項或這個選項沒有作用 ☆ 使用者不能以滑鼠click 直接”按”出這個狀態,但可 以透過程式碼來設定

35 核取方塊實作 範例 電腦上的顏色是由RGB三種原色所構成的,R代表Red(紅色)、G代表Green(綠色)、B代表Blue(藍色)
在Visual Basic中每一個顏色成分用一個位元組的數值來代表(0~&HFF) Visual Basic在三個位元組前再多加了一個位元組,區分物件所使用的顏色是屬於系統配色,還是調色盤中自訂的顏色 這個例子就是利用核取方塊多選的特性,設計一個簡單的純色混色機 用三個核取方塊代表RGB三個原色是否加入混色 如果使用者核取其中一個核取方塊,那就代表要將該顏色加入混色 混色的結果會顯示在一個標籤控制項上。

36 說明 範例程式開始執行時,您會看到一個標籤控制項及三個核取方塊 標籤控制項一開始的內容是黑色的
而三個核取方塊控制項分別代表紅色成分、綠色成分、藍色成分

37 使用者以滑鼠在代表紅色成分的核取方塊上Click時,標籤控制項就會顯示出紅色的純色
2.顯示出紅色 1. 在代表紅色的 核取方塊上Click 在代表藍色的核取方塊上Click,Label的顏色又會再混入藍色成分,於是就成了紫色

38 步驟 先在表單上放置一個標籤及四個核取方塊 修改屬性設定值 Form1 Label1 Check1 Check2 Check3 Name
Form1 Label1 Check1 Check2 Check3 Name frmChkBox lblPanel chkRed ChkGreen chkBlue BackColor (預設值) &H & (黑色) BorderStyle 1 Caption 核取方塊測試 紅色成分 綠色成分 藍色成分

39 分別在chkRed、chkGreen、與chkBlue的Click事件程序中填入程式碼
1. Private Sub chkBlue_Click() 2. If chkBlue.Value Then lblPanel.BackColor = lblPanel.BackColor Or &HFF0000 4. Else lblPanel.BackColor = lblPanel.BackColor Xor &HFF0000 6. End If 7. End Sub 8. Private Sub chkGreen_Click() 9. If chkGreen.Value Then lblPanel.BackColor = lblPanel.BackColor Or &HFF00& Else lblPanel.BackColor = lblPanel.BackColor Xor &HFF00& End If 14. End Sub 15. Private Sub chkRed_Click() If chkRed.Value Then lblPanel.BackColor = lblPanel.BackColor Or &HFF& Else lblPanel.BackColor = lblPanel.BackColor Xor &HFF& End If 21. End Sub

40 6-7 選項按鈕(OptionButton) 選項按鈕通常不會獨立出現,在表單中會同時出現好幾個
執行時,使用者只能選取同一群組中的一個選項按鈕(左方的白色圓圈中會出現一個黑點)

41 VB中的選項按鈕 在工具箱中的選項按鈕圖示 在表單中的選項按鈕

42 選項按鈕常用的屬性 Caption:選項按鈕的標題屬性字串顯示在其右方,代表這個選項按鈕的功能(或選項)
Value:選項按鈕在執行時的兩種狀態,True(選擇)或False(未被選擇),預設值為False True表示點選,在執行時該選項按鈕左邊(或右邊)的圈選欄位中會出現一個黑點 False表示不點選,該選項按鈕左邊(或右邊)的圈選欄位將呈現空白

43 選項按鈕實作 範例 說明 在這個這個範例程式主要是利用選項按鈕來設定標籤控制項中字串的對齊方式
範例EX6-4開始執行時,畫面上會出現一個標籤、及三個選項按鈕,如下圖所示:

44 在表單有三個選項按鈕,分別是[ 靠左對齊]、[ 置中對齊]、[ 靠右對齊] 預設值是文字靠左對齊顯示 Click其中一個選項時,在上面所顯示的字串及位置都會隨著改變

45 這個程式主要是使用標籤(Label)控制項的Alignment屬性,及選項按鈕(OptionButton)的Click事件,來做出更改顯示字串及位置的效果

46 步驟 在表單上放置一個標籤及三個選項按鈕 修改各物件的屬性值 Form1 Label1 Option1 Option2 Option3
Form1 Label1 Option1 Option2 Option3 Name frmAlignment lblDisplay optLeft optCenter optRight BorderStyle 1 Caption 選項按鈕測試 靠左對齊 置中對齊 靠右對齊

47 在optLeft、optCenter、optRight三個選項按鈕的Click事件程序中填入程式碼
1. Private Sub optCenter_Click() 2. lblDisplay = "置中對齊" 3. lblDisplay.Alignment = 2 4. End Sub 5. Private Sub optLeft_Click() 6. lblDisplay = "靠左對齊" 7. lblDisplay.Alignment = 0 8. End Sub 9. Private Sub optRight_Click() lblDisplay = "靠右對齊" lblDisplay.Alignment = 1 12. End Sub

48 6-8 框架(Frame) 視窗上的視覺效果,區分各個選項 將數個選項按鈕(OptionButton)組成群體 框架配合選項按鈕

49 VB中的框架控制項 在工具箱中的框架圖示 在表單中的框架

50 以框架群組選項按鈕 建立物件的順序及方法 先在表單中建立一個框架 框架在作用中(周圍出現8個黑點)的狀態下,以拖放的方式在上面建立選項按鈕
1. 確定框架是處於 被選取的狀態 2. 以拖放的方式放 入選項按鈕

51 已經先放好選項按鈕,事後才決定要加入框架
先將框架放進表單中 將所有的選項按鈕選起來。 選擇一個以上物件的方式是:先點選其中一個物件,然後再按住[Ctrl]或[Shift]鍵不放、點選其他物件 按下[Ctrl]-[X]剪下它們 選擇Frame物件,使其成為作用中的狀態 按下[Ctrl-V]貼上

52 框架常用的屬性 BorderStyle:設定框架是否出現 Caption:框線上方邊緣的標題文字
1:單線固定(預設值) Caption:框線上方邊緣的標題文字

53 框架實作 範例 說明 在範例EX6-4中再加上三個選項,用來設定標籤控制項中字串的字型
範例執行時,可以看到有一個標籤、兩個框架、六個選項按鈕

54 在左邊標名為”對齊方式”的框架中有三個選項按鈕,功能跟範例EX6-4是完全一樣的;當以滑鼠選擇”置中對齊”時,上方的標籤控制項就會顯示出”置中對齊”的字樣,並將對齊方式改為置中對齊
2.字串變為置中對齊 1.選擇置中對齊

55 在”選擇字型”框架中選擇”標楷體”,標籤控制項中的字型會變成標楷體,同時仍然維持置中對齊的顯示方式
2.字型變為標楷體 1.選擇”標楷體”

56 步驟 在表單上放置一個標籤、一個框架。接著選擇框架,讓框架成為作用中的狀態
在框架中加入三個選項按鈕。請注意,在每次加入一個選項按鈕後,必須再次點選框架,讓框架成為作用中的樣子,才能再加入下一個選項按鈕 再放一個框架,並在框架中加入三個選項按鈕。您可以試著移動一下框架位置,如果框架中的選項按鈕都會跟著移動,那才是正確的

57 修改各控制項的屬性值,如下表所示 Form1 Label1 Frame1 Option1 Option2 Option3 Name
Form1 Label1 Frame1 Option1 Option2 Option3 Name frmFrame lblDisplay famAlignment optLeft optCenter optRight BorderStyle 1 (預設值) Caption 框架測試 靠左對齊 對齊方式 置中對齊 靠右對齊 Frame2 Option5 Option6 Option7 Name famFont optFont1 optFont2 optFont3 BorderStyle (預設值) Caption 選擇字型 新細明體 標楷體 勘亭流

58 分別在optLeft、optCenter、optRight、optFont1、optFont2、optFont3的Click事件程序中填入下列程式碼:
1. Private Sub optLeft_Click() 2. lblDisplay = "靠左對齊" 3. lblDisplay.Alignment = 0 4. End Sub 5. Private Sub optCenter_Click() 6. lblDisplay = "置中對齊" 7. lblDisplay.Alignment = 2 8. End Sub 9. Private Sub optRight_Click() lblDisplay = "靠右對齊" lblDisplay.Alignment = 1 12. End Sub 13. Private Sub optFont1_Click() lblDisplay.FontName = "新細明體" 15. End Sub 16. Private Sub optFont2_Click() lblDisplay.FontName = "標楷體" 18. End Sub 19. Private Sub optFont3_Click() lblDisplay.FontName = "華康勘亭流" 21. End Sub

59 6-9 巢狀流程控制敘述

60 If...Then必須與End If成對出現 If...Then與End If配對規則是:取與If...Then最近的End If配成一對 If...Then會找尋與其最近的Else 配成一對

61 範例 說明 利用巢狀If…Then…Else敘述,針對學生成績做判斷 如果是60分以上,那表示通過測驗
介於50分至60分之間(不含60分)的未通過但可以補考 50分以下的則表示完全失敗 說明 在視窗右上角標名為”分數”的文字框輸入學生分數,例如輸入65,如下圖所示

62 輸入分數後,按下[開始評量(S)]按鈕,評量結果就會出現在下方由框架所圍住的標籤中
輸入不同的分數,評量結果也會不一樣。底下是分別輸入56分及47分後的評量結果

63 步驟 先在表單上放置一個標籤、一個文字框、一個命令鈕、及一個框架
選取框架,使其成為作用中的狀態,並在其中放置一個標籤。完成後的樣子如下圖所示

64 依照下表修改各個物件的屬性值 Form1 Label1 Text1 Command1 Frame1 Label2 Name frmEval
Form1 Label1 Text1 Command1 Frame1 Label2 Name frmEval lblScore txtScore cmdEval famEval LblResult BorderStyle 1 (預設值) Caption 成績評量 分數 開始評量(&S) 評量結果 靠右對齊 Default True MaxLength 3

65 填入命令鈕cmdEval(原Command1)的Click事件程序
1. Private Sub cmdEval_Click() 2. Dim Score As Single 3. Score = Val(txtScore.Text) 4. If Score >= 60 Then lblResult.Caption = "恭喜!您已經通過!" 6. Else If Score >= 50 Then lblResult.Caption = "成績未達標準,但准予補考。" Else lblResult.Caption = "很抱歉!您未通過考試。" End If End If 13. End Sub

66 6-10 多選一的敘述 If…Then…ElseIF敘述 If 條件式1 Then If 條件式1 Then 動作A 動作A
6-10 多選一的敘述 If…Then…ElseIF敘述 If 條件式1 Then If 條件式1 Then 動作A 動作A Else ElseIf 條件式2 Then If 條件式2 Then 動作B 動作B ElseIf 條件式3 Then Else 動作C If 條件式3 Then Else 動作C 動作D Else End If 動作D End If

67 範例 步驟 將前面巢狀If..Then…Else敘述中、cmdEval按鈕的Click事件程序,以If…Then…ElseIf語法改寫一次
開啟範例EX6-6 修改cmdEval按鈕的Click事件程序 1. Private Sub cmdEval_Click() 2. Dim Score As Single 3. Score = Val(txtScore.Text) 4. If Score >= 60 Then lblResult.Caption = "恭喜!您已經通過!" 6. ElseIf Score >= 50 Then lblResult.Caption = "成績未達標準,但准予補考。" 8. Else lblResult.Caption = "很抱歉!您未通過考試。" End If 11. End Sub

68 Select Case敘述 Select Case 條件運算式 Case 條件值1 動作1 Case 條件值2 動作2 Case 條件值3
動作3 Case 條件值N 動作N Case Else 動作N+1 End Select

69 條件運算式 If A > B Then 動作1 End If Select Case A Case > B 動作1 
End Select 條件值

70 條件值 Case後面加上一個常數值 Case 100 Case “字串” Case後面加上 運算式1 To 運算式2
Case "A" To "D" Is加比較運算式 Case Is > 10 Case > 10 混合使用 Case 1 To 4, 7, 9, Is > 100

71 動作 Case Else 由一行或多行的Visual Basic敘述所組成之程式碼區塊 可有可無 處理沒有列舉在前面Case中的狀況
在Select Case敘述中,Case 敘述可以有很多個,而Case Else只能有一個

72 Select Case的應用實例 範例 步驟 將範例EX6-6修改為Select Case敘述的版本 開啟範例EX6-6
修改cmdEval按鈕的Click事件程序 1. Private Sub cmdEval_Click() 2. Dim Score As Single 3. Score = Val(txtScore.Text) 4. Select Case Score 5. Case 60 TO 100 lblResult.Caption = "恭喜!您已經通過!" 7. Case 50 TO 59 lblResult.Caption = "成績未達標準,但准予補考。" 9. Case Is < 50 lblResult.Caption = "很抱歉!您未通過考試。" End Select 12. End Sub

73 Choose(數字型別變數,值為1的傳回值,值為2的傳回值...)
IIf()函數用來代替If...Then...Else敘述,而Choose()函數則可以用來代替Select Case敘述 Choose()函數的格式如下 Choose(數字型別變數,值為1的傳回值,值為2的傳回值...) 實例 S = Choose(N,"壹","貳","參","肆")

74 Switch函數 Switch()函數是If…Then…ElseIf的另一個替代方案。Switch()函數的語法如下 實例
Switch(條件式1,條件式1為True時的值,條件式2,條件式2為True時的值...) 實例 S = Switch(Gender=”M” , "先生",Gender=”F” , "小姐")

75 Exercises 選擇題 2, 5, 8, 9, 13, 15, 16, 20 問答題 1, 2, 6, 10


Download ppt "計算機程式 廖文淵 Department of Computer Science and Engineering"

Similar presentations


Ads by Google