VB程序設(shè)計(jì)基礎(chǔ)課件_第1頁(yè)
VB程序設(shè)計(jì)基礎(chǔ)課件_第2頁(yè)
VB程序設(shè)計(jì)基礎(chǔ)課件_第3頁(yè)
VB程序設(shè)計(jì)基礎(chǔ)課件_第4頁(yè)
VB程序設(shè)計(jì)基礎(chǔ)課件_第5頁(yè)
已閱讀5頁(yè),還剩153頁(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)介

第4章VB程序設(shè)計(jì)基礎(chǔ)本章內(nèi)容及要求:4.1數(shù)據(jù)類型4.2常量和變量4.3變量的作用域4.4常用內(nèi)部函數(shù)4.5字符處理與字符串函數(shù)4.6運(yùn)算符與表達(dá)式第4章VB程序設(shè)計(jì)基礎(chǔ)本章內(nèi)容及要求:4.1數(shù)據(jù)類型4.1數(shù)據(jù)類型數(shù)據(jù)是信息在計(jì)算機(jī)內(nèi)的表現(xiàn)形式,也是程序處理的對(duì)象。VB提供了系統(tǒng)定義的基本數(shù)據(jù)類型,還允許用戶定義自己的數(shù)據(jù)類型。數(shù)據(jù)類型基本類型字符串型數(shù)值型整型數(shù)整數(shù)型長(zhǎng)整數(shù)浮點(diǎn)數(shù)單精度雙精度貨幣型字節(jié)型布爾型日期型變體型對(duì)象型Decimal型用戶定義類型記錄類型枚舉類型4.1數(shù)據(jù)類型數(shù)據(jù)是信息在計(jì)算機(jī)內(nèi)的表現(xiàn)形式,也是程序處理4.1數(shù)據(jù)類型一、基本數(shù)據(jù)類型1.字符串型String字符串是一個(gè)字符序列,由ASCII字符組成。字符串通常要用雙引號(hào)括起來(lái)。例如: “Hello!” "湖南省衡陽(yáng)市" “8888” "***” “”

‘空字符串 ““

‘有一個(gè)空格的字符串若字符串中有雙引號(hào),例如ABD“XYZ,則用連續(xù)兩個(gè)雙引號(hào)表示,即:"ABD""XYZ“4.1數(shù)據(jù)類型一、基本數(shù)據(jù)類型1.字符串型String4.1數(shù)據(jù)類型VB中的字符串分為兩種:變長(zhǎng)字符串和定長(zhǎng)字符串。變長(zhǎng)字符串的長(zhǎng)度是不確定的,可以從0~231(約21億)個(gè)字符。定長(zhǎng)字符串含有確定個(gè)數(shù)的字符,最大長(zhǎng)度不超過(guò)216(65535)個(gè)字符。4.1數(shù)據(jù)類型VB中的字符串分為兩種:變長(zhǎng)字符串和定長(zhǎng)字符4.1數(shù)據(jù)類型2.數(shù)值型數(shù)值型數(shù)據(jù)分為整型數(shù)和浮點(diǎn)數(shù)兩類。(1)整型數(shù)整型數(shù)是不帶小數(shù)點(diǎn)和指數(shù)符號(hào)的數(shù),在機(jī)器內(nèi)部以二進(jìn)制補(bǔ)碼形式表示。正數(shù)的補(bǔ)碼和它的二進(jìn)制形式(即源碼)相同;負(fù)數(shù)的補(bǔ)碼為該數(shù)的絕對(duì)值的二進(jìn)制形式取反加1。例如,整型數(shù)4,-4分別以下面的形式存放:(最高位為符號(hào)位,其中0為正,1為負(fù))4

00000000

00000100-4

11111111

11111100

整數(shù)的運(yùn)算速度快,而且比其他數(shù)據(jù)類型占據(jù)的內(nèi)存少。4.1數(shù)據(jù)類型2.數(shù)值型4.1數(shù)據(jù)類型整型數(shù)又分為整數(shù)和長(zhǎng)整數(shù):整數(shù)Integer以2個(gè)字節(jié)(16位)的二進(jìn)制數(shù)存儲(chǔ),取值范圍為-32,768~32,767。長(zhǎng)整數(shù)Long以4個(gè)字節(jié)(32位)的二進(jìn)制數(shù)存儲(chǔ),取值范圍為-2,147,483,648~2,147,483,647。4.1數(shù)據(jù)類型整型數(shù)又分為整數(shù)和長(zhǎng)整數(shù):4.1數(shù)據(jù)類型二進(jìn)制十進(jìn)制00000000

00000000000000000

00000001100000000

00000010200000000

000000113…

……

…01111111

111111113276710000000

00000000-3276810000000

00000001-3276710000000

00000010-32766…

……

…11111111

11111110-211111111

11111111-1思考:為什么16位整數(shù)Integer的取值范圍為-32,768~32,767?4.1數(shù)據(jù)類型二進(jìn)制十進(jìn)制0000000000000004.1數(shù)據(jù)類型注意:16位整數(shù)Integer如果超出了這個(gè)取值范圍(-32,768~32,767),數(shù)據(jù)便會(huì)溢出。請(qǐng)看下面的代碼:PrivateSubForm_Load()

DimaAsInteger

a=32767

a=a+1

MsgBoxaEndSub4.1數(shù)據(jù)類型注意:16位整數(shù)Integer如果超出了4.1數(shù)據(jù)類型(2)浮點(diǎn)數(shù)浮點(diǎn)數(shù)也稱實(shí)數(shù),是帶有小數(shù)部分的數(shù)值。分為單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)。單精度Single以4個(gè)字節(jié)(32位)存儲(chǔ),可以精確到7位十進(jìn)制數(shù)。其中符號(hào)占1位,指數(shù)占8位,其余23位表示尾數(shù),還有一個(gè)附加的隱含位。其負(fù)數(shù)的取值范圍為-3.402823E+38

~

-1.401298E-45,正數(shù)的取值范圍為1.401298E-45

~

3.402823E+38。表示形式為:±n.nE±m(xù)其中n.n是尾數(shù),m是指數(shù)(以10為底的冪)例:-123.4E-3或-123.4e-3,相當(dāng)于-0.1234

1.2345E3或1.2345e3,相當(dāng)于1234.54.1數(shù)據(jù)類型(2)浮點(diǎn)數(shù)4.1數(shù)據(jù)類型雙精度Double以8個(gè)字節(jié)(64位)存儲(chǔ),可以精確到15到16位十進(jìn)制數(shù)。其中符號(hào)占1位,指數(shù)占11位,其余52位表示尾數(shù),還有一個(gè)附加的隱含位。表示形式為:±n.nD±m(xù)其中n.n是尾數(shù),m是指數(shù)(以10為底的冪)

例:123.4567D3或123.4567d+3,相當(dāng)于123456.74.1數(shù)據(jù)類型雙精度Double4.1數(shù)據(jù)類型(3)貨幣型Currency貨幣數(shù)據(jù)類型通常用于表示錢款。以8個(gè)字節(jié)(64位)存儲(chǔ),精確到小數(shù)點(diǎn)后面4位(小數(shù)點(diǎn)前面有15位)。在小數(shù)點(diǎn)后4位以后的數(shù)字將被舍去。其取值范圍為-922,337,203,685,477.5808

~-922,337,203,685,477.5807浮點(diǎn)數(shù)中的小數(shù)點(diǎn)是“浮動(dòng)”的,小數(shù)點(diǎn)可以出現(xiàn)在數(shù)的任何位置,而貨幣型數(shù)據(jù)的小數(shù)點(diǎn)是固定的,因此稱為定點(diǎn)數(shù)據(jù)類型。

4.1數(shù)據(jù)類型(3)貨幣型Currency4.1數(shù)據(jù)類型(4)字節(jié)型Byte以1個(gè)字節(jié)(8位)的無(wú)符號(hào)二進(jìn)制數(shù)存儲(chǔ),其取值范圍為0~255。

注:在實(shí)際應(yīng)用中,應(yīng)根據(jù)需要使用數(shù)據(jù)類型。能用整型就不要用浮點(diǎn)型或貨幣型;如果要求的精度不高,則應(yīng)使用單精度變量。這樣不僅節(jié)省內(nèi)存空間,而且可以提高處理速度。

4.1數(shù)據(jù)類型(4)字節(jié)型Byte4.1數(shù)據(jù)類型3.布爾型Boolean

布爾型數(shù)據(jù)是一個(gè)邏輯值,用2個(gè)字節(jié)存儲(chǔ),它只取兩個(gè)值:True/False。布爾型變量的默認(rèn)值為False。將邏輯數(shù)據(jù)轉(zhuǎn)換成整型時(shí):True為-1,F(xiàn)alse為0;其它數(shù)據(jù)轉(zhuǎn)換成邏輯數(shù)據(jù)時(shí):非0為True,0為False。例如,下面的代碼定義一個(gè)布爾型變量,并輸出該變量:DimmyblnAsBooleanmybln=3MsgBoxmybln4.1數(shù)據(jù)類型3.布爾型Boolean4.1數(shù)據(jù)類型4.日期型Date

