vb語(yǔ)言程序設(shè)計(jì)教程.ppt_第1頁(yè)
vb語(yǔ)言程序設(shè)計(jì)教程.ppt_第2頁(yè)
vb語(yǔ)言程序設(shè)計(jì)教程.ppt_第3頁(yè)
vb語(yǔ)言程序設(shè)計(jì)教程.ppt_第4頁(yè)
vb語(yǔ)言程序設(shè)計(jì)教程.ppt_第5頁(yè)
已閱讀5頁(yè),還剩241頁(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、Visual Basic 程序設(shè)計(jì)教程,第一章 Visual Basic的基本知識(shí),1.1 認(rèn)識(shí)Visual Basic語(yǔ)言 1.2 窗體,1.1.1 Visual Basic的特點(diǎn) 1、可視化的設(shè)計(jì)平臺(tái)(*) 2、面向?qū)ο蟮脑O(shè)計(jì)方法(OOP) 3、事件驅(qū)動(dòng)的編程機(jī)制(*) 4、結(jié)構(gòu)化的設(shè)計(jì)語(yǔ)言 5、充分利用Windows資源 6、開(kāi)放的數(shù)據(jù)庫(kù)功能與網(wǎng)絡(luò)支持 7)完備的help聯(lián)機(jī)幫助功能,1.1.2設(shè)計(jì)Visual Basic應(yīng)用程序的步驟 例:編寫應(yīng)用程序完成功能:當(dāng)用戶在應(yīng)用程序窗體中用鼠標(biāo)單擊命令按鈕時(shí),窗體中顯示:“祝你成功! ” 。,設(shè)計(jì)Visual Basic應(yīng)用程序的步驟:,第

2、一步:創(chuàng)建窗體 第二步:編寫程序代碼 第三步:運(yùn)行程序 第四步:保存程序 第五步:生成EXE文件,1.1.3 面向?qū)ο蟪绦蛟O(shè)計(jì)的概念,類 對(duì)象 容器對(duì)象 屬性 方法 事件 事件過(guò)程 事件驅(qū)動(dòng),1.2 窗體 1.2.1窗體的屬性 窗體的基本屬性:Name、height、Width、Left、Top、Enabled、Visible、ForeColor和Image。 Name名稱:所建對(duì)象的名稱,每創(chuàng)建一個(gè)對(duì)象,系統(tǒng)都提供一個(gè)默認(rèn)的名稱,可在屬性窗口的Name欄進(jìn)行修改,名稱是程序中引用對(duì)象的標(biāo)識(shí)符,不顯示在窗體上。 Height,Width,Top,Left: Height和Width決定了控件對(duì)

3、象顯示的大小;Top和Left決定了控件對(duì)象在窗體中的位置.窗體的左上角為原點(diǎn),單位為twip。,Enabled:決定控件是否允許操作 True允許用戶進(jìn)行操作,并對(duì)操作作出響應(yīng); False禁止用戶進(jìn)行操作,呈暗淡色。 Visible:決定控件是否可見(jiàn) True程序運(yùn)行時(shí)控件可見(jiàn); False程序運(yùn)行時(shí)控件隱含起來(lái)看不到,但存在. ForeColor前景色:設(shè)置控件的前景色(正文顏色,若控件有正文,該屬性才有效),其值是一個(gè)16進(jìn)制的常數(shù),在屬性窗口中,提供有調(diào)色板供用戶選擇。 BackColor背景色:設(shè)置控件中正文背景的顏色。,Caption:決定窗體標(biāo)題欄顯示的內(nèi)容 MaxButton

4、:最大化按鈕(其值為True或False) MinButton:最小化按鈕(其值為True或False) Icon:設(shè)置窗體最小化的圖標(biāo) ControlBox:設(shè)置窗口右上角的控制菜單(其值為True或False) Picture: 設(shè)置窗體中顯示的圖片 BorderStyle:設(shè)置窗體的邊框有無(wú),及形式 WindowsState:設(shè)置窗體在運(yùn)行時(shí)的顯示狀態(tài) Normal 0(缺省值)正常 。 Minimized 1 最小化(最小化為一個(gè)圖標(biāo)) Maximized 2 最大化(擴(kuò)大到最大尺寸),1.2.2 窗體的事件,1.2.3 窗體的方法,第一章 END,2.1 基本數(shù)據(jù)類型 2.2 變量與

5、常量 2.3 運(yùn)算符和表達(dá)式 2.4 常用內(nèi)部函數(shù) 2.5 編碼規(guī)則,第二章 Visual Basic語(yǔ)言基礎(chǔ),2.1 基本數(shù)據(jù)類型 數(shù)據(jù)描述客觀事物的數(shù)、字符以及所有能輸入到計(jì)算機(jī)中并被計(jì)算機(jī)程序加工處理的符號(hào)的集合稱為數(shù)據(jù)。 VB的基本數(shù)據(jù):P13 表2.1 *VB中有多種數(shù)據(jù)類型,不同的數(shù)據(jù)類型所占的存儲(chǔ)空間不一樣。,2.1.1 數(shù)值(Numeric)型數(shù)據(jù) VB提供了6種數(shù)值型的數(shù)據(jù),如下: 1、整型(Integer)即常規(guī)型數(shù)據(jù) 優(yōu)點(diǎn):運(yùn)算速度較快,所占內(nèi)存少 缺點(diǎn):可表示數(shù)的范圍相對(duì)小一些。 表示方式:十進(jìn)制、八進(jìn)制、十六進(jìn)制 2、長(zhǎng)整型(Long) 數(shù)的表示范圍大于整型(232)

6、 3、字節(jié)型(Byte) 表示無(wú)符號(hào)的整數(shù),范圍0255。,4、單精度(Single) 可表示最多7位有效數(shù)字的數(shù)??捎枚c(diǎn)形 式和浮點(diǎn)形式來(lái)表示。 單精度的定點(diǎn)形式是在該范圍內(nèi)含有小數(shù) 的數(shù)。如: -3.4 120.0 +1.234 .00069 單精度的浮點(diǎn)形式使用科學(xué)計(jì)數(shù)法,即以 10的整數(shù)次冪表示的數(shù),以“E”來(lái)表示底數(shù) 10。如: -3.4E5 120.0E-5 1.234E+12,5、雙精度數(shù)(Double) 最多可表示的15位有效數(shù)字的數(shù)。也有定 點(diǎn)和浮點(diǎn)兩種表示法。 雙精度的定點(diǎn)形式是在該范圍內(nèi)含有小數(shù)的數(shù),如:-31.123456789129 。 雙精度的浮點(diǎn)形式使用科學(xué)計(jì)數(shù)

7、法,即以10的整數(shù)次冪表示的數(shù),以“D”來(lái)表示底數(shù)10。 如:-3.412334D52 ,120.12567D-45,6、貨幣型(Currency) 支持小數(shù)點(diǎn)右面四位和小數(shù)點(diǎn)左面15位, 是一個(gè)精確的定點(diǎn)數(shù)據(jù)類型。,2.1.2 字符型(String)數(shù)據(jù) 字符型數(shù)據(jù)一切可打印的字符和字符串,它是用雙引號(hào)括起來(lái)的一串字符。 如:”abc”, ”123”,2.1.3 布爾(Boolean)型數(shù)據(jù) False(假) 0 True(真) 非0值,與數(shù)值型轉(zhuǎn)換,2.1.4 日期(Date)型數(shù)據(jù) 表示日期和時(shí)間,可以表示多種格式的日期 和時(shí)間,用“#” 符號(hào)把表示日期和時(shí)間的值 括起來(lái)。如 #11/1

