選擇與分支課件_第1頁
選擇與分支課件_第2頁
選擇與分支課件_第3頁
選擇與分支課件_第4頁
選擇與分支課件_第5頁
已閱讀5頁,還剩76頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

選擇與分支24.1.1 選擇與分支

例如,一元二次方程的系數(shù)a、b、c,求該方程的根34.1.2 條件與判斷在計算機程序語言中,使用條件表達式來描述條件。例1,有一分段函數(shù)如下,要求根據(jù)輸入的x,計算并輸出y的值。4例1的分段函數(shù)的4個條件分析共有4個與x相關的條件,這些條件按照關系表達式或邏輯表達式的格式可分別描述如下:x<0x>=0andx<10x>=10andx<100x>100分析: 一般來說,對于有n種可能的情況,只需要做n-1次判斷就夠了。5例2,題目描述根據(jù)輸入的三個正數(shù)a、b、c,確定以它們?yōu)檫吥芊駱嫵扇切稳绻軜嫵扇切危倥袛嗍堑冗吶切?、直角三角形、等腰三角形、等腰直角三角形還是普通三角形6例2,解決方案:(1)如果a≤0或b≤0或c≤0,則輸入出錯(邊長必須大于零);否則轉下一步。(2)如果a+b≤c或b+c≤a或c+a≤b,則不能構成三角形(可以直接給出結果并結束程序);否則轉下一步。(3)如果a=b并且b=c,則構成等邊三角形;否則轉下一步。7例2,解決方案:(4)如果a=b或b=c或c=a,則(嵌套)進一步判斷是否有兩邊平方和等于第三邊的平方,如果有,則構成等腰直角三角形;否則僅構成等腰三角形;如果沒有任何兩邊相等,則轉下一步(5)如果有兩邊平方和等于第三邊的平方,則構成直角三角形,否則(即以上都不是)是普通三角形。8多種情況的判斷順序首先應該排除不合理的情況,然后根據(jù)可能性從大到小排列各種條件,將對多發(fā)情況的判斷放在前面,而將對極少發(fā)生的情況的判斷放在后面。9條件表達式的構成在構成條件表達式時,即關系表達式或邏輯表達式等,可以使用常量變量標準函數(shù)自定義函數(shù)過程104.1.3 分支結構基本特點根據(jù)條件控制某個程序段執(zhí)行或不執(zhí)行。分支結構一般分為兩種:只有一個條件的簡單分支結構具有多個條件的分支結構111只有一個條件的簡單分支結構S1S2C是否S1C是否圖4.1只有一個條件的簡單分支結構(a)(b)122具有多個條件的分支結構S1SnC1是否S2是否S3是否圖4.2具有多個條件的分支結構……C2C313每個分支中的程序段每個分支中的程序段S,可以是簡單語句,類似于賦值語句分支結構的復雜語句若在程序段S中出現(xiàn)了新的分支結構,這時就形成了分支結構的嵌套

循環(huán)結構的復雜語句144.2 分支語句4.2.1IF語句4.2.2SELECTCASE語句

154.2.1 IF語句1)單行結構條件語句語法格式為:If<條件表達式>Then<語句1>[Else<語句2>]2)多行結構條件語句語法格式為:If<條件表達式>Then<語句序列1>[Else <語句序列2>]EndIf16IF語句3)ELSEIF結構條件語句語法格式為:If<條件表達式1>Then<語句序列1>ElseIf<條件表達式2>Then<語句序列2>…[Else<語句序列n>EndIf17【例4.1】題目:輸入x,根據(jù)一下公式,計算y的值。18解題:程序流程圖和窗體布局圖4.3例4.1程序流程圖圖4.4例4.1的運行界面19Command1的Click事件代碼編寫Command1(即caption為“計算”的按鈕)的Click事件過程如下:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)

Ifx>=0Theny=1+xElsey=1-2*xLabel2.Caption="函數(shù)值y等于:"+Str(y)EndSub20【例4.2】任意輸入三個數(shù),將它們按從小到大的順序打印輸出。圖4.5例4.2程序流程圖21圖4.6例4.2的運行界面布局22命令按鈕Command1的Click事件過程代碼PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingleDimminAsSingle,secAsSingleDimmaxAsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)Ifa>bThenmax=amin=bElsemax=bmin=aEndIf23命令按鈕Command1的Click事件過程代碼續(xù):Ifc>maxThensec=maxmax=cElse

Ifc<minThensec=minmin=cElsesec=c'c是中間數(shù)

EndIfEndIfLabel2.Caption=

