您好,欢迎访问三七文档
CHAPTER7流程圖與選擇結構學習目標讓讀者了解1.利用電腦處理問題的步驟2.流程圖的意義與用法3.程式的基本結構有那些?4.選擇結構有那些相關的敘述與函數?5.If-Then敘述的功能與用法6.If-Then-Else敘述的功能與用法7.巢式If敘述的用法8.Select敘述的功能與用法9.IIf、Choose與Switch函數的功能與用法10.MsgBox敘述與函數的功能與用法-訊息方塊的產生與運用7-1利用電腦處理問題的步驟一、瞭解問題:先瞭解問題的要求及條件,確定需要輸入的資料及輸出的結果。二、設計解題程序:研究分析解題方法,構思有效可行的處理程序,可以用流程圖(FlowChart)來表達所要處理的步驟。三、編寫程式:依程式語言的語法規則,將解題的程序轉寫成程式。四、上機執行:將程式自鍵盤輸入電腦執行。五、檢查結果:檢查輸出結果是否正確,如果不正確,再將錯誤的原因找出來,並加以更正。7-2流程圖的意義流程圖是利用簡明、標準的圖形及線條,來描述程式的處理步驟。常用的流程圖有下列六種:1.開始或結束符號(起訖符號):表示流程圖的起點或終點,一個流程圖必須有起點及終點,而且只能有一個起點,但可以有一個以上的終點。【例1】:開始或結束符號開始結束2.處理符號:表示一件工作的處理,可在內部列出計算公式或處理動作。【例2】:計算a=b+c處理符號3.輸入或輸出符號:由輸入設備輸入資料,或由輸出設備輸出資料。【例3】:輸入n值輸入或輸出符號【例4】:輸出n值a=b+c輸入n輸出n4.流向符號:表示程式進行的方向。表示有一個條件要判斷,並根據其結果決定下一個執行步驟。菱形內註明待判斷的條件,通常有一個入口,二個或三個出口。【例7】5.決策符號6.迴圈符號:利用迴圈(Loop)敘述時使用。流程圖是畫來給人看的,可作為自己或別人瞭解程式做法及處理步驟的一種參考文件。初學程式語言的人,在設計程式之前,最好先利用流程圖來規劃整個程式結構,訓練處理問題的邏輯思路,對於程式邏輯比較容易融會貫通。(可利用Word軟體中的【插入/圖片/快取圖案/流程圖】來製作流程圖)流程圖是畫來給人看的,可作為自己或別人瞭解程式做法及處理步驟的一種參考文件。初學程式語言的人,在設計程式之前,最好先利用流程圖來規劃整個程式結構,訓練處理問題的邏輯思路,對於程式邏輯比較容易融會貫通。(可利用Word軟體中的【插入/圖片/快取圖案/流程圖】來製作流程圖)7-3程式的基本結構一、循序結構:指多個敘述依序執行的方式。【例1】循序結構x=Inputbox(請輸入第一個數)y=Inputbox(請輸入第二個數)s=x+yPrint兩數的和=;s意義:依序執行四個敘述二、選擇結構:根據某一條件是否成立,來選擇不同的執行路徑。此結構常用的有下列三種型式:1.If-Then結構【例2】假如xy就計算x-yIfxyThena=x-y意義:以xy為條件式,如果成立就執行a=x-y2.If-Then-Else結構【例3】購買數量=10,售價打八折Ifq=10Thena=p*q*0.8Elsea=p*q意義:以q=l0為條件式,如果成立就執行a=p*q*0.8,否則(條件不成立)就執行a=p*q3.SelectCase結構【例4】根據c值輸出剪刀、石頭或布SelectCasecCasela=剪刀Case2a=石頭Case3a=布EndSelect意義:以c為條件式的比較對象,分別按c的內容而做下列的處理:c=l→a=剪刀,c=2→a=石頭,c=3→a=布三、重覆結構:根據某一條件是否成立,來控制一段敘述的重覆執行,而造成迴圈(Loop)的運作。此結構常用的有下列三種型式:(將在第九章介紹)l.For-Next結構【例5】輸出1、3、5Fori=1To5Step2PrintiNexti意義:For與Next之間形成一個迴圈,其中的敘述Printi,依i=1、3、5共執行三次,即印出1、3及5。(此例之條件為i由1到5,每次增加2)2.Do-While結構【例6】輸出1、3、5i=1DoWhilei=5Printii=i+2Loop意義:以i=5為條件式,如果條件成立,就重覆執行Do與Loop之間的敘述。3.Do-Until結構【例7】累加輸入的數值,直到輸入0為止a=Inputbox(請輸入一個數“)DoUntila=0s=s+aa=Inputbox(請輸入一個數)Loop意義:以a=0為條件,如果條件成立就停止執行Do與Loop之間的敘述,否則就重覆執行該段敘述。7-4If-Then敘述If-Then的中文意思是「假如…就執行…」。格式一:If條件式Then敘述如果If後面的條件式成立了,就接著執行Then後面的敘述,完成後再執行下一列的敘述;如果條件未成立,則直接執行下一列的敘述。【例1】求某一數值變數a的絕對值。Ifa0Thena=-aPrinta【例2】輸入購書數量及單價,假如購買十本以上,就打八折,否則不打折,計算並輸出購書金額。1PrivateSubForm_Activate()2DimqtyAsInteger,priceAsInteger,moneyAsInteger3qty=InputBox(請輸入購書數量,購書數量)4price=InputBox(請輸入單價,單價)5money=price*qty6Ifqty=10Thenmoney=money*0.87Print購書金額=;money;元8EndSub【執行情況】第一次執行:第二次執行:1.輸入2.按此鈕3.輸入1.輸入2.按此鈕【例3】輸入1~3的代號,再輸出對應的剪刀、石頭、布)1PrivateSubForm_Activate()2DimcAsString3c=InputBox$(請輸入代號1~3)4Print你選的是:;5Ifcode=1ThenPrint剪刀6Ifcode=2ThenPrint石頭7Ifcode=3ThenPrint布8EndSub【執行情況】1.輸入2.按此鈕【例5】多個連續敘述的用法Ifk=1Thena=a+1:b=b+1:c=c+1Ifk=2Thena=a+3:b=b+3:c=c+3【說明】要連續執行的多個敘述,可用冒號(:)分隔而排在同一列上。格式二:If條件式Then敘述區段EndIf(敘述區段代表兩列以上的敘述)【例6】例4改成格式二Ifk=1Thena=a+1b=b+1c=c+1EndIfIfk=2Thena=a+3b=b+3c=c+3EndIf7-5IF-Then-Else敘述格式一:IF條件式Then敘述1Else敘述2(此格式係一列完成)【例1】根據分數(s),印出「及格」或「不及格」Ifs60ThenPrint不及格ElsePrint及格或Ifs=60ThenPrint及格ElsePrint不及格【例2】計算購書金額(money):數量(qty)在十本以上,就打八折,否則不打折。(price為單價)Ifqty=10Thenmoney=price*qty*0.8_Elsemoney=price*qty格式二:IF條件式Then敘述區段1Else敘述區段2EndIf【說明】假如在Then或Else下面的敘述區段中,再使用If敘述,則稱為巢式If敘述(NestedIfStatement),如下:IF條件式1Then:IF條件式2Then敘述區段AElse敘述區段BEndIf:Else:IF條件式3Then敘述區段CElse敘述區段DEndIf:EndIf【例3】根據分數(s),印出「及格」「恭喜」或「不及格」「請多用功!」Ifs60ThenPrint不及格Print請多用功!ElsePrint及格Print恭喜!EndIf【例4】巢式If敘述的應用:根據分數的範圍,輸出文字如下:60「不及格」「請多用功!」60~89「及格」「恭喜!」=90「優等」「發獎狀一張!」Ifs60ThenPrint不及格Print請多用功!ElseIfs90ThenPrint及格Print恭喜!ElsePrint優等Print發獎狀一張!EndIfEndIfIF條件式1Then敘述區段1[ElseIf條件式mThen敘述區段m::]Else敘述區段nEndIf格式三:最後用Else,安排上述條件都不符合時要執行的工作【例5】將例4改用格式三Ifscore60ThenPrint不及格Print請多用功!ElseIfscore90ThenPrint及格Print恭喜!ElsePrint優等Print發獎狀一張!EndIfc=InputBox$(請輸入一個字元)Ifc=AAndc=ZThenPrint大寫字母ElseIfc=aAndc=zThenPrint小寫字母ElseIfc=0Andc=9ThenPrint數字ElsePrint不是字母或數字EndIf【例6】判斷輸入的字元是大寫字母、小寫字母、數字或都不是7-6IIf函數格式:IIf(條件式,資料1,資料2)1.如果條件式成立(結果為True),就傳回資料1,不成立(結果為False)則傳回資料2。2.資料1與資料2都可配用數值、字串或運算式。【例1】假如購書十本以上,就打八折,否則不打折,計算並輸出購書金額。Print購書金額=;IIf(qty=10,price*qty*0.8,price*qty);元【例2】根據分數(score),印出「及格,恭喜!」或「不及格,請多用功!」PrintIIf(score=60,及格,恭喜!,不及格,請多用功!)SelectCase運算式Case測試資料1敘述區段1Case測試資料2敘述區段2…Case測試資料n敘述區段n[CaseElse敘述區段]EndSelect7-7SelectCase敘述如果末加列CaseElse,而所有Case後的測試資料都不符合時,將會順著離開Select結構,而執行EndSelect下面的敘述。【例1】SelectCase的應用01c=InputBox(請輸入代號1~3)02SelectCasec03Case104Print剪刀05Case206Print石頭07Case308Print布09CaseElse10Print代號錯誤!11EndSelectCase測試資料的用法一、使用單一或多個常數:如果運算式的結果值等於其中一個常數,就算符合該Case的條件。如下:Case1CaseSUNCase1,2,3,4Case2,4,8,16,32,64CaseMON,TUE,WED,THU,FRICase台北,台中,高雄二、利用常數指定範圍:如果運算式的結果值在範圍之內,就算符合該Case的條件。如下:Case1To4運算式的結果值為1~4均符合條件CaseAToZ運算式的結果值為A~Z的26個字母均符合條件三、測試資料為關係運算式的型態:必須在Case後加列關鍵字Is,如果運算式的結果值符合該運算式之條件,就算符合該Case的條件。如下:CaseIs=60運算式的結果值≧60就符合條件CaseIsSUN運算式的結果值≠SUN就符合條件CaseIs=Y運算式的結果值為Y就符合條件四、將前述三種用法混合使用。如下:Case10To20,30,Is60運算式的結果值為10~20,或等於30,或>60,均符合條件。CaseAToD,I,J,Is=P運算式的結果值為A~D,或I,或J,或P~Z等字母均符合條件【例2】輸入成績,再輸出如7-5節例4的文字。01SelectCasescore02CaseIs6003Print不及格04Print請多用功!05Case60To8906Print及格07Print恭喜!08CaseElse09Print優等10Print發獎狀一張!11EndSelect【討論】此程式的考慮比較單純,如果分數為負值或高於100分,會怎樣?應該如何修改程式,才會比較周全?7-8Choose函數格式:Choose(i,資料1[,資料2,…[,資料n]])【功能】依i的整數值,傳回其後面參數中對應的資料
本文标题:流程图与选择结构
链接地址:https://www.777doc.com/doc-1043919 .html