VB程序設(shè)計(jì)》--余凌.ppt_第1頁(yè)
VB程序設(shè)計(jì)》--余凌.ppt_第2頁(yè)
VB程序設(shè)計(jì)》--余凌.ppt_第3頁(yè)
VB程序設(shè)計(jì)》--余凌.ppt_第4頁(yè)
VB程序設(shè)計(jì)》--余凌.ppt_第5頁(yè)
已閱讀5頁(yè),還剩410頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,VB程序設(shè)計(jì),任課教師:余凌 郵箱:a_k_ 電話2,學(xué)時(shí):48(32+16) 教材: VB程序設(shè)計(jì)教程 周靄如, 清華大學(xué)出版社 參考資料: VB6.0入門與提高 張樹(shù)兵, 清華大學(xué)出版社 VB程序設(shè)計(jì)教程 劉瑞新, 電子工業(yè)出版社 VB實(shí)用教程 鄭阿奇, 電子工業(yè)出版社,3,教學(xué)內(nèi)容,第一章 概述 2學(xué)時(shí) 第二章 數(shù)據(jù)與表達(dá)式 4學(xué)時(shí) 第三章 順序結(jié)構(gòu) 2學(xué)時(shí) 第四章 分支結(jié)構(gòu) 2學(xué)時(shí) 第五章 循環(huán)結(jié)構(gòu) 2學(xué)時(shí) 第六章 VB常用控件 第七章 數(shù)組與記錄 2學(xué)時(shí) 第八章 過(guò)程 4學(xué)時(shí),4,第九章 文件 2學(xué)時(shí) 第十章 菜單、多重窗體與多重文檔 2學(xué)時(shí) 第十一章

2、繪圖 2學(xué)時(shí) 第十二章 程序調(diào)試與錯(cuò)誤處理 2學(xué)時(shí) 附:ACCESS數(shù)據(jù)庫(kù)應(yīng)用 4學(xué)時(shí) 總結(jié) 2學(xué)時(shí),5,教學(xué)目的要求: 了解VB的發(fā)展過(guò)程和特點(diǎn) 掌握VB集成開(kāi)發(fā)環(huán)境 理解面向?qū)ο蟪绦蛟O(shè)計(jì)方法 掌握VB工程開(kāi)發(fā)設(shè)計(jì)步驟,教學(xué)重點(diǎn) VB集成開(kāi)發(fā)環(huán)境 VB工程開(kāi)發(fā)設(shè)計(jì)步驟 面向?qū)ο蟪绦蛟O(shè)計(jì)方法,第1章 概述,6,時(shí)間安排: 2學(xué)時(shí),教學(xué)難點(diǎn): 面向?qū)ο蟪绦蛟O(shè)計(jì)中對(duì)象、屬性、方法、事件等概念,7,1.1 VB的發(fā)展過(guò)程和特點(diǎn),一、發(fā)展過(guò)程:,年: . 年秋:. 年: . 年: . 年: . 年: .,Windows操作系統(tǒng)產(chǎn)生初期,人們只能利用Windows API(應(yīng)用程序接口)的一千多個(gè)函數(shù)編

3、寫程序。微軟公司就開(kāi)發(fā)了當(dāng)今流行的Microsoft Visual Studio工具套件,就是其中一種。,8,VB6.0 版本,學(xué)習(xí)版: Learning,VB的基礎(chǔ)版本,可開(kāi)發(fā)WINDOWS或WINDOWS NT 程序。內(nèi)容包括所有內(nèi)部控制以及網(wǎng)絡(luò)、數(shù)據(jù)綁定控件。,專業(yè)版: Professional,為專業(yè)編程人員開(kāi)發(fā)功能強(qiáng)大的分布式應(yīng)用程序。包括專業(yè)版的全部功能,同時(shí)具有自動(dòng)化管理器、部件管理器及數(shù)據(jù)庫(kù)管理工具。,企業(yè)版: Enterprise,為專業(yè)編程人員提供的一套功能完備工具。包括學(xué)習(xí)版的全部功能和ActiveX控件、Internet控件開(kāi)發(fā)工具、動(dòng)態(tài)HTML頁(yè)面設(shè)計(jì)。,9,二、VB

4、主要功能特點(diǎn),VB是面向?qū)ο蟮目?視化程序設(shè)計(jì)工具,友好的集成開(kāi)發(fā) 環(huán)境,支持多種數(shù)據(jù)庫(kù)系統(tǒng) 的訪問(wèn),支持動(dòng)態(tài)數(shù)據(jù)交換、 動(dòng)態(tài)鏈接庫(kù)、對(duì)象的 鏈接與嵌入技術(shù)及 ctiveX技術(shù),10,1.2 VB6.0 集成開(kāi)發(fā)環(huán)境,VB6.0啟動(dòng):,11,12,標(biāo)題欄,可顯示當(dāng)前VB的工作模式: 設(shè)計(jì)模式:可進(jìn)行界面設(shè)計(jì)和代碼編寫 運(yùn)行模式:運(yùn)行程序 中斷模式:程序運(yùn)行暫時(shí)中斷,可編輯代碼,但不可設(shè)計(jì)界面,13,工程資源管理窗口,一個(gè)工程由多種類型的文件組成,如工程文件、窗體文件、標(biāo)準(zhǔn)模塊文件等,在工程資源管理窗口中以樹(shù)形目錄結(jié)構(gòu)的形式列出了當(dāng)前工程中包括的所有文件。,工程文件(.vbp) 窗體文件(.fr

5、m) 標(biāo)準(zhǔn)模塊文件(.bas) 類模塊文件(.cls) 工程組文件(.vbg) 資源文件(.res),14,屬性窗口,屬性窗口主要對(duì)窗體和控件設(shè)置,15,代碼編輯器窗口:,代碼窗口,用于顯示和編輯代碼,16,傳統(tǒng)過(guò)程化應(yīng)用程序,從第一行開(kāi)始執(zhí)行,并按照預(yù)定的路徑執(zhí)行,用戶無(wú)法改變程序的流程,事件驅(qū)動(dòng)的應(yīng)用程序,代碼不是按預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同事件時(shí)執(zhí)行不同的代碼段.,事件觸發(fā) 由用戶觸發(fā) 由操作系統(tǒng)觸發(fā) 由其它應(yīng)用程序的消息觸發(fā),采用面向?qū)ο?、事件?qū)動(dòng)方式的編程,程序員不需要考慮精確次序執(zhí)行的每一步驟,而只需編寫響應(yīng)用戶動(dòng)作的程序即可,工作量相對(duì)較少。用VB編程,實(shí)際上是與一組標(biāo)準(zhǔn)對(duì)象

6、進(jìn)行交互的過(guò)程。,1.3 面向?qū)ο蟪绦蛟O(shè)計(jì),17,對(duì)象,是系統(tǒng)中的基本運(yùn)行實(shí)體,是代碼和數(shù)據(jù)的集合.,用戶定義,對(duì)象是具有特殊屬性(數(shù)據(jù))和行為方式(方法)的實(shí)體。建立對(duì)象后,其操作與該對(duì)象有關(guān)的屬性、事件和方法來(lái)描述。,類,是封裝數(shù)據(jù)和隱藏?cái)?shù)據(jù)的工具,是一組用來(lái)定義對(duì)象的相關(guān)過(guò)程和數(shù)據(jù)的集合.,一個(gè)對(duì)象就是類的一個(gè)實(shí)例,類具有封裝性、繼承性和多態(tài)性特征,VB中,對(duì)象分,系統(tǒng)定義,如窗體、菜單等,18,屬性,是一個(gè)對(duì)象的特性,不同的對(duì)象有不同的屬性。,對(duì)象常見(jiàn)的屬性: 標(biāo)題(Caption) 名稱(Name) 顏色(Color) 字體(Font) 是否可見(jiàn)(Visible),19,通過(guò)修改對(duì)象