8、8/2000#, #2000-11-18#, #11/18/2000 10:28:56 pm# 2.1.5 對(duì)象(Object)型數(shù)據(jù) 可用來(lái)表示應(yīng)用程序中或某些其他應(yīng)用程 序中的對(duì)象。,2.1.6 可變(Variant)類型數(shù)據(jù) 能夠表示所有系統(tǒng)定義的數(shù)據(jù),當(dāng)把它們賦予Variant型數(shù)據(jù)時(shí),不必在這些數(shù)據(jù)間進(jìn)行轉(zhuǎn)換,VB會(huì)自動(dòng)完成任何必要的轉(zhuǎn)換。 例如: SomeValue=18 SomeValue=SomeValue-15 SomeValue=U 說(shuō)明: 可以是窗體,圖片框或打印機(jī). 缺省是窗體.,是一個(gè)或多個(gè)表達(dá)式,可以是數(shù)值表達(dá)式或字符串表達(dá)式. 輸出多個(gè)表達(dá)式時(shí),各表達(dá)式之間的分隔

9、符可以用: 逗號(hào),或分號(hào);. 在語(yǔ)句行末尾使用分隔符的情況: 使用分號(hào)則會(huì)? 使用逗號(hào)則會(huì)? Print具有計(jì)算和輸出的雙重功能.對(duì)于表達(dá)式總是先計(jì)算后輸出. 如:Print 3+3,例:使用Print方法在窗體中直接輸出字符 串或數(shù)值表達(dá)式的值.,Private Sub Form_Click() dim a as integer a=123 Print 123 Print a Print Visual Basic Print Print a * 2 Print 123;a , Visual Basic End Sub,2、與PRINT方法有關(guān)的函數(shù) (1)Tab(n)函數(shù) 特點(diǎn): 1)當(dāng)TA

10、B(x)與輸出項(xiàng)之間以分號(hào)分隔時(shí)輸出 項(xiàng)按x指定的位置顯示。 2)TAB(x)與輸出項(xiàng)之間是逗號(hào)分隔時(shí), 該TAB(x)無(wú)效,僅逗號(hào)起作用。 3)當(dāng)打印的當(dāng)前位置超過(guò)x是,輸出項(xiàng)在下一行指定的x位置輸出。 4)如果指定位置x大于行寬,則先進(jìn)行x MOD 行寬的計(jì)算,再用余數(shù)作為指定位置顯示。,例:Print TAB(6);3 Print TAB(6),3 Print HELLO,CHINA ;TAB(6);3 Print TAB(86);3 (2)Spc函數(shù) Spc函數(shù)輸出n個(gè)空格,其格式為:Spc(n) 例: PRINT TAB(6);3;Spc(20);4,3、使用位置屬性 精確地把文本輸

11、出到窗體、圖片框或打印頁(yè)上。 CurrentX 和 CurrentY. 例:P42 3.1,Private Sub Form_Activate() Dim a as string, w as integer, h as integer Me.FontSize = 30 a = Visual Basic w = Me.TextWidth(a) h = Me.TextHeight(a) Me.CurrentX = (Me.ScaleWidth - w) / 2 Me.CurrentY = (Me.ScaleHeight - h) / 2 Print a End Sub,3.1.2 信息對(duì)話框輸出信

12、息 MsgBox函數(shù)在對(duì)話框中輸出信息,等待用戶單擊按鈕,并返回一個(gè)整數(shù)以確認(rèn)用戶單擊 了哪個(gè)按鈕(P44)。 格式為: 變量 = MsgBox( ,),說(shuō)明:P43 信息內(nèi)容指定在對(duì)話框中出現(xiàn)的文本 對(duì)話框類型指定對(duì)話框中出現(xiàn)的按鈕和圖標(biāo),一般有3個(gè)內(nèi)容。 對(duì)話框標(biāo)題指定對(duì)話框中出現(xiàn)的標(biāo)題 Msgbox()返回的值指明了在對(duì)話框中選擇了哪 一個(gè)按鈕。 第二個(gè)參數(shù)的值可以是數(shù)值,也可以是符號(hào)常量 如果省略了某些選項(xiàng),必須加入相應(yīng)的逗號(hào)分隔符。 若不需要返回值,則可以使用MsgBox的命令形式。,第二個(gè)參數(shù)包含的內(nèi)容:,3.2 數(shù)據(jù)輸入的基本方法,3.2.1 賦值語(yǔ)句LET 賦值語(yǔ)句可以將指定的

13、值賦給某個(gè)內(nèi)存變量或?qū)ο蟮哪硞€(gè)屬性變量。 格式: LET = ,3.2.2 用InputBox函數(shù)輸入數(shù)據(jù) InputBox函數(shù)顯示一個(gè)能接受用戶輸入的對(duì) 話框,并返回用戶在對(duì)話框中輸入的信息。 格式為: 變量= InputBox(, ,,XPOS,YPOS) 例: h=InputBox(請(qǐng)輸入你的姓名,輸入,張三),說(shuō)明 信息內(nèi)容指定在對(duì)話框中出現(xiàn)的文本 對(duì)話框標(biāo)題指定對(duì)話框中出現(xiàn)的標(biāo)題 默認(rèn)內(nèi)容可以指定輸入框中顯示的默 認(rèn)文本。 XPOS可以指定輸入框與屏幕左邊的距離 YPOS可以指定輸入框與屏幕上邊的距離 用戶單擊“確定”:返回文本框內(nèi)容到變量中 用戶單擊“取消”:返回一個(gè)零長(zhǎng)度的字符串

14、。,3.3 常用基本語(yǔ)句,3.3.1 注釋與暫停 1、注釋語(yǔ)句 格式: Rem 或 ,3.3.2 加載對(duì)象語(yǔ)句Load 在程序運(yùn)行的過(guò)程中,有時(shí)需要添加新的窗體或?yàn)榭丶?shù)組增加新的元素,這類操作可以通過(guò)加載對(duì)象語(yǔ)句Load來(lái)完成。 語(yǔ)法格式: Load 對(duì)象名 功能:把對(duì)象名代表的對(duì)象,如窗體、控件數(shù)組元素等加載到內(nèi)存中,以供程序使用。 說(shuō)明:使用Load語(yǔ)句可以加載窗體,但不顯示窗體。當(dāng)VB加載窗體對(duì)象時(shí),先把窗體屬性設(shè)置為初始值,再執(zhí)行Load事件過(guò)程。 例如: Load Form2 Form2.Visible = True,3.3.3 卸載對(duì)象 Unload語(yǔ)句 當(dāng)要結(jié)束應(yīng)用程序而從內(nèi)存

15、當(dāng)中卸載窗體或 要從內(nèi)存當(dāng)中卸載某些控件時(shí),可以使用 Unload語(yǔ)句。其語(yǔ)法格式為: Unload 對(duì)象名 說(shuō)明: “對(duì)象名”是要卸載的窗體對(duì)象或控件的名稱,3.3.4 結(jié)束語(yǔ)句 (End) End語(yǔ)句強(qiáng)制終止代碼的執(zhí)行。End語(yǔ)句提供了一種強(qiáng)迫終止程序的方法 Visual Basic程序正常結(jié)束應(yīng)該卸載所有的窗體。 與End不同,Stop不會(huì)關(guān)閉任何文件,或清除變量。,3.3.5 暫停語(yǔ)句(Stop) Stop語(yǔ)句用來(lái)暫停語(yǔ)句的執(zhí)行。 Stop語(yǔ)句主要作用是把解釋程序設(shè)置為中斷模式,以便對(duì)程序進(jìn)行檢查和調(diào)試。,3.4 常用標(biāo)準(zhǔn)控件及應(yīng)用,Visual Basic應(yīng)用程序的用戶界面多數(shù)情況下