日期型數(shù)據(jù)占用8個(gè)字節(jié),以浮點(diǎn)數(shù)形式存儲(chǔ)。小數(shù)點(diǎn)左邊的數(shù)值表示日期(距離1899-12-30的天數(shù)),小數(shù)點(diǎn)右邊的數(shù)值表示時(shí)間。日期型數(shù)據(jù)的日期表示范圍:100年1月1日~9999年12月31日,時(shí)間表示范圍:0:00:00~23:59:59。日期常數(shù)必須用“#”符號(hào)括起來(lái)。

例如:下面的幾種日期型數(shù)據(jù)的格式都是合法的:

#9/1/2009#或#2009-09-01# #September

1,2009#

#08:30:00AM#

#2002-5-414:30:00PM#4.1數(shù)據(jù)類型4.日期型Date4.1數(shù)據(jù)類型5.變體型Variant變體數(shù)據(jù)類型是一種可變的數(shù)據(jù)類型,可以表示任何值,包括數(shù)值、字符串、日期/時(shí)間等。當(dāng)變體數(shù)據(jù)為數(shù)值時(shí),以16個(gè)字節(jié)存儲(chǔ),最大可達(dá)Double的取值范圍;當(dāng)變體數(shù)據(jù)為字符時(shí),以22字節(jié)+字符串長(zhǎng),與變長(zhǎng)String有相同的取值范圍

。6.對(duì)象型Object對(duì)象型數(shù)據(jù)作為32位(4個(gè)字節(jié))地址來(lái)存儲(chǔ),該地址可以引用程序中的任何對(duì)象。4.1數(shù)據(jù)類型5.變體型Variant4.1數(shù)據(jù)類型7.Decimal數(shù)據(jù)類型

Decimal數(shù)據(jù)以12個(gè)字節(jié)存儲(chǔ),最多支持29個(gè)有效數(shù)位,在內(nèi)存中的表示形式比浮點(diǎn)數(shù)更精確。適用于要求使用大量有效的整數(shù)及小數(shù)位數(shù),并且不能容忍舍入誤差的財(cái)務(wù)計(jì)算。

Decimal數(shù)據(jù)類型只能在變體類型(Variant)中使用,不能把一個(gè)變量聲明為Decimal類型。4.1數(shù)據(jù)類型7.Decimal數(shù)據(jù)類型4.1數(shù)據(jù)類型二、用戶定義的數(shù)據(jù)類型用戶自定義類型,也稱為記錄類型,通過(guò)Type語(yǔ)句來(lái)實(shí)現(xiàn),其語(yǔ)法格式如下: Type數(shù)據(jù)類型名

元素名As類型名

元素名As類型名

… End

Type

4.1數(shù)據(jù)類型二、用戶定義的數(shù)據(jù)類型用戶自定義類型,也稱4.1數(shù)據(jù)類型例如:對(duì)于一個(gè)學(xué)生的“學(xué)號(hào)”、“姓名”、“性別”、“年齡”、“入學(xué)成績(jī)”等數(shù)據(jù),為了處理數(shù)據(jù)的方便,常常需要把這些數(shù)據(jù)定義成一個(gè)新的數(shù)據(jù)類型(如Student類型)

TypeStudent XhAsString XmAsString XbAsString NlAsInteger ScoreAsSingle EndType二、用戶定義的數(shù)據(jù)類型4.1數(shù)據(jù)類型例如:對(duì)于一個(gè)學(xué)生的“學(xué)號(hào)”、“姓名”4.1數(shù)據(jù)類型使用Type語(yǔ)句,應(yīng)注意以下幾點(diǎn):1.記錄類型的定義必須放在模塊(包括標(biāo)準(zhǔn)模塊和窗體模塊)的聲明部分,在使用記錄類型之前,必須用Type語(yǔ)句加以定義。2.一般情況下,記錄類型在標(biāo)準(zhǔn)模塊中定義,其變量可以出現(xiàn)在工程的任何地方。當(dāng)在標(biāo)準(zhǔn)模塊中定義時(shí),關(guān)鍵字Type前可以有Public(默認(rèn))或Private;而如果在窗體模塊中定義,則必須在前面加上關(guān)鍵字Private。3.在記錄類型中不能使用動(dòng)態(tài)數(shù)組。4.1數(shù)據(jù)類型使用Type語(yǔ)句,應(yīng)注意以下幾點(diǎn):4.1數(shù)據(jù)類型下面的代碼聲明了一個(gè)Student類型變量st,然后為其各個(gè)元素賦初值,最后輸出:PrivateSubForm_Load()DimstAsStudentst.Xh="20050001"st.Xm="王一"st.Xb="男"st.Nl=17st.Score=92.5MsgBox"學(xué)號(hào):"&st.Xh&Chr(10)&"姓名:"&st.Xm&Chr(10)&"性別:"&_st.Xb&Chr(10)&"年齡:"&st.Nl&Chr(10)&"入學(xué)成績(jī):"&st.ScoreEndSub4.1數(shù)據(jù)類型下面的代碼聲明了一個(gè)Student類型變量4.2常量和變量一、常量在VB中有三類常量:普通常量、符號(hào)常量和系統(tǒng)常量

1.普通常量普通常量指的是具體的常數(shù),其類型有字符串型、整型、浮點(diǎn)型、布爾型、日期型等。不同類型的數(shù)據(jù)可以常量的形式出現(xiàn),也可以變量的形式出現(xiàn)。常量在程序運(yùn)行過(guò)程中其值不會(huì)發(fā)生變化。而變量的值是可變的,它代表內(nèi)存中指定的存儲(chǔ)單元。4.2常量和變量一、常量在VB中有三類常量:普通常量4.2常量和變量整型常數(shù)有3種形式:十進(jìn)制:由八進(jìn)制數(shù)字(0~9)組成。如125,0,-89。八進(jìn)制:由八進(jìn)制數(shù)字(0~7)組成。以&或&O(字母O)開頭,以&結(jié)尾。例如:&O25&表示八進(jìn)制整數(shù)25,即(25)8

,等于十進(jìn)制數(shù)21。十六進(jìn)制:由十六進(jìn)制數(shù)字(0~9及A~F)組成。以&H開頭,以&結(jié)尾。例如:&H25&表示十六進(jìn)制整數(shù)25,即(25)16

,等于十進(jìn)制數(shù)37。VB中的顏色數(shù)據(jù)常常用十六進(jìn)制整數(shù)表示。4.2常量和變量整型常數(shù)有3種形式:4.2常量和變量

VB在判斷常量類型時(shí)存在多義性。例如,值3.01可能是單精度類型,也可能是雙精度類型或貨幣類型。為了顯式地指明常數(shù)的類型,可以在常數(shù)后面加上類型說(shuō)明符。 % 整型 & 長(zhǎng)整型 ! 單精度浮點(diǎn)數(shù) # 雙精度浮點(diǎn)數(shù) @ 貨幣型 $ 字符串型字節(jié)、布爾、日期、對(duì)象及變體類型沒(méi)有類型說(shuō)明符。4.2常量和變量VB在判斷常量類型時(shí)存在多義性。例如,4.2常量和變量

2.符號(hào)常量在程序中,某個(gè)常量多次被使用,則可以使用一個(gè)符號(hào)來(lái)代替該常量,這樣不僅在書寫上方便,而且有效地改進(jìn)了程序的可讀性和可維護(hù)性。

VB中使用關(guān)鍵字Const聲明符號(hào)常量。其格式如下:Const常量名

[As類型|類型符號(hào)]=表達(dá)式[

,常量名=表達(dá)式]注:表達(dá)式由普通常量、算術(shù)和邏輯運(yùn)算符組成,但不能使用變量及函數(shù)。例如:

ConstMaxchars=254,Maxbue=Maxchars+1

’注意順序

ConstPI#=3.1415926等價(jià)于:

ConstPIAsDouble=3.14159264.2常量和變量2.符號(hào)常量4.2常量和變量

3.系統(tǒng)常量

VB系統(tǒng)提供了應(yīng)用程序和控件的系統(tǒng)定義常數(shù)。

例如,要將文本框Text1的前景顏色設(shè)置為紅色,可以使用下面的語(yǔ)句:Text1.ForeColor=vbRed這里的vbRed就是系統(tǒng)常量,這比直接使用16進(jìn)制數(shù)來(lái)設(shè)置要直觀得多。又如,窗口狀態(tài)屬性WindowsState可取0,1,2三個(gè)值,對(duì)應(yīng)三種不同狀態(tài)。在程序中使用語(yǔ)句:Myform.WindowsState=vbMaxmized,將窗口最大化,顯然要比使用語(yǔ)句Myform.WindowsState=2

易于閱讀和理解。4.2常量和變量3.系統(tǒng)常量4.2常量和變量二、變量變量是在程序運(yùn)行時(shí),其值不斷發(fā)生改變的量。一個(gè)變量對(duì)應(yīng)著計(jì)算機(jī)內(nèi)存中的一塊存儲(chǔ)單元。