"從小到大是:"+Str(min)+","+Str(sec)+","+Str(max)EndSub24【例4.3】題目:根據(jù)2008年3月1日起執(zhí)行的我國個人所得稅法的規(guī)定,工資、薪金所得個人所得稅按表4.1所列個人所得稅稅率表計算。試編寫程序,輸入一個人的月收入,輸出其應繳個人所得稅。25表4.1個人所得稅稅率表級數(shù)全月應納稅所得額稅率(%)速算扣除數(shù)1不超過500元的502超過500元至2000元的部分10253超過2000元至5000元的部分151254超過5000元至20000元的部分203755超過20000元至40000元的部分2513756超過40000元至60000元的部分3033757超過60000元至80000元的部分3563758超過80000元至100000元的部分40103759超過100000元的部分451537526分析1根據(jù)規(guī)定,納稅人每月取得工資收入后,先減去個人承擔的基本養(yǎng)老保險金、醫(yī)療保險金、失業(yè)保險金,以及按省級政府規(guī)定標準繳納的住房公積金,再減去免征額2000元,余額為應納稅所得額,對應納稅所得額按5%至45%的九級超額累進稅率計算繳納個人所得稅。計算公式如下:應納個人所得稅稅額=應納稅所得額×適用稅率-速算扣除數(shù)27分析2例如,王某當月取得工資收入9000元,當月個人承擔住房公積金、基本養(yǎng)老保險金、醫(yī)療保險金、失業(yè)保險金共計1000元,免征額為2000元,則王某當月應納稅所得額=9000-1000-2000=6000元,應納個人所得稅稅額=6000×20%-375=825元。28圖4.7例4.3的運行界面29命令按鈕的Click事件過程代碼如下:PrivateSubCommand1_Click()

