本科課件-計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)教程(完整)_第1頁(yè)
本科課件-計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)教程(完整)_第2頁(yè)
本科課件-計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)教程(完整)_第3頁(yè)
本科課件-計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)教程(完整)_第4頁(yè)
本科課件-計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)教程(完整)_第5頁(yè)
已閱讀5頁(yè),還剩529頁(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、2022年7月24日1計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)教程(第三版)第1章 程序設(shè)計(jì)與算法 2022年7月24日2 主要內(nèi)容1.1程序設(shè)計(jì)的基本概念1.2算法及算法的描述工具1.3算法設(shè)計(jì)舉例習(xí)題 12022年7月24日31.1程序設(shè)計(jì)的基本概念1.1.1程序與程序設(shè)計(jì)1.1.2程序設(shè)計(jì)的過(guò)程和特性1.1.3程序設(shè)計(jì)語(yǔ)言1.1.4程序設(shè)計(jì)方法1.1.5程序的質(zhì)量標(biāo)準(zhǔn)2022年7月24日41.1.1程序與程序設(shè)計(jì)為了解決某個(gè)實(shí)際問(wèn)題而編排的指令序列稱之為程序。程序是由多條指令按照一定的順序組合而成的。在程序中使用哪些指令?這些指令出現(xiàn)和執(zhí)行應(yīng)該按怎樣的順序?程序是基于某種指令系統(tǒng)來(lái)實(shí)現(xiàn)的。對(duì)于計(jì)算機(jī)程序設(shè)計(jì)而

2、言,就是要基于某種具體的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言來(lái)編寫(xiě)程序。 2022年7月24日51.1.2程序設(shè)計(jì)的過(guò)程和特性程序設(shè)計(jì)過(guò)程問(wèn)題分析、確定算法、編碼實(shí)現(xiàn)算法問(wèn)題輸入指令(computer )輸出2022年7月24日6程序設(shè)計(jì)的特性構(gòu)造性構(gòu)造性決定了不能用統(tǒng)一的標(biāo)準(zhǔn)來(lái)衡量程序的質(zhì)量。構(gòu)造性決定了難以用形式化的方法來(lái)證明程序的正確性。嚴(yán)謹(jǐn)性編制程序所使用的程序設(shè)計(jì)語(yǔ)言是上下文無(wú)關(guān)的形式語(yǔ)言,需要程序員具有認(rèn)真的工作作風(fēng)和縝密的邏輯思維能力等基本素質(zhì)。 抽象性要讓計(jì)算機(jī)來(lái)求解現(xiàn)實(shí)世界中的某一實(shí)際問(wèn)題,程序員必須將該問(wèn)題的求解方法和步驟進(jìn)行歸納和抽象,用計(jì)算機(jī)能夠理解和執(zhí)行的操作指令來(lái)實(shí)現(xiàn)每一個(gè)解題步驟,

3、將這些指令合理地進(jìn)行編排和控制,從而形成計(jì)算機(jī)程序。這就需要程序員具有較強(qiáng)的概括和抽象能力。2022年7月24日71.1.3程序設(shè)計(jì)語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言通用語(yǔ)言比如,BASIC/Visual BASIC,C/C+/Visual C+,PASCAL等等 專用語(yǔ)言APL是為數(shù)組和向量運(yùn)算設(shè)計(jì)的簡(jiǎn)潔而又功能很強(qiáng)的語(yǔ)言;BLISS是為開(kāi)發(fā)編譯程序和操作系統(tǒng)而設(shè)計(jì)的語(yǔ)言;FORTH是為開(kāi)發(fā)微處理機(jī)軟件而設(shè)計(jì)的語(yǔ)言;LISP語(yǔ)言和PROLOG語(yǔ)言特別適合于編寫(xiě)人工智能領(lǐng)域的應(yīng)用程序。 數(shù)據(jù)庫(kù)管理系統(tǒng)目前常用的數(shù)據(jù)庫(kù)管理系統(tǒng)有,SQL Server,Oracle,Visual FoxPro等等。 2022年

4、7月24日8圖1.1 解釋型語(yǔ)言源程序的執(zhí)行過(guò)程這種翻譯方式執(zhí)行速度較慢,因?yàn)樗划a(chǎn)生可執(zhí)行文件,每次運(yùn)行都要重新解釋一次。 源程序和數(shù)據(jù)計(jì)算機(jī)解釋程序目標(biāo)程序運(yùn)行結(jié)果2022年7月24日9圖1.2 編譯型語(yǔ)言源程序的編譯和執(zhí)行過(guò)程編譯生成了可執(zhí)行文件之后,就不再需要源程序了,而且執(zhí)行速度較快。 源程序計(jì)算機(jī)編譯程序目標(biāo)程序(文件)運(yùn)行結(jié)果計(jì)算機(jī)目標(biāo)程序(文件)數(shù)據(jù)2022年7月24日10程序設(shè)計(jì)語(yǔ)言的發(fā)展 (1) 機(jī)器語(yǔ)言(2) 匯編語(yǔ)言(3) 高級(jí)語(yǔ)言(4) 第四代程序設(shè)計(jì)語(yǔ)言2022年7月24日111.1.4程序設(shè)計(jì)方法結(jié)構(gòu)化分析與設(shè)計(jì)的方法 主要采用功能分解的方法,利用模塊分解和功能抽

5、象,自頂向下、分而治之。 面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù) 可以將解決某個(gè)問(wèn)題的全套解決方案作為一個(gè)對(duì)象來(lái)進(jìn)行分析,也可以將問(wèn)題中涉及到的具體事物作為對(duì)象。對(duì)象是一個(gè)容器,其中包括數(shù)據(jù)和處理該數(shù)據(jù)的代碼,其內(nèi)部的具體工作過(guò)程常常是與外部隔離的。模塊僅包含代碼,數(shù)據(jù)是游離在外的。對(duì)象的操作是由向?qū)ο蟀l(fā)消息引起。2022年7月24日12面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)中的基本概念 1、對(duì)象對(duì)象可以表現(xiàn)為一個(gè)窗口、窗口中的一個(gè)按鈕、一個(gè)圖畫(huà)框、一個(gè)表格等可視的程序組件,還可以表現(xiàn)為變量、文件等不可視的程序元素。2、類類是對(duì)象的原型,它描述該類任一對(duì)象的共同行為特征,是對(duì)一組性質(zhì)相同對(duì)象的計(jì)算機(jī)語(yǔ)言描述,概括了對(duì)象的共同的數(shù)

6、據(jù)結(jié)構(gòu)和操作。 例如,在程序?qū)崿F(xiàn)時(shí)的一個(gè)窗口對(duì)象,就是窗口類的一個(gè)實(shí)例。 2022年7月24日13圖1.3對(duì)象、實(shí)體、與類之間的關(guān)系對(duì)象類實(shí)體抽象數(shù)據(jù)類人腦計(jì)算機(jī)現(xiàn)實(shí)世界映射計(jì)算機(jī)邏輯的實(shí)現(xiàn)2022年7月24日14面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)中的基本概念 3、屬性對(duì)象中描述實(shí)體靜態(tài)特性的數(shù)據(jù)稱為(對(duì)象的)屬性。 4、方法對(duì)象中用以模擬實(shí)體動(dòng)態(tài)行為的“對(duì)數(shù)據(jù)施加的操作”稱為(對(duì)象的)方法。例如,對(duì)于對(duì)象“學(xué)生成績(jī)表”,增加一條記錄、刪除一條記錄、求最大值、求平均值、求前十名等等都是方法。 方法是封裝在對(duì)象之中的特定的程序段,叫做方法過(guò)程。在程序中,使某個(gè)方法執(zhí)行稱為調(diào)用該方法。2022年7月24日15面

