- Visual Basic從入門到精通(第2版)
- 龍馬高新教育策劃 國家863中部軟件孵化器編著
- 1766字
- 2019-01-02 05:00:27
第2章Visual Basic的入門鑰匙—Visual Basic語言基礎(chǔ)
本章視頻教學(xué)錄像:1小時5分鐘
對任何新知識的學(xué)習(xí)都是開始時最難,雖然Visual Basic一向以易學(xué)易用而著稱,但是對那些從未接觸過Visual Basic的初學(xué)者來說,由于編碼需要遵循一定的規(guī)則,剛開始難免會因各種各樣的語言規(guī)則,不知從何入手。為了學(xué)好如何應(yīng)用Visual Basic程序進(jìn)行編碼,就必須要把基本的語言使用規(guī)則基礎(chǔ)打好。本章將帶領(lǐng)讀者從Visual Basic的語言基礎(chǔ)開始循序漸進(jìn)地學(xué)習(xí)。介紹Visual Basic語言的基本元素和程序控制語句,主要包括標(biāo)識符、數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、數(shù)組、程序控制結(jié)構(gòu)和代碼編寫規(guī)則等。
本章要點(已掌握的在方框中打鉤)
□ 了解標(biāo)識符和常用數(shù)據(jù)類型
□ 了解常量和變量
□ 掌握各種運(yùn)算符
□ 熟悉表達(dá)式的用法
□ 了解代碼編寫規(guī)范
2.1 標(biāo)識符和數(shù)據(jù)類型
本節(jié)視頻教學(xué)錄像:22分鐘
標(biāo)識符和數(shù)據(jù)類型是Visual Basic程序的基本構(gòu)成要素,本節(jié)對這兩個概念進(jìn)行闡述。
2.1.1 標(biāo)識符
標(biāo)識符是用戶在編程時定義的名稱,包括常量、變量、過程、函數(shù)和類等,在實際操作這些變量的時候我們需要為每個變量起一個名字以示區(qū)別。這就像在日常生活中每一個人、每一個商店都會有一個名字一樣。
在Visual Basic中有兩種標(biāo)識符,分別是系統(tǒng)關(guān)鍵字和用戶自定義標(biāo)識符。
系統(tǒng)關(guān)鍵字是Visual Basic中擁有固定含義,不能被重新定義的標(biāo)識符。其實在現(xiàn)實生活中也有這樣的關(guān)鍵詞,如計算機(jī)、手機(jī)、衛(wèi)生間,這些詞已經(jīng)被明確賦予了它的意義,我們起名字的時候就不會再使用這些詞。
Visual Basic中常見的關(guān)鍵字如表所示。

2.1.2 數(shù)據(jù)類型
數(shù)據(jù)類型是用抽象的方式來描述客觀事物的一種定義,其不同的數(shù)據(jù)類型定義了不同的數(shù)據(jù)存儲方式。計算機(jī)語言正是通過選擇不同的數(shù)據(jù)類型來準(zhǔn)確地對客觀事物進(jìn)行描述。數(shù)據(jù)類型的整體分類如圖所示。

圖中對Visual Basic 6.0中數(shù)據(jù)類型的整體情況進(jìn)行了描述。在細(xì)節(jié)方面,考慮到數(shù)據(jù)的運(yùn)算效率和精度要求,又將數(shù)值型分為整型、長整型、單精度型、雙精度型、字節(jié)型和貨幣型等。各類型的字節(jié)取值和所占空間范圍如表所示。