DimysrAsDouble,yljAsDouble,ylbxjAsDoubleDimsybxjAsDouble,zfgjjAsDouble,slAsDoubleDimsskcsAsDouble,sdsseAsDoubleysr=Val(Text1.Text)ylj=Val(Text2.Text)ylbxj=Val(Text3.Text)sybxj=Val(Text4.Text)zfgjj=Val(Text5.Text)ysr=ysr-ylj-ylbxj-sybxj-zfgjj-200030Ifysr<=500Thensl=5sskcs=0ElseIfysr<=2000Thensl=10sskcs=25ElseIfysr<=5000Thensl=15sskcs=125ElseIfysr<=20000Thensl=20sskcs=37531ElseIfysr<=40000Thensl=25sskcs=1375ElseIfysr<=60000Thensl=30sskcs=3375ElseIfysr<=80000Thensl=35sskcs=637532ElseIfysr<=100000Thensl=40sskcs=10375Elsesl=45sskcs=15375EndIfsdsse=ysr*sl/100-sskcsLabel4.Caption=Str(sl)Label5.Caption=Str(sdsse)EndSub33IIF函數(shù)其格式為:IIF(<條件表達式>,<A>,<B>)用于 實現(xiàn)簡單雙分支計算問題例如:Ifx>0Theny=1Elsey=-1可以表達成y=IIF(x>0,1,-1)344.2.2 SELECTCASE語句SelectCase<被測試表達式>Case<表達式1><語句序列1>Case<表達式2><語句序列2>……[CaseElse<其他語句序列>]EndSelect35在該語句中,<被測試表達式>可以是數(shù)值表達式、字符串表達式、邏輯表達式,或者日期表達式。每個Case部分的<表達式>均用來描述被測試表達式的取值情況,可以是以下幾種格式:<表達式>[,<表達式>][,…]。逐個列舉可能的取值。例如:Case1,3,5,7,表示被測試表達式的取值為1、3、5、7這四種情況。<表達式1>To<表達式2>。用來指定一個可能的取值范圍。例如,當被測試表達式為一字符串表達式時,Case"a"To"f",表示其可能的取值為6個小寫字母。Is<關系運算符><表達式>。用來指定一個可能的取值關系,例如:CaseIs<#1/1/2001#,用于判斷日期是否在2001年1月1日前。36【例4.4】某商場為了促銷,開展了根據(jù)每位顧客一次購物情況給予打折的優(yōu)惠活動,具體優(yōu)惠辦法如下:(1)在1000元以上者,按八折優(yōu)惠;(2)在500元以上,但不足1000元者,按八五折優(yōu)惠;(3)在300元以上,但不足500元者,按九折優(yōu)惠;(4)在100元以上,但不足300元者,按九五折優(yōu)惠;(5)不足100元者,沒有優(yōu)惠。設購物款數(shù)為a元,優(yōu)惠價為b元,優(yōu)惠付款公式為:37圖4.8例4.4的運行結果38PrivateSubCommand1_Click()DimaAsSingle,bAsSinglea=Val(Text1.Text)SelectCaseaCaseIs>=1000b=0.8*aCaseIs>=500b=0.85*aCaseIs>=300b=0.9*aCaseIs>=100b=0.95*aCaseElseb=aEndSelectLabel2.Caption="優(yōu)惠價為:"+Str(b)EndSub394.3 選擇性控件4.3.1 單選按鈕(OptionButton)4.3.2 復選框(CheckBox)4.3.3 選項卡(SSTab)404.3.1 單選按鈕(OptionButton)單選按鈕對于單選按鈕而言,不管當前的狀態(tài)是選中還是未選中,只要單擊就變成選中狀態(tài)。圖4.9單選按鈕的狀態(tài)41單選按鈕的常用屬性和事件Caption屬性其值為與單選按鈕同時顯示的標題,主要用來告訴用戶該單選按鈕的意義??梢岳脝芜x按鈕的Alignment屬性設置標題顯示在單選按鈕的右方或左方。Value屬性Value屬性是邏輯型值,其值可以是True或False。參見圖4.9中左面的兩個單選按鈕。True:表示選中,運行時該單選按鈕的圓圈中出現(xiàn)一個黑點。False:表示未選中。該值為設計時的默認值。如果需要的話,也可以改變其默認值。Click事件對用鼠標左鍵點擊單選按鈕時,該事件發(fā)生,并將觸發(fā)該按鈕相應的單擊事件過程。42【例4.5】設計一個如圖4.10所示的程序,單擊對應的復選框和單選按鈕能夠修改文本框中的字體和字號。圖4.10例4.5的運行界面43PrivateSubCommand1_Click()Ifsong.ValueThendisp.FontName="宋體"Ifhei.ValueThendisp.FontName="黑體"Ifkai.ValueThendisp.FontName="楷體_GB2312"Ifs8.ValueThendisp.FontSize=8Ifs16.ValueThendisp.FontSize=16Ifs32.ValueThendisp.FontSize=32EndSub44可以分別為每個單選按鈕的Click事件編寫過程代碼來即時改變顯示設置。例如:單選按鈕Song的Click事件過程代碼如下:PrivateSubSong_Click()Disp.FontName="宋體"EndSub單選按鈕S16的Click事件過程代碼如下:PrivateSubS16_Click()Disp.FontSize=16EndSub454.3.2 復選框(CheckBox)復選框使用復選框時,每單擊一次將切換一次復選框的狀態(tài),即選中時單擊將切換到未選中狀態(tài),未選中時單擊將切換到選中狀態(tài)。46復選框的常用屬性和事件如下:Caption屬性其值為與復選框同時顯示的標題,主要用來告訴用戶該選項的意義??梢岳脧瓦x框的Alignment屬性設置標題顯示在復選框的右方或左方。Value屬性復選框Value屬性為一整型值,可以是以下三個值之一:0(默認值):表示未復選,處于這種狀態(tài)的復選框在運行時復選框前沒有“√”標志。1:表示選中,執(zhí)行時復選框呈現(xiàn)“√”標志。2:表示灰色,復選框呈現(xiàn)“√”標志,但以灰色顯示。通常使用的復選框Value屬性為0或1。Click事件對用鼠標左鍵點擊復選框時,該事件發(fā)生,并將觸發(fā)該按鈕相應的單擊事件過程。47選擇類控件的常用事件和方法復選框和單選按鈕的常用事件為Click。它們的方法很少使用。Click事件:當用戶在一個復選框或單選按鈕上單擊鼠標時發(fā)生。注意:對于復選框而言,在代碼中將其Value屬性設置為0或1將引發(fā)復選框的Click事件,對于單選按鈕而言,將其Value屬性設置為True同樣引發(fā)單選按鈕的Click事件。48框架功能可以按控件功能或布局對控件進行分組。框架的作用主要是區(qū)分一個控件組,也就是讓用戶可以容易地區(qū)分窗體中的各個選項。一組單選按鈕最多只有一個被選中,每個框架控件將其中的單選鈕分成一組,這時每組中的單選鈕能選中一個??蚣茉趯嶋H運用中往往和其他控件一起使用。在框架中加入組成員必須先在窗體中建立一個框架,再在它的上面建立其所屬控件,這時這些控件的容器就不再是窗體而是框架。但是,如果將建立在窗體上的控件直接拖動到框架上,這些控件并不能成為框架的組成員,也就是說,這時這些控件的容器仍是窗體。要想將建立在窗體或其他容器中的控件對象加入到某個框架中,可以將需要移動的控件剪切,然后激活框架后在框架上進行粘貼即可。很少對框架控件進行編程,最常用屬性只有Caption,。49【例4.6】選擇若干課程,顯示所選項數(shù)。圖4.11例4.6的程序界面50命令按鈕的Click事件過程代碼如下:PrivateSubCommand1_Click()DimnAsIntegern=0IfCheck1.Value=1Thenn=n+1IfCheck2.Value=1Thenn=n+1IfCheck3.Value=1Thenn=n+1IfCheck4.Value=1Thenn=n+1

