1 / 135

流程控 制 ─ 選擇性執行程式

流程控 制 ─ 選擇性執行程式. 第 6 章. 本章重點提要. 6-1 條件式:判斷真或假的運算式 6-2 If 敘述:選擇性執行 6-3 If() 運算子:依條件傳回不同的值 6-4 Select Case :依資料做多重選擇 6-5 做為選擇用的控制項. 本章閱讀建議. 『 流程控制 』 就是改變程式的執行流程 , 例如我們想依照使用者的性別 , 來決定要顯示 『XXX 先生 』 或 『XXX 小姐 』, 這時就可以使用 If 之類的敘述來加以判別 , 以決定要執行哪段程式。

pooky
Télécharger la présentation

流程控 制 ─ 選擇性執行程式

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 流程控制 ─選擇性執行程式 第 6 章

  2. 本章重點提要 • 6-1 條件式:判斷真或假的運算式 • 6-2 If 敘述:選擇性執行 • 6-3 If() 運算子:依條件傳回不同的值 • 6-4 Select Case:依資料做多重選擇 • 6-5 做為選擇用的控制項

  3. 本章閱讀建議 • 『流程控制』就是改變程式的執行流程, 例如我們想依照使用者的性別, 來決定要顯示『XXX 先生』或『XXX 小姐』, 這時就可以使用 If 之類的敘述來加以判別, 以決定要執行哪段程式。 • 本章及下一章都會介紹流程控制, 讀者只要多看範例, 多跟著做, 就能完全學會。

  4. 本章閱讀建議 • 6-1 條件式:判斷真或假的運算式:它是由比較運算 (大於、小於...) 或邏輯運算 (且、或...) 所組成, 而運算的結果只有 2 種:True 或 False。這部分很容易, 只要有一點數學基礎就可以輕鬆過關。 • 6-2 If 敘述:選擇性執行:就是依照條件式的真假, 來決定要執行哪些程式。If 的觀念很簡單, 但在使用上有幾種變化,請讀者務必要熟悉這些用法。

  5. 本章閱讀建議 • 6-3 If() 運算子:依條件傳回不同的值:這是一種簡化的 If 敘述,讀者只要看看範例就能馬上學會。如果好好利用, 可讓您的程式更加簡潔有力喔! • 6-4 Select Case:依資料做多重選擇:如果對同一份資料要做許多的判斷, 例如依照各年齡層做不同的處理, 這時就可以改用Select Case 敘述, 讓程式更容易撰寫及閱讀。

  6. 本章閱讀建議 • 6-5 做為選擇用的控制項:包括『單選鈕』與『多選鈕』二種, 其用法就和考試的單選題與多選題類似。本節的範例比較有趣, 會搭配單選鈕、多選鈕來展示字體的變化 (包括改變字型、大小、粗體、斜體等), 千萬別錯過哦!

  7. 6-1 條件式:判斷真或假的運算式 • 在程式中我們經常要判斷真假, 例如在計算成績時, 如果成績小於60 分就評為 "不及格", 那麼『成績是否小於 60 分』就是一個條件式, 可以寫成如下的程式:

  8. 條件式:判斷真或假的運算式 • If...Then...Else...End If 是條件判斷敘述, 可依照條件式的真假來決定要執行哪一部份的程式。If 的用法我們留到下一節再介紹, 本節先來看看條件式的組成。條件式可由以下二種運算所組成, 而其運算的結果則是一個布林值 (True 或 False): • 比較運算:就是比較大小或比較是否相等, 例如 『a > 9』、『s = "ok"』 都是。 • 邏輯運算:就是『且 (And)』、『或 (Or)』之類的運算, 例如『a>1 And a<3』, 則必須二個子條件都成立, 即 a>1、a<3 都是 True, 那麼『且』的運算結果才會是 True。

  9. 比較運算 • 比較運算的結果會是一個布林值 (True 或 Fasle), 在 VB 中共有 6種比較運算子:

  10. 比較運算 • 請將以下條件寫成條件式: (1) 成績 (g) 大於或等於 90? (2) 價錢 (p) 不等於 100? (3) 年齡 (a) 不超過 18? (4) 優勝者 (w) 是 "Mary"? (5) 飛機 (時速:a) 比火車快 (時速:t)? (1) g >= 90 (2) p <> 100 (3) a <= 18 (4) w = "Mary" (5) a > t

  11. 日期與日期的比較 • 日期資料可包含『日期』與『時間』二部份, 在做比較時, 會先比較日期, 若相等則再比較時間。例如下面的條件式均為 True:

  12. 日期與日期的比較 • 如果只有日期沒有時間, 那麼時間就是最小的 #0:0:0#(凌晨, 也可寫成#12:00:00 AM# );如果只有時間沒有日期, 則日期為最小值#1/1/0001#。請再看以下的例子 (運算結果均為 True):

  13. 日期與日期的比較 • 請判斷下面各條件式的結果: (1) #2/2/2011 8:00# < #2/2/2010 9:00# (2) #02/02/2011# < #2/2/2011# (3) "02/02/2011" < "2/2/2011" (4) #8:00# = #8:00 AM# (5) #8:00# > #5/5/2008 7:00# (1) False (2) False (日期相同) (3) True (因為是字串的比較,請參見下一頁) (4) True (5) False

  14. 字串與字串的比較 • 在上一章中, 我們介紹過字串是由『Unicode 編碼』的字元所組成, 因此在比較字串或字元時, 也是以 Unicode 編碼來比較。底下我們將一些常用的字元由小到大列出:

  15. 字串與字串的比較 • 接著我們來看實例: • 如果想知道字元的 U n i c o d e 編碼, 可使用 A s cW( ) 函式。例如AscW("0") = 48、 AscW("A") = 65、AscW("a") = 97、AscW("好")= 22909。

  16. 字串與字串的比較 • 在比較字串時, 會先比較字串中的第一個字元, 若相等就再比較第二個字元, 以此類推, 直到比出大小、或有一方先結束 (字串長度較短的視為比較小) 為止。下面比較的結果均為 True:

  17. 字串與字串的比較 • 請判斷下面各條件式的結果: (1) "abc" < "abC" (2) "100" > "50" (3) "Big" < "大" (4) "A112" > "A12" (5) "大家" < "大家好" (6) "A" = "A"c (7) "Flag" > "G"c (8) "flag" >= "Flag" (9) "3.14" <= "3.1415926"

  18. 字串與字串的比較 (1) False (2) False (因為字元"1"<"5") (3) True (4) False (5) True (6) True (字元 "A" c 會先轉為字串 "A" 再進行比較) (7) False (8) True (9) True

  19. "100" > 50? • 字串與數值的比較時, 會優先將字串『自動型別轉換』為數值, 然後再做比較,例如: "100" > 50 100 > 50 結果為 True • 不過『自動型別轉換』雖然方便, 但卻容易混淆, 因此建議讀者還是自行利用Val() 函式來轉換型別, 會比較保險一些。例如: Val(s) > 50 '先將 s 轉換為數值, 再與 50 比較

  20. 邏輯運算 • 邏輯運算是針對布林值 (True 或 False) 來做運算, 而運算的結果也是布林值。 例如:

  21. 邏輯運算 • Not 是『不是』(相反) 的意思, 因此『不是 True』的結果, 就變成False 了。常用的『邏輯運算子』除了 Not 之外, 還有 And、Or、及 Xor 三種, 如下表所示:

  22. 邏輯運算 • 前 3 個邏輯運算子的意義, 就和我們口語的『不是、且、或』完全相同, 所以應該很容易理解;最後一個 Xor, 則是當 A 和 B 的邏輯值不相同 (恰好一真一假) 時才為真, 否則為假。下表將所有可能的運算組合與結果都列出來 (稱為真值表), 供您參考:

  23. 邏輯運算 • 由於 Not 只需要一個運算對象 (運算元), 因此稱為『一元邏輯運算子』;而其他 3 個則為『二元邏輯運算子』, 需要二個運算對象。底下我們來看一些實例:

  24. 邏輯運算 • 在上面的最後一行, 由於『比較運算的優先順序大於邏輯運算』,因此 9>6、3<2 會先運算, 然後再將這二個運算結果做 And 運算。另外, 多個邏輯運算子也可以同時出現, 此時的運算優先順序為『Not > And > Or > Xor』, 例如:

  25. 邏輯運算 • 以上的式子其實並不容易了解, 而且順序也很容易弄錯。因此, 建議大家還是多用小括號來標出運算的順序:

  26. 邏輯運算 • 所有比較運算子的優先順序都相同, 而且都高於邏輯運算子, 但低於算術 (+ - * / . . . ) 和串接 (&) 運算子。 • 請填寫以下的真值表:

  27. 邏輯運算 • 請寫出以下所描述的條件式: (1) 我的年齡(a) 大於 15 歲, 但小於 25 歲。 (2) 考試日期(d) 不是在 10/21/2010 以前, 就是在 10/25/2010 以後。 (3) 她的名字(n) 既不是 "Jenny", 也不是 "Mary"。 (4) 如果真的要考試(isEx), 而且日期(d) 是今天, 而且時間(t) 是現在。 (5) 紅燈(r) 與藍燈(b) 必須保持一個燈亮(True) 一個燈暗(False)的狀況, 否則視為固障(False)。 (6) 她們二個人 (x、y) 只有一個人的名字叫 "Sue"。

  28. 邏輯運算 (1) a < 25 And a > 15 (2) d < #10/21/2010# Or d > #10/25/2010# (3) n <> "Jenny" And n <> "Mary" (也可寫成 Not n = "Jenny" And Not n = "Mary") (4) isEx And d = Today And t = TimeOfDay (isEx 也可寫成 isEx = True) (5) r Xor b (6) x = "Sue" Xor y = "Sue"

  29. 邏輯運算 • 使用 Today 可取得今天的日期 (時間固定為 #0:0:0# );使用TimeOfDay 則可取得目前的時間 (日期固定為 #1/1/0001#)。

  30. 檢查範圍的條件式 • 如果 a 是在某個範圍之內, 則通常會用 And 條件來指定, 例如『a> 5 And a < 25』, 或『a >= 5 And a <= 25』(包含 5 及 25 時)。

  31. 檢查範圍的條件式 • 反之, 如果 a 是在某個數值範圍之外, 則可用 Or 條件來指定, 例如『a < 5 Or a > 25』, 或『a <= 5 Or a >= 25』(包含 5 及 25 時)。

  32. 檢查範圍的條件式 • 在上一章中, 我們曾寫了一個將使用者輸入的數值, 分別以十進位、十六進位、及八進位顯示出來的程式;請再加入『檢查使用者輸入值是否正確』的功能。

  33. 檢查範圍的條件式

  34. 檢查範圍的條件式 • 請開啟範例專案 Ch06-01。 • 請加入下面灰底區程式, 以進行簡單的數值檢查 ( 為了不要太複雜, 我們只檢查第一個字元):

  35. 檢查範圍的條件式

  36. 檢查範圍的條件式 • 其實 VB 有提供一個 IsNumeric(字串) 函式, 可用來判斷字串中是否為正確的數值格式。請將上面程式改良為使用 IsNumeric() 函式來檢查。

  37. 檢查範圍的條件式 • 和 IsNumeric( ) 類似的函式還有 IsDate( ), 可用來判斷是否為正確的日期時間格式, 例如:IsDate("08 15, 2010 10:22 AM") 會傳回True, IsDate("Hello") 則傳回 False。

  38. 6-2 If 敘述:選擇性執行 • 相信大家對於 If 敘述已經很熟悉了, 本節會先為您做個總整理, 然後再補充一些新的應用, 讓您在寫程式時可以有更多的選擇!

  39. 3 種基本的 If 結構 • 最簡單的 If 結構只有一行, 就是『If ... Then ...』, Then 後面只接一個指令, 例如:

  40. 3 種基本的 If 結構 • 如果當條件成立時要執行多行的程式, 則可使用『If ... Then ...End If』結構, 例如:

  41. 3 種基本的 If 結構 • 當我們在程式中輸入 IF ... Then 然後按 鍵換行時, VB 會很體貼地在下二行的位置自動加入 End If, 幫我們節省一些打字的時間。

  42. 3 種基本的 If 結構 • 最後, 則是加入 Else (否則) 的結構, 例如:

  43. 巢狀的 If 結構 • 在 If 結構中還可以再有 If 結構, 我們稱之為『巢狀 If 結構』, 例如:

  44. 巢狀的 If 結構 • 百貨公司週年慶, 促銷折扣的規則如下, 請寫一個程式來計算應付金額。

  45. 巢狀的 If 結構

  46. 巢狀的 If 結構 • 請開啟範例專案 Ch06-02, 我們已加入了所需的控制項:

  47. 巢狀的 If 結構 • 除了以上標示的屬性設定外, 表單的 AcceptButton ( 預設按鈕)屬性也設為 Button1, 而 TextBox2 的 Enabled ( 可以操作) 屬性則設為 False, 表示不允許輸入或編輯資料。

  48. 巢狀的 If 結構 • 先大致畫出計算的流程圖:

  49. 巢狀的 If 結構 • 雙按 Button1 按鈕, 然後輸入下面程式:

  50. 巢狀的 If 結構 • 以上是先輸入『計算應付金額』的程式, 請按 鍵測試看看, 如果沒問題則再輸入剩下的部份 ( 下面灰底的程式):

More Related