第4章 VB程序設(shè)計(jì)基礎(chǔ)_第1頁(yè)
第4章 VB程序設(shè)計(jì)基礎(chǔ)_第2頁(yè)
第4章 VB程序設(shè)計(jì)基礎(chǔ)_第3頁(yè)
第4章 VB程序設(shè)計(jì)基礎(chǔ)_第4頁(yè)
第4章 VB程序設(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、4.1結(jié)構(gòu)化程序設(shè)計(jì)4.2 順序結(jié)構(gòu)4.3 選擇結(jié)構(gòu)4.4 循環(huán)結(jié)構(gòu)4.5 綜合應(yīng)用程序舉例第2章 VB程序設(shè)計(jì)概述4.1 結(jié)構(gòu)化程序設(shè)計(jì) 隨著計(jì)算機(jī)技術(shù)的發(fā)展,程序設(shè)計(jì)方法經(jīng)歷了手工編程、結(jié)構(gòu)化程序設(shè)計(jì)方法和面向?qū)ο蟮某绦蛟O(shè)計(jì)方法幾個(gè)階段。VB作為一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,既繼承了結(jié)構(gòu)化程序設(shè)計(jì)的優(yōu)點(diǎn),又采用了面向?qū)ο?、事件?qū)動(dòng)的編程機(jī)制。就整個(gè)工程來說,它是由許多面向?qū)ο蟮氖录^程組成的,程序運(yùn)行過程中通過觸發(fā)事件,驅(qū)動(dòng)執(zhí)行相應(yīng)的事件過程來實(shí)現(xiàn)程序員的意圖。4.1.1 算法及其表示 算法是解決問題的方法和步驟。要完成某項(xiàng)任務(wù),首先要根據(jù)任務(wù)的性質(zhì)決定采取什么方法,然后根據(jù)所采用的方法設(shè)計(jì)

2、完成工作的具體步驟,最后,再按照所設(shè)計(jì)的步驟一步一步去完成。要用計(jì)算機(jī)來解決一個(gè)實(shí)際問題,編程時(shí),首先要設(shè)計(jì)解決這個(gè)問題的算法(方法和步驟)。例 將兩個(gè)變量x和y的值進(jìn)行交換,設(shè)x = 10,y = 20。 分析:變量是存儲(chǔ)單元的代名詞,存儲(chǔ)器存儲(chǔ)信息的特點(diǎn)是:可以反復(fù)地“讀”,“寫”操作能將新的值寫入到存儲(chǔ)單元。如果直接交換,即x = y : y = x,則將y的值賦給x時(shí),x原來的值被覆蓋(丟失),其結(jié)果是交換后x和y的值都是20。由此可見,要交換兩變量的值,應(yīng)借助一個(gè)中間變量t作為一個(gè)臨時(shí)的“容器”。算法為: 步驟1:將x的值暫存在t中; 步驟2:將y的值存入x中; 步驟3:將t的值存入

3、y中。4.1.1 算法及其表示 例 求N!=?,其算法可描述如下: 步驟1:給出N的值 步驟2:設(shè)兩個(gè)變量R、I,I為大于等于零的整數(shù),R=I!。令I(lǐng)=0,R=1。 步驟3:I=I+1,R=RI 步驟4:判斷I60 Then Text2 =及格 Else Text2 =不及格End sub4.3.2 多行結(jié)構(gòu)選擇語句 在解決實(shí)際問題時(shí),常常遇到在多種情況中選擇其一的情況。因?yàn)槎喾种У腎f語句寫在多行,所以也稱為多行形式的If語句。 格式:If條件1 Then語句塊1ElseIf 條件2 Then語句塊2ElseIf 條件3 Then語句塊3Else語句塊nEnd If執(zhí)行流程4.3.2 多行結(jié)