例如,有兩個(gè)存儲(chǔ)單元,名稱分別為User和Password,存放的值分別為“管理員”和“111”,如圖所示:也可以將這兩個(gè)存儲(chǔ)單元的值改為“普通用戶”和“222”:管理員User111Password普通用戶User222Password4.2常量和變量二、變量變量是在程序運(yùn)行時(shí),其值不斷發(fā)4.2常量和變量1.變量命名規(guī)則只能由英文字母、漢字、數(shù)字和下劃線組成,中間不能出現(xiàn)空格或小數(shù)點(diǎn)等;例如:變量名file_name是合法的,而filename是非法的。必須以字母或漢字開頭,最后一個(gè)符號(hào)可以是類型說(shuō)明符;例如:book3、a%這兩個(gè)變量名是合法的;而3book是非法的。VB中不區(qū)分變量名的大小寫;例如,Hello、HELLO、hello指的是同一個(gè)名字。4.2常量和變量1.變量命名規(guī)則4.2常量和變量變量名長(zhǎng)度可達(dá)255個(gè)字符;VB中的關(guān)鍵字不能單獨(dú)作為變量名;VB關(guān)鍵字包括預(yù)定義語(yǔ)句(If,F(xiàn)or,Loop等)、操作符(And,Mod等)和函數(shù)(Int,Sqr等)。例如,Print是非法變量名,但Print_3或Print3是合法的。為了增加程序的可讀性,可在變量名前加一個(gè)縮寫的前綴來(lái)表明該變量的數(shù)據(jù)類型。變量名一般大小寫混合使用。例如:strAbc(字符串變量)

intCount(整型變量)4.2常量和變量變量名長(zhǎng)度可達(dá)255個(gè)字符;[思考與練習(xí)]1.下列哪個(gè)符號(hào)不能作為VB中的變量名?(1)ABCabc(2)b1234(3)28wed(4)cmd2.下列符號(hào)哪一個(gè)是VB中的合法變量名?(1)x23(2)8xy(3)END(4)x8[B]變量命名規(guī)則[思考與練習(xí)]變量命名規(guī)則4.2常量和變量2.變量的聲明在VB程序中,使用變量前,一般要先聲明變量的名稱和數(shù)據(jù)類型。

VB中可以強(qiáng)制顯式聲明變量,方法是在窗體模塊、標(biāo)準(zhǔn)模塊和類模塊的通用聲明段中添加語(yǔ)句:

Option

Explicit也可以設(shè)置為自動(dòng)添加,方法是:選擇“工具”“選項(xiàng)”“要求變量聲明”。建議在程序設(shè)計(jì)的開始就設(shè)置。4.2常量和變量2.變量的聲明4.2常量和變量變量的聲明可以采用三種方式:用聲明語(yǔ)句顯式聲明變量用DefType語(yǔ)句聲明變量隱式聲明變量(1)用聲明語(yǔ)句顯式聲明變量格式:Dim|Static|Public|Private變量名

As

數(shù)據(jù)類型4.2常量和變量變量的聲明可以采用三種方式:4.2常量和變量Dim用于在標(biāo)準(zhǔn)模塊、窗體模塊中定義模塊級(jí)變量或在過(guò)程中定義局部變量。例如:

Dim

Str

As

String

DimTotalAsInteger

DimVar1AsString,Var2AsDouble

‘定義多個(gè)變量

DimVar1,Var2AsInteger

‘注意:該語(yǔ)句并不能把兩個(gè)變量同時(shí)定義為整型

4.2常量和變量Dim4.2常量和變量

可以使用類型說(shuō)明符來(lái)替代As語(yǔ)句:Dim

Str$DimTotal%DimVar1$,Var2#則在引用該變量時(shí)可以省略類型說(shuō)明符。例如,下面兩個(gè)語(yǔ)句都是正確的: Var1="Thisisastring" Var1$="Thisisastring“4.2常量和變量可以使用類型說(shuō)明符來(lái)替代As語(yǔ)句:4.1數(shù)據(jù)類型用AsString

可以定義變長(zhǎng)字符串變量,也可以定義為定長(zhǎng)字符串變量。變長(zhǎng)字符串變量:其長(zhǎng)度取決于賦給它的字符串常量的長(zhǎng)度。例如:DimNamevarAsString

‘定義為變長(zhǎng)字符串變量

Namevar=“湖南省衡陽(yáng)市”定長(zhǎng)字符串變量:事先定義字符串的長(zhǎng)度,在程序運(yùn)行過(guò)程中,始終保持其長(zhǎng)度不變。當(dāng)給它賦值時(shí),不足的部分用空格填滿;多出的字符被截去。例如:DimMyNameAsString*4

‘定義為定長(zhǎng)字符串變量

MyName=“湖南省衡陽(yáng)市"

4.1數(shù)據(jù)類型用AsString可以定義變長(zhǎng)字符串變量4.2常量和變量Static

Static用于在過(guò)程中定義靜態(tài)變量,每次引用該變量定義時(shí),其值會(huì)繼續(xù)保留。由Dim定義的變量稱為自動(dòng)變量,每次引用該變量定義時(shí),變量值會(huì)被重新設(shè)置(數(shù)值變量設(shè)置為0,字符串變量設(shè)置為空)。例如:下面的程序中變量Var1和Var2的值會(huì)相同嗎? PrivateSubForm_Click()

DimVar1AsInteger

StaticVar2AsInteger

Var1=Var1+1

Var2=Var2+1

PrintVar1,Var2

EndSub每單擊一次窗體,靜態(tài)變量Var2累加1,而自動(dòng)變量Var1會(huì)被置04.2常量和變量Static4.2常量和變量Public用來(lái)在標(biāo)準(zhǔn)模塊中定義全局變量。Private用來(lái)在標(biāo)準(zhǔn)模塊、窗體模塊的聲明部分定義模塊級(jí)變量。4.2常量和變量Public4.2常量和變量(2)

用DefType語(yǔ)句聲明變量用DefType語(yǔ)句可以在標(biāo)準(zhǔn)模塊、窗體模塊的聲明部分定義變量,且只對(duì)它所在的模塊起作用。一般格式:Def

Type字母范圍

Type可以是Int、Lng、Sng、Dbl、Cur、Str、Byte、Bool、Date、Obj、Var。DefType語(yǔ)句中說(shuō)明的字母、以及以該字母開頭的變量名都是那種類型的變量名。例如:DefDbl

L-P

‘凡是變量名以字母L到P開頭的變量都定義為雙精度型。類型說(shuō)明符(%&#!@$)總是比DefType語(yǔ)句優(yōu)先起作用。4.2常量和變量(2)用DefType語(yǔ)句聲明變量4.2常量和變量(3)

隱式聲明變量

VB允許用戶不顯式聲明變量而直接使用,系統(tǒng)臨時(shí)為新變量分配存儲(chǔ)空間并使用,這就是隱式聲明。所有隱式聲明的變量都是Variant數(shù)據(jù)類型。VB根據(jù)程序中賦予變量的值來(lái)自動(dòng)調(diào)整變量的類型。下面的程序中使用的變量a,b,Total都沒(méi)有事先定義: PrivateSubForm_Click() Total%=0 a=10:b=20 Total=a+b Print“Total=";Total EndSub4.2常量和變量(3)隱式聲明變量下面的程序中使用的變量4.3變量的作用域

每個(gè)變量都有它的作用范圍,即作用域。根據(jù)變量在VB應(yīng)用程序中的定義位置和所使用的定義語(yǔ)句的不同,可以分為局部變量、模塊變量和全局變量。

VB應(yīng)用程序的構(gòu)成應(yīng)用程序窗體模塊聲明部分通用過(guò)程事件過(guò)程標(biāo)準(zhǔn)模塊聲明部分通用過(guò)程4.3變量的作用域每個(gè)變量都有它的作用范圍,即作用域。4.3變量的作用域在過(guò)程(事件過(guò)程或通用過(guò)程)內(nèi)定義的變量叫做局部變量,其作用域是它所在的過(guò)程。因此,在不同的過(guò)程中可以定義相同名字的局部變量。局部變量在過(guò)程內(nèi)用Dim、Static定義,例如:

SubCommand1_Click() DimTempnumAsInteger StaticTotalAsDouble EndSub一、局部變量Local4.3變量的作用域在過(guò)程(事件過(guò)程或通用過(guò)程)內(nèi)定義的4.3變量的作用域模塊變量包括窗體變量和標(biāo)準(zhǔn)模塊變量。窗體變量可用于該窗體內(nèi)的所有過(guò)程(事件過(guò)程或通用過(guò)程)。當(dāng)同一窗體內(nèi)的不同過(guò)程使用相同的變量時(shí),必須定義窗體層變量。窗體層變量不能隱式聲明。方法是:在程序代碼窗口的“對(duì)象”框中選擇“通用”,并在“過(guò)程”框中選擇“聲明”。標(biāo)準(zhǔn)模塊中模塊層變量的聲明和使用與窗體層變量類似。

二、模塊變量Module4.3變量的作用域模塊變量包括窗體變量和標(biāo)準(zhǔn)模塊變量。4.3變量的作用域默認(rèn)情況下,模塊級(jí)變量對(duì)該模塊中的所有過(guò)程都是可見(jiàn)的,但對(duì)其他模塊不可見(jiàn)。模塊級(jí)變量在模塊的聲明部分用Private、Dim聲明。例如: PrivateintTempAsInteger或 Dim

intTempAsInteger

4.3變量的作用域默認(rèn)情況下,模塊級(jí)變量對(duì)該模塊中的所4.3變量的作用域全局變量的作用域最大,可以在工程的每個(gè)模塊、每個(gè)過(guò)程中使用。全局變量必須在標(biāo)準(zhǔn)模塊的聲明部分中聲明,不能在過(guò)程或窗體模塊中聲明;并且,全局變量必須用Public或Global語(yǔ)句聲明,不能用Dim語(yǔ)句聲明。例如: PublicintNumberAsInteger

三、全局變量Public4.3變量的作用域全局變量的作用域最大,可以在工程的每4.3變量的作用域?qū)τ诰植孔兞縼?lái)說(shuō),可以不用Dim或Static定義,而是在需要時(shí)直接給出變量名(不建議)。默認(rèn)聲明只適用于局部變量,模塊級(jí)變量和全局變量必須用Dim或Public語(yǔ)句顯式聲明。默認(rèn)聲明局部變量,有可能使程序出現(xiàn)無(wú)法預(yù)料的結(jié)果,而且較難查出錯(cuò)誤。為了安全起見(jiàn),最好能顯式地聲明程序中使用的所有變量。下面通過(guò)實(shí)例說(shuō)明。四、默認(rèn)聲明(隱式聲明)4.3變量的作用域?qū)τ诰植孔兞縼?lái)說(shuō),可以不用Dim或S4.4常用內(nèi)部函數(shù)