7、的屬性,可以改變對(duì)象的外觀與功能。 在屬性窗口上設(shè)置 在程序代碼中用賦值語(yǔ)句設(shè)置,屬性設(shè)置,格式: .=,例: Command1.Caption=“確定” Command1.Font=19,20,事件,在VB中,系統(tǒng)為每一對(duì)象預(yù)先定義好一系列的事件,如: 單擊(Click) 雙擊(DblClick) 裝入事件(Load) 改變事件(Change) 鼠標(biāo)移動(dòng)事件(MouseMove) 獲取焦點(diǎn)事件(GotFocus),是指發(fā)生在對(duì)象上的事情。,事件過(guò)程的一般格式: Private Sub _() End Sub 例: Private Sub Command1_Click() Form1.Back

8、Color = vbRed End Sub,21,方法,方法是面向?qū)ο蟪绦蛟O(shè)計(jì)中所特有的,是一種特殊的過(guò)程和函數(shù),可供用戶直接調(diào)用。 如:打印(Print)方法、顯示窗體(Show)方法、清除(Cls)方法、移動(dòng)(Move)方法,對(duì)象調(diào)用格式: . ,是指對(duì)象要執(zhí)行的動(dòng)作。,22,1.4 VB程序設(shè)計(jì)的基本步驟,程序設(shè)計(jì)的一般過(guò)程,分析問(wèn)題,設(shè)計(jì)算法,繪制流程圖,編制程序,調(diào)試程序,23,新建一個(gè)工程,設(shè)計(jì)用戶界面,編寫事件過(guò)程及通用過(guò)程代碼,保存、調(diào)試、運(yùn)行, 形成可執(zhí)行文件,以求兩數(shù)和的程序?yàn)槔f(shuō)明VB工程的建立全過(guò)程,VB程序設(shè)計(jì)的基本步驟,24,1、新建工程,途徑有兩種: 啟動(dòng)VB后

9、,在系統(tǒng)顯示的“新建工程”對(duì)話框的“新建”選項(xiàng)卡中選擇“標(biāo)準(zhǔn)EXE”,然后單擊“打開(kāi)”按鈕。 在“文件”菜單中選擇“新建工程”命令,然后在“新建工程”對(duì)話框中選擇“標(biāo)準(zhǔn)EXE”,然后單擊“打開(kāi)”按鈕。,25,2、設(shè)計(jì)界面,設(shè)計(jì)對(duì)象控件的布局 改變Caption屬性的值為“求和” 改變對(duì)象標(biāo)簽、命令按鈕Caption 屬性的值 改變文本框的屬性Text為0,窗體,標(biāo)簽,命令按鈕,文本框,26,3、編寫代碼,三種方式: 在窗體上雙擊命令按鈕 在工程管理器窗口單擊“查看代碼”按鈕 在視圖菜單中選擇“代碼窗口”命令,或單擊“工具欄”上的“代碼窗口”按鈕,27,4、運(yùn)行與調(diào)試工程,選擇“運(yùn)行”菜單中的“

10、啟動(dòng)”命令,或單擊工具欄中的“啟動(dòng)”按鈕,或按F5鍵,即可運(yùn)行。,在文本框中輸入數(shù)據(jù),然后點(diǎn)擊“求和”按鈕,即可得到兩數(shù)的和,顯示在文本框中。,計(jì)算結(jié)果,28,5、保存工程,程序代碼檢查沒(méi)有錯(cuò)誤后,可保存工程。 選擇“文件”菜單中的“保存工程”或“工程另存為”命令,或單擊工具欄中的“保存工程”按鈕。若是第一次保存,則系統(tǒng)彈出“文件另存為”對(duì)話框。 在“文件對(duì)話框”中選擇合適的文件夾后,點(diǎn)擊“保存”即可。,保存窗體文件后,系統(tǒng)會(huì)彈出“工程另存為”對(duì)話框,同樣選擇文件夾,點(diǎn)擊“保存”,29,6、編譯工程形成可執(zhí)行文件,編譯成.exe文件,可脫離VB環(huán)境運(yùn)行 選擇“文件”菜單中的“生成可執(zhí)行文件”

11、,則系統(tǒng)彈出“生成工程”對(duì)話框。 在“生成文件對(duì)話框”中選擇合適的文件夾,輸入文件名點(diǎn)后,擊“確定”即可。,30,輸入代碼規(guī)則:,每行不超過(guò)1023個(gè)字符 一行寫多個(gè)語(yǔ)句用“:”隔開(kāi) 可用續(xù)行符“ _”在下一行接著寫 不分大小寫,關(guān)鍵字及標(biāo)準(zhǔn)函數(shù)自動(dòng)處理成第一母大寫 注釋行用“”開(kāi)頭,VB程序結(jié)構(gòu):,窗體模塊 標(biāo)準(zhǔn)模塊 類模塊,31,課后分析: 面向?qū)ο蟪绦蛟O(shè)計(jì)中對(duì)象、屬性、方法、事件、類等概念的理解隨后續(xù)課程的學(xué)習(xí)而逐漸加深,32,教學(xué)目的要求: 掌握VB基本數(shù)據(jù)類型 掌握VB中的常量與變量 掌握運(yùn)算符與表達(dá)式 了解常用標(biāo)準(zhǔn)函數(shù),教學(xué)重點(diǎn) 常量與變量 運(yùn)算符與表達(dá)式 常用標(biāo)準(zhǔn)函數(shù),第章 VB

12、程序設(shè)計(jì)基礎(chǔ),33,時(shí)間安排: 4學(xué)時(shí),教學(xué)難點(diǎn): 變量的類型定義 運(yùn)算符的優(yōu)先級(jí),34,數(shù)據(jù)類型是程序設(shè)計(jì)的必要組成部分,也是程序處理的對(duì)象。,在不同語(yǔ)言中,數(shù)據(jù)類型的規(guī)定和處理方法不同。 VB提供系統(tǒng)定義 的數(shù)據(jù)類型 還允許用戶自己 定義,VB提供的基本數(shù)據(jù)類型主要有: 數(shù)值型 字符串型(String) 布爾型(Boolean)邏輯型 日期型(Date) 變體型(Variant) 對(duì)象型 (Object),2.1 數(shù)據(jù)類型,35,類型: 整型(Integer) 長(zhǎng)整型(Long) 單精度浮點(diǎn)型(Single) 雙精度浮點(diǎn)型(Double) 貨幣型(Currency) 字節(jié)型(Byte),2

13、.1.1 數(shù)值型數(shù)據(jù),36,整型(Integer):以2個(gè)字節(jié)的二進(jìn)制碼存儲(chǔ)。 十進(jìn)制:由0-9數(shù)字組成和正負(fù)號(hào),取值范圍-32768-32767 八進(jìn)制:由0-7數(shù)字組成,前面冠以 s End Sub Private Sub Command2_C1ick() angle=Sin(20*pi180) Print angle End Sub,符號(hào)常量pi在整個(gè)窗體模塊中有效, 符號(hào)常量r只在本事件過(guò)程中有效,54,4)由于符號(hào)常量可以用其他符號(hào)常量定義,因此在兩個(gè)以上符號(hào)常量之間不要出現(xiàn)循環(huán)或循環(huán)引用。,例如:在標(biāo)準(zhǔn)模塊Modulel中定義: Public Const conA= conB*2