7、向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)中的基本概念 5、事件導(dǎo)致某個(gè)對(duì)象的“操作”被執(zhí)行的過(guò)程稱為事件。某個(gè)事件發(fā)生時(shí),對(duì)象所執(zhí)行的操作稱為事件響應(yīng)。面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言為每一個(gè)對(duì)象都預(yù)先定義了許多事件,一個(gè)事件發(fā)生時(shí)系統(tǒng)要作何響應(yīng),需要由程序員根據(jù)具體功能來(lái)編寫(xiě)相應(yīng)的響應(yīng)代碼,該代碼稱做事件過(guò)程。 2022年7月24日161.1.5程序的質(zhì)量標(biāo)準(zhǔn)正確性易讀性有效性可維護(hù)性適應(yīng)性此外,程序設(shè)計(jì)必須盡力達(dá)到的四個(gè)目標(biāo)是:可檢驗(yàn)的、可修正的、可重復(fù)使用的、可移植的。2022年7月24日171.2算法及算法的描述工具1.2.1算法和算法設(shè)計(jì)1.2.2算法描述工具1.2.3算法的基本特性2022年7月24日181.2.

8、1算法和算法設(shè)計(jì)什么是算法? 算法是一組(有限個(gè))規(guī)則,它提供了解決某個(gè)特定問(wèn)題的運(yùn)算序列。 程序和算法是怎樣的一種關(guān)系呢? 程序是算法用計(jì)算機(jī)語(yǔ)言實(shí)現(xiàn)的形式。程序數(shù)據(jù)結(jié)構(gòu)算法 2022年7月24日191.2.3 算法的基本特性和性質(zhì)算法的基本特性有窮性確定性能行性有輸入和輸出 評(píng)價(jià)算法根據(jù)其: 正確性 可讀性 健壯性 較高的時(shí)空效率2022年7月24日20*基本數(shù)據(jù)結(jié)構(gòu)和經(jīng)典算法簡(jiǎn)介基本數(shù)據(jù)結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)、圖、樹(shù)、集合與字典重要的經(jīng)典算法排序查找串處理圖問(wèn)題:圖的遍歷、拓?fù)渑判?、旅行商?wèn)題、圖填色問(wèn)題組合問(wèn)題:旅行商問(wèn)題(最短路徑問(wèn)題)、圖填色問(wèn)題幾何問(wèn)題:凸包問(wèn)題數(shù)值問(wèn)題:解方程和方程組

9、、算法定積分、求函數(shù)的解 2022年7月24日21*算法的設(shè)計(jì)和分析過(guò)程決定:計(jì)算方法;精確和近似的解法;數(shù)據(jù)結(jié)構(gòu);算法設(shè)計(jì)技術(shù)理解問(wèn)題設(shè)計(jì)算法正確性證明分析算法根據(jù)算法寫(xiě)代碼2022年7月24日221.2.2 算法描述工具目前廣泛使用的算法描述工具有:程序流程圖、N-S圖、PAD圖、偽碼、自然語(yǔ)言等等。 圖1.4 求一元二次方程根的算法輸入: a,b,c開(kāi)始計(jì)算: d=b*b-4*a*c計(jì)算根:x1,x2輸出:”無(wú)解”輸出: x1,x2結(jié)束d=0?是否2022年7月24日23程序流程圖的基本符號(hào)2022年7月24日24三種基本結(jié)構(gòu) S1S2C是否S1C是否圖1.6 分支(選擇)結(jié)構(gòu)(a)(b

10、)S1S2S3圖1.5 順序結(jié)構(gòu)2022年7月24日25三種基本結(jié)構(gòu)(續(xù))圖1.8 循環(huán)結(jié)構(gòu)(a)(b)SC是否SC是否2022年7月24日26圖1.7 使用多次判斷的部分流程圖計(jì)算:y=xX=1?是否X10?是否計(jì)算:y=x3-17計(jì)算:y=x2-1If x=1 then y=xElse if x2)。例1.4 求n!。2022年7月24日28例1.1 統(tǒng)計(jì)10個(gè)數(shù)中,有多少個(gè)數(shù)為3的整數(shù)倍數(shù)。 T=0; I=1; 如果I10則轉(zhuǎn)到;-1 輸入X;-2 如果X不是3 的整數(shù)倍數(shù),則轉(zhuǎn);-3 T加1; I加1,然后轉(zhuǎn); 輸出T; 結(jié)束。圖1.9 例1.1的流程圖開(kāi)始T=0,I=1T=T+1I1

11、0是是3的倍數(shù)I=I+1結(jié)束否否輸入:X輸出:T2022年7月24日29例1.2 找出2100間的素?cái)?shù)。算法框架: n=2; 如果n100則轉(zhuǎn)到; 判斷n是否為素?cái)?shù); n加1,然后轉(zhuǎn); 結(jié)束。開(kāi)始n=2IsPrime=0n100是否I=nI=I+1結(jié)束否是圖1.10 例1.2的流程圖IsPrime=1輸出:不是素?cái)?shù)I=2否除不盡是IsPrime=1輸出:是素?cái)?shù)否是2022年7月24日30詳細(xì)算法 n=2; 如果n100則轉(zhuǎn)到,否則執(zhí)行下一步;-1 IsPrime=1;-2-1 I=2;-2-2 如果I=n,則轉(zhuǎn)-3,否則執(zhí)行下一步;-2-3 如果 n MOD I0,則轉(zhuǎn)-2-5,否則執(zhí)行下一步

12、;-2-4 IsPrime=0,轉(zhuǎn)-3;-2-5 I加1,轉(zhuǎn)-2-2;-3 如果IsPrime=1,則輸出“n是素?cái)?shù)”, 否則輸出“n不是素?cái)?shù)”; n加1,然后轉(zhuǎn); 結(jié)束。2022年7月24日31例1.3 求Fibonacci數(shù)列的第n項(xiàng)值(n2)。 輸入n; fa=0; fb=1; I=3; fc=fa+fb; 如果I=n 則轉(zhuǎn)到;開(kāi)始fa=0, fb=1否I=nI=I+1結(jié)束圖1.11 例1.3的流程圖I=3fc=fa+fb是輸出:fcfa=fbfb=fc輸入:n I=I+1; fa=fb; fb=fc; 轉(zhuǎn); 輸出fc; 結(jié)束。2022年7月24日32例1.4 求n!。最容易理解的遞推算

13、法如下: 輸入n; f=1; I=1; 如果In 則轉(zhuǎn)到; f=fI; I=I+1; 轉(zhuǎn); 輸出f; 結(jié)束。2022年7月24日33遞歸遞歸算法一般具有如下形式: 若問(wèn)題的規(guī)模滿足邊界條件,則計(jì)算并返回結(jié)果; 否則,遞歸求解。計(jì)算m的階乘的fact函數(shù)可定義如下: 接受參數(shù)m; 如果m=0,fact=1, 轉(zhuǎn); 否則,fact=m*fact(m-1),注意:自己調(diào)用自己; 返回函數(shù)值fact。2022年7月24日34求n!的算法如下: 輸入n; f=fact(n);注意:在此調(diào)用了前面定義的遞歸函數(shù)fact(m); 輸出f; 結(jié)束。2022年7月24日35以上通過(guò)四個(gè)例子簡(jiǎn)單介紹了幾類常用的算

14、法窮舉遞推遞歸其它:迭代法、回溯法、貪心算法、動(dòng)態(tài)規(guī)劃2022年7月24日36習(xí)題 11.1 什么是程序?什么是程序設(shè)計(jì)?1.2 程序設(shè)計(jì)過(guò)程主要包括哪些步驟?各步驟的主要任務(wù)是什么?1.3 程序設(shè)計(jì)工作具有哪些特性?1.4 怎樣評(píng)價(jià)一個(gè)程序質(zhì)量的好壞?1.5 什么是解釋型程序設(shè)計(jì)語(yǔ)言?什么是編譯型程序設(shè)計(jì)語(yǔ)言?1.6 解釋下列概念:對(duì)象,屬性,方法,事件。1.7 什么是算法?1.8 簡(jiǎn)述算法與程序有什么關(guān)系?2022年7月24日37習(xí)題 1-續(xù)1.9 算法有哪些基本特性?1.10 設(shè)計(jì)計(jì)算s=1+2+3+100的算法。1.11 設(shè)計(jì)計(jì)算s=1+(1+2)+(1+2+3)+(1+2+100)的