VB提供了上百種內(nèi)部函數(shù),要求掌握表4.4中常用函數(shù)的功能及使用:數(shù)學(xué)函數(shù)、轉(zhuǎn)換函數(shù)、日期和時(shí)間函數(shù)、隨機(jī)數(shù)函數(shù)。函數(shù)調(diào)用方法:

函數(shù)名(參數(shù)列表)有參函數(shù)函數(shù)名無(wú)參函數(shù)說(shuō)明:(1)使用內(nèi)部函數(shù)要注意參數(shù)的個(gè)數(shù)及其參數(shù)的數(shù)據(jù)類型;(2)要注意函數(shù)的定義域(自變量或參數(shù)的取值范圍);(3)要注意函數(shù)的值域。4.4常用內(nèi)部函數(shù)VB提供了上百種內(nèi)部函數(shù),要求掌握表4.4常用內(nèi)部函數(shù)常用的數(shù)學(xué)函數(shù)有:

Sin(x)

Cos(x) Tan(x) Atn(x)

Abs(x)

Sgn(x) Sqr(x) Exp(x)說(shuō)明:

(1)在三角函數(shù)中的自變量是以弧度為單位。如:sin300sin(3.14159/180*30)

(2)

sqr(x)函數(shù)要求自變量x>=0

(3)

Exp(x)函數(shù)要求自變量x不能超過(guò)709.782712893,否則函數(shù)的值就會(huì)超出實(shí)數(shù)在計(jì)算機(jī)中的表示范圍,導(dǎo)致錯(cuò)誤發(fā)生。一、數(shù)學(xué)函數(shù)4.4常用內(nèi)部函數(shù)常用的數(shù)學(xué)函數(shù)有:一、數(shù)學(xué)函數(shù)4.4常用內(nèi)部函數(shù)常用轉(zhuǎn)換函數(shù)見(jiàn)表4.4,相關(guān)說(shuō)明如下:(1)要區(qū)別兩個(gè)取整函數(shù)int()和fix()Fix(N)為截?cái)嗳≌?,即去掉小?shù)后的數(shù)。

Int(N)為不大于N的最大整數(shù)。例如:Fix(9.59)=9,Int(9.59)=9Fix(-9.59)=-9,Int(-9.59)=-10(2)Asc("Abcd")

值為:65(只取首字母的AscII值)

(3)Val(“abc123”)

值為:0,

Val("1.2sa10")值為1.2

注意:Val()函數(shù)只將最前面的數(shù)字字符轉(zhuǎn)換為數(shù)值。二、轉(zhuǎn)換函數(shù)4.4常用內(nèi)部函數(shù)常用轉(zhuǎn)換函數(shù)見(jiàn)表4.4,相關(guān)說(shuō)明如下:4.4常用內(nèi)部函數(shù)

1.Date、Now、Time函數(shù)

Date函數(shù):返回當(dāng)前系統(tǒng)日期。語(yǔ)法:Date

Now函數(shù):返回當(dāng)前系統(tǒng)日期和時(shí)間。語(yǔ)法:Now

Time函數(shù):返回當(dāng)前系統(tǒng)時(shí)間。語(yǔ)法:Time

2.Year、Day、Month函數(shù)(年、月、日)

Year函數(shù):返回年份。語(yǔ)法:Year(Now)

Day函數(shù):返回年份。語(yǔ)法:Day(Now)

Month函數(shù):返回年份。語(yǔ)法:Month(Now)

3.Hour、Minute、Second函數(shù)(時(shí)、分、秒)

Hour函數(shù):返回小時(shí)。語(yǔ)法:Hour(Now)

Minute函數(shù):返回分鐘。語(yǔ)法:Minute(Now)

Second函數(shù):返回秒。語(yǔ)法:Second(Now)

三、日期和時(shí)間函數(shù)4.4常用內(nèi)部函數(shù)1.Date、Now、Time函數(shù)三4.4常用內(nèi)部函數(shù)

語(yǔ)法:Rnd[(number)]

Rnd函數(shù)可以省略參數(shù)和括號(hào)。返回[0~1)(即包括0,但不包括1)之間的單精度隨機(jī)數(shù)。

四、隨機(jī)數(shù)函數(shù)Rnd如果number的值Rnd生成小于0每次都使用number作為隨機(jī)數(shù)種子得到相同的結(jié)果大于0序列中的下一個(gè)隨機(jī)數(shù)等于0最近生成的數(shù)默認(rèn)序列中的下一個(gè)隨機(jī)數(shù)4.4常用內(nèi)部函數(shù)語(yǔ)法:Rnd[(number)]四、隨4.4常用內(nèi)部函數(shù)若要產(chǎn)生1~100的隨機(jī)整數(shù),則可通過(guò)下面的表達(dá)式來(lái)實(shí)現(xiàn):

Int(Rnd*100)+1

'包括1和100

Int(Rnd*99)+1

'包括1,但不包括100思考:怎樣產(chǎn)生[N,M]區(qū)間的隨機(jī)數(shù)?Int(Rnd*(M-N+1))+N4.4常用內(nèi)部函數(shù)若要產(chǎn)生1~100的隨機(jī)整數(shù),則可通4.4常用內(nèi)部函數(shù)當(dāng)應(yīng)用程序不斷地重復(fù)使用隨機(jī)數(shù)時(shí),同一序列的隨機(jī)數(shù)會(huì)反復(fù)出現(xiàn),用Randomize語(yǔ)句可以消除這種情況,其格式為:Randomize

(

x

)

功能:初始化隨機(jī)數(shù)生成器。如省略參數(shù),則用系統(tǒng)計(jì)時(shí)器返回的值作為新的種子值。例如:下段程序每次運(yùn)行,將產(chǎn)生不同序列的20個(gè)[10,99]之間的隨機(jī)整數(shù)。PrivateSubForm_click()

Randomize

Fori=1To20PrintInt(Rnd*90)+10;NextiPrintEndSub4.4常用內(nèi)部函數(shù)當(dāng)應(yīng)用程序不斷地重復(fù)使用隨機(jī)數(shù)時(shí),同4.5字符處理與字符串函數(shù)

ANSI方式:早前的版本采用。西文字符用一個(gè)字節(jié)編碼,中文字符用兩個(gè)字節(jié)編碼。一個(gè)中文字符相當(dāng)于兩個(gè)西文字符。

UniCode方式:4.0以后的版本采用。中西文字符統(tǒng)一編碼,一個(gè)英文字符或一個(gè)漢字都看作一個(gè)字符,均用兩個(gè)字節(jié)編碼。PrintLen("BASIC程序設(shè)計(jì)")‘9PrintLenB(“BASIC程序設(shè)計(jì)”)

18注:VB6.0中,LenB返回的是用于存儲(chǔ)字符串的字節(jié)數(shù),而不是返回字符串中字符的數(shù)量。

一、VB的字符處理機(jī)制4.5字符處理與字符串函數(shù)ANSI方式:早前的版本采用。4.5字符處理與字符串函數(shù)為了實(shí)現(xiàn)ANSI與UniCode之間的轉(zhuǎn)換,VB提供了一個(gè)轉(zhuǎn)換函數(shù)StrConv,格式如下:新字符串=StrConv(待轉(zhuǎn)換字符串,轉(zhuǎn)換格式)其中,“轉(zhuǎn)換格式”可以取值為:

vbUnicode(值為64)‘將ANSI轉(zhuǎn)換為UniCode

vbFromUnicode(值為128)‘將UniCode轉(zhuǎn)換為ANSI例4.1編寫程序,測(cè)試StrConv函數(shù)功能。

一、VB的字符處理機(jī)制4.5字符處理與字符串函數(shù)為了實(shí)現(xiàn)ANSI與UniCo4.5字符處理與字符串函數(shù)

1.去空格函數(shù)

Ltrim$(字符串):去除字符串左邊的空白字符;$可以省略。

RTrim$(字符串)

:去除字符串右邊的空白字符;

Trim$(字符串):去除字符串兩邊的空白字符。

例如:a$="GoodMorning"

b$=LTrim$(a$)

c$=RTrim$(b$)

Printb$;c$;"ABC“輸出結(jié)果:Good

Morning

Good

MorningABC

二、字符串函數(shù)4.5字符處理與字符串函數(shù)1.去空格函數(shù)二、字符串函數(shù)4.5字符處理與字符串函數(shù)

2.字符串截取函數(shù)左部截?。篖eft$(字符串,n)返回字符串的前n個(gè)字符。例:Left$(“ABCDEF”,4)中部截?。篗id$(字符串,

p

[,

n

]

)從第p個(gè)字符開始,向后截取n個(gè)字符。n可以省略,此時(shí),將從第p個(gè)字符開始向后截取到字符串的末尾。

例如:Mid$(“ABCDEFGHIJK”,3,4)右部截?。篟ight$(字符串,n)返回字符串的最后n個(gè)字符。例:Right$(“ABCDEFGHIJK”,4)二、字符串函數(shù)4.5字符處理與字符串函數(shù)2.字符串截取函數(shù)二、字符串函4.5字符處理與字符串函數(shù)

3.字符串長(zhǎng)度測(cè)試函數(shù)格式:Len(字符串):返回字符串的長(zhǎng)度(長(zhǎng)整型值)。

Len(變量名):返回存儲(chǔ)變量所需的字節(jié)數(shù)。例如:Len(“ABCDEFGHIJK”)

‘返回11

Len(testvar%)

‘返回2Len(testvar!)

‘返回4Len(testvar#)

‘返回8

二、字符串函數(shù)4.5字符處理與字符串函數(shù)3.字符串長(zhǎng)度測(cè)試函數(shù)二、字符4.5字符處理與字符串函數(shù)

4.

String$函數(shù)格式:String$(n,ASCII碼)

或String$(n,字符串)

當(dāng)為ASCII碼時(shí),返回由該ASCII碼對(duì)應(yīng)的n個(gè)字符;當(dāng)為字符串時(shí),返回由第一個(gè)字符組成的n個(gè)字符。例如: a$=String$(5,65) b$=String$(5,"-") c$=String$(5,"abcd") Printa$;b$;c$輸出結(jié)果:AAAAA-----aaaaa

二、字符串函數(shù)4.5字符處理與字符串函數(shù)4.String$函數(shù)二、字4.5字符處理與字符串函數(shù)

5.空格函數(shù)格式:Space$(n)

返回n個(gè)空格。例如: a$="a"+Space(4)+"b“輸出結(jié)果:a

b

二、字符串函數(shù)4.5字符處理與字符串函數(shù)5.空格函數(shù)二、字符串函數(shù)4.5字符處理與字符串函數(shù)

6.字符串匹配函數(shù)

格式:InStr(

[首字符位置,

]字符串1

,字符串2

[

,

n

]

)

該函數(shù)在“字符串1”中查找“字符串2”,如果找到,就返回“字符串2”的第一個(gè)字符在“字符串1”中的位置。“字符串1”的第一個(gè)字符的位置為1。例如:

a$="MicrosoftVisualBasic" x=InStr(a$,"Visual") Printx輸出結(jié)果:11

二、字符串函數(shù)4.5字符處理與字符串函數(shù)6.字符串匹配函數(shù)二、字符串函

格式:InStr(

[首字符位置,

]字符串1

,字符串2

[

,

n

]

)說(shuō)明:“字符串2”的長(zhǎng)度必須小于65,535個(gè)字符;InStr的返回值是一個(gè)長(zhǎng)整型數(shù)。在不同的條件下,函數(shù)的返回值也不一樣(見(jiàn)表4.5)。“首字符位置”是可選的。如果有,則從該位置開始查找,否則從起始位置開始查找。自變量n是可選的,用來(lái)指定字符串比較方式。該自變量的取值可以是0、1或2。 0:進(jìn)行二進(jìn)制比較,區(qū)分字母的大小寫;默認(rèn)為0。 1:比較時(shí)忽略大小寫; 2:對(duì)數(shù)據(jù)庫(kù)中的信息進(jìn)行比較。格式:InStr([首字符位置,]字符串1,字4.5字符處理與字符串函數(shù)也可以通過(guò)語(yǔ)句限定: Option

Compare

Binary

Option

Compare

Text Option

Compare

Database4.5字符處理與字符串函數(shù)也可以通過(guò)語(yǔ)句限定:4.5字符處理與字符串函數(shù)

7.字母大小寫轉(zhuǎn)換

格式:Ucase$(字符串):小寫字母轉(zhuǎn)換為大寫字母

Lcase$(字符串)

:大寫字母轉(zhuǎn)換為小寫字母例如: a$="MicrosoftVisualBasic" b$=UCase$(a$) c$=LCase$(a$) Printb$,c$輸出結(jié)果:MICROSOFTVISUALBASIC

microsoftvisualbasic

二、字符串函數(shù)4.5字符處理與字符串函數(shù)7.字母大小寫轉(zhuǎn)換二、字符串函4.5字符處理與字符串函數(shù)

8.插入字符串語(yǔ)句Mid$格式:Mid$(字符串,位置[

,

L

]

)=子字符串

該語(yǔ)句把從“字符串”的“位置”開始的字符用“子字符串”代替。如果含有L自變量,則替換的內(nèi)容是“子字符串”左部的L個(gè)字符?!拔恢谩焙蚅均為長(zhǎng)整型數(shù)。DimMyString,FirstWord,LastWord,MidWordsMyString=“MidFunctionDemo”

'建立一個(gè)字符串。FirstWord=Mid(MyString,1,3)'返回"Mid"。LastWord=Mid(MyString,14,4)'返回"Demo"。MidWords=Mid(MyString,5)'返回"FuncionDemo"。4.5字符處理與字符串函數(shù)8.插入字符串語(yǔ)句Mid$4.6

運(yùn)算符與表達(dá)式

運(yùn)算是對(duì)數(shù)據(jù)的加工。最基本的運(yùn)算形式常常用一些簡(jiǎn)潔的符號(hào)來(lái)描述,這些符號(hào)稱為運(yùn)算符。被運(yùn)算的數(shù)據(jù),稱為運(yùn)算量。由運(yùn)算符和運(yùn)算量組成表達(dá)式。運(yùn)算量可以是常量,也可以是變量,還可以是函數(shù)。例如:A+3

,

T+Sin(a)

,

PI*r*r

。運(yùn)算符和表達(dá)式的類型可以分為以下4種:算術(shù)運(yùn)算符與算術(shù)表達(dá)式字符運(yùn)算符與字符表達(dá)式關(guān)系運(yùn)算符與關(guān)系表達(dá)式邏輯運(yùn)算符與邏輯表達(dá)式4.6運(yùn)算符與表達(dá)式運(yùn)算是對(duì)數(shù)據(jù)的加工。最基本的運(yùn)4.6

運(yùn)算符與表達(dá)式

一、算術(shù)運(yùn)算符與算術(shù)表達(dá)式運(yùn)算運(yùn)算符優(yōu)先級(jí)表達(dá)式例子結(jié)果冪^1X^Ya^29取負(fù)-2-X-a-3乘法*3X*Ya*a*a27浮點(diǎn)除法/3X/Y10/a

3.333333…整數(shù)除法\4X\Y10\a3取模Mod5X

Mod

Y10

Mod

a1加法+6X+Y10+a13減法-6X-Ya-10-7(a=3)4.6運(yùn)算符與表達(dá)式一、算術(shù)運(yùn)算符與算術(shù)表達(dá)式運(yùn)算運(yùn)算4.6

運(yùn)算符與表達(dá)式

1.冪運(yùn)算^用于計(jì)算乘方和方根,運(yùn)算符為“^”。例如:

10^2 ‘結(jié)果為100 10^-2 ‘結(jié)果為0.01 25^0.5 ‘結(jié)果為5 8^(1/3) ‘結(jié)果為2注意:冪運(yùn)算符優(yōu)先級(jí)最高。當(dāng)指數(shù)是一個(gè)表達(dá)式時(shí),必須加上括號(hào)。

例如,X的Y+Z次方必須寫作X^(Y+Z),不能寫作X^Y+Z。4.6運(yùn)算符與表達(dá)式1.冪運(yùn)算^4.6

運(yùn)算符與表達(dá)式

2.“/”與“\”

浮點(diǎn)除法運(yùn)算符“/”用來(lái)計(jì)算兩個(gè)數(shù)或表達(dá)式的商,并返回相應(yīng)的浮點(diǎn)數(shù)。例如:3/2的值是1.5。

整數(shù)除法運(yùn)算符“\”在運(yùn)算前把兩個(gè)運(yùn)算量四舍五入轉(zhuǎn)換成整數(shù),然后計(jì)算兩個(gè)運(yùn)算量的商,并返回結(jié)果的整數(shù)部分。例如:25.63\6.78的值為3。

4.6運(yùn)算符與表達(dá)式2.“/”與“\”4.6

運(yùn)算符與表達(dá)式

3.取模運(yùn)算Mod取模運(yùn)算即求余數(shù),在運(yùn)算前把兩個(gè)運(yùn)算量四舍五入轉(zhuǎn)換成整型數(shù),然后對(duì)兩個(gè)運(yùn)算量進(jìn)行除法運(yùn)算,并返回余數(shù)(第一個(gè)操作數(shù)整除第二個(gè)操作數(shù)的余數(shù))。例如:

7

Mod

4 ‘結(jié)果為3 25.68

Mod

6.99 ‘先把25.63和6.78轉(zhuǎn)化為26和7,再求得余數(shù)為5

4.6運(yùn)算符與表達(dá)式3.取模運(yùn)算Mod4.6

運(yùn)算符與表達(dá)式4.算術(shù)運(yùn)算符的優(yōu)先級(jí)運(yùn)算運(yùn)算符優(yōu)先級(jí)冪^1取負(fù)-2乘法*3浮點(diǎn)除法/3整數(shù)除法\4取模Mod5加法+6減法-64.6運(yùn)算符與表達(dá)式4.算術(shù)運(yùn)算符的優(yōu)先級(jí)運(yùn)算運(yùn)算符優(yōu)先級(jí)[思考與練習(xí)]5+10mod10\9/3+2^2步驟:=5+10mod10\3

+

4=5+10mod3

+

4=5+1+

4=10[思考與練習(xí)]步驟:4.6

運(yùn)算符與表達(dá)式

字符串連接符:“&”和“+”

“&”:用于強(qiáng)制將兩個(gè)表達(dá)式作為字符串連接?!?”:當(dāng)連接符兩邊的表達(dá)式都為字符串時(shí),將兩個(gè)字符串連接;如果一個(gè)是字符串而另一個(gè)是數(shù)字,則進(jìn)行相加。例如:

"ABCD"+"EFGHI"'結(jié)果為:ABCDEFGHI

“VB”&“程序設(shè)計(jì)教程”

‘結(jié)果為:VB程序設(shè)計(jì)教程二、字符運(yùn)算符與字符表達(dá)式4.6運(yùn)算符與表達(dá)式字符串連接符:“&”和“+”二、字例:"100"+123 '結(jié)果為

223"100"+"123" '結(jié)果為

100123“Abc”+123

'出現(xiàn)“類型不匹配”的錯(cuò)誤提示"100"&123 '結(jié)果為

100123100&123 '結(jié)果為

100123"Abc"&"123" '結(jié)果為

Abc123"Abc"&123 '結(jié)果為

Abc123

注意:使用運(yùn)算符“&”時(shí),變量與運(yùn)算符“&”之間應(yīng)加一個(gè)空格。這是因?yàn)榉?hào)“&”還是長(zhǎng)整型的類型定義符,如果變量與符號(hào)“&”接在一起,VB系統(tǒng)先把它作為類型定義符處理,因而就會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。例:注意:使用運(yùn)算符“&”時(shí),變量與運(yùn)算符4.6