16、是在窗體上添加適當(dāng)?shù)目丶瓿傻?。了解一些最常用的控件和控件的基本屬性,如命令按鈕、標(biāo)簽、文本框等,就能完成一些簡(jiǎn)單程序的界面設(shè)計(jì)。學(xué)習(xí)這些控件就是學(xué)習(xí)它們的屬性,事件,方法。,3.4.1 控件的基本屬性,Name屬性 Caption屬性 Enabled屬性 Visible屬性 Height屬性 BackColor和ForeColor屬性 Font屬性,3.4.2 焦點(diǎn)與Tab鍵序 1.焦點(diǎn) 焦點(diǎn)是用于描述對(duì)象接收鼠標(biāo)或鍵盤輸入的能力。我們稱當(dāng)前被操作的對(duì)象獲得了焦點(diǎn)(Focus)。焦點(diǎn)對(duì)象才有接收鼠標(biāo)或鍵盤輸入的能力。當(dāng)對(duì)象具有焦點(diǎn)時(shí),才能接收用戶的輸入。 要將焦點(diǎn)賦給對(duì)象(窗體或控件),有以

17、下幾種方法: (1)用鼠標(biāo)選定對(duì)象。 (2)按快捷鍵選定對(duì)象。 (3)按Tab鍵或Shift+Tab鍵在當(dāng)前窗體的各對(duì)象之間切換焦點(diǎn)。 (4)在代碼中用SetFocus方法來(lái)設(shè)置焦點(diǎn)。,2.Tab鍵序 Tab鍵序是指用戶按Tab鍵時(shí),焦點(diǎn)在控件間移動(dòng)的順序。通過(guò)改變控件的TabIndex屬性值,可以改變默認(rèn)的按Tab鍵移動(dòng)焦點(diǎn)的順序。,注意: 當(dāng)控件接收焦點(diǎn)時(shí),會(huì)發(fā)生GotFocus事件; 當(dāng)控件失去焦點(diǎn)時(shí),會(huì)發(fā)生LostFocus事件。 可以使用SetFocus方法在代碼中設(shè)置焦點(diǎn)。 TabIndex屬性和TabStop屬性: TabIndex屬性決定控件接收焦點(diǎn)時(shí)的順序 TabStop屬性

18、決定焦點(diǎn)是否能夠停在該控件上,3.4.3 命令按鈕 命令按鈕(CommandButton) 當(dāng)用戶用鼠標(biāo)單擊命令按鈕,或者選中命令按鈕后按回車鍵時(shí),就會(huì)觸發(fā)該命令按鈕相應(yīng)的事件過(guò)程。 1.常用屬性(Name,Enabled,Visible) (1)Default屬性:對(duì)應(yīng)“Enter” (2)Cancel屬性:對(duì)應(yīng)“Esc” (3)Style屬性:設(shè)置命令按鈕的外觀,默認(rèn)值為0表示以標(biāo)準(zhǔn)的Windows按鈕方式顯示;其值為1時(shí),表示以圖形按鈕顯示,此時(shí)可用Picture,DownPicture和DisabledPicture屬性來(lái)分別指定按鈕在正常、被按下和不可用3種狀態(tài)下的圖片。 (4)Ca

19、ption屬性,2.常用事件和方法 事件:命令按鈕最常用的事件是Click(單擊)事件,但不支持DblClick(雙擊)事件。 方法:命令按鈕常用的方法是SetFocus方法。,3.4.4 標(biāo)簽控件 標(biāo)簽(Label)主要用來(lái)顯示比較固定的提示性信息,常作為提示或輸出信息的控件,其默認(rèn)名稱(Name)為L(zhǎng)abel1,Label2,。 1.常用的屬性 (1)Alignment屬性:設(shè)置標(biāo)簽中文本的對(duì)齊方式; (2)AutoSize屬性:確定標(biāo)簽的大小是否根據(jù)標(biāo)簽的顯示的內(nèi)容自動(dòng)調(diào)整大小; (3)BorderStyle屬性:設(shè)置標(biāo)簽的邊框,可以取兩種值 ; (4)BackStyle屬性:設(shè)置標(biāo)簽的

20、背景模式 ; (5)Caption屬性:標(biāo)簽內(nèi)顯示內(nèi)容; (6)Wordwrap屬性: 改變標(biāo)簽垂直方向的大小。,2.常用事件和方法 事件:標(biāo)簽可觸發(fā)Click,DblClick等事件。 方法:標(biāo)簽支持Move方法,用于實(shí)現(xiàn)控件的 移動(dòng)。,3.4.5 “文本框”控件(TextBox) 1、常用屬性 文本框沒(méi)有Caption屬性 (1)Maxlength屬性 (2)Multiline屬性 (3)PasswordChar屬性 注意:只有在Multiline屬性被設(shè)置為False的前提下,PasswordChar屬性才能起作用。 (4)ScrollBars屬性 注意:使文本框出現(xiàn)滾動(dòng)條的前提是Mul

21、tiline屬性必須設(shè)置為True。 (5)SelStart屬性、Sellength屬性和SelText屬性 (6)Text屬性 (7)Locked屬性,2.常用事件和方法 事件:Click,DblClick,Change(內(nèi)容改變)、 GotFocus(獲得焦點(diǎn))、LostFocus(失去 焦點(diǎn)) 方法:SetFocus方法和Move方法。,例:P58 3-9,3.4.6 滾動(dòng)條 1滾動(dòng)條的用途 滾動(dòng)條控件的作用是為那些不能自動(dòng)支持滾動(dòng)的應(yīng)用程序和控件提供滾動(dòng)功能。 2常用屬性 Min、Max屬性 Value屬性 SmallChange(最小變動(dòng)值)屬性 LargeChange(最大變動(dòng)值)

22、屬性 3常用事件 Scroll事件:當(dāng)用鼠標(biāo)拖動(dòng)滾動(dòng)塊時(shí),即觸發(fā)Scroll事件。 Change事件:當(dāng)改變Value屬性值時(shí),即觸發(fā)Change事件。,例3-11: 設(shè)計(jì)一個(gè)調(diào)色板應(yīng)用程序,如圖所示。,3.4.7 PictureBox(圖形框) 圖形框控件的主要作用是為用戶顯示圖片,也可以作為其他控件的容器。 屬性: 1.Picture屬性 圖片框?qū)ο竺?Picture=LoadPicture(“圖形文件名”) 2.Autosize屬性:設(shè)置為True時(shí),圖形框能自動(dòng)調(diào)整大小與顯示的圖片匹配。 方法: 1.Print:圖片框?qū)ο竺?Print 2.Cls:圖片框?qū)ο竺?Cls,第三章 END