下面對表中的各種數(shù)據(jù)類型進(jìn)行介紹。
1. 數(shù)值數(shù)據(jù)類型(Numeric)
數(shù)值數(shù)據(jù)類型包括整型(Integer)、長整型(Long)、單精度浮點型(Single)、雙精度浮點型(Double)和貨幣型(Currency)。要提高程序的運(yùn)行性能,就要具體數(shù)據(jù)具體對待。如果變量中存放的數(shù)據(jù)是整數(shù),就要將其聲明為整型(Integer)或者長整型(Long);如果變量中存放的數(shù)據(jù)是帶小數(shù)點的數(shù)字,就應(yīng)該將變量聲明為單精度浮點型(Single)、雙精度浮點型(Double)或者貨幣型(Currency)。
例如:
Dim s As lnteger s=3.65 print s
運(yùn)行程序后,會在窗體中直接輸出一個數(shù)值4。這里需要注意的是,將整型或貨幣型的數(shù)值賦給整型變量后,VB會自動對數(shù)值的小數(shù)部分進(jìn)行四舍五入。
2. 字節(jié)數(shù)據(jù)類型(Byte)
如果變量中存放的是二進(jìn)制數(shù),則要將變量聲明為字節(jié)數(shù)據(jù)類型(Byte)。特別是對變量中存儲的二進(jìn)制數(shù)據(jù)需要進(jìn)行類型轉(zhuǎn)換。如果不用字節(jié)數(shù)據(jù)類型存儲這些二進(jìn)制數(shù),可能會導(dǎo)致二進(jìn)制數(shù)據(jù)的丟失或損毀。
提示
在計算機(jī)中通常把用來存儲一個英文字母的8個二進(jìn)制位叫作一個字節(jié)。一個英文字母(不分大小寫)占一個字節(jié)的空間,一個中文漢字占兩個字節(jié)的空間。符號中英文標(biāo)點占一個字節(jié),中文標(biāo)點占兩個字節(jié)。
3. 字符串?dāng)?shù)據(jù)類型(String)
字符串是指除了雙引號和回車符號之外的所有可以輸出的字符。字符串包括在雙引號中,如果變量中保存的數(shù)據(jù)都是字符串(例如人名),就應(yīng)該把變量聲明為字符串類型。在Visual Basic中,String變量或參數(shù)默認(rèn)是一個可變長度的字符串,隨著對字符串賦予新數(shù)據(jù),它的長度可增可減。當(dāng)然,也可以聲明字符串具有固定長度,例如:
Dim Name As String * 20
這條語句聲明變量Name是一個長度為20個字符的定長字符串常量。如果你聲明了一個定長字符串變量的長度后實際存儲的字符長度小于聲明長度,Visual Basic會自動將剩余的部分填充空格;如果賦予字符串的長度超過了聲明長度,Visual Basic會自動將超出長度部分的字符截去。
4. 布爾數(shù)據(jù)類型(Boolean)
布爾數(shù)據(jù)類型又叫作邏輯型數(shù)據(jù)。如果變量的值只有兩個對立的狀態(tài),如“True”或“False”、“Yes”或“No”,就應(yīng)該將變量聲明為布爾數(shù)據(jù)類型。在Visual Basic中布爾數(shù)據(jù)類型的默認(rèn)值為False。
提示
布爾是英國的數(shù)學(xué)家和邏輯學(xué)家,1815年11月2日生于林肯,1864年12月8日卒于愛爾蘭的科克。為了紀(jì)念他在邏輯學(xué)方面的卓越貢獻(xiàn),人們將表示邏輯變量的值以他的名字命名。
5. 日期型數(shù)據(jù)類型(Date)
如果變量中要保存的數(shù)據(jù)是用來表示日期和時間的,就應(yīng)該將變量聲明為日期數(shù)據(jù)類型。日期數(shù)據(jù)類型在代碼中進(jìn)行賦值的時候,必須用兩個英文“#”號括起來。例如:
Dim s As Date s = #11/23/2009# Print s
最終的結(jié)果將會在窗體上顯示“2009-11-23”字樣。
提示
當(dāng)其他數(shù)值類型的數(shù)據(jù)轉(zhuǎn)換為日期數(shù)據(jù)類型的時候,小數(shù)點左邊的值表示日期,小數(shù)點右邊的值表示時間。如果是負(fù)數(shù),則表示公元1899年12月31日前的日期。
6. 對象數(shù)據(jù)類型(Object)
對象數(shù)據(jù)類型(Object)的變量作為32位(4個字節(jié))地址來存儲,通過這個地址可以引用當(dāng)前應(yīng)用程序或者其他應(yīng)用程序中的對象。
7. 變體型數(shù)據(jù)類型(Variant)
變體型數(shù)據(jù)類型(Variant)變量能夠存儲所有系統(tǒng)定義類型的數(shù)據(jù)。如果將其賦予Variant變量,則不必在這些數(shù)據(jù)的類型間進(jìn)行轉(zhuǎn)換,Visual Basic會自動完成任何必要的轉(zhuǎn)換。
提示
在Visual Basic 6.0中可以將所有的變量都設(shè)置為變體類型,同時這似乎看起來也很方便,不用再去麻煩地定義其他的數(shù)據(jù)類型。然而,在程序運(yùn)行的時候,因為程序變量的空間分配、數(shù)據(jù)類型的轉(zhuǎn)換等都會占用大量的系統(tǒng)空間,因此不建議讀者在編寫代碼的時候使用變體型數(shù)據(jù)類型,而應(yīng)根據(jù)實際需求,合理地使用變量類型。
8. 自定義數(shù)據(jù)類型
上面介紹的都是Visual Basic中的基本數(shù)據(jù)類型,但是在實際編程中這些基本數(shù)據(jù)類型并不能滿足所有的需求。例如,我們設(shè)計了一個員工薪水計算的程序,在這個程序中,需要用一種數(shù)據(jù)類型來描述員工的個人信息,而員工的個人信息是由姓名、性別和職位等很多項組成的。沒有一種基本數(shù)據(jù)類型可以直接描述這個數(shù)據(jù)類型。這個時候可以通過將基本數(shù)據(jù)類型予以組合來創(chuàng)建一個符合我們自身需求的新的數(shù)據(jù)類型,這種數(shù)據(jù)類型就是自定義數(shù)據(jù)類型。自定義數(shù)據(jù)類型通過Type語句來實現(xiàn)。
語法格式如下所示。
Type自定義類型名 元素名1 As類型名 元素名2 As類型名 … 元素名n As類型名 End Type
【范例2-1】 根據(jù)自身需求,自定義一個employee變體類型,包含員工的姓名、性別、年齡和職位等字段。
⑴ 啟動Visual Basic 6.0,在彈出的【新建工程】對話框中選擇【標(biāo)準(zhǔn)EXE】圖標(biāo),然后單擊【打開】按鈕。
⑵ 在【Form1】窗體上單擊右鍵,在彈出的快捷菜單中選擇【查看代碼】菜單項,進(jìn)入代碼窗口。