Label2.Caption="共選中了"+Str(n)+"項"EndSub51【例??】設計一個如圖10.14所示的程序,單擊對應的復選框和單選按鈕能夠修改文本框中的字體和字型。⑴設計如圖10.14所示界面,窗體上布局一個名為Text1的文本框、一個名為cmdClose的命令按鈕、三個Name屬性分別為optFontS、optFontH、optFontK的單選按鈕、三個Name屬性分別為chkBold、chkItalic、chkUnderLine的復選框。圖10.14復選框與單選按鈕示例52⑵設計如下的事件過程PrivateSubcmdClose_Click()EndEndSubPrivateSubForm_Load()Text1.Text="安徽財經(jīng)大學"Text1.FontSize=24optFontS.Caption="宋體"optFontH.Caption="黑體"optFontK.Caption="楷體"chkBold.Caption="粗體"chkItalic.Caption="斜體"chkUnderline.Caption="下劃線"optFontK.Value=True'將引發(fā)optFontk的單擊事件

chkItalic.Value=1'將引發(fā)chkItalic的單擊事件EndSub53PrivateSuboptFontK_Click()'注意要和系統(tǒng)提供的字體名一致

Text1.FontName="楷體_GB2312"EndSubPrivateSuboptFontH_Click()Text1.FontName="黑體"EndSubPrivateSuboptFontS_Click()Text1.FontName="宋體"EndSub54PrivateSubchkItalic_Click()Text1.FontItalic=chkItalic.Value=1EndSubPrivateSubchkUnderline_Click()Text1.FontUnderline=chkUnderline.Value=1EndSubPrivateSubchkBold_Click()Text1.FontBold=chkBold.Value=1EndSub55【例??】在上例中增加字號控制。⑴在窗體上放置三個框架控件,并將這三個框架的Caption屬性分別設置為“字體”、“字號”和“字型”,并如圖10.15所示將對應的控件進行分組且放倒對應的框架中;三個字號單選鈕控件的Name屬性分別為:optFontSize8、optFontSize16、optFontSize24。⑵添加如下事件過程:PrivateSuboptFontSize16_Click()Text1.FontSize=16EndSub圖10.15框架示例PrivateSuboptFontSize24_Click()Text1.FontSize=24EndSubPrivateSuboptFontSize8_Click()Text1.FontSize=8EndSub564.3.3 選項卡(SSTab)采用如下方法進行添加:選擇“工程”菜單中的“部件”命令,彈出“部件”對話框。在對話框中單擊“控件”選項卡,從中選擇所需的控件文件。例如,選中“MicrosoftTabbedDialogControl6.0”、“MSWindowsCommonControls6.0”。點擊“應用”按鈕,這時窗體左側的工具箱中出現(xiàn)了一些新的控件。點擊“關閉”按鈕,可結束添加新部件。57圖4.12添加新控件58圖4.13添加了新控件的工具箱圖4.14選項卡的形狀和選項卡位置59SSTab控件常用的屬性如下:1)Tabs屬性。返回或設置SSTab控件上的選項卡總數(shù)。設計時,默認的選項卡數(shù)為3,可以根據(jù)需要增加或減少。2)Style屬性。用以返回或設置SSTab控件上的選項卡樣式。其值為0時,樣式為ssStyleTabbedDialog,參見圖4.14中上方左面的形狀;其值為1時,樣式為ssStylePropertyPage,參見圖4.14中上方右面的形狀。60SSTab控件常用的屬性如下:3)TabCaption(tab)屬性。返回或者設置SSTab控件的每個選項卡的標題,使用時括號中的tab為對應的選項卡號。選項卡的編號從0開始,依次遞增。4)Tab屬性。返回或設置SSTab控件的當前選項卡,當前選項卡移動到前面并成為活動選項卡。使用是將Tab屬性設置為某個選項卡的編號即可。61SSTab控件常用的屬性如下:5)TabOrientation屬性。返回或設置SSTab控件上的選項卡的位置。其值為0時,選項卡出現(xiàn)在控件頂端;為1時,選項卡出現(xiàn)在控件底部;為2時,選項卡出現(xiàn)在控件左邊;為3時,選項卡出現(xiàn)在控件右邊。參見圖4.14。62【例4.7】利用選項卡實現(xiàn)對文本的字體、字型和字號控制進行控制。圖4.15例4.7的運行界面圖4.16各選項卡的控件布局63界面說明Disp文本框中的文本用于進行字體、字號和字型設置,單擊Close命令按鈕將結束程序。另外放置一個名為SSTab1的選項卡,其Tabs屬性為3,Style屬性為0。三個頁面的Caption屬性分別為“字體”、“字型”和“字號”,在字體頁面上放置三個Name屬性分別為Song、LiShu、YouYuan的單選按鈕;字型頁面上放置三個Name屬性分別為Cu、Xie、XiaHua的復選框;字號頁面上放置三個Name屬性分別為S8、S16、S32的單選按鈕。每個選項卡布局如圖4.16所示。64“設置”按鈕的Click事件過程代碼如下:PrivateSubCommand1_Click()Ifsong.ValueThenDisp.FontName="宋體"IfLiShu.ValueThenDisp.FontName="隸書"IfYouYuan.ValueThenDisp.FontName="幼圓"IfS8.ValueThenDisp.FontSize=8IfS16.ValueThenDisp.FontSize=16IfS32.ValueThenDisp.FontSize=32Disp.FontBold=Cu.Value=1Disp.FontItalic=Xie.Value=1Disp.FontUnderline=XiaHua.Value=1EndSub654.4 程序設計舉例【例4.8】求一元二次方程ax2+bx+c=0的根?!纠?.9】輸入一個年份和月份,輸出該月的天數(shù)?!纠?.10】給定三角形的三條邊長,計算三角形的面積。【例4.11】輸入一個字符,判斷所屬分類。66【例4.8】求一元二次方程ax2+bx+c=0的根。圖4.17求一元二次方程根的流程圖67圖4.18例4.8程序界面68Command1的Click事件過程代碼如下:PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingle,dAsSingleDimoutsAsString,x1AsSingle,x2AsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)Ifa=0Then'不是一元二次方程