15、算法。1.12 設(shè)計(jì)求n個(gè)數(shù)的平均值的算法。1.13 設(shè)計(jì)求n個(gè)數(shù)中最小值的算法。1.14 一個(gè)n位數(shù),如果其各位數(shù)字的n次方之和等于該數(shù),則稱之為Armstrong數(shù)。例如,3位數(shù)153是Armstrong數(shù)(153=13+53+33)。試用枚舉的思想設(shè)計(jì)找出3位數(shù)中所有Armstrong數(shù)的算法。2022年7月24日38習(xí)題 1-續(xù)1.15 觀察下列數(shù)列Pn(n=1,2,3,),找出遞推關(guān)系式,并設(shè)計(jì)計(jì)算其第20項(xiàng)的算法: 1,2,4,7,11,16,。 0,1,3,7,15,31,。 1,1,3,7,13,21,。 1/2,2/3,3/5,5/8,8/13,。1.16設(shè)計(jì)計(jì)算 近似值的算

16、法(計(jì)算到末項(xiàng)的絕對(duì)值小于10-5為止)。2022年7月24日39習(xí)題 1-續(xù)1.17已知 。設(shè)計(jì)根據(jù)此式計(jì)算值的算法(計(jì)算到末項(xiàng)的絕對(duì)值小于10-5為止)。1.18 Hermite多項(xiàng)式定義為:設(shè)計(jì)求Hermite多項(xiàng)式第n項(xiàng)值的算法。2022年7月24日40下課第1章 完2022年7月24日41第 2 章程序設(shè)計(jì)工具與界面設(shè)計(jì)開(kāi)發(fā)環(huán)境界面及其基本設(shè)計(jì)語(yǔ)句及語(yǔ)法基本控件2022年7月24日42本章主要內(nèi)容2.1程序設(shè)計(jì)工具2.2界面及其基本設(shè)計(jì)習(xí)題 22022年7月24日432.1程序設(shè)計(jì)工具2.1.1Visual Basic簡(jiǎn)介2.1.2Visual Basic的特點(diǎn)2.1.3Visual

17、 Basic的開(kāi)發(fā)環(huán)境2.1.4Visual Basic工程2.1.5Visual Basic應(yīng)用程序設(shè)計(jì)過(guò)程2.1.6Visual Basic的語(yǔ)句及語(yǔ)法2022年7月24日442.1.1Visual Basic簡(jiǎn)介Basic 的原意Beginners All-purpose Symbolic Instruction Code初學(xué)者通用的符號(hào)指令代碼Visual Basic中的“Visual”意味著直觀的編程方法面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。即開(kāi)發(fā)圖形用戶界面(GUI,Graphical User Interface)的方法。Visual Basic 6.0包括三種版本,分別是學(xué)習(xí)版、專業(yè)版和企業(yè)

18、版。 2022年7月24日452.1.2Visual Basic的特點(diǎn)1) 可視化的設(shè)計(jì)平臺(tái)2) 面向?qū)ο蟮脑O(shè)計(jì)方法3) 結(jié)構(gòu)化的設(shè)計(jì)語(yǔ)言4) 事件驅(qū)動(dòng)的編程機(jī)制5) 充分利用Windows資源6) 開(kāi)放的數(shù)據(jù)庫(kù)功能與網(wǎng)絡(luò)支持2022年7月24日462.1.3Visual Basic的開(kāi)發(fā)環(huán)境菜單欄工具欄工具箱代碼編輯器窗體編輯器工程資源管理器屬性窗口窗體布局窗口圖 2.1 界面2022年7月24日47菜單欄文件(File)文件管理和打印,生成EXE文件等。編輯(Edit)標(biāo)準(zhǔn)編輯操作,有撤消、查找等功能。視圖(View)顯示或隱藏窗口和工具欄。工程(Project)設(shè)置工程屬性,添加/刪除窗

19、體和模塊,添加 /刪除附注和組件。格式(Format)對(duì)齊或調(diào)整控件尺寸。調(diào)試(Debug)啟動(dòng)/中止整個(gè)程序的調(diào)試和單步調(diào)試。運(yùn)行(Run)啟動(dòng)一個(gè)程序或全編譯執(zhí)行。工具(Tools)添加過(guò)程,啟動(dòng)菜單編輯器,設(shè)置IDE選項(xiàng)。外接程序(Add-Ins)外接程序管理器,列舉和管理多個(gè)外接程序。窗口(Window)排列或選擇打開(kāi)的窗口。幫助(Help)管理所有“幫助”以及“關(guān)于”對(duì)話框。2022年7月24日48工具欄圖 2.2 Visual Basic的標(biāo)準(zhǔn)工具欄添加項(xiàng)添加窗體模塊等菜單編輯器打開(kāi)工程保存工程剪切復(fù)制粘貼查找撤消重復(fù)開(kāi)始暫停停止工程資源管理器屬性窗口窗體布局窗口對(duì)象瀏覽器工具箱數(shù)

20、據(jù)視圖窗口VisualComponentManager屏幕位置窗體尺寸2022年7月24日49工程資源管理器 通過(guò)工程資源管理器,可以對(duì)整個(gè)工程有一個(gè)整體性的概覽,可以在工程資源管理器中選擇要處理的某個(gè)資源對(duì)象,也可以添加、刪除各類項(xiàng)目。尤其是在管理那些龐大的、包含許多組成部分的工程時(shí),工程資源管理器的作用更明顯。圖 2.3 工程資源管理器2022年7月24日50屬性窗口當(dāng)選中某個(gè)對(duì)象時(shí),在屬性窗口中就會(huì)顯示該對(duì)象的各種屬性設(shè)置,通過(guò)選中屬性窗口中相應(yīng)的屬性項(xiàng),可以改變或檢查該對(duì)象的某個(gè)屬性的設(shè)置。 圖 2.4 屬性窗口2022年7月24日51窗體布局窗口 可以將窗體定位在希望它出現(xiàn)的地方。在

21、窗體布局窗口中,將相應(yīng)窗體拖動(dòng)到新的位置上,即可實(shí)現(xiàn)該窗體的初始定位。窗體位置在工具欄的右側(cè)有相應(yīng)的坐標(biāo)顯示。圖 2.5 窗體布局窗口2022年7月24日52工具箱單擊工具箱中的某一個(gè)工具,然后在窗體上放置即可完成一個(gè)對(duì)象的定義。 圖 2.7 添加新控件后的工具箱圖 2.6 工具箱2022年7月24日53窗體編輯器窗體是Visual Basic工程中用于表現(xiàn)數(shù)據(jù)、進(jìn)行人機(jī)交互的界面。工程中的每個(gè)窗體都將有一個(gè)窗體編輯器。窗體編輯器顯示出正在進(jìn)行編輯的窗體形狀,以及添加到窗體上的控件布局情況。窗體編輯器也叫對(duì)象窗口,參見(jiàn)圖2.8。 2022年7月24日54可以使用“工程”菜單中的“添加窗體”選項(xiàng)

