Visual Basic 6.0程序設(shè)計(jì)課件_第1頁
Visual Basic 6.0程序設(shè)計(jì)課件_第2頁
Visual Basic 6.0程序設(shè)計(jì)課件_第3頁
Visual Basic 6.0程序設(shè)計(jì)課件_第4頁
Visual Basic 6.0程序設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩511頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VisualBasic6.0程式設(shè)計(jì)第1章概述 VisualBasic(簡稱VB)是一種功能強(qiáng)大的新一代高級程式設(shè)計(jì)語言。本章介紹程式設(shè)計(jì)語言的基礎(chǔ)知識;VisualBasic集成開發(fā)環(huán)境;通過一個簡單的實(shí)例說明設(shè)計(jì)VisualBasic應(yīng)用程式的步驟;最後闡述面向?qū)ο蟪淌皆O(shè)計(jì)的一些重要概念。退出1.1程式設(shè)計(jì)語言與程式設(shè)計(jì)

人們想用電腦解決一個問題,必須事先設(shè)計(jì)好電腦處理資訊的步驟,把這些步驟用電腦能夠識別的指令編寫出來並送入電腦執(zhí)行,電腦才能按照人的意圖完成指定的工作。我們把電腦能執(zhí)行的指令序列稱為程式,而編寫程式的過程稱為程式設(shè)計(jì)。

人與電腦交流使用的是“程式設(shè)計(jì)語言”。同人類語言一樣,程式設(shè)計(jì)語言也是由字、詞和語法規(guī)則構(gòu)成的一個系統(tǒng)。從電腦執(zhí)行的角度來看,程式設(shè)計(jì)語言通常分為機(jī)器語言、組合語言和高級語言3種。1.2VisualBasic簡介

要介紹VisualBasic,不能不提到BASIC語言。BASIC是英文Beginner’sAll-purposeSymbolicInstructionCode(初學(xué)者通用符號指令代碼)的縮寫,它是專門為初學(xué)者設(shè)計(jì)的高級語言。 VisualBasic是Microsoft公司於1991年推出的基於窗口的可視化程式設(shè)計(jì)語言?!癡isual”是“可視化的”、“形象化的”的意思。VisualBasic的語法與BASIC語言的語法基本相同,因此VisualBasic也具有易學(xué)易用的特點(diǎn),此外它還提供了一套可視化設(shè)計(jì)工具,大大簡化了Windows程式介面的設(shè)計(jì)工作,同時其編程系統(tǒng)採用了面向?qū)ο?、事件?qū)動機(jī)制,與傳統(tǒng)BASIC有很大的不同。目前VisualBasic的最新版本是VisualBasic6.0(簡稱VB6.0),其功能十分強(qiáng)大,應(yīng)用VisualBasic可以方便地完成從小的應(yīng)用程式,到大型的資料庫管理系統(tǒng)、多媒體資訊處理、功能強(qiáng)大的Internet應(yīng)用程式等各項(xiàng)任務(wù)。 VB6.0有三種版本,可以滿足不同的開發(fā)需要。

學(xué)習(xí)版。

專業(yè)版。

企業(yè)版。 本書以VB6.0企業(yè)版為背景講授。

VB6.0安裝完成後,“MicrosoftVisualBasic6.0中文版”菜單選項(xiàng)即加入到“開始”菜單的“程式”組中。單擊其中的“MicrosoftVisualBasic6.0中文版”即可啟動VB6.0。1.3VisualBasic集成開發(fā)環(huán)境 VB啟動後,首先顯示“新建工程”對話框,如圖1-1所示。 缺省狀態(tài)下“新建工程”對話框的選項(xiàng)為“標(biāo)準(zhǔn)EXE”,標(biāo)準(zhǔn)EXE程式是典型的應(yīng)用程式。本書絕大多數(shù)應(yīng)用程式都屬於標(biāo)準(zhǔn)EXE程式。

直接單擊“打開”按鈕,創(chuàng)建“標(biāo)準(zhǔn)EXE”類型應(yīng)用程式,進(jìn)入集成開發(fā)環(huán)境主介面,如圖1-2所示。 在集成開發(fā)環(huán)境中可以進(jìn)行程式設(shè)計(jì)、編輯、編譯和調(diào)試等工作。集成開發(fā)環(huán)境的頂部有標(biāo)題欄、主菜單和工具欄。下部有幾個子窗口:工具箱、窗體窗口、工程窗口、屬性窗口及窗體佈局窗口,根據(jù)需要,這些子窗口可以被關(guān)閉或打開。

下麵對集成開發(fā)環(huán)境中的各元素作簡要介紹。1.標(biāo)題欄 用來顯示窗口的標(biāo)題。2.主菜單 主菜單欄中含了使用VB6.0所需要的命令。主菜單中共有13個菜單項(xiàng),每個菜單項(xiàng)都有一個下拉菜單,內(nèi)含若干個菜單命令,單擊某個菜單項(xiàng),即可打開該菜單,單擊某個菜單中的某一條,就執(zhí)行相應(yīng)的命令。3.上下文菜單 上下文菜單沒有顯式地出現(xiàn)在集成開發(fā)環(huán)境中。在對象上單擊滑鼠右鍵即可打開上下文菜單。在上下文菜單中列出的操作選項(xiàng)清單取決於單擊滑鼠右鍵所在環(huán)境。4.工具欄 它以圖示按鈕的形式提供了常用的菜單命令。單擊工具欄上的按鈕,則執(zhí)行該按鈕所代表的操作。按照缺省規(guī)定,啟動VB之後顯示“標(biāo)準(zhǔn)”工具欄。 “標(biāo)準(zhǔn)”工具欄各按鈕的作用,如圖1-5所示。5.工具箱 工具箱提供了一組在設(shè)計(jì)時可以使用的常用工具,這些工具以圖示的形式排列在工具箱中,如圖1-6所示。這些工具就像製作機(jī)械零件的模具一樣。利用模具可以做出零件,利用工具箱中工具可以做出控件。雙擊工具箱中的某個工具圖示,或單擊工具圖示後按住滑鼠左鍵在窗體上拖動,即可在窗體上做出一個這種控件。設(shè)計(jì)人員在設(shè)計(jì)階段可以利用這些工具在窗體上構(gòu)造出所需要的應(yīng)用程式介面。除了系統(tǒng)提供的這些標(biāo)準(zhǔn)工具外,VB還允許用戶添加新的控件工具。6.窗體窗口 “窗體窗口”也稱為“對象窗口”,主要用來在窗體上設(shè)計(jì)應(yīng)用程式的介面,用戶可以在窗體上添加控件來創(chuàng)建所希望的介面外觀。例如,當(dāng)新建一個工程時,VB自動建立一個新窗體,並命名為Form1,如圖1-7所示。7.工程窗口 首先說明一下“工程”的概念。VB把一個應(yīng)用程式稱為一個工程(Project),而一個工程又是各種類型的檔的集合,這些檔包括工程檔(.vbp)、窗體檔(.frm)、標(biāo)準(zhǔn)模組檔(.bas)、類模組檔(.cls)、資源檔(.res)、ActiveX文檔(.dob)、ActiveX控件(.ocx)、用戶控件檔(.ctl)、屬性頁檔(.pag)。

需要指出的是,並不是每一個工程都要包括上述所有檔,VB要求一個工程至少包含兩個檔,即工程檔(.vbp)和窗體檔(.frm)。至於一個工程要包括多少種檔,由程式設(shè)計(jì)的複雜程度而定。 一個工程可以通過“工程窗口”來顯示,工程窗口列出了當(dāng)前工程所包含的檔清單。如圖1-8所示是啟動VB後建立的一個最簡單工程的結(jié)構(gòu)。8.屬性窗口 屬性是指對象(窗體或控件)的特徵,如大小、名稱、標(biāo)題、顏色、位置等。屬性窗口列出了被選定的一個對象的所有屬性。如圖1-9所示,屬性窗口包含對象下拉列表框、屬性列表和屬性說明欄。9.窗體佈局窗口 如圖1-10所示,窗體佈局窗口中有一個表示顯示器螢?zāi)坏膱D像,螢?zāi)粓D像上又有表示窗體的圖像,它們標(biāo)示了程式運(yùn)行時窗體在螢?zāi)恢械奈恢?。用戶可拖動窗體圖像調(diào)整其位置。1.4通過一個簡單的應(yīng)用程式快速入門

