




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第5章 Visual Basic控制結(jié)構(gòu),5.1 算法及其描述 5.2 選擇結(jié)構(gòu) 5.3 循環(huán)結(jié)構(gòu) 5.4 常用算法與數(shù)據(jù)結(jié)構(gòu)(一),5.1 算法及其描述,5.1.1 算法的概念,所謂算法是解決問題的有序步驟。 1.算法的特征 (1) 有窮性。 (2) 確定性。 (3) 有效性。 (4) 零個或多個輸入。 (5) 至少有一個輸出。,2.算法的描述 (1)自然語言 文字冗長、表達(dá)不確切、二義性。 (2)流程圖 圖形方法,直觀、形象、易于理解,應(yīng)用廣泛。 (3)N-S圖 是流程圖的發(fā)展,去掉了流程線,算法都表示在一個矩形框內(nèi)。,1.順序結(jié)構(gòu) 在順序結(jié)構(gòu)中,算法的每一步操作都是按從上到下的線性次序執(zhí)
2、行的。 2.選擇結(jié)構(gòu) 又稱分支結(jié)構(gòu),根據(jù)給出的條件,選擇執(zhí)行一個分支。因此,在選擇結(jié)構(gòu)中,必然包含了條件判斷。 3.循環(huán)結(jié)構(gòu) 又稱重復(fù)執(zhí)行結(jié)構(gòu)。根據(jù)給出的條件,判斷是否重復(fù)執(zhí)行某一組操作。,5.1.2 3種基本控制結(jié)構(gòu),基本的循環(huán)結(jié)構(gòu)有兩種:當(dāng)循環(huán)和直到循環(huán)。 (1)當(dāng)循環(huán):首先判斷條件是否成立,若成立,執(zhí)行循環(huán)體再判斷條件,決定是否繼續(xù)進(jìn)行循環(huán);若不成立,跳過這組操作,執(zhí)行此循環(huán)結(jié)構(gòu)后面的操作。 (2)直到循環(huán):首先執(zhí)行循環(huán)體,然后判斷條件是否成立,若成立,則繼續(xù)進(jìn)行循環(huán)操作;若不成立,執(zhí)行此循環(huán)結(jié)構(gòu)后面的操作。 在程序設(shè)計(jì)中,算法是由一系列的控制結(jié)構(gòu)構(gòu)成,每一個控制結(jié)構(gòu)又由若干個語句組成。
3、語句是程序中有確切含義的基本單位,也是構(gòu)成程序的基本成分,程序功能是由一條條語句的執(zhí)行來實(shí)現(xiàn)的,可把語句視為命令。,5.2 選擇結(jié)構(gòu),5.2.1 單行結(jié)構(gòu)條件語句,格式:If條件Then語句1Else語句2 如果“條件”成立(其值為True或?yàn)榉?值),則執(zhí)行“語句1”;否則,執(zhí)行“語句2” 當(dāng)“Else語句2”省略時,If語句簡化為: If條件Then語句,5.2.2 塊結(jié)構(gòu)條件語句,格式: If條件1 Then 語句塊1 ElseIf 條件2 Then 語句塊2 ElseIf 條件3 Then 語句塊3 Else 語句塊n End If,條件語句中的“條件”不但可以是邏輯表達(dá)式和關(guān)系表達(dá)式
4、,還可以是數(shù)值表達(dá)式 “語句塊”中的語句不能與Then在同一行上,否則Visual Basic認(rèn)為這是一個單行結(jié)構(gòu)的條件語句 塊結(jié)構(gòu)條件語句必須以End If結(jié)束,而單行結(jié)構(gòu)的條件語句不需要End If 當(dāng)省略ElseIf子句和Else子句時,塊結(jié)構(gòu)條件語句簡化為: If條件 Then 語句塊 End If,5.2.3 多分支結(jié)構(gòu),格式: Select Case測試表達(dá)式 Case表達(dá)式列表1 語句塊1 Case表達(dá)式列表2 語句塊2 Case Else 語句塊n End Select,情況語句以Select Case開頭,以End Select結(jié)束 功能是根據(jù)“測試表達(dá)式”的值,從多個語句塊
5、中選擇符合條件的一個語句塊執(zhí)行,例5.6 商店售貨,按購買貨物的多少分別給予不同優(yōu)惠折扣如下:編程計(jì)算購物款數(shù)。購物不足250元,無折扣,購物滿250元、不足500元,減價(jià)5%,計(jì)算機(jī)根據(jù)學(xué)生的答案判斷正確與否,當(dāng)結(jié)束時給出成績。購物滿500元、不足1000元,減價(jià)7.5%,購物滿1000元、不足2000元,減價(jià)10%,購物滿2000元,減價(jià)15%。 分析:設(shè)購物款為m,折扣為d,以上規(guī)定可表示如下:,d=,0 (m250) 5% (250m500) 7.5% (500m1000) 10% (1000m2000) 15% (2000m) 代碼如下:,Private Sub Command1_C
6、lick() Dim m As Single, d As Single m = InputBox(請輸入應(yīng)付款:) Select Case m Case Is 250 d = 0 Case Is 500 d = 0.05 Case Is 1000 d = 0.075 Case Is 2000 d = 0.1 Case Else d = 0.15 End Select Text1.Text = Str(m) Text2.Text = Str (d) Text3.Text = Str (m * (1 - d) End Sub,Private Sub Command2_Click() End End
7、 Sub 運(yùn)行結(jié)果如下:,1. IIf( )函數(shù) 格式:IIf(條件,True部分,F(xiàn)alse部分) 例如,求x,y中大的數(shù),放入Tmax變量中,語句如下: Tmax=IIf(x y,x,y) 2. Choose( )函數(shù) Choose(變量,值為1的返回值,值為2的返回值,值為n的返回值) 例如,Nop是1-4的值,轉(zhuǎn)換成 + 、-、運(yùn)算符的語句如下: Op= Choose(Nop,+,-,) 當(dāng)值為1,返回字符串“+”,然后放入Op變量中,值為2,返回字符串“-”,依次類推;當(dāng)Nop是1-4的非整數(shù),系統(tǒng)自動取Nop的整數(shù)再判斷;若Nop不在14之間,函數(shù)返回Null值。,5.2.4 II
8、f( )函數(shù)和Choose( )函數(shù),在塊結(jié)構(gòu)條件語句中,若“語句塊”本身又包含條件語句結(jié)構(gòu),則稱為條件語句嵌套。,5.2.5 嵌套的選擇結(jié)構(gòu),例5-7給出a、b、c的值,判斷它們能否構(gòu)成三角形。若能構(gòu)成三角形,計(jì)算此三角形的面積。,例題解析:若a、b、c能構(gòu)成三角形,則必定有下列條件同時成立: a0 And b0 And c0,即a、b、c均為正數(shù)。 abc And acb And bca,即三角形任意兩條邊之和大于第3邊。,程序代碼如下: Private Command1_Click Dim a As Single,b As Single,c As Single Dim p As Sing
9、le,s As Single aVal(InputBox(請輸入第1個數(shù)) bVal(InputBox(請輸入第2個數(shù)) cVal(InputBox(請輸入第3個數(shù)) Flag0 If a0 And b0 And c0 Then If abc And bca And acb Then Flag1 p(abc)/2 sSqr(p*(pa)*(pb)*(pc) Print 三角形的三邊長和面積依次為;a,b,c,s End If End If If Flag0 Then Print 這3個數(shù)不能構(gòu)成三角形 End Sub,5.3 循 環(huán) 結(jié) 構(gòu) 5.3.1 ForNext循環(huán) For 循環(huán)變量初值
10、 To 終值 Step步長 循環(huán)體 Exit For Next循環(huán)變量,0 初值終值 =0 死循環(huán),循環(huán)次數(shù),要注意: 出了循環(huán),循環(huán)控制變量值的問題。 例程序段: For i=2 To 13 Step 3 循環(huán)執(zhí)行次數(shù) Print i , 輸出 i的值分別為: Next i 2 5 8 11 Print : Print “I=“, i 出了循環(huán)輸出為: I=14 在循環(huán)體內(nèi)對循環(huán)控制變量可多次引用;但最好不要對其賦值,否則影響原來的循環(huán)控制規(guī)律。,步長,例5.9 輸入一個班的學(xué)習(xí)成績,統(tǒng)計(jì)其中及格的學(xué)生人數(shù),并計(jì)算出全班的平均分?jǐn)?shù)。學(xué)生人數(shù)不定,輸入負(fù)數(shù)時截止。設(shè)全班人數(shù)不超過50人。,Pr
11、ivate Sub Command1_Click() Dim Score As Single, PassN As Integer, n As Integer Dim i As Integer, Sum As Single Text1 = : Text2 = : Text3 = Sum = 0: PassN = 0: n = 0 For i = 1 To 50 統(tǒng)計(jì)人數(shù)大于50時停止循環(huán) Score = Val(InputBox(請輸入學(xué)生成績:) If Score = 60 Then PassN = PassN + 1 統(tǒng)計(jì)及格人數(shù) n = n + 1 統(tǒng)計(jì)總?cè)藬?shù) Sum = Sum + Sc
12、ore 統(tǒng)計(jì)總分 End If Next i Text1.Text = Str$(n) Text2.Text = Str$(PassN) Text3.Text = Str$(Sum / n) End Sub,5.3.2 WhileWend循環(huán),形式如下: While 條件 循環(huán)體 Wend 功能:當(dāng)給定的“條件”為True時,執(zhí)行循環(huán)體;否則,跳出循環(huán)體,執(zhí)行Wend后面的語句。 注意:(1)該循環(huán)結(jié)構(gòu)先測試條件,然后決定是否執(zhí)行循環(huán)體。(2)如果“條件”總成立,則構(gòu)成死循環(huán),所以,在循環(huán)體中應(yīng)該包含有修改“條件”的操作,使循環(huán)能正常結(jié)束。(3)當(dāng)循環(huán)可以嵌套,不允許交叉。每個Wend和最近的
13、While相匹配。 例5.12(補(bǔ)) 小紅今年12歲,她父親比她大30歲,編程計(jì)算她的父親在幾年后比她年齡大一倍,那時父女的年齡各為多少?,代碼如下: Private Sub Form_Click() Dim age As Integer age = 12 While age * 2 age + 30 age = age + 1 Wend Print 經(jīng)過; age - 12; 年 Print 小紅父女的年齡分別是:; age + 30; 和; age End Sub,5.3.3 DoLoop循環(huán) 形式1: DoWhile|Until條件 循環(huán)體 Exit Do Loop,形式2: Do 循環(huán)
14、體 Exit Do LoopWhile|Until條件,功能:當(dāng)循環(huán)“條件”為真(While條件)或直到指定的循環(huán)結(jié)束“條件”(Until條件)為真之前重復(fù)執(zhí)行“循環(huán)體”。,例5-13輸入兩個正整數(shù),求它們的最大公約數(shù)。,程序代碼如下:,Private Sub Form_Click() Dim m%,n%,r%,t% mInputBox(請輸入第1個整數(shù)) nInputBox(請輸入第2個整數(shù)) If mn Then tm:mn:nt Do rm Mod n mn nr Loop Until r0 Print 最大公約數(shù)是:;m End Sub,5.3.4 多重循環(huán),當(dāng)一個循環(huán)結(jié)構(gòu)的循環(huán)體內(nèi)含
15、有另一個循環(huán)結(jié)構(gòu)時,稱為循環(huán)嵌套,又稱多重循環(huán)。處于內(nèi)層的循環(huán)叫內(nèi)循環(huán),處于外層的循環(huán)叫外循環(huán)。,對于循環(huán)的嵌套,要注意以下事項(xiàng): 內(nèi)循環(huán)變量與外循環(huán)變量不能同名; 外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉; 不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),反之則可以。,例5-15編寫程序,輸出100200之間的所有素?cái)?shù)。 程序代碼如下: Private Sub Form_Click() Dim Number As Integer,x As Integer,i As Integer,k As Integer Number0 For x101 To 199 Step 2 i2:kInt(x/2) Do While ik
16、If x Mod i0 Then Exit Do ii1 Loop If ik Then NumberNumber1 If Number Mod 50 Then Print End If Next x End Sub,5.4 常用算法與數(shù)據(jù)結(jié)構(gòu),算法是對某個問題求解過程的描述。 5.4.1 累加、連乘,100以內(nèi)的自然數(shù)之和 Private Sub Command1_Click() Sum 0 For i 1 To 100 Sum Sum i Next i Print Sum End Sub,10以內(nèi)的偶數(shù)的乘積 Private Sub Form_Click() p 1 For i 2 To
17、10 Step 2 p p * i Next i Print p End Sub,5.4.2 輸出定位,Private Sub Form_Click() FontSize20 Print Tab(14);乘積表 FontColor 種方案 End Sub,5.4.4 遞推法 “遞推法”又稱為“迭代法”,其基本思想是把一個復(fù)雜的計(jì)算過程轉(zhuǎn)化為簡單過程的多次重復(fù)。每次重復(fù)都從舊值的基礎(chǔ)上遞推出新值,并由新值代替舊值。 例5-21 猴子吃桃子。小猴在某天摘桃若干個,當(dāng)天吃掉一半多一個;第二天吃了剩下的桃子的一半多一個;以后每天都吃剩下桃子的一半多一個,到第7天要吃時只剩下一個,問小猴共摘下了多少個桃子? 分析:這是一個“遞推”問題,先從最后一天推出倒數(shù)第二天的桃子,再從倒數(shù)第二天的桃子推出倒數(shù)第三天的桃子。設(shè)第n天的桃子數(shù)為xn,那么它是前一天的桃子數(shù)的xn-1 的一半減1,即 xn = xn-1 /2-1,即
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年專升本藝術(shù)概論考試模擬卷(藝術(shù)鑒賞提升知識點(diǎn))含答案
- 2025年專升本藝術(shù)概論考試模擬卷:藝術(shù)傳播與媒介營銷傳播試題含答案
- 2025年四川匯坤新型建材有限公司招聘工作人員考試筆試試題(含答案)
- 老王說課課件
- 老年延續(xù)護(hù)理
- 老年健康養(yǎng)生課件
- 老干部政策課件
- 2025年八角種植市場調(diào)研報(bào)告
- 城市地下綜合管廊運(yùn)營維護(hù)合同
- 白酒產(chǎn)業(yè)投資基金設(shè)立與管理合作協(xié)議
- 終止保潔合同協(xié)議
- 黔南人才引進(jìn)試題及答案
- 小區(qū)安保合同協(xié)議
- 酒店禁煙控制管理制度
- 加班飯管理制度
- 2025年中國自動鍋蓋行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 江蘇省海安縣財(cái)政局會計(jì)服務(wù)中心事業(yè)單位招聘招考27人題庫及完整答案【網(wǎng)校專用】
- 2025年人教版中考英語復(fù)習(xí):2022年版課標(biāo)核心詞匯1600詞 英漢+漢英 默寫練習(xí)(含答案)
- 養(yǎng)護(hù)巡查制度
- 房地產(chǎn)行業(yè)數(shù)據(jù)安全管理制度及流程
- 新人教版數(shù)學(xué)五年級下冊第二單元《因數(shù)和倍數(shù)》教材解讀
評論
0/150
提交評論