14、在整個(gè)應(yīng)用程序中有效 在標(biāo)準(zhǔn)模塊Module2中定義: Public Const conB=conA/2 在整個(gè)應(yīng)用程序中有效,當(dāng)程序中有兩個(gè)以上的公共符號(hào)常量,而且每個(gè)公共符號(hào)常量都用另一個(gè)去定義時(shí)就會(huì)出現(xiàn)循環(huán)。,出現(xiàn)循環(huán)引用,在運(yùn)行此應(yīng)用程序時(shí),VB就會(huì)產(chǎn)生錯(cuò)誤信息。為了避免出現(xiàn)循環(huán)引用,可以將公共符號(hào)常量限制在單一模塊內(nèi),或最多只存在于少數(shù)幾個(gè)模塊內(nèi)。,55,5)符號(hào)常量是有意義的名字,它用于取代永遠(yuǎn)不變的數(shù)值或字符串。 盡管符號(hào)常量有點(diǎn)像變量,但不能像對(duì)變量那樣修改符號(hào)常量,也不能對(duì)符號(hào)常量賦以新值。,56,3 系統(tǒng)定義符號(hào)常量,符號(hào)常量的定義可以從“對(duì)象瀏覽器”中獲得。使用對(duì)象瀏覽器

15、可以顯示包括當(dāng)前工程及對(duì)象庫(kù)在內(nèi)的過(guò)程、模塊、類、屬性和方法等的描述信息。,從菜單欄視圖中選擇“對(duì)象瀏覽器”或(F2),57,每個(gè)變量都有名字和數(shù)據(jù)類型,通過(guò)名字來(lái)引用一個(gè)變量,而通過(guò)數(shù)據(jù)類型來(lái)確定該變量的存儲(chǔ)方式。,變量是指一個(gè)有名稱的內(nèi)存單元。,2.2.2 變量,分為屬性變量和用戶自定義變量,58,VB變量的命名規(guī)則: 第一個(gè)字符必須是字母。 長(zhǎng)度不超過(guò)255個(gè)字符。 不可以包含小數(shù)點(diǎn)或者內(nèi)嵌的類型聲明字符。 不能使用關(guān)鍵字。 不能與過(guò)程名或符號(hào)常量同名。,1.變量的命名規(guī)則,例如: 合法變量名: strMyString、intCount、MyForm、姓名、性別等 非法變量名: 1x、a

16、+b、 、 等,關(guān)鍵字: 又稱保留字,在語(yǔ)法上有固定含義,是語(yǔ)言的自稱組成部分,用于表示系統(tǒng)提供的標(biāo)準(zhǔn)過(guò)程、函數(shù)、運(yùn)算符、常量等;VB中約定關(guān)鍵字的首寫字母為大寫。,59,2.變量的聲明,變量使用之前,一般必須先聲明變量名和類型,以便系統(tǒng)為其分配存儲(chǔ)單元。,固定格式聲明,隱式聲明,強(qiáng)制顯式聲明,VB變量及其類型 聲明方式,60,格式:,說(shuō)明: :可以是VB提供的各種數(shù)據(jù)類型或用戶自定義類型。 As :方括號(hào)部分表示該部分可以缺省。缺省時(shí),變量默認(rèn)為變體類型. Dim:在窗體模塊、標(biāo)準(zhǔn)模塊或過(guò)程中聲明變量。 Private:變量?jī)H在該模塊或過(guò)程中有效。 Static:在過(guò)程中定義靜態(tài)變量,即使該

17、過(guò)程結(jié)束,也仍然保留變量的值。 Public:標(biāo)準(zhǔn)模塊中聲明全局變量,使變量在整個(gè)應(yīng)用程序中有效。 Global: 在標(biāo)準(zhǔn)模塊中聲明全局變量.,Dim|Private|Static|Public|Global As ,格式聲明,61,Defbool|DefByte|DefInt|Deflng|Defcur|Defsng|DefDbl|DefDate |DefStr|DefObj|DefVar 字母范圍,字母范圍.,變量名后加一特定符號(hào)來(lái)表明數(shù)據(jù)類型:,% 整型 SomeValue = “ABC”+SomeValue,63,可在窗體模塊或標(biāo)準(zhǔn)模塊的聲明段中加入語(yǔ)句: Option Explici

18、t,強(qiáng)制顯式聲明,VB可采用強(qiáng)制聲明功能,使所有變量都必須先聲明后使用. 這樣,若運(yùn)行時(shí)遇到一個(gè)未經(jīng)明確聲明的變量名,VB就會(huì) 發(fā)出錯(cuò)誤警告。,聲明方式:,在“工具”菜單中打開(kāi)“選項(xiàng)”對(duì)話框,單擊“編輯器”選擇“要求變量聲明”選項(xiàng),即可自動(dòng)插入 Option Explicit語(yǔ)句.,注:Option Explicit語(yǔ)句的作用范圍僅限于語(yǔ)句所在模塊. 對(duì)于需要強(qiáng)制式變量聲明的窗體模塊、標(biāo)準(zhǔn)模塊及類模塊, 必須將Option Explicit語(yǔ)句放在這些模塊的聲明段中。,64,VB中有以下6類運(yùn)算符和表達(dá)式: 算術(shù)運(yùn)算符與算術(shù)表達(dá)式 字符串運(yùn)算符與字符串表達(dá)式 關(guān)系運(yùn)算符與關(guān)系表達(dá)式 邏輯運(yùn)算符

19、與邏輯表達(dá)式 日期運(yùn)算符與日期表達(dá)式 對(duì)象運(yùn)算符與對(duì)象表達(dá)式,用運(yùn)算符將運(yùn)算對(duì)象(或操作數(shù))連接起來(lái)即構(gòu)成表達(dá)式。表達(dá)式表示了某種求值規(guī)則。,操作數(shù)可以是常量、變量、函數(shù)、對(duì)象等,而運(yùn)算符也有各種類型。,2.3 運(yùn)算符與表達(dá)式,65,2.3.1 算術(shù)運(yùn)算符與算術(shù)表達(dá)式,算術(shù)運(yùn)算符用于對(duì)數(shù)值型數(shù)據(jù)執(zhí)行各種算術(shù)運(yùn)算。 VB提供了7個(gè)算術(shù)運(yùn)算符,優(yōu)先級(jí)次序如表所列:,其中,取負(fù)()運(yùn)算符是單目運(yùn)算符,其余運(yùn)算符均為雙目運(yùn)算符(需要兩個(gè)操作數(shù))。,66,乘方運(yùn)算用來(lái)計(jì)算乘方和方根。 例: 102 10的平方,結(jié)果為100 10(-2) 10的平方的倒數(shù),即1100,結(jié)果為0.01 250.5 25的平