22、向工程中添加新窗體?;蛘呃霉こ藤Y源管理器來(lái)添加或移除窗體。窗體的位置可以在窗體布局窗口中進(jìn)行調(diào)整。窗體的大小可以在窗體編輯器中通過(guò)拖動(dòng)窗體邊框外的調(diào)整點(diǎn)來(lái)改變。利用窗體編輯器進(jìn)行的工作,就是窗體設(shè)計(jì),即運(yùn)行時(shí)的界面設(shè)計(jì)。 2022年7月24日55代碼編輯器 就是用來(lái)編輯代碼的工具,代碼編輯器也叫代碼窗口。參見(jiàn)圖2.9 作用:需要通過(guò)編寫(xiě)代碼來(lái)響應(yīng)對(duì)象所發(fā)生的相關(guān)事件,通過(guò)代碼描述對(duì)具體問(wèn)題的處理方法和步驟,實(shí)現(xiàn)相應(yīng)算法。切換方法:在窗體編輯器中雙擊某個(gè)對(duì)象,可以切換到代碼窗口中的相應(yīng)位置。 2022年7月24日56立即窗口 定義:所謂立即窗口,是指在這個(gè)窗口中輸入的Visual Basic語(yǔ)

23、句會(huì)立即被執(zhí)行。 打開(kāi)方法:點(diǎn)擊“視圖”菜單中的“立即窗口”選項(xiàng)使之出現(xiàn)作用:在該窗口輸入一個(gè)語(yǔ)句后,光標(biāo)位于語(yǔ)句行上時(shí),按回車鍵即可使該語(yǔ)句立即執(zhí)行。通常,可以在該窗口中進(jìn)行簡(jiǎn)單計(jì)算、效果測(cè)試操作等。 2022年7月24日572.1.4 Visual Basic工程以Visual Basic6.0 企業(yè)版為例,使用Visual Basic可以創(chuàng)建以下類型工程:標(biāo)準(zhǔn)Windows EXE程序ActiveX EXE文件ActiveX DLLActiveX 控件Visual Basic向?qū)Ч芾砥鱒isual Basic應(yīng)用程序向?qū)ctiveX 文檔DLLActiveX 文檔EXEDHTML應(yīng)用程

24、序IIS應(yīng)用程序Visual Basic企業(yè)版控件外接程序數(shù)據(jù)工程2022年7月24日58工程Visual Basic引用工程的概念來(lái)管理構(gòu)成應(yīng)用程序的所有不同的文件,有時(shí)工程也指所有與某應(yīng)用程序相關(guān)的文件的集合。 程序設(shè)計(jì)員只負(fù)責(zé)設(shè)計(jì)窗體、編寫(xiě)代碼,這些文件的管理和組織工作大部分由IDE做了。 2022年7月24日59根據(jù)不同的類型,一個(gè)工程所包含的各類文件不完全相同,主要文件類型如下:工程文件(.vbp) 。工程文件就是用來(lái)把所有文件整合在一起用的文件,由與該工程有關(guān)的所有文件和對(duì)象的清單所組成。窗體文件(.frm)。包含窗體及其控件的正文描述,包括它們的屬性設(shè)置。標(biāo)準(zhǔn)模塊文件(.bas)

25、??梢园愋?、常數(shù)、變量、外部過(guò)程和公共過(guò)程的公共的或模塊級(jí)的聲明。類模塊文件(.cls)。與窗體模塊類似,只是沒(méi)有可見(jiàn)的用戶界面??梢允褂妙惸K創(chuàng)建含有方法和屬性代碼的自己的對(duì)象。2022年7月24日60資源文件(.res)。包含著無(wú)需重新編輯代碼便可以改變的位圖、字符串和其它數(shù)據(jù)。一個(gè)工程最多包含一個(gè)資源文件。ActiveX 控件的文件(.dob)。 類似于窗體,但是在互聯(lián)網(wǎng)資源管理器之類的互聯(lián)網(wǎng)瀏覽器中是可以顯示的。Visual Basic 的專業(yè)版和企業(yè)版能夠創(chuàng)建 ActiveX文檔。用戶控件(.ctl)和屬性頁(yè)模塊(.pag)。也類似于窗體,但它們被用于創(chuàng)建ActiveX 控件及與

26、其關(guān)聯(lián)的用來(lái)顯示設(shè)計(jì)時(shí)屬性的屬性頁(yè)。Visual Basic 的專業(yè)版和企業(yè)版能夠創(chuàng)建 ActiveX 控件。2022年7月24日61當(dāng)工程啟動(dòng)時(shí),這些文件和對(duì)象自動(dòng)鏈接到工程文件上。每次保存時(shí),其相關(guān)文件信息隨之更新。某個(gè)工程下的對(duì)象和文件也可供其他工程共享使用。在工程的所有對(duì)象和文件被匯集在一起并完成編碼后,就可以編譯工程,生成可執(zhí)行文件。工程2022年7月24日622.1.5 Visual Basic應(yīng)用程序設(shè)計(jì)過(guò)程1)創(chuàng)建新的Visual Basic工程2) 創(chuàng)建應(yīng)用程序的用戶界面3) 設(shè)置對(duì)象的屬性4)編寫(xiě)程序代碼5)調(diào)試和運(yùn)行程序6) 保存程序7) 編譯、生成可執(zhí)行的應(yīng)用程序202

27、2年7月24日63在VB6.0中演示實(shí)現(xiàn)階乘計(jì)算的算法 Private Sub Command1_Click() Dim i, n As Integer Dim t As Long n = Val(Text1.Text) t = 1 For i = 1 To n Step 1 t = t * i Next Text2.Text = Str(t)End Sub2022年7月24日642.1.6Visual Basic的語(yǔ)句及語(yǔ)法基本語(yǔ)法在編輯命令時(shí)除字符串(由雙引號(hào)括起來(lái)的部分)中的字符外語(yǔ)句不區(qū)分大小寫(xiě),系統(tǒng)能對(duì)語(yǔ)句自動(dòng)進(jìn)行格式調(diào)整。 語(yǔ)句中的標(biāo)點(diǎn)均為英文標(biāo)點(diǎn)。 在每一對(duì)方括號(hào)中出現(xiàn)的內(nèi)容是可

28、選的,如果有多項(xiàng)可以選擇,那么這些項(xiàng)之間就用豎線分隔。 在一對(duì)尖括號(hào)的用文字描述的是可以自己確定的項(xiàng)目,當(dāng)然必須符合項(xiàng)目的要求。語(yǔ)句中關(guān)鍵字是不能變動(dòng)的。 2022年7月24日65省略號(hào)用以表示前面的部分可以多次出現(xiàn)。 在編寫(xiě)代碼時(shí),一句一行。如果一行寫(xiě)不完,也可用續(xù)行符 ( _) 在第二個(gè)物理行上繼續(xù)一個(gè)邏輯行上的內(nèi)容。 如果想使一行多句,可用冒號(hào)(:)來(lái)分隔各語(yǔ)句。例如:Private | Public | Friend Static Sub () Exit SubEnd Sub例如:Dim WithEvents varname(subscripts) As New type , With

29、Events varname(subscripts) As New type . . . 2022年7月24日66幾個(gè)基本語(yǔ)句 1 賦值語(yǔ)句語(yǔ)法:=例子:Total = 101A = 36 + Total/2 ReadOut = GoodMornig!Command1.Caption = 取消操作Text2.Text = Text1.TextA=10 : B=15 : A=A+B : B=A+B2022年7月24日672 注釋語(yǔ)句(不被執(zhí)行,用于增強(qiáng)程序可讀性)Rem 或 例如:i=i+1 計(jì)數(shù)器加1Rem 下面的程序用于判斷N是否為素?cái)?shù)3 End語(yǔ)句End作用:用來(lái)結(jié)束正在運(yùn)行著的程序。 例