23、,第四章 選擇結(jié)構(gòu)程序設(shè)計(jì),4.1 選擇結(jié)構(gòu)的概念 4.2 條件表達(dá)式 4.3 選擇結(jié)構(gòu)程序設(shè)計(jì) 4.4 配合選擇功能的控件 4.5 選擇程序設(shè)計(jì)綜合舉例,4.1 選擇結(jié)構(gòu)程序設(shè)計(jì)概念 特點(diǎn):根據(jù)給定的條件為成立與否,而決定從 各種不同的解決方案中選擇某一個(gè)方案來(lái)執(zhí)行。 條件語(yǔ)句的功能是:根據(jù)條件表達(dá)式的值有選 擇地執(zhí)行一組語(yǔ)句。,4.2 關(guān)系表達(dá)式和邏輯表達(dá)式 4.2.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 關(guān)系運(yùn)算符主要是對(duì)比較來(lái)說(shuō)的。 關(guān)系表達(dá)式是由關(guān)系運(yùn)算符把兩個(gè)算術(shù)表達(dá)式連接起來(lái)的式子。 一般形式: ,VB 提供的關(guān)系運(yùn)算符有: =(等于) (大于) (不等于) =(大于或等于) =(小于或等于

24、),數(shù)值型數(shù)據(jù)按其大小進(jìn)行比較; 日期型數(shù)據(jù)看成“yyyymmdd”的8位整數(shù),按數(shù)值大小進(jìn)行比較; 字符型數(shù)據(jù)按其ASCII碼值進(jìn)行比較。比較字符串時(shí),從第一個(gè)字符開(kāi)始比較。 常見(jiàn)字符值的大?。?空格數(shù)字大寫字母 0(數(shù)學(xué)表達(dá)式) ? (VB表達(dá)式),VB提供的邏輯運(yùn)算符有: 邏輯運(yùn)算符 含義 例 AND 邏輯與 AB AND BC OR 邏輯或 AB OR BC NOT 邏輯非 NOT AB XOR 邏輯異或 AB XOR BC,邏輯運(yùn)算符之間的優(yōu)先級(jí)為:,4.2.3 運(yùn)算符的優(yōu)先順序 一個(gè)邏輯表達(dá)式內(nèi)可能包括邏輯運(yùn)算符、關(guān) 系運(yùn)算符和算術(shù)運(yùn)算符,它們有一個(gè)優(yōu)先順序 的問(wèn)題,它們的優(yōu)先順序

25、如下:,4.3 選擇結(jié)構(gòu)程序設(shè)計(jì) 4.3.1 條件語(yǔ)句 1) IfThen語(yǔ)句 單行結(jié)構(gòu)格式 If 條件表達(dá)式 Then 語(yǔ)句 塊結(jié)構(gòu)格式 If 條件表達(dá)式 Then 語(yǔ)句塊 End If,2) IfThenElse語(yǔ)句 IfThenElse語(yǔ)句也有兩種語(yǔ)法格式。 單行結(jié)構(gòu)格式 If 條件表達(dá)式 Then 語(yǔ)句1 Else 語(yǔ)句2 塊結(jié)構(gòu)格式 If 條件表達(dá)式 Then 語(yǔ)句塊1 Else 語(yǔ)句塊2 End If,3) 條件語(yǔ)句嵌套及多分支條件語(yǔ)句 (1)If語(yǔ)句的嵌套 (2)帶ElseIf的If語(yǔ)句的嵌套 If 條件表達(dá)式1 Then 語(yǔ)句塊1 ElseIf 條件表達(dá)式2 Then 語(yǔ)句塊2

26、 ElseIf 條件表達(dá)式3 Then 語(yǔ)句塊3 . ElseIf 條件表達(dá)式n-1 Then 語(yǔ)句塊n-1 Else 語(yǔ)句塊n End If,4.3.2 情況選擇語(yǔ)句Select Case Select Case 測(cè)試表達(dá)式 Case 取值列表1 語(yǔ)句塊1 Case 取值列表2 語(yǔ)句塊2 Case Else 語(yǔ)句塊n End Select,說(shuō)明: 是必要參數(shù),是任何數(shù)值表達(dá)式或字符串表達(dá)式 在Case子句中,為必要參數(shù),用來(lái)測(cè)試其中是否有值與相匹配。其形式有: 表達(dá)式: Case 3 表達(dá)式 to 表達(dá)式:指定一個(gè)范圍 Case 2 to 9 Case a to f Is關(guān)系運(yùn)算表達(dá)式: C

27、ase Is100,可選參數(shù),是一條或多條語(yǔ)句 Case Else子句用于指明其他語(yǔ)句系列,當(dāng)測(cè)試條件和所有的Case子句中的值都不匹配時(shí),則會(huì)執(zhí)行這些語(yǔ)句。,4.3.3 IIf函數(shù) 格式 IIf(條件表達(dá)式,“真”的返回值,“假”的返回值) 功能 函數(shù)分別返回“條件表達(dá)式”為真和為假時(shí)的取值。“真返回值”和“假返回值”可以是任何表達(dá)式,,4.4 提供簡(jiǎn)單選擇的控件 4.4.1 使用“框架”控件(Frame) “框架”控件也是一種容器控件,在框架控件中的控件可以隨著框架一起移動(dòng)。框架控件的常用屬性有:Name,Caption,F(xiàn)ont等。 注意:框架控件另一重要作用是:用來(lái)對(duì)選項(xiàng)按鈕進(jìn)行分組。

28、,4.4.2 選項(xiàng)按鈕(OptionButton) 一、使用選項(xiàng)按鈕組 (一般用框架(Frame)控件來(lái)組織一個(gè)選項(xiàng)組) 1、常用屬性 caption,alignment value:控件的選擇狀態(tài)(True,False) style:使用圖形選項(xiàng)按鈕 2、事件 click,4.4.3 復(fù)選框(CheckBox) 選項(xiàng)按鈕組屬于多項(xiàng)中選擇一項(xiàng)的選擇,若許選 擇多項(xiàng)的情況,則可以采用多哥復(fù)選框控件。 1、常用屬性 caption,alignment value:決定復(fù)選框的狀態(tài) 0假(沒(méi)選中) 1真(選中) 2暗(缺?。?style 2、事件 click,4.4.4 計(jì)時(shí)控件器(Timer) 計(jì)

29、時(shí)器控件(Timer)按指定時(shí)間間隔重復(fù)的發(fā)生它的timer事件。 主要屬性: Enable:定時(shí)器是否開(kāi)始工作的設(shè)置 Interval:設(shè)置定時(shí)器觸發(fā)的周期,以毫秒 計(jì)算,取值范圍為:064767 唯一事件: Timer,例: 設(shè)計(jì)一個(gè)電子時(shí)鐘。,例: 設(shè)計(jì)一個(gè)跑秒表。,例: 屏幕滾動(dòng)字幕,第四章 END,第五章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì),5.1 循環(huán)概念 5.2 循環(huán)結(jié)構(gòu)及循環(huán)程序 5.3 循環(huán)程序設(shè)計(jì)舉例,5.1 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的概念 VB提供的設(shè)計(jì)循環(huán)結(jié)構(gòu)的語(yǔ)句有: Do Loop WhileWend ForNext ForEach Next,條件成立,需重復(fù)執(zhí)行的語(yǔ)句,是,否,執(zhí)行后續(xù)語(yǔ)句

30、,5.2 循環(huán)結(jié)構(gòu)及循環(huán)程序,5.2.1 設(shè)計(jì)循環(huán)結(jié)構(gòu)的基本原理 構(gòu)造循環(huán)結(jié)構(gòu)的三個(gè)要素 (1)構(gòu)造循環(huán)體:需要重復(fù)執(zhí)行的語(yǔ)句 (2)設(shè)置循環(huán)出口:停下重復(fù)工作的條件 人為約定條件方式 計(jì)數(shù)方式 (3)初始化,5.2.2 用循環(huán)語(yǔ)句寫循環(huán)程序 1)WHILE 循環(huán)結(jié)構(gòu) 格式: WHILE 循環(huán)體 WEND,執(zhí)行過(guò)程: (1)對(duì)“條件”進(jìn)行求值,判斷條件是“真”還是“假”; (2)如果“條件”為真,則執(zhí)行循環(huán)體,執(zhí)行完之后再轉(zhuǎn)到(1)執(zhí)行;如果“條件”為“假”,則轉(zhuǎn)到(3); (3)結(jié)束循環(huán)體的執(zhí)行,跳到WEND的下一個(gè)語(yǔ)句執(zhí)行。,2)Do.Loop共有三大類語(yǔ)法格式 下面分別介紹之: 無(wú)條件循

