版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第2章 VB語言基礎在第一章中,我們介紹了簡單的VB應用程序的建立和基本控件的使用,使讀者大致了解到利用窗體和控件為應用程序建立了界面后就需要編寫程序代碼,編寫代碼是程序設計的關鍵,應用程序的核心功能都是通過編寫代碼實現(xiàn)的,通過代碼對用戶和系統(tǒng)事件做出響應以執(zhí)行各種任務。本章主要介紹構成VB應用程序的基本元素,包括數(shù)據(jù)類型、常量、變量、運算符、表達式和內(nèi)部函數(shù)等,這些是編寫程序代碼的基礎。2.1 數(shù)據(jù)類型數(shù)據(jù)是程序處理的對象,也是程序的必要組成部分,為了更好的處理各種各樣的數(shù)據(jù),VB定義了多種數(shù)據(jù)類型。VB不但提供了豐富的標準數(shù)據(jù)類型,還允許用戶根據(jù)需要定義自己的數(shù)據(jù)類型。2.1.1 標準數(shù)據(jù)
2、類型標準數(shù)據(jù)類型是系統(tǒng)定義的數(shù)據(jù)類型。VB提供的標準數(shù)據(jù)類型主要有數(shù)值型、字符型、邏輯型、日期型、對象型和變體型。不同類型的數(shù)據(jù)有不同的表示方法、操作方式和取值范圍。VB中各種標準數(shù)據(jù)類型所占存儲空間大小與取值范圍的說明如表2-1所示。表2-1 VB的標準數(shù)據(jù)類型表數(shù)據(jù)類型關鍵字占用字節(jié)數(shù)類型符前綴范圍整型Integer2%Int-3276832767長整型Long4&Lng-2 147 483 6482 147 483 647單精度型Single4!Sng-3.E38-1.E-45;1.E-453.E38雙精度型Double8#Dbl4.94D-3241.79D308貨幣型Currency8
3、Cur-922 337 203 685 477.5808922 337 203 685 477.5807字節(jié)型Byte1Byt0255字符型String與字符串長度有關$Str定長:065535個字符變長:0約20億個字符邏輯型Boolean2BlnTrue 或False日期型Date8Dtm1/1/10012/31/9999對象型Object4Obj任何對象引用變體型Variant按需分配Vnt上述有效范圍之一注意:要表示某一類型的數(shù)據(jù),可以在數(shù)據(jù)后加上一個類型符來標識。使用這種方法表示整數(shù)時,整型的類型符%可省略。例如,127、-127%均表示整型數(shù),127&表示長整型數(shù),3.1415!表
4、示單精度型數(shù),1356.74#表示雙精度型數(shù)。1數(shù)值型數(shù)據(jù)數(shù)值型數(shù)據(jù)用于表示某種數(shù)值類的數(shù)據(jù),分為整數(shù)、浮點數(shù)、字節(jié)型數(shù)和貨幣型數(shù)。其中整數(shù)又分為整型(Integer)和長整型(Long);浮點數(shù)也稱實數(shù),分為單精度型(Single)和雙精度型(Double)。(1)整型(Integer)和長整型(Long)整型數(shù)據(jù)和長整型數(shù)據(jù)都是指不帶有小數(shù)部分的數(shù),它們可以表示正整數(shù)、負整數(shù)和零。整型數(shù)據(jù)和長整型數(shù)據(jù)的區(qū)別在于占用的字節(jié)數(shù)不同,因此可以表示的數(shù)值范圍也是不同的。整數(shù)運算速度快、精確,但表示數(shù)的范圍小。(2)字節(jié)型(Byte)字節(jié)型數(shù)據(jù)可以表示無符號的整數(shù),主要用于存儲二進制數(shù)。(3)單精度
5、型(Single)和雙精度型(Double)單精度型數(shù)據(jù)和雙精度型數(shù)據(jù)都可以表示帶有小數(shù)部分的數(shù),實數(shù)表示數(shù)的范圍大,但運算速度慢,且有誤差。單精度型數(shù)據(jù)可以精確到7位有效數(shù)字,雙精度型數(shù)據(jù)可以精確到15位有效數(shù)字。單精度型數(shù)據(jù)可用指數(shù)形式(科學計數(shù)法)來表示,即寫成以10為底的指數(shù)形式,例如:3.24108表示為3.24E+8,6.8710-12表示為6.87E-12。雙精度型數(shù)據(jù)也可用指數(shù)形式(科學計數(shù)法)來表示,例如:4.171023表示為4.17D+23,-5.68910-13表示為-5.689D-13。E和D作為數(shù)的指數(shù)符號只能出現(xiàn)在數(shù)的中間。(4)貨幣型(Currency)貨幣型數(shù)
6、據(jù)是一種專門為處理貨幣設計的數(shù)據(jù)類型,用于表示定點實數(shù)或整數(shù),最多保留小數(shù)點左邊15位數(shù)字和小數(shù)點右邊4位數(shù)字。所有數(shù)值型的數(shù)據(jù)都有一個有效的范圍值,程序中的數(shù)據(jù)如果超出規(guī)定的范圍,就會出現(xiàn)“溢出”。如果小于范圍的下限值,系統(tǒng)將按“0”處理;如果大于范圍的上限值,則系統(tǒng)只按上限值處理,并顯示出錯誤信息。2字符型數(shù)據(jù)字符型(String)數(shù)據(jù)是指用雙引號“”括起來的一串字符,字符可以包括所有西文字符和漢字。字符型數(shù)據(jù)也稱為字符串。如果字符串中有雙引號,例如ABCXYZ,則用連續(xù)兩個雙引號表示,即:ABCXYZ。字符串中包含的字符個數(shù)稱為字符串的長度。不含任何字符(長度為0)的字符串稱為空字符串。
7、例表示空字符串,而 表示有一個空格的字符串。在VB中,字符串分為變長字符串和定長字符串。變長字符串的長度不固定,隨著對字符串變量的賦值,字符串的長度可變。變長字符串最多可以包含231個字符。一個字符串如果沒有定義成固定長度的,默認為變長字符串。定長字符串的長度保持不變,如果賦值給字符串的字符數(shù)少于字符串的長度,則用空格填滿不足部分;若超過字符串的長度,超出部分字符被截去。定長字符串最多可包含65535個字符。3邏輯型數(shù)據(jù)邏輯型數(shù)據(jù)(Boolean)只有True與False兩個值,常用于表示邏輯判斷的結(jié)果。當邏輯型數(shù)據(jù)轉(zhuǎn)換成數(shù)值型數(shù)據(jù)時,True轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0。當數(shù)值型數(shù)據(jù)轉(zhuǎn)換成
8、邏輯型數(shù)據(jù)時,非0轉(zhuǎn)換為True,0轉(zhuǎn)換為False。4日期型數(shù)據(jù)日期型(Date)數(shù)據(jù)用于保存日期和時間,通常采用兩個“#”符號把表示日期和時間的值括起來。VB可以接受多種表示形式的日期和時間,只要任何字面上可被認作日期和時間的字符都是合法的。賦值時如果輸入的日期或時間是非法的或不存在的,系統(tǒng)將提示出錯。例如,以下賦值語句都是正確的:Dim TestDate As DateTestDate=#10/30/2007#TestDate=#2007-10-30#TestDate=#10/30/2007 10:47:29 pm#5對象型數(shù)據(jù)對象型數(shù)據(jù)(Object)可用來引用應用程序中的對象。使用S
9、et語句指定一個被聲明為Object的變量,去引用應用程序所識別的任何實際對象。例如:Dim objDb As ObjectSet objDb=OpenDatabase(c:Vb6student.mdb)6變體型數(shù)據(jù)變體型數(shù)據(jù)(Variant)是一種可變的數(shù)據(jù)類型,可以存放任何類型的數(shù)據(jù)。它為VB的數(shù)據(jù)處理增加了智能性,是所有未定義的變量的默認數(shù)據(jù)類型,它對數(shù)據(jù)的處理取決于程序上下文的需要。當指定變量為Variant變量時,不必在數(shù)據(jù)類型之間轉(zhuǎn)換,VB會自動完成任何必要的轉(zhuǎn)換。例如:Dim a 默認為Variant類型a=20 a的值是20(包含兩個字符的字符串)a=a-15 轉(zhuǎn)換為數(shù)值運算,
10、a的值是5a=B& a 轉(zhuǎn)換為字符串運算,a的值是B5(包含兩個字符的字符串)雖然用戶不必過多關注Variant變量中數(shù)據(jù)的類型就可以對Variant變量進行操作,但要避免以下情況:(1)如果對Variant變量進行數(shù)學運算或函數(shù)運算,則Variant必須包含某個數(shù)。(2)如果正在連接兩個字符串,則用“&”運算符而不用“+”運算符。如果要檢測變體型數(shù)據(jù)中保存的究竟是什么類型的數(shù)據(jù),可以使用VarType()函數(shù),根據(jù)函數(shù)的返回值確定數(shù)據(jù)類型。2.1.2 用戶自定義數(shù)據(jù)類型VB不僅有豐富的標準數(shù)據(jù)類型,還提供了用戶自定義數(shù)據(jù)類型,它由若干個標準數(shù)據(jù)類型數(shù)據(jù)組成,是一組不同類型變量的集合,我們將在
11、第五章中詳細介紹。2.1.3 枚舉類型VB中提供了枚舉數(shù)據(jù)類型。枚舉是指將變量的值一一列舉出來,變量的值僅限于列舉出來的值的范圍內(nèi)。當一個變量只有幾種可能的取值時,可以定義為枚舉類型。1枚舉類型的定義枚舉類型放在窗體模塊、標準模塊或公用類模塊中的聲明部分,通過Enum語句來定義。格式如下:Public|Private Enum 類型名稱 成員名=常數(shù)表達式 成員名=常數(shù)表達式 End Enum2枚舉類型的使用實例例2.1:可以用與星期日星期六相關聯(lián)的一組整型常數(shù)17來聲明一個枚舉類型Week,然后在代碼中使用星期的名稱而不使用其整數(shù)數(shù)值。枚舉類型定義及使用如下:Enum WeekSun=7Mo
12、n=1Tue=2Wed=3Thu=4Fri=5Sat=6End EnumPrivate Sub Form_Click()Print Week.SatEnd Sub2.2 常量和變量與一般程序設計語言一樣,VB中使用常量和變量來存儲各種類型的數(shù)據(jù)。常量用有含義的符號來表示單純數(shù)據(jù),方便用戶使用。在VB中提供了很多內(nèi)部常量,而且還允許用戶自己建立常量。變量用名字來表示其中存儲的數(shù)據(jù),用數(shù)據(jù)類型表示其中存儲的數(shù)據(jù)的具體類型,限制不同的數(shù)據(jù)在內(nèi)存中占據(jù)的空間的大小。還可以使用數(shù)組來表示一系列相關的變量。2.2.1 變量命名規(guī)則VB中變量的命名規(guī)則如下:(1) 必須以字母或漢字開頭,由字母、漢字、數(shù)字或
13、下劃線組成,不能含有小數(shù)點、空格等特殊字符。例如,a*b,x$y,?xy,ab.c,12sum,_a1和score%x等都錯誤的變量名。(2) 變量名的長度不能超過255個字符。(3)不能使用VB中的關鍵字(語句名、函數(shù)名等)。例如,CONST,Public,Print等均為非法變量名。(4) VB中不區(qū)分變量名的大小寫。(5) 為了增加程序的可讀性,可在變量名前加一個縮寫的前綴來表明該變量的數(shù)據(jù)類型。例如:strName表示字符串變量,iCount表示整型變量,dblx表示雙精度變量,sngYz表示單精度變量。2.2.2 常量常量也稱常數(shù),是在程序運行過程中始終保持不變的數(shù)值或字符串。通過聲
14、明和使用常量的標識符,代替一個在程序執(zhí)行時不會改變的值,能增強程序的可讀性,使程序的維護變得簡單。在VB中有兩種形式的常量:直接常量和符號常量。1直接常量直接常量是在程序代碼中直接給出的數(shù)據(jù)。根據(jù)常量的數(shù)據(jù)類型有:數(shù)值常量、字符串常量、日期/時間常量和邏輯常量。例如:數(shù)值常量:-8,0,3.,123.45,-100.05,7.23E+10,-5.643D+10,0.5E-24,-0.53E+8。在VB中除了十進制數(shù)外,還允許使用八進制數(shù)和十六進制數(shù)。八進制數(shù)由數(shù)字07組成,并以&O開頭。十六進制數(shù)由數(shù)字09、AF組成,并以&H開頭。例如:&O123、&O345、&H6E、&HFFDC。字符串常
15、量:A,12.3,True,10/08/2007日期常量:#07/01/1997#,#2/11/2007 10:10:00 AM#邏輯常量:True,F(xiàn)alse2符號常量符號常量是指在程序中用一個符號代表常量值。符號常量又分為兩種:系統(tǒng)內(nèi)部定義常量和用戶定義常量。(1)系統(tǒng)內(nèi)部定義常量VB系統(tǒng)提供了應用程序和控件定義的常量,即系統(tǒng)內(nèi)部定義的常量。這些常量可與應用程序的對象、方法和屬性一起使用,在代碼中可以直接使用它們。用戶可以在“對象瀏覽器”中查看內(nèi)部常量。選擇“視圖”菜單中的“對象瀏覽器”,則打開“對象瀏覽器”窗口。在下拉列表框中選擇VB或VBA對象庫,然后在“類”列表框中選擇常量組,右側(cè)的
16、成員列表中即顯示預定義的常量,窗口底端的文本區(qū)域中將顯示該常量的功能。為了避免不同對象中同名常量的混淆,在引用時可使用2個小寫字母前綴。例如:vb:表示VB和VBA中的常量。xl:表示Excel中的常量。db:Data Access Object庫中的常量。例如,vbMaximized、vbOkOnly就是VB中的常量。(2)用戶定義常量盡管VB內(nèi)部定義了大量的常量,但是有時用戶需要創(chuàng)建自己的符號常量。用戶定義常量使用Const語句來給常量分配名字、值和類型。聲明常量的語法格式為:Const 符號常量名 As =表達式注意:(1)符號常量名的命名規(guī)則與變量命名規(guī)則相同,為了便于程序的閱讀,習慣
17、上,符號常量名采用大寫字母表示。(2)在使用類型說明符聲明常量時,常量名與類型說明符之間不要有空格。(3)表達式由數(shù)值常量、字符串常量及運算符組成,但不能使用函數(shù)調(diào)用。(4)常量一旦聲明,只能引用而不能改變,即不能對符號常量賦新值。例如,以下均為正確的用戶定義常量:Const PI=3.Const CMAX As Integer = 9Const IDATE = #10/30/2007#Const A%=100+502.2.3 變量變量是在程序運行過程中其值可以發(fā)生變化的量。一個有名字的內(nèi)存單元稱為變量。在VB中進行計算時,常常使用變量臨時存儲數(shù)據(jù)。每個變量都有名字和數(shù)據(jù)類型。通過名字對變量進
18、行引用,實際上是借助變量名訪問內(nèi)存中的數(shù)據(jù)。數(shù)據(jù)類型決定該變量占用的內(nèi)存空間大小。使用變量前,一般必須先聲明變量。聲明變量就是向程序說明要使用的變量,以便系統(tǒng)為它分配存儲單元。在VB中使用一個變量時,也可以不加任何聲明而直接使用,這種使用稱之為隱式聲明。使用這種方法雖然簡單,但卻容易在發(fā)生錯誤時令系統(tǒng)產(chǎn)生誤解。一般對于變量最好遵循先聲明,然后再使用的原則。與上述隱式聲明相對應的稱之為顯示聲明。所謂顯式聲明,是指每個變量必須事先聲明,才能夠正常使用,否則會出現(xiàn)錯誤警告。1顯式聲明變量聲明變量的語句格式為:Dim 變量名 AS 數(shù)據(jù)類型,變量名 AS 數(shù)據(jù)類型或 Dim 變量名類型符,變量名類型符
19、 其中,數(shù)據(jù)類型可以使用表2-1中列出的關鍵字。AS 數(shù)據(jù)類型:方括號部分表示該項可以省略。若省略“AS 數(shù)據(jù)類型”,則聲明的變量默認為變體型。變量名類型符:變量名與類型符之間不能有空格??梢允褂帽?-1中列出的類型符。一條Dim語句可以同時聲明多個變量,但每個變量必須有自己的類型聲明,類型聲明不能共用。例如:Dim iCount As Integer , sum As Single等價于Dim iCount%, sum!使用Dim語句聲明一個變量后,VB系統(tǒng)會自動為該變量賦初值。如果變量是數(shù)值類型,則初值是0;如果變量是變長字符類型,則初值是空字符串。對于字符串類型變量,可以使用如下方法聲明
20、:Dim 變量名 As String 聲明變長字符串,最多可存放2MB個字符。Dim 變量名 As String*字符數(shù) 聲明定長字符串,存放的字符數(shù)由*號后的字符數(shù)確定。例如:Dim strname as String 聲明變長字符串變量Dim strsex as String*1 聲明定長字符串變量,可存放一個字符在VB中,一個漢字與一個西文字符一樣占兩個字節(jié)。除了使用Dim語句聲明變量外,還可以使用Static、Public、Private等關鍵字。2隱式聲明VB允許用戶在編寫應用程序時,不聲明變量而直接使用,系統(tǒng)臨時為新變量分配存儲空間并使用,這就是隱式聲明。所有隱式聲明的變量都是Va
21、riant數(shù)據(jù)類型。VB根據(jù)程序中賦予變量的值來自動調(diào)整變量的類型。 使用變量的隱式聲明時,如果程序中出現(xiàn)了變量名拼寫錯誤,那么程序會將其認為是一個新的變量,從而引起一些麻煩。為了使程序具有更好的可讀性,應盡量避免使用未聲明的變量。如果希望不允許程序使用未聲明的變量,可以在模塊的聲明中使用Option Explicit語句來強制聲明變量。這樣程序中如果有未聲明的變量,VB將產(chǎn)生一個“變量未定義”的編譯錯誤。用戶可以在“工具”菜單項中選擇“選項”菜單項,在出現(xiàn)的對話框中選擇“編輯器”選項卡,再將其中的“要求變量聲明”選項前的復選標記選中,單擊“確定”按鈕。VB會在以后生成的新模塊中自動添加Opt
22、ion Explicit語句,對于已經(jīng)存在的模塊則不能做修改,需要用戶自己手工添加。2.3 運算符和表達式VB中具有豐富的運算符,程序編寫中需要的大量操作都可以通過運算符和操作數(shù)組合成的表達式來實現(xiàn)。2.3.1 運算符運算符是含有某種運算功能的符號。VB程序會按運算符的含義和運算規(guī)則執(zhí)行實際的運算操作。VB中的運算符包括算術運算符、字符串連接運算符、關系運算符和邏輯運算符四種。1算術運算符VB提供了完備的算術運算符,可以進行復雜的數(shù)學運算。當表達式中含有多個運算符時,各運算符執(zhí)行的優(yōu)先順序叫做優(yōu)先級。同一表達式中若有兩個同優(yōu)先級的運算符,運算按從左至右順序進行。表2-2按優(yōu)先級從高到低的順序列
23、出了VB的算術運算符。表2-2 VB中的算術運算符運算符說明例子運算結(jié)果冪運算3327-取負數(shù)-3-3* /乘法和除法3*5, 25/315,8.3333整除2538Mod取余25 Mod 31+ -加法和減法3+5, 5-38,22字符串連接運算符字符串連接運算符有兩個:“&”和“+”,用來把兩個字符串連接起來,合并成一個新字符串。在字符串變量后使用“&”時應在變量與運算符“&”之間加一個空格。因為“&”是長整型的類型符,當變量與符號“&”接在一起時,VB先把它作為類型符處理。例如:VB+程序設計 結(jié)果為VB程序設計Visual Basic& Program design 結(jié)果為Visual
24、 Basic Program design連接符“&”和“+”的區(qū)別:“+”:連接符兩旁應為字符型數(shù)據(jù)。若連接符兩旁是數(shù)值型數(shù)據(jù)則進行算術加運算;若一個是數(shù)字字符,另一個是數(shù)值型,則自動將數(shù)字字符轉(zhuǎn)換為數(shù)值,再進行算術加;若一個是非數(shù)字字符,另一個是數(shù)值型,則出錯。“&”:連接符兩旁不管是字符型還是數(shù)值型數(shù)據(jù),系統(tǒng)自動將非字符型數(shù)據(jù)轉(zhuǎn)換成字符型,再連接。例如:1000+2000 結(jié)果為30001000+2000 結(jié)果為Today+20 出錯Today+ 2000 結(jié)果為Today20001000 & 2000 結(jié)果為1000 & 2000 結(jié)果為1000+200 & 2000 結(jié)果為3關系運算
25、符關系運算符用于比較兩個相同數(shù)據(jù)類型表達式值的大小,運算結(jié)果為邏輯值True或False。關系運算符的優(yōu)先級低于算術運算符,各個關系運算符的優(yōu)先級是相同的,結(jié)合順序從左到右。表2-3列出了VB中的關系運算符。表2-3 VB中的關系運算符運算符說明例子運算結(jié)果=等于car=catFalse不等于carcatTrue大于badbedFalse小于date=大于或者等于student=學生False=小于或者等于11 ABOUT 結(jié)果為 False (3)數(shù)值型與可轉(zhuǎn)換為數(shù)值型的數(shù)據(jù)比較。例如:29189 ,按數(shù)值比較,結(jié)果為False。(4)數(shù)值型與不能轉(zhuǎn)換成數(shù)值型的字符型比較。例如:77sdcd
26、 ,不能比較,系統(tǒng)出錯。(5)漢字字符大于西文字符。(6)“Like”運算符是VB6.0新增加的,可以與通配符“*”、“?”、“#”、字符列表、!字符列表結(jié)合使用,用于在數(shù)據(jù)庫的SQL語句中進行模糊查詢。其中“*”表示零個或多個字符,“?”表示任何單個字符,“#”表示任何一個數(shù)字(09),字符列表表示字符列表中的任何單個字符,!字符列表表示不在字符列表中的任何單個字符。使用格式為:str1 Like str2例如:查找姓名變量中姓張的學生,表達式為:姓名 Like 張*例如:查找姓名變量中沒有張字的學生,表達式為:姓名 Like !張4邏輯運算符邏輯運算符用于邏輯運算,結(jié)果是邏輯值True或F
27、alse。表2-4按優(yōu)先級從高到低列出了VB中的邏輯運算符。邏輯運算符中除Not是單目運算符,其余均為雙目運算符。表2-4 VB中的邏輯運算符運算符說明Not邏輯非(操作數(shù)為假時,結(jié)果為真,反之結(jié)果為假)And與(操作數(shù)均為真時,結(jié)果才為真)Or或(操作數(shù)中有一個為真時,結(jié)果為真)Xor異或(操作數(shù)相反時,結(jié)果才為真)Eqv等價(操作數(shù)相同時才為真,其余結(jié)果均為假)Imp蘊含(第一個操作數(shù)為真,第二個操作數(shù)為假時,結(jié)果才為真,其余結(jié)果均為假)說明:(1)邏輯運算符的優(yōu)先級低于關系運算,各個邏輯運算符的優(yōu)先級不相同,Not(邏輯非)最高,Imp(邏輯蘊含)最低。(2)VB中常用的邏輯運算符是No
28、t、And和Or。它們用于將多個關系表達式進行邏輯判斷。例如,數(shù)學上表示某個數(shù)在某個區(qū)域時用表達式:0X=0 And X=字符串連接運算符關系運算符邏輯運算符在表達式中,可以用括號改變優(yōu)先順序,強制表達式的某些部分優(yōu)先運行。括號內(nèi)的運算總是優(yōu)先于括號外的運算。對于多重括號,總是由內(nèi)到外。使用括號可以使表達式更清晰。4常用的表達式算術表達式(也稱數(shù)值表達式)、字符串表達式、關系表達式、邏輯表達式已在運算符中介紹了,下面介紹日期表達式。日期表達式是用運算符(+或-)將算術表達式、日期型常量、日期型變量和函數(shù)連接起來的式子。日期型數(shù)據(jù)是一種特殊的數(shù)值型數(shù)據(jù),有下面3種運算方式:(1)兩個日期型數(shù)據(jù)可
29、以相減:DateB-DateA,結(jié)果是一個數(shù)值型整數(shù)(兩個日期相差的天數(shù))。例如:#05/08/2007# - #05/01/2007# 其結(jié)果為數(shù)值:7(2)一個日期型數(shù)據(jù)(DateA)與一數(shù)值數(shù)據(jù)(N)可作加法運算:DateA+N,其結(jié)果仍是一個日期型數(shù)據(jù)。例如:#05/01/2007# +7 其結(jié)果為日期型數(shù)據(jù):#05/08/2007#(3)一個日期型數(shù)據(jù)(DateA)與一數(shù)值數(shù)據(jù)(N)可作減法運算:DateA-N,其結(jié)果仍是一個日期型數(shù)據(jù)。例如:#05/08/2007# - 7 其結(jié)果為日期型數(shù)據(jù):#05/01/2007#2.3.3 常用內(nèi)部函數(shù)VB提供了大量的內(nèi)部函數(shù)供用戶在編程時調(diào)
30、用,每個函數(shù)完成某個特定的功能。在程序中使用一個函數(shù)時,只要給出函數(shù)名并給出一個或多個參數(shù),就能得到函數(shù)值。內(nèi)部函數(shù)也稱為標準函數(shù),按照功能可分成數(shù)學函數(shù)、轉(zhuǎn)換函數(shù)、字符串函數(shù)、日期與時間函數(shù)和格式輸出函數(shù)等。在以下敘述中,使用N表示算術表達式、C表示字符串表達式、D表示日期表達式。函數(shù)名后出現(xiàn)$符號,則表示返回值為字符串。函數(shù)名前面有*號,表示是VB6.0中新增的函數(shù)。1數(shù)學函數(shù)在數(shù)值計算中,經(jīng)常會遇到一些常用數(shù)學函數(shù)的計算,如sinx,cosx,等,VB中提供的數(shù)學函數(shù)與數(shù)學中的定義一致,表2-5列出了常用的數(shù)學函數(shù)。表2-5 常用的數(shù)學函數(shù)函數(shù)名功能例子結(jié)果Abs(N)取絕對值Abs(-
31、3)3Cos(N)余弦函數(shù)Cos(0)1Exp(N)以e為底的指數(shù)函數(shù)Exp(2)7.389Log(N)以e為底的對數(shù)函數(shù)Log(10)2.3Rnd(N)產(chǎn)生隨機數(shù)Rnd0,1)之間的數(shù)Sin(N)正弦函數(shù)Sin(30*3.14/180)0.499Sgn(N)符號函數(shù)Sgn(2)Sgn(0)Sgn(-2)10-1Sqr(N)平方根函數(shù)Sqr(16)4Tan(N)正切函數(shù)Tan(60*3.14/180)1.729使用數(shù)學函數(shù)的幾點說明:(1)三角函數(shù)中的自變量以弧度為單位。例如:sin300應寫成sin(3.14159/180*30)(2)隨機函數(shù)可以模擬自然界中的各種隨機現(xiàn)象,它所產(chǎn)生的隨機數(shù)
32、可以在各種測試、模擬實驗和游戲程序中使用。Rnd函數(shù)返回0 1(包括0但不包括1)之間的雙精度隨機數(shù)。每次運行時,要產(chǎn)生不同序列的隨機數(shù),可執(zhí)行Randomize 語句。Rnd函數(shù)通常與Int函數(shù)配合使用,Int是取整函數(shù)。例如:若要產(chǎn)生1100間(包含1和100)的隨機整數(shù)可以寫成:Int(Rnd *100)+1。要生成a,b區(qū)間范圍內(nèi)的隨機整數(shù),可以使用公式:Int(Rnd*(b-a+1)+a)2轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù)多用于數(shù)據(jù)類型的轉(zhuǎn)換,表2-6列出了常用的轉(zhuǎn)換函數(shù)。說明:(1)要區(qū)別取整函數(shù)Int()、Fix()和Round()。當N0時Fix(N)與Int(N)相同,當N0時,Int(N)
33、與Fix(N)-1相等。例如:Fix(9.59)=9, Int(9.59)=9 Fix(-9.59)=-9, Int(-9.59)=-10(2)利用Int()函數(shù)可以對數(shù)據(jù)進行四舍五入。對一個正數(shù)x舍去小數(shù)位時進行四舍五入操作可使用如下形式:Int(x+0.5)。例如:當x=5.4時,Int(5.4+0.5)=5 當x=5.6時,Int(5.6+0.5)=6(3)Str()函數(shù)將非負數(shù)值轉(zhuǎn)換成字符類型后,會在轉(zhuǎn)換后的字符串左邊增加空格(即數(shù)值的符號位)。例如:Str(12.3)的結(jié)果是 123。(4)Val()函數(shù)只將最前面的數(shù)字字符轉(zhuǎn)換為數(shù)值。例如:Val(abc123)的值為0,而Val(
34、1.2sa10)的值為1.2表2-6常用的轉(zhuǎn)換函數(shù)函數(shù)名功能例子結(jié)果Asc(C)C的首字符轉(zhuǎn)換成ASCII碼值Asc(AB)65Chr$(N)ASCII碼值轉(zhuǎn)換成字符Chr$(65)AFix(N)截去小數(shù)取整Fix(9.8)9Hex$(N)十進制數(shù)轉(zhuǎn)換成十六進制數(shù)Hex$(100)64Int(N)取小于或等于N的最大整數(shù)Int(9.8)Int(-9.8)9-10Lcase$(C)大寫字母轉(zhuǎn)換為小寫字母Lcase$(ABC)abcOct$(N)十進制數(shù)轉(zhuǎn)換成八進制數(shù)Oct$(100)144Round(N)四舍五入取整Round(9.8)Round(-9.8)10-10Str$(N)數(shù)值轉(zhuǎn)換成字符
35、串Str$(123.456)123.456Ucase$(C)小寫字母轉(zhuǎn)換為大寫字母Ucase$(abc)ABCVal(C)數(shù)字字符串轉(zhuǎn)換為數(shù)值Val(123ABC)123例2.2:對任意的兩位正整數(shù),交換個位數(shù)與十位數(shù)的位置重新組成一個兩位數(shù),單擊窗體時顯示在窗體上。分析:任意的兩位正整數(shù)x,可以由隨機函數(shù)產(chǎn)生。x的個位數(shù)可以用x除以10取余得到,而x的十位數(shù)可以用x除以10取整得到。Private Sub Form_Click()Dim x As Integer, sw As Integer, gw As Integer, y As Integerx = Int(Rnd * 90 + 10)
36、sw = Int(x / 10)gw = x Mod 10y = gw * 10 + swPrint 兩位正整數(shù); x; 交換個位與十位后變成; yEnd Sub在窗體上單擊五次,程序運行結(jié)果如圖2-1所示。圖2-1 交換兩位數(shù)的個位與十位3字符串操作函數(shù)VB中字符串函數(shù)非常豐富,字符串函數(shù)給字符型變量的處理帶來了方便。表2-7列出了常用的字符串函數(shù)。表2-7 常用的字符串函數(shù)函數(shù)名功能例子結(jié)果InStr(N1,C1,C2)在C1中從N1開始找C2,省略N1從頭開始找,找不到為0InStr(2,ABCDEFG, DE)4Left(C,N)取左邊N個字符Left(ABCDEFGH,4)ABCDL
37、en(C)字符串長度Len(ABCDEFGH)8LenB(C)字符串占用字節(jié)數(shù)LenB(VB程序設計)12Ltrim(C)去掉左邊空格Ltrim( ABC )ABCMid(C,N1,N2)取子串,在C中從N1位開始向右取N2個字符,默認到N2結(jié)束Mid(ABCDEFGH,3,4)CDEFRight(C,N)取右邊N個字符Right(ABCDEFGH,4)EFGHRtrim(C)去掉右邊空格Rtrim(ABC )ABCSpace(N)產(chǎn)生N個空格Space(3) String(N,C)生成N個字符,字符為C中首字符String(2, BCDE)BBB*StrReverse(C)字符串逆序StrR
38、everse(BCDE)EDCBTrim(C)去掉左、右邊空格Trim( ABC )ABC在VB6.0中,采用了新的字符處理方式,將英文字符和中文字符統(tǒng)一編排,每個字符都用兩個字節(jié)表示,這種處理方式稱為“Unicode方式”,這樣一個英文字符和一個中文字符的長度都是1。例2.3:將給定的字符串I Love China按空格分離成三個字符串。分析:通過字符串函數(shù)InStr()查找給定字符串中空格的位置,通過Left()函數(shù)和Mid()函數(shù)分離字符串。Private Sub Form_Click()Dim s As String, t As String, s1 As String, s2 As
39、String, s3 As StringDim n1 As Integer, n2 As Integers = I Love Chinan1 = InStr(s, ) 找出I Love China中第一個空格的位置s1 = Left(s, n1 - 1) 將I Love China第一個空格前的字符串分離出來t = Mid(s, n1 + 1) 將I Love China第一個空格后的字符串”Love China”作為新串n2 = InStr(t, ) 查找Love China中的第一個空格s2 = Left(t, n2 - 1) 將Love China中空格前的字符串分離出來s3 = Mid
40、(t, n2 + 1) 將Love China中空格后的字符串分離出來Print s1, s2, s3End Sub程序運行結(jié)果如圖2-2所示。圖2-2 字符串分離4日期/時間函數(shù)表2-8列出了常用的日期/時間函數(shù)。表2-8 常用的日期/時間函數(shù)函數(shù)名功能例子結(jié)果Date( )返回系統(tǒng)日期Date()2007-10-1DateSerial(年,月,日)返回一個日期形式DateSerial(7,10,1)2007-10-1DateValue(C)同上,但自變量是字符串DateValue(“2007-10-1”)2007-10-1Day(C|N)返回日期代號(131)Day(“2007-10-1”
41、)1Hour(C|N)返回小時(024)Hour(#21:34:56PM #)21Minute(C|N)返回分鐘(059)Minute(#21:34:56PM #)34Month(C|N)返回月份代號(112)Month(“2007-10-1”)10*MonthName(N)返回月份名MonthName(10)十月Now返回系統(tǒng)日期和時間Now2007-10-121:34:56PMSecond(C|N)返回秒(059)Second(#21:34:56PM #)56Time( )返回系統(tǒng)時間Time21:34:56PMWeekDay(C|N)返回星期代號(17)星期日為1,星期一為2WeekDa
42、y(“2007-10-1”)2*WeekDayName(N)將星期代號(17)轉(zhuǎn)換為星期名稱WeekDayName(1)星期日Year(C|N)返回年代號(17532078)Year(“2007-10-1”)2007日期函數(shù)中自變量“C|N”表示可以是數(shù)值表達式,也可以是字符串表達式,其中“N”表示相對于1899年12月31日前后的天數(shù)。例2.4:根據(jù)當前日期判斷距離2008年奧運會還有多少天。分析:通過兩個日期相減判斷相差的天數(shù),通過使用日期函數(shù)得到關于星期、年、月、日、時及分的信息。Private Sub Form_Click()Dim aoyun As Dateaoyun = #08/0
43、8/2008#xj = aoyun - Datew = Weekday(aoyun)n = Year(Date)y = Month(Date)r = Day(Date)s = Hour(Time)f = Minute(Time)Print 現(xiàn)在距離2008年北京奧運會還有:; xj; 天Print 2008年北京奧運會是:星期; w - 1Print 當前日期是:; n; 年; y; 月; r; 日Print 現(xiàn)在時間是:; s; 時; f; 分End Sub程序運行結(jié)果如圖2-3所示。圖2-3 距離奧運會天數(shù)5格式輸出函數(shù)用格式輸出函數(shù)Format()可以使數(shù)值型、日期型和字符型數(shù)據(jù)按指定的
44、格式輸出。使用格式如下:Format$(表達式,“格式字符串”)其中:表達式:可以是數(shù)值、日期或字符串型表達式。格式字符串:表示輸出表達式時采用的輸出格式。不同數(shù)據(jù)類型所采用的格式字符串是不同的。(1)數(shù)值型數(shù)據(jù)格式化的有關格式符見表2-9。說明:對于符號0與#,當數(shù)值表達式的整數(shù)部分位數(shù)比格式字符串的位數(shù)多時,數(shù)據(jù)將原樣顯示;若小數(shù)部分的位數(shù)比格式字符串的位數(shù)多時,系統(tǒng)將按四舍五入處理后顯示。(2)日期和時間型數(shù)據(jù)格式化的有關格式符見表2-10。說明:非格式說明符“-”、“/”、“:”等原樣顯示。(3)字符串類型數(shù)據(jù)格式化的有關格式符見表2-11。說明:格式串內(nèi)“”號的個數(shù)決定了顯示串的長度
45、。如果要顯示的字符串長度小于格式串的長度,字符串顯示時右對齊;如果要顯示的字符串長度大于格式串的長度,字符串原樣顯示。表2-9 數(shù)值格式符符號功能數(shù)值表達式格式字符串結(jié)果0實際數(shù)字位數(shù)小于符號位數(shù),數(shù)字前后加0123.456123.4560000.0000000.000123.4560123.46#實際數(shù)字位數(shù)小于符號位數(shù),數(shù)字前后不加0123.456123.456#.#.#123.456123.46.加小數(shù)點123000.00123.00,千分位1234.500,000. 0001,234.50%數(shù)值乘以100,加百分號123.456#.#%12345. 6%$在數(shù)字前加$123.456$#.#$123.46+在數(shù)字前加+123.456+#.#+123.46-在數(shù)字前加-123.456-#.#-123.46E+用指數(shù)表示123.4560.000E+001.235E+02E-用指數(shù)表示0.0.000E-001.234E-03表2-10 日期和時間格式符符號功能符號功能d顯示日期(131),個位前不加0dd顯示日期
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023九年級數(shù)學下冊 第24章 圓24.6 正多邊形與圓第2課時 正多邊形的性質(zhì)說課稿 (新版)滬科版
- 2025甲指乙分包工程合同范本
- 2025酒店租賃合同
- Module 4 Unit 2 He doesnt like these trousers.(說課稿)-2024-2025學年外研版(一起)英語二年級上冊
- 2025企業(yè)管理資料勞動合同駕駛員文檔范本
- 2024年高中化學 第三章 烴的含氧衍生物 第一節(jié) 第1課時 醇說課稿 新人教版選修5
- Revision Being a good guest (說課稿)-2024-2025學年人教PEP版(2024)英語三年級上冊
- 4電路出故障了(說課稿)-2023-2024學年科學四年級下冊教科版
- Unit 3 Animals Lesson 2(說課稿)-2024-2025學年人教新起點版英語一年級上冊
- Unit 1 Back to school Welcome to the unit 說課稿-2024-2025學年高中英語譯林版(2020)必修第一冊
- 水生野生動物保護與管理
- 115個低風險組病種目錄
- 系統(tǒng)解剖學考試重點筆記
- 暖通空調(diào)基礎知識及識圖課件
- 重力壩水庫安全度汛方案
- 防滲墻工程施工用表及填寫要求講義
- 交通信號控制系統(tǒng)檢驗批質(zhì)量驗收記錄表
- Bankart損傷的診療進展培訓課件
- 校園信息化設備管理檢查表
- 新版抗拔樁裂縫及強度驗算計算表格(自動版)
- API SPEC 5DP-2020鉆桿規(guī)范
評論
0/150
提交評論