30、如:if x0 then end 2022年7月24日682.2界面及其基本設(shè)計(jì)2.2.1界面的作用2.2.2界面設(shè)計(jì)準(zhǔn)備2.2.3窗體2.2.4常用基本控件2.2.5對(duì)話框2022年7月24日692.2.1界面的作用數(shù)據(jù)顯示數(shù)據(jù)輸入與編輯程序流程控制顯示提示和幫助信息2022年7月24日702.2.2界面設(shè)計(jì)準(zhǔn)備利用窗體設(shè)計(jì)器來(lái)實(shí)現(xiàn)。考慮:明確界面的表現(xiàn)主題 考慮要完成的功能的使用情況,以及使用該程序的用戶情況程序界面的設(shè)計(jì)目的是顯示信息還是收集數(shù)據(jù)? 2022年7月24日71界面設(shè)計(jì)的基本過(guò)程界面設(shè)計(jì)在具體設(shè)計(jì)前確定一個(gè)粗略的界面設(shè)計(jì)草圖,對(duì)將表現(xiàn)的內(nèi)容進(jìn)行初步地規(guī)劃、布局。然后考慮采用何

31、種元素(各種控件)來(lái)表現(xiàn)界面的內(nèi)容。最后,還必須經(jīng)過(guò)多次觀察、審視、調(diào)整,以獲取最佳效果。在完成布局后,就應(yīng)該考慮如何通過(guò)事件驅(qū)動(dòng)的方式來(lái)進(jìn)行“看不見(jiàn)”的處理的設(shè)計(jì),即編寫(xiě)解決具體問(wèn)題的代碼。 2022年7月24日722.2.3窗體控制菜單標(biāo)題欄最小化按鈕最大化/還原按鈕關(guān)閉按鈕圖2.20 窗體的結(jié)構(gòu)窗體對(duì)象2022年7月24日73窗體屬性1 窗體名稱name:一般默認(rèn)為:Form1 2 設(shè)置標(biāo)題欄文本:Caption屬性 Form1.Caption = 計(jì)算器3 設(shè)置窗體風(fēng)格BorderStyle屬性 0無(wú)邊框1固定單邊框2可調(diào)尺寸邊框3固定對(duì)話框4固定工具窗口5可變大小工具窗口其中2是新窗

32、體的默認(rèn)值。4 最小化、最大化和關(guān)閉按鈕等標(biāo)準(zhǔn)窗口成分可以通過(guò)窗體屬性ContrlBox設(shè)置/取消2022年7月24日74窗體屬性5 設(shè)置窗體大小和啟動(dòng)位置窗體的Left和Top屬性是用來(lái)確定其位置的窗體的大小由兩個(gè)屬性來(lái)控制,Higeh高度,Width寬度6 窗體的ScaleMode中選其他的單位,例如:0用戶自定義1緹(每英寸為1440緹)2磅(每英寸為72磅)3像素4字符5英寸6毫米7厘米2022年7月24日75使用多窗體如果需要添加新窗體可以點(diǎn)擊“工程”菜單選擇“添加窗體”來(lái)實(shí)現(xiàn)也可以直接在工程資源管理器的窗體文件夾下按鼠標(biāo)右鍵,在快捷菜單中選擇“添加”、“添加窗體”實(shí)現(xiàn)。 2022年

33、7月24日76主控窗體通常第一個(gè)創(chuàng)建的窗體在運(yùn)行時(shí)將首先出現(xiàn)(稱為啟動(dòng)窗體),此時(shí),其他窗體并沒(méi)有出現(xiàn)在屏幕上。為了分別控制Form2和Form3的出現(xiàn),在Form1上放置了兩個(gè)按鈕,Command1和Command2,希望點(diǎn)擊按鈕時(shí),分別使對(duì)應(yīng)的窗體顯示。這樣Form1就成為控制其他窗體出現(xiàn)的主控窗體。2022年7月24日77窗體顯示使某個(gè)窗體顯示或隱藏,可以通過(guò)調(diào)用該窗體的Show和Hide方法來(lái)實(shí)現(xiàn)。Form1的Command1的Click事件過(guò)程如下:Private Sub Command1_Click() Form2.ShowEnd Sub Form1的Command2的Click事

34、件過(guò)程如下:Private Sub Command2_Click() Form3.ShowEnd Sub2022年7月24日78窗體隱藏在Form2上放一個(gè)按鈕Command1,編寫(xiě)點(diǎn)擊事件代碼如下:Private Sub Command1_Click() me.HideEnd Sub這里的me被認(rèn)為是Form2,執(zhí)行me.Hide后使Form2窗體隱藏起來(lái)。2022年7月24日79調(diào)用規(guī)則通常,調(diào)用某個(gè)對(duì)象的方法、屬性或事件過(guò)程,必須在方法、屬性或事件過(guò)程名前加上其所屬的對(duì)象名,以使系統(tǒng)正確地區(qū)分和識(shí)別調(diào)用的內(nèi)容屬于哪個(gè)對(duì)象。 2022年7月24日80設(shè)置啟動(dòng)窗體在僅有一個(gè)窗體的情況下,這個(gè)

35、窗體就默認(rèn)為啟動(dòng)時(shí)首先顯示的窗體,即啟動(dòng)窗體。在使用多個(gè)窗體時(shí),其中的一個(gè)窗體為啟動(dòng)窗體。一般情況下,最先創(chuàng)建的窗體被默認(rèn)為啟動(dòng)窗體.如果希望另一個(gè)窗體(例如:歡迎窗體)首先出現(xiàn)時(shí),就需要選擇設(shè)置啟動(dòng)窗體。2022年7月24日81設(shè)置的步驟如下:選擇“工程”菜單中的“工程屬性”,出現(xiàn)如圖2.22所示對(duì)話框。選擇“通用”選項(xiàng)卡。在“啟動(dòng)對(duì)象”項(xiàng)目的對(duì)象列表中,選擇指定的窗體即可。圖2.22 設(shè)置啟動(dòng)窗體2022年7月24日82窗體的運(yùn)行方式在Visual Basic中,把窗體的運(yùn)行方式分為兩種,一種稱為模式的,另一種稱為非模式的。 使窗體采用不同方式運(yùn)行的是窗體的Show方法。如果在調(diào)用Show

36、時(shí)不加參數(shù),則默認(rèn)窗體以非模式方式運(yùn)行;如果加參數(shù)1,則以模式方式運(yùn)行。2022年7月24日83窗體的模式和非模式運(yùn)行方式的區(qū)別非模式方式不限制將焦點(diǎn)鎖定在自己窗體之內(nèi),允許用戶轉(zhuǎn)去對(duì)其他窗體進(jìn)行操作。模式方式只允許對(duì)最后打開(kāi)的模式窗體進(jìn)行操作,不允許用戶轉(zhuǎn)去對(duì)其他窗體進(jìn)行操作,就是說(shuō)模式窗體將焦點(diǎn)鎖定在自己窗體之內(nèi),以保證用戶優(yōu)先進(jìn)行本窗體內(nèi)的操作。只有關(guān)閉了模式窗體,才允許對(duì)其他窗體進(jìn)行操作。2022年7月24日84窗體的Print和Cls方法窗體對(duì)象的Print方法可以用來(lái)直接在窗體上顯示文本字符串和表達(dá)式的值。 窗體的Cls方法則可以用來(lái)清除由Print方法顯示在窗體上的內(nèi)容。 示例:

37、Print Text1.Text; 2, Text1.Text * Text1.TextMe.cls2022年7月24日85窗體的主要事件窗體有多種事件,這些事件在窗體進(jìn)行某種動(dòng)作時(shí)發(fā)生。例如,裝載、單擊、雙擊、鼠標(biāo)移動(dòng)、獲得焦點(diǎn)、改變尺寸、卸載等等。 1 Load 事件Load 事件即為裝載事件,在一個(gè)窗體被裝載時(shí)發(fā)生。 2022年7月24日86例如,在以下的Load 事件過(guò)程代碼中將完成對(duì)幾個(gè)標(biāo)簽標(biāo)題的設(shè)置,以及給幾個(gè)文本框設(shè)置初始值:Private Sub Form_Load() Label1.Caption = 學(xué)號(hào) Label1.Caption = 姓名 Label1.Caption