運(yùn)算符與表達(dá)式

關(guān)系運(yùn)算符也稱比較運(yùn)算符,用來(lái)對(duì)兩個(gè)表達(dá)式的值進(jìn)行比較。關(guān)系表達(dá)式的結(jié)果是一個(gè)布爾值,即True(成立)或False(不成立)。三、關(guān)系運(yùn)算符與關(guān)系表達(dá)式運(yùn)算符含義優(yōu)先級(jí)表達(dá)式=相等所有關(guān)系運(yùn)算符的優(yōu)先級(jí)相同。X

=

Y<>或><不相等X<>Y或X><Y<小于X<Y>大于X>Y<=小于或等于X<=Y>=大于或等于X>=YLike比較樣式Is比較對(duì)象變量4.6運(yùn)算符與表達(dá)式關(guān)系運(yùn)算符也稱比較運(yùn)算符,用來(lái)對(duì)兩數(shù)值的比較:應(yīng)避免對(duì)兩個(gè)浮點(diǎn)數(shù)直接作“相等”或“不相等”的比較。例如:1.0/3.0*3.0=1.0,在計(jì)算機(jī)上執(zhí)行時(shí)可能會(huì)給出假值??梢愿膶憺椋篈bs(1.0/3.0*3.0-1.0)<1e-5判斷x是否在區(qū)間[a,b]時(shí),不能寫成:a<=x<=b,而應(yīng)寫成:a<=x

And

x<=b數(shù)值型與可轉(zhuǎn)換為數(shù)值型的數(shù)據(jù)比較,如:29>“189”,按數(shù)值比較,結(jié)果為False。數(shù)值型與不能轉(zhuǎn)換成數(shù)值型的字符型比較,如:77>"sdcd",不能比較,系統(tǒng)出錯(cuò)。數(shù)值的比較:字符串的比較:兩個(gè)字符串的比較,從第1個(gè)字符開始,按字符的ASCII碼值逐一進(jìn)行比較,ASCII碼值大的字符所在的字符串大。例:"ABCDE">"ABRA" ‘結(jié)果為False

常見(jiàn)的字符值的大小關(guān)系如下:“空格”<“數(shù)字”<“大寫字母”<“小寫字母”<“所有漢字”Like運(yùn)算符用來(lái)比較字符串表達(dá)式和SQL表達(dá)式中的樣式,主要用于數(shù)據(jù)庫(kù)查詢。Is運(yùn)算符用來(lái)比較兩個(gè)對(duì)象的引用變量,主要用于對(duì)象操作。字符串的比較:4.6

運(yùn)算符與表達(dá)式邏輯運(yùn)算也稱布爾運(yùn)算。用邏輯運(yùn)算符連接兩個(gè)或多個(gè)關(guān)系式,組成一個(gè)布爾表達(dá)式。四、邏輯運(yùn)算符與邏輯表達(dá)式運(yùn)算符含義優(yōu)先級(jí)說(shuō)明Not非1真變假,假變真。And與2兩個(gè)表達(dá)式均為真時(shí),結(jié)果才為真。Or或3有一個(gè)表達(dá)式為真時(shí),結(jié)果就為真。Xor異或4兩個(gè)表達(dá)式相反時(shí),結(jié)果為真。Eqv等價(jià)5兩個(gè)表達(dá)式相同時(shí),結(jié)果為真。Imp蘊(yùn)含6第一個(gè)為真,第二個(gè)為假時(shí),結(jié)果為假;其它為真。4.6運(yùn)算符與表達(dá)式邏輯運(yùn)算也稱布爾運(yùn)算。用邏輯運(yùn)算4.6

運(yùn)算符與表達(dá)式

如果對(duì)數(shù)值進(jìn)行邏輯運(yùn)算,操作數(shù)都要轉(zhuǎn)換成二進(jìn)制值逐位進(jìn)行邏輯運(yùn)算(0當(dāng)False,1當(dāng)True)。例如:63

And

16

‘結(jié)果為16 00000000

01111111

And 00000000

00010000關(guān)系表達(dá)式與邏輯表達(dá)式常常用在條件語(yǔ)句與循環(huán)語(yǔ)句中,作為條件控制程序的流程走向。四、邏輯運(yùn)算符與邏輯表達(dá)式4.6運(yùn)算符與表達(dá)式如果對(duì)數(shù)值進(jìn)行邏輯運(yùn)算,操作數(shù)都要[思考與練習(xí)]

例:征兵的條件是:男性(sex),年齡(age)在18-20之間,身高(size)在1.65m以上;或者女性(sex),年齡(age)在16-18之間,身高(size)在1.60m以上。請(qǐng)寫成VB的條件表達(dá)式。答:設(shè)性別sex值True代表男,sex值False代表女。

(sex=TrueAndage>=18Andage<=20Andsize>=1.65)Or(NotsexAndage>=16Andage<=18Andsize>=1.60)[思考與練習(xí)]答:4.6

運(yùn)算符與表達(dá)式