學(xué)習(xí)VB最好的方法是實(shí)踐,現(xiàn)在我們動手設(shè)計(jì)一個簡單的應(yīng)用程式。 【例1.1】製作一個如圖1-11所示的一個簡單的應(yīng)用程式的運(yùn)行介面。它由一個窗體、一個文本框和一個命令按鈕組成。當(dāng)用戶單擊命令按鈕“顯示”時,文本框中出現(xiàn)“歡迎使用VB”。

下麵簡單敘述其設(shè)計(jì)步驟。1.新建工程2.添加文本框 (1)雙擊工具箱中的文本框圖標(biāo),一個文本框控件就出現(xiàn)在窗體的中心位置上了,如圖1-12所示。3.添加命令按鈕 添加命令按鈕的方法與繪製文本框的方法類似。 4.設(shè)置屬性5.編寫事件過程代碼 前面的工作把應(yīng)用程式的介面設(shè)計(jì)好了,屬性也設(shè)置完畢,如圖1-17所示。但現(xiàn)在應(yīng)用程式並不能實(shí)現(xiàn)實(shí)際的功能。為了使它具有一定的功能,還必須為對象編寫實(shí)現(xiàn)某一功能的事件過程代碼。因?yàn)轭}目要求單擊命令按鈕後,文本框中顯示文字串,所以我們要對命令按鈕這個對象的單擊事件編寫一段程式,以指定用戶單擊命令按鈕後要執(zhí)行的操作。 現(xiàn)在開始編寫事件過程代碼。 (1)雙擊窗體上的“顯示”按鈕,螢?zāi)簧铣霈F(xiàn)代碼窗口,程式代碼就在這裏編寫,如圖1-18所示。

編寫如下事件過程:

PrivateSubCommand1_Click()

Text1.Text="歡迎使用VB"EndSub VB程式代碼由一條一條的語句構(gòu)成。本實(shí)例程式很簡單,只有3條語句。第1行是過程的起始語句,第2行的作用是在文本框中顯示“歡迎使用VB”,最後一行是過程的結(jié)束語句。 至此,程式代碼編寫完畢,現(xiàn)在可以運(yùn)行程式了。6.運(yùn)行應(yīng)用程式7.保存應(yīng)用程式

VB應(yīng)用程式至少有兩種檔需要保存:

窗體檔(.frm)

工程檔(.vbp)8.生成EXE檔 程式一旦設(shè)計(jì)完成,且測試成功,還可以將它編譯成可直接執(zhí)行的EXE檔,這樣用戶就可以在Windows環(huán)境中直接執(zhí)行它們,而不必再進(jìn)入VB環(huán)境了。1.5設(shè)計(jì)VB應(yīng)用程式的一般步驟本節(jié)介紹設(shè)計(jì)VB應(yīng)用程式的一般步驟。設(shè)計(jì)VB應(yīng)用程式主要有以下4個步驟:(1)設(shè)計(jì)用戶介面。(2)設(shè)置屬性。(3)編寫代碼。(4)保存和運(yùn)行調(diào)試程式,生成EXE檔。 1.5.1設(shè)計(jì)用戶介面1.向窗體上添加控件 向窗體上添加控件有兩種方法:

雙擊工具箱中的控件圖示,該控件即自動添加到了窗體的中央。

單擊工具箱中的控件圖示,然後將滑鼠指針移到窗體上,滑鼠指針變成十字型,在窗體上需要放控件的位置拖動滑鼠畫出想要的尺寸,然後釋放滑鼠,即可在窗體上畫出該控件。2.對窗體上的控件進(jìn)行調(diào)整 對窗體上的控件進(jìn)行調(diào)整的基本操作如下: (1)選中控件 (2)調(diào)整控件大小及位置1.5.2設(shè)置屬性 利用屬性窗口,可為介面中的對象(窗體或控件)設(shè)置相應(yīng)的屬性。 打開屬性窗口可用以下4種方法: (1)選“視圖”菜單中的“屬性窗口”。 (2)按[F4]鍵。 (3)單擊工具欄上的“屬性”按鈕。 (4)使用對象的上下文菜單。 在屬性窗口中所進(jìn)行的是屬性初始值的設(shè)置,用戶也可在程式中對他們進(jìn)行設(shè)置和修改。1.5.3編寫代碼 為了使應(yīng)用程式具有一定的功能,還必須為對象編寫實(shí)現(xiàn)某一功能的程式代碼,編寫程式代碼要在“代碼窗口”進(jìn)行。 打開代碼窗口可用以下4種方法: (1)雙擊對象。 (2)選“視圖”菜單中的“代碼窗口”。 (3)使用對象的上下文菜單。 (4)在工程窗口單擊查看代碼圖示。

編寫程式代碼是創(chuàng)建VB應(yīng)用程式的主要工作環(huán)節(jié),用戶需要的運(yùn)算、處理,都要通過編寫代碼來實(shí)現(xiàn)。一個好的程式具有以下特點(diǎn): (1)正確性。能運(yùn)行通過,並達(dá)到預(yù)期目的。 (2)易讀性。結(jié)構(gòu)清晰,便於查錯、修改。 (3)運(yùn)行效率高。程式運(yùn)行時間較短,佔(zhàn)用的存儲空間較少。 VB代碼書寫格式比較自由。代碼不區(qū)分字母的大小寫,一行允許多達(dá)255個字元。通常一行寫一條語句,這樣程式看起來比較清晰。在同一行上也可寫多個語句,這時語句間用冒號“:”分隔。例如,a=4:b=5:c=6。單行語句也可分若干行書寫,要使用一個空格後跟一個下劃線作續(xù)行符,如下所示:

dimaassingle,bassingle,cassingle_dassingle,eassingle1.5.4保存和運(yùn)行調(diào)試工程、生成EXE檔1.保存工程 選“檔”菜單中的“保存工程”或單擊工具欄中的“保存”按鈕即可。2.運(yùn)行調(diào)試工程 運(yùn)行工程,盡可能地發(fā)現(xiàn)程式中存在的錯誤和問題,排除錯誤、解決問題。 運(yùn)行工程可用以下3種方法: (1)選擇“運(yùn)行”菜單中的“啟動”。 (2)單擊工具欄中的“啟動”按鈕。 (3)按[F5]鍵。 一般來講,程式很少能一次運(yùn)行通過,這是因?yàn)槌淌街杏羞@樣那樣的錯誤,這是由它反映的實(shí)際問題的複雜性,及程式本身邏輯結(jié)構(gòu)的複雜性決定的。程式中的錯誤可分為3類:(1)編譯錯誤。(2)運(yùn)行錯誤。(3)邏輯錯誤。3.生成EXE檔1.6對象、事件與事件過程 VB是面向?qū)ο蟮某淌皆O(shè)計(jì)語言。面向?qū)ο蟪淌皆O(shè)計(jì)是一種以對象為基礎(chǔ),以事件來驅(qū)動對象的程式設(shè)計(jì)方法。它將一個應(yīng)用程式劃分成多個對象,並且建立與這些對象相關(guān)聯(lián)的事件過程。通過對象對所發(fā)生的事件產(chǎn)生回應(yīng),來執(zhí)行相應(yīng)的事件過程,以引發(fā)對象狀態(tài)的改變,從而達(dá)到處理的目的。1.對象 對象是VB應(yīng)用程式的基礎(chǔ)構(gòu)件。窗體和控件都是對象,被稱作對象的還有資料庫、圖表等,對象具有屬性和方法,並回應(yīng)外部事件。在開發(fā)一個應(yīng)用程式時,必須先建立各種對象,然後圍繞對象進(jìn)行程式設(shè)計(jì)。2.對象的屬性 屬性是指對象的特徵。每一種對象都有一組特定的屬性,這在屬性窗口中可以看到。 每個屬性都有一個缺省值,如果不改變該值,應(yīng)用程式就使用該缺省值,如果缺省值不能滿足要求,就要對它重新設(shè)置。3.對象的方法4.對象的事件5.事件過程 對象感應(yīng)到某一事件發(fā)生時所執(zhí)行的程式稱為事件過程。 事件過程的形式如下:

PrivateSub對象名_事件名()

…(VB程式代碼)

EndSub2.1VB的基本字元集和辭彙集2.1.1字元集2.1.2辭彙集1.關(guān)鍵字 關(guān)鍵字又稱保留字,是在語法上有固定意義的字母組合。主要包括:命令名、函數(shù)名、數(shù)據(jù)類型名、運(yùn)算符、VB系統(tǒng)提供的標(biāo)準(zhǔn)過程等。2.識別字 識別字是用戶自己定義的名字,包括自定義常量名、變數(shù)名、控件名、自定義的過程名和函數(shù)名等。用戶通過識別字對相應(yīng)的對象進(jìn)行操作。2.2VB的基本數(shù)據(jù)類型

數(shù)據(jù)是資訊的物理表示形式,是程式處理的對象。在VB中,對不同類型的數(shù)據(jù)有不同的操作方式和不同的取值範(fàn)圍。在程式設(shè)計(jì)中,要隨時注意所用數(shù)據(jù)的類型。VB的數(shù)據(jù)類型有系統(tǒng)定義和自定義兩種,系統(tǒng)定義的數(shù)據(jù)類型稱為標(biāo)準(zhǔn)類型,自定義數(shù)據(jù)類型是由若干標(biāo)準(zhǔn)類型組合成的某種結(jié)構(gòu)。表2-1列出了VB中的標(biāo)準(zhǔn)數(shù)據(jù)類型。2.2.1字串型(String) 字串包括除雙引號和回車以外可列印的所有字元,雙引號作為字串的定界符號。 例如:"1234"和"張三"都是字元型。注意字串中空格是有效字元。2.2.2數(shù)值型

VB中的數(shù)值型數(shù)據(jù)分為整型和實(shí)型兩大類。1.整型 整型數(shù)是不帶小數(shù)點(diǎn)和指數(shù)符號的數(shù)。包括整型、長整型和位元組型整數(shù)。(1)整型(Integer,類型符%) 整型數(shù)用兩個位元組存儲,取值範(fàn)圍是-32768到+32767。 例如:15,-345,654%都是整數(shù)型。而45678%則會發(fā)生溢出錯誤。 (2)長整型(Long,類型符&) 長整型用4個位元組存儲,取值範(fàn)圍是-2147483648到+2147483647。 例如:123456,45678&都是長整數(shù)型。 (3)位元組型(Byte) 用一個位元組存儲,取值範(fàn)圍是0到255。2.實(shí)型 實(shí)型數(shù)據(jù)主要分為單精確度、雙精度和貨幣型3種。 (1)單精確度浮點(diǎn)數(shù)(Single,類型符!) 單精確度數(shù)用4個位元組存儲,有7位有效數(shù)字,取值範(fàn)圍1.401298E-45<|x|<3.402823E+38。 例如:3.14!,2.718282。

(3)貨幣型(Currency,類型符@) 貨幣型數(shù)據(jù)主要用來表示貨幣值,用8個位元組存儲,貨幣型是定點(diǎn)數(shù),精確到小數(shù)點(diǎn)後面第4位,第五位四捨五入。整數(shù)部分最多15位。 例如:3.56@、65.123456@都是貨幣型。2.2.3邏輯型(Boolean) 邏輯型數(shù)據(jù)只有兩個:邏輯真True和邏輯假False,用2個位元組存儲。當(dāng)把邏輯值轉(zhuǎn)化為數(shù)值型時,F(xiàn)alse為0,True為-1。2.2.4日期型(Date) 日期型數(shù)據(jù)用8個位元組來存儲,日期範(fàn)圍從西元100年1月1日到9999年12月31日,可以用#括起來放置日期和時間,允許用各種表示日期和時間的格式。 日期可以用“/”、“,”、“-”分隔開,可以是年、月、日,也可以是月、日、年的順序。時間必須用“:”分隔,順序是:時、分、秒。

例如:#1999-08-1110:25:00pm#、#08/23/99#、#03-25-7520:30:00#、#98,7,18#等都是有效的日期型數(shù)據(jù)。在VB中會自動轉(zhuǎn)換成mm/dd/yy(月/日/年)的形式。2.2.5變體型(Variant) 變體型也稱為可變類型,它是一種特殊的數(shù)據(jù)類型。它的類型可以是前面敘述的數(shù)值型、日期型、字元型等,完全取決於程式的需要。從而增加了VB數(shù)據(jù)處理的靈活性。2.2.6自定義類型 在VB中可以用系統(tǒng)提供的標(biāo)準(zhǔn)類型定義變數(shù),它們都是電腦處理的基本資料項(xiàng)目。但在實(shí)際工作中,常見的並不是孤立的資料項(xiàng)目,而是由兩個或兩個以上的基本項(xiàng)組成的組合項(xiàng)。例如,學(xué)生對象由學(xué)號、姓名、性別與語文、英語、數(shù)學(xué)、…、平均分?jǐn)?shù)等基本項(xiàng)組合成組合項(xiàng)。用這些組合項(xiàng)來描述相應(yīng)對象的若干屬性,這些描述相同對象的組合項(xiàng)的集合形成了記錄。在VB中使用用戶定義數(shù)據(jù)類型定義記錄結(jié)構(gòu)。自定義類型由Type語句來實(shí)現(xiàn):格式:Type自定義類型名元素名1As類型名元素名2As類型名

……元素名nAs類型名

EndType例如:

TypestutypexmAsString*4xhAsIntegercsrqAsDatesxAsSingleywAsSingleyyAsSingleendtype2.3常量與變數(shù)

電腦處理數(shù)據(jù)時,常用的數(shù)據(jù)形式有兩種,一是常量,二是變數(shù)。2.3.1常量 在程式執(zhí)行的過程中保持不變的數(shù)據(jù)稱為常量。在VB中,常量分為兩種,文字常量和符號常量。符號常量又分為用戶自定義和系統(tǒng)定義兩種。1.文字常量 文字常量直接出現(xiàn)在代碼中,也稱為字面常量或直接常量,文字常量的表示形式?jīng)Q定它的類型和值。例如:字元型:"Iamastudent"放在一對引號當(dāng)中。數(shù)值型:3.14159、56、8.432E-15日期型:#3jan,98#放在一對#當(dāng)中。邏輯型:True、False2.符號常量 符號常量就是用識別字來表示一個常量,例如:我們把3.14定義為pi,在程式代碼中,我們就可以在使用圓周率的地方使用pi。使用符號常量的好處主要在於,當(dāng)我們要修改該常量時,只需要修改定義該常量的一個語句即可。 定義常量的方法如下:格式:const常量名[as類型]=運(yùn)算式 說明:常量名的命名規(guī)則與識別字相同。[as類型]用以說明常量的數(shù)據(jù)類型。

除了用戶定義的常量外,在VB中,系統(tǒng)定義了一系列常量,可與應(yīng)用程式的對象、方法或?qū)傩砸黄鹗褂茫钩淌揭嘴堕喿x和編寫。系統(tǒng)常量的使用方法和自定義常量的使用方法相同。 例如:form1.Windowstate=vbMinimized意義為將窗口最小化。 其中vbMinimized就是一個系統(tǒng)定義的常量,值為1。和form1.Windowstate=1相比較,form1.Windowstate=vbMinimized更明確地表達(dá)了語句的功能。 系統(tǒng)定義的常量在對象庫中,可以在對象流覽器中通過不同的對象庫查找它們的符號及取值。如圖2-1所示。2.3.2變數(shù) 在程式執(zhí)行過程中,其值可以改變的量稱為變數(shù)。1.變數(shù)的說明 使用變數(shù)前,應(yīng)首先定義所用到的變數(shù)(包括變數(shù)名和類型),使系統(tǒng)分配相應(yīng)的記憶體空間,並確定該空間可存儲的數(shù)據(jù)類型。所有變數(shù)都具有名字和類型。在VB中可以用類型說明語句或隱式說明來定義變數(shù)。 (1)類型說明語句 格式:說明符變數(shù)名[As類型]