38、 = 成績(jī) Text1.Text = 2006043023 Text1.Text = 李天宇 Text1.Text = 86End Sub2022年7月24日87Click事件窗體的Click事件發(fā)生在用戶使用鼠標(biāo)點(diǎn)擊窗體的時(shí)候。需要注意的是,如果使用鼠標(biāo)點(diǎn)擊的是放在窗體上的其他對(duì)象,引發(fā)的是那個(gè)對(duì)象的Click事件,而不是窗體的Click事件。示例2022年7月24日88Unload事件當(dāng)窗體從屏幕上刪除時(shí)發(fā)生。當(dāng)使用在 Control 菜單中的 Close 命令或 Unload 語(yǔ)句關(guān)閉該窗體時(shí),此事件被觸發(fā)。可以編寫(xiě)相關(guān)的事件過(guò)程代碼,在此事件發(fā)生時(shí)完成一些在結(jié)束對(duì)當(dāng)前窗體操作后所需的善

39、后工作。 2022年7月24日89窗體設(shè)計(jì)要點(diǎn)根據(jù)元素的重要性級(jí)別布局將元素按不同主題分組外觀風(fēng)格的一致性很重要合理調(diào)整窗體及其控件的大小和位置使之整齊劃一2022年7月24日902.2.4常用基本控件標(biāo)簽框架復(fù)選框組合框水平滾動(dòng)條 計(jì)時(shí)器目錄列表框形狀圖象OLE容器圖片框文本框命令按鈕選擇按鈕列表框垂直滾動(dòng)條標(biāo)簽驅(qū)動(dòng)器列表框文件列表框線數(shù)據(jù)圖 2.24 工具箱中的基本控件2022年7月24日91標(biāo)簽( Label)作用:標(biāo)簽主要用來(lái)顯示一個(gè)靜態(tài)的文字說(shuō)明信息;通常用來(lái)為其他控件對(duì)象添加描述性說(shuō)明;運(yùn)行時(shí),標(biāo)簽是不能通過(guò)交互方式動(dòng)態(tài)地改變的,不能接受用戶的輸入操作。使用:可以在設(shè)計(jì)時(shí)修改屬性值

40、也可以在程序中編寫(xiě)代碼來(lái)改變標(biāo)簽的顯示文本 2022年7月24日92標(biāo)簽的主要屬性 (1) Caption屬性設(shè)置標(biāo)簽將顯示文本內(nèi)容。該值可以在屬性值框內(nèi)直接輸入。(2)Alignment屬性設(shè)置在標(biāo)簽區(qū)域內(nèi)文本的對(duì)齊方式。其值為0表示左對(duì)齊;為1表示右對(duì)齊;為2表示居中。該值可以在點(diǎn)擊屬性值框后出現(xiàn)的下拉列表中選擇。默認(rèn)值為0。(3)AutoSize屬性設(shè)置控件是否能夠自動(dòng)調(diào)整大小以顯示所有的內(nèi)容。如果AutoSize屬性被設(shè)置為T(mén)rue,則標(biāo)簽?zāi)軌蚋鶕?jù)文本的長(zhǎng)短來(lái)調(diào)整自身的大小,以適應(yīng)文本的長(zhǎng)度。2022年7月24日93標(biāo)簽的主要屬性 (4)BackStyle屬性設(shè)置標(biāo)簽的背景樣式。其值以

41、為1表示是不透明的;為0表示是透明的。默認(rèn)值為1。(5)BorderStyle屬性設(shè)置標(biāo)簽的邊框樣式。其值為0 表示無(wú)邊框;為1表示單線邊框。默認(rèn)值為0。(6)Backcolor屬性設(shè)置標(biāo)簽的背景色。需要改變顏色時(shí),選中該項(xiàng),點(diǎn)擊屬性值框右的小箭頭,在隨后出現(xiàn)在其下方的顏色選項(xiàng)卡中選擇適當(dāng)?shù)念伾纯伞?7)Forecolor屬性設(shè)置標(biāo)簽上顯示的文本顏色。改變其顏色的方法同上。2022年7月24日94標(biāo)簽的主要屬性 (8)WordWrap屬性設(shè)置標(biāo)簽的文本在顯示時(shí)是否具有自動(dòng)換行功能。當(dāng)該屬性為T(mén)rue時(shí)該標(biāo)簽具有自動(dòng)換行的功能,就是當(dāng)文本內(nèi)容較多一行顯示不完時(shí),可以自動(dòng)分行顯示。需注意的是只有

42、在AutoSize屬性設(shè)置為T(mén)rue的時(shí)候WordWrap屬性才有效。當(dāng)AutoSize為T(mén)rue且WordWrap也為T(mén)rue時(shí),標(biāo)簽?zāi)軌蚋鶕?jù)文本的多少調(diào)整自身的高度來(lái)顯示所有文本;當(dāng)AutoSize為T(mén)rue且WordWrap為False時(shí),標(biāo)簽則調(diào)整自身的寬度來(lái)顯示所有文本。2022年7月24日95標(biāo)簽的主要事件和方法 標(biāo)簽的主要事件 單擊Click和雙擊DblClick 標(biāo)簽的主要方法 Move :該方法的功能是移動(dòng)標(biāo)簽到一個(gè)新的位置,并可以改變標(biāo)簽控件的大小。 調(diào)用Move方法的語(yǔ)法如下:.Move ,其中,是需要移動(dòng)的某對(duì)象,為必要參數(shù),其他三個(gè)為可選參數(shù)。例如:Label1.Mo

43、ve Label1.Left+10, Label1.Top-102022年7月24日96文本框( Text)文本框可以供用戶輸入數(shù)據(jù),是Visual Basic中顯示和輸入文本的主要機(jī)制,也是Windows用戶界面中最常用的控件。 文本框提供了所有基本文字處理功能,在Windows環(huán)境中幾乎所有的數(shù)據(jù)輸入都可以利用文本框來(lái)完成。 2022年7月24日97文本框的常用屬性 (1)Text屬性用戶在程序運(yùn)行時(shí)輸入的文本數(shù)據(jù)就存放在其中。該屬性值在設(shè)計(jì)和運(yùn)行時(shí)都可以更改。(2) MaxLength屬性設(shè)置文本框中輸入的字符串長(zhǎng)度是否有限制。默認(rèn)值為0,表示該單行文本框中字符串的長(zhǎng)度只受操作系統(tǒng)內(nèi)存的

44、限制;若設(shè)置為大于0的數(shù),則表示能夠輸入的最大字符數(shù)目。2022年7月24日98文本框的常用屬性 (3)PasswordChar屬性設(shè)置是否使控件只顯示特定的字符。如將屬性設(shè)置為“*”,那么無(wú)論Text屬性值是什么,在文本框中都只顯示若干個(gè)“*”,可以起到隱藏真正字符的作用,用來(lái)支持密碼輸入。(4) MultiLine屬性設(shè)置文本框是否以多行方式顯示文本。設(shè)置為T(mén)rue時(shí)以多行文本方式顯示;設(shè)置為False(默認(rèn))時(shí)以單行方式顯示。(5) ScrollBars屬性設(shè)置以多行方式顯示文本時(shí)文本框是否有垂直或水平滾動(dòng)條。2022年7月24日99文本框常用事件(1) Change事件當(dāng)文本框的內(nèi)容被

45、修改時(shí),該事件被觸發(fā)。如果事先編寫(xiě)了與該事件相應(yīng)的事件過(guò)程,則該事件過(guò)程被自動(dòng)調(diào)用執(zhí)行。如果沒(méi)有編寫(xiě)與該事件相應(yīng)的事件過(guò)程,則事件發(fā)生時(shí)什么也不做。該事件主要用于檢查被改變后的內(nèi)容是否滿足一定的要求。2022年7月24日100文本框常用事件(2) KeyPress事件當(dāng)光標(biāo)位于文本框中時(shí),按任一具有ASCII碼值的鍵時(shí)觸發(fā)該事件。例,希望文本框Text1只接受09數(shù)字輸入,其他字符輸入一律忽略。編寫(xiě)Text1的KeyPress事件過(guò)程如下:Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii Asc(9) Then KeyAsc

