【文章內(nèi)容簡介】
編寫代碼 Private Sub Command1_Click() Dim i% For i = 0 To – 1 If (i) = True Then (i) End If Next i End Sub Private Sub Command2_Click() End Sub 計(jì)算機(jī)基礎(chǔ)教研室 說明 : ( 1)循環(huán)次數(shù)由列表框 1中的列表項(xiàng)總數(shù)確定,每執(zhí)行 一次循環(huán),判斷當(dāng)前列表項(xiàng)的 Selected屬性是否選中, 若選中,則該項(xiàng)目添加到列表框 2中顯示。 ( 2)語句 2中的內(nèi)容。 計(jì)算機(jī)基礎(chǔ)教研室 形式 1: Do While|Until 條件表達(dá)式 語句塊 [Exit Do ] 語句塊 Loop 432 Do… Loop循環(huán)語句 Do While|Until? Loop循環(huán)語句的執(zhí)行過程是:當(dāng)指定的循環(huán)條件為 “ 真 ” 或直到指定的循環(huán)條件變?yōu)?“ 真 ” 之前,重復(fù)執(zhí)行循環(huán)體語句,否則不執(zhí)行。關(guān)鍵字 While是當(dāng)循環(huán)條件為 “ 真 ” 時(shí)執(zhí)行循環(huán)體語句,關(guān)鍵字 Until是當(dāng)循環(huán)條件變?yōu)?“ 真 ” 之前執(zhí)行循環(huán)體語句。 計(jì)算機(jī)基礎(chǔ)教研室 形式 2: Do 語句塊 [Exit Do ] 語句塊 Loop While|Until 條件 Do ? Loop While|Until循環(huán)語句的執(zhí)行過程是:不論循環(huán)條件是否成立,先執(zhí)行一次循環(huán)體語句,然后再判斷循環(huán)條件,關(guān)鍵字 While是當(dāng)循環(huán)條件為 “ 真 ” 時(shí)再次執(zhí)行循環(huán)體語句,關(guān)鍵字 Until是當(dāng)循環(huán)條件變?yōu)?“ 真 ” 之前再次執(zhí)行循環(huán)體語句。 計(jì)算機(jī)基礎(chǔ)教研室 【 例 】 分別用 DoLoop語句的不同形式計(jì)算 1 2 3? 10的乘積的程序。 計(jì)算機(jī)基礎(chǔ)教研室 編寫代碼 Private Sub Command1_Click() i = 1 mul = 1 Do While i = 10 mul = mul * i i = i + 1 Loop = mul End Sub 計(jì)算機(jī)基礎(chǔ)教研室 編寫代碼 Private Sub Command2_Click() i = 1 mul = 1 Do Until i 10 mul = mul * i i = i + 1 Loop = mul End Sub 計(jì)算機(jī)基礎(chǔ)教研室 編寫代碼 Private Sub Command3_Click() i = 1 mul = 1 Do mul = mul * i i = i + 1 Loop While i = 10 = mul End Sub 計(jì)算機(jī)基礎(chǔ)教研室 編寫代碼 Private Sub Command4_Click() i = 1 mul = 1 Do mul = mul * i i = i + 1 Loop Until i 10 = mul End Sub 計(jì)算機(jī)基礎(chǔ)教研室 當(dāng)循環(huán)語句格式如下: While 條件 語句組 Wend 當(dāng)循環(huán)語句的執(zhí)行過程是:當(dāng)條件為 True時(shí),執(zhí)行循環(huán)體內(nèi)的語句組,當(dāng)遇到 Wend語句時(shí),控制回到 While語句繼續(xù)測試條件是否為 True,當(dāng)條件為 False時(shí),控制跳出While… Wend,執(zhí)行 Wend語句的下一條語句。 433 當(dāng)循環(huán)語句 計(jì)算機(jī)基礎(chǔ)教研室 【 例 】 使用“輾轉(zhuǎn)相除法”求兩個(gè)自然數(shù) m, n的 最大公約數(shù)。程序運(yùn)行后,分別在兩個(gè)文本框中輸入 數(shù)據(jù)后,單擊“最大公約數(shù)”按鈕,在標(biāo)簽中顯示相 應(yīng)的計(jì)算結(jié)果。程序運(yùn)行結(jié)果如圖所示。 計(jì)算機(jī)基礎(chǔ)教研室 【 解析 】 用 “ 輾轉(zhuǎn)相除法 ” 求兩個(gè)自然數(shù)的最大公約數(shù)的算法思想: (1)對(duì)于已知兩個(gè)數(shù) m, n,使得 mn; (2)計(jì)算 m除以 n的余數(shù) r; (3)若 r=0,則 n即為所求的最大公約數(shù),否則執(zhí)行步驟 (4); (4)執(zhí)行 m=n(將原來的除數(shù) b作為新的被除數(shù) m)和 n=r(將原來的余數(shù) r作為新的除數(shù) n),再重復(fù)執(zhí)行步驟 (2)。 計(jì)算機(jī)基礎(chǔ)教研室 編寫代碼 Private Sub Command1_Click() Dim m%, n%, t%, r% m = Val() n = Val() If m 0 And n 0 Then If m n Then t = m: m = n: n = t r = m Mod n While r 0 m = n n = r r = m Mod n Wend = 最大公約數(shù)為: amp。 n Else MsgBox 除數(shù)不能為 0 End If End Sub 計(jì)算機(jī)基礎(chǔ)教研室 以上介紹了三種循環(huán)語句的形式,它們的共同特點(diǎn)是重復(fù)執(zhí)行一個(gè)語句系列 (循環(huán)體 ),不同點(diǎn)是控制重復(fù)次數(shù)的時(shí)機(jī)和方法不一樣。 For循環(huán)語句是根據(jù)循環(huán)控制變量的初值、終值和步長決定循環(huán)的執(zhí)行次數(shù), DoLoop和當(dāng)循環(huán)語句是根據(jù)是否滿足指定的條件決定是否執(zhí)行或結(jié)束循環(huán)。在實(shí)際應(yīng)用中,應(yīng)根據(jù)不同的需要采用合適的形式,原則是語句結(jié)構(gòu)清晰,簡單易懂。 計(jì)算機(jī)基礎(chǔ)教研室 【 例 】 從鍵盤上輸入一個(gè)正整數(shù),判斷該數(shù)是否為 素?cái)?shù)。在窗體上添加一個(gè)標(biāo)簽、一個(gè)文本框和兩個(gè)命令 按鈕。程序運(yùn)行時(shí),單擊“判斷”按鈕,則判斷并顯示 輸入的數(shù)是否為素?cái)?shù)。單擊“顯示素?cái)?shù)”按鈕,則顯示 3至輸入的數(shù)之間所有素?cái)?shù)。如圖所示。 (a)單擊 “ 判斷 ” 按鈕時(shí)的結(jié)果 (b) 單擊 “ 顯示素?cái)?shù) ” 按鈕后的結(jié)果 計(jì)算機(jī)基礎(chǔ)教研室 【 解析 】 要判斷一個(gè)自然數(shù) n( n≥3 )是否為素?cái)?shù),可以根據(jù)素?cái)?shù)的定義,用 … 、 n1分別去除 n,如果其中有能整除 n的數(shù),則 n就不是素?cái)?shù),否則 n是素?cái)?shù)。 實(shí)際上判斷 n是否為素?cái)?shù),只要依次用 … 、之間的整數(shù)去除 n(用反證法可證明),如果 n不能被其中任一數(shù)整除,則 n 就為素?cái)?shù)。用這種算法判斷素?cái)?shù),可減少循環(huán)次數(shù),提高程序運(yùn)行效率。 計(jì)算機(jī)基礎(chǔ)教研室 編寫代碼 Dim n As Integer Private Sub Form_Load() End Sub Private Sub Command1_Click() Dim n%, i%, k% n = Val() k = Int(Sqr(n)) For i = 2 To k If n Mod i = 0 Then Exit For Next i If i k Then MsgBox n amp。 是素?cái)?shù) , , 判斷素?cái)?shù) “ Else MsgBox n amp。 不是素?cái)?shù) End If End Sub 計(jì)算機(jī)基礎(chǔ)教研室 Private Sub Command2_Click() Dim n%, j%, k% n = Val() For j = 3 To n k = Int(Sqr(j)) For i = 2 To k If j Mod i = 0 Then Exit For Next i If i k Then y$ = y$ amp。 amp。 j End If Next j MsgBox y, , 顯示素?cái)?shù) End Sub 計(jì)算機(jī)基礎(chǔ)教研室 程序的測試、調(diào)試過程就是查找、排除、修改程序中錯(cuò)誤的過程,常常需要反復(fù)多次進(jìn)行,直至運(yùn)行結(jié)果正確為止。 44 程序調(diào)試 計(jì)算機(jī)基礎(chǔ)教研室 、編譯錯(cuò)誤 441 錯(cuò)誤類型 計(jì)算機(jī)基礎(chǔ)教研室 VB提供了方便的程序調(diào)試工具,幫助我們 排除各種錯(cuò)誤。 “ 調(diào)試 ” 工具欄 442 調(diào)試方法 計(jì)算機(jī)基礎(chǔ)教研室 1. 程序結(jié)構(gòu)要清晰 2. 代碼書寫要有層次 3. VB中的程序是由多個(gè)過程組成的,過程之間要有分割線或空行。 4. 程序代碼中用到的變量名、過程名、自定義函數(shù)名、對(duì)象名等名稱,在命名時(shí)應(yīng)采用 “ 見名知意 ” 的原則,以方便理解程序。 5. 加入必要的注釋 6. 輸入 、 輸出語句 443 培養(yǎng)良好的程序設(shè)計(jì)風(fēng)格 計(jì)算機(jī)基礎(chǔ)教研室 本章主要介紹了程序控制流程中的三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。 ?順序結(jié)構(gòu)是程序設(shè)計(jì)中最基本的一種結(jié)構(gòu),順序結(jié)構(gòu)中的語句依次被執(zhí)行; ?選擇結(jié)構(gòu)是根據(jù)是否滿足指定的條件來控制程序的執(zhí)行流向; ?循環(huán)結(jié)構(gòu)是重復(fù)地執(zhí)行程序中某些語句的過程。 VB提供了形式多樣的實(shí)現(xiàn)選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)的語句,并可以相互嵌套使用,掌握了這些語句,就可以編寫較為復(fù)雜的 VB程序。 45 小結(jié) 計(jì)算機(jī)基礎(chǔ)教研室 第 5章 數(shù)組 計(jì)算機(jī)基礎(chǔ)教研室 主要內(nèi)容 51 數(shù)組的基本概念 52 靜態(tài)數(shù)組與動(dòng)態(tài)數(shù)組的使用 53 數(shù)組的基本操作 54 控件數(shù)組的概念與使用 55 用戶自定義數(shù)據(jù)類型的建立 計(jì)算機(jī)基礎(chǔ)教研室 所謂數(shù)組,就是由一組(若干個(gè))類型相同( VB也支持 類型不同)的相關(guān)變量結(jié)合在一起而構(gòu)成的集合。數(shù)組中的 每一個(gè)變量稱為數(shù)組元素,每一個(gè)數(shù)組元素在內(nèi)存中獨(dú)占一 個(gè)內(nèi)存單元。作為同一數(shù)組中的元素,它們使用一個(gè)統(tǒng)一的 數(shù)組名,只是通過不同的下標(biāo)區(qū)分該數(shù)組中每個(gè)數(shù)組元素。 只有一個(gè)下標(biāo)的數(shù)組稱為一維數(shù)組,如 a(1)、 b(10)。有兩 個(gè)下標(biāo)的數(shù)組稱為二維數(shù)組,如 a(1,3)、 c(2, 2)。 51 數(shù)組的基本概念 計(jì)算機(jī)基礎(chǔ)教研室 在計(jì)算機(jī)中,聲明數(shù)組后,數(shù)組占據(jù)一片內(nèi)存空間,用 一個(gè)統(tǒng)一的名字(聲明數(shù)組時(shí)所定義的數(shù)組名)表示這片存 儲(chǔ)空間,存儲(chǔ)空間中每個(gè)存儲(chǔ)單元分別存放數(shù)組中的一個(gè)數(shù) 組元素,數(shù)組元素的下標(biāo)就是用來表示數(shù)組元素在內(nèi)存空間 中存儲(chǔ)單元的位置。 在使用數(shù)組時(shí),應(yīng)先對(duì)數(shù)組進(jìn)行聲明后再使用,所謂 “ 聲明 ” 數(shù)組,就是對(duì)數(shù)組名、數(shù)組維數(shù)、數(shù)組元素個(gè)數(shù)、數(shù) 組元素的數(shù)據(jù)類型進(jìn)行定義。 在聲明時(shí)確定了數(shù)組維數(shù)、大小的數(shù)組稱為靜態(tài)數(shù)組。 52 靜態(tài)數(shù)組 計(jì)算機(jī)基礎(chǔ)教研室 521 一維數(shù)組 所謂一維數(shù)組是指只具有一個(gè)下標(biāo)的數(shù)組,其聲明形式如下: Dim|Private|Public|Static 數(shù)組名 (下標(biāo) ) [As 數(shù)據(jù)類型 ] 該語句聲明了數(shù)組的應(yīng)用范圍、數(shù)組名稱、維數(shù)、數(shù)組元素個(gè)數(shù)及數(shù)據(jù)類型。 計(jì)算機(jī)基礎(chǔ)教研室 說明: (1)用關(guān)鍵字 Dim|Private建立局部數(shù)組(在事件過程或通用過程中用 Dim或 Private關(guān)鍵字聲明數(shù)組); 用關(guān)鍵字 Dim|Private建立模塊級(jí)數(shù)組(在模塊的通用聲明段中用 Dim或 Private關(guān)鍵字聲明數(shù)組); 用關(guān)鍵字 Public建立全局?jǐn)?shù)組(在標(biāo)準(zhǔn)模塊中用關(guān)鍵字 Public聲明數(shù)組); 用關(guān)鍵字 Static建立局部數(shù)組(在事件過程或通用過程中用 Static關(guān)鍵字聲明數(shù)組)。 計(jì)算機(jī)基礎(chǔ)教研室 (2)數(shù)組名的命名規(guī)則與變量的命名相同 。 (3)下標(biāo)必須為一個(gè)常量,不可以為變量或表達(dá)式。 下標(biāo)的形式為: [下界 To] 上界。 下界和上界定義了數(shù)組元素下標(biāo)的取值范圍,下界是所聲明數(shù)組的第一個(gè)元素的下標(biāo)而上界則是數(shù)組的最后一個(gè)元素的下標(biāo),它們的值不得超過 Long數(shù)據(jù)類型的范圍。數(shù)組中所包含的數(shù)組元素個(gè)數(shù)為:上界 下界 +1。若省略 [下界 To],則系統(tǒng)默認(rèn)的下界為 0。 計(jì)算機(jī)基礎(chǔ)教研室 (4)若希望下標(biāo)從 1開始 , 可在模塊的通用部分使用Option Base語句將設(shè)為 1。 其使用格式是: Option Base 0|1 (5)As 數(shù)據(jù)類型:聲明數(shù)組的數(shù)據(jù)類型 , 如果省略 ,則默認(rèn)數(shù)組元素的類型為變體型 。 計(jì)算機(jī)基礎(chǔ)教研室 522 二維數(shù)組 所謂二維數(shù)組是指有兩個(gè)下標(biāo)的數(shù)組,其聲明形式如下: Dim|Private|Public|Static 數(shù)組名 (下標(biāo) 1,下標(biāo) 2) [As 數(shù)據(jù)