第三章 VB的程序設計基礎
2.1 VB編碼規則
1. 語言元素
VB的語言基礎是BASIC語言,VB程序的語言元素主要由:
關鍵字(如: Dim、Print、Cls)
函數(如:Sin()、Cos()Sqr())
表達式(如:Abs(-23.5)+45*20/3 )
語句(如:X=X+5 、 IF……ELSE……END IF)等組成。
2. VB代碼書寫規則
。1) 程序中不區分字母的大小寫,Ab 與AB等效;
(2) 系統對用戶程序代碼進行自動轉換:
1) 對于VB中的關鍵字,首字母被轉換成大寫,其余轉換成小寫
2) 若關鍵字由多個英文單詞組成,則將每個單詞的首字母轉換成大寫
3) 對于用戶定義的變量、過程名,以第一次定義的為準,以后輸入的自動轉換成首次定義的形式
3. 語句書寫規則
(1)在同一行上可以書寫多行語句,語句間用冒號(:)分隔
(2)單行語句可以分多行書寫,在本行后加續行符:空格和下劃線 _
(3) 一行允許多達255個字符
4. 程序的注釋方式
(1)整行注釋一般以 Rem開頭,也可以用撇號 ';
(2)用撇號 ' 引導的注釋,既可以是整行的,也可以直接放在語句的后面,最方便;
(3)可以利用“編輯”工具欄的“設置注釋塊”、“解除注釋塊”來將設置多行注釋。
5. 保留行號和標號
VB源程序接受行號與標號,但不是必須的(早期的BASIC語言中必須用行號)。
標號是以字母開始以冒號結束的字符串,一般用在GOTO語句(現在很少用)中。
2.2 VB的語言基礎
1.數據類型
VB的標準數據類型
數據類型 |
關鍵字 |
類型符 |
前綴 |
存儲空間 |
范圍 |
數值數據類型 |
字節型 |
Byte |
|
Byt |
1 個字節 |
0 到 255 |
整型 |
Integer |
% |
Int |
2 個字節 |
-32,768 到 32,767 |
長整型 |
Long |
& |
Lng |
4 個字節 |
-2,147,483,648 到 2,147,483,647 |
單精度型 |
Single |
! |
Sng |
4 個字節 |
負數:-3.402823E38 到 -1.401298E-45;正數:1.401298E-45 到 3.402823E38 |
雙精度型 |
Double |
# |
Dbl |
8 個字節 |
負數: -1.79769313486232E308
- 4.94065645841247E-324;
正數:4.94065645841247E-324
1.79769313486232E308 |
貨幣型 |
Currency |
@ |
Cur |
8 個字節 |
從 -922,337,203,685,477.5808
到 922,337,203,685,477.5807 |
邏輯型 |
Boolean |
|
Bln |
2 個字節 |
True 或 False |
日期型 |
Date |
|
Dtm |
8 個字節 |
100 年1月 1日 到 9999 年 12 月 31 日 |
對象型 |
Object |
|
Obj |
4 個字節 |
任何 Object 引用 |
變長字符型 |
String |
$ |
Str |
10 字節加字符串長度 |
0 到大約 20 億 |
定長字符型 |
String |
$ |
Str |
字符串長度 |
1 到大約 65,400 |
變體數字型 |
Variant |
|
Vnt |
16 個字節 |
任何數字值,最大可達 Double 的范圍 |
變體字符型 |
Variant |
|
Vnt |
22 個字節加字符串長度 |
與變長 String 有相同的范圍 |
注意:
1)VB中對沒有聲明的變量其缺省的數據類型是變體型,可以用來存儲各種數據,但所占用的內存比其它類型都多。為提高運行效率(整型效率較高),或達到一定的運算精確度(浮點型精度較高,但運行較慢),應合理的定義數據類型。
2) 邏輯型數據只有True 和False兩個值,轉換成整型時,True=-1 ,False=0,將其它類型轉換成邏輯型時,非0數轉換為True ,0轉換為False。
3) 字符型可以包括所有的西文字符和漢字,字符必須用雙引號括" "起來, 如:"abc123"
4)日期型數據按8字節的浮點數來存儲,日期型數表示方式有兩種:可以用號碼符#括起來,也可以用數字序列表示(小數點左邊的數字代表日期,右邊代表時間,0為午夜,0。5為中午12點,負數表示是1899年12月31日前的日期和時間)。
如:#3/22/2002# #2002-3-22 14:30:20#
Dim T As Date
T=-2.5
Print T ' 打印出來的結果是1899-12-28 12:00:00
5)任何數據類型的數組都需要 20 個字節的內存空間,加上每一數組維數占 4 個字節,再加上數據本身所占用的空間。數據所占用的內存空間可以用數據元數目乘上每個元素的大小加以計算。例如,以 4 個 2 字節之 Integer 數據元所組成的一維數組中的數據,占 8 個字節。這 8 個字節加上額外的 24 個字節,使得這個數組所需總內存空間為 32 個字節。
2. 變量與常量
(1)變量或常量的命名規則
1) 必須以字母或漢字開頭,由字母、漢字、數字或下劃線組成,長度≤255個字符;
2) 不能使用VB中的關鍵字,并盡量不與VB中標準函數名同名;如:Dim 、Sin
3)VB中不區分變量的大小寫,一般變量首字母用大寫,其余用小寫;常量全部用大寫字母表示
4)為了增加程序的可讀性,可在變量名前加一個縮寫的前綴來表明該變量的數據類型。
(2)變量聲明
1)用Dim語句進行顯式聲明
語句形式: Dim 變量名 [As 類型] 如: Dim intX As integer
說明:·如果沒有As 類型,則默認為變體類型。
·可在變量名后加類型符來代替As 類型 如: Dim intX%
·一條語句可以同時定義多個變量,但每個變量必須有自己的類型聲明,類型聲明不能共用;
·字符串變量根據其存放的長度是否固定,定義方法不同:
定長字符串: Dim strA As String*10
表示最多存放10個字符,如果賦值不足10個,則右補空;若多于10個,則多余部分截去。
不定長字符串:Dim strA As String ’最多可存放2MB個字符
2) 隱式聲明
VB中允許變量不經過聲明就直接使用,這種稱為隱式聲明,所有隱式聲明的變量都是變體型的。
隱式聲明容易造成錯誤,為了調試程序方便,一般對使用的變量都進行聲明,可以在通用聲明段使用Option Explicit 語句來強制顯式聲明所有變量。
(3)常量
1)直接常量
指在程序中直接給出值的數據,如:123、123&、123.45、1.234E2 、123D3分別表示整型、長整型、單精度浮點型(小數形式)、單精度浮點型(指數形式)、雙精度浮點型。
八進制常數: 在數值前加&O ,如 &O123
十六進制常數:在數值前加&H ,如&H123
2)用戶聲明的符號常量
用Const來聲明: Const 符號常量名 [As 類型] = 表達式
如:Const PI=3.14159 '聲明了常量PI,代表3.14159,單精度型
Const MAX As Integer=&O144 ''聲明了常量MAX,代表八進制數144,整型
Const COUNT#=45.67 '聲明了常量COUNT,代表45.67,雙精度型
3)系統提供的常量
系統定義的常量位于對象庫中,在對象瀏覽器中的Visual Basic(VB)和Visual Basic for Aplication(VBA)等對象庫中列出了VB的常量。這些常量可以與應用程序的對象、方法、屬性一起使用。
如:Form1.WindowsState=vbMaximized 表示將窗口極大化。
3. 運算符
(1) 算術運算符
運算符 |
含義 |
優先級 |
示例 |
結果 |
^ |
乘方 |
1 |
Ia^2 |
9 |
- |
負號 |
2 |
-iA |
-3 |
* |
乘 |
3 |
IA* iA* iA |
27 |
/ |
除 |
3 |
10/iA |
3.33333333333333 |
\ |
整除 |
4 |
10\iA |
3 |
Mod |
取模 |
5 |
10 Mod iA |
1 |
+ |
加 |
6 |
10+iA |
13 |
- |
減 |
7 |
IA-10 |
-7 |
說明:設表中的變量iA=3, 為整型。
算術運算符兩邊的操作數應該是數值型,若是數字字符或邏輯型,則自動轉換為數值類型后再運算。
(2) 字符串運算符
運算符 |
作用 |
區別 |
示例 |
結果 |
& |
將兩個字符串拼接起來 |
連接符兩旁的操作數不管是字符型還是數值型,系統先將操作數轉換成字符,然后再連接。 |
"123"&55
"abc"+12 |
"12355"
"abc12" |
+ |
連接符兩旁的操作數均為字符型;若均為數值型則進行算術加法運算;若一個為數字字符型,一個數值型,則自動將數字字符轉換為數值,然后進行算術加;若一個為非數字字符型,一個數值型,則出錯。 |
"123"+55
"abc"+12 |
178
出錯 |
(3) 關系運算符
運算符 |
含義 |
示例 |
結果 |
= |
等于 |
"ABCDE"="ABR" |
False |
> |
大于 |
"ABCDE">"ABR" |
False |
>= |
大于等于 |
"bc">="大小" |
False |
< |
小于 |
23<3 |
False |
<= |
小于等于 |
"23"<="3" |
True |
<> |
不等于 |
"abc"<>"ABC" |
True |
Like |
字符串匹配 |
"ABCDEFG" Like "*DE*" |
True |
Is |
對象引用比較 |
|
|
注意:
1) 如果兩個操作數都是數值型,則按其大小比較
2) 如果兩個操作數都是字符型,則按字符的ASCII碼值從左到右一一比較
3) 漢字字符大于西文字符
4) 關系運算符的優先級相同
5) VB6.0中Like運算符與通配符的使用:
?——表示任何單一字符
*——表示0個或多個字符
#——表示任何一個數字(0 - 9)
[字符列表]——表示字符列表中的任何單一字符
[!字符列表]—— 表示不在字符列表中的任何單一字符
(4) 邏輯運算符
運算符 |
含義 |
優先級 |
說明 |
示例 |
結果 |
Not |
取反 |
1 |
當操作數為假時,結果為真 |
Not F
Not T |
T
F |
And |
與 |
2 |
兩個操作數均為真時,結果才為真 |
T And T
F And F
T And F
F And T |
T
F
F
F |
Or |
或 |
3 |
兩個操作數中有一個為真時,結果為真 |
T Or T
F Or F
T Or F
F Or T |
T
F
T
T |
Xor |
異或 |
3 |
兩個操作數不相同,結果才為真,否則為假 |
T Xor F
T Xor T |
T
F |
Eqv |
等價 |
4 |
兩個操作數相同時,結果才為真 |
T Eqv F
T Eqv T |
F
T |
Imp |
蘊含 |
5 |
第一個操作數為真,第二個操作數為假時,結果才為假,其余都為真 |
T Imp F
T Imp T |
F
T |
說明:
1)若有多個條件時,And必須全部條件為真才為真;Or只要有一個條件為真就為真。
2)如果邏輯運算符對數值進行運算,則以數字的二進制值逐位進行邏輯運算。And運算常用于屏蔽某些位;Or運算常用于把某些位置1。
如:12 And 7 表示對1100與0111進行And運算,得到二進制值100,結果為十進制4。
3)對一個數連續進行兩次Xor操作,可恢復原值。在動畫設計中,用Xor可恢復原來的背景。
4.表達式
(1)表達式的組成
表達式由常量、變量、運算符、函數和圓括號按一定的規則組成,通過運算后有一個結果,運算結果的類型由數據和運算符共同決定。
(2)表達式的書寫規則
1)乘號不能省略
2)括號必須成對出現,均使用圓括號,可以嵌套,但必須配對。
3)表達式從左到右在同一基準上書寫,無高低、大小之分。
例:sqr((3*x+y)-z)/(x*y)^4
(3)不同數據類型的轉換
操作數的數據類型應該符合要求,不同的數據應該轉換成同一類型。在算術運算中,如果操作數的數據精度不同,VB規定運算結果采用精度較高的數據類型。
(4)優先級
同一表達式中,不同運算符的優先級是:算術運算符 > 字符運算符 > 關系運算符 > 邏輯運算符
注意:對于存在多種運算符的表達式,可增加圓括號改變優先級或使表達式更清晰。
2.3 VB的公共函數
1. 數學函數
VB中常用的數學函數
函數名 |
功能 |
示例 |
結果 |
Sqr(x) |
求平方根 |
Sqr(9) |
3 |
Log(x) |
求自然對數,x>0 |
Log(10) |
2.3 |
Exp(x) |
求以e為底的冪值,即求ex |
Exp(3) |
20.086 |
Abs(x) |
求x的絕對值 |
Abs(-2.5) |
2.5 |
Hex[$](x) |
求x的十六進制數,返回的是字符型值 |
Hex[$](28) |
"1C" |
Oct[$](x) |
求x的八進制數,返回的是字符型值 |
Oct[$](10) |
"12" |
Sgn(x) |
求x的符號, 當x>0, 返回1 ;x=0, 返回0; x<0, 返回-1 |
Sgn(15) |
1 |
Rnd(x) |
產生一個在(0,1)區間均勻分布的隨機數,每次的值都不同;若x=0,則給出的是上一次本函數產生的隨機數 |
Rnd(x) |
0-1之間的數 |
Sin(x) |
求x的正弦值,x的單位是弧度 |
Sin(0) |
0 |
Cos(x) |
求x的余弦值,x的單位是弧度 |
Cos(1) |
0.54 |
Tan(x) |
求x的正切值,x的單位是弧度 |
Tan(1) |
1.56 |
Atn(x) |
求x的反正切值,x的單位是弧度,函數返回的是弧度值 |
Atn(1) |
0.79 |