20、方根,結(jié)果為5 8(1/3) 8的立方根,結(jié)果為2 223 運(yùn)算順序從左到右,結(jié)果為以64 (-8)(-1/3) 錯(cuò)誤,當(dāng)?shù)讛?shù)為負(fù)數(shù)時(shí),指數(shù)必須是整數(shù),1乘方運(yùn)算,2整數(shù)除法,例: 104 結(jié)果為2 25.686.99 先四舍五人再整除,結(jié)果為3,執(zhí)行整除運(yùn)算,結(jié)果為整型值。參加運(yùn)算的操作數(shù)一般為整型數(shù)。當(dāng)操作數(shù)帶有小數(shù)點(diǎn)時(shí),先被四舍五入為整型數(shù),后整除。,67,例: 10 Mod 4 結(jié)果為2 25.68 Mod 6.99 先四舍五人再求余數(shù),結(jié)果為5 11 Mod -4 結(jié)果為3 -11 Mod 5 結(jié)果為-1 -11 Mod 3 結(jié)果為-2,3.取模運(yùn)算,取模運(yùn)算符Mod用于求余數(shù),為第

21、一操作數(shù)整除第二操作數(shù)所得的余數(shù). 操作數(shù)帶小數(shù), 先四舍五入取整型數(shù),后求余; 運(yùn)算結(jié)果符號(hào)取決于第一個(gè)操作數(shù)。,68,注意: “ 若x=0,則產(chǎn)生與最近生成的隨機(jī)數(shù)相同的數(shù); 若省略參數(shù)x,則以上一個(gè)隨機(jī)數(shù)作為種子,產(chǎn)生序列中的下一個(gè)隨機(jī)數(shù),產(chǎn)生N1,N2問(wèn)隨機(jī)數(shù),可使用公式: Int(N2-N1+1)*Rnd +N2,隨機(jī)種子生成器:Randomize time,79,2.4.2 字符串函數(shù),VisualBasic提供了大量的字符串函數(shù),具有很強(qiáng)的字符串處理能力。,1刪除空白字符函數(shù) LTrim(s) 去掉字符串s左邊的空白字符(即前導(dǎo)空格)。 RTrim(s) 去掉字符串s右邊的空白字

22、符(即后置空格)。 Trim(s) 去掉字符串s左右兩邊的空白字符。,例如: LTrim(”UUUABC”) 結(jié)果為“ABC” RTrim(”ABCUUU”) 結(jié)果為“ABC” Trim(”UUUABCUUU”) 結(jié)果為“ABC”,80,2取子串函數(shù) Left(s,n) 取字符串s左邊的n個(gè)字符 Right(s,n) 取字符串s右邊的n個(gè)字符 Mid(s,p,n) 從字字符串s的第p個(gè)字符開(kāi)始取n個(gè)字符 例: Left(“ABCDE”,2) 結(jié)果為“AB” Right(“ABCDE”,2) 結(jié)果為“DE” Mid(“ABCDE”,2,3) 結(jié)果為“BCD” Mid(“ABCDE”,2,6) 結(jié)

23、果為“BCDE”,3.字符串長(zhǎng)度函數(shù) Len(s) 返回字符串s的長(zhǎng)度 例: Len(“ABCDE”) 結(jié)果為5,81,5生成空格函數(shù) Space(n) 返回n個(gè)空格 例:Space(3)的結(jié)果為“UUU”,4生成字符串函數(shù) String(n,s) 取字符串s的第一個(gè)字符構(gòu)成長(zhǎng)度為n的新字符串。 例: String(3,”ABC”) 結(jié)果 “AAA” String(3,65) 結(jié)果 “AAA” (字符”A”的ASCII碼為65),82,7字母大小寫轉(zhuǎn)換函數(shù) UCase(s) 把小寫字母轉(zhuǎn)換為大寫字母。 LCase(s) 把大寫字母轉(zhuǎn)換為小寫字母。 例: UCase(”Abc”) 結(jié)果為ABC”

24、 LCase(”ABc”) 結(jié)果為abc”,6搜索予字符串函數(shù) InStr(S,s1,s2,C) 在字符串s1中第S個(gè)位置開(kāi)始查找字符串s2出現(xiàn)的起始位置 例: InStr(”ABCDE”,”BC”) 結(jié)果為2 1nStr(”ABCDECDE”,”DE”,) 結(jié)果為4,83,轉(zhuǎn)換函數(shù)用于數(shù)據(jù)類型或形式的轉(zhuǎn)換,包括整型、實(shí)型、字符串型之間以及與ASCII碼字符之間的轉(zhuǎn)換。 下面介紹常用的轉(zhuǎn)換函數(shù)。 1將字符轉(zhuǎn)換成ASCII碼 Asc(s) 返回字符串s中第一個(gè)字符的ASCII碼。 例: Asc(“A”) 結(jié)果為65 Asc(“ABC”) 結(jié)果為65,2.4.4 轉(zhuǎn)換函數(shù),2將ASCII碼轉(zhuǎn)換成字

25、符 Chr(x) 把x的值轉(zhuǎn)換為對(duì)應(yīng)的ASCII字符 例:Chr(65)的結(jié)果為”A”。,84,3將數(shù)值轉(zhuǎn)換成字符串 Str(x) 把x的值轉(zhuǎn)換為一個(gè)字符串。 如果x為正,則返回的字符串前有一前導(dǎo)空格。 例:Str(123)的結(jié)果為“ 123”。 ,4將字符串轉(zhuǎn)換成數(shù)值 Val(s) 把數(shù)字字符串s轉(zhuǎn)換為數(shù)值。 例: Val(“123”) 結(jié)果為123 Val(“123AB”) 結(jié)果為123 Val(“.123AB”) 結(jié)果為.123 Val(”a123AB) 結(jié)果為0,85,5轉(zhuǎn)換成邏輯型數(shù)據(jù) Cbool(x) 非0為True 0為False。 例:Cbool(123)的結(jié)果為True。 ,

26、6轉(zhuǎn)換成日期型數(shù)據(jù) Cdate(x) 把數(shù)字、字符串轉(zhuǎn)換為日期數(shù)據(jù)。 例: Cdate(“February 20,1999”) 結(jié)果為99-2-20 Cdate(“4:30:40 PM”) 結(jié)果為16:30:40,86,日期和時(shí)間函數(shù)可以顯示系統(tǒng)的日期和時(shí)間,提供某個(gè)事件何時(shí)發(fā)生及持續(xù)時(shí)間長(zhǎng)短等信息。 常用的日期時(shí)間函數(shù)有: Now 返回系統(tǒng)日期和時(shí)間 Date 返回系統(tǒng)日期 Time 返回系統(tǒng)時(shí)間 Day(d) 返回參數(shù)d中指定月份的第幾天 WeekDay(d) 返回參數(shù)d中指定的星期幾 Month(d) 返回參數(shù)d中指定的月份 Year(d) 返回年份 Hour(d) 返回小時(shí)(023)