技巧
用鼠標(biāo)雙擊窗體或者選擇【運(yùn)行】菜單的【啟動】命令,也可以進(jìn)入代碼窗口。
⑶ 在代碼窗口的頂端輸入以下代碼(代碼2-1-1.txt)。
01 Private Type employee '自定義員工的數(shù)據(jù)類型 02 name As String '員工姓名 03 sex As String '員工性別 04 age As lnteger '員工年齡 05 position As String '員工職位 06 End Type '結(jié)束定義 07 Dim employee1 As employee '聲明一個自定義類型的變量
⑷ 在代碼窗口中選擇【Form】窗體的【Click】事件。

⑸ 輸入以下代碼(代碼2-1-2.txt)。
01 Private Sub Form_Click() 02 employee1.name="王小強(qiáng)" '為employee1對象的name成員賦值 03 employee1.sex="男" '為employee1對象的sex成員賦值 04 employee1.age="25" '為employee1對象的age成員賦值 05 employee1.position="社長" '為employee1對象的position成員賦值 06 Print"員工信息"'輸出標(biāo)題 07 Print '輸出空行 08 Print '輸出空行 09 Print"姓名:"&employee1.name '輸出姓名 10 Print"性別:"&employee1.sex '輸出性別 11 Print"年齡:"&employee1.age '輸出年齡 12 Print"職位:"&employee1.position '輸出職位 13 End Sub
【運(yùn)行結(jié)果】
保存程序,單擊【啟動】按鈕,運(yùn)行程序。用鼠標(biāo)單擊窗體,結(jié)果如圖所示。


2.2 常量和變量
本節(jié)視頻教學(xué)錄像:17分鐘
在Visual Basic中對數(shù)據(jù)的操作離不開常量和變量。那什么是變量,什么是常量,常量和變量各有什么特點,在操作常量和變量的時候需要注意些什么?本節(jié)將介紹相關(guān)內(nèi)容。
2.2.1 常量
常量是指在程序運(yùn)行過程中其值不變的數(shù)字、字符或字符串。用戶在編程時使用的常數(shù)就是一種常量。有的讀者可能會有這樣的疑問,如果在編程的時候需要使用某個具體數(shù)字,比如10,那么直接寫上10不就好了,為什么還要先定義一個常量,再把10賦給這個常量,然后使用這個常量,這不是多此一舉嗎?
不,常量的用途自有它的微妙之處。
⑴ 如果直接使用數(shù)值來編寫表達(dá)式,計算結(jié)果當(dāng)然不會有任何問題。但是如果使用的這個數(shù)值變了,比如以前是10,現(xiàn)在變成20了,那么就要在這個程序中將所有使用到這個數(shù)值的地方都修改掉。如果我們事先定義一個常量,然后在所有使用這個數(shù)值的地方都使用這個常量,那么只需要把這個常量的值從10改成20就可以了。
⑵ 使用常量能夠增強(qiáng)程序的可讀性。如果不用一些有實際意義的名字來代替那些數(shù)字,很難說清楚在程序中某個地方的數(shù)字10和另外一個地方的數(shù)字10有什么區(qū)別,究竟各是什么意義。二者的不同之處如下面兩個圖所示。

不定義常量的修改方法

定義常量的修改方法
Visual Basic中的常量有兩種形式:直接常量和符號常量。
1. 直接常量
直接常量實際上就是所賦的值為基本類型的常量,主要有字符串常量、數(shù)值常量、布爾常量,以及日期常量等。
⑴ 字符串常量
字符串常量是用雙引號括起來的,除了雙引號、回車和換行符之外的所有字符定義的常量。如果雙引號內(nèi)沒有任何字符,并不表示這個常量不存在,只是表明這是一個內(nèi)容為空的字符串,我們把它叫作空字符串。
⑵ 數(shù)值常量
數(shù)值常量就是值為數(shù)值的常量。常見的5種數(shù)值常量有整數(shù)常量、長整型常量、定點數(shù)常量、浮點數(shù)常量和字節(jié)數(shù)常量。
⑶ 布爾常量
布爾常量就是取值為布爾值的常量,即只有True和False兩個取值的常量。
⑷ 日期常量
日期常量是所取值為表示日期時間的值的常量。
2. 符號常量
符號常量分為系統(tǒng)內(nèi)部定義常量和用戶自定義常量兩種。
⑴ 系統(tǒng)內(nèi)部定義常量
在Visual Basic中內(nèi)置了一些經(jīng)常使用的常量,通常這些常量以字母“vb”作為前綴,如vbCalendar、vbCallType等。
① 打開Visual Basic開發(fā)環(huán)境,按【F2】快捷鍵或者選擇【視圖】菜單中的【對象瀏覽器】菜單項,打開【對象瀏覽器】窗口。

② 在庫選擇下拉列表中選擇【VB】或者【VBA】選項,就可以看到很多的系統(tǒng)內(nèi)部定義常量。