31、環(huán)結(jié)構(gòu) 前測(cè)型循環(huán)結(jié)構(gòu) 后測(cè)型循環(huán)結(jié)構(gòu) 有五種語(yǔ)法形式:,(1)無(wú)條件循環(huán)型 語(yǔ)法格式: Do 循環(huán)體 Loop 退出循環(huán)語(yǔ)句:EXIT DO,(2)當(dāng)型DoLoop循環(huán),Do While Exit Do Loop,Do Until Exit Do Loop,(3)直到型DoLoop循環(huán),Do Exit Do Loop While ,Do Exit Do Loop until ,3) ForNext 語(yǔ)句 當(dāng)已知循環(huán)次數(shù)時(shí),可用ForNext循環(huán)。For循環(huán)使用一個(gè)循環(huán)變量,每重復(fù)一次循環(huán)后,循環(huán)變量會(huì)自動(dòng)增加或減少。 流程圖:,格式為: For = To Step Exit For Next

32、 ,5.3 循環(huán)程序設(shè)計(jì)舉例: 1、計(jì)算1+2+3+100的結(jié)果。 2、判斷輸入的數(shù)是否是素?cái)?shù)。 方法: 判斷一個(gè)自然數(shù)n(n3)是否素?cái)?shù),只要依次用2-n 作除數(shù)去除n,若n不能被其中任何一個(gè)數(shù)整除,則n即為素?cái)?shù).,5.4 列表框與組合框控件 5.4.1 列表框(ListBox) 1)常用屬性 (1)Name屬性 (2)List屬性 該屬性是一個(gè)字符型數(shù)組,存放列表框或組合框的選項(xiàng)。List數(shù)組的下標(biāo)從0開(kāi)始。,(3)ListIndex 該屬性只能在代碼中設(shè)置或引用。ListIndex的值 表示程序運(yùn)行時(shí)被選定選項(xiàng)的序號(hào)。如果未選中 任何選項(xiàng),則ListIndex的值為-1。 (4)List

33、Count 該屬性只能在代碼中設(shè)置或引用。其值表示列表 框或組合框中項(xiàng)目的數(shù)量。 (5)Sorted 該屬性只能在屬性窗口設(shè)置。其決定在程序運(yùn)行 期間列表框或組合框的選項(xiàng)是否按字母順序排列 顯示。,(7)Text屬性 只能在代碼中設(shè)置或引用。其表示被選定的文本 內(nèi)容,該屬性不能被賦值,只能使用。 如: Label1.caption=List1.text Combo1.additem Combo1.text,(6)Selected 該屬性只能在代碼中設(shè)置或引用,是一個(gè)邏輯數(shù)組,其元素對(duì)應(yīng)列表框中相應(yīng)的項(xiàng),表示對(duì)應(yīng)的項(xiàng)在程序運(yùn)行過(guò)程中是否被選中。 如果 List1.Selected(0)=True

34、,表示第一項(xiàng)被選中。,2)事件 列表框:Click事件和DblClick事件 3)方法 (1)AddItem:把一個(gè)選項(xiàng)加入列表框或組合框。 格式如下: 對(duì)象.AddItem item,index,(2)RemoveItem: 從列表框或組合框中刪除一個(gè)選項(xiàng)。 格式如下: 對(duì)象.RemoveItem index,(3)Clear方法: 可以清除列表框或組合框的所有內(nèi)容。 格式如下: 對(duì)象.Clear 說(shuō)明: 對(duì)象:可以是列表框或組合框;,4)列表框表項(xiàng)的輸出 輸出列表框中的表項(xiàng)的常用方法: 用鼠標(biāo)單擊列表框內(nèi)某一表項(xiàng),則該表項(xiàng)值存放在Text屬性中。 指定索引號(hào)以獲取表項(xiàng)的內(nèi)容。,5.4.2

35、組合框的常用屬性 (1)Style屬性 決定組合框的類型和行為,它的值為0,1或2,1,0,2,下拉式組合框,簡(jiǎn)單組合框。,下拉式列表框,(2)事件 組合框:Click事件,keypress(style=0,1) (只有簡(jiǎn)單組合框才能接收DblClick事件),第五章 END,第六章 數(shù) 組,6.1 數(shù)組的概念 6.2 數(shù)組的聲明和應(yīng)用 6.3 動(dòng)態(tài)數(shù)組及聲明 6.4 For EachNext循環(huán)語(yǔ)句 6.5 控件數(shù)組,6.1 數(shù)組的概念,6.1.1 數(shù)組與數(shù)組元素 6.1.2 數(shù)組的下標(biāo)與維數(shù),6.1.1 數(shù)組與數(shù)組元素 1、數(shù)組: 如果某些數(shù)據(jù)是有內(nèi)在聯(lián)系的,是具有相同屬性的(如10個(gè)學(xué)生

36、的成績(jī)),可以把這批數(shù)據(jù)看作一個(gè)有機(jī)的整體,稱為數(shù)組(array) 用序號(hào)或下標(biāo)來(lái)區(qū)分各個(gè)數(shù)據(jù)。,概念:是用一個(gè)統(tǒng)一的名稱來(lái)表示的、順序排列的一組變量。,2、數(shù)組元素: 數(shù)組中的變量稱為數(shù)組元素,用序號(hào)來(lái)標(biāo)識(shí)它們。可以用數(shù)組名及一個(gè)序號(hào)的標(biāo)識(shí)一個(gè)數(shù)組元素。如:a(5)表示名稱為a的數(shù)組中序號(hào)為5的那個(gè)數(shù)組元素(變量)。,數(shù)組元素,6.1.2 數(shù)組的下標(biāo)與維數(shù) 1數(shù)組的下標(biāo) 數(shù)組的下標(biāo)可以是常數(shù)、變量、表達(dá)式或另一個(gè)數(shù)組的元素。下標(biāo)值可以是正整數(shù)、0和負(fù)整數(shù),如果帶有小數(shù)部分將會(huì)自動(dòng)地對(duì)它四舍五入取整。,2數(shù)組的維數(shù) 如果數(shù)組元素只使用一個(gè)下標(biāo)就可以標(biāo)明元素的位置,則稱這個(gè)數(shù)組為一維數(shù)組。 例如

37、:a(2),s(5) 如果數(shù)組元素要使用二個(gè)下標(biāo)才能標(biāo)明元素的位置,則稱這個(gè)數(shù)組為二維數(shù)組。 例如:a(2,2),s(3,4),1)指定下標(biāo)的上界 Dim 數(shù)組名(下標(biāo)上界) As 類型名 Dim 數(shù)組名(第一維下標(biāo)上界,第二維下標(biāo)上界) As 類型名,2)指定下標(biāo)的取值范圍 Dim 數(shù)組名(下標(biāo)下界 To 下標(biāo)上界) AS 類型名 Dim 數(shù)組名(下標(biāo)下界 To 下標(biāo)上界,第二維的下界 to 上界) AS 類型名,6.2.1 數(shù)組聲明語(yǔ)句,6.2 數(shù)組的聲明和應(yīng)用,用Array函數(shù),根據(jù)數(shù)據(jù)表生成一個(gè)一維數(shù)組。Array函數(shù)返回一個(gè)包含數(shù)據(jù)表中數(shù)據(jù)的Variant類型數(shù)組,其使用格式為: 變