27、Minute(d) 返回分鐘(059) Second(d) 返回秒(059) Timer 返回從午夜開(kāi)始到現(xiàn)在經(jīng)過(guò)的秒數(shù),2.4.3 日期和時(shí)間函數(shù),87,格式輸出函數(shù)可以使數(shù)值、日期或字符串按指定的格式輸出。其格式為 Format(,),2.4.5 格式輸出函數(shù),:要格式化的數(shù)值、日期或字 符串表達(dá)式。 :指定表達(dá)式的值的輸出 格式。 格式字符有三類:數(shù)值格式、日期格式和字符串格式。 格式字符要加引號(hào)。,88,89,2.4.6 其他函數(shù),1條件函數(shù) Iif(,) 如x1值為真,則返回x2的值,否則返回x3 例: Iif(xy,x,y) 返回x,y中較大值 Iif(x=60,“Pass”,”F

28、ailure”) 2選擇函數(shù) Choose(n,.) 例:Choose(3,”星期一”,”星期二” ”星期三” ”星期四” ”星期五”))的結(jié)果為”星期三”。,90,課后分析: 本節(jié)需掌握知識(shí)點(diǎn)較多,不需要一下子都記住,以后用到時(shí)逐漸記憶。,91,教學(xué)目的要求: 掌握順序結(jié)構(gòu)程序設(shè)計(jì)方法 掌握選擇結(jié)構(gòu)程序設(shè)計(jì)方法 掌握循環(huán)結(jié)構(gòu)程序設(shè)計(jì)方法,教學(xué)重點(diǎn) 順序、選擇、循環(huán)結(jié)構(gòu)程序設(shè)計(jì),第3章 流程控制,92,時(shí)間安排: 6學(xué)時(shí),教學(xué)難點(diǎn): 循環(huán)結(jié)構(gòu)程序設(shè)計(jì),93,VB采用事件驅(qū)動(dòng)方法,但仍需要結(jié)構(gòu)化程序設(shè)計(jì)方法,用控制結(jié)構(gòu)控制程序執(zhí)行的流程。 程序流程有三種最基本的結(jié)構(gòu):順序、選擇、循環(huán)。,一個(gè)計(jì)算

29、機(jī)程序通常可分為三部分,即輸入、處理和輸出。 VB的輸入輸出有著十分豐富的內(nèi)容和形式,它提供了多種手段,并可通過(guò)各種控件實(shí)現(xiàn)輸入輸出操作,使輸入輸出更加靈活、多樣、方便、直觀。,3.1.1順序結(jié)構(gòu),94,功能: 先計(jì)算“=”號(hào)(稱為賦值號(hào))右邊的表達(dá)式的值,然后將此值賦給賦值號(hào)左邊的變量或?qū)ο髮傩? 說(shuō)明: 應(yīng)符合VB的變量命名約定。 可以是常量、變量、表達(dá)式及帶有屬性的對(duì)象。,格式: Let =,3.1.1 幾個(gè)基本語(yǔ)句,1.賦值語(yǔ)句,95,1) “=”賦值號(hào)與數(shù)學(xué)中的等號(hào)意義不同。 例如:語(yǔ)句X=X+1表示將變量X的值加1后的結(jié)果值再賦給變量X,而不是表示兩邊的值相等. 2) 賦值號(hào)左邊必

30、須是變量或?qū)ο髮傩? 例: X=1 MyStr = “Good Morning” Command1.Caption=“確定” X+1=X (錯(cuò)誤),注意事項(xiàng),96,3)變量名或?qū)ο髮傩悦念愋蛻?yīng)與表達(dá)式的類型相容. 即變量名或?qū)ο髮傩悦軌蛘_存取賦值號(hào)右邊的表達(dá)式的值.,例如 Dim A As Integer, B As Single, C As Double, S As String A = 100 S = 123.45“ A = S A=123 S = A S=“123” S = abc” A = S,97,4)變量未賦值時(shí),數(shù)值型變量的值為0,字符串變量的值為空串“”。,例4-1交換兩

31、個(gè)變量的值。 設(shè)變量A中存放5,變量B中存放8,交換兩個(gè)變量的值,使變量A中存放8,變量B中存放5。 分析:交換變量需要借助第三個(gè)變量C,才能實(shí)現(xiàn)交換。,代碼如下: A = 5 B = 8 C = A A = B B = C,98,2. 注釋語(yǔ)句,格式: Rem|注釋內(nèi)容,1)如使用Rem則在Rem與注釋內(nèi)容之間要加空格;以開(kāi)頭,可不加 2)允許使用GoTo或GoSub語(yǔ)句轉(zhuǎn)到一個(gè)有行號(hào)或標(biāo)號(hào)的注釋語(yǔ)句,程序從該注釋行下面的第一條可執(zhí)行語(yǔ)句繼續(xù)執(zhí)行 3)在其他語(yǔ)句行后使用Rem,用冒號(hào),注意事項(xiàng):,99,. 停止程序執(zhí)行語(yǔ)句,格式: End,功能:結(jié)束程序的執(zhí)行。 一個(gè)程序沒(méi)有End語(yǔ)句,對(duì)運(yùn)

32、行沒(méi)有什么影響。但如果沒(méi)有End語(yǔ)句,或者雖然有,卻沒(méi)執(zhí)行,程序都不能正常結(jié)束,此時(shí)要結(jié)束程序必須執(zhí)行“運(yùn)行”菜單中的“結(jié)束”命令或單擊工具欄中的“結(jié)束”按鈕。為了保持程序的完整性,應(yīng)當(dāng)在程序中含有End語(yǔ)句,并且通過(guò)End語(yǔ)句來(lái)結(jié)束程序的運(yùn)行。,100,InputBox函數(shù)產(chǎn)生一個(gè)對(duì)話框,作為輸入數(shù)據(jù)的界面,等待用戶輸入正文或按下按鈕,并返回所輸入的內(nèi)容。,格式:InputBox(,),3.1.2 輸入數(shù)據(jù),1 輸入框函數(shù)(InputBox),101,例如,假設(shè)某程序中有如下代碼: MyStr=InputBox(“提示” | , 可以是窗體、圖片框、打印機(jī)或立即窗口。如果省略“對(duì)象名”,則在

33、當(dāng)前窗體上輸出。 中的表達(dá)式可以是算術(shù)表達(dá)式、字符串表達(dá)式、關(guān)系表達(dá)式或者布爾表達(dá)式,多個(gè)表達(dá)式之間的分隔符為逗號(hào)(,)或分號(hào)(;)。,3. 用Print方法輸出數(shù)據(jù),1. Print方法,123,例: Form1Print “歡迎使用Visual Basic” 在窗體Forml上顯示字符串“歡迎使用Visual Basic” Picture1Print “歡迎使用Visual Basic” 在圖片框Picturel上顯示字符串“歡迎使用Visual Basic” PrinterPrint “歡迎使用Visual Basic” 在打印機(jī)上打印字符串“歡迎使用Visual Basic”,124,

34、Print方法具有計(jì)算和輸出雙重功能。 對(duì)于表達(dá)式,先計(jì)算表達(dá)式的值,然后輸出。輸出時(shí),數(shù)值型數(shù)據(jù)前面有一符號(hào)位(正號(hào)不顯示),后面留一個(gè)空格位;字符串原樣輸出,前后無(wú)空格。,125,Print方法有兩種顯示格式:區(qū)分格式和緊湊格式。 當(dāng)各表達(dá)式之間用逗號(hào)作為分隔符時(shí),則按區(qū)分,顯示數(shù)據(jù)個(gè)字為單位把一個(gè)輸出行分成 若干區(qū)個(gè)表達(dá)式的值。 當(dāng)各表達(dá)式之間用分號(hào)作為分隔符時(shí),則按緊湊格式輸出數(shù)據(jù),后一項(xiàng)緊跟前一項(xiàng)輸出。,126,一般情況下,每執(zhí)行一次Print方法都要自動(dòng)換行,即每一次執(zhí)行Print時(shí),都會(huì)在新的一行上輸出數(shù)據(jù)。若要在同一行上輸出數(shù)據(jù),則可以在末尾加上分號(hào)或逗號(hào)。,127,2. 與P

35、rint方法有關(guān)的函數(shù),格式: Tab(n) 功能: 在指定的第n個(gè)位置 上輸出數(shù)據(jù).,1) Tab函數(shù),說(shuō)明: 若n小于當(dāng)前顯示位置, 則自動(dòng)移到下一個(gè)輸出行的第n列上; 若n小于1,則打印位置在第1列; 若n大于輸出行的寬度,則利用公式n Mod width計(jì)算下一個(gè)打印位置; 若省略此參數(shù),則將插入點(diǎn)移到下一個(gè)打印區(qū)的起點(diǎn).,128,2) Spc函數(shù),格式: Spc(n) 功能: 跳過(guò)n個(gè)空格. 說(shuō)明: n是一個(gè)數(shù)值表達(dá)式,表示空格.,例如: Print “Hello”; Spc(3); “World” 輸出結(jié)果: HelloUUUWorld Spc函數(shù)與輸出項(xiàng)之間用分號(hào)分隔. Spc函