46、ii = 0 End IfEnd SubKeyAscii為0,表示放棄本次輸入的按鍵。2022年7月24日101文本框常用事件(3)GotFocus事件該事件在文本框獲得焦點(diǎn)時(shí)被觸發(fā)。(4)LostFocus事件該事件在文本框失去焦點(diǎn)時(shí)被觸發(fā)。所謂失去焦點(diǎn),是指當(dāng)使用鼠標(biāo)或其他方式選擇了其它對(duì)象,不再對(duì)當(dāng)前對(duì)象繼續(xù)處理的情況。通常,窗體中總是有且僅有一個(gè)對(duì)象取得焦點(diǎn),當(dāng)一個(gè)對(duì)象失去焦點(diǎn)后,就由另一個(gè)對(duì)象獲得焦點(diǎn)。一個(gè)對(duì)象失去焦點(diǎn)的事件發(fā)生在另一個(gè)對(duì)象獲得焦點(diǎn)之前。2022年7月24日102文本框的常用方法:SetFocus作用使程序?qū)⒔裹c(diǎn)移動(dòng)到指定的對(duì)象,其效果就象用鼠標(biāo)點(diǎn)擊某對(duì)象,使之處于當(dāng)

47、前操作狀態(tài)。其語(yǔ)法為:.SetFocus例子:如果利用文本框Text1讓用戶輸入密碼,要求密碼長(zhǎng)度必須為6位。如果不是6位,就顯示提示信息,并阻止焦點(diǎn)離開(kāi),否則允許離開(kāi)。至于密碼是否正確的檢查任務(wù),交由命令按鈕來(lái)處理。2022年7月24日103輸入密碼的例子的窗體設(shè)計(jì)窗體中文本框的PasswordChar屬性設(shè)置為“*”按鈕下方是一個(gè)BorderStyle屬性為1的標(biāo)簽,用以顯示提示信息。 圖2.25 檢查密碼的窗體2022年7月24日104輸入密碼的例子的事件過(guò)程代碼分析:輸入了密碼后,點(diǎn)擊“確定”按鈕時(shí),文本框的LostFocus事件發(fā)生,執(zhí)行LostFocus事件過(guò)程。該過(guò)程代碼如下:P

48、rivate Sub Text1_LostFocus() Label1.Caption = If Len(Text1.Text) 6 Then Label1.Caption = 密碼長(zhǎng)度不對(duì),請(qǐng)重新輸入! Text1.SetFocus End IfEnd Sub2022年7月24日105命令按鈕( CommandButton)主要作用 用以開(kāi)始、中斷或結(jié)束一個(gè)處理過(guò)程。 最主要的事件Click事件,是鼠標(biāo)單擊按鈕時(shí),該事件發(fā)生。2022年7月24日106前例提到的檢查密碼是否正確的任務(wù),也可交由命令按鈕來(lái)處理。命令按鈕的單擊事件過(guò)程代碼如下:Private Sub Command1_Click

49、() Label1.Caption = If Text1.Text 123456 Then Label1.Caption = 密碼錯(cuò)誤,請(qǐng)重新輸入! Text1.SetFocus Else Label1.Caption = 密碼正確! End IfEnd Sub創(chuàng)建事件過(guò)程Command2_Click(),其內(nèi)容如下:Private Sub Command2_Click() End 結(jié)束程序End SubEnd Sub2022年7月24日107按鈕的主要屬性 (1)Caption屬性設(shè)置命令按鈕的標(biāo)題,即命令按鈕上顯示的文字。該屬性值可以在設(shè)計(jì)時(shí)設(shè)置,也可以利用命令在運(yùn)行時(shí)修改。 (2)Ena

50、bled屬性設(shè)置命令按鈕是否可用。其值為T(mén)rue(默認(rèn)值)時(shí)表示該命令按鈕可用,為False表示該命令按鈕不可用。當(dāng)按鈕不可用時(shí),看起來(lái)是灰色的,點(diǎn)擊它時(shí)沒(méi)有任何反應(yīng)。2022年7月24日108例如,希望用戶在文本框Text1里至少輸入4個(gè)字符,否則不允許點(diǎn)擊命令按鈕Command1。可以在文本框的Change事件里對(duì)命令按鈕是否可用進(jìn)行及時(shí)的設(shè)置,Text1的Change事件過(guò)程如下:Private Sub Text1_Change() If Len(Text1.Text) = 4 Then Command1.Enabled = True Else Command1.Enabled = Fa

51、lse End IfEnd Sub2022年7月24日109按鈕的主要屬性 (3)Visible屬性設(shè)置命令按鈕是否可見(jiàn)。其值為T(mén)rue(默認(rèn)值)時(shí)表示該命令按鈕可見(jiàn),否則該按鈕不可見(jiàn),相當(dāng)于隱藏起來(lái)。2022年7月24日1102.2.5對(duì)話框?qū)υ捒虮挥脕?lái)向用戶顯示提示信息,或者提示用戶提供程序繼續(xù)運(yùn)行所需的數(shù)據(jù)。 預(yù)定義對(duì)話框 使用窗體設(shè)計(jì)對(duì)話框2022年7月24日111 預(yù)定義對(duì)話框在Visual Basic應(yīng)用程序中,對(duì)話框的最簡(jiǎn)單使用方法就是使用系統(tǒng)預(yù)定義的對(duì)話框。這里介紹消息對(duì)話框和輸入對(duì)話框。2022年7月24日112消息對(duì)話框(MsgBox)消息對(duì)話框的主要由一條文字消息和若干按

52、鈕組成,參見(jiàn)圖2.26。消息對(duì)話框主要用來(lái)向用戶傳達(dá)信息,不需要用戶輸入數(shù)據(jù)。圖2.26 消息對(duì)話框12022年7月24日113消息對(duì)話框?qū)崿F(xiàn)方式1MsgBox函數(shù)圖2.26所示消息對(duì)話框是由以下賦值語(yǔ)句實(shí)現(xiàn)的:X = MsgBox(你完成了本章作業(yè)嗎?, 4, 請(qǐng)回答)MsgBox函數(shù)的格式為:MsgBox(,)其中,信息內(nèi)容:是一個(gè)字符串,長(zhǎng)度不超過(guò)1024個(gè)字符。2022年7月24日114消息對(duì)話框的類型對(duì)話框類型:是一個(gè)整數(shù)值或常量,用來(lái)控制在對(duì)話框內(nèi)顯示的按鈕、圖標(biāo)的種類及數(shù)量。其參數(shù)值如表2.1所示:2022年7月24日115類 型常 量值作 用按鈕類型vbOKOnly0只顯示“確

53、定”按鈕vbOKCance1顯示“確定”及“取消”按鈕vbAbortRetryIgonre2顯示“終止”、“重試”及“忽略”按鈕vbYesNoCancel3顯示“是”、“否”及“取消”按鈕vbYesNo4顯示“是”及“否”按鈕vbRetryCancel5顯示“重試”及“取消”按圖標(biāo)按鈕vbCritical16顯示停止圖標(biāo)vbQuestion32顯示問(wèn)號(hào)(?)圖標(biāo)vbExclamation48顯示感嘆號(hào)(!)圖標(biāo)vbInformation64顯示信息圖標(biāo)默認(rèn)按鈕vbDefaultButton1vbDefaultButton2vbDefaultButton30256512指定默認(rèn)按鈕為第1個(gè)按鈕指