38、體名=Array(數(shù)據(jù)表) 例如: dim a as variant a=array(2,5,6,8,10,5,9),6.2.2 Array函數(shù),其中: “變體名”是預(yù)先定義的類型為變體的數(shù)組名; “數(shù)據(jù)表”是一個(gè)用逗號(hào)隔開(kāi)的值表,這些值用于給函數(shù)返回的Variant所包含的數(shù)組各元素賦值; 只能生成一維數(shù)組。下標(biāo)默認(rèn)為0開(kāi)始,如有Option Base 1,則為1開(kāi)始。,6.2.3 數(shù)組應(yīng)用,例6-1: 斐波那契(Fibonacci)數(shù)列如下: 1,1,2,3,5,8,13,21,試求出該數(shù)列的前30項(xiàng)。,假定有n個(gè)數(shù)的序列,存放在數(shù)組 a(1 to n) 中要求按遞增的次序排序。 算法的步

39、驟如下:,例6-6:數(shù)組排序,(1)第1輪:先將a(1)與a(2)比較,若a(2)a(1),則將a(1)與a(2)的值交換,a(1)存放較小者。再將a(1)與a(3)、a(n)比較,并依次作出同樣的處理,n個(gè)數(shù)中的最小者放入a(1)中,完成了第一輪比較。 (2)第2輪:將a(2)與a(3)、a(n),并依次作出同樣的處理,第一輪余下的n-1個(gè)數(shù)中的最小者放入a(2)中,完成了第二輪比較。 (3)繼續(xù)進(jìn)行第3輪、第四輪、直到第n-1輪,余下的a(n)就是n個(gè)數(shù)中的最大者。,排序過(guò)程如下:,原始數(shù)據(jù) 8 6 9 3 2 7,a(1) a(2) a(3) a(4) a(5) a(6) 第1輪交換后

40、2 8 9 6 3 7,a(2) a(3) a(4) a(5) a(6) 第2輪交換后 2 3 9 6 8 7,a(3) a(4) a(5) a(6) 第3輪交換后 2 3 6 9 8 7,a(4) a(5) a(6) 第4輪交換后 2 3 6 7 8 9,a(5) a(6) 第5輪交換后 2 3 6 7 8 9,例:對(duì)已知存放在數(shù)組中的6個(gè)數(shù),用選擇排序按遞增順序排序。,靜態(tài)數(shù)組-在聲明時(shí)已確定了大小的數(shù)組,其在程序運(yùn)行過(guò)程中是不變的。 動(dòng)態(tài)數(shù)組-在聲明時(shí)未給出數(shù)組的大?。ㄊ÷岳ㄌ?hào)中的下標(biāo)),當(dāng)要使用它時(shí),隨時(shí)用ReDim語(yǔ)句重新指出數(shù)組的大小。 建立動(dòng)態(tài)數(shù)組的方法:使用Dim語(yǔ)句聲明下標(biāo)括

41、號(hào)內(nèi)為空的數(shù)組,然后在過(guò)程中用ReDim語(yǔ)句指明該數(shù)組的大小。,6.3 動(dòng)態(tài)數(shù)組,6.3.1 建立動(dòng)態(tài)數(shù)組 (1)聲明動(dòng)態(tài)數(shù)組 Dim DynArray() (2)用Redim分配實(shí)際元素個(gè)數(shù) ReDim 數(shù)組名(下標(biāo),下標(biāo)2)As 類型,6.3.2 保留動(dòng)態(tài)數(shù)組的內(nèi)容 每次執(zhí)行ReDim語(yǔ)句時(shí),當(dāng)前存儲(chǔ)在數(shù)組中的值都會(huì)全部丟失。當(dāng)希望改變數(shù)組大小,但又不丟失數(shù)組中原有的數(shù)據(jù),使用具有Preserve關(guān)鍵字的ReDim語(yǔ)句就可做到這點(diǎn)。 UBound函數(shù)引用數(shù)組下標(biāo)的上界:UBound(數(shù)組名,維序號(hào)) LBound函數(shù)引用數(shù)組下標(biāo)的下界:LBound(數(shù)組名,維序號(hào)) 例如: ReDim P

42、reserve Array(UBound (Array) + 1) 注意:在用Preserve關(guān)鍵字時(shí),只能改變多維數(shù)組中最后一維的上界。,6.3.3 數(shù)組刷新語(yǔ)句 數(shù)組刷新語(yǔ)句(Erase)可以作用于固定數(shù)組和動(dòng)態(tài)數(shù)組,清除大小固定的數(shù)組的元素的內(nèi)容,釋放動(dòng)態(tài)數(shù)組占用的存儲(chǔ)空間。 其語(yǔ)法格式為: Erase 數(shù)組名表 說(shuō)明: 對(duì)固定大小(靜態(tài))數(shù)組,Erase語(yǔ)句將數(shù)組重新初始化; 對(duì)于動(dòng)態(tài)數(shù)組,Erase將釋放動(dòng)態(tài)數(shù)組所使用的內(nèi)存空間。,6.4 For EachNext語(yǔ)句 For EachNext語(yǔ)句是專門用于數(shù)組或集合的循環(huán)語(yǔ)句。對(duì)數(shù)組或集合中的每個(gè)元素逐個(gè)重復(fù)循環(huán)。 功能:對(duì)數(shù)組元素

43、進(jìn)行查詢,顯示或讀取。循環(huán)的次數(shù)與數(shù)組元素的個(gè)數(shù)相等。,格式: For Each In Exit For Next 其中:內(nèi)的內(nèi)容實(shí)際就是數(shù)組或集合中的每個(gè)元素,用一個(gè)變量代表,是一個(gè)數(shù)組名,沒(méi)有括號(hào)上下界 。,注意: 不能用此語(yǔ)句對(duì)普通的數(shù)組元素作“賦值”的操作,因?yàn)檎Z(yǔ)句中的表示數(shù)組元素的值,不是數(shù)組元素本身。但是可以對(duì)控件數(shù)組中的每個(gè)控件的屬性作賦值操作。,6.5 控件數(shù)組 6.5.1 控件數(shù)組的概念 控件數(shù)組是由一組相同類型的控件組成。他們共用一個(gè)控件名,具有相同的name屬性。當(dāng)建立控件數(shù)組時(shí),系統(tǒng)給每個(gè)元素賦一個(gè)唯一的索引號(hào)(Index),通過(guò)屬性窗口的Index屬性,可以知道該控件

44、的下標(biāo)是多少,第一個(gè)是0。 為了區(qū)分控件數(shù)組的各個(gè)元素,VB會(huì)把下標(biāo)值傳送給過(guò)程(即返回給index): Private Sub Command1_Click(Index As Integer),6.5.2 控件數(shù)組的建立。 3種方法: 1、改變控件的名稱 2、復(fù)制現(xiàn)有控件 3、指定控件的索引值,6.5.3 控件數(shù)組的使用 一般用于實(shí)現(xiàn)控件和選項(xiàng)按鈕分組。 1、命令按鈕組 例:?jiǎn)螕裘總€(gè)命令按鈕時(shí)顯示按鈕對(duì)應(yīng)的序號(hào)。 2、選項(xiàng)按鈕組 3、標(biāo)簽組,第六章 END,第七章 過(guò) 程,7.1 通用過(guò)程 7.2 參數(shù)傳遞 7.3 過(guò)程的嵌套與遞歸調(diào)用 7.4 變量、過(guò)程的作用域 7.5 多窗體與Sub M

