日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

第四章 VB程序的控制結(jié)構(gòu)

 nxhujiee 2010-09-08

第四章 VB程序的控制結(jié)構(gòu)

4.1  算法概論

1.算法的概念

  算法:指用計(jì)算機(jī)解決某一問(wèn)題的方法和步驟。

算法分類(lèi) 數(shù)值算法:用于解決一般數(shù)學(xué)解析方法難以解決的問(wèn)題,如:求超越方程的根、求定積分、解微分方程等。
非數(shù)值算法:用于對(duì)非數(shù)值信息進(jìn)行查找、排序等。

  數(shù)值算法:用于解決一般數(shù)學(xué)解析方法難以解決的問(wèn)題,如:求超越方程的根、求定積分、解微分方程等。

     非數(shù)值算法:用于對(duì)非數(shù)值信息進(jìn)行查找、排序等。

2.算法的特征

 (1)確定性:指算法的每個(gè)步驟都應(yīng)確切無(wú)誤,沒(méi)有歧義。
 (2)可行性:指算法的每個(gè)步驟必須是計(jì)算機(jī)能夠有效執(zhí)行、可以實(shí)現(xiàn)的,并可得到確定的結(jié)果。
 (3)有窮性:指一個(gè)算法應(yīng)該在有限的時(shí)間和步驟內(nèi)可以執(zhí)行完畢的。
 (4)輸入性:指一個(gè)算法可以有0或多個(gè)輸入數(shù)據(jù)。
 (5)輸出性:指一個(gè)算法必須有一個(gè)或多個(gè)輸出結(jié)果。

3.算法的評(píng)價(jià)

  主要評(píng)價(jià)指標(biāo)是:算法是否正確、運(yùn)行的效率、占用系統(tǒng)資源的多少

4.算法的描述

  一般常用流程框圖來(lái)描述算法。

圖形符號(hào) 名稱(chēng) 代表操作
輸入/輸出 數(shù)據(jù)的輸入與輸出
處理 各種形式的數(shù)據(jù)處理
判斷 判斷選擇,根據(jù)條件滿(mǎn)足與否選擇不同路徑
起止 流程的起點(diǎn)與終點(diǎn)
特定過(guò)程 一個(gè)定義過(guò)的過(guò)程
流程線(xiàn) 連接各個(gè)框圖,表示執(zhí)行順序
連接點(diǎn) 表示與流程圖其他部分相連接

5.基本算法結(jié)構(gòu)

 “結(jié)構(gòu)化程序設(shè)計(jì)方法”規(guī)定算法有三種基本結(jié)構(gòu): 順序結(jié)構(gòu)、選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)

 

6.算法示例

 (1)     

 


 歐幾里德算法——求兩個(gè)自然數(shù)的最大公約數(shù)

  

 (2)順序查找算法—— N個(gè)字符串集合中,查找有無(wú)特定的字符串存在

 

 

 
4.2  順序結(jié)構(gòu)

 1.  賦值語(yǔ)句

     賦值語(yǔ)句是任何程序設(shè)計(jì)中最基本的語(yǔ)句,賦值語(yǔ)句都時(shí)順序執(zhí)行的。賦值語(yǔ)句的形式為:

      變量名 = 表達(dá)式

    它的作用是計(jì)算右邊表達(dá)式的值,然后賦給左邊的變量,表達(dá)式的類(lèi)型應(yīng)該與變量名的類(lèi)型一致。

 2. 使用說(shuō)明

  (1)當(dāng)表達(dá)式為數(shù)值型而與變量精度不同時(shí),強(qiáng)制轉(zhuǎn)換成左邊變量的精度;
  (2)當(dāng)表達(dá)式是數(shù)字字符串,左邊變量是數(shù)值類(lèi)型,自動(dòng)轉(zhuǎn)換成數(shù)值類(lèi)型再賦值,但當(dāng)表達(dá)式中有非數(shù)字字符或空串,則出錯(cuò)。
   (3)任何非字符類(lèi)型賦值給字符類(lèi)型,自動(dòng)轉(zhuǎn)換為字符類(lèi)型;
   (4)當(dāng)邏輯型賦值給數(shù)值型時(shí),True轉(zhuǎn)換為 -1,False轉(zhuǎn)換為0;反之,非0轉(zhuǎn)換為True,0轉(zhuǎn)換為False;
   (5)賦值號(hào)左邊的變量只能是變量,不能是常量、常數(shù)符號(hào)、表達(dá)式,否則報(bào)錯(cuò);
   (6)不能在一句賦值語(yǔ)句中,同時(shí)給各變量賦值;
   (7)在條件表達(dá)式中出現(xiàn)的 = 是等號(hào),系統(tǒng)會(huì)根據(jù) = 號(hào)的位置,自動(dòng)判斷是否為賦值號(hào);
   (8)注意N=N+1 是累加中常見(jiàn)的賦值語(yǔ)句,表示將N變量中的值加1后再賦值給N。