54、定默認(rèn)按鈕為第2個(gè)按鈕指定默認(rèn)按鈕為第3個(gè)按鈕表2.1 對(duì)話框類型參數(shù)2022年7月24日116例如:35=3+32+0,則顯示“是”、“否”、“取消”三個(gè)命令按鈕(3)及“?”圖標(biāo)(32),默認(rèn)活動(dòng)按鈕為Yes(0)。例如,在立即窗口中輸入代碼為:msg=MsgBox(請(qǐng)確定此數(shù)據(jù)是否正確!,3+48+0,數(shù)據(jù)檢查)則顯示結(jié)果如圖2.27所示。圖2.27消息對(duì)話框22022年7月24日117參數(shù)缺省情況MsgBox函數(shù)的幾個(gè)中,只有第一個(gè)參數(shù)“信息內(nèi)容”是必需的,其他參數(shù)均可以省略。若省略“對(duì)話框類型”,則對(duì)話框內(nèi)只顯示一個(gè)“確定”按鈕,并把該按鈕設(shè)置為活動(dòng)按鈕。省略“對(duì)話框標(biāo)題”,對(duì)話框的

55、標(biāo)題就為當(dāng)前工程的名稱。2022年7月24日118MsgBox函數(shù)的返回值MsgBox函數(shù)的返回值是一個(gè)整數(shù),這個(gè)整數(shù)與所選擇的命令按鈕有關(guān)。返回值情況如下:1確定2取消3終止4重試5忽略6是7否2022年7月24日119消息對(duì)話框?qū)崿F(xiàn)方式2MsgBox語(yǔ)句MsgBox語(yǔ)句格式為:MsgBox , ,例如,當(dāng)執(zhí)行完保存任務(wù)時(shí),告訴用戶工作完成了:MsgBox 保存成功!,0,Hi顯示效果如圖2.28所示。圖2.28消息對(duì)話框32022年7月24日120輸入對(duì)話框(InputBox)當(dāng)應(yīng)用程序需要從用戶那里取得數(shù)據(jù),以便進(jìn)行下一步的處理時(shí),則需要用到輸入對(duì)話框。輸入對(duì)話框是由InputBox函數(shù)

56、實(shí)現(xiàn)的。其格式如下:InputBox(,)其中函數(shù)的第一個(gè)參數(shù)是必須的,其他參數(shù)是可選的。2022年7月24日121InputBox函數(shù)參數(shù)說(shuō)明信息內(nèi)容是一個(gè)字符串,基本長(zhǎng)度不超過(guò)255個(gè)字符。它是在對(duì)話框內(nèi)顯示的信息,用來(lái)提示用戶。對(duì)話框標(biāo)題是一個(gè)字符串,作為對(duì)話框的標(biāo)題顯示在對(duì)話框頂部的標(biāo)題區(qū)。默認(rèn)內(nèi)容是一個(gè)字符串,可用此缺省字符串作為輸入值。 2022年7月24日122例如,下面的語(yǔ)句代碼將顯示如圖2.29所示的輸入對(duì)話框:Msg=InputBox(請(qǐng)輸入你的名字,Hi,Name)圖2.29 輸入對(duì)話框2022年7月24日123 使用窗體設(shè)計(jì)對(duì)話框作用使用預(yù)定義對(duì)話框方法簡(jiǎn)單,但同時(shí)也帶

57、來(lái)另外一個(gè)問(wèn)題,就是格式和內(nèi)容相對(duì)單調(diào)了一點(diǎn)。例如,輸入對(duì)話框一次只能輸入一個(gè)數(shù)據(jù),當(dāng)程序需要一次輸入2、3個(gè)或更多數(shù)據(jù)時(shí),就不方便了。此時(shí),可以使用窗體來(lái)設(shè)計(jì)對(duì)話框。2022年7月24日124創(chuàng)建新窗體模板其實(shí),Visual Basic也為創(chuàng)建新窗體準(zhǔn)備了若干可選用的模板,如圖2.30所示。 圖2.30不同的窗體模板2022年7月24日125對(duì)話框特點(diǎn)對(duì)話框?qū)嶋H就是由窗體來(lái)實(shí)現(xiàn)的。對(duì)話框通常不含有菜單、滾動(dòng)條、最大化、最小化按鈕,其邊框也是不可調(diào)整的。 當(dāng)用戶不完成對(duì)話框的操作,并明確退出對(duì)話框時(shí),是不能對(duì)其他窗體進(jìn)行操作的。也就是說(shuō),所有對(duì)話框都是以模式方式運(yùn)行的。所以,如果采用自己設(shè)計(jì)的

58、窗體作為對(duì)話框時(shí),也應(yīng)按照模式方式來(lái)打開(kāi)相應(yīng)窗體。 2022年7月24日126五種Windows標(biāo)準(zhǔn)對(duì)話框此外,Visual Basic還可以使用五種Windows標(biāo)準(zhǔn)對(duì)話框,它們分別是:保存對(duì)話框打開(kāi)對(duì)話框設(shè)置顏色對(duì)話框設(shè)置字體對(duì)話框打印對(duì)話框相關(guān)內(nèi)容在以后的章節(jié)中介紹。 2022年7月24日127習(xí)題 22.1 Visual Basic有哪些主要特點(diǎn)?2.2 簡(jiǎn)述IDE及其用途。2.3 簡(jiǎn)述Visual Basic應(yīng)用程序設(shè)計(jì)過(guò)程的各階段及其任務(wù)。2.4 界面在應(yīng)用程序中有哪些作用?2.5 在界面設(shè)計(jì)準(zhǔn)備時(shí),應(yīng)考慮哪些主要因素?2.6 總結(jié)窗體設(shè)計(jì)的要點(diǎn)。2022年7月24日1282.7

59、消息對(duì)話框與輸入對(duì)話框各自的用途及主要區(qū)別是什么?2.8 設(shè)計(jì)一個(gè)可以輸入:班級(jí)、學(xué)號(hào)、姓名,及其他項(xiàng)目數(shù)據(jù)的窗體。2.9 設(shè)計(jì)三個(gè)窗體,在窗體1中控制顯示窗體2,在窗體2中控制顯示窗體3。分別采用非模式和模式方式進(jìn)行控制,觀察其效果的區(qū)別。2.10 使用窗體的Print方法顯示任意輸入的兩數(shù)之和。2.11 設(shè)計(jì)一個(gè)窗體,在該窗體中分別用按鈕控制顯示不同的消息對(duì)話框和輸入對(duì)話框。2.12 使用輸入對(duì)話框輸入數(shù)據(jù),再用消息對(duì)話框顯示該數(shù)據(jù)。2022年7月24日129第二章 完數(shù)據(jù)表示及基本運(yùn)算第 3 章2022/7/24131本章主要內(nèi)容3.1數(shù)據(jù)定義3.2函數(shù)3.3運(yùn)算符和表達(dá)式3.4綜合練習(xí)

60、習(xí)題 3 2022/7/241323.1數(shù)據(jù)定義3.1.1數(shù)據(jù)類型3.1.2變量3.1.3常量2022/7/241333.1.1數(shù)據(jù)類型Visual Basic所支持的數(shù)據(jù)類型,以及存儲(chǔ)空間大小與范圍 數(shù)據(jù)類型存儲(chǔ)空間范圍1Byte(字節(jié))1 個(gè)字節(jié)0 到 2552Boolean(布爾型)2 個(gè)字節(jié)True 或 False3Integer(整型)2 個(gè)字節(jié)-32,768 到 32,7674Long(長(zhǎng)整型)4 個(gè)字節(jié)-2,147,483,648 到 2,147,483,6475Single(單精度浮點(diǎn)型)4 個(gè)字節(jié)負(fù)數(shù)時(shí)從 -3.402823E38 到 -1.401298E-45;正數(shù)時(shí)從 1

溫馨提示

  • 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)論