說明符是說明語句的關(guān)鍵字,它可以是Dim,Private,Public,Static。本章主要介紹Dim語句。例如:DimaasintegerDimbaslongDimcassingle上面的3個語句可以寫為:Dimaasinteger,baslong,cassingle也可以用類型符來定義變數(shù),例如上面語句寫成:Dima%,b&,c!作用是一樣的。缺省[As類型]為可變類型。 另外,若把多個變數(shù)都定義成同一類型,例如:把X,Y,Z都定義成雙精度型,必須寫成:DimXasdouble,Yasdouble,Zasdouble如果寫成:Dimx,y,zasdouble則x,y定義成可變類型,z定義成雙精度型。 對於字元型變數(shù),VB中分為定長和變長兩種。例如:DimNameasstring,Idasstring*10

說明:Dim語句定義的變數(shù)其作用範(fàn)圍由Dim語句所在的位置決定。Dim語句出現(xiàn)在窗體代碼的聲明部分時,則窗體以及窗體中各控件的事件過程都可以使用這些變數(shù)。這種變數(shù)稱為窗體級變數(shù);在過程內(nèi)部用Dim語句聲明的變數(shù),只在該過程內(nèi)有效。這種變數(shù)稱為局部變數(shù)。關(guān)於變數(shù)的作用域,8.4節(jié)詳細(xì)闡述。 (2)隱式說明

VB中使用未加說明的變數(shù)時,系統(tǒng)默認(rèn)為可變類型(Variant),這種方式稱為隱式說明。建議初學(xué)者養(yǎng)成對變數(shù)顯示說明的習(xí)慣,以避免一些不必要的錯誤。2.可變類型變數(shù)Variant

當(dāng)說明語句中,使用類型關(guān)鍵字Variant定義類型,或僅定義變數(shù)而不作類型聲明(或變數(shù)名不帶類型符),則該變數(shù)稱為可變類型變數(shù)。3.自定義類型變數(shù) 在VisualBasic6.0中允許用戶自己定義變數(shù)類型,在定義“自定義類型變數(shù)”前要先定義數(shù)據(jù)類型2.4運(yùn)算符與運(yùn)算式2.4.1算術(shù)運(yùn)算符 算術(shù)運(yùn)算符用來連接數(shù)值型數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,VB提供了7種算術(shù)運(yùn)算符,如表2-2所示。2.4.2字串運(yùn)算符 字串只有連接運(yùn)算,在VB中可以用“+”或“&”。建議儘量使用“&”,使程式看起來更明瞭。使用“&”運(yùn)算符時應(yīng)注意前後加空格,否則VB會當(dāng)作長整數(shù)型的類型符來處理。 注意“+”和“&”的區(qū)別。當(dāng)兩個被連接的數(shù)據(jù)都是字元型時,它們的作用相同。當(dāng)數(shù)字型和字元型連接時,“&”把數(shù)據(jù)都轉(zhuǎn)化成字元型然後連接;“+”把數(shù)據(jù)都轉(zhuǎn)化成數(shù)字型然後連接。例如。"ABC"+"DEF"其值為"ABCDEF"。"姓名:"&"張三"其值為:"姓名:張三"。23&"7"其值為:"237"。23+"7"其值為:30。而23+"7abc"則會出現(xiàn)類型不匹配的錯誤。2.4.3關(guān)係運(yùn)算符 關(guān)係運(yùn)算符用作兩個數(shù)值或字串的比較,返回值是邏輯值True或False。表2-3列出了VB中的關(guān)係運(yùn)算符及使用示例。2.4.4邏輯運(yùn)算符 邏輯運(yùn)算符對邏輯量進(jìn)行邏輯運(yùn)算,除Not外都是對兩個邏輯量運(yùn)算。結(jié)果為邏輯值。表2-4列出了VB中的邏輯運(yùn)算符。2.4.5運(yùn)算式1.運(yùn)算式的組成 運(yùn)算式由常量、變數(shù)、函數(shù)、運(yùn)算符以及圓括號、(),按照一定的規(guī)則組成,不管運(yùn)算式的形式如何,都會計(jì)算出一個結(jié)果,該結(jié)果的類型由參與運(yùn)算的數(shù)據(jù)和運(yùn)算符決定。2.運(yùn)算式的書寫規(guī)則 (1)運(yùn)算式中的每個字元沒有高低、大小的區(qū)別。 (2)只能使用圓括號,可以多重使用,圓括號必須成對出現(xiàn)。 (3)VB運(yùn)算式中的乘號“*”不能省略。 (4)能用內(nèi)部函數(shù)的地方儘量使用內(nèi)部函數(shù)。 例如:數(shù)學(xué)式寫成VB運(yùn)算式為: (-b+sqr(b^2-4*a*c))/(2*a)3.關(guān)係運(yùn)算式和邏輯運(yùn)算式 當(dāng)使用關(guān)係運(yùn)算符或邏輯運(yùn)算符時,運(yùn)算式又稱為關(guān)係運(yùn)算式或邏輯運(yùn)算式。 關(guān)係運(yùn)算一般表示一個簡單的條件。 例如:age>20、score>80、x+y>z等。 邏輯運(yùn)算式表示較複雜的條件。 例如:數(shù)學(xué)中的0<x<5,寫成VB運(yùn)算式應(yīng)為0<xAndx<5。4.結(jié)果類型 算術(shù)運(yùn)算式中,不同類型的數(shù)據(jù)計(jì)算時結(jié)果轉(zhuǎn)化成精度高的類型。 關(guān)係運(yùn)算式和邏輯運(yùn)算式的結(jié)果是邏輯值:True、False。5.優(yōu)先順序 圓括號>算術(shù)運(yùn)算符>關(guān)係運(yùn)算符>邏輯運(yùn)算符。2.5常用內(nèi)部函數(shù) VB提供了大量的內(nèi)部函數(shù)供用戶調(diào)用。本節(jié)將分類介紹一些常用的內(nèi)部函數(shù)。 函數(shù)的一般調(diào)用格式: 格式:函數(shù)名([參數(shù)表]) 說明:參數(shù)表可以有一個參數(shù)或逗號隔開的多個參數(shù),多數(shù)參數(shù)都可以使用運(yùn)算式。函數(shù)一般作為運(yùn)算式的組成部分調(diào)用。3.1窗體

創(chuàng)建VB應(yīng)用程式的第一步是創(chuàng)建用戶介面。用戶介面的基礎(chǔ)是窗體,各種控件對象必須建立在窗體上。 啟動VB後,即在螢?zāi)簧巷@示一個窗體,如圖3-1所示。3.1.1窗體的主要屬性 窗體的屬性決定了窗體的外觀和操作。窗體的大部分屬性可用兩種方法來設(shè)置:通過屬性窗口設(shè)置和通過程式代碼設(shè)置。有少量的屬性不能在程式代碼中設(shè)置。 (1)Caption屬性 設(shè)置窗體的標(biāo)題內(nèi)容。標(biāo)題內(nèi)容應(yīng)概括說明本窗體作用。 (2)MaxButton屬性和MinButton屬性

MaxButton屬性為True,窗體右上角有最大化按鈕;為False時,無最大化按鈕。

MinButton屬性為True,窗體右上角有最小化按鈕;為False時,無最小化按鈕。

(3)BorderStyle屬性 決定窗體邊框式樣及窗體是否能調(diào)整大小。 (4)BackColor屬性和ForeColor屬性