⑵ 用戶自定義常量
如果用戶覺得系統(tǒng)內(nèi)部定義常量不能滿足自己的需求,可以通過一定的規(guī)則創(chuàng)建屬于自己的符號常量。在Visual Basic中,可使用Const語句創(chuàng)建一個符號變量。
語法:
[Private|Public] Const <常量名> [As類型] = <表達(dá)式>
語句前面的Private或Public是定義的這個常量的作用域,其中Private表示定義的常量只能在該常量所在模塊內(nèi)使用,而Public則表示定義的常量可以被該常量所在模塊之外的其他模塊使用。
常量名:指定常量名稱
Const:常量定義關(guān)鍵字。
As:指定常量的類型。
表達(dá)式:指定常量定義的數(shù)值常數(shù)、字符串常數(shù)或者由運(yùn)算符組成的表達(dá)式。如果是數(shù)值常數(shù),不僅可以使用十進(jìn)制,還可以使用十六進(jìn)制(數(shù)值前加“&H”)和八進(jìn)制(數(shù)值前加“&O”)。
例如:
Const s As String="木木" '定義字符型常量 Const s As lnteger=100 '定義整型常量
【語法詳解】
常量不同于變量,一旦定義了一個常量,這個常量就會一直占據(jù)一定的內(nèi)存空間。從程序執(zhí)行效率的角度考慮,不要在程序中定義不需要使用的常量。
2.2.2 變量
在Visual Basic中,變量是指在程序運(yùn)行的過程中,具有特定類型的可以改變的數(shù)字、字符或字符串。
在我們編寫程序時,有時某個值是不確定的或者是需要在程序運(yùn)行中由用戶指定的,這時我們可以通過定義一個變量來寫出運(yùn)算表達(dá)式,而不必知道這個值是多少。

例如要編寫一個根據(jù)員工工作年數(shù)來計算獎金的程序,計算公式是:獎金=1000×工作年數(shù)。因為每個人的工作年數(shù)是不同的,所以每個人的獎金也是不一樣的,這時就可以把工作年數(shù)定義為一個變量,不同的工作年數(shù)會計算出不同的獎金數(shù)。
1. 變量的類型
根據(jù)變量的作用范圍,可以分為全局變量、模塊/窗體變量和局部變量等3類。
⑴ 全局變量
在整個程序中都可以使用的變量。定義一個全局變量的語法為:
Public變量名 [As類型]
⑵ 模塊/窗體變量
作用范圍比全局變量要小一些。模塊/窗體變量可以在變量所在的模塊或窗口中使用。在程序的“通用聲明”部分使用Dim或者Private語句就可以定義一個模塊/窗體變量。定義一個模塊/窗體變量的語法為:
Private變量名 [As類型]
⑶ 局部變量
局部變量的作用范圍最小,只能在變量所在的過程中使用。在程序的某個過程中使用Dim或者Static語句就可以定義一個局部變量。局部變量雖然作用范圍比較小,但是在自己的作用范圍內(nèi)絕對是“地頭蛇”。如果在某個局部變量外部有一個和它同名的變量,在該局部變量的作用范圍內(nèi)起作用的將是這個局部變量。
2. 如何聲明一個變量
使用Dim或Static語句進(jìn)行顯式聲明。
⑴ 使用Dim語句聲明
語法:
Dim變量名 [As類型]
使用Dim語句聲明的變量作用范圍取決于Dim語句所在的位置。如果Dim語句是在某個過程內(nèi),那么聲明的變量就是該過程中的局部變量;如果Dim語句是在某個窗體或模塊的“通用聲明”部分,那么聲明的變量就是一個模塊/窗體變量。
⑵ 使用Static語句聲明
語法:
Static變量名 [As類型]
使用Static定義的變量叫作靜態(tài)變量。一個變量除了有它的作用范圍之外,還有一個屬性就是它的生命周期或者叫作存活時間。一旦一個變量的生命周期結(jié)束,那么這個變量就不存在了,它所占據(jù)的內(nèi)存空間也會被釋放。一個局部變量如果不是靜態(tài)的,那么它所在過程的代碼執(zhí)行完畢這個變量的生命周期就結(jié)束了,再次執(zhí)行這段代碼的時候,這個變量就會重新開始一個新的生命周期。靜態(tài)變量所在過程的代碼執(zhí)行完畢生命周期并不會結(jié)束。靜態(tài)變量和非靜態(tài)變量的區(qū)別就好比買房和租房,如果房子是自己買的,那么即使外出度假時房子空閑也不會有人占有這個房子;而租房,租期滿了如果不續(xù)租,房子就會被房東收回,如果續(xù)租就會重新開始一個新的租期。下面通過一段代碼來看看靜態(tài)變量和非靜態(tài)變量的區(qū)別。
Private Sub Command1_Click() Static m As lnteger '定義一個靜態(tài)變量 Dim n As lnteger '定義一個內(nèi)部變量
m=m+1 '讓靜態(tài)變量值加1 n=n+1 '讓內(nèi)部變量值加1 End Sub
此段代碼在第1次執(zhí)行的時候,因為變量m和n都沒有被賦值,所以m和n都是它們的默認(rèn)初始值0。運(yùn)行結(jié)束后m和n的值都是1。
當(dāng)此段代碼第2次被執(zhí)行的時候,因為m是靜態(tài)變量,所以m的生命周期并沒有結(jié)束,它的值還是第1次執(zhí)行后的1。因為n不是靜態(tài)變量,所以第1次執(zhí)行結(jié)束它的生命周期就結(jié)束了,當(dāng)?shù)?次執(zhí)行的時候,它會重新開始一個新的生命周期,n會被再次賦予默認(rèn)初始值0。所以第2次執(zhí)行后,m為2,n為1。
隱式聲明就是不經(jīng)聲明直接使用,此時Visual Basic將會根據(jù)所賦予的值自動設(shè)置它的類型。例如:
x=1 'x為整型 Name = "cat" 'Name為字符串型
隱式聲明看起來似乎更加方便,但隱式聲明出現(xiàn)的問題往往是最棘手的,因為它產(chǎn)生的問題很難被發(fā)現(xiàn),而且編譯器也不會報錯。隱式聲明最大的問題恰恰源自它的優(yōu)點:不用經(jīng)過聲明可以在代碼中直接使用。我們來看下面的代碼。
Private Sub Command1_Click() cat=6 '為沒有聲明的變量cat賦值 n=car '為沒有聲明的變量n賦值car End Sub
首先,我們不經(jīng)聲明直接使用了變量cat并將它賦值為6,然后想把cat的值也就是6賦給變量n,可是一不小心把cat寫成了car,程序就會認(rèn)為我們不經(jīng)聲明又直接使用了一個變量car,于是程序就又新建了一個變量car,并用默認(rèn)值給這個新建的變量賦值。
這時候變量n的值已經(jīng)不是6了,如果再使用變量n進(jìn)行各種計算,就會出現(xiàn)很多出乎意料的結(jié)果,而程序依然能夠運(yùn)行,并且不會報錯。
注意
在編程時應(yīng)盡量少用隱式聲明,以免產(chǎn)生程序在結(jié)果有誤時仍可以運(yùn)行的情況。
使用類型說明符直接聲明一個變量的語法為:
<變量名>類型符
在使用一個變量之前并不必先聲明這個變量,Visual Basic會用變量的名字自動創(chuàng)建一個變量。
使用隱式聲明的變量很危險,我們可以使用強(qiáng)制顯式聲明來解決這個問題。一旦開啟了強(qiáng)制顯式聲明功能,如果沒有聲明一個變量就使用,編譯器就會報錯。可以通過以下兩種方式開啟強(qiáng)制顯式聲明。
⑴ 通過【選項】對話框設(shè)置強(qiáng)制顯式聲明
選擇【工具】菜單下的【選項】菜單項,彈出【選項】對話框,選擇【編輯器】選項卡,選中【要求變量聲明】復(fù)選框,即可打開強(qiáng)制顯式聲明功能。