36、數(shù)表示兩個(gè)輸出項(xiàng)之間的間隔, Tab函數(shù)總是從對(duì)象的左端開(kāi)始計(jì)數(shù).,129,3.1.4 舉例,例3-3 使用文本框輸入圓的半徑,計(jì)算圓的面積并用標(biāo)簽 輸出。運(yùn)行界面如下圖所示。,Private Sub Command1_Click() Dim r As Double,s As Double Const pi = 3.1415926 r = Val(Text1.Text) s=pi * r * r Label2.Caption = “圓的面積:” Y 當(dāng)X=4時(shí),條件X0成立,執(zhí)行Then之后的語(yǔ)句X=1+X,使X的值成為5,然后執(zhí)行條件語(yǔ)句之后的語(yǔ)句Y=1+X,使Y的值成為-4,所以輸出Y=-

37、4。 當(dāng)X的值為-4時(shí),條件X=0不成立,執(zhí)行Else之后的語(yǔ)句X=5-X,使X的值成為9,然后同樣執(zhí)行條件語(yǔ)句之后的語(yǔ)句Y=1-X,使Y的值成為-8,所以輸出Y=-8。 即無(wú)論條件X=0是否成立,都要執(zhí)行If語(yǔ)句后面的語(yǔ)句Y=1-X。 3)單行結(jié)構(gòu)條件語(yǔ)句可以嵌套,也就是說(shuō),在或中可以包含另外一個(gè)單行結(jié)構(gòu)條件語(yǔ)句。,133,2 塊結(jié)構(gòu)條件語(yǔ)句,格式: If Then ElseIf Then Elself Then Else EndIf,功能:執(zhí)行該塊結(jié)構(gòu)條件語(yǔ)句時(shí),首先判斷是否成立,若成立,則執(zhí)行,若不成立,則繼續(xù)判斷ElseIf子句后的是否成立,若成立,則執(zhí)行,否則,繼續(xù)判斷以下的各個(gè)條件

38、,依此類推。如果到都不成立,則執(zhí)行Else子句后面的。 當(dāng)某個(gè)條件成立而執(zhí)行了相應(yīng)的語(yǔ)句組后,將不再繼續(xù)往下判斷其他條件,而直接退出塊結(jié)構(gòu),執(zhí)行EndIf之后的語(yǔ)句。,134,注意:整個(gè)塊結(jié)構(gòu)必須以If語(yǔ)句開(kāi)頭,EndIf語(yǔ)句結(jié)束。除了第一行的If語(yǔ)句和最后一行的EndIf語(yǔ)句是必須的以外,ElseIf子句和Else子句都是可選的。,塊結(jié)構(gòu)條件語(yǔ)句的兩種常見(jiàn)的簡(jiǎn)化形式: 形式一: If Then Else End If 形式二: If Then End lf 形式一的功能與單行結(jié)構(gòu)條件語(yǔ)句功能相同,用于處理兩個(gè)條件分支的情況;而形式二僅在條件成立時(shí)執(zhí)行一定的操作,當(dāng)條件不成立時(shí)則不做任何處理。

39、,135,注意: 1)使用塊結(jié)構(gòu)條件語(yǔ)句時(shí),關(guān)鍵字Elself不能寫成 Else If,即中間不能有空格。 2)在書寫時(shí),可以將If語(yǔ)句、ElseIf語(yǔ)句、Else子句和EndIf語(yǔ)句左對(duì)齊,而各語(yǔ)句組向右縮進(jìn)若干空格,以使程序結(jié)構(gòu)更加清楚,便于閱讀和查錯(cuò)。 3)要注意嚴(yán)格按格式要求進(jìn)行書寫,不可以隨意換行或?qū)尚泻喜⒊梢恍小?4)塊結(jié)構(gòu)條件語(yǔ)句可以嵌套。,136,格式如下: Select Case Case Case Case Else End Select,3 多分支選擇語(yǔ)句,功能: 根據(jù)的值,按順序匹配Case后的表達(dá)式表,如果匹配成功,則執(zhí)行該Case下的語(yǔ)句組,然后轉(zhuǎn)到EndSele

40、ct語(yǔ)句之后繼續(xù)執(zhí)行;如果的值與各表達(dá)式表都不匹配,則執(zhí)行CaseElse之后的,再轉(zhuǎn)到EndSelect語(yǔ)句之后繼續(xù)執(zhí)行。,137,可以是任何數(shù)值表達(dá)式或字符表達(dá)式。Case后的表達(dá)式表可以有如下形式之一: 1) ,如:Case l,3,5 表示的值為1或3或5時(shí)將執(zhí)行該Case語(yǔ)句之后的語(yǔ)句組。 2) TO :Case l0 TO 30 表示的值在10到30之間(包括10和30)時(shí)將執(zhí)行該Case語(yǔ)句之后的語(yǔ)句組。 3)Is :Case Is=10 表示的值大于或等于10時(shí)將執(zhí)行該Case語(yǔ)句之后的語(yǔ)句組。 以上三種方式可以同時(shí)出現(xiàn)在同一個(gè)Case語(yǔ)句之后,各項(xiàng)之間用逗號(hào)隔開(kāi)。 如:Cas

41、e l,3,10 T0 20, Is0,138,設(shè)從文本框Textl輸人X的值,單擊命令按鈕Commandl計(jì)算Y的值,結(jié)果顯示于文本Text2中: Private Sub Command1_Click() X=Val(Text1.Text) Select Case X Case Is 0 Y = Log(X)/Log(10) End Select Text2Text=Format(Y, ”0.000000”) 保留6位小數(shù) End Sub,按以下公式求分段函數(shù)y的值,139,注意: 1)的類型應(yīng)與Case后的表達(dá)式類型一致。 2)不可以在Case后的表達(dá)式中使用中的變量。 3)只能是一個(gè)變量

42、或表達(dá)式,而不能是變量表或表達(dá)式表。 4)語(yǔ)句也可以嵌套,但每個(gè)嵌套的Select Case語(yǔ)句必須要有相應(yīng)的語(yǔ)句。 5)不要在Case后直接使用布爾運(yùn)算符來(lái)表示條件,例如,要表示條件00 And X100 End Select 對(duì)于較復(fù)雜的條件,可以用塊If語(yǔ)句來(lái)實(shí)現(xiàn),而有些條件完全可以轉(zhuǎn)換成Case語(yǔ)句允許的幾種形式之一.,140,以上三種條件結(jié)構(gòu)都能解決需要多分支處理的問(wèn)題,但根據(jù)不同的要求選擇適當(dāng)?shù)慕Y(jié)構(gòu)進(jìn)行編程,可以簡(jiǎn)化編程,使程序結(jié)構(gòu)更加清楚,便于閱讀和查錯(cuò)。 對(duì)于簡(jiǎn)單的兩個(gè)分支的情況,使用單行結(jié)構(gòu)條件語(yǔ)句就比較方便; 使用塊結(jié)構(gòu)條件語(yǔ)句可以處理分支較多,條件較復(fù)雜的情況;而多分支選