4、構(gòu)選擇語句 多行結(jié)構(gòu)的If語句執(zhí)行過程:依次測(cè)試各條件,找出第一個(gè)為真者,執(zhí)行其后面的語句塊,然后從End If跳出;若所有條件均不成立,則執(zhí)行Else后的語句塊(此時(shí),若缺省Else,則什么都不做)。 這里依次判斷測(cè)試條件的含意為:若條件1為真(或條件表達(dá)式的值為非0),則執(zhí)行語句塊1,然后退出分支結(jié)構(gòu),執(zhí)行End If的后繼語句;若條件1為假(或條件表達(dá)式的值為0) ,則測(cè)試條件2,。當(dāng)前面的條件都不成立時(shí),后面的條件才得以測(cè)試。4.3.2 多行結(jié)構(gòu)選擇語句 例 編程求符號(hào)函數(shù)sgn(x)的值。 程序代碼如下: 用戶界面設(shè)計(jì)及運(yùn)行結(jié)果如下圖所示:Private Sub Command1_C

5、lick() x = Val(Text1.Text) If x 0 Then Text2.Text = 1 ElseIf x = 0 Then Text2.Text = 0 Else Text2.Text = -1 End IfEnd Sub4.3.2 多行結(jié)構(gòu)選擇語句注意注意:?jiǎn)涡行问絀f語句與多行形式的If語句的區(qū)別。前者適用于簡(jiǎn)單的二叉分支的情況,后者適用于多分支的情況。前者可以改寫為后者的形式。前者必須寫在一行中;后者必須寫成多行,并且在關(guān)鍵字“Then”后面必須回車。后者必須是If開頭,End If結(jié)束,兩者必須成對(duì)出現(xiàn)。但是,前者沒有End If。后者中“ElseIf”是一個(gè)關(guān)鍵字

6、,不能寫成“Else If”。 在多行形式的If語句中,代碼的排版推薦使用縮進(jìn)方式,這樣不僅有利于閱讀程序,也有利于發(fā)現(xiàn)錯(cuò)、排除錯(cuò)誤。4.3.3 Select Case語句 雖然多路分支程序設(shè)計(jì)可用多行形式的If語句實(shí)現(xiàn),但有時(shí),使用Select Case語句實(shí)現(xiàn)更為簡(jiǎn)單和結(jié)構(gòu)清晰。 格式:Select Case測(cè)試表達(dá)式 Case表達(dá)式表列1語句塊1 Case表達(dá)式表列2 語句塊2 Case Else 語句塊nEnd Select Select Case語句以Select Case開頭,必須以End Select結(jié)束。其功能是根據(jù)“測(cè)試表達(dá)式”的值,從多個(gè)語句塊中選擇符合條件的一個(gè)語句塊執(zhí)行

7、。4.3.3 Select Case語句注意事項(xiàng):(1) 執(zhí)行過程:先對(duì)“測(cè)試表達(dá)式”求值,然后從上到下順序地測(cè)試該值與哪一個(gè)Case子句中的“表達(dá)式表列”相匹配;一旦找到,則執(zhí)行該Case分支的語句塊,然后把控制轉(zhuǎn)移到End Select后面的語句塊;如果沒找到,則執(zhí)行Case Else分支的語句塊,然后把控制轉(zhuǎn)移到End Select后面的語句塊。(2) “測(cè)試表達(dá)式”可以是數(shù)值表達(dá)式或字符串表達(dá)式,通常為變量或常量。(3) 每個(gè)Case子句中的語句塊可以是一行或多行VB語句。(4) “表達(dá)式表列”中的表達(dá)式必須與測(cè)試表達(dá)式的類型相同。4.3.3 Select Case語句注意事項(xiàng):(5)

