




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Visual
Basic程序設(shè)計教程CHAPTER第第三三章章VVBB程程序序設(shè)設(shè)計計語語言言基基礎(chǔ)礎(chǔ)VB程序的書寫規(guī)則與調(diào)試方法VB中的數(shù)據(jù)類型變量和常量3.13.23.33.43.5運算符和表達式常用內(nèi)部函數(shù)任何程序在運行時都離不開數(shù)據(jù),有些數(shù)據(jù)在程序運行中不會發(fā)生變化,還有些數(shù)據(jù)會發(fā)生變化。這就需要使用常量與變量。此外,在描述不同種類型的信息時,需要的數(shù)據(jù)也不一樣,因而數(shù)據(jù)又有不同的類型。SectionVB程序的書寫規(guī)則與調(diào)試方法VB程序不區(qū)分英文字母大小寫程序語句書寫要點為程序增加注釋VB程序調(diào)試入門3.1程序的書寫規(guī)則與調(diào)試方法3.1.1
VB程序不區(qū)分英文字母大小寫在VB中,系統(tǒng)對變量、常量、命令等標(biāo)識符中的英文字母均不區(qū)分大小寫。但是,為了使程序清晰易讀,強烈建議讀者恰當(dāng)使用大小寫。例如:Dim
strC_1
As
String第頁共頁113"定義字符串變量strC_1,“str”為數(shù)據(jù)類型前綴,小寫,符合規(guī)范"定義整型變量INTI_1,“INT”為數(shù)據(jù)類型前綴,通常應(yīng)小寫,故不符合規(guī)范Dim
INTI_1
As
String3.1程序的書寫規(guī)則與調(diào)試方法3.1.2程序語句書寫要點語句是指一系列具體操作的指令,程序就是由若干個語句構(gòu)成的。VB中語句的書寫規(guī)則如下:一條語句通常寫在一行中。當(dāng)語句有層次關(guān)系時,可在深層次的語句前加上數(shù)量不等的空格或者通過按【Tab】鍵使其向后縮進以示區(qū)別,如下例所示:(1)第頁共頁113"填寫和管理進紙單
Private
Sub
menu11_Click()If
(Curusertype="系統(tǒng)")Or
(Curusertype="維護")Or
(Curusertype="印制")ThenfrmJinzhidan.ShowfrmJinzhidan.Left
=
400frmJinzhidan.Top
=
200ElseMsgBox"您無權(quán)執(zhí)行此功能!",vbExclamation,"警告"End
IfEnd
Sub3.1.2程序語句書寫要點3.1程序的書寫規(guī)則與調(diào)試方法若一行中有多條語句,各語句間必須以英語輸入狀態(tài)下的冒號(:)間隔,如下所示:(2)A=3:b=5對過長的語句,可通過在行尾加續(xù)行符“_”(一個空格+一個下劃線)分成多行,如下所示:(3)Printer.CurrentX
=
PaperLeftMargin
+
_Int((Int(Printer.ScaleWidth)
-
Len1)
/
2)第頁共頁113"定位打印坐標(biāo),行尾為續(xù)行符“_”3.1程序的書寫規(guī)則與調(diào)試方法3.1.3為程序增加注釋在程序中加入適當(dāng)?shù)淖⑨尶稍黾映绦虻目勺x性,便于對程序進行修改和維護。注釋以英語輸入狀態(tài)的單引號“"”引導(dǎo),可放在一行語句的后邊,也可單獨寫一行或幾行(每行都需要以單引號引導(dǎo)),但不能放在續(xù)行符的后面。例如:"設(shè)置線寬"打印水平線"恢復(fù)默認線寬"打印粗水平線Public
Sub
PrintThickL()Printer.DrawWidth
=
4Printer.Line
(CurX,
CurY)-(CurX
+
LineLength,
CurY)Printer.DrawWidth
=
1End
Sub第頁共頁1133.1程序的書寫規(guī)則與調(diào)試方法3.1.3為程序增加注釋提示注釋通常用于說明某個子程序的作用,變量或常量的意義,一段程序或某條程序語句的作用等。如果注釋單獨寫一行,也可使用REM語句對程序進行注釋,此時“REM注釋內(nèi)容”相當(dāng)于“"注釋內(nèi)容”,如下例所示:REM制作計算器提示在調(diào)試程序時,如果想取消若干行語句的作用而又不想刪除它們時,可在選定這些語句后,單擊“編輯”工具欄中的“設(shè)置注釋塊”按鈕
,這些語句前就加上了單引號“‘”;如果想取消行首的單引號,可在選定這些語句后,單擊“編輯”工具欄中的“解除注釋塊”按鈕
。第頁共頁1133.1程序的書寫規(guī)則與調(diào)試方法3.1.4
VB程序調(diào)試入門1.語法錯誤自動識別oneVB集成開發(fā)環(huán)境的功能非常強大,首先,我們在借助代碼窗口編寫程序時,如果編寫完一條語句,將光標(biāo)移至其他行,則系統(tǒng)會立即對輸入的語句進行語法檢查。如果語句存在語法錯誤,系統(tǒng)會首先將錯誤的語句以紅色顯示,然后彈出一個信息提示框,指明錯誤類型。單擊“確定”按鈕,系統(tǒng)會自動將光標(biāo)定位到錯誤語句,讓用戶來糾正錯誤,如下圖所示。系統(tǒng)自動識別簡單的語法錯誤第頁共頁1133.1程序的書寫規(guī)則與調(diào)試方法3.1.4
VB程序調(diào)試入門此外,還有些語法錯誤,例如,程
序中使用了未定義的過程或函數(shù),變量未定義或重復(fù)聲明等,當(dāng)我們輸入程序時,系統(tǒng)不能自動識別。但是,當(dāng)我們運行程序時,系統(tǒng)將會識別這些錯誤,并給出相應(yīng)的錯誤信息提示框。單擊“確定”按鈕,系統(tǒng)會自動定位到錯誤語句,并且為錯誤語句所在過程頭加上醒目的黃色底紋,如右圖所示。1.語法錯誤自動識別one系統(tǒng)自動識別簡單的邏輯錯誤第頁共頁1133.1程序的書寫規(guī)則與調(diào)試方法3.1.4
VB程序調(diào)試入門2.使用立即窗口two在立即窗口中,用戶可以直接編寫一些小程序,以了解函數(shù)的功能,或者確認程序片段的功能是否正確。此時每輸入一行程序,按回車鍵,系統(tǒng)會自動執(zhí)行該行程序。如下圖所示。不過,并非所有語句都可在立即窗口執(zhí)行,例如,用戶不能在立即窗口中使用Dim、Public等語句來聲明變量。此外,調(diào)試程序時,為了了解某些變量或表達式的變化,用戶還可以在窗體、控件的事件過程或其他程序段中使用“Debug.Print變量或表達式;變量或表達式;……”(Debug表示立即窗口)語句,將變量或表達式結(jié)果顯示在立即窗口中,如下圖所示。利用立即窗口了解函數(shù)功能利用立即窗口查看變量或表達式結(jié)果第頁共頁1133.1程序的書寫規(guī)則與調(diào)試方法3.1.4
VB程序調(diào)試入門要打開立即窗口,可選擇“視圖”菜單中的“立即窗口”命令。要清空立即窗口中的內(nèi)容,可以首先將該窗口中設(shè)置為當(dāng)前窗口,然后按【Ctrl+A】組合鍵全選其中的內(nèi)容,最后按【Del】鍵刪除之。2.使用立即窗口two第頁共頁113113第頁共頁3.1程序的書寫規(guī)則與調(diào)試方法3.1.4
VB程序調(diào)試入門3.使用斷點、監(jiān)視窗口與逐條語句執(zhí)行程序功能three程序設(shè)計最大的特點是要求邏輯嚴密,但是,知易行難,尤其是對于一些比較復(fù)雜的程序,要做到邏輯嚴密更是困難,其中很可能會出現(xiàn)各種各樣的邏輯錯誤。因此,為了幫助程序設(shè)計人員查找邏輯錯誤,VB提供了斷點和監(jiān)視功能。所謂斷點,是指當(dāng)程序運行到用戶設(shè)定的語句時,系統(tǒng)將臨時中斷程序運行,供用戶查看此時各變量的數(shù)值,以便進行邏輯判斷。要設(shè)置斷點,可首先將光標(biāo)定位到代碼窗口中要設(shè)置斷點的語句上,然后在語句左側(cè)的豎形條中單擊,還可選擇“調(diào)試”菜單中的“切換斷點”命令,或者按【F9】鍵,此時該語句將以紅色底紋標(biāo)識,且在語句左側(cè)出現(xiàn)一個紅色的圓點,見下一頁的圖示。3.1程序的書寫規(guī)則與調(diào)試方法3.1.4
VB程序調(diào)試入門3.使用斷點、監(jiān)視窗口與逐條語句執(zhí)行程序功能three單擊此處可設(shè)置或取消斷點為程序設(shè)置斷點提示用戶可以根據(jù)需要為程序設(shè)置多個斷點,其設(shè)置方法完全相同。要清除斷點,可直接單擊語句左側(cè)的斷點指示圓點,也可首先將光標(biāo)定位到設(shè)置斷點的語句上,然后再次按【F9】鍵。如果希望清楚全部斷點,可選擇“調(diào)試”菜單中的“清除所有斷點”命令。第頁共頁1133.1程序的書寫規(guī)則與調(diào)試方法3.1.4
VB程序調(diào)試入門3.使用斷點、監(jiān)視窗口與逐條語句執(zhí)行程序功能three設(shè)置斷點的目的主要是為了檢查此狀態(tài)下各變量的數(shù)值及其變化,而要做到這一點,就要借助監(jiān)視窗口了。要打開監(jiān)視窗口,可選擇“視圖”菜單中的“監(jiān)視窗口”命令。要為監(jiān)視窗口添加監(jiān)視,應(yīng)首先將光標(biāo)定位到要監(jiān)視的變量,然后選擇“調(diào)試”菜單中的“添加監(jiān)視”命令,打開“添加監(jiān)視”對話框。如右圖所示。“添加監(jiān)視”對話框第頁共頁1133.1程序的書寫規(guī)則與調(diào)試方法3.1.4
VB程序調(diào)試入門在“添加監(jiān)視”對話框中,用戶也可在“表達式”編輯框中輸入要監(jiān)視的變量名。在“監(jiān)視類型”區(qū),用戶還可選擇“當(dāng)監(jiān)視值為真時中斷”或“當(dāng)監(jiān)視值改變時中斷”。設(shè)置結(jié)束后,單擊“確定”按鈕,所設(shè)監(jiān)視被自動添加到監(jiān)視窗口中,如下圖所示。如果需要的話,用戶可以添加多個監(jiān)視。3.使用斷點、監(jiān)視窗口與逐條語句執(zhí)行程序功能three添加監(jiān)視后的監(jiān)視窗口第頁共頁1133.1程序的書寫規(guī)則與調(diào)試方法3.1.4
VB程序調(diào)試入門設(shè)置好斷點和監(jiān)視后,執(zhí)行程序,程序?qū)⑼T谒O(shè)斷點之前,用戶可以在監(jiān)視窗口查看所監(jiān)視的變量值,如右邊上面兩圖所示。此外,為了幫助開發(fā)人員更好地進行程序調(diào)試,用戶還可以按【F8】鍵或選擇“調(diào)試”菜單中的“逐語句”命令,單步執(zhí)行程序,即按一次【F8】鍵執(zhí)行一條語句,如右邊下面兩圖所示(執(zhí)行位置指示下移,監(jiān)視窗口中變量x2的值由“空值”變成了20)。3.使用斷點、監(jiān)視窗口與逐條語句執(zhí)行程序功能three監(jiān)視執(zhí)行程序時變量值的變化第頁共頁1133.1程序的書寫規(guī)則與調(diào)試方法3.1.4
VB程序調(diào)試入門3.使用斷點、監(jiān)視窗口與逐條語句執(zhí)行程序功能three如果此時用戶希望查看未監(jiān)視的其他變量值,可首先將光標(biāo)定位到該變量,然后選擇“調(diào)試”菜單中的“快速監(jiān)視”命令,打開“快速監(jiān)視”對話框,如下圖所示。如果用戶希望將此監(jiān)視添加到監(jiān)視窗口,可以直接單擊“添加”按鈕?!翱焖俦O(jiān)視”對話框第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型數(shù)據(jù)類型決定了計算機對數(shù)據(jù)的存儲方式、處理方式和運算方式,各種程序設(shè)計語言中都規(guī)定了基本的數(shù)據(jù)類型。Section3.2.2自字義數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型數(shù)據(jù)類型決定了計算機對數(shù)據(jù)的存儲方式、處理方式和運算方式,各種程序設(shè)計語言中都規(guī)定了基本的數(shù)據(jù)類型。第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型第頁共頁113VB中提供的基本數(shù)據(jù)類型如下表所示。單精度浮點型對象型Singleobject!無sngobj4個字節(jié)4個字節(jié)雙精度浮點型Double#dbl8個字節(jié)貨幣型Currency@cur8個字節(jié)日期型Date無dtm8個字節(jié)字符串型String$str字符數(shù)*2變體型Variant無vnt可變類型關(guān)鍵字類型符前綴長度取值范圍字節(jié)型Byte無byt1個字節(jié)0~255邏輯型Boolean無bln2個字節(jié)True或False整型Integer%int2個字節(jié)-32768~32767長整型Long&lng4個字節(jié)-2147483648~2147483647絕對值在1.401298*10-45~3.402823×1038之間任何對象引用絕對值在4.94065645841247×10-324~1.79769313486232×10-308之間-922337203685477.5808~922337203685477.5807100年1月1日~9999年12月31日可存儲字符串的長度取決于變量類型3.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型1.類型符與前綴one在VB中,類型符用于簡化變量或常量聲明,例如,以下兩組語句都是等價的:Dim
intI1
As
IntegerDim
intI1%Const
PI
As
Double=3.1415926535Const
PI#=3.1415926535"聲明整型變量intI1"聲明整型變量intI1"聲明雙精度常量PI"聲明雙精度常量PI前綴是數(shù)據(jù)類型的縮寫,主要用于命名變量時指明變量的類型,從而強化程序的可讀性,它本身并無實質(zhì)意義,例如:Dim
strC1
As
String第頁共頁113"聲明字符串變量strC1,“str”用來指明變量類型3.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型2.數(shù)值型two數(shù)值型數(shù)據(jù)包括字節(jié)型、整型、長整型、浮點型和貨幣型。(1)字節(jié)型、整型和長整型均用于表示整數(shù),差別在于它們表示的數(shù)的取值范圍不同。其中,字節(jié)型數(shù)據(jù)是無符號數(shù),只能表示正整數(shù);整型和長整型包括正整數(shù)、負整數(shù)和0。例如:Dim
I1,I2
As
IntegerI1=1:I2=5"定義整型變量"給變量賦初值第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型2.數(shù)值型two若一行中有多條語句,各語句間必須以英語輸入狀態(tài)下的冒號(:)間隔,如下所示:第頁共頁113(2)"定義單精度變量x1,雙精度變量x2"分別給兩個變量賦值Dim
x1
As
Single,
x2
As
Doublex1
=
3.1415926535x2
=
3.1415926535Print
"x1=";
x1;
"
x2=";
x2"輸出變量x1=3.141593
x2=3.1415926535程序運行結(jié)果x1=1.235667E-6
x2=1.23578911987E-053.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型2.數(shù)值型two由程序運行結(jié)果可以看出,單精度數(shù)據(jù)最多有7位有效數(shù)字,超出部分被四舍五入。在程序中定義實數(shù)常數(shù)時,既可以用大家平時習(xí)慣的數(shù)字和小數(shù)點表示,也可以用科學(xué)計數(shù)法表示。但是,由于在VB中不能輸入上標(biāo),所以用nEm的形式表示n×10m,其中,n為實數(shù),m為整數(shù)。例如,要給變量賦值0.000001235,即可以直接輸入該數(shù)值,也可以輸入1.235E-6(表示1.235×10-6)。第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型不過,無論是在程序中定義實數(shù)常數(shù),還是輸出程序運行結(jié)果,系統(tǒng)都會根據(jù)情況自動決定以哪種方式顯示實數(shù)。如下例所示:2.數(shù)值型two"定義單精度第頁共頁113Dim
x1
As
Single,x2
As
Double變量x1,雙精度變量x2x1
=
0.000001235666788x2
=
1.23578911987E-05Print
"x1=";
x1;
"
x2=";
x2程序運行結(jié)果x1=1.235667E-6x2=1.23578911987E-053.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型2.數(shù)值型two貨幣型數(shù)據(jù)主要用于銀行、會計行業(yè)中表示現(xiàn)金數(shù)額的數(shù)據(jù)。它有足夠的整數(shù)位和小數(shù)位(整數(shù)位15位,小數(shù)位4位),可以克服長整型數(shù)據(jù)中沒有小數(shù)、浮點型數(shù)據(jù)計算誤差太大的缺點。(3)第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型2.數(shù)值型twoVB的數(shù)據(jù)類型非常靈活,各種數(shù)據(jù)類型之間大多都可以相互轉(zhuǎn)換,如下例所示:提示Dim
x
As
DoubleDim
a
As
Long,
b
As
Single,
c
As
BooleanDim
d
As
String,
e
As
Date,
f
As
Currency程序運行結(jié)果x
=
1111115.6767545a
=
x:
b
=
x:
d
=
x:
c
=
x:
e
=
x:
f
=
xx為雙精度:1111115.6767545Print
"x為雙精度:";xa為長整型:1111116Print
"a為長整型:";ab為單精度:1111116Print
"b為單精度:";bc為布爾型:TruePrint
"c為布爾型:";cd為字符串:1111115.6767545Print
"d為字符串:";de為日期型:4942-2-15
16:14:32Print
"e為日期型:";ef為貨幣型:1111115.6768Print
"f為貨幣型:";f第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型3.字符串型three字符串型數(shù)據(jù)適合表示文本性質(zhì)的數(shù)據(jù)。它可以是英文,也可以是中文,如一個單詞,一句話或一個人的名字等。在VB中,要使用字符串?dāng)?shù)據(jù),應(yīng)在其前后加上英文輸入狀態(tài)的雙引號。例如,要表示字符串ABCD,正確的形式應(yīng)為"ABCD"。當(dāng)字符串中有英文狀態(tài)的雙引號時,要用兩個英文雙引號表示,例如,ABC"D要寫成"ABC""D";而中文狀態(tài)的雙引號被會系統(tǒng)當(dāng)作一個漢字使用。第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型3.字符串型three此外,VB中的字符串分為變長字符串和定長字符串。其中,變長字符串用“String”聲明,定長字符串用“String
*字符串長度(正整數(shù))”聲明,如下例所示:Dim
str1
As
String
*
4,str2
As
Stringstr1="定長字符串"str2="變長字符串"Print
str1Print
str2第頁共頁113程序運行結(jié)果定長字符變長字符串3.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型提示3.字符串型three字符串中所包含的字符個數(shù)稱為字符串長度;變長字符串的長度由賦給它的值的長度決定;對于定長字符串,若賦給它的字符少于定長值,則不足部分由系統(tǒng)自動在右邊補空格填滿;若超過定長值,則多余部分被自動截去。第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型4.邏輯型four邏輯型數(shù)據(jù)又稱布爾型數(shù)據(jù),它只有兩個邏輯值,即“True”和“False”。該類型數(shù)據(jù)用于邏輯判斷,例如:"定義整型變量x1和x2"定義邏輯變量b1"為x1和x2賦值"為b1賦值。此處由于x1>x2,故b1為True"如果b1為True,則輸出字符串“x1>x2”Dim
x1,
x2
As
IntegerDim
b1
As
Booleanx1
=
10:
x2
=
5b1
=
x1
>
x2If
b1
ThenPrint
"x1>x2"End
If第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型邏輯類型數(shù)據(jù)可與整型或長整型數(shù)據(jù)互相轉(zhuǎn)換,轉(zhuǎn)換方法如下:①整型數(shù)據(jù)→邏輯數(shù)據(jù)非0→True;0→False②邏輯數(shù)據(jù)→整型數(shù)據(jù)True
→
-1;False
→
04.邏輯型four第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型5.日期型Five常用的日期數(shù)據(jù)表示方式為“#月/日/年#”(各占兩位,即#mm/dd/yy#),時間數(shù)據(jù)表示方式為“#時:分:秒AM或PM#”(各占兩位,即#hh:mm:ssAM或PM#)。需要特別注意的是,在使用日期型數(shù)據(jù)時,不能省略符號“#”。例如:#January
1,2016#、#1
Jan,16#、#5/12/16#、#2016-5-128:30:00
PM#。日期型數(shù)據(jù)用于表示日期和時間,它用8字節(jié)的浮點數(shù)表示。其中,日期范圍為:100年1月1日~9999年12月31日,時間范圍為:0:00:00~23:59:59。第頁共頁1133.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型6.對象型six對象數(shù)據(jù)類型通過32位(4個字節(jié))存儲空間存放可引用應(yīng)用程序中對象的地址。用戶可以用Set語句將某一實際對象的對象名賦給該對象變量,然后就可以用對象變量名代替實際的對象名了。例如:Dim
objLbl
As
ObjectSet
objLbl
=label1objLbl.Caption
=
"Welcome"第頁共頁113"定義對象類型變量"為變量賦值,此處為標(biāo)簽控件label1"設(shè)置標(biāo)簽的Caption(提示)屬性3.2.1
VB中的基本數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型7.變體型seven變體型是一種隨時可以改變數(shù)據(jù)類型的數(shù)據(jù),數(shù)據(jù)類型可根據(jù)上下文的變化而變化,是一種萬能的數(shù)據(jù)類型。除去定長String類型和用戶自定義數(shù)據(jù)類型外,它可以保存任何其他類型數(shù)據(jù)(數(shù)值型、日期型、字符型、對象型)。例如:Private
Sub
Form_Click()Dim
T
As
VariantT=12Form1.Print
TT="*********"Form1.Print
TEnd
Sub第頁共頁1133.2
VB中的數(shù)據(jù)類型3.2.2 自字義數(shù)據(jù)類型當(dāng)需要用幾個不同的基本數(shù)據(jù)類型來描述一批事物中的每一個事物的特性時,使用自定義類型的數(shù)據(jù)將更為方便。例如,建立一個通訊錄,每個人的信息中需要有姓名、出生年月、家庭地址、郵政編碼、電話號碼甚至QQ號碼等,這時用一個自定義類型的變量就可以同時表示一個人的所有方面的信息。自定義數(shù)據(jù)類型的格式如下:[Public
|
Private]Type自定義數(shù)據(jù)類型名數(shù)據(jù)類型元素名As類型名數(shù)據(jù)類型元素名As類型名……End
Type第頁共頁113其中,方括號中的部分是可選項,“|”的含義是指在由它分開的幾項中只能選擇其中的一項。“自定義數(shù)據(jù)類型名”是要定義的數(shù)據(jù)類型的名字,其命名規(guī)則遵從標(biāo)識符的命名規(guī)則;“數(shù)據(jù)類型元素名”也遵守同樣的規(guī)則,且不能是數(shù)組名;“類型名”可以是任何基本數(shù)據(jù)類型,也可以是用戶自定義數(shù)據(jù)類型。3.2.2 自字義數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型通常,我們把用戶用Type語句定義的數(shù)據(jù)類型稱為記錄類型。例如:"定義自定義數(shù)據(jù)類型PersInfo"定義數(shù)據(jù)類型元素Private
Type
PersInfoName
As
String*6Addr
As
String*20Age
As
IntegerEnd
TypeDim
x1
As
PersInfox1.Name="張三豐""聲明自定義數(shù)據(jù)類型變量"為自定義數(shù)據(jù)類型變量的數(shù)據(jù)元素賦值x1.Addr="河南省濮陽市清豐縣"x1.Age=24其中PersInfo是用戶定義的數(shù)據(jù)類型名,該數(shù)據(jù)類型由3個元素Name、Addr和Age組成。其中,Name和Addr是字符型,Age為整型。第頁共頁1133.2.2 自字義數(shù)據(jù)類型3.2
VB中的數(shù)據(jù)類型在使用Type語句時,應(yīng)注意以下幾點:(1)第頁共頁113(2)(3)記錄類型中的元素可以是變長字符串,也可以是定長字符串。當(dāng)在隨機文件中使用時,必須使用定長字符串。記錄類型的定義必須放在模塊(包括標(biāo)準(zhǔn)模塊和窗體模塊)的聲明部分(即在“(通用)”段中),而且在使用記錄
類型之前,必須用Type語句加以定義。一般情況下,記錄
類型應(yīng)在標(biāo)準(zhǔn)模塊中定義,其變量可以出現(xiàn)在工程的任何
地方,且關(guān)鍵字Type前可以有Public(默認)或Private;如果在窗體模塊中定義,必須在前面加上關(guān)鍵字Private。在記錄類型中不能使用動態(tài)數(shù)組。3.3.3常量變量和常量在程序運行過程中,其值不能被改變的量稱為常量,其值能夠改變的量稱為變量。常量和變量名稱稱為標(biāo)識符。標(biāo)識符命名規(guī)則Section實例3-1——理解變量的類型和作用域3.3.2變量3.3 變量和常量3.3.1標(biāo)識符命名規(guī)則標(biāo)識符用來命名變量、符號常量、數(shù)組、方法、類、對象、接口和包等。為了提高程序的可讀性,標(biāo)識符最好“見名知義”,而且規(guī)范大小寫的使用方式。它們的命名規(guī)則如下:標(biāo)識符必須以英語字母或漢字開頭,其后可以是字母、漢字、數(shù)字或下劃線。但不得使用標(biāo)點符號、空格、@、&、$、#及運算符等已有特殊含義的字符。標(biāo)識符字符的長度不能超過255個字符(若是窗體、控件和模塊的名字,則長度不得超過40個字符)。標(biāo)識符不能與VB中已定義過的或保留的關(guān)鍵字同名,以免造成不必要的麻煩。這些關(guān)鍵字是VB保留的具有固定含義的標(biāo)識符,用來表示系統(tǒng)提供的類型、語句、函數(shù)、過程、屬性和方法等。以下是一些合法的標(biāo)識符:Temp、abc_3、m1、zhiyuanshu和Flag等。第頁共頁1133.3 變量和常量3.3.2變量所謂變量,是指它所代表的內(nèi)容可以發(fā)生變化。在計算機中,變量實際上代表著某種類型數(shù)據(jù)對應(yīng)的存儲單元,變量的名字就是該單元的名字。變量的最大特點就是“喜新厭舊”,也就是說,一旦賦于了變量新的內(nèi)容,變量中原有的內(nèi)容就不再存在了。第頁共頁1133.3 變量和常量3.3.2變量1.變量的定義one一般來講,變量必須先定義、后使用。定義變量時,必須定義其類型、名稱和數(shù)據(jù)類型,其格式如下:Dim
i1
As
IntegerDim
s1,s2
As
StringDim
b1
As
Byte,
s1
As
StringDim
x1#i2&=100Dim
x2"定義整型變量i1"定義兩個字符串變量s1和s2"在一行中定義了兩類變量"定義雙精度變量x1"定義了一個長整型變量i2并賦初值"“As數(shù)據(jù)類型”缺省,故變量x2的數(shù)據(jù)類型為變體型[Dim
|
Public
|
Private
|
Static]變量名稱[,變量名稱,…]As數(shù)據(jù)類型變量名稱+數(shù)據(jù)類型符[=初值](此方式僅用于在過程內(nèi)部定義局部變量)例如:第頁共頁1133.3 變量和常量3.3.2變量1.變量的定義one另外,VB還允許不聲明就使用變量,此時相當(dāng)于將該變量隱式聲明為Variant類型。在未給這類變量賦值之前,其值為Empty,給變量賦值后值的類型即為變量的數(shù)據(jù)類型,如下例所示:Private
Sub
Form_Click()Blint=100Print
BlintEnd
Sub第頁共頁113不過,雖然這種方式雖然給編程帶來了一定的方便,但由于這種方式使得程序可讀性變差,出錯后不易查找等,因此,還是強烈建議大家在使用變量時應(yīng)先聲明后使用。此外,為了避免使用隱式聲明帶來的弊端,VB還提供了一個語句,以達到強制聲明變量的效果。該語句應(yīng)加在窗體或標(biāo)準(zhǔn)模塊的“(通用)”聲明段中,其格式為:Option
Explicit增加該語句后,程序在運行時一旦遇到未聲明的變量,就會發(fā)出錯誤警告。3.3 變量和常量3.3.2變量2.變量的作用范圍two在VB中,有4個關(guān)鍵字(Dim、Public、Private和Static)用于確定變量類型,這4個關(guān)鍵字決定了用戶可以在何處聲明變量,以及變量的作用范圍,其意
義如下。1)
DimDim既可以在過程內(nèi)部聲明變量,也可以在過程外部聲明變量。在過程內(nèi)部聲明的變量是局部變量,只能在聲明變量的過程內(nèi)部使用,在其他過程中是不能使用它們的,因此,不同過程中可以聲明完全同名的變量,它們彼此互不影響;在過程外部聲明的變量是私有變量,可在聲明變量的模塊的所有過程中使用,但不能在其他模塊中使用。第頁共頁1133.3 變量和常量3.3.2變量2.變量的作用范圍two2)
StaticStatic只能在過程內(nèi)部聲明變量,它聲明的變量為靜態(tài)局部變量,它在整個應(yīng)用程序運行期間一直存在。而Dim聲明的局部變量屬于動態(tài)局部變量,過程結(jié)束,變量所占存儲空間即被釋放。如果多次調(diào)用同一個過程,靜態(tài)局部變量會保存對它的設(shè)置,即后一次調(diào)用該過程時,靜態(tài)局部變量的值將是上一次調(diào)用這個過程時為它設(shè)置的值;而動態(tài)局部變量不會保存對它的設(shè)置,每次退出一個過程,這個過程中的動態(tài)局部變量的值都將丟失。第頁共頁1133.3 變量和常量3.3.2變量2.變量的作用范圍two3)Private和PublicPrivate和Public只能在窗體或模塊的“(通用)”段(過程外部)聲明變量。Private語句聲明的變量是私有變量,與過程外部Dim聲明的變量的作用完全相同,變量只能用于本模塊;Public聲明的變量是全局變量,可在該工程的所有模塊中使用。第頁共頁1133.3 變量和常量3.3.2變量3.變量的賦值three程序中凡是參與運算的變量,必須在使用之前給它們賦值?!?”即為賦值符號,其左側(cè)為變量名,右側(cè)是一個表達式,表達式的結(jié)果即為該變量的值。例如,“A=5”是最簡單的賦值語句。變量的其他賦值方式,將在后續(xù)章節(jié)中介紹。第頁共頁1133.3 變量和常量實例
3-1理解變量的類型和作用域第頁共頁1133.3 變量和常量啟動VB
6.0,新建一個標(biāo)準(zhǔn)EXE工程。實例3-1理解變量的類型和作用域步驟1兩次雙擊工具箱中的命令按鈕,在窗體中創(chuàng)建兩個標(biāo)準(zhǔn)尺寸的命令按鈕Command1和Command2。適當(dāng)移動其位置,結(jié)果如右側(cè)上圖所示。步驟2步驟3利用屬性窗口分別修改窗體Form1的Caption屬性為“變量測試”,兩個命令按鈕的Caption屬性為“公共變量”和“局部變量”,此時畫面如右側(cè)下圖所示。第頁共頁1133.3 變量和常量步驟4步驟5雙擊窗體空白處,打開代碼編輯器窗口。打開對象下拉列表,選擇“(通用)”,如右圖所示。在代碼編輯區(qū)輸入如下兩行代碼,定義兩個公共變量:Public
PbVar1
As
IntegerPrivate
PvVar1
As
Integer步驟6在Private
Sub
Form_Load()過程中輸入如下兩行代碼,為兩個公共變量賦值(加載窗體時執(zhí)行此事件代碼):PbVar1=1PvVar1=2實例3-1理解變量的類型和作用域第頁共頁1133.3 變量和常量實例3-1理解變量的類型和作用域步驟7在對象下拉列表中選擇Command1,此時其Click
過程被自動選中,在Private
Sub
Command_Click()過程中輸入如下一行代碼,輸出兩個公共變量值:步驟8MsgBox
"Public變量PbVar1
=
"
&
PbVar1
&
_"
Private變量PvVar1
=
"
&
PvVar1打開對象下拉列表,再次選擇“(通用)”,輸入如下代碼:"定義動態(tài)局部變量,默認值為0"定義靜態(tài)局部變量,默認值為0第頁共頁113"變量測試過程Private
Sub
dsVarTest(x
As
Integer)Dim
dVar1
As
IntegerStatic
sVar1
As
IntegerdVar1
=
dVar1
+
xsVar1
=
sVar1
+
xMsgBox
"Dim變量="&
dVar1
&"Static變量="&
sVar1End
Sub3.3 變量和常量實例3-1理解變量的類型和作用域在對象下拉列表中選擇Command2,此時其Click過程被自動選中,在
Private
Sub
Command_Click()過程中輸入如下一行代碼:步驟9dsVarTest
1"調(diào)用變量測試過程此時代碼編輯窗口中的內(nèi)容將如下圖所示。第頁共頁1133.3 變量和常量實例3-1理解變量的類型和作用域,單擊標(biāo)準(zhǔn)工具欄中的“保存工程”按鈕
將窗體文件保存
為Form3-1-1.frm文件,將工程保存為“工程3-1.vbp”文件。步驟10步驟11單擊標(biāo)準(zhǔn)工具欄中的“啟動”按鈕
,運行程序。單擊“公共變量”按鈕,可以查看Public變量和PriVate變量的值。步驟12單擊“局部變量”按鈕,可以查看局部變量的值,開始時動態(tài)局部變量dVar1和靜態(tài)局部變量sVar1的值均為1。單擊“確定”按鈕,返回窗體,再次單擊“局部變量”按鈕,我們可以看到動態(tài)局部變量dVar1的值仍為1,而靜態(tài)局部變量sVar1的值變成了2。第頁共頁1133.3 變量和常量步驟13單擊“確定”按鈕,返回窗體,第3次單擊“局部變量”按鈕,我們可以看到動態(tài)局部變量dVar1的值仍為1,而靜態(tài)局部變量sVar1的值變成了3。如下圖所示。第頁共頁1133.3 變量和常量3.3.3常量在程序設(shè)計時,如果使用太多的常數(shù),一旦因這些常數(shù)或其中的一些常數(shù)發(fā)生變化,在整個程序中依次查找它們并逐個修改是件很麻煩的事,況且,大量的數(shù)據(jù)也使人不易分清其具體意義。為此,VB中提供了一個聲明常量的功能,即用戶可以為每個常數(shù)定義一個有意義的名字,凡是程序中需要使用此常數(shù)的地方,不必再寫這個常數(shù),而是以其名字代替。這樣,如果需要修改程序中的某個常數(shù),只需在聲明部分修改其數(shù)值即可,而不必在程序中逐個修改。外部常量VB中提供的常量有兩大類,即內(nèi)部常量和外部常量。內(nèi)部常量第頁共頁1133.3 變量和常量3.3.3常量1.系統(tǒng)內(nèi)部常量one內(nèi)部常量也稱系統(tǒng)常數(shù),由應(yīng)用程序和控件提供,通常都帶有表示對象庫的前綴,如VB和VBA等對象庫的常量都以“vb”開頭。例如:Form1.BackColor=vbBlue
"vbBlue是顏色內(nèi)部常量,表示藍色內(nèi)部常量可通過對象瀏覽器查看。選擇“視圖”菜單中的“對象瀏覽器”命令,打開對象瀏覽器窗口,向下拖動右窗格成員列表框右側(cè)滾動條中的滑塊,找到以“vb”開頭的一系列標(biāo)識符,這些基本上都是VB定義的內(nèi)部常量。單擊其中任意常量,可在窗口下面的窗格中看到其定義和簡單的解釋,如右圖所示。第頁共頁1133.3 變量和常量3.3.3常量2.用戶自定義常量two用戶也可自己定義常量,其語法格式如下:[Public
|
Private]Const常量名[As數(shù)據(jù)類型]=表達式其中,常量與變量具有相同的命名規(guī)則,表達式將在后面進行介紹。此語句聲明的自定義常量的數(shù)據(jù)類型可為22頁中的表上列出的除object以外的任意數(shù)據(jù)類型。例如:Const
BIRTHDAY
As
Date=#01/01/1963#上述語句定義了一個名為BIRTHDAY的常量,它表示日期常數(shù)“1963年1月1日”。在BIRTHDAY作用域中,所有的BIRTHDAY就代表“1963年1月1日”這個特定的日期。如果以后要修改此日期,只需修改此處數(shù)值即可。第頁共頁1133.3 變量和常量2.用戶自定義常量3.3.3常量two提示常量在其作用域中是不能被賦值的。為與變量區(qū)別,常量通常只用大寫英文字母,如PI,TOPSCORE等。(1)(2)第頁共頁1133.4運算符和表達式Section算術(shù)運算比較運算(關(guān)系運算)邏輯運算連接運算表達式的執(zhí)行順序3.4 運算符和表達式在運算時,用運算符連接運算量組成一個式子,來表示對運算量進行何種運算,這種由運算符連接運算量組成的式子稱為表達式。例如,3+6、sin(3.14)、2*x+y等都是表達式。VB中提供了豐富的運算符,可以構(gòu)成多種表達式。arithmeticlogicalcomparisonconcatenation算術(shù)運算比較運算(即關(guān)系運算)邏輯運算連接運算運算是對數(shù)據(jù)進行加工的過程。在VB系統(tǒng)中,計算機對數(shù)據(jù)進行的運算按功能可以劃分為四大類:第頁共頁1133.4 運算符和表達式3.4.1 算術(shù)運算1.算術(shù)運算符one第頁共頁113算術(shù)運算是最常用的運算,VB提供的算術(shù)運算符如下表所示。運算運算符表達式示例運算運算符表達式示例冪^A
^
2整數(shù)除法\A
\
B取負--
A取模ModA
Mod
B乘法*A
*
B加法+A
+
B浮點除法/A
/
B減法-A
-
B很多的運算符都和我們在數(shù)學(xué)中學(xué)到的算術(shù)運算符意義相同,但也有一部分和數(shù)學(xué)中的不一樣,這些運算符大家要特別記憶一下,否則在寫表達式時就會發(fā)生錯誤。3.4 運算符和表達式3.4.1 算術(shù)運算1.算術(shù)運算符one1)冪運算冪運算用來計算乘方和方根,其運算符為“^”。以下是幾個冪運算的例子:x=2
^
2x=4
^
0.5x=10
^
-3x=1000
^(1/3)"2的平方,結(jié)果為4"4的平方根,結(jié)果為2"10的負3次方,結(jié)果為1/1000,即0.001"1000的立方根,結(jié)果為10第頁共頁1133.4 運算符和表達式3.4.1 算術(shù)運算1.算術(shù)運算符錯誤:2^3+2正確:2^(3+2)"2的3次方,再加2,結(jié)果為10"2的3+2次方,結(jié)果為32one提示當(dāng)指數(shù)是一個表達式時,必須加上括號,因為在算術(shù)運算符中冪運算具有最高級別。例如,我們用算術(shù)表達式表示2的3+2次方:第頁共頁1133.4 運算符和表達式3.4.1 算術(shù)運算1.算術(shù)運算符2)浮點數(shù)除法與整數(shù)除法one浮點數(shù)除法的運算符是“/”,其運算結(jié)果為浮點數(shù)。例如表達式5/2的結(jié)果為2.5,與數(shù)學(xué)中的除法一樣。整數(shù)除法的運算符是“\”,其運算結(jié)果為整型值,因此表達式5\2的結(jié)果為2。當(dāng)操作數(shù)帶有小數(shù)時,首先將其四舍五入為整型或長整型,然后再進行運算。操作數(shù)必須在-2147483648.5~2147483647.5范圍內(nèi),運算后其結(jié)果進行取整操作,不進行舍入處理。例如:第頁共頁113x=10\4y=1.2\0.6"運算結(jié)果為x=2"運算結(jié)果為y=13.4 運算符和表達式3.4.1 算術(shù)運算3)取模運算取模運算用來求余數(shù),其結(jié)果為第二個操作數(shù)整除第一個操作數(shù)所得的余數(shù),例如表達式10
Mod
3的結(jié)果為1。如果兩個操作數(shù)為實數(shù),也要先進行四舍五入取整,再進行取模運算,例如2.1
Mod
0.8,首先將兩個操作數(shù)進行四舍五入得到2和1,因此上述表達式的結(jié)果為0。1.算術(shù)運算符one第頁共頁1133.4 運算符和表達式3.4.1 算術(shù)運算2.算術(shù)運算符的優(yōu)先級two不同的算術(shù)運算符在表達式中參與運算的級別是不同的,其中冪運算的級別最高,加減運算符的級別最低。表達式的運算規(guī)則為:先乘除,后加減;乘方優(yōu)先于乘除;函數(shù)優(yōu)先于乘方;取模次于乘除,優(yōu)先于加減;括號內(nèi)最優(yōu)先;同一級的運算按其位置從左至右進行。根據(jù)上述運算規(guī)則,相應(yīng)的算術(shù)運算符的優(yōu)先級如右表所示。優(yōu)先級運算符意義1(
)括號2^冪(乘方)3*
,
/乘,浮點數(shù)除4\整除5Mod取余6+
,
-加,減第頁共頁1133.4 運算符和表達式3.4.2比較運算(關(guān)系運算)比較運算符也稱關(guān)系運算符,用來對兩個表達式的值進行比較,比較的結(jié)果是一個邏輯值,即真(True)或假(False)。VB提供了8個比較運算符,如下表所示。運算符測試關(guān)系表達式例子運算符測試關(guān)系表達式例子=相等A=B<=小于等于A<=B<>或><不等A<>B>=大于等于A>=B<小于A<BLike比較樣式"fd"
Like
"f
?">大于A>BIs比較對象變量第頁共頁1133.4 運算符和表達式3.4.2比較運算(關(guān)系運算)用比較運算符連接兩個算術(shù)表達式所組成的式子叫做比較表達式。比較表達式中的運算量可以是數(shù)值型、字符串型、貨幣型、日期型等類型的量,但是在同一個表達式中兩個量應(yīng)為同一類型。比較表達式的結(jié)果是一個Boolean類型的值,即True和False,它們分別表示整型數(shù)-1(非零)和0。比較運算符之間的優(yōu)先級是相同的,但它們的優(yōu)先級都低于算術(shù)運算符。在應(yīng)用程序中,比較運算通常作為判斷用,例如:a=100If
a<>150
Then
Print"不相等"由于a不等于150,所以執(zhí)行Then后面的語句,執(zhí)行結(jié)果會輸出“不相等”。第頁共頁1133.4 運算符和表達式3.4.2比較運算(關(guān)系運算)關(guān)于比較運算符,有以下幾點需要注意:(1)應(yīng)當(dāng)盡可能避免對兩個浮點數(shù)進行“相等”或“不等”的判斷,否則可能出錯。第頁共頁1133.4 運算符和表達式3.4.2比較運算(關(guān)系運算)(2)在數(shù)學(xué)中,一個數(shù)x是否在區(qū)間[a,b]時,我們習(xí)慣寫成a≤x≤b,但在VB中不允許這樣表示,應(yīng)該寫成:a<=x
And
x<=b。第頁共頁1133.4 運算符和表達式3.4.2比較運算(關(guān)系運算)(3)字符串?dāng)?shù)據(jù)進行比較運算時,按照其字母的ASCII碼值進行比較。在比較兩個字符串時,先比較第一個字符,其中ASCII碼值較大的字符所在字符串大,如果第一個字符相同,再比較第二個字符……依次類推。例如:"zhao">"zhang"為真,是因為逐個比較前三個字符,其
ASCII值相同,而第四個字符則不同,“o”的ASCII值大于“n”的ASCII值(注意:不是比較其長短)。第頁共頁1133.4 運算符和表達式3.4.2比較運算(關(guān)系運算)(4)關(guān)系運算符Like用于比較符號左邊的字符串是否與符號右邊的字符串匹配。右邊的字符串可包含通配符*、?、#等。例如:A
=
"Visual"
Like
"V*l"B="變量"Like"?量"C
=
"VB6"
Like
"VB#""A的結(jié)果為True,*代表任意字符串"B的結(jié)果為True,?代表一個漢字或英語"字母"C的結(jié)果為True,#代表一個末位的英文"字母或數(shù)字第頁共頁1133.4 運算符和表達式3.4.2比較運算(關(guān)系運算)(5)關(guān)系運算符Is用于比較兩個object類型的變量是否引用同一個對象。例如,窗體上有一個命令按鈕Command1,且有如下變量聲明:Dim
a
As
object,
b
As
objectDim
ab
As
Boolean"聲明a和b為對象型變量"聲明ab為邏輯型變量執(zhí)行下面的語句:Set
a
=
Command1Set
b
=
aab=
a
Is
b則ab的值為True。第頁共頁1133.4 運算符和表達式3.4.3邏輯運算邏輯運算是指對兩個布爾類型的運算量進行的運算。所以,邏輯運算也稱為“布爾”運算。參與邏輯運算的運算量為布爾值,運算結(jié)果也是一個布爾值。在VB中,邏輯運算符一共有如下6個。2)And(與)3)Or(或)1)Not(非)第頁共頁113由真變假,由假變真,進行“取反”運算。例如:x=Not(1<2)
"1<2值為True,進行了“取反”運算后,Not(1<2)的值為False對兩個關(guān)系表達式的值進行比較,如果兩個表達式的值均為True,則結(jié)果為True,否則結(jié)果為False。例如:x=1<2
And
3<6
"結(jié)果為True。對兩個表達式進行比較,如果其中一個表達式的值為True,那么結(jié)果為True。當(dāng)且僅當(dāng)兩個表達式的值都是False,結(jié)果才為False。例如:x=1
<
2
Or
3
>
6"結(jié)果為True3.4 運算符和表達式3.4.3邏輯運算5)Eqv(等價)6)Imp(蘊含)4)Xor(異或)第頁共頁113如果兩個表達式同時為True或同時為Fasle時,其結(jié)果為True,否則結(jié)果為Fasle。例如:x=1<2
Eqv
3>6
"結(jié)果為Fasle當(dāng)?shù)谝粋€表達式為True,且第二個表達式為Fasle,其結(jié)果為Fasle。例如:x=1<2
Imp
3>6
"結(jié)果為Fasle當(dāng)兩個表達式的值一個為True,另一個為False時,結(jié)果為True,否則結(jié)果為Fasle。例如:x=1
<
2
Xor
3
>
6x=1
<
2
Xor
3
<
6"結(jié)果為True"結(jié)果為False3.4 運算符和表達式3.4.3邏輯運算下表列出了六種邏輯運算的真值表。XYNot
XX
And
YX
Or
YX
Xor
YX
Eqv
YX
Imp
Y-1-10-1-10-1-1000-1-100-1-10-1-1000-1000-1第頁共頁113-10-1-13.4 運算符和表達式3.4.4連接運算連接運算可以對各種不同的運算量或表達式進行連接運算,用到的連接運算符為“&”。在各種不同的運算符之間,連接符的優(yōu)先順序排在所有算術(shù)運算符的后面,但在比較運算符之前。連接表達式中若含有其他類型的運算表達式,系統(tǒng)會首先對各個表達式進行計算,然后進行連接。此外,連接結(jié)果可以直接輸出,例如:Print"2
*
10+6="&
2*10+6
"輸出結(jié)果為:2
*
10+6=26除了“&”外,算術(shù)運算符“+”也可以用做字符串連接符,但“+”號只能用于連接字符串,例如:Print"中國"+"北京""輸出結(jié)果為:中國北京第頁共頁1133.4 運算符和表達式(1)首先進行函數(shù)運算;3.4.5表達式的執(zhí)行順序一個表達式可能含有多種運算,計算機按一定的順序?qū)Ρ磉_式求值。一種類型的運算其各運算符之間有不同的優(yōu)先級(參照前面介紹的關(guān)于算術(shù)運算符的優(yōu)先級和邏輯運算符的優(yōu)先級),不同種類的運算之間還有不同的優(yōu)先級。若在一個表達式中出現(xiàn)了多種運算,則一般的優(yōu)先順序如下:(2)接著進行算術(shù)運算,其次序為(從左至右,優(yōu)先級遞減):冪(^)→取負(-)→乘(*)、浮點除(/)→整除(\)→取模(mod)→加(+)、減(-);(3)接著進行連接運算;(4)然后進行比較運算;(5)最后進行邏輯運
算,順序為(從左至右,優(yōu)先級遞減):Not→And→Or→Xor→Eqv→Imp。第頁共頁1133.4 運算符和表達式3.4.5表達式的執(zhí)行順序提示(1)乘法和浮點除(或者加和減)同時出現(xiàn)在表達式中時,將按照它們從左至右出現(xiàn)的順序進行計算,但是,用括號可以改變表達式的優(yōu)先順序,強令它的某些部分優(yōu)先運行。括號內(nèi)的運算總是優(yōu)先于括號外的運算。第頁共頁113(2)當(dāng)冪和負號相鄰,負號優(yōu)先。例如:
x=2^-2"結(jié)果為0.25(2的負2次方)3.4 運算符和表達式3.4.5表達式的執(zhí)行順序在書寫表達式時,還應(yīng)注意以下幾點:乘號不能省略,也不能像在數(shù)學(xué)中那樣用“·”代替。第頁共頁113在一般情況下,不允許兩個運算符相連,應(yīng)
當(dāng)用括號隔開。表達式中使用括號時只能用圓括號,不能用方括號和或花括號。在冪運算中,當(dāng)表達式不是單個常量或變量時,要用括號括起來,例如:(x+y)^
(a+b)。3.5常用內(nèi)部函數(shù)數(shù)學(xué)函數(shù)轉(zhuǎn)換函數(shù)Section3.5.3時間日期函數(shù)隨機數(shù)函數(shù)字符串函數(shù)實例3-2——制作閃爍的文字3.5 常用內(nèi)部函數(shù)函數(shù)的概念與一般數(shù)學(xué)中的概念大致相同,是指一種特定的運算。在程序中要使用一個函數(shù)時,只要給出函數(shù)名和參數(shù),就能得到它的函數(shù)值。在VB中,函數(shù)分為兩類:內(nèi)部函數(shù)和用戶自定義函數(shù)。本節(jié)主要介紹VB中的內(nèi)部函數(shù),用戶自定義函數(shù)的方法將在后面介紹。內(nèi)部函數(shù)也稱標(biāo)準(zhǔn)函數(shù),VB提供了大量的內(nèi)部函數(shù),使用時只要直接調(diào)用函數(shù)名即可。內(nèi)部函數(shù)大體分為5類:數(shù)學(xué)函數(shù)轉(zhuǎn)換函數(shù)時間日期函數(shù)隨機數(shù)函數(shù)字符串函數(shù)第頁共頁1133.5 常用內(nèi)部函數(shù)3.5.1數(shù)學(xué)函數(shù)VB中常用的數(shù)學(xué)函數(shù)如下表所示。函數(shù)Sin(x)功能返回自變量x的正弦值函數(shù)Sgn(x)功能返回自變量x的符號Cos(x)返回自變量x的余弦值Sqr(x)返回自變量x的平方根Tan(x)返回自變量x的正切值Exp(x)返回e的x次方Atn(x)返回自變量x的反正切值Log(x)返回以e為底,x的對數(shù)Abs(x)返回自變量x的絕對值第頁共頁1133.5 常用內(nèi)部函數(shù)3.5.1數(shù)學(xué)函數(shù)說明:(1)三角函數(shù)的自變量x是一個數(shù)值表達式。其中Sin、Cos和Tan的自變量是
以弧度為單位的角度,而Atn函數(shù)的自變量是正切值,它返回正切值為x的角度,以弧度為單位。角度和弧度之間的轉(zhuǎn)換關(guān)系如下:1度=π/180=3.14159/180(弧度)例如,要求30°角的正弦值,可執(zhí)行如下語句:第頁共頁113?
sin(30*3.14159/180).4999996169872563.5 常用內(nèi)部函數(shù)3.5.1數(shù)學(xué)函數(shù)說明:符號函數(shù)Sgn返回的值是一個自變量的符號。當(dāng)自變量x>0時值為“1”;當(dāng)自變量x<0時值為“-1”;當(dāng)自變量x=0時值為“0”。函數(shù)Log返回的值是以e為底的對數(shù),所以自變量x的值應(yīng)大于0。應(yīng)該注意的是,在
VB中函數(shù)Log是以e(e約等于2.718282)為底的對數(shù)函數(shù)。x=Log(1)x=Log(10)x=Log(2.718282)第頁共頁113"結(jié)果為0"結(jié)果為2.302585"結(jié)果為1.000000063106393.5 常用內(nèi)部函數(shù)3.5.2轉(zhuǎn)換函數(shù)VB中的常用轉(zhuǎn)換函數(shù)如下表所示。第頁共頁113函數(shù)功能函數(shù)功能將x值的小數(shù)部分四舍五入,轉(zhuǎn)換為整型將x的值轉(zhuǎn)為貨幣類型值,小數(shù)部分最多保留4位,且自動四舍五入Int(x)求不大于自變量x的最大整數(shù)Cint(x)Fix(x)去掉一個浮點數(shù)的小數(shù)部分,保留其整數(shù)部分Ccur(x)Hex$(x)把一個十進制數(shù)轉(zhuǎn)換為十六進制數(shù)Cdbl(x)將x的值轉(zhuǎn)為雙精度浮點數(shù)Oct$(x)將十進制數(shù)轉(zhuǎn)換成八進制數(shù)Clng(x)同Cint(x),只是結(jié)果為長整型Asc(x$)返回字符串x$第一個字符的ASCII碼。
如果x$是數(shù)值,系統(tǒng)會自動將其轉(zhuǎn)換為字符串Csng(x)將x的值轉(zhuǎn)為單精度浮點數(shù)Chr$(x)將x的值轉(zhuǎn)化為相應(yīng)的ASCII字符Cvar(x)將x的值轉(zhuǎn)為變體類型值Str$(x)把x的值轉(zhuǎn)化為一個字符串3.5 常用內(nèi)部函數(shù)3.5.2轉(zhuǎn)換函數(shù)說明:(1)如果x>0,F(xiàn)ix(x)=Int(x),否則,如果x<0,F(xiàn)ix(x)仍取x的整數(shù),但Int(x)為
x的整數(shù)部分減1。對于Cint(x)來說,無論x是正數(shù)還是負數(shù),均按四舍五入處理。Clng(x)同Cint(x),只是結(jié)果為長整型。如下例所示:Private
Sub
Command1_Click()Dim
x1,
x2,
x3,
x4
As
Doublex1
=
12.89:
x2
=
20.34:
x3
=
-8.79:
x4
=
-7.34第頁共頁113Debug.Print
"Fix(x1)
=";
Fix(x1);
"
Int(x1)
=";
Int(x1);
"
Cint(x1)
=";
CInt(x1)Debug.Print
"Fix(x2)
=";
Fix(x2);
"
Int(x2)
=";
Int(x2);
"
Cint(x2)
=";
CInt(x2)Debug.Print
"Fix(x3)
=";
Fix(x3);
"
Int(x3)
=";
Int(x3);
"
Cint(x3)
=";
CInt(x3)Debug.Print
"Fix(x4)
=";
Fix(x4);
"
Int(x4)
=";
Int(x4);
"
Cint(x4)
=";
CInt(x4)Debug.Print
"Clng(x1)
=";
CLng(x1);
"Clng(x2)
=";
CLng(x2);
_"Clng(x3)
=";
CLng(x3);
"Clng(x4)
=";
CLng(x4)End
Sub程序運行結(jié)果如下:Fix(x1)
=
12Fix(x2)
=
20Fix(x3)
=-8Fix(x4)
=-7Int(x1)
=
12 Cint(x1)
=
13Int(x2)
=
20 Cint(x2)
=
20Int(x3)
=-9 Cint(x3)
=-9Int(x4)
=-8 Cint(x4)
=-7Clng(x1)
=
13
Clng(x2)
=
20
Clng(x3)
=-9
Clng(x4)
=-3.5 常用內(nèi)部函數(shù)3.5.2轉(zhuǎn)換函數(shù)(2)Asc(x$)函數(shù)將返回字符串x$中第一個字符的ASCII碼。說明:如果x$是數(shù)值,系統(tǒng)會自動將其轉(zhuǎn)換為字符串;Chr$(x)可將x的值轉(zhuǎn)化為相應(yīng)的ASCII字符;Str$(x)把x數(shù)值原樣轉(zhuǎn)換為字符串。如下例所示:x1
=
55:
x2
=
67Debug.Print
"Asc($x1)
=";
Asc(x1)Debug.Print
"Asc($x2)
=";
Asc(x2)Debug.Print
"Chr$(x1)
=";
Chr$(x1)Debug.Print
"Chr$(x2)
=";
Chr$(x2)Debug.Print
"Str$(x1)
=";
Str$(x1)Debug.Print
"Str$(x2)
=";
Str$(x2)第頁共頁113"返回“5”的ASCII碼"返回“6”的ASCII碼"返回ASCII碼為55的字符"返回ASCII碼為67的字符"將數(shù)值轉(zhuǎn)換為字符串
"將數(shù)值轉(zhuǎn)換為字符串程序運行結(jié)果如下:Asc($x1)
=
53Asc($x2)
=
54Chr$(x1)
=7Chr$(x2)
=CStr$(x1)
=
55Str$(x2)
=
673.5 常用內(nèi)部函數(shù)3.5.2轉(zhuǎn)換函數(shù)說明:Hex$(x)函數(shù)和Oct$(x)函數(shù)分別用來將十進制數(shù)轉(zhuǎn)換為十六進制數(shù)和八進制數(shù),如下例所示:第頁共頁113x
=
55Debug.Print
"Hex$(x)
=";
Hex$(x)Debug.Print
"Oct$(x)
=";
Oct$(x)"十進制轉(zhuǎn)換為十六進制,結(jié)果為37"十進制轉(zhuǎn)換為八進制,結(jié)果為67第頁3.5 常用內(nèi)部函數(shù)3.5.3時間日期函數(shù)VB中常用的時間日期函數(shù)如右表所示。共Mo1n13th頁(date)類別函數(shù)功能返回系統(tǒng)日期,如2017/2/13或2017-2-13返回系統(tǒng)時間,如18:41:58返回系統(tǒng)日期和時間,如
2017/2/13
18:41:58返回0~23之間表示小時的整數(shù)。
time可以是任何能夠表示時間的數(shù)值表達式、字符串表達式或變體
變量。如果time為Null,則返回值也為Null返回0~59之間表示分鐘的整數(shù)返回0~59之間表示秒的整數(shù)
返回1~31之間的整數(shù),表示一個月中的某一日。date可以是任何能夠表示日期的數(shù)值表達式、字符串表達式或變體變量。如果date為Null,則返回值也為Null返回1~7之間表示星期的整數(shù)返回1~12之間表示月份的整數(shù)系統(tǒng)日期、時間函數(shù)DateTimeNo
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 皮沙發(fā)維修合同協(xié)議
- 地下車庫車位租賃協(xié)議租賃合同8篇
- 瑜伽會館員工合同協(xié)議
- 電話號碼過戶合同協(xié)議
- 電力安全協(xié)議合同書
- 電覽采購合同協(xié)議書范本
- 用電合同解除協(xié)議書范本
- 電子建設(shè)工程合同協(xié)議
- 生產(chǎn)經(jīng)理入職合同協(xié)議
- 電梯維保報修合同協(xié)議
- 重機1900縫紉機使用說明書課件
- 刑事證據(jù)課件
- GB/T 15114-2023鋁合金壓鑄件
- 實驗心理學(xué)第九章-思維
- 校園直飲水工程建設(shè)可行性研究報告
- 機器學(xué)習(xí)課件周志華Chap11特征選擇與稀疏學(xué)習(xí)
- 第六章 配位滴定法課后習(xí)題及答案
- 特種用途船舶安全規(guī)則(SPS2008)
- 中華優(yōu)秀傳統(tǒng)文化的內(nèi)涵與特點【考點精研+知識架構(gòu)+提分專練】高中歷史統(tǒng)編版(2019)選擇性必修三文化交流與傳播
- 光伏工程強條執(zhí)行記錄表
- GB 15892-2009生活飲用水用聚氯化鋁
評論
0/150
提交評論