45、ain過(guò)程,在 Visual Basic中最常使用下列兩種通用過(guò)程: Sub 過(guò)程不返回值,稱為子過(guò)程。 Function 過(guò)程返回值,稱為函數(shù)過(guò)程。,7.1 通用過(guò)程,1)Sub過(guò)程的定義 兩種定義方法: (1)利用“工具”菜單下的“添加過(guò)程”命令定義,7.1.1 Sub過(guò)程,(2)利用代碼窗口直接定義 定義格式如下: Private|PublicStatic Sub (形參) 語(yǔ)句組 Exit Sub 語(yǔ)句組 End Sub,2)Sub過(guò)程的調(diào)用 Sub過(guò)程不能夠被直接執(zhí)行,只能夠通過(guò)其他過(guò)程調(diào)用它,才能被執(zhí)行。 Sub過(guò)程的調(diào)用是一句獨(dú)立的調(diào)用語(yǔ)句,有兩種形式: Call 子過(guò)程名(實(shí)參

46、表列) 子過(guò)程名 實(shí)參表列,1)函數(shù)過(guò)程的定義 格式: Private |Public Static Function AS = Exit Function End Function,7.1.2 Function過(guò)程,2)函數(shù)過(guò)程的調(diào)用 函數(shù)過(guò)程的調(diào)用:除了事先需要定義函數(shù)外, 調(diào)用FUNCTION函數(shù)的方法與調(diào)用標(biāo)準(zhǔn)函數(shù)的方法 相同。其形式為: 函數(shù)過(guò)程名(參數(shù)列表) 如:m=fact(5) 由于函數(shù)過(guò)程名返回一個(gè)值,故函數(shù)過(guò)程不 能作為單獨(dú)的語(yǔ)句加以調(diào)用,它必須作為表達(dá) 式或表達(dá)式的一部分,再配以其他的語(yǔ)法成分構(gòu) 成語(yǔ)句。,7.2 參數(shù)傳遞 7.2.1 形式參數(shù)與實(shí)際參數(shù)的概念 1、形式參

47、數(shù) 形式參數(shù)在定義通用過(guò)程時(shí),出現(xiàn)在Sub或 Function語(yǔ)句中的變量名,是接收數(shù)據(jù)的變量。 2、實(shí)際參數(shù) 實(shí)際參數(shù)在調(diào)用Sub或Function過(guò)程時(shí),傳送給 Sub或Function過(guò)程的常量、變量或表達(dá)式。,7.2.2 參數(shù)按地址傳遞和按值傳遞 1)按值傳遞如果調(diào)用語(yǔ)句中的實(shí)際參數(shù)是常 量或表達(dá)式,或者定義過(guò)程時(shí)用ByVal關(guān)鍵字,就 可以按值傳遞。按值傳遞時(shí),傳遞的只是變量的 副本!在過(guò)程中對(duì)形參的變化不會(huì)影響變量本身. 如果定義過(guò)程時(shí)沒(méi)有用ByVal而又要求變量按值傳 遞時(shí),可以先把變量變成一個(gè)表達(dá)式,把變量轉(zhuǎn) 換成表達(dá)式的最簡(jiǎn)單的方法就是把它放在括號(hào)內(nèi)。,2)按址傳遞讓過(guò)程根據(jù)

48、變量的內(nèi)存地址去訪問(wèn)變量的內(nèi)容,即形式參數(shù)和實(shí)際參數(shù)使用相同的內(nèi)存地址單元,這樣通過(guò)子過(guò)程就可以改變變量本身的值。系統(tǒng)缺省按地址傳遞參數(shù)。在按址傳遞調(diào)用時(shí),實(shí)際參數(shù)必須是變量,而常量或表達(dá)式無(wú)法傳址。,3)數(shù)組參數(shù)的傳遞 在VB中允許參數(shù)是數(shù)組,數(shù)組只能通過(guò)傳址方式 進(jìn)行傳遞,在傳遞數(shù)組時(shí)還要注意以下事項(xiàng): (1)在實(shí)參列表和形參列表中放入數(shù)組名,忽略維數(shù)的定義,但圓括號(hào)不能省略。 (2)如果要傳遞數(shù)組的某一個(gè)元素,則只須直接寫上該數(shù)組元素。如:Call test(4,(3)),7.3 過(guò)程的嵌套與遞歸調(diào)用 嵌套在一個(gè)過(guò)程中調(diào)用另一個(gè)過(guò)程 遞歸過(guò)程直接或間接地調(diào)用其自身,7.3.1 過(guò)程的嵌套

49、調(diào)用,主程序,調(diào)用Sprg1,End Sub,Sprg1,調(diào)用Sprg2,End Sub,Sprg2,End Sub,過(guò)程的嵌套圖解,7.3.2 過(guò)程的遞歸調(diào)用 使用遞歸調(diào)用的條件是: 可以把要解決的問(wèn)題轉(zhuǎn)化為一個(gè)新的問(wèn)題,而這個(gè)新的問(wèn)題的解法仍與原來(lái)的解法相同,只是所處理的對(duì)象有規(guī)律地遞增或遞減。 可以用上述轉(zhuǎn)化過(guò)程使問(wèn)題得到解決。 有一個(gè)明確的結(jié)束遞歸的條件。,7.4 變量、過(guò)程的作用域 7.4.1 代碼模塊的概念,1)窗體模塊 由于 Visual Basic 應(yīng)用程序是基于對(duì)象的,所以應(yīng)用程序的代碼結(jié)構(gòu)就是該程序在屏幕上物理表示的模型。根據(jù)定義,對(duì)象包含數(shù)據(jù)和代碼。在屏幕上看到的窗體代表