8、 “表達(dá)式表列”稱為域值,可以是下列形式之一:表達(dá)式1,表達(dá)式2 當(dāng)“測(cè)試表達(dá)式”的值與其中之一相同時(shí),就執(zhí)行該Case子句中的語句塊。 例 Case 2,4,6,8,10表達(dá)式1 To 表達(dá)式2 當(dāng)“測(cè)試表達(dá)式”的值落在表達(dá)式1和表達(dá)式2之間時(shí)(含表達(dá)式1和表達(dá)式2的值),則執(zhí)行該Case子句中的語句塊。書寫時(shí),必須把較小值寫在前面。 例 Case 2 To 10 Is關(guān)系表達(dá)式 當(dāng)“測(cè)試表達(dá)式”的值滿足“關(guān)系表達(dá)式”指定條件時(shí),執(zhí)行該Case子句中的語句塊。4.3.3 Select Case語句 例 判斷學(xué)生成績(jī)的等級(jí),用Select Case結(jié)構(gòu)書寫,代碼如下:Private Sub C

9、ommand1_Click()Select Case Val(Text1.Text) 根據(jù)Text1中用戶輸入的值來判斷 Case Is 0 Text2.text = 不合理的成績(jī) Case Is 60 Text2.text = 不及格 Case 60, 61, 62, 63, 64, 65, 66, 67, 68, 69 Text2.text = 及格 Case 70 To 89 Text2.text = 良好 Case Is = 100 Text2.text = 優(yōu)秀Case else Text2.text = 不合理的成績(jī)End SelectEnd Sub4.3.4 選擇結(jié)構(gòu)的嵌套 在選

10、擇結(jié)構(gòu)的每個(gè)分支中,可以是任何語句,也可以再是一個(gè)分支結(jié)構(gòu)。這種分支結(jié)構(gòu)中包含另一個(gè)分支結(jié)構(gòu)的情況稱為分支嵌套。在分支嵌套中應(yīng)注意的問題: 每個(gè)結(jié)構(gòu)必須完整。 外層結(jié)構(gòu)必須完全包住內(nèi)層結(jié)構(gòu),不能交叉。 內(nèi)層結(jié)構(gòu)應(yīng)采用縮進(jìn)格式,以使層次清楚。4.4 循環(huán)結(jié)構(gòu) 當(dāng)我們編程求解實(shí)際問題時(shí),經(jīng)常會(huì)遇到這樣的一種情況:有些操作形式上具有相似性,并且反復(fù)多次被執(zhí)行,這就是程序基本結(jié)構(gòu)中的循環(huán)結(jié)構(gòu)。所謂循環(huán)是指對(duì)同一個(gè)程序段重復(fù)執(zhí)行若干次,被重復(fù)執(zhí)行的部分稱為循環(huán)體,由若干語句構(gòu)成。 循環(huán)必須是有窮的,其循環(huán)控制有兩種情況:當(dāng)已知循環(huán)次數(shù)時(shí),可用循環(huán)次數(shù)控制。有些問題,編程時(shí)并不知道循環(huán)體的執(zhí)行次數(shù),此時(shí),

11、必須根據(jù)某個(gè)條件來判斷何時(shí)結(jié)束循環(huán)。 在VB中有多種語句可實(shí)現(xiàn)循環(huán)結(jié)構(gòu),包括For循環(huán)、Do循環(huán)、While循環(huán)和GoTo循環(huán)。4.4.1 For循環(huán) For循環(huán)適用于循環(huán)的次數(shù)已知的場(chǎng)合。For循環(huán)也稱For-Next循環(huán)或計(jì)數(shù)循環(huán),其語法格式如下: For 循環(huán)變量初值 To 終值 Step步長(zhǎng) 循環(huán)體 Exit For Next循環(huán)變量功能:For循環(huán)按確定的次數(shù)執(zhí)行循環(huán)體,該次數(shù)是由循環(huán)變量的初值、終值、步長(zhǎng)及循環(huán)體中Exit For 前的條件共同確定。 例 輸出1-10之間的奇數(shù)。 輸出1-10之間的不大于7的奇數(shù)。 For i=1 To 10 Step 2 For i=1 To 1