43、擇結(jié)構(gòu)更適合于對(duì)單一表達(dá)式進(jìn)行多種條件判斷的情況。 編程時(shí),使用條件結(jié)構(gòu)語(yǔ)句尤其要注意兩個(gè)問(wèn)題, 一是條件的書寫, 二是不同語(yǔ)句結(jié)構(gòu)之間的格式區(qū)別。,141,3.2.2舉例,Private Sub Command1_Click() If Text1.Text = 王剛 Then If UCase(Text2.Text) = ABCDE Then MsgBox 口令正確! Else MsgBox 口令錯(cuò)誤! End End If Else MsgBox 用戶名錯(cuò)誤! End End If Print Print Spc(20); 歡迎使用! End Sub,142,例:運(yùn)費(fèi)計(jì)算.規(guī)則如下: 50

44、km以內(nèi): 運(yùn)費(fèi)=運(yùn)量(t)*距離(km)*1(元) 50100km: 運(yùn)費(fèi)=運(yùn)量(t)*距離(km)*0.8(元) 101300km:運(yùn)費(fèi)=運(yùn)量(t)*距離(km)*0.6(元) 300km以上:運(yùn)費(fèi)=運(yùn)量(t)*距離(km)*0.5(元),Private Sub Command2_Click() Dim y1, j1, yf As Single y1 = Text1.Text j1 = Text2.Text Select Case j1 Case Is 300 yf = y1 * j1 * 0.5 End Select Text3.Text = CStr(yf) End Sub,Priva

45、te Sub Command1_Click() Text1.Text = Text2.Text = Text3.Text = End Sub Private Sub Command3_Click() Unload Me End Sub,143,3.3 循環(huán)結(jié)構(gòu)程序設(shè)計(jì),和順序結(jié)構(gòu)、選擇結(jié)構(gòu)一樣,循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序中的三種基本程序結(jié)構(gòu)之一。在程序中,凡是需要重復(fù)相同或相似的操作步驟,都可以用循環(huán)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。 循環(huán)結(jié)構(gòu)由兩部分組成: 循環(huán)體,即要重復(fù)執(zhí)行的語(yǔ)句序列; 循環(huán)控制部分,即用于規(guī)定循環(huán)的重復(fù)條件或重復(fù)次數(shù),同時(shí)確定循環(huán)范圍的語(yǔ)句。 要使計(jì)算機(jī)能夠正常執(zhí)行某循環(huán),由循環(huán)控制部分所規(guī)定的循

46、環(huán)次數(shù)必須是有限的,即循環(huán)體可以重復(fù)0次到若干次。,3.3.1實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語(yǔ)句,144,VB支持的循環(huán)結(jié)構(gòu)有: ForNext循環(huán) DoLoop循環(huán) For EachNext循環(huán) While Wend循環(huán) 本章將介紹ForNext循環(huán)結(jié)構(gòu)和DoLoop循環(huán)結(jié)構(gòu)。其中ForNext循環(huán)結(jié)構(gòu)常用于設(shè)計(jì)已知循環(huán)次數(shù)的程序,而DoLoop WhileWend循環(huán)結(jié)構(gòu)更適合于設(shè)計(jì)循環(huán)次數(shù)未知,而只知道循環(huán)結(jié)束條件的程序。For EachNext循環(huán)將在數(shù)組中介紹。,145,1. ForNext循環(huán)語(yǔ)句,在已知循環(huán)要執(zhí)行多少次時(shí),最好使用ForNext循環(huán)。在ForNext循環(huán)中使用一個(gè)起計(jì)數(shù)器作用的循

47、環(huán)變量,每重復(fù)一次循環(huán)之后,循環(huán)變量的值就會(huì)按一定的步長(zhǎng)增加或者減少,直到超過(guò)某規(guī)定的終值時(shí)退出循環(huán)。 格式如下: For = To Step Exit For Next ,146,VisualBasic按以下步驟執(zhí)行ForNext循環(huán): 1)首先將設(shè)置為。 2)若為正數(shù),則測(cè)試是否大于, 若是,則退出循環(huán),執(zhí)行Next語(yǔ)句之后的語(yǔ)句,否則繼續(xù)下一步。 若為負(fù)數(shù),則測(cè)試是否小于,若是,則退出循環(huán)Next語(yǔ)句后的語(yǔ)句,否則繼續(xù)下一步。 3)執(zhí)行循環(huán)體部分,即執(zhí)行For語(yǔ)句和Next語(yǔ)句之間的語(yǔ)句組。 4)的值增加值。 5)返回步驟2)。,147,以下面循環(huán)為例,以框圖形式說(shuō)明For循環(huán)執(zhí)行過(guò)程:

48、 For I= to step 循環(huán)體 Next I,148,說(shuō)明: 、和都是數(shù)值型的,其中,、和是必需的。 可正可負(fù),也可以省略。若為正,則必須小于或等于,否則不能執(zhí)行循環(huán)體內(nèi)的語(yǔ)句;若為負(fù),則必須大于或等于,否則不能執(zhí)行循環(huán)體內(nèi)的語(yǔ)句;若省略,則默認(rèn)為1。 Exit For 可選, 語(yǔ)句用于退出循環(huán)體,執(zhí)行Next語(yǔ)句之后的語(yǔ)句。必要時(shí),循環(huán)體中可以放置多條Exit For語(yǔ)句。該語(yǔ)句一般放在某條件結(jié)構(gòu)中,用于表示當(dāng)某種條件成立時(shí),強(qiáng)行退出循環(huán)。 Next語(yǔ)句中的必須與For語(yǔ)句中的一致,也可以省略。,149,例: 求1+2+3+n的值。 分析: 在程序設(shè)計(jì)中,求取一批數(shù)據(jù)的“和”是一種典

49、型的操作,通常稱為“累加”。 “累加”問(wèn)題可以很方便地用循環(huán)來(lái)實(shí)現(xiàn)。設(shè)計(jì)時(shí),一般引入一個(gè)存放和”值的單元,如變量Sum。首先設(shè)置該“和”值為0,然后通過(guò)循環(huán)重復(fù)執(zhí)行: 和值=和值+累加項(xiàng) 即 Sum=Sum+I,程序代碼如下: For I =1 to n Sum=Sum+I Next,150,DoLoop循環(huán)結(jié)構(gòu)有幾種演變形式,但每一種都是通過(guò)判斷某條件以決定循環(huán)是否繼續(xù)執(zhí)行。所不同的是,是先判斷條件后執(zhí)行循環(huán)體,還是先執(zhí)行循環(huán)體后判斷條件;是條件成立時(shí)執(zhí)行循環(huán)(當(dāng)型循環(huán)) ,還是條件不成立時(shí)執(zhí)行循環(huán)(直到型循環(huán)) 。,2. DoLoop循環(huán)語(yǔ)句,Do循環(huán),當(dāng)型,直到型,前測(cè)式,后測(cè)式,前測(cè)式