BackColor屬性設(shè)置窗體的背景顏色,F(xiàn)orColor屬性設(shè)置窗體的前景顏色。窗體的前景顏色是執(zhí)行Print方法時所顯示文本的顏色。 (5)Height屬性和Width屬性 設(shè)置窗體的初始高度和寬度。其單位為Twip。1Twip=1/20點(diǎn)=1/1440英寸=1/567cm。

(6)Left屬性和Top屬性 用於設(shè)置窗體左邊框距螢?zāi)蛔筮吔绲木嚯x和窗體頂邊距螢?zāi)豁敹说木嚯x。其單位為Twip。 (7)Name(名稱)屬性 設(shè)置窗體的名稱,在程式代碼中用這個名稱引用該窗體。新建工程時,窗體的名稱缺省為Form1;添加第二個窗體,其名稱缺省為Form2,依次類推。為了便於識別,用戶通常給Name屬性設(shè)置一個有實(shí)際意義的名稱。

(8)Enabled屬性 屬性值為True或False,設(shè)置對象是否能夠?qū)τ脩舢a(chǎn)生的事件做出反應(yīng)。一般在程式中設(shè)置,用於臨時遮罩對窗體或其他控件的的控制。 (9)Moveable屬性 屬性值為True或False,設(shè)置是否可以移動窗體。 (10)Visible屬性 屬性值為True或False,設(shè)置窗體是否被顯示。用戶可用該屬性在程式代碼中控制窗體的隱現(xiàn)。

(11)Picture屬性 設(shè)置在窗體中顯示的圖片。單擊Picture屬性右邊的按鈕,彈出“加載圖片”對話框,用戶可選擇一個圖片檔作為窗體的背景圖片。若在程式中設(shè)置該屬性的值,需要使用LoadPicture函數(shù)。 (12)WindowState屬性 設(shè)置窗體啟動後的大小狀態(tài)。 在VB中,雖然不同的對象有不同的屬性集合,但有一些屬性,如Name、Enabled、Visible、Height、Width、Left、Top等,其他控件也有,且具有相似的作用。在後續(xù)的章節(jié)中,主要介紹各種控件常用的特殊屬性。3.1.2事件 窗體最常用的事件有3種:Click(單擊)、DbClick(雙擊)、Load(裝入)。1.Click事件 程式運(yùn)行後,單擊窗體觸發(fā)該事件。2.DbClick事件 程式運(yùn)行後,雙擊窗體觸發(fā)該事件。3.Load事件

Load事件是窗體被裝入記憶體工作區(qū)時觸發(fā)的事件。如果這個事件過程存在,就馬上執(zhí)行它。Load事件過程通常用於啟動程式時,對屬性、變數(shù)的初始化以及裝載數(shù)據(jù)等。 【例3.1】窗體上無最大化、最小化按鈕,程式運(yùn)行後,在窗體上裝入一幅圖片作為背景,當(dāng)單擊窗體時,窗體變寬;當(dāng)雙擊窗體時,則退出。程式運(yùn)行介面如圖3-2所示。事件過程如下:PrivateSubForm_Load()'裝入圖片

Form1.Picture=LoadPicture("c:\pic\Changcheng.wmf")EndSubPrivateSubForm_click()'單擊窗體

Form1.Width=Form1.Width+1000EndSubPrivateSubForm_DblClick()'雙擊窗體

EndEndSub

說明:上機(jī)時,可通過查找檔的方法找一個圖片檔,參照本例中的格式輸入即可。3.2命令按鈕

在VB應(yīng)用程式中,命令按鈕是使用最多的對象之一,常常用它接受用戶的操作資訊,觸發(fā)相應(yīng)的事件過程,以實(shí)現(xiàn)指定的功能。3.2.1屬性1.Caption屬性 設(shè)定命令按鈕上顯示的文本。2.Default屬性 該屬性用於設(shè)置默認(rèn)命令按鈕。3.Style屬性和Picture屬性 命令按鈕上除了可以顯示文字外,還可以顯示圖形。若要顯示圖形,首先應(yīng)將Style屬性設(shè)置為1,然後在Picture屬性中設(shè)置要顯示的圖形檔。4.Value屬性 該屬性只能在程式運(yùn)行期間引用或設(shè)置。True表示被按下,F(xiàn)alse(默認(rèn))表示未被按下。3.2.2事件 最常用的事件是Click事件。3.3標(biāo)簽

標(biāo)籤(Label)主要用於顯示不需要用戶修改的文本。所以,標(biāo)籤可以用來標(biāo)示窗體及窗體上的對象,如為文本框、列表框等添加描述性的文字,或者作為窗體的說明文字。3.3.1屬性1.Caption屬性 設(shè)置標(biāo)籤要顯示的內(nèi)容。它是標(biāo)籤的主要屬性。2.BorderStyle屬性默認(rèn)值為0,標(biāo)籤無邊框;設(shè)置為1時,標(biāo)籤有立體邊框。3.Autosize屬性該屬性用於設(shè)置標(biāo)籤是否自動改變尺寸以適應(yīng)其內(nèi)容。4.Alignment屬性確定標(biāo)籤中內(nèi)容的對齊方式。5.BackStyle屬性該屬性用於設(shè)置背景是否透明。3.3.2事件 常用Click,DbClick事件。 【例3.2】修改例3.1,在圖片上加提示資訊“請單擊圖片”,程式其他功能不變。程式運(yùn)行介面如圖3-2所示。 操作如下:在窗體上添加一個標(biāo)籤,將其Caption屬性設(shè)置為“請單擊圖片”,BackStyle屬性設(shè)置為0(透明),程式代碼不變。3.4文本框

文本框(TextBox)在窗體中為用戶提供一個既能顯示文本又能編輯文本的區(qū)域。在文本框內(nèi),用戶可以用滑鼠、鍵盤按常用的方法對文字進(jìn)行編輯,例如進(jìn)行輸入、刪除、選擇、複製及粘貼等各種操作。3.4.1屬性1.Text屬性 設(shè)置文本框中顯示的內(nèi)容。2.Locked屬性 設(shè)置文本框中的內(nèi)容是否可編輯。3.Maxlength屬性 設(shè)置文本框中允許輸入的最大字符數(shù)。4.MultiLine屬性 決定文本框是否允許接收多行文本。5.PassWordChar屬性 當(dāng)MultiLine為False時,該屬性可設(shè)置顯示在文本框中的替代符。6.ScrollBars屬性 決定文本框中是否有滾動條。3.4.2事件 文本框除支持Click,DbClick事件,常用的還有Change、LostFocus事件。1.Change事件 當(dāng)用戶輸入新內(nèi)容,或程式對文本框的Text屬性重新賦值,從而改變文本框的Text屬性時觸發(fā)該事件。2.LostFocus事件 當(dāng)用戶按下[Tab]鍵時光標(biāo)離開文本框,或用滑鼠選擇其他對象時觸發(fā)該事件,稱為“失去焦點(diǎn)”事件。3.4.3方法 文本框最常用的方法是SetFocus,使用該方法可把游標(biāo)移到指定的文本框中,使之獲得焦點(diǎn)。當(dāng)使用多個文本框時,用該方法可把游標(biāo)移到所需要的的文本框中。其使用格式為:1.對象.SetFocus

【例3.3】程式運(yùn)行後,隨著用戶的輸入,標(biāo)籤中同步顯示出用戶對文本框的內(nèi)容更新的次數(shù)。運(yùn)行效果如圖3-4所示。2.編寫事件過程如下:

PrivateSubText1_Change()

Statici%i=i+1Label1.Caption=iEndSub

請思考:標(biāo)籤中顯示的數(shù)字是文本框中顯示的字元個數(shù)嗎?3.5賦值語句

賦值語句是VB程式最常用、最基本的語句,它能為變數(shù)提供數(shù)據(jù)。另外,若要在程式代碼中設(shè)置對象的屬性,也要使用賦值語句。賦值語句有兩種格式:格式1:變數(shù)名=運(yùn)算式格式2:[對象名.]屬性名=運(yùn)算式