N
執(zhí)行了N=N+1
N
5
6

4.3   選擇結(jié)構(gòu)(或稱(chēng)分支結(jié)構(gòu))

1.1. IF條件語(yǔ)句

(1)If……Then語(yǔ)句(單分支結(jié)構(gòu) F)
   語(yǔ)句形式:

    1)If <表達(dá)式> Then
        語(yǔ)句塊
      End If

    2If  <表達(dá)式>  Then  <語(yǔ)句>

     說(shuō)明表達(dá)式一般為關(guān)系表達(dá)式、邏輯表達(dá)式,也可以為算術(shù)表達(dá)式,非0True,0False;

語(yǔ)句塊可以是一句或多句,若用2)表示,則只能是一句語(yǔ)句,若多句,語(yǔ)句間需用冒號(hào)分隔,而且必須在一行上書(shū)寫(xiě)。

     例:已知兩個(gè)數(shù)xy,比較它們的大小,使得 x大于y

     方法一:  if  x<y  then
             t=x
x=y
y=t
end if

    方法二:  if  x<y  then  t=x : x=y : y=t

      注意:將兩個(gè)變量中的數(shù)進(jìn)行交換時(shí),必須借助于第三個(gè)變量才能實(shí)現(xiàn)。

(2)If……Then……Else語(yǔ)句(雙分支結(jié)構(gòu))
  語(yǔ)句形式:                                    
  1If  <表達(dá)式>  Then
      <
語(yǔ)句塊1>
   
Else
     
<語(yǔ)句塊2>
    End If

2 If  <表達(dá)式>  Then  <語(yǔ)句1>  Else  <語(yǔ)句2>

例: x2 -5     x0
3x +2    x=0

 

 

(3)If……Then……ElseIf語(yǔ)句(多分支結(jié)構(gòu))
語(yǔ)句形式:                              
If  <
表達(dá)式1>  Then

     <
語(yǔ)句塊1>
ElseIf  <
表達(dá)式2>  Then

      <
語(yǔ)句塊2>
     
……
   
  [ Else 
語(yǔ)句塊 n+1 ]
  End If

注意

   1)不管有幾個(gè)分支,程序執(zhí)行了一個(gè)分支后,其余分支不再執(zhí)行;
2ElseIf  不能寫(xiě)成Else  If
3)當(dāng)多分支中有多個(gè)表達(dá)式同時(shí)滿(mǎn)足,則只執(zhí)行第一個(gè)與之匹配的語(yǔ)句塊

  :已知變量strC中存放了一個(gè)字符,判斷該字符是字母字符、數(shù)字字符還是其他字符。

(4)     If語(yǔ)句的嵌套

     If語(yǔ)句的嵌套是指if else后面的語(yǔ)句塊中又包含If語(yǔ)句。語(yǔ)句形式:

      If  <表達(dá)式1>  Then
If  <表達(dá)式11>  Then
        ……
     End If
        ……
    End If

 注意:
1
)對(duì)于嵌套結(jié)構(gòu),為了增強(qiáng)程序的可讀性,應(yīng)該采用縮進(jìn)形式書(shū)寫(xiě);
2If語(yǔ)句形式若不在一行上書(shū)寫(xiě),必須與End If配對(duì),多個(gè)if嵌套,End If與它最接近的Emd If配對(duì)。
  已知x、y、z三個(gè)數(shù),比較它們的大小并排序,使得x>y>z.

2. Select Case語(yǔ)句(情況語(yǔ)句)   是多分支語(yǔ)句的又一種形式,語(yǔ)句形式:

  Select Case  變量或表達(dá)式
      
Case  表達(dá)式列表1

           語(yǔ)句塊1
       Case  表達(dá)式列表2
       
  語(yǔ)句塊2

           ……
[Case Else

             語(yǔ)句塊n+1]
  
End Select

 說(shuō)明:1變量或表達(dá)式可以是數(shù)值型或字符串表達(dá)式

        2表達(dá)式列表I 可以是表達(dá)式、一組用逗號(hào)分隔的枚舉值、表達(dá)式1 to 表達(dá)式2Is關(guān)系運(yùn)算符表達(dá)式;如:case  1 to 10     case  "a","w","e","t"  、 case  2,4,6,8,is>10

       3)并不是所有的多分支結(jié)構(gòu)都可以用情況語(yǔ)句代替的。

  :已知輸入某課程的百分制成績(jī)mark,要求顯示對(duì)應(yīng)五級(jí)制的評(píng)定,評(píng)定條件如下:

優(yōu) 及格 不及格
80≤mark<90 70≤mark<80 60≤mark<70 60≤mark<70 60<mark

 

3. 條件函數(shù)

 (1)if函數(shù)

    函數(shù)形式: Iif(表達(dá)式,當(dāng)條件為True時(shí)的值,當(dāng)條件為False時(shí)的值
例:求X、Y中大的數(shù),并放入變量Tmax中:   Tmax=IifX>Y, X, Y

 (2)Choose函數(shù)

    函數(shù)形式:Choose(整數(shù)表達(dá)式,選項(xiàng)列表)
   如果整數(shù)表達(dá)式的值是1,則選擇列表中的第1項(xiàng),依次類(lèi)推;如果小于1或大于列表項(xiàng)數(shù)時(shí),則返回NULL
例: 根據(jù)nub1 -4的值,換算成不同的運(yùn)算符: OP= Choosenub,“+”,“-”,“×”,“÷”)


 4.3 
循環(huán)結(jié)構(gòu)

循環(huán)是在指定的條件下多次重復(fù)執(zhí)行一組語(yǔ)句。VB中提供了兩種類(lèi)型的循環(huán)語(yǔ)句:

計(jì)數(shù)循環(huán)語(yǔ)句條件型循環(huán)語(yǔ)句

1.  For循環(huán)語(yǔ)句(知道循環(huán)次數(shù)的計(jì)數(shù)型循環(huán))

  語(yǔ)句形式: For  循環(huán)變量 = 初值To 終值  [ Step  步長(zhǎng)]
           語(yǔ)句塊
      
[Exit For]
         
語(yǔ)句塊
       
Next  循環(huán)變量

 說(shuō)明1 循環(huán)變量必須為數(shù)值型
2)步長(zhǎng)一般為正,初值小于終值;若為負(fù),初值大于終值;缺省步長(zhǎng)為1;
3)語(yǔ)句塊可以是一句或多句語(yǔ)句,稱(chēng)為循環(huán)體;
4Exit For 表示當(dāng)遇到該語(yǔ)句時(shí),退出循環(huán)體;
      執(zhí)行Next的下一句;
               循環(huán)次數(shù)=int((終值 - 初值)/步長(zhǎng)+1
5)退出循環(huán)后,循環(huán)變量的值保持退出時(shí)的值;
6)在循環(huán)體內(nèi)對(duì)循環(huán)變量可多次引用,但不要對(duì)其賦值,否則影響結(jié)果。

1計(jì)算1 N的奇、偶數(shù)之和。(N為自然數(shù))     2:打印ASCII碼表

2.  Do……Loop循環(huán)(不知道循環(huán)次數(shù)的條件型循環(huán))

  是用于控制循環(huán)次數(shù)未知的循環(huán)結(jié)構(gòu),語(yǔ)法形式有兩種:

  形式1Do While …… Loop
     
Do [ While | Until 條件 ]
            語(yǔ)句塊
     [ Exit  Do ]
            語(yǔ)句塊
    
Loop

形式2Do …… Loop While
     Do
       語(yǔ)句塊
    [ Exit  Do ]
       語(yǔ)句塊
   
Loop  [ While | Until 條件 ]

 說(shuō)明
1)形式1為先判斷后執(zhí)行,有可能一次也不執(zhí)行;
2)形式2為先執(zhí)行后判斷,至少執(zhí)行一次;
 3)關(guān)鍵字While 用于指明條件為真時(shí)就執(zhí)行循環(huán)體中的語(yǔ)句,Until剛好相反;
4)當(dāng)省略了While|Until 條件字句,即循環(huán)結(jié)構(gòu)僅由 Do……Loop關(guān)鍵字構(gòu)成時(shí),表示無(wú)條件循環(huán),這時(shí)循環(huán)體內(nèi)應(yīng)該有Exit Do語(yǔ)句,否則為死循環(huán);
5)Exit Do 語(yǔ)句表示當(dāng)遇到該語(yǔ)句時(shí),退出循環(huán),執(zhí)行Loop的下一語(yǔ)句。

 :我國(guó)現(xiàn)有人口13億,按人口年增長(zhǎng)率0.8%計(jì)算,多少年后我國(guó)人口超過(guò)26億。
計(jì)算公式 26=131+0.008n
   圖中的例子是按可變?cè)鲩L(zhǎng)率和預(yù)計(jì)總?cè)丝跀?shù)設(shè)計(jì)的。