12、0 Step 2 Print i If i= 100 Then GoTo Ending GoTo Start Ending: Print “s=”; s End Sub 該程序是通過GoTo語句完成循環(huán)的,其中Start與Ending是兩個(gè)標(biāo)號(hào),本程序?qū)崿F(xiàn)的是求 1+2+3+100的值。 由于GoTo語句易破壞程序的結(jié)構(gòu),因此一般不提倡使用。4.5 綜合應(yīng)用程序舉例 例 1 求方程f(X)=X3-2X-5=0在區(qū)間1.5,2.5上的一個(gè)實(shí)根。 要求:按四舍五入的方式精確到小數(shù)點(diǎn)后第二位。 分析:本題用牛頓迭代公式求解: Xn+1=Xn-f(Xn)/ f (Xn) 從圖中可以看到,在幾何意義上,

13、f (x1)是曲線 在x1點(diǎn)處的切線斜率,即:f (x1) = f (x1) /(x1-x2),因此,如果給出x1和f (x),先找到f (x1),再通過f (x1) 作切線,求出x2:x2=x1- f (x1) / f(x1);x2是上述切線與橫軸的交點(diǎn),求出x2后再找出f (x2),通過f (x2)作切線,與橫軸交于x3,求出x3;如此一直求下去,所求的x值不斷副近真正的根,直到滿足指定的精度為止。4.5 綜合應(yīng)用程序舉例程序如下:Private Sub Form_Click()Dim x As Single, x1 As Single, f As Single, f1 As Single

14、x = 1.5 x任取1.5,2.5中的一個(gè)值Do x1 = xf = x 3 - 2 * x - 5f1 = 3 * x 2 - 2x = x1 - f / f1Loop Until (Abs(x - x1) 0.00001)x = Fix(x * 100 + 0.5) / 100 四舍五入精確到小數(shù)點(diǎn)后第二位Print 方程X3-2X-5=0在區(qū)間1.5,2.5上的一個(gè)實(shí)根是:; xEnd Sub4.5 綜合應(yīng)用程序舉例 例2 我國(guó)古代算經(jīng)中有一題:“雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞,問雞翁、母、雛各幾何?” 本題使用“窮舉法”來求解。 “窮舉法窮舉法”就是將各種

15、組合的可能性全部一一考慮到,對(duì)每一組合檢查它是否符合給定的條件,將符合條件的輸出即可。依題意,設(shè)x,y,z分別為雞翁、雞母和雞雛。 程序代碼:Private Sub Form_Click()Print Cock,Hen,ChickenFor x=0 To 100For y=0 To 100 Z=100-x-y If 5*x+3*y+z/3=100 Then Print x,y,zNext yNext xEnd Sub4.5 綜合應(yīng)用程序舉例例3 求200,900 內(nèi)同時(shí)滿足以下兩個(gè)條件的十進(jìn)制數(shù)的個(gè)數(shù): (1)其個(gè)位數(shù)字與十位數(shù)字之和除以10所得的余數(shù)是百位數(shù)字; (2)該數(shù)是素?cái)?shù)。 分析:

16、本例采用雙層循環(huán)設(shè)計(jì)。外層循環(huán)從200到900循環(huán),先將每一個(gè)數(shù)的各位數(shù)字分離出來,然后判斷第一個(gè)條件是否滿足。若第一個(gè)條件滿足,則進(jìn)入內(nèi)層循環(huán)判斷第二個(gè)條件是否滿足,內(nèi)層循環(huán)計(jì)算出一個(gè)數(shù)是否為素?cái)?shù),若是素?cái)?shù)即第二個(gè)條件也滿足,則找到了一個(gè)符合條件的數(shù),計(jì)數(shù)器加1。若第一個(gè)條件不滿足,則第二個(gè)條件無須判斷,即內(nèi)層循環(huán)不執(zhí)行。4.5 綜合應(yīng)用程序舉例Private Sub Form_Click()number = 0For i = 200 To 900g = i Mod 10 截取個(gè)位數(shù)字s = (i Mod 100) 10 截取十位數(shù)字b = i 100 截取百位數(shù)字If (b = (g + s) Mod 10) Then 判斷滿足第一個(gè)條件isprime = TrueFor j = 2 To i 1 判斷滿足第二個(gè)條件(素?cái)?shù))If (i Mod j = 0) Then isprime = F

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論