⑵ 代碼聲明
在代碼窗口中的聲明部分手動輸入強(qiáng)制顯式聲明變量語句(Option Explicit)。

2.3 運(yùn)算符
本節(jié)視頻教學(xué)錄像:12分鐘
運(yùn)算符就是在Visual Basic中執(zhí)行某種運(yùn)算功能的符號。在Visual Basic中包括算術(shù)運(yùn)算符、賦值運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、連接運(yùn)算符和特殊運(yùn)算符等。
2.3.1 算術(shù)運(yùn)算符
Visual Basic提供有非常豐富的算術(shù)運(yùn)算符,使用這些運(yùn)算符能夠?qū)崿F(xiàn)一些非常復(fù)雜的數(shù)學(xué)運(yùn)算。下表按照運(yùn)算優(yōu)先級高低順序列出了Visual Basic中的算術(shù)運(yùn)算符及其功能。

2.3.2 賦值運(yùn)算符
Visual Basic中的賦值運(yùn)算符是“=”,在這里這個等號并不是平時數(shù)學(xué)運(yùn)算中的等號,它表示將等號右邊的值賦給等號左邊的變量。
賦值運(yùn)算表達(dá)式是:
<變量名> = <要賦的值>
變量名:可以是變量、數(shù)組或者對象的某個屬性。
要賦的值:可以是常數(shù)、變量、表達(dá)式、函數(shù)或者對象的屬性等,但是它必須有確定的值。
例如:
String ="我愛VB"
表示將字符串“我愛VB”賦給變量String。這里需要注意的是,在賦值的時候,等號兩邊的數(shù)據(jù)類型要匹配。
2.3.3 關(guān)系運(yùn)算符
關(guān)系運(yùn)算符又叫作比較運(yùn)算符。關(guān)系運(yùn)算是通過比較兩個表達(dá)式之間的關(guān)系,最終返回一個布爾值類型的運(yùn)算結(jié)果。關(guān)系運(yùn)算符之間的優(yōu)先級是相同的。下表列出了Visual Basic中的關(guān)系運(yùn)算符。

提示
如果參與比較的兩個變量或表達(dá)式都是數(shù)值的話,就直接比較它們的大小;如果參與比較的兩個變量或表達(dá)式都是字符的話,則將字符轉(zhuǎn)換為ASCII碼并比較這兩個ASCII碼值。
2.3.4 邏輯運(yùn)算符
在Visual Basic中提供有進(jìn)行邏輯運(yùn)算的運(yùn)算符。邏輯運(yùn)算符的優(yōu)先級比算術(shù)運(yùn)算符和關(guān)系運(yùn)算符要低。下表列出了Visual Basic中的邏輯運(yùn)算符。