3. 循環(huán)的嵌套

指在循環(huán)體內(nèi)又包含了一個(gè)完整的循環(huán)結(jié)構(gòu)。循環(huán)嵌套對(duì)For 循環(huán)和Do……Loop循環(huán)均適用。

:打印九九乘法表


4.4   其它輔助控制語(yǔ)句

1Go To 語(yǔ)句

  語(yǔ)句形式 Go To 標(biāo)號(hào) | 行號(hào)

 說(shuō)明:1Go To語(yǔ)句只能轉(zhuǎn)移到同一過(guò)程的標(biāo)號(hào)或行號(hào)處;標(biāo)號(hào)是一個(gè)字符系列,首字符必須為字母,與大小寫(xiě)無(wú)關(guān),任何轉(zhuǎn)移到的標(biāo)號(hào)后面必須有冒號(hào) ;行號(hào)是一個(gè)數(shù)字序列;
2)以前BASIC中常用此語(yǔ)句,可讀性差;現(xiàn)在要求盡量少用或不用,改用選擇結(jié)構(gòu)或循環(huán)結(jié)構(gòu)來(lái)代替。

2Exit語(yǔ)句

     用于退出某控制結(jié)構(gòu)的執(zhí)行,VBExit語(yǔ)句有多種形式,如:
   Exit For
(退出For循環(huán))
   Exit Do  (退出Do)循環(huán))
   Exit Sub
(退出子過(guò)程)
   Exit Function(退出函數(shù))

3End 語(yǔ)句

   獨(dú)立的End語(yǔ)句用于結(jié)束一個(gè)程序的執(zhí)行,可以放在任何事件過(guò)程中,形式為:End
VB
End語(yǔ)句還有多種形式,用于結(jié)束一個(gè)過(guò)程或塊,如:
  
End If    End With   End Type   End Select     End Sub    End Function

4With語(yǔ)句
  它的作用是可以對(duì)某個(gè)對(duì)象執(zhí)行一系列的語(yǔ)句,而不用重復(fù)指出對(duì)象的名稱(chēng)。但不能用一個(gè)With語(yǔ)句設(shè)置多個(gè)不同的對(duì)象。屬性前面需要帶點(diǎn)號(hào)“· ”。

  語(yǔ)句形式如下:  With  對(duì)象名
       
     語(yǔ)句塊

          End With

With  form1
. Height=3000

. Width=4000

. BackColor=#ff0000
End With

4.5   程序調(diào)試

1. VB的調(diào)試工具

(1)設(shè)置自動(dòng)語(yǔ)法檢查
   打開(kāi)工具菜單 單擊選項(xiàng)命令 選擇 編輯器 頁(yè)面 →將 自動(dòng)語(yǔ)法檢測(cè) 勾上。

(2)利用VB調(diào)試工具欄

   利用該工具欄可以運(yùn)行程序、中斷運(yùn)行、在程序中設(shè)置間斷點(diǎn)、監(jiān)視變量、單步調(diào)試、過(guò)程跟蹤等操作。

2. VB的三種模式

(1)設(shè)計(jì)模式

   在設(shè)計(jì)模式下可以進(jìn)行程序的界面設(shè)計(jì)、屬性設(shè)置、代碼編寫(xiě)等,標(biāo)題欄上顯示“設(shè)計(jì)”,在此模式下不能運(yùn)行程序,也不能使用調(diào)試工具。

(2)運(yùn)行模式

   執(zhí)行“運(yùn)行”菜單中的“啟動(dòng)”命令或單擊工具欄上的啟動(dòng)按鈕或按F5鍵,即由設(shè)計(jì)模式進(jìn)入運(yùn)行模式,標(biāo)題欄顯示“運(yùn)行”,在此階段可以查看程序代碼,但不能修改。若要修改,必須單擊工具欄上的“結(jié)束”按鈕,回到設(shè)計(jì)模式,也可以選擇“中斷”按鈕,進(jìn)入中斷模式。

(3)中斷模式

  當(dāng)程序運(yùn)行時(shí)單擊了“中斷”按鈕,或當(dāng)程序出現(xiàn)運(yùn)行錯(cuò)誤時(shí),都可以進(jìn)入中斷模式,在此模式下,運(yùn)行的程序被掛起,可以查看代碼、修改代碼、檢查數(shù)據(jù)。修改結(jié)束,單擊“繼續(xù)”按鈕可以繼續(xù)程序的運(yùn)行,也可以單擊“結(jié)束”按鈕停止程序的執(zhí)行。

3. 常見(jiàn)錯(cuò)誤