表達(dá)式的一般執(zhí)行順序:函數(shù)運(yùn)算→算術(shù)運(yùn)算符→連接運(yùn)算符→關(guān)系運(yùn)算符→邏輯運(yùn)算符在書寫表達(dá)式時(shí),應(yīng)注意以下幾點(diǎn):乘號(hào)“*”不能省略,例x乘以y應(yīng)寫成:x*y可以用括號(hào)改變優(yōu)先順序,并且括號(hào)必須成對(duì)出現(xiàn);運(yùn)算符不能相鄰。例a+*b是錯(cuò)誤的。五、表達(dá)式的執(zhí)行順序(b-sqr(b*b-4*a*c))/(2*a)4.6運(yùn)算符與表達(dá)式表達(dá)式的一般執(zhí)行順序:五、表達(dá)式的執(zhí)第4章VB程序設(shè)計(jì)基礎(chǔ)本章內(nèi)容及要求:4.1數(shù)據(jù)類型4.2常量和變量4.3變量的作用域4.4常用內(nèi)部函數(shù)4.5字符處理與字符串函數(shù)4.6運(yùn)算符與表達(dá)式第4章VB程序設(shè)計(jì)基礎(chǔ)本章內(nèi)容及要求:4.1數(shù)據(jù)類型4.1數(shù)據(jù)類型數(shù)據(jù)是信息在計(jì)算機(jī)內(nèi)的表現(xiàn)形式,也是程序處理的對(duì)象。VB提供了系統(tǒng)定義的基本數(shù)據(jù)類型,還允許用戶定義自己的數(shù)據(jù)類型。數(shù)據(jù)類型基本類型字符串型數(shù)值型整型數(shù)整數(shù)型長(zhǎng)整數(shù)浮點(diǎn)數(shù)單精度雙精度貨幣型字節(jié)型布爾型日期型變體型對(duì)象型Decimal型用戶定義類型記錄類型枚舉類型4.1數(shù)據(jù)類型數(shù)據(jù)是信息在計(jì)算機(jī)內(nèi)的表現(xiàn)形式,也是程序處理4.1數(shù)據(jù)類型一、基本數(shù)據(jù)類型1.字符串型String字符串是一個(gè)字符序列,由ASCII字符組成。字符串通常要用雙引號(hào)括起來(lái)。例如: “Hello!” "湖南省衡陽(yáng)市" “8888” "***” “”

‘空字符串 ““

‘有一個(gè)空格的字符串若字符串中有雙引號(hào),例如ABD“XYZ,則用連續(xù)兩個(gè)雙引號(hào)表示,即:"ABD""XYZ“4.1數(shù)據(jù)類型一、基本數(shù)據(jù)類型1.字符串型String4.1數(shù)據(jù)類型VB中的字符串分為兩種:變長(zhǎng)字符串和定長(zhǎng)字符串。變長(zhǎng)字符串的長(zhǎng)度是不確定的,可以從0~231(約21億)個(gè)字符。定長(zhǎng)字符串含有確定個(gè)數(shù)的字符,最大長(zhǎng)度不超過(guò)216(65535)個(gè)字符。4.1數(shù)據(jù)類型VB中的字符串分為兩種:變長(zhǎng)字符串和定長(zhǎng)字符4.1數(shù)據(jù)類型2.數(shù)值型數(shù)值型數(shù)據(jù)分為整型數(shù)和浮點(diǎn)數(shù)兩類。(1)整型數(shù)整型數(shù)是不帶小數(shù)點(diǎn)和指數(shù)符號(hào)的數(shù),在機(jī)器內(nèi)部以二進(jìn)制補(bǔ)碼形式表示。正數(shù)的補(bǔ)碼和它的二進(jìn)制形式(即源碼)相同;負(fù)數(shù)的補(bǔ)碼為該數(shù)的絕對(duì)值的二進(jìn)制形式取反加1。例如,整型數(shù)4,-4分別以下面的形式存放:(最高位為符號(hào)位,其中0為正,1為負(fù))4

00000000

00000100-4

11111111

11111100

整數(shù)的運(yùn)算速度快,而且比其他數(shù)據(jù)類型占據(jù)的內(nèi)存少。4.1數(shù)據(jù)類型2.數(shù)值型4.1數(shù)據(jù)類型整型數(shù)又分為整數(shù)和長(zhǎng)整數(shù):整數(shù)Integer以2個(gè)字節(jié)(16位)的二進(jìn)制數(shù)存儲(chǔ),取值范圍為-32,768~32,767。長(zhǎng)整數(shù)Long以4個(gè)字節(jié)(32位)的二進(jìn)制數(shù)存儲(chǔ),取值范圍為-2,147,483,648~2,147,483,647。4.1數(shù)據(jù)類型整型數(shù)又分為整數(shù)和長(zhǎng)整數(shù):4.1數(shù)據(jù)類型二進(jìn)制十進(jìn)制00000000

00000000000000000

00000001100000000

00000010200000000

000000113…

……

…01111111

111111113276710000000

00000000-3276810000000

00000001-3276710000000

00000010-32766…

……

…11111111

11111110-211111111

11111111-1思考:為什么16位整數(shù)Integer的取值范圍為-32,768~32,767?4.1數(shù)據(jù)類型二進(jìn)制十進(jìn)制0000000000000004.1數(shù)據(jù)類型注意:16位整數(shù)Integer如果超出了這個(gè)取值范圍(-32,768~32,767),數(shù)據(jù)便會(huì)溢出。請(qǐng)看下面的代碼:PrivateSubForm_Load()

DimaAsInteger

a=32767

a=a+1

MsgBoxaEndSub4.1數(shù)據(jù)類型注意:16位整數(shù)Integer如果超出了4.1數(shù)據(jù)類型(2)浮點(diǎn)數(shù)浮點(diǎn)數(shù)也稱實(shí)數(shù),是帶有小數(shù)部分的數(shù)值。分為單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)。單精度Single以4個(gè)字節(jié)(32位)存儲(chǔ),可以精確到7位十進(jìn)制數(shù)。其中符號(hào)占1位,指數(shù)占8位,其余23位表示尾數(shù),還有一個(gè)附加的隱含位。其負(fù)數(shù)的取值范圍為-3.402823E+38

~

-1.401298E-45,正數(shù)的取值范圍為1.401298E-45

~

3.402823E+38。表示形式為:±n.nE±m(xù)其中n.n是尾數(shù),m是指數(shù)(以10為底的冪)例:-123.4E-3或-123.4e-3,相當(dāng)于-0.1234

1.2345E3或1.2345e3,相當(dāng)于1234.54.1數(shù)據(jù)類型(2)浮點(diǎn)數(shù)4.1數(shù)據(jù)類型雙精度Double以8個(gè)字節(jié)(64位)存儲(chǔ),可以精確到15到16位十進(jìn)制數(shù)。其中符號(hào)占1位,指數(shù)占11位,其余52位表示尾數(shù),還有一個(gè)附加的隱含位。表示形式為:±n.nD±m(xù)其中n.n是尾數(shù),m是指數(shù)(以10為底的冪)

例:123.4567D3或123.4567d+3,相當(dāng)于123456.74.1數(shù)據(jù)類型雙精度Double4.1數(shù)據(jù)類型(3)貨幣型Currency貨幣數(shù)據(jù)類型通常用于表示錢款。以8個(gè)字節(jié)(64位)存儲(chǔ),精確到小數(shù)點(diǎn)后面4位(小數(shù)點(diǎn)前面有15位)。在小數(shù)點(diǎn)后4位以后的數(shù)字將被舍去。其取值范圍為-922,337,203,685,477.5808

~-922,337,203,685,477.5807浮點(diǎn)數(shù)中的小數(shù)點(diǎn)是“浮動(dòng)”的,小數(shù)點(diǎn)可以出現(xiàn)在數(shù)的任何位置,而貨幣型數(shù)據(jù)的小數(shù)點(diǎn)是固定的,因此稱為定點(diǎn)數(shù)據(jù)類型。

4.1數(shù)據(jù)類型(3)貨幣型Currency4.1數(shù)據(jù)類型(4)字節(jié)型Byte以1個(gè)字節(jié)(8位)的無(wú)符號(hào)二進(jìn)制數(shù)存儲(chǔ),其取值范圍為0~255。

注:在實(shí)際應(yīng)用中,應(yīng)根據(jù)需要使用數(shù)據(jù)類型。能用整型就不要用浮點(diǎn)型或貨幣型;如果要求的精度不高,則應(yīng)使用單精度變量。這樣不僅節(jié)省內(nèi)存空間,而且可以提高處理速度。

4.1數(shù)據(jù)類型(4)字節(jié)型Byte4.1數(shù)據(jù)類型3.布爾型Boolean

布爾型數(shù)據(jù)是一個(gè)邏輯值,用2個(gè)字節(jié)存儲(chǔ),它只取兩個(gè)值:True/False。布爾型變量的默認(rèn)值為False。將邏輯數(shù)據(jù)轉(zhuǎn)換成整型時(shí):True為-1,F(xiàn)alse為0;其它數(shù)據(jù)轉(zhuǎn)換成邏輯數(shù)據(jù)時(shí):非0為True,0為False。例如,下面的代碼定義一個(gè)布爾型變量,并輸出該變量:DimmyblnAsBooleanmybln=3MsgBoxmybln4.1數(shù)據(jù)類型3.布爾型Boolean4.1數(shù)據(jù)類型4.日期型Date