例如:邏輯值的運(yùn)算如下表所示。

2.3.5 連接運(yùn)算符
字符串連接運(yùn)算符的作用是把兩個字符串合并連接為一個字符串。Visual Basic有兩個字符串連接運(yùn)算符,分別是“&”和“+”,它們的優(yōu)先級是相同的。使用“&”運(yùn)算符時,如果兩個字符都是字符串,則直接將兩個字符串連接成一個新的字符串;如果兩個字符中有一個是數(shù)值,Visual Basic自動將這個數(shù)值轉(zhuǎn)換成為字符串,然后再連接成一個新字符串。
“+”運(yùn)算符在參與計算的兩個表達(dá)式都是字符串的時候和“&”運(yùn)算符的功能是一樣的,如果參與計算的另一個表達(dá)式中有一個是數(shù)值或者兩個都是數(shù)值,將進(jìn)行加法操作。因此,如果要做兩個字符串的連接操作,最好使用“&”運(yùn)算符,這樣就不會為到底進(jìn)行的是加法操作還是字符串連接操作而費(fèi)腦筋了。
2.3.6 特殊運(yùn)算符
除了以上運(yùn)算符外,在Visual Basic中還有兩個特殊運(yùn)算符:Is和Like。
⑴ Is運(yùn)算符
比較兩個對象的引用變量。
語法:
結(jié)果=對象引用變量1 ls對象引用變量2
如果對象引用變量1和對象引用變量2引用的是同一個對象,運(yùn)算結(jié)果為True,否則運(yùn)算結(jié)果為False,如圖所示。

⑵ Like運(yùn)算符
比較給定字符串是否和指定的模式相匹配。
語法:
結(jié)果=字符串Like模式
如果字符串匹配給定的模式,結(jié)果返回True,否則返回False,如圖所示。