賦值語句的作用是:首先計(jì)算“=”右邊運(yùn)算式的值,然後將該值賦給“=”左邊的變數(shù)或?qū)ο蟮膶傩?。在格?中,若對象名省略,則默認(rèn)對象為當(dāng)前窗體。 例如:x=2 '把2賦給xy=x*3 '計(jì)算x*3的值,得6,把6賦給yx=x+1 '計(jì)算x+1的值,得3,把3賦給xa$="Hello" '把“Hello”賦給a$Text1.Text="你好!" '把“你好!”賦給Text1的Text屬性

【例3.4】已知三角形三邊a,b,c的長,求三角形的面積,輸出三條邊長及面積。 分析:應(yīng)用程式的介面應(yīng)該能讓用戶輸入三邊的長,程式在接收用戶輸入的數(shù)據(jù)後,利用數(shù)學(xué)公式對數(shù)據(jù)進(jìn)行計(jì)算,並把結(jié)果輸出到螢?zāi)簧?。已知三角形三邊a,b,c的長,求三角形的面積的公式為: 其中p=(a+b+c)/2。 (1)介面設(shè)計(jì) 在窗體上建立5個標(biāo)籤、3個文本框和1個命令按鈕。設(shè)置各對象的屬性,如表3-3所示。設(shè)計(jì)完成的介面如圖3-5所示。(2)編寫事件過程如下:

PrivateSubCommand1_Click()

Dima!,b!,c!,p!,s!a=Text1.Textb=Text2.Textc=Text3.Textp=(a+b+c)/2s=Sqr(p*(p-a)*(p-b)*(p-c))

Label5.Caption=sEndSub3.6Print方法3.6.1Print的格式及功能格式:[對象名.]Print[運(yùn)算式列表]功能:在對象上輸出運(yùn)算式的值。說明: (1)對象名:可以是Form(窗體)、Debug(立即窗口)、Picture(圖片框)、Printer(印表機(jī))。省略此項(xiàng),表示在當(dāng)前窗體上輸出。例如:Print"23*2=";23*2'在當(dāng)前窗體上輸出23*2=46Picture1.Print"Good"'在圖片框Picture1上輸出GoodPrinter.Print"Morning"'在印表機(jī)上輸出Morning

(2)運(yùn)算式列表:是一個或多個運(yùn)算式,若為多個運(yùn)算式,則各運(yùn)算式之間用“,”或“;”隔開。省略此項(xiàng),則輸出一空行。

(3)用“,”分隔各運(yùn)算式時,各項(xiàng)在以14個字元位置為單位劃分出的區(qū)段中輸出,每個區(qū)段輸出一項(xiàng);用“;”分隔各運(yùn)算式時,各項(xiàng)按緊湊格式輸出。 (4)如果在語句行末尾有“;”,則下一個Print輸出的內(nèi)容,將緊跟在當(dāng)前Print輸出內(nèi)容後面;如果在語句行末尾有“,”,則下一個Print輸出的內(nèi)容,將在當(dāng)前Print輸出內(nèi)容的下一區(qū)段輸出;如果在語句行末尾無分隔符號,則輸出完本語句內(nèi)容後換行,即在新的一行輸出下一個Print的內(nèi)容。例如:Print1;2;3Print4,5,

Print6Print7,8PrintPrint9,10輸出結(jié)果為:12345678910

(3)定位輸出:在Print方法中,可以使用Tab函數(shù)對輸出項(xiàng)進(jìn)行定位。 例如:

PrintTab(10);"姓名";Tab(25);"年齡"

則“姓名”和“年齡”分別從當(dāng)前行的第10列和第25列開始輸出。 輸出結(jié)果如下: 姓名年齡

Print方法中,還可以使用Spc函數(shù),例如:

Print"後面有8個空格";Spc(8);"前面有8個空格"

輸出結(jié)果如下: 後面有8個空格前面有8個空格3.6.2Cls方法 格式:[對象名.]Cls

功能:Cls方法清除Print方法顯示的文本或在圖片框中顯示的圖形,並把輸出位置移到對象的左上角。格式中的對象可以是窗體或圖片框,如果省略對象名,則清除當(dāng)前窗體的顯示內(nèi)容。3.7輸入框

我們知道,文本框可以接收用戶的輸入。輸入框也可以接受用戶的輸入,但是其風(fēng)格和用法有別於文本框。VB提供的InputBox函數(shù)可生成輸入框。 例如:p$=InputBox("請輸入密碼","密碼框") 執(zhí)行該語句後,螢?zāi)簧巷@示如圖3-6所示的輸入框。

每執(zhí)行一次InputBox函數(shù),用戶只能輸入一個數(shù)據(jù),另外,輸入框的樣式是固定的,用戶不能改變。用戶能改變的是輸入框的“提示”和“標(biāo)題”的內(nèi)容,“提示”和“標(biāo)題”都是字串運(yùn)算式。

InputBox函數(shù)的一般格式:

InputBox(提示[,標(biāo)題][,缺省值][,x座標(biāo)位置][,y座標(biāo)位置])

需要注意的是:各項(xiàng)參數(shù)次序必須一一對應(yīng),除了“提示”不能省略外,其餘各項(xiàng)均可省略,但省略部分也要用逗號占位符跳過。 例如:f$=InputBox("第一行"&vbNewLine&"第二行",,"ddd",200,200) 運(yùn)行時螢?zāi)坏娘@示如圖3-7所示。 【例3.5】已知圓半徑,求圓周長和圓面積。 (1)介面設(shè)計(jì) 在窗體上建立兩個標(biāo)籤、兩個文本框、兩個命令按鈕。設(shè)置各對象的屬性如表3-4所示。(2)編寫事件過程如下:

PrivateSubCommand1_Click()

Dimr!,c!,a!r=InputBox("請輸入半徑","輸入框")

c=2*r*3.14159a=3.14159*r^2Text1.Text=cText2.Text=aEndSubPrivateSubCommand2_Click()

EndEndSub3.8消息框

執(zhí)行VB提供的MsgBox函數(shù),可以在螢?zāi)簧铣霈F(xiàn)一個消息框,消息框通知用戶消息並等待用戶來選擇消息框中的按鈕,MsgBox函數(shù)返回一個與用戶所選按鈕相對應(yīng)的整數(shù)。

MsgBox函數(shù)的格式:

MsgBox(提示,[,按鈕數(shù)值][,標(biāo)題]) 例如:inta=MsgBox(“密碼錯”,21,“密碼核對”)

執(zhí)行該語句後,螢?zāi)簧巷@示如圖3-10所示的消息框。

在MsgBox函數(shù)格式中,“提示”和“標(biāo)題”的含義同InputBox函數(shù),“按鈕數(shù)值”的含義複雜一些,“按鈕數(shù)值”指定按鈕的數(shù)目及類型,使用的圖示樣式及缺省按鈕是什麼等,“按鈕數(shù)值”的缺省值是0。本例“按鈕數(shù)值”是21,其含義是:消息框中有“×”圖示,有“重試”及“取消”兩個按鈕,缺省按鈕是“重試”按鈕。當(dāng)用戶單擊消息框中的一個按鈕後,消息框即從螢?zāi)簧舷АT谏厦娴恼Z句中,將函數(shù)的返回值賦給了變數(shù)inta,在程式中可引用inta作相應(yīng)的處理。 下麵對“按鈕數(shù)值”作進(jìn)一步的解釋。 “按鈕數(shù)值”是3個數(shù)值之和,這3個數(shù)值分別代表按鈕的數(shù)目和類型、使用的圖示樣式以及缺省按鈕是什麼。 “按鈕數(shù)值”是從上面3個表中各取一個數(shù)相加而得。注意:每個表只能取一個數(shù)。例如“按鈕數(shù)值”是21,系統(tǒng)會自動把它分解成分別屬於上面3個表中的3個值5,16,0。21=5+16+0,這種分解是唯一的。 在程式中,一般把“按鈕數(shù)值”寫成符號常數(shù)相加的形式,如把21寫成VbRetryCancel+vbCritical+vbDefaultButton1,這樣可使程式含義清楚,從而增加程式的可讀性。當(dāng)然,把21寫成5+16+0也是允許的。