50、屬性,這些屬性定義了窗體的外觀和內(nèi)在特性。應(yīng)用程序中的每個(gè)窗體都有一個(gè)包含其代碼的相關(guān)的窗體模塊(文件擴(kuò)展名為 .FRM)。 窗體模塊的創(chuàng)建,保存和移出操作。,每個(gè)窗體模塊都包含: 事件過(guò)程,即代碼部分,其中有為響應(yīng)特定事件而執(zhí)行的指令; 控件。在窗體模塊中,對(duì)窗體上的每個(gè)控件都有一個(gè)對(duì)應(yīng)的事件過(guò)程集; 窗體模塊還可包含通用過(guò)程,它對(duì)來(lái)自任何事件過(guò)程的調(diào)用都作出響應(yīng)。 窗體變量的說(shuō)明、外部過(guò)程的窗體級(jí)聲明。,2)標(biāo)準(zhǔn)模塊 標(biāo)準(zhǔn)模塊(具有 .bas 文件擴(kuò)展名)可以包含類型、常數(shù)、變量、外部過(guò)程和公共過(guò)程的公共的或模塊級(jí)的聲明。 可將那些與特定窗體或控件無(wú)關(guān)的代碼放入另一類型的模塊 標(biāo)準(zhǔn)模塊(文

51、件擴(kuò)展名為 .BAS )中。如果一個(gè)過(guò)程可能用來(lái)響應(yīng)幾個(gè)不同對(duì)象中的事件,應(yīng)該將這個(gè)過(guò)程放在標(biāo)準(zhǔn)模塊中,而不應(yīng)在每一個(gè)對(duì)象的事件過(guò)程中重復(fù)相同的代碼。,3)類模塊 類模塊(具有 .cls 文件擴(kuò)展名)與窗體模塊類似,只是沒(méi)有可見(jiàn)的用戶界面??梢允褂妙惸K創(chuàng)建含有方法和屬性代碼的自己的對(duì)象。 用類模塊(文件擴(kuò)展名為 .CLS )創(chuàng)建對(duì)象,這些對(duì)象可被應(yīng)用程序內(nèi)的過(guò)程調(diào)用。標(biāo)準(zhǔn)模塊只包含代碼,而類模塊既包含代碼又包含數(shù)據(jù),可視為沒(méi)有物理表示的控件。,7.4.2 變量的作用域 變量的作用域決定了哪些子過(guò)程和函數(shù)過(guò)程可以 訪問(wèn)該變量。 1、局部(過(guò)程級(jí))變量 指在過(guò)程內(nèi)用Dim語(yǔ)句聲明的變量(或不加聲

52、明直接使用的變量),只能在本過(guò)程中使用的變量,別的過(guò)程不可訪問(wèn)。 2、窗體(模塊級(jí))變量 指在一窗體/模塊的任何過(guò)程,即在“通用聲明”段中用Dim 語(yǔ)句或用Private語(yǔ)句聲明的變量,可被本窗體/模塊的任何過(guò)程訪問(wèn)。,3、全局變量 指只能在標(biāo)準(zhǔn)模塊的任何過(guò)程或函數(shù)外,即在“通用聲明”段中用Public語(yǔ)句聲明的變量,可被應(yīng)用程序的任何過(guò)程或函數(shù)過(guò)程。 下面標(biāo)準(zhǔn)模塊文件中進(jìn)行不同級(jí)的變量聲明: Public Pa As integer Private Mb string *10 Sub f( ) Dim Fa As integer End Sub,全局變量,窗體/模塊級(jí)變量,局部變量,7.4.

53、3 變量的生存期 1、動(dòng)態(tài)變量:指程序運(yùn)行進(jìn)入變量所在的過(guò)程時(shí),才分派該變量的內(nèi)存單元,過(guò)程執(zhí)行結(jié)束后變量的空間被釋放。 用DIM 語(yǔ)句在過(guò)程中聲明的局部變量都屬于動(dòng)態(tài)變量。 2、靜態(tài)變量:在程序運(yùn)行過(guò)程中可保留變量的值,每次調(diào)用過(guò)程時(shí),用Static說(shuō)明的變量保持原來(lái)的值,而用Dim聲明的變量,每次調(diào)用過(guò)程時(shí),重新初始化。,靜態(tài)變量的聲明形式如下: Static 變量名 AS 類型 Static Function 函數(shù)名(參數(shù)列表)AS類型 Static Sub 過(guò)程名(參數(shù)列表) 若在函數(shù)、過(guò)程名前加Static,表示該函數(shù)、過(guò)程內(nèi)的局部變量都是靜態(tài)變量。下面的例子比較Dim和Static

54、兩者說(shuō)明變量的區(qū)別。,7.4.4 過(guò)程的作用域 1、窗體/模塊級(jí) 指在某個(gè)窗體或標(biāo)準(zhǔn)模塊內(nèi)定義的過(guò)程,定義的 子過(guò)程或函數(shù)過(guò)程前加Private關(guān)鍵字,過(guò)程只能被 本窗體(在本窗體內(nèi)定義)或本標(biāo)準(zhǔn)模塊(在本標(biāo)準(zhǔn) 模塊內(nèi)定義)中的過(guò)程調(diào)用。 2、全局級(jí) 指在窗體或標(biāo)準(zhǔn)模塊內(nèi)定義的過(guò)程,其默認(rèn)是全 局的,也可以加Public關(guān)鍵字進(jìn)行說(shuō)明。全局級(jí)過(guò) 程可供該應(yīng)用程序的所有窗體或標(biāo)準(zhǔn)模塊中的過(guò) 程調(diào)用,但根據(jù)過(guò)程所處的位置不同,調(diào)用方式 有區(qū)別:,(1)在窗體定義的過(guò)程,外部過(guò)程要調(diào)用時(shí),必須在過(guò)程名前加該過(guò)程名所在窗體名 (2)在標(biāo)準(zhǔn)模塊定義的過(guò)程,外部過(guò)程均可調(diào)用,但過(guò)程名必須唯一,否則要加標(biāo)準(zhǔn)

55、模塊名。,3 調(diào)用其他模塊中的過(guò)程的格式 調(diào)用窗體過(guò)程的格式: Call 窗體名.sub 過(guò)程名(參數(shù)表) 窗體名.sub過(guò)程名 參數(shù)表 窗體名.function 過(guò)程名(參數(shù)表) 調(diào)用標(biāo)準(zhǔn)模塊中的過(guò)程的格式: Call 模塊名.sub 過(guò)程名(參數(shù)表) 模塊名.sub過(guò)程名 參數(shù)表 模塊名.function 過(guò)程名(參數(shù)表),7.5 多窗體與Sub Main過(guò)程 在一個(gè)VB應(yīng)用程序中,允許創(chuàng)建多個(gè)窗體,多個(gè)標(biāo)準(zhǔn)標(biāo)塊和類模塊。本節(jié)簡(jiǎn)要地討論有關(guān)多窗體編程的有問(wèn)題。 7.5.1 多窗體處理 添加窗體 刪除窗體 保存窗體 設(shè)置啟動(dòng)窗體 有關(guān)語(yǔ)句和方法 :load,unload,show,hide,

56、7.5.2 Sum Main過(guò)程 有時(shí)在程序啟動(dòng)時(shí)不需要加載任何窗體,而是首先執(zhí)行一段程序代碼,例如,需要根據(jù)某種條件來(lái)決定顯示幾個(gè)不同窗體中的哪一個(gè)? 要做到這一點(diǎn),可以在標(biāo)準(zhǔn)模塊中創(chuàng)建一個(gè)名為Main的Sub過(guò)程,把首先要執(zhí)行的程序代碼放在該Sub Main過(guò)程中,并指定Sub Main為“啟動(dòng)對(duì)象”。在一個(gè)工程中只能有一個(gè)Sub Main過(guò)程。,第七章 END,第八章 鼠標(biāo)鍵盤事件,8.1 鼠標(biāo)器和鍵盤 8.2 鍵盤和鼠標(biāo)事件的應(yīng)用,8.1.1 鍵盤事件,Keypress Keydown 和 keyup,Private Sub Text1_KeyPress(KeyAscii As Int

57、eger) Private Sub Text1_KeyDown( KeyCode As Integer, Shift As Integer) Private Sub Text1_KeyUp( KeyCode As Integer, Shift As Integer) Shift的含義: 三位二進(jìn)制 b2 b1 b0 alt ctrl shift,8.1.2 鼠標(biāo)事件,Mousedown Mouseup Mousemove,Private Sub Form_MouseDown( Button As Integer, Shift As Integer, X As Single, Y As Single),Private Sub Form_MouseUp( Button As Integer, Shift As Integer, X As Single, Y As Single),Private Sub Form_MouseMove( Button As Integer, Shift As Integer, X As Single, Y As Single),Button: 1 2 左 右,8.2 鼠標(biāo)和鍵盤事件的應(yīng)用,例8-1 設(shè)計(jì)程序,從鍵盤輸入字符時(shí),在窗體上立即顯示所鍵入的字符和該字符的ASCII碼。雙擊窗體時(shí),清除窗

溫馨提示

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