下面列出了模式中的各種匹配條件。
⑴ ? 表示任意一個字符。
⑵ * 表示任意多個字符。
⑶ # 表示任意一個數(shù)字(0~9)。
⑷ [chars] 表示chars中出現(xiàn)的任意一個字符。
⑸ [!chars] 表示要匹配的字符串中不能出現(xiàn)chars中的任意一個字符。
例如:
result ="a" Like "[a-z]"
運(yùn)算結(jié)果為True,因為字符“a”是從a到z之間的一個字符。
2.3.7 運(yùn)算符的優(yōu)先級
運(yùn)算符的優(yōu)先級是指在計算表達(dá)式時運(yùn)算符執(zhí)行的先后順序。具有較高優(yōu)先級的運(yùn)算符先于較低優(yōu)先級的運(yùn)算符執(zhí)行。然而在實際開發(fā)中,我們要盡量避免使用運(yùn)算符的優(yōu)先級來指定運(yùn)算的順序,更好的方法是把要優(yōu)先計算的部分用圓括號括起來。例如表達(dá)式a + b * c,按照優(yōu)先級順序是要先計算b *c的值,然后再和a相加。如果要執(zhí)行a + b的計算,只需將表達(dá)式改為(a + b) * c就可以了。使用圓括號來指定優(yōu)先級有以下兩個優(yōu)點。
⑴ 不再需要記憶復(fù)雜的優(yōu)先級順序,也不用擔(dān)心由于優(yōu)先級順序記憶錯誤導(dǎo)致的計算錯誤。
⑵ 表達(dá)式更容易被人閱讀。在實際開發(fā)過程中,一個軟件往往需要多人共同完成,即使你能很準(zhǔn)確地記憶和使用運(yùn)算符的優(yōu)先級,并不能保證別人也能很準(zhǔn)確地記憶和使用運(yùn)算符的優(yōu)先級,所以使用圓括號指定程序運(yùn)算表達(dá)式的優(yōu)先級無疑是一種更加聰明和高效的方式。
例如:
S=(30-5<(8+6)And 9*8=72)
一個表達(dá)式中如果包含了多種運(yùn)算符,那么該運(yùn)算符應(yīng)該按以下次序進(jìn)行:算術(shù)表達(dá)式>字符串表達(dá)式>關(guān)系表達(dá)式>邏輯表達(dá)式。因此,上例中的運(yùn)算結(jié)果為Flase。
2.4 表達(dá)式
本節(jié)視頻教學(xué)錄像:3分鐘
表達(dá)式是由常量、變量和函數(shù)等用運(yùn)算符及圓括號連接而成的式子。表達(dá)式是構(gòu)成程序代碼的最基本要素之一。根據(jù)表達(dá)式的運(yùn)算結(jié)果,可將其分為算術(shù)表達(dá)式、字符串表達(dá)式和日期表達(dá)式等3種。
2.4.1 算術(shù)表達(dá)式
用算術(shù)運(yùn)算符和括號將常量、變量或函數(shù)等運(yùn)算對象連接起來的式子稱為算術(shù)表達(dá)式。Visual Basic中常用的算數(shù)運(yùn)算符有+(加)、-(減)、*(乘)、/(除)、\(整除)、mod(模運(yùn)算,求余數(shù))和^(冪)等。
2.4.2 字符串表達(dá)式
字符串表達(dá)式是用字符串運(yùn)算符將字符串連接起來的表達(dá)式。在Visual Basic中有兩個字符串運(yùn)算符:“&”和“+”。使用“&”運(yùn)算符時,如果兩個字符都是字符串,則直接將兩個字符串連接成一個新的字符串;如果兩個字符中有一個是數(shù)值,Visual Basic會自動將這個數(shù)值轉(zhuǎn)換為字符串,然后再連接成一個新字符串。“+”運(yùn)算符在參與計算的兩個表達(dá)式都是字符串的時候,和“&”運(yùn)算符的功能是一樣的;但如果參與計算的另一個表達(dá)式中有一個是數(shù)值或者兩個都是數(shù)值,則進(jìn)行加法操作。
2.4.3 日期表達(dá)式
當(dāng)我們需要計算或者使用時間和日期相關(guān)的數(shù)據(jù)時(例如,編寫一個程序需要每天在固定的時間備份數(shù)據(jù)),就要用到日期表達(dá)式。日期表達(dá)式主要是對Date(日期型)數(shù)據(jù)類型進(jìn)行計算。
2.5 代碼編寫規(guī)范
本節(jié)視頻教學(xué)錄像:9分鐘
代碼編寫規(guī)范在應(yīng)用程序的開發(fā)過程中有著極為重要的作用,有利于程序員對程序進(jìn)行讀寫,以及方便后期維護(hù),同時也是養(yǎng)成良好編程習(xí)慣的基礎(chǔ)。
2.5.1 Visual Basic 6.0標(biāo)識符的定義規(guī)則
在Visual Basic中有兩種標(biāo)識符,分別是系統(tǒng)關(guān)鍵字和用戶自定義標(biāo)識符。系統(tǒng)關(guān)鍵字是Visual Basic中擁有固定含義、不能被重新定義的標(biāo)識符。用戶自定義標(biāo)識符是用戶自己為變量通過一定的規(guī)則所定義的名稱。這就像我們中國人在起名字的時候要把姓放在前面,名字放在后面一樣,是一個命名規(guī)則。在Visual Basic中用戶自定義標(biāo)識符的命名規(guī)則如下。
⑴ 用戶自定義標(biāo)識符不能和系統(tǒng)關(guān)鍵字相同。
⑵ 在同一個作用域內(nèi)不允許出現(xiàn)相同名稱的用戶自定義標(biāo)識符。
⑶ 用戶自定義標(biāo)識符不區(qū)分字母大小寫。
⑷ 用戶自定義標(biāo)識符必須以字母開頭,后跟數(shù)字、英文大小寫字母、下劃線或美元符號“$”。
⑸ 長度不能超過255個字符,而控件、窗體、類和模塊等的名字不能超過40個字符。
2.5.2 Visual Basic 6.0中變量及控件的命名規(guī)則
變量必須要命名后才能賦值。在過程內(nèi)部聲明的變量,在該過程執(zhí)行時才存在。當(dāng)運(yùn)行過程結(jié)束時,該變量的值自動清除。變量命名必須符合以下規(guī)定。
⑴ 變量名必須以字母開頭,不能以數(shù)字或下劃線開始。
⑵ 變量不能包含嵌入的句號、空格或者其他停頓符號。
⑶ 變量長度不得超過255個字符。
⑷ 變量名不能是Visual Basic的保留字,如Name、For等。
⑸ 在編碼過程中,定義變量時選擇的變量名一定要遵循上述規(guī)則,否則系統(tǒng)會給出錯誤提示并以紅色字體顯示錯誤行。
在Visual Basic中,控件以圖標(biāo)的形式放在“工具箱”中,每種控件都有與之對應(yīng)的圖標(biāo)。啟動Visual Basic,工具箱位于窗體的左側(cè)。
1. 標(biāo)準(zhǔn)控件(內(nèi)部控件)Visual Basic 6.0的控件分為以下3類
⑴ 標(biāo)準(zhǔn)控件(也稱內(nèi)部控件)。
⑵ ActiveX控件。
⑶ 可插入對象。
2. 控件的命名和控件值
⑴ 在一般情況下,窗體和控件的命名都有默認(rèn)值,如Form1、Command1、Text1等。在應(yīng)用程序中使用約定的前綴,可以提高程序的可讀性。
⑵ 為了方便使用,Visual Basic為每個控件規(guī)定了一個默認(rèn)屬性,在設(shè)置這樣的屬性時,不必給出屬性名,通常把該屬性稱為控件的值。
2.5.3 程序書寫規(guī)則
按照程序書寫規(guī)則寫出的代碼,不僅清晰明了,更為重要的是具有很好的可讀性。因此,在編寫代碼的時候要遵循一定的書寫規(guī)則,如下所述。
⑴ 每條語句寫一行,一行最多允許有255個字符。
⑵ 如果需要在同一行中書寫多條語句,應(yīng)用英文狀態(tài)下的冒號“:”隔開。
⑶ 需要對較長的語句進(jìn)行換行,可在該語句行的末尾加入一個空格和一個下劃線。
例如:
lf a > 0 and b < 0 And c <> 0 And _ d = 0 Then
如果進(jìn)行換行時沒有輸入空格,系統(tǒng)會提示語法錯誤。例如在上面的語句中,如果沒有輸入空格,就會彈出一個警告對話框,提示編譯錯誤。