50、,后測(cè)式,151,格式一 :前測(cè)式當(dāng)型循環(huán) Do While Exit Do Loop,格式二:前測(cè)式直到型循環(huán) Do Until Exit Do Loop,格式三 :后測(cè)式當(dāng)型循環(huán) Do Exit Do Loop While,格式四:后測(cè)式直到型循環(huán) Do Exit Do Loop Until,DoLoop循環(huán)結(jié)構(gòu)的四種格式,152,四種格式的區(qū)別在于的書寫位置不同,可以寫在Do語(yǔ)句之后,也可以寫在Loop語(yǔ)句之后,另外,之前的關(guān)鍵字可以是While,也可以是Until。 使用While時(shí),當(dāng)指定的條件為True時(shí),執(zhí)行循環(huán)體中的語(yǔ)句組,而當(dāng)條件為False時(shí)則退出循環(huán),執(zhí)行循環(huán)終止語(yǔ)句Lo

51、op之后的語(yǔ)句。 使用Until時(shí),當(dāng)指定的條件為False時(shí),執(zhí)行循環(huán)體中的語(yǔ)句組,而當(dāng)條件為True時(shí)則退出循環(huán),執(zhí)行循環(huán)終止語(yǔ)句Loop之后的語(yǔ)句。 使用While和使用Until的區(qū)別是: While表示當(dāng)條件成立時(shí)執(zhí)行循環(huán)體, Until則是在條件不成立時(shí)執(zhí)行循環(huán)體。,153,四種格式中,格式一和格式二在循環(huán)的起始語(yǔ)句Do之后判斷條件,屬于當(dāng)型循環(huán); 格式三和格式四在循環(huán)的終止語(yǔ)句Loop處判斷條件,屬于直到型循環(huán)。 Exit Do語(yǔ)句用于退出循環(huán)體,執(zhí)行Loop語(yǔ)句之后的語(yǔ)句。必要時(shí),循環(huán)體中可以放置多條ExitDo語(yǔ)句。該語(yǔ)句一般放在某條件結(jié)構(gòu)中,用于表示當(dāng)某種條件成立時(shí),強(qiáng)行退

52、出循環(huán) 也可以在Do語(yǔ)句和Loop語(yǔ)句之后都沒(méi)有條件判斷,這時(shí)循環(huán)將無(wú)條件地重復(fù),因此在這種情況下,在循環(huán)體內(nèi)必須有強(qiáng)行退出循環(huán)的語(yǔ)句,如Exit Do語(yǔ)句,以保證循環(huán)在執(zhí)行有限次數(shù)后退出。,154,例:從鍵盤輸入一正整數(shù),判斷是否是素?cái)?shù)。,程序代碼如下: Input “n=”;n k=int(sqr(n) I=2 flag=0 do while I=k and flag=0 if n mod I=0 then flag=1 else I=I+1 end if loop if flag=0 then print n;”is a prime number.” else print n;”is n

53、ot a prime number.” end if,155,3. WhileWend循環(huán)語(yǔ)句,格式如下: While Wend 功能:當(dāng)條件為True時(shí),反復(fù)執(zhí)行循環(huán),為False時(shí)退出循環(huán)。,156,通常,把循環(huán)體內(nèi)不再包含其他循環(huán)的循環(huán)結(jié)構(gòu)叫做單層循環(huán)。在處理某些問(wèn)題時(shí),常常要在循環(huán)體內(nèi)再進(jìn)行循環(huán)操作,而在內(nèi)嵌的循環(huán)中還可以再包含循環(huán),這種情況叫多重循環(huán),又稱為循環(huán)的嵌套。 VB對(duì)循環(huán)的嵌套層數(shù)沒(méi)有限制,當(dāng)循環(huán)的層數(shù)太多時(shí),程序的可讀性會(huì)下降。 習(xí)慣上,為了使循環(huán)結(jié)構(gòu)更具可讀性,總是用縮排的方式書寫循環(huán)體部分。,4. 循環(huán)的嵌套,157,多層循環(huán)的執(zhí)行過(guò)程是,外層循環(huán)每執(zhí)行一次,內(nèi)層循環(huán)

54、就要從頭開(kāi)始執(zhí)行一輪。 如: For I=1 To 9 For J=1 To 9 Print I; ”*”;J;“=”;I*J Next J Next I 在以上的雙重循環(huán)中,外層循環(huán)變量I取1時(shí),內(nèi)層循環(huán)就要執(zhí)行9次(J依次取1、2、3、9),接著,外層循環(huán)變量I=2,內(nèi)層循環(huán)同樣要重新執(zhí)行9次(J再依次取1、2、3、9),所以循環(huán)共執(zhí)行81次。,158,同類循環(huán)可以嵌套,F(xiàn)orNext循環(huán)和DoLoop循環(huán)也可以互相嵌套。嵌套時(shí),內(nèi)層循環(huán)必須完全嵌套在外層循環(huán)之內(nèi)。例如,以下的嵌套都是允許的,For I=1 To 10 For J=1 To 20 Next J Next I,Do For

55、J=1 To 20 Next J Loop While I=10,For I=1 To 10 Do While J=20 Loop Next I,Do Do While J10,159,交叉是不允許的,For I=1 To 10 For J=1 To 20 Next I Next J,Do For J=1 To 20 Loop While I=10 Next J,For I=1 To 10 Do While J=20 Next I Loop,160,當(dāng)多重ForNext循環(huán)的Next語(yǔ)句連續(xù)出現(xiàn)時(shí),Next語(yǔ)句可以合并成一條,而在其后跟著各循環(huán)控制變量,內(nèi)層循環(huán)變量寫在前面,外層循環(huán)變量寫在后

56、面,例如,以下兩個(gè)三重循環(huán)的寫法是完全等價(jià)的。,注意,Next語(yǔ)句之后的循環(huán)變量的次序,只能按先內(nèi)層循環(huán)變量,后外層循環(huán)變量的次序。如果將以上的Next語(yǔ)句寫成Next I, J, K則是錯(cuò)誤的。,寫法一 For I=1 To 10 For J=1 To 20 For K=1 To 30 Next K Next J Next I,寫法二 For I=1 To 10 For J=1 To 20 For K=1 To 30 Next K, J, I,161,在多重循環(huán)的任何一層循環(huán)中都可以使用Exit Do或Exit For退出循環(huán),注意只能退出Exit Do或Exit For語(yǔ)句所對(duì)應(yīng)的最內(nèi)層循

57、環(huán),而不是一次退出多層循環(huán)。 例如,下例的循環(huán)退出位 置如箭頭所示:,F=1 For I=1 To 10 For J=1 To 10 F=F*I*J If F1000 Then Exit For Next J Print I; J; F F=1 Next I,F=1 Do While I1000 Then Exit Do Next J Print F F=1 I=I+1 Loop Print F,162,3.3.2 舉例,例1:打印九九乘法口訣表,程序如下: Private Sub Form_Click() Dim i As Integer, j As Integer For i = 1 To

58、 9 For j = 1 To 9 Print i; *; j; =; Format(i * j, ); Next j Print Next i End Sub,163,若打印格式改進(jìn)如下:,程序修改如下: Private Sub Form_Click() Dim i As Integer, j As Integer For i = 1 To 9 For j = 1 To i Print i; *; j; =; Format(i * j, ); Next j Print Next i End Sub,164,若打印格式修改如下:,程序修改如下: Private Sub Form_Click() Dim i As Integer, j As Integer For i = 1 To 9 For j = 1 To i Print j; *; i; =; Format(i * j, ); N

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論