日期型數(shù)據(jù)占用8個(gè)字節(jié),以浮點(diǎn)數(shù)形式存儲(chǔ)。小數(shù)點(diǎn)左邊的數(shù)值表示日期(距離1899-12-30的天數(shù)),小數(shù)點(diǎn)右邊的數(shù)值表示時(shí)間。日期型數(shù)據(jù)的日期表示范圍:100年1月1日~9999年12月31日,時(shí)間表示范圍:0:00:00~23:59:59。日期常數(shù)必須用“#”符號(hào)括起來(lái)。

例如:下面的幾種日期型數(shù)據(jù)的格式都是合法的:

#9/1/2009#或#2009-09-01# #September

1,2009#

#08:30:00AM#

#2002-5-414:30:00PM#4.1數(shù)據(jù)類型4.日期型Date4.1數(shù)據(jù)類型5.變體型Variant變體數(shù)據(jù)類型是一種可變的數(shù)據(jù)類型,可以表示任何值,包括數(shù)值、字符串、日期/時(shí)間等。當(dāng)變體數(shù)據(jù)為數(shù)值時(shí),以16個(gè)字節(jié)存儲(chǔ),最大可達(dá)Double的取值范圍;當(dāng)變體數(shù)據(jù)為字符時(shí),以22字節(jié)+字符串長(zhǎng),與變長(zhǎng)String有相同的取值范圍

。6.對(duì)象型Object對(duì)象型數(shù)據(jù)作為32位(4個(gè)字節(jié))地址來(lái)存儲(chǔ),該地址可以引用程序中的任何對(duì)象。4.1數(shù)據(jù)類型5.變體型Variant4.1數(shù)據(jù)類型7.Decimal數(shù)據(jù)類型

Decimal數(shù)據(jù)以12個(gè)字節(jié)存儲(chǔ),最多支持29個(gè)有效數(shù)位,在內(nèi)存中的表示形式比浮點(diǎn)數(shù)更精確。適用于要求使用大量有效的整數(shù)及小數(shù)位數(shù),并且不能容忍舍入誤差的財(cái)務(wù)計(jì)算。

Decimal數(shù)據(jù)類型只能在變體類型(Variant)中使用,不能把一個(gè)變量聲明為Decimal類型。4.1數(shù)據(jù)類型7.Decimal數(shù)據(jù)類型4.1數(shù)據(jù)類型二、用戶定義的數(shù)據(jù)類型用戶自定義類型,也稱為記錄類型,通過(guò)Type語(yǔ)句來(lái)實(shí)現(xiàn),其語(yǔ)法格式如下: Type數(shù)據(jù)類型名

元素名As類型名

元素名As類型名

… End

Type

4.1數(shù)據(jù)類型二、用戶定義的數(shù)據(jù)類型用戶自定義類型,也稱4.1數(shù)據(jù)類型例如:對(duì)于一個(gè)學(xué)生的“學(xué)號(hào)”、“姓名”、“性別”、“年齡”、“入學(xué)成績(jī)”等數(shù)據(jù),為了處理數(shù)據(jù)的方便,常常需要把這些數(shù)據(jù)定義成一個(gè)新的數(shù)據(jù)類型(如Student類型)

TypeStudent XhAsString XmAsString XbAsString NlAsInteger ScoreAsSingle EndType二、用戶定義的數(shù)據(jù)類型4.1數(shù)據(jù)類型例如:對(duì)于一個(gè)學(xué)生的“學(xué)號(hào)”、“姓名”4.1數(shù)據(jù)類型使用Type語(yǔ)句,應(yīng)注意以下幾點(diǎn):1.記錄類型的定義必須放在模塊(包括標(biāo)準(zhǔn)模塊和窗體模塊)的聲明部分,在使用記錄類型之前,必須用Type語(yǔ)句加以定義。2.一般情況下,記錄類型在標(biāo)準(zhǔn)模塊中定義,其變量可以出現(xiàn)在工程的任何地方。當(dāng)在標(biāo)準(zhǔn)模塊中定義時(shí),關(guān)鍵字Type前可以有Public(默認(rèn))或Private;而如果在窗體模塊中定義,則必須在前面加上關(guān)鍵字Private。3.在記錄類型中不能使用動(dòng)態(tài)數(shù)組。4.1數(shù)據(jù)類型使用Type語(yǔ)句,應(yīng)注意以下幾點(diǎn):4.1數(shù)據(jù)類型下面的代碼聲明了一個(gè)Student類型變量st,然后為其各個(gè)元素賦初值,最后輸出:PrivateSubForm_Load()DimstAsStudentst.Xh="20050001"st.Xm="王一"st.Xb="男"st.Nl=17st.Score=92.5MsgBox"學(xué)號(hào):"&st.Xh&Chr(10)&"姓名:"&st.Xm&Chr(10)&"性別:"&_st.Xb&Chr(10)&"年齡:"&st.Nl&Chr(10)&"入學(xué)成績(jī):"&st.ScoreEndSub4.1數(shù)據(jù)類型下面的代碼聲明了一個(gè)Student類型變量4.2常量和變量一、常量在VB中有三類常量:普通常量、符號(hào)常量和系統(tǒng)常量

1.普通常量普通常量指的是具體的常數(shù),其類型有字符串型、整型、浮點(diǎn)型、布爾型、日期型等。不同類型的數(shù)據(jù)可以常量的形式出現(xiàn),也可以變量的形式出現(xiàn)。常量在程序運(yùn)行過(guò)程中其值不會(huì)發(fā)生變化。而變量的值是可變的,它代表內(nèi)存中指定的存儲(chǔ)單元。4.2常量和變量一、常量在VB中有三類常量:普通常量4.2常量和變量整型常數(shù)有3種形式:十進(jìn)制:由八進(jìn)制數(shù)字(0~9)組成。如125,0,-89。八進(jìn)制:由八進(jìn)制數(shù)字(0~7)組成。以&或&O(字母O)開頭,以&結(jié)尾。例如:&O25&表示八進(jìn)制整數(shù)25,即(25)8

,等于十進(jìn)制數(shù)21。十六進(jìn)制:由十六進(jìn)制數(shù)字(0~9及A~F)組成。以&H開頭,以&結(jié)尾。例如:&H25&表示十六進(jìn)制整數(shù)25,即(25)16

,等于十進(jìn)制數(shù)37。VB中的顏色數(shù)據(jù)常常用十六進(jìn)制整數(shù)表示。4.2常量和變量整型常數(shù)有3種形式:4.2常量和變量

VB在判斷常量類型時(shí)存在多義性。例如,值3.01可能是單精度類型,也可能是雙精度類型或貨幣類型。為了顯式地指明常數(shù)的類型,可以在常數(shù)后面加上類型說(shuō)明符。 % 整型 & 長(zhǎng)整型 ! 單精度浮點(diǎn)數(shù) # 雙精度浮點(diǎn)數(shù) @ 貨幣型 $ 字符串型字節(jié)、布爾、日期、對(duì)象及變體類型沒(méi)有類型說(shuō)明符。4.2常量和變量VB在判斷常量類型時(shí)存在多義性。例如,4.2常量和變量

2.符號(hào)常量在程序中,某個(gè)常量多次被使用,則可以使用一個(gè)符號(hào)來(lái)代替該常量,這樣不僅在書寫上方便,而且有效地改進(jìn)了程序的可讀性和可維護(hù)性。

VB中使用關(guān)鍵字Const聲明符號(hào)常量。其格式如下:Const常量名

[As類型|類型符號(hào)]=表達(dá)式[

,常量名=表達(dá)式]注:表達(dá)式由普通常量、算術(shù)和邏輯運(yùn)算符組成,但不能使用變量及函數(shù)。例如:

ConstMaxchars=254,Maxbue=Maxchars+1

’注意順序

ConstPI#=3.1415926等價(jià)于:

ConstPIAsDouble=3.14159264.2常量和變量2.符號(hào)常量4.2常量和變量

3.系統(tǒng)常量

VB系統(tǒng)提供了應(yīng)用程序和控件的系統(tǒng)定義常數(shù)。

例如,要將文本框Text1的前景顏色設(shè)置為紅色,可以使用下面的語(yǔ)句:Text1.ForeColor=vbRed這里的vbRed就是系統(tǒng)常量,這比直接使用16進(jìn)制數(shù)來(lái)設(shè)置要直觀得多。又如,窗口狀態(tài)屬性WindowsState可取0,1,2三個(gè)值,對(duì)應(yīng)三種不同狀態(tài)。在程序中使用語(yǔ)句:Myform.WindowsState=vbMaxmized,將窗口最大化,顯然要比使用語(yǔ)句Myform.WindowsState=2

易于閱讀和理解。4.2常量和變量3.系統(tǒng)常量4.2常量和變量二、變量變量是在程序運(yùn)行時(shí),其值不斷發(fā)生改變的量。一個(gè)變量對(duì)應(yīng)著計(jì)算機(jī)內(nèi)存中的一塊存儲(chǔ)單元。

例如,有兩個(gè)存儲(chǔ)單元,名稱分別為User和Password,存放的值分別為“管理員”和“111”,如圖所示:也可以將這兩個(gè)存儲(chǔ)單元的值改為“普通用戶”和“222”:管理員User111Password普通用戶User222Password

溫馨提示

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