⑷ 為代碼添加注釋,以方便后期檢查或別人閱讀。
⑸ 在Visual Basic中不區(qū)分字母大小寫,所以cat、CAT和Cat都是一樣的,因此在定義變量的時候需要注意。
2.5.4 添加注釋
優(yōu)秀的程序員都具有在關(guān)鍵步驟下添加注釋的好習(xí)慣。添加注釋只是為了方便用戶看懂代碼而寫的,目的是提高代碼的可讀性,其本身對程序并沒影響。添加注釋需要在Visual Basic一條語句的最后添加注釋符(')或關(guān)鍵字Rem。注釋符在程序運(yùn)行時會通知Visual Basic自動忽略注釋符之后的語句。這樣便于日后檢查修改程序。
2.5.5 格式化縮排程序語句
為了進(jìn)一步增加程序的可讀性,建議程序員盡量養(yǎng)成程序縮排的好習(xí)慣。在書寫程序時,可以采用Tab鍵手工對程序進(jìn)行縮排,也可以通過編輯工具欄中的“凸出”和“縮進(jìn)”命令進(jìn)行編排。例如:
沒有采用縮排的代碼。
01 Private Sub Command1_Click() 02 Dim i,j As lnteger'定義兩個整型變量 03 For i=1 To 9 '用For循環(huán)打印9行內(nèi)容 04 j=1 '為變量j賦初值 05 Do While j<=l '用Do循環(huán),打印每一列中的內(nèi)容 06 Print i;"*";j;"=";i*j, '輸出每一列的內(nèi)容 07 j=j+1 '增加行數(shù) 08 Loop '滿足條件,繼續(xù)內(nèi)部循環(huán) 09 Print '打印空行,起換行作用 10 Next i '滿足條件,繼續(xù)外部循環(huán)
11 End Sub
采用縮排的代碼。
01 Private Sub Command1_Click() 02 Dim i,j As lnteger '定義兩個整型變量 03 For i=1 To 9 '用For循環(huán)打印9行內(nèi)容 04 j=1 '為變量j賦初值 05 Do While j<=l '用Do循環(huán),打印每一列中的內(nèi) 06 Print i;"*";j;"=";i*j, '輸出每一列的內(nèi)容 07 j=j+1 '增加行數(shù) 08 Loop '滿足條件,繼續(xù)內(nèi)部循環(huán) 09 Print '打印空行,起換行作用 10 Next i '滿足條件,繼續(xù)外部循環(huán) 11 End Sub
對沒有采用縮排格式的代碼來說,讀起來有點找不到“北”的感覺,在沒有添加注釋的情況下,只有一句一句進(jìn)行分析才明白代碼的最終目的是什么。而對采用縮排格式的代碼來說,很清晰地就能分析出來,代碼中主要分為內(nèi)部循環(huán)和外部循環(huán),其中內(nèi)循環(huán)的作用和外循環(huán)的作用也一眼即可明了。
2.6 高手點撥
本節(jié)視頻教學(xué)錄像:2分鐘
對于從未接觸過Visual Basic的初學(xué)者來說,要想快速學(xué)好Visual Basic,就要從Visual Basic的語言基礎(chǔ)開始循序漸進(jìn)地學(xué)習(xí)。在Visual Basic的語言基礎(chǔ)學(xué)習(xí)過程中要以下注意內(nèi)容。
⑴ 標(biāo)識符的定義規(guī)則。
⑵ 各種數(shù)據(jù)類型特點和作用。
⑶ 變量和常量的應(yīng)用。
⑷ 運(yùn)算符的作用和優(yōu)先級。
作為初學(xué)者,只有對上述幾點做到了然于胸,才能讀懂和編寫基本的程序。
2.7 實戰(zhàn)練習(xí)
一、思考題
1. 用戶自定義標(biāo)識符的命名規(guī)則是什么?
2. 使用圓括號來指定優(yōu)先級時有哪些優(yōu)點?
二、上機(jī)題
交換兩個變量的值,寫出相應(yīng)的語句。
- 大前端三劍客:Vue+React+Flutter
- 企業(yè)性能測試:體系構(gòu)建、落地指導(dǎo)與案例解讀
- JavaScript框架設(shè)計
- 掌握分布式跟蹤:微服務(wù)和復(fù)雜系統(tǒng)性能分析
- 業(yè)務(wù)驅(qū)動的推薦系統(tǒng):方法與實踐
- 移動Web實現(xiàn)指南:面向移動設(shè)備的網(wǎng)站優(yōu)化、開發(fā)和設(shè)計
- iOS移動開發(fā)從入門到精通
- 架構(gòu)基礎(chǔ):從需求到架構(gòu)
- 中國軟件工程師:工作、生活與觀念
- 搜索架構(gòu)之道:App中的搜索系統(tǒng)設(shè)計與優(yōu)化實踐
- 計算機(jī)網(wǎng)絡(luò)系統(tǒng)集成技術(shù)基礎(chǔ)與解決方案
- Unity 2017經(jīng)典游戲開發(fā)教程:算法分析與實現(xiàn)
- 鋒利的jQuery
- Spring Boot+Vue 3大型前后端分離項目實戰(zhàn)
- AR與VR開發(fā)實戰(zhàn)