MsgBox函數(shù)的返回值是根據(jù)用戶單擊哪個按鈕而定的,見表3-8。 通常,在程式中要根據(jù)MsgBox函數(shù)返回值的不同作不同的處理,這需要用到第4章仲介紹的選擇結(jié)構(gòu)方面的知識。 MsgBox也可以寫成語句形式,例如:MsgBox"密碼錯","密碼核對"

執(zhí)行此語句也產(chǎn)生一個消息框,如圖3-11所示。

MsgBox語句沒有返回值,因此常用於比較簡單的資訊提示。3.9注釋語句、結(jié)束語句3.9.1注釋語句 為了提高程式的可讀性,通常在程式的適當(dāng)位置加上必要的注釋。在VB中用“'”或Rem來標(biāo)識一條注釋語句,格式為:

'|Rem<注釋內(nèi)容>例如:

Rem2002年編寫

PrivateSubForm_click()

Dima$'定義一個字串變數(shù)

a="VisualBasic6.0中文版"'為變數(shù)賦值

printa'列印a的內(nèi)容

EndSub3.9.2結(jié)束語句 格式:End End語句用來結(jié)束程式的執(zhí)行,並關(guān)閉已打開的檔。 例如:

PrivateSubCommand3_Click()

EndEndSub

該過程用於結(jié)束程式,即單擊命令按鈕Command3時,結(jié)束程式的運(yùn)行。3.10程式調(diào)試

在程式中發(fā)現(xiàn)錯誤並排除錯誤的過程叫做程式調(diào)試。VB提供了豐富的調(diào)試手段,可以方便地跟蹤程式的運(yùn)行,排除程式錯誤。3.10.1程式錯誤 程式設(shè)計(jì)中常見的錯誤可分為以下3種:編譯錯誤、運(yùn)行錯誤和邏輯錯誤。1.編譯錯誤 編譯錯誤指VB在編譯程式過程中出現(xiàn)的錯誤。此類錯誤是由於不正確的構(gòu)造代碼而產(chǎn)生的,比如關(guān)鍵字輸入錯、遺漏了必需的標(biāo)點(diǎn)符號等。 例如,Printt"hello"語句會導(dǎo)致編譯錯誤。2.運(yùn)行錯誤 運(yùn)行錯誤指編譯通過後,運(yùn)行代碼時發(fā)生的錯誤。此類錯誤通常是代碼執(zhí)行了非法操作或某些操作失敗。比如,要打開的檔沒找到,除法運(yùn)算時除數(shù)為零,數(shù)據(jù)溢出等。 例如,print245*1000語句。3.邏輯錯誤 程式運(yùn)行後,得不到應(yīng)有的結(jié)果,這說明程式存在邏輯錯誤,邏輯錯誤是由於程式結(jié)構(gòu)或演算法錯誤而引起的。 例如,把語句s=s+l中的英文字母l寫成了數(shù)字1。3.10.23種模式

VB開發(fā)環(huán)境有3種模式:設(shè)計(jì)模式、運(yùn)行模式和中斷模式。開發(fā)環(huán)境中的標(biāo)題能夠顯示出當(dāng)前所處的模式。1.設(shè)計(jì)模式2.運(yùn)行模式3.中斷模式3.10.3調(diào)試方法 使用VB提供的調(diào)試工具與調(diào)試手段,可提高程式調(diào)試的效率。1.逐語句執(zhí)行2.設(shè)置中斷點(diǎn)3.使用調(diào)試窗口4.1塊If4.1.1塊If的格式、功能格式:If條件then

語句塊1[Else

語句塊2]EndIf

說明: (1)“條件”一般為關(guān)係運(yùn)算式或邏輯運(yùn)算式。 通常把關(guān)系運(yùn)算式或邏輯運(yùn)算式的值為真時,稱為條件滿足;值為假時,稱為條件不滿足。反之亦然。 (2)語句塊1、語句塊2分別是“條件”滿足或不滿足時,處理方法的描述,可以是若干個語句。 (3)If…Then、Else、EndIf是VB的保留字。 功能: (1)塊If首先判斷“條件”,其值為真時,執(zhí)行語句塊1;為假時執(zhí)行語句塊2。當(dāng)缺省[Else…]中的內(nèi)容時,該選擇結(jié)構(gòu)只對條件滿足的情況進(jìn)行處理。執(zhí)行過程如圖4-1所示。

【例4.1】火車站行李費(fèi)的收費(fèi)標(biāo)準(zhǔn)是50kg以內(nèi)(包括50kg)0.20/kg,超過部分0.50/kg。編寫程式,要求根據(jù)輸入的任意重量,計(jì)算出應(yīng)付的行李費(fèi)。 根據(jù)題意計(jì)算公式如下:程式代碼如下:

'"計(jì)算"按鈕代碼

PrivateSubCommand1_Click()

Dimweightassingle,payassingleweight=Text1.TextIfweight>50Thenpay=(weight-50)*0.5+50*0.2Elsepay=weight*0.2EndIfText2.Text=payEndSubPrivateSubCommand2_Click()

Text1.Text=""Text2.Text=""EndSubPrivateSubCommand3_Click()

EndEndSub4.1.2塊If的嵌套 所謂塊If語句的嵌套,就是在語句塊1或語句塊2中又包含塊If語句。 【例4.2】任意輸入3個數(shù),按照從大到小的順序輸出。 演算法分析:排序的基本方法,就是比較大小,然後根據(jù)比較的結(jié)果分別加以處理。本例把3個數(shù)分別放在A,B,C中,處理過程為:若A<B為真,交換A,B的值;否則不做處理。這樣就保證了A≥B;然後再用C去比較。具體流程如圖4-3所示。按如圖4-4所示設(shè)置介面。程式代碼如下:

'"排序"按鈕代碼

PrivateSubCommand1_Click()

DimaAsSingle,cAsSingle,bAsSinglea=Text1.Textb=Text2.Textc=Text3.Text'三個文本框的數(shù)據(jù)賦值給變數(shù)

Ifa<bThent=aa=bb=t 'a<b時交換a、b的值

EndIf '保證A>BIfc>aThen '用C去比較

Text4.Text=c 'C>A成立,C最大

Text5.Text=aText6.Text=bElseIfc<bThenText4.Text=a'C<B成立,C最小

Text5.Text=bText6.Text=cElseText4.Text=a'C處於中間

Text5.Text=cText6.Text=bEndIfEndIfEndSub'"退出"按鈕代碼

PrivateSubCommand2_Click()

EndEndSub4.2ElseIf語句格式:If條件1then

語句塊1ElseIf條件2then

語句塊2……[Else

語句塊n+1]EndIf

功能: (1)依次判斷條件,如果找到一個滿足的條件,則執(zhí)行其下麵的語句塊,然後跳過EndIf,執(zhí)行後面的程式。 (2)如果所列出的條件都不滿足,則執(zhí)行Else語句後面的語句塊;如果所列出的條件都不滿足,又沒有Else子句,則直接跳過EndIf,不執(zhí)行任何語句塊。

ElseIf結(jié)構(gòu)的執(zhí)行過程如圖4-6所示。

【例4.4】輸入一個學(xué)生的一門課分?jǐn)?shù)x(百分制),當(dāng)x≥90時,輸出“優(yōu)秀”;當(dāng)80≤x<90時,輸出“良好”;當(dāng)70≤x<80時,輸出“中”;當(dāng)60≤x<70時,輸出“及格”,當(dāng)x<60時,輸出“不及格”。 演算法分析:本例適合用多路分支結(jié)構(gòu)來解決。運(yùn)行介面如圖4-7所示。程式代碼如下:

'"鑒定"按鈕代碼

PrivateSubCommand1_Click()

Dimscore!score=Text1.TextIfscore>=90ThenText2.Text="優(yōu)秀"ElseIfscore>=80ThenText2.Text="良好"ElseIfscore>=70ThenText2.Text="中"ElseIfscore>=60ThenText2.Text="及格"ElseText2.Text="不及格"EndIfEndSub