(1) 編輯時(shí)錯(cuò)誤

  當(dāng)用戶(hù)在代碼窗口編輯代碼時(shí),VB會(huì)對(duì)程序進(jìn)行語(yǔ)法檢查,當(dāng)發(fā)現(xiàn)語(yǔ)句沒(méi)有輸完、關(guān)鍵字輸錯(cuò)等情況時(shí),系統(tǒng)會(huì)彈出對(duì)話(huà)框,提示出錯(cuò),并在錯(cuò)誤處加亮顯示,以便用戶(hù)修改。

(2)編譯時(shí)錯(cuò)誤

  是指用戶(hù)單擊了“啟動(dòng)”按鈕,VB開(kāi)始運(yùn)行程序前,先編譯執(zhí)行的程序段時(shí)產(chǎn)生的錯(cuò)誤,此錯(cuò)誤是由于用戶(hù)未定義變量、遺漏關(guān)鍵字等原因而產(chǎn)生的。發(fā)現(xiàn)錯(cuò)誤時(shí)系統(tǒng)會(huì)停止編譯,提示用戶(hù)修改。

(3)運(yùn)行時(shí)錯(cuò)誤

  VB在編譯通過(guò)后,運(yùn)行代碼時(shí)發(fā)生的錯(cuò)誤,一般是由于指令代碼執(zhí)行了非法操作引起的,如:數(shù)據(jù)類(lèi)型不匹配、試圖打開(kāi)一個(gè)不存在的文件等。系統(tǒng)會(huì)報(bào)錯(cuò)并加亮顯示、等候處理。

(4)邏輯錯(cuò)誤

  如果程序運(yùn)行后得不到所希望的結(jié)果,則說(shuō)明存在邏輯錯(cuò)誤。如:運(yùn)算符使用不正確,語(yǔ)句的次序不對(duì)、循環(huán)語(yǔ)句的起始、終值不正確。這種錯(cuò)誤系統(tǒng)不會(huì)報(bào)錯(cuò),需要用戶(hù)自己分析判斷。

4.程序調(diào)試方法

(1)進(jìn)入/退出中斷狀態(tài)

  進(jìn)入中斷狀態(tài)有四種方法:
1) 程序運(yùn)行時(shí)發(fā)生錯(cuò)誤自動(dòng)進(jìn)入中斷
2) 程序運(yùn)行中用戶(hù)按中斷鍵強(qiáng)制進(jìn)入中斷
3) 用戶(hù)在程序中預(yù)先設(shè)置了斷點(diǎn),程序執(zhí)行到斷點(diǎn)處即進(jìn)入中斷狀態(tài)
4) 在采用單步調(diào)試方式,每運(yùn)行一個(gè)可執(zhí)行代碼后,即進(jìn)入中斷狀態(tài)。

(2) 利用調(diào)試窗口

  1) 立即窗口

這是調(diào)式窗口中使用最方便、最常用的窗口。可以在程序中用Debug.Print方法,把輸出送到立即窗口,也可以在該窗口中直接使用Print語(yǔ)句或?顯示變量的值。

  2)  本地窗口

     該窗口顯示當(dāng)前過(guò)程中所有變量的值,當(dāng)程序的執(zhí)行從一個(gè)過(guò)程切換到另一個(gè)過(guò)程時(shí),該窗口的內(nèi)容發(fā)生改變,它只反映當(dāng)前過(guò)程中可用的變量。

  3)  監(jiān)視窗口

   該窗口可顯示當(dāng)前的監(jiān)視表達(dá)式,在此之前必須在設(shè)計(jì)階段,利用調(diào)試菜單的“添加監(jiān)視命令”或“快速監(jiān)視”命令添加監(jiān)視表達(dá)式以及設(shè)置的監(jiān)視類(lèi)型在運(yùn)行時(shí)顯示在監(jiān)視窗口,根據(jù)設(shè)置的監(jiān)視類(lèi)型進(jìn)行相應(yīng)的顯示。

(3)插入斷點(diǎn)和逐句跟蹤

    在調(diào)試程序時(shí),通?;卦O(shè)置斷點(diǎn)來(lái)中斷程序的運(yùn)行,然后逐句跟蹤檢查相關(guān)變量、屬性和表達(dá)式的值是否在預(yù)期的范圍內(nèi)。

  可在中斷模式下或設(shè)計(jì)模式時(shí)設(shè)置或刪除斷點(diǎn),在代碼窗口選擇懷疑存在問(wèn)題的地方作為斷點(diǎn),按下F9鍵,則程序運(yùn)行到斷點(diǎn)處即停下,進(jìn)入中斷模式,在此之前所關(guān)心的變量、屬性、表達(dá)式的值都可以看到。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多