《CH04 流程控制选择结构(IF).ppt》由会员分享,可在线阅读,更多相关《CH04 流程控制选择结构(IF).ppt(68页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Ch04流程控制-選擇結構(if)視窗程式設計授課教師:王大瑾前言程式基本流程-輸入、處理、輸出。輸入和輸出即輸出入介面透過工具箱提供的工具,在表單上拉一拉不用編寫程式碼,就可製作出 視窗應用程式的輸出入介面。處理部份 需熟悉結構化程式的語法及清晰程式邏輯,才能編寫出程式。結構化程式-循序、選擇、重複結構。選擇結構-根據條件,做出不同的選擇。2022/12/2422022/12/243從生活中找出選擇結構4關係運算子關係運算子亦稱比較運算子。使用、=、=、。關係運算子除可比較數值也可做字串比較。關係運算式語法:結果=運算元1關係運算子運算元2關係運算式會將比較的結果以布林值傳回。布林值:Tru
2、e(真)或False(假)兩種。如條件成立傳回True;條件不成立傳回False。運算元可為常值或運算式。5關係運算子關係運算式關係運算子時間和日期視同數值當兩個時間做比較時,時間較晚者大於時間較前。算術運算子優先次序較關係運算子高10-5=8 先做減法結果為5,再比較 5 8?結果 False。字串以 ASCII 碼的大小來比較 a 的 ASCII 碼為 97,b 的 ASCII 碼為 98,所以 b a。若字串第一個字元相同,比第二字元的 ASCII 碼.。ASCII 依序:數字字元值最小,接著大寫字母、小寫字母、最後是中文字。“0”“1”2”9”A”B”Z”a”b”z”And、AndAl
3、soOr、OrElseXor。邏輯運算式表示方式:語法:結果=運算元A邏輯運算子運算元B2022/12/2411例1 條件式:1,000 1000)And (Money=1000)AndAlso(money 10000)例2 條件式:金額(money)小於1,000 或 大於10,000 寫 法:(money10000)(money 10000)2022/12/241213IfThenElse雙重選擇If.Then.Else敘述只有兩種選擇流向意思是若.則.否則.。當條件式為真時,執行敘述區段A;不滿足條件式時,執行敘述區段B。語法:上面流程圖程式碼寫法:If(分數=60)Then Msgbo
4、x(及格”)Else Msgbox(“不及格”)End If上面程式碼用中文字當變數名稱是允許,建議以英文字當變數名稱較宜。由於條件內的敘述區段只有一行允許寫成一行:If 分數=60 Then Msgbox(及格”)Else Msgbox(“不及格”)2022/12/241415若If.Then.Else敘述語法,當條件式不滿足時,不做執行任何敘述,就可省略Else部分,而變成單一選擇。其語法如下:上面流程圖的程式碼寫法如下:上面流程圖的程式碼寫法如下:If If 分數分數 =95 Then=95 Then 獎學金獎學金 =1000=1000End IfEnd If上面的程式碼也可以寫成一行:
5、上面的程式碼也可以寫成一行:If If 分數分數 =95 Then=95 Then 獎學金獎學金 =1000=10002022/12/2416習題一:Filename:passCheck.sln01 Private Sub Form1_Load(ByVal sender)Handles MyBase.Load02 If InputBox(帳號)=abcd And InputBox(密碼)=123 Then03 MsgBox(登入成功!)04 Else05 MsgBox(登入失敗!)06 End If07 End08 End Sub2022/12/241718IfElseIfElse多重選擇當程
6、式流程需兩個條件以上作判斷,且條件式是由上而下逐一檢查時,就可用到IfElseIfElse敘述,語法:2022/12/24192022/12/2420習題二:Step1 建立輸出入介面建立輸出入介面 2022/12/2421Filename:guessNo.sln01 Public Class Form102 Dim ans,times As Integer 宣告ans、times為共用成員整數變數03 Private Sub Form1_Load(ByVal )Handles MyBase.Load04 Dim rnd As New Random 宣告rnd為一個亂數05 ans=rnd.N
7、ext(2,100)用Next方法隨機產生2-99(100-1)的數值06 lblShow.Text=請輸入1到100之間的數字07 End Sub2022/12/242209 Private Sub btnOK_Click(ByVal sender .)Handles btnOK.Click10 Dim guess As Integer11 guess=Val(txtGuess.Text)12 times+=1 13 If guess=ans Then14 lblShow.Text=您答對了!共猜了×.ToString&次!15 ElseIf guess ans Then 若輸入數
8、值小於答案16 lblShow.Text=數字太小了!已猜了×.ToString&次!17 Else 其餘情況18 lblShow.Text=數字太大了!已猜了×.ToString&次!19 End If20 End Sub2022/12/242324SelectCase多重選擇若有兩個以上不同條件需做判斷,需使用多重選擇結構。如條件性質不一樣時,可用IfElseIfElse敘述。如條件性質都一樣時,使用SelectCase敘述。2022/12/2425例1 Case 1:條件值為1例2 Case 1 To 10:條件值1到10例3 Case 5,10,15:條件值為5、1
9、0或15 例4 Case Is=90,Is=14009 MsgBox(您的血壓為&pressure&為高血壓,應該就醫檢查!)10 Case 120 To 13911 MsgBox(您的血壓為&pressure&為高血壓高危險群,應該特別留意!)12 Case 115 To 11913 MsgBox(您的血壓為&pressure&為正常範圍,但應該按時量血壓!14)15 Case Is=10000011 MsgBox(持本公司聯名卡消費金額&money&元,回饋禮券“_&money*0.07&元)12 Case 50000 To 9999913 MsgBox(持本公司聯名卡消費金額&money
10、&元,回饋禮券&_ money*0.06&14元)14 Case 6000 To 4999915 MsgBox(持本公司聯名卡消費金額&money&元,回饋禮券&_ money*0.05&元)16 Case Else17 MsgBox(持本公司聯名卡消費金額&money&元,回饋禮券&_ money*0.02&元)18 End Select2022/12/243319 Else20 If money=3000 Then21 MsgBox(本次消費金額&money&元,可以摸彩&_ Int(money/3000)&次)22 Else23 MsgBox(本次消費金額&money&元,歡迎再次光臨)
11、24 End If25 End If26 End2728 End Sub2022/12/2434IIf、Choose與Switch函式IIf 函式IfThenElse 雙重選擇結構,也可用 IIf 函式來達成。IIf 函式內的三個參數都不可省略,當條件運算式結果為True,會傳回第二個參數;若結果為 False,則傳回第三個參數。語法:IIf(條件運算式,True的傳回值,False的傳回值)2022/12/2435例1 若分數大於等於60訊息框就顯示及格;否則顯示不及格。MsgBox(IIf(分數=60,”及格”,”不及格”)例2 若性別等於”男”,稱謂變數值為先生;否則為小姐。稱謂=IIf
12、(性別=”男”,”先生”,”小姐”)2022/12/2436Choose函式Choose 函式是多重選擇結構的一種。Choose 函式會根據第一個參數的值(整數),傳回相對的參數值。若 Choose 函式中第一個參數 Index=1 時,函式傳回值為 V1;Index=2 傳回 V2 值,以此類推.。若 Index 值小於 1 或大於 n 時,傳回值為 Null(無對應值)語法:Choose(Index,V1,V2,Vn)例1 根據數值(1-5)傳回大寫的國字,如 2 傳回 貳。chi=Choose(i,壹,貳,參,肆,伍)2022/12/2437Switch函式Switch 函式也算是多重選
13、擇結構。Switch 函式會根據運算式的值,傳回對應的參數值先判斷運算式1 是否為真-若為真就傳回 V1;-否則再判斷運算式 2,依此類推。若所有運算式結果皆為假,則傳回 Nothing。2022/12/2438例1 根據郵遞區號(zip)傳回鄉鎮名(city)如 zip=400 傳回台中市。city=Microsoft.VisualBasic.Switch(zip=400,台中市,_ zip=420,豐原市,zip=411,太平市)例2 根據分數傳回獎學金的金額,例如分數=81時傳回 獎學金50。獎學金=Microsoft.VisualBasic.Switch(分數=95,200,分數=90
14、 _ And 分數=80 And分數=89,50,分數=3600)Then 17 change=Val(txtSum.Text)-3600 18 n500=619 n200=320 Else 21 n500=Str(Int(Val(txtSum.Text)/500)22 change=Val(txtSum.Text)-n500*500 23 If n500 6 Then 25 n500=6 26 change+=500 27 End If28 29 n200=Str(Int(change/200)30 change=change-n200*200 31 If n200 3 Then 32 n2
15、00=3 33 change+=(n200-3)*200 34 End If35 End If2022/12/245136 lbl500.Text=Str(n500)&張 37 lbl200.Text=Str(n200)&張 38 lblCash.Text=Str(change)&元 3940 Else 41 lbl500.Text=0 張 42 lbl200.Text=0 張 43 lblCash.Text=txtSum.Text&元 44 End If45 End Sub4647 Private Sub btnQuit_Click(ByVal sender)Handles btnQuit.
16、Click48 End49 End Sub2022/12/2452CheckBox核取方塊控制項核取方塊和選項按鈕 控制項都供選取項目用選項按鈕具互斥性,只能單選。核取方塊選項每個核取方塊都可獨立挑選,允許多選。下圖三個核取方塊,每個方塊都可獨立勾選或不勾選2022/12/2453核取方塊常用屬性1.Checked屬性(預設值為False)若為True,表核取方塊被勾選。若為 False,表未被勾選。如要在程式執行階段才設為勾選,寫法:CheckBox1.Checked=True 被選取 CheckBox1.Checked=False 未被選取2.ThreeState屬性(預設值為False)
17、若為 False,表只有勾選或未被勾選兩種狀態。若為True ,表有三種變化,此屬性和 CheckState屬性相關連。2022/12/24543.CheckState 屬性(預設值為Unchecked)用來設定核取方塊目前勾選的狀態。當 ThreeState=False 時,此屬性只有Checked(勾選)和 Unchecked(未勾選)兩種狀態。當 ThreeState=True 時,此屬性有Checked(勾選)、Unchecked(未勾選)和 Indeterminate(不確定勾選)三種狀態。CheckState 屬性可用常數表示,也可用數字表示:2022/12/2455核取方塊常用事
18、件當 ThreeState=False 時,按核取方塊依序觸動 CheckedChanged()事件 CheckStateChanged()事件 Click()事件CheckedChanged 事件是核取方塊控制項的預設事件,當 Checked 屬性值改變時,就會觸發此事件。當 CheckState 屬性值改變時,會觸發 CheckStateChanged 事件。2022/12/2456核取方塊常用事件當 ThreeState=True 時,若勾選狀態為不確定時,是不會觸動 CheckedChanged 事件程序。判斷核取方塊勾選狀態程式碼:若 ThreeState=False 時,寫在 Ch
19、eckedChanged 事件程序中。若 ThreeState=True 時,寫在 CheckStateChanged 事件程序中。2022/12/2457GroupBox框架與Panel面板控制項選項按鈕具備有互斥性。若有多組選項要同時存在表單時,需要 GroupBox框架與 Panel 面板控制項來隔離。GroupBox 與 Panel 控制項具有容器功能,也就該控制項內可安置其他物件,和容器外物件隔離。如希望 將物件和其他物件隔離,或分類擺放使畫面整齊時,需使用框架、面板控制項。2022/12/2458GroupBox框架與Panel面板控制項容器內物件的座標值是以容器為基準,和表單物件
20、無關。當移動容器時,其中的物件也隨移動。因容器和所屬物件有隸屬關係,在建立物件時要特別留意。容器(GroupBox、Panel控制項)要先建立,然後容器內的物件需在容器內拖曳出來,才會成為所隸屬的物件。我們可移動容器,若物件隨之移動表該物件被安置在容器中。2022/12/2459框架控制項常用屬性 1.Text屬性GroupBox框架控制項主要用來當容器用,所以沒有重要的屬性。常用屬性 Text屬性,可設定標題文字來顯示此框架的功能。2022/12/2460面板控制項常用屬性Panel 面板控制項也具有容器功能,和框架控制項外觀最大不同是左上角沒文字,但可顯示捲軸。1.AutoScroll屬性
21、(預設值為False)設定當物件超出面板時,是否自動顯示捲軸。2.BorderStyle屬性(預設值為 None)設定面板的邊框樣式,樣式有三種:-None 無邊框-FixedSingle 單線框-Fixed3D 立體框。2022/12/24612022/12/2462習題六:step1 建立輸出入介面建立輸出入介面2022/12/2463FileName:bodyCheck.sln03 Private Sub OK_Click(ByVal sender .)Handles OK.Click04 Dim show As String=05 If txtWaist.Text=Or txtBott
22、om.Text=Then06 show=請務必輸入腰圍和臀圍!07 Else08 Dim sex As String 性別稱呼(你or妳)09 Dim waist As Integer 標準腰圍的最大值10 Dim case1,case2 As Single11 If rdbMan.Checked=True Then12 sex=你:waist=9013 case1=0.9:case2=0.8514 Else15 sex=妳:waist=8016 case1=0.8:case2=0.7517 End If2022/12/246418 If Val(txtWaist.Text)waist The
23、n19 show&=sex&的腰圍太粗!&vbNewLine20 Else21 show&=sex&的腰圍正常!&vbNewLine22 End If23 Select Case Val(txtWaist.Text)/Val(txtBottom.Text)24 Case Is case125 show&=上半身肥胖屬蘋果型身材!&vbNewLine26 Case case2 To case127 show&=WHR腰臀圍比例正常!&vbNewLine28 Case Is case229 show&=下半身肥胖屬梨子型身材!&vbNewLine30 End Select2022/12/2465F
24、ileName:bodyCheck.sln31 show&=IIf(chk1.Checked=True,有,沒有)&_ 遺傳的肥胖因子&vbNewLine32 show&=IIf(chk2.Checked=True,有,沒有)&_ 飲食習慣的肥胖因子&vbNewLine33 show&=IIf(chk3.Checked=True,有,沒有)&_ 缺乏運動的肥胖因子&vbNewLine34 show&=IIf(chk4.Checked=True,有,沒有)&_ 心理方面的肥胖因子&vbNewLine35 End If36 MsgBox(show)38 End Sub2022/12/2466期中考(A)2022/12/2467期中考(B)2022/12/2468