outs="輸入出錯,不是一元二次方程!"Else'是一元二次方程

d=b*b-4*a*c69SelectCased'判斷d的取值情況

CaseIs>0'有兩個不相等的實根

x1=(-b+Sqr(d))/(2*a)x2=(-b-Sqr(d))/(2*a)outs="方程有兩個實根:"+Chr$(13)_+Str(x1)+Chr$(13)+Str(x2)CaseIs<0'沒有實根

outs="方程沒有實數(shù)根!"CaseElse'有兩個相等的實根

x1=-b/(2*a)outs="方程有兩個相等實根:"+_Chr$(13)+Str$(x1)EndSelectEndIfLabel2.Caption=outsEndSub70【例4.9】輸入一個年份和月份,輸出該月的天數(shù)。圖4.19例4.9的運行界面71PrivateSubCommand1_Click()

DimyearAsInteger,monthAsInteger,dayAsIntegeryear=Val(Text1.Text)month=Val(Text2.Text)SelectCasemonthCase1,3,5,7,8,10,12day=31Case4,6,9,11day=30Case2IfyearMod400=0OryearMod100<>0And_yearMod4=0Then‘if與then在同一行

day=29Elseday=28EndIfEndSelectLabel2.Caption=Str(year)+"年"+Str(month)+"月有"+Str(day)+"天"EndSub72【例4.10】給定三角形的三條邊長,計算三角形的面積。圖4.20例4.10的運行界面73PrivateSubcmdOk_Click()DimxAsInteger

DimaAsSingle,bAsSingle,cAsSingle,pAsSinglea=Val(txtA.Text)b=Val(txtB.Text)c=Val(txtC.Text)Ifa<=0Orb<=0Orc<=0Then'邊長非正數(shù)

x=MsgBox("輸入出錯",vbOKOnly,"提示信息")ElseIfa+b<=cOrb+c<=aOrc+a<=bThen'兩邊之和不大于第三邊

x=MsgBox("輸入的邊長不滿足三角形條件",_vbOKOnly,"提示信息")Else'輸入正確74p=(a+b+c)/2s=Sqr(p*(p-a)*(p-b)*(p-c))

'海倫公式計算三角形面積

x=MsgBox("三角形的面積為:"+Str(s),_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論