'“退出”按鈕代碼

PrivateSubCommand2_Click()

EndEndSub ElseIf語句,實(shí)際完成的是塊If的嵌套,它和塊If嵌套的格式上有很大區(qū)別,ElseIf結(jié)構(gòu)只有一對If和EndIf語句。另外應(yīng)注意:【ElseIf】和【ElseIf】的區(qū)別。4.3行If語句

格式:If條件then語句1[Else語句2]

功能:當(dāng)條件滿足時,執(zhí)行語句1;條件不滿足時,執(zhí)行語句2。 從行If的格式和功能不難看出,行If語句是一種簡單的分支結(jié)構(gòu),只是把一個簡單的塊If結(jié)構(gòu)寫在一行中,減少了語句行,省略了“EndIf”的書寫。行If完全可以用塊If代替。 【例4.6】任意輸入3個數(shù),找出其中的最大值。程式代碼如下:

PrivateSubCommand1_Click()

DimaAsSingle,bAsSingle,cAsSingle,maxAsSinglea=Text1.Textb=Text2.Textc=Text3.Textmax=aIfb>maxThenmax=bIfc>maxThenmax=cText4.Text=maxEndSub4.4SelectCase語句

當(dāng)對一個運(yùn)算式的不同取值情況作不同處理時,用ElseIf語句程式結(jié)構(gòu)顯得較為雜亂,而用SelectCase語句將使程式的結(jié)構(gòu)更清晰,SelectCase語句又稱為情況語句。格式:SelectCase測試運(yùn)算式

Case運(yùn)算式列表1

語句塊1Case運(yùn)算式列表2語句塊2…Case運(yùn)算式列表n語句塊n[CaseElse語句塊n+1]EndSelect

功能:根據(jù)“測試運(yùn)算式”的值,選擇第一個符合條件的語句塊執(zhí)行。

SelectCase語句的執(zhí)行過程是:先求“測試運(yùn)算式”的值,然後順序測試該值符合哪一個Case子句中情況,如果找到了,則執(zhí)行該Case子句下麵的語句塊,然後執(zhí)行EndSelect下麵的語句;如果沒找到,則執(zhí)行CaseElse下麵的語句塊,然後執(zhí)行EndSelect下麵的語句。說明:

“測試運(yùn)算式”可以是數(shù)值型或字串型運(yùn)算式;

“運(yùn)算式列表”形式有以下3種:(1)一個運(yùn)算式或用逗號隔開的若干運(yùn)算式(2)運(yùn)算式1To運(yùn)算式2(3)Is關(guān)係運(yùn)算符運(yùn)算式

【例4.7】把例4.3中“鑒定”按鈕的代碼用SelectCase語句改寫。

PrivateSubCommand1_Click()

Dimscore!score=Text1.TextSelectCasescoreCaseIs>=90Text2.Text="優(yōu)秀"5.1迴圈概述

在實(shí)際工作中,常遇到一些操作過程不太複雜,但又需要反復(fù)進(jìn)行相同處理的問題,比如,統(tǒng)計(jì)本單位所有人員的工資,求全班同學(xué)各科的平均成績等等。這些問題的解決邏輯上並不複雜,但如果單純用順序結(jié)構(gòu)來處理,那將得到一個非常乏味且冗長的程式。例如,計(jì)算1~100所有奇數(shù)的平方和,如果用順序結(jié)構(gòu)來解決這個問題,我們就會給出下麵的程式:PrivateSubForm_Click()

Dims&,x%s=0x=1s=s+x^2x=x+2s=s+x^2x=x+2s=s+x^2……x=x+2'x的值累加到99s=s+x^2Print"1~100之間所有奇數(shù)的平方和=";sEndSub

由上面的例子不難看出,程式的絕大部分是在反復(fù)執(zhí)行兩條語句x=x+2和s=s+x^2,不同的是x的值在變化。程式當(dāng)然非常簡單易懂,但缺乏最基本的編程技巧。要想方便地解決這類問題,最好的辦法就是用迴圈語句。 所謂迴圈就是重複地執(zhí)行一組語句。 我們用迴圈語句解決上面的問題,程式非常簡短:PrivateSubForm_Click()

Dims&,x%s=0Forx=1To99Step2s=s+x^2NextxPrint"1~100所有奇數(shù)的平方和=";sEndSub

在此程式中,第4、5、6條語句構(gòu)成了一個迴圈,在迴圈過程中第5句被反復(fù)執(zhí)行了50次,從而計(jì)算出了1~100所有奇數(shù)的平方和。 通過上面的對比可知,迴圈結(jié)構(gòu)非常適合於解決處理的過程相同、處理的數(shù)據(jù)相關(guān),但處理的具體值不同的問題。我們把能夠處理這類問題的語句稱為迴圈語句。

VB提供了三種不同風(fēng)格的迴圈語句,它們分別是: (1)For…Next語句; (2)While…Wend語句; (3)Do…Loop語句。 我們將對這3種迴圈語句逐一介紹。5.2For迴圈For迴圈的一般格式如下:

For迴圈變數(shù)=初值To終值[Step步長][循環(huán)體]Next[迴圈變數(shù)]說明:1.格式中各項(xiàng)的說明

迴圈變數(shù):亦稱為迴圈控制變數(shù),必須為數(shù)值型。

初值、終值:都是數(shù)值型,可以是數(shù)值運(yùn)算式。

步長:迴圈變數(shù)的增量,是一個數(shù)值運(yùn)算式。一般來說,其值為正,初值應(yīng)小於終值;若為負(fù),初值應(yīng)大於終值。但步長不能是0。如果步長是1,Step1可略去不寫。

循環(huán)體:在For語句和Next語句之間的語句序列。

Next後面的迴圈變數(shù)與For語句中的迴圈變數(shù)必須相同。2.執(zhí)行過程

For迴圈語句的執(zhí)行過程如下: (1)系統(tǒng)將初值賦給迴圈變數(shù),並自動記下終值和步長。 (2)檢查迴圈變數(shù)的值是否超過終值。如果超過就結(jié)束迴圈,執(zhí)行Next後面的語句;否則,執(zhí)行一次循環(huán)體。 (3)執(zhí)行Next語句,將迴圈變數(shù)增加一個步長值再賦給迴圈變數(shù),轉(zhuǎn)到(2)繼續(xù)執(zhí)行。 以上執(zhí)行過程用流程圖描述,如圖5-1所示。

這裏所說的“超過”有兩種含義,即大於或小於。當(dāng)步長為正值時,迴圈變數(shù)大於終值為“超過”;當(dāng)步長為負(fù)值時,迴圈變數(shù)小於終值為“超過”。 我們通過分析下麵的程式來進(jìn)一步理解For語句的執(zhí)行過程。

Forn=1To10Step3Printn,

Nextn具體執(zhí)行情況如下:第幾次迴圈 n 與終值比較 執(zhí)行循環(huán)體否

1 1 <10 執(zhí)行

2 4 <10 執(zhí)行

3 7 <10 執(zhí)行

4 10 =10 執(zhí)行

5 13 >10 停止執(zhí)行 上面程式的執(zhí)行結(jié)果為:

147103.注意事項(xiàng)

For語句和Next語句必須成對出現(xiàn),缺一不可,且For語句必須在Next語句之前。 迴圈次數(shù)由初值、終值和步長確定,計(jì)算公式為:迴圈次數(shù)=Int((終值-初值)/步長)+1

【例5.1】求N?。∟為自然數(shù))。 分析:由階乘的定義,我們可以得出N!=1*2*…*(N-2)*(N-1)*N=(N-1)!*N,也就是說,一個自然數(shù)的階乘,等於該自然數(shù)與前一個自然數(shù)階乘的乘積。程式如下:

PrivateSubForm_Click()

DimI%,f&,n%n=InputBox("輸入一個自然數(shù):","輸入提示","10")

f=1ForI=1Tonf=f*I

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論