數(shù)據(jù)表達式與簡單程序設計_第1頁
數(shù)據(jù)表達式與簡單程序設計_第2頁
數(shù)據(jù)表達式與簡單程序設計_第3頁
數(shù)據(jù)表達式與簡單程序設計_第4頁
數(shù)據(jù)表達式與簡單程序設計_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第4章數(shù)據(jù)、表達式與簡單程序設計基本要點:掌握程序代碼的書寫規(guī)則、數(shù)制與數(shù)據(jù)類型、不同類型常量的表示方法、系統(tǒng)內(nèi)部常量、用戶定義常量的定義方法;全面掌握運算符與表達式、公共函數(shù)、inputbox函數(shù)與msgbox函數(shù)。重點:數(shù)制與數(shù)據(jù)類型、不同類型常量的表示方法、系統(tǒng)內(nèi)部常量、用戶定義常量的定義方法;運算符與表達式,公共函數(shù)、inputbox函數(shù)與msgbox函數(shù)。難點:數(shù)據(jù)類型、公共函數(shù)、inputbox函數(shù)與msgbox函數(shù)。4.1VB語言字符集及編碼規(guī)則一、VB的字符集l

字母:大寫英文字母A—Z;小寫英文字母a—z。l

數(shù)字:0一9;l專用字符:共27個,二、編碼規(guī)則與約定

(一)、編碼規(guī)則1.VB代碼中不區(qū)分字母的大小寫。2.在同一行上可以書寫多條語句,但語句間要用冒號“:”分隔。

例如:x=10:y$="visualbasic":z=20

3.若一個語句行不能寫下全部語句,或在特別需要時,可以換行。換行時需在本行后加入續(xù)行符,1個空格加下劃線“_”。例如:Dimstudent_nameAsString,student_numberAsString,computerAs_Integer,englishAsInteger4.一行最多允許255個字符。5.注釋以Rem開頭,也可以使用單引號“‘”,注釋內(nèi)容可直接出現(xiàn)在語句的后面。例如(1)PrivateSubForm_Click()

Rem

響應單機事件的過程

Print"ok"EndSub(2)PrivateSubForm_Click()'響應單機事件的過程

Print"ok"'響應單機事件的過程EndSub6.在程序轉(zhuǎn)向時需用到標號,標號是以字母開始而以冒號結(jié)束的字符串。(二)、約定1.為了提高程序的可讀性,對于VB中的關鍵字其首字母大寫,其余字母小寫2.注釋有利于程序的維護和調(diào)試

Rem開始或單撇‘。例如:’ThisisaVBREMThisisaVB在6.0中新增了“塊注釋/取消塊注釋”(視圖-工具欄-編輯)3.通常不使用行號4.對象名命名約定:每個對象的名字由3個小寫字母組成的前綴(指明對象的類型)和表示該對象作用的縮寫字母組成。4.2

數(shù)據(jù)類型一.標準數(shù)據(jù)類型4.2.1.標準數(shù)據(jù)類型(P43)1.數(shù)值數(shù)據(jù)類型①Integer型和Long型用于保存整數(shù)②Single型和Double型用于保存浮點實數(shù)③Currency型是定點實數(shù),保留小數(shù)點右邊4位和小數(shù)點左邊15位,一般用于貨幣計算④Byte型用于存儲二進制數(shù)。所有數(shù)值型變量均可相互賦值。在將浮點數(shù)賦值給整數(shù)之前,VB自動將浮點數(shù)的小數(shù)部分四舍五入,而不是將小數(shù)部分去掉。但當小數(shù)位恰好是0.5時,則舍入到靠近它的偶數(shù)。2.字符數(shù)據(jù)類型String類型用于存放字符型數(shù)據(jù)。在VB中,一個字符串通常要用雙引號括起來。例如:“Thisisabook.”在VB中,字符串型變量可分兩種:變長字符串和定長字符串。DimStr1AsStringStr1為變長字符串型變量DimStr1AsStringStr2為定長字符串型變量,可存放20個字符3.日期(Date)數(shù)據(jù)類型表示日期范圍從公元100年1月1日~9999年12月31日,而時間范圍從0:00:00~23:59:59。日期型數(shù)據(jù)必須用號碼符“#”括起來,其標準格式有3種:●#月/日/年#例如#3/18/1999#●#時:分:秒AM或PM#例如#8:05:37AM#●#月/日/年時:分:秒AM或PM#例如#5/20/199921:05:37PM#注:VB也可以識別一些非標準格式的日期。如:#January1,1997#、#1Jan,97#、#1985-5-2010:28:00PM#、#99,2,8#、#5/20/99#不過,輸入這些非標準的日期之后,VB將自動將其轉(zhuǎn)換為標準格式的日期。

VB不能識別包含“年、月、日”文字信息的日期格式,如#1998年2月8日#就是錯誤的4.邏輯(Boolean)數(shù)據(jù)類型Boolean類型通常稱為布爾類型或邏輯型。邏輯型變量主要用于表示邏輯半段的結(jié)果,只有兩個值True或False。將邏輯數(shù)據(jù)轉(zhuǎn)換成整型或長整型時:True為-1,F(xiàn)alse為0;將整型或長整型數(shù)據(jù)轉(zhuǎn)換成邏輯數(shù)據(jù)時:非0為True,0為False。5.對象(Object)數(shù)據(jù)類型6.變體(Variant)數(shù)據(jù)類型4.3常量和變量4.3.1常量在程序運行過程中,其值不能被改變的量稱為常量。在VB中有三類常量:普通常量符號常量系統(tǒng)常量。一、普通常量

VB中的普通常量包括數(shù)值型常量、字符型常量、邏輯型常量、日期/時間型常量。

1.

數(shù)值型常量一般的數(shù)值型常量由正負號、數(shù)字和小數(shù)點組成,正數(shù)的正號可以省略。VB中的數(shù)值型常量有整型數(shù)、長整型數(shù)、定點數(shù)、浮點數(shù)四種表示方式。①整型(Integer)數(shù):表示-32768至32767之間的整數(shù)例如:1011020

②長整型數(shù)(Long):表示-2,147,483,648至2,147,483,647之間的整數(shù)例如:長整型常數(shù)的書寫:3294521

通常我們說的整型常量指的是十進制整數(shù),但VB中可以使用八進制和十六進制形式的整型常數(shù),因此整型常數(shù)有如下三種形式:

1)十進制整數(shù)。如125,0,-89。202)八進制整數(shù)。以&或&O(字母O)開頭的整數(shù)是八進制整數(shù),如&O25表示八進制整數(shù)25,即(25)8,等于十進制數(shù)21。3)十六進制。以&H開頭的整數(shù)是十六進制整數(shù),如&H25表示十六進制整數(shù)25,即(25)16,等于十進制數(shù)37。VB中的顏色數(shù)據(jù)常常用十六進制整數(shù)表示。③定點數(shù):定點數(shù)是正的或負的帶小數(shù)點的數(shù),如1.234、-0.345.貨幣型數(shù)也是定點數(shù),如345.789@。④實數(shù)/浮點數(shù)浮點數(shù)分為單精度浮點數(shù)和雙精度浮點數(shù)。浮點數(shù)由尾數(shù)、E(或D)和指數(shù)三部分組成。例如+1234.56E+123、+0.23456E-120、-9.654E6、-1234.56D+123。字母E(單精度)或D(雙精度)代表乘上10的冪次;尾數(shù)是實數(shù);指數(shù)是整數(shù)。注:浮點數(shù)書寫時,E或D前面的尾數(shù)和后面的指數(shù)均不能省略。例如E-5、1E都是非法的浮點數(shù)。1)單精度實型(Single):有效數(shù)為7位表示-3.37E+38至3.37E+38之間的實數(shù)

2)雙精度實型(Double):有效數(shù)為15位常量的表示:1)十進制小數(shù)形式。它是由正負號(+,-)、數(shù)字(0~9)和小數(shù)點(.)或類型符號(!、#)組成,即±n.n,±n!或±n#,其中n是0~9的數(shù)字。例如0.123、.123、123.0、123!、123#等都是十進制小數(shù)形式。2)指數(shù)形式。(單精度E,雙精度D)±nE±m(xù)

或±n.nE±m(xù),±nD±m(xù)

或±n.nD±m(xù)

例:1.25E+3和1.25D+3相當于1250.0或者1.25×103。2.字符型常量把一串字符用””括起來,就構成一個字符型常量。例如“ABC”,“abcdefg”,“123”,“0”,“VB程序設計”等。(“VisualBasic程序設計”的字符串長度是17,由11個英文字母、2個空格和4個漢字組成)說明:(1)字符串中的字符可以是所有西文字符和漢字、標點符號等;(2)""表示空字符串,而""表示有一個空格的字符串;(3)若字符串中有雙引號,例如ABD"XYZ,則用連續(xù)兩個雙引號表示,即:"ABD""XYZ”3.邏輯型常量只有兩個取值True或False。4.日期/時間型常量日期/時間型常量必須用號碼符“#”括起來。例如#3/18/1999#、#5/20/199921:05:37PM#二.符號常量在程序中,某個常量多次被使用,則可以使用一個符號來代替該常量,這樣不僅在書寫上方便,而且有效地改進了程序的可讀性和可維護性。VB中使用關鍵字Const聲明符號常量。其格式如下:Const常量名[As類型|類型符號]=常數(shù)表達式例如ConstPI#=3.1415926535等價于ConstPIAsDouble=3.1415926535ConstNew%=50表示New是整型符號常量

ConstmaxAsInteger=55Const語句課同時定義多個符號常量,各符號常量之間用逗號隔開。如

ConstMax=130,Min=120,PI=3.1415926三、系統(tǒng)常量

VB系統(tǒng)提供了應用程序和控件的系統(tǒng)定義常數(shù)。它們存放于系統(tǒng)的對象庫中,在“對象瀏覽器”中的VisualBasic(VB)和VisualBasicforapplications(VBA)對象庫中列舉了VisualBasic的常數(shù)例如,vbCrLf等于Chr(13)+Chr(10),代表回車換行。要將文本框Text1的前景顏色設置為紅色,可以使用下面的語句:

Text1.ForeColor=vbRed

這里的vbRed就是系統(tǒng)常量。這比直接使用16進制數(shù)來設置要直觀得多。又如,窗口狀態(tài)屬性WindowsState可取0,1,2三個值,對應三種不同狀態(tài)。在程序中使用語句:最大

Myform.WindowsState=vbMaximized

將窗口極大化,顯然要比使用語句

myform.WindowsState=2易于閱讀和理解。一.變量的命名規(guī)則

1.以字母或漢字開頭,后可跟字母、數(shù)字或下劃線組成.例如:am、dc124、W_99為合法的變量名,、3a、print為不合法的變量名。

2.長度不超過255個字符;不能使用VB中的關鍵字;

3.VB中不區(qū)分變量名的大小寫.4.為了增加程序的可讀性,可在變量名前加一個縮寫的前綴來表明該變量的數(shù)據(jù)類型。例如:strAbc,(字符串變量)

intCount,(整型變量)

dblx(雙精度變量)

sngYz

(單精度變量)4.3.2變量二.變量聲明

1.用Dim語句顯式聲明變量形式:Dim變量名[AS類型] Dim變量名[類型符]例

DimintCountAsinteger,sumAssingle等價于DimintCount%,sum!DimsngReAsSingle,intKyAsInteger聲明sngRe為單精度型,intKy為整型DimsngRe!,intKy%注:變量名與類型符之間不能有空格DimstrNameAsString聲明strName為不定長字符串DimstrAddressAsString*50聲明strAddress為長度50的定長字符串DimxAsInteger,yAsinteger,zAsinteger等于Dimx%,y%,z%注:變量被定義后,VB自動給每個變量賦一個初值。數(shù)值型變量賦的初值為0;字符或Variant型變量賦的初值是空串;布爾型變量賦的初值是False;日期型變量賦的初值是0:0:0;若為變體型,則初始值為空值(Empty)2.用類型說明符隱式聲明變量隱式聲明變量是指在變量名后加上一個用于規(guī)定變量類型的說明字符,來聲明變量的類型。形式為:變量名類型符注:這里變量名與類型符之間不能有空格。例如:Num%=10Country1$=”China”VisualBasic允許用戶在編寫應用程序時,不聲明變量而直接使用,系統(tǒng)臨時為新變量分配存儲空間并使用,這就是隱式聲明。所有隱式聲明的變量都是Variant數(shù)據(jù)類型。VisualBasic根據(jù)程序中賦予變量的值來自動調(diào)整變量的類型。VB沒有規(guī)定變量在使用前一定要先聲明。對于沒有聲明便使用的變量,VB將其自動視為可變類型變量。例1下面是一個很簡單的程序,其使用的變量a,b,Sum都沒有事先定義。PrivateSubForm_Click()Sum=0a=10:b=20Sum=a+bPrint"Sum=";SumEndSub例2PrivateSubCommand1_Click()DimrAsIntegerr=5Print"圓的半徑:";r;"cm"Print"圓的周長:";2*3.1415*r;"cm"Print"圓的面積:";3.1415*r^2;"cm"EndSub3.強制顯式聲明——OptionExplicit語句良好的編程習慣都應該是“先聲明變量,后使用變量”,這樣做可以提高程序的效率,同時也使程序易于調(diào)試。VisualBasic中可以強制顯式聲明,可以在窗體模塊、標準模塊和類模塊的通用聲明段中加入語句:OptionExplicit4.4運算符與表達式

4.4.1算數(shù)運算符和算數(shù)表達式(ia=3)5+10mod10\9/3+2^2結(jié)果:109\3*3=19/3*3=9算術運算符^→–(取負)→*和/→\→Mod→+和–→&用算數(shù)運算符和圓括號將操作數(shù)連接起來的式子叫算數(shù)表達式。操作數(shù)可以是常量、變量或函數(shù)等。使用圓括號來改變運算次序。如X+(A/3)+(X+Y)^2-5.5Mod2注:①VB中允許不同數(shù)據(jù)類型的操作數(shù)出現(xiàn)在同一表達式中,系統(tǒng)將自動進行數(shù)據(jù)類型的轉(zhuǎn)換,VB規(guī)定運算結(jié)果的數(shù)據(jù)類型以精度高的數(shù)據(jù)類型為準。即:

Integer<Long<Single<Double<Currency但當Long型數(shù)據(jù)與Single型數(shù)據(jù)運算時,結(jié)果為Double型數(shù)據(jù)②除(/)運算的操作數(shù)可以是整數(shù)或浮點數(shù),運算結(jié)果的類型總是Double型。例如

17/53.43.6/1.82(盡管輸出結(jié)果顯示是2,但仍是Double型數(shù)據(jù))19/2.57.610/33.333333333

33333③整除(\)運算時,一般要求操作數(shù)為整數(shù),若操作數(shù)中有浮點數(shù),則必須先對小數(shù)部分按四舍五入原則進行處理,然后再進行整除。如9\4=231.77\5.8=53\1.4999=33\1.5=1④取模(Mod)運算就是求兩個數(shù)相除后的余數(shù),若操作數(shù)中有浮點數(shù),則必須先對小數(shù)部分按四舍五入原則進行處理,然后再進行運算,運算結(jié)果的符號取決于左操作數(shù)的符號。如

24Mod7=331.77Mod5.8=28.6Mod3=0-5Mod2=-1-5Mod-2=-15Mod-2=1書寫時兩個操作數(shù)與Mod之間要留有空格⑤進行除(包括整除)運算除數(shù)為0時,或進行乘方運算指數(shù)為負而底數(shù)為0時,都會產(chǎn)生算數(shù)溢出的錯誤信息。4.4.2字符串運算符與字符串表達式

字符串運算符有:&、+

例如:"ABCD"+"EFGHI"結(jié)果為:ABCDEFGHI“VB”&“程序設計教程”結(jié)果為:VB程序設計教程說明:當連接符兩旁的操作量都為字符串時,上述兩個連接符等價。它們區(qū)別是:

+:運算符兩邊的操作數(shù)應均為字符型。若均為字符型則進行算術運算。若一邊為字符型另一邊為數(shù)值型,則系統(tǒng)自動將字符串轉(zhuǎn)換為數(shù)值,進行算術運算;若系統(tǒng)無法將該字符串轉(zhuǎn)換為數(shù)值,則出錯。如“1234”+51239 “1234”+“5” “12345” “Basic”+5運行時出錯

&:運算符兩邊的操作數(shù)不管是字符型還是數(shù)值型,進行連接操作前,系統(tǒng)先將操作數(shù)轉(zhuǎn)換成字符型,然后再連接。如 “Basic”&5 “Basic5” “1234”&5 “12345” “1234”&“5” “12345”例:"100"+123'結(jié)果為223"100"+"123"'結(jié)果為100123"Abc"+123'出錯

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

注意:使用運算符“&”時,要在運算符“&”兩邊輸入空格。這是因為符號“&”還是長整型的類型定義符,如果變量與符號“&”接在一起,VB系統(tǒng)先把它作為類型定義符處理,因而就會出現(xiàn)語法錯誤。

4.4.3關系運算符與關系表達式

關系運算符都是雙目運算,是用來比較兩個運算量之間的關系,關系表達式的運算結(jié)果為邏輯量,True或False。

VB中的關系運算符如下表所示。

運算符含義優(yōu)先級實例結(jié)果<小于所有關系運算優(yōu)先級相同。低于算術運算的加“+”,減“-”運算,高于邏輯非“Not”運算。15+10<20False<=小于或等于10<=20True>大于10>20False>=大于或等于"This">="That"True=等于"This"="That"False<>不等于"This"<>"That"TrueLike字符串匹配"This"Like"*is"TrueIs對象比較Command1IsCommand1

True關系運算的規(guī)則如下:(1)當兩個操作式均為數(shù)值型,按數(shù)值大小比較,如果兩端的值可滿足關系運算符,則結(jié)果為True,否則為False。(2)字符串比較,則按字符的ASCII碼值(數(shù)字<大寫字母<小寫字母)從左到右按照“逐個比較,遇大則大,長大短小,完全相同才是相等”的原則進行。例:"ABCDE">"ABRA" 結(jié)果為False(3)數(shù)值型與可轉(zhuǎn)換為數(shù)值型的數(shù)據(jù)比較,如:29>"189"按數(shù)值比較,結(jié)果為False12345=”12345”結(jié)果為True(4)數(shù)值型與不能轉(zhuǎn)換成數(shù)值型的字符型比較,如:77>"sdcd"不能比較,系統(tǒng)出錯

12345=”abc”(5)關系運算符的優(yōu)先級相同,運算時從左至右依次進行。(6)對浮點數(shù)進行比較時,因為計算機的運算誤差,可能會得到不希望的結(jié)果。因此應避免直接判斷兩個浮點數(shù)是否相等,而應改成對誤差的判斷。例如:Abs(num1-num2)<1E-6只要num1與num2的差小于一個很小的數(shù)(這里是10的-6次方),就認為是相等了。(7)“Like”運算符是VB6.0新增加的。通常與通配符一起使用對sql數(shù)據(jù)庫進行模糊查找。其使用格式為:”abcdefghi”Like“a*f???”結(jié)果為True4.4.4邏輯運算符與邏輯表達式

Not邏輯非為單目運算符(要求一個操作數(shù)),其它為雙目運算符。條件表達式1And條件表達式2條件表達式均為T結(jié)果為T

條件表達式1Or條件表達式2條件表達式有一個T結(jié)果為T說明:(1)邏輯運算符的優(yōu)先級不相同,Not(邏輯非)最高,但它低于關系運算。(2)VB中常用的邏輯運算符是Not、And和Or。它們用于將多個關系表達式進行邏輯判斷。例如,數(shù)學上表示某個數(shù)在某個區(qū)域時用表達式:10≤X<20,用VB程序中應寫成:

X>=10AndX<20(3)參與邏輯運算的量一般都應是邏輯型數(shù)據(jù),如果參與邏輯運算的兩操作數(shù)是數(shù)值量,則以數(shù)值的二進制值逐位進行邏輯運算(0當False,1當True)。如11AND7(11的二進制數(shù)為1011,而7的二進制數(shù)為0111,對它們逐位進行AND邏輯與運算,得到二進制數(shù)0011,結(jié)果為十進制數(shù)3)(4)所有邏輯運算符都不是界符,在輸入代碼時,要在邏輯運算符兩邊輸入空格關系表達式與邏輯表達式常常用在條件語句與循環(huán)語句中,作為條件控制程序的流程走向。例

(1)數(shù)學上判斷x是否在[a,b]區(qū)間時,習慣上寫為a≤x≤b,但在VB中應該寫為

a<=xAndx<=b(2)用邏輯表達式表示閏年的條件(閏年的條件是符合二者之一①能被4整除但不能被100整除②能被400整除)(YearMod4=0AndYearMod100<>0)OrYearMod400=0(3)若優(yōu)秀學生的條件是年齡(Age)小于20歲,三門功課成績(M1、M2、M3)的總分高于280分,其中有一門要大于95分

Age<20And(M1+M2+M3)>280AndM1>95OrM2>95OrM3>954.4.5日期型表達式日期型數(shù)據(jù)是一種特殊的數(shù)值型數(shù)據(jù),只能有下面3種情況:1.一個日期型數(shù)據(jù)可以相減:DateB-DateA結(jié)果是一個數(shù)值型整數(shù)(兩個日期相差的天數(shù))。例如:#05/08/2009#-#05/01/2009#其結(jié)果為數(shù)值:72.一個日期型數(shù)據(jù)(DateA)與一數(shù)值數(shù)據(jù)(N)可作加法運算:DateA+N其結(jié)果仍是一個日期型數(shù)據(jù)。例如:#05/01/2009#+7其結(jié)果為日期型數(shù)據(jù):#05/08/2009#3.一個日期型數(shù)據(jù)(DateA)與一數(shù)值數(shù)據(jù)(N)可作減法運算:DateA-N其結(jié)果仍是一個日期型數(shù)據(jù)。例如:#05/08/2009#-7其結(jié)果為日期型數(shù)據(jù):#05/01/2009#4.4.6運算符的執(zhí)行順序

表達式中出現(xiàn)了多種不同類型的運算符時,其運算符優(yōu)先級如下:

算術運算符>字符運算符>關系運算符>邏輯運算

說明:

1.當一個表達式中出現(xiàn)多種運算符時,首先進行算術運算符,接著處理字符串連接運算符,然后處理比較運算符,最后處理邏輯運算符,在各類運算中再按照相應的優(yōu)先次序進行。

2.可以用括號改變優(yōu)先順序,強令表達式的某些部分優(yōu)先運行。括號內(nèi)的運算總是優(yōu)先于括號外的運算。對于多重括號,總是由內(nèi)到外。算術運算符^

*和/

\

→Mod

+和–

&和+

3.表達式的書寫中需注意的問題

(1)運算符不能相鄰,一般兩個相鄰運算符之間必須用括號分開。例x*(-y)不能寫為x*-y。(2)乘號不能省略。例x乘以y應寫成:x*y

(3)括號必須成對出現(xiàn),均使用圓括號。(4)表達式從左到右在同一基準并排書寫,不能出現(xiàn)上下標(5)要注意各種運算符的優(yōu)先級別,為保持運算順序,在寫VB表達式時需要適當添加括號(),若用到庫函數(shù)必須按庫函要求書寫。

如:

(b-sqr(b*b-4*a*c))/(2*a)(a+b)/(a-b)

VB提供了上百種內(nèi)部函數(shù)(庫函數(shù)),要求掌握這些常用函數(shù)的功能及使用。調(diào)用方法:

函數(shù)名(參數(shù)列表)有參函數(shù)函數(shù)名無參函數(shù)說明:(1)使用庫函數(shù)要注意參數(shù)的個數(shù)及其參數(shù)的數(shù)據(jù)類型(2)要注意函數(shù)的定義域(自變量或參數(shù)的取值范圍)例如:sqr(x)要求:x>=0

約定:下列敘述中,N表示數(shù)值表達式,C表示字符表達式,D表示日期表達式;另外,凡是函數(shù)名后有$符號者,表示函數(shù)返回值為字符串。4.5常用內(nèi)部函數(shù)

1.數(shù)學函數(shù)常用的數(shù)學函數(shù)見表所示

Abs(N)Cos(N)Sin(N)Exp(N)Log(N)Sqr(N)Rnd[(N)]Sgn(N)

說明:(1)在三角函數(shù)中的自變量是以弧度表示?;《?度數(shù)*3.14159/180

如:sin300sin(300*3.14159/180)(2)VB只提供求以e為底的自然數(shù)對數(shù)的函數(shù)Log(x),若要求以其它數(shù)為底數(shù)的對數(shù),應使用換底公式。例如求以10為底的常用對數(shù)lgx可表示為log(x)/log(10)

(3)Rnd函數(shù)返回0~1(包括0和不包括1)之間的雙精度隨機數(shù)。產(chǎn)生某個范圍內(nèi)的隨機整數(shù),可使用公式:Int((上界—下界+1)*Rnd)+下界若要產(chǎn)生1-100的隨機整數(shù):Int(Rnd*100)+1

怎樣產(chǎn)生[N,M]區(qū)間的隨機整數(shù)?答案:int((m-n+1)*rnd)+n

例PrivateSubForm_Click()Dimd1AsInteger,d2AsIntegerd1=Int((6-1+1)*Rnd+1)d2=Int((6-1+1)*Rnd+1)Print"你擲了一個"&d1&"和一個"&d2Print"兩個骰子的點數(shù)之和為;"&(d1+d2)EndSub4.5.2類型轉(zhuǎn)換函數(shù)(1)要區(qū)別兩個取整函數(shù)int()和fix()

Fix(N)為截斷取整,即去掉小數(shù)后的數(shù)。

Int(N)不大于N的最大整數(shù)。

N>0與int(N)相同,當N<0時,int(N)與fix(N)-1相等。例如:Fix(9.59)=9,Int(9.59)=9Fix(-9.59)=-9,Int(-9.59)=-10

思考:如何實現(xiàn)四舍五入取整?答案:cint(9.59)=10,cint(-9.59)=-10

(2)Asc("Abcd")值為:65(只取首字母的Ascii值)(3)Val("abc123")值為:0,Val("1.2sa10")值為1.2

注意:Val()函數(shù)只將最前面的數(shù)字字符轉(zhuǎn)換為數(shù)值。(4)Str函數(shù)和Cstr函數(shù)當使用Str函數(shù)將數(shù)值型數(shù)據(jù)轉(zhuǎn)換成字符串時,其結(jié)果字符串的第一個字符一定是空格或是正負號。例如:X=Str(123)X的值為”123”,注意字符串包含一前導空格,暗示有一正號X=Str(-123.456)X的值為”-123.456”X=Str(+123.456)X的值為”+123.456”若用Cstr函數(shù)也可以將數(shù)值型數(shù)據(jù)轉(zhuǎn)換成字符串,但其結(jié)果字符串是直接將數(shù)值型數(shù)據(jù)兩邊加上雙引號而得。例如:Cstr(123)的值為”123”(此時字符串不包含前導空格)。因此,Len(Str(123))的值為4,而Len(Cstr(123))的值為3

例PrivateSubCommand1_Click()PrintChr(Asc("A"))PrintAsc("ABCDEF")PrintTrim(Str(Asc("ABCDEF")))Print"顯示在上一行"+Chr(13)+Chr(10)+"顯示在下一行"注:等效于Print"顯示在上一行"+vbCrLf+"顯示在下一行"EndSub

注:Chr(13)和Chr(10)分別代表回車和換行,完全等效于VB內(nèi)部常量vbCrLf。3.字符串操作函數(shù)(常用的字符串函數(shù)見表)

說明:如果返回是字符型,則函數(shù)后有“$”字符。當然一般可以不寫,習慣都寫上。例如:

len("Thisisabook!")15Left$("ABCDEFG",3)"ABC"Mid$("ABCDEFG",2,3)"BCD"InStr(2,“ABCDEFGEF”,“EF”)5(第一次出現(xiàn)的位置)

InStr(6,“ABCDEFGEF”,“EF”)8(第二次出現(xiàn)的位置)函數(shù)名功能說明例結(jié)果Now系統(tǒng)當前的日期和時間Now99/05/2011:26:30AMDate系統(tǒng)當前的日期(年-月-日)Date1999-05-20Time系統(tǒng)當前的時間(hh:mm:ss)Time11:26:30AMYear(D)年份(yyyy)Year(#2/9/99#)1999Month(D)月份(1-12)Month(“99,05,01”)5Day(D)月中第幾日(1-31)Day(#2/9/99#)9Weekday(D)星期幾(1-7),1表示星期日Weekday(#2/9/99#)34.5.4日期與時間函數(shù)掌握:Time()Date()NowYear()Month()Day()注意:當日期函數(shù)中的參數(shù)為數(shù)值型時,表示相對于1899年12月30日為前后的天數(shù)。例如,Year(365)表示相對于1899年12月30日為0天后365天的年代號,所以值為1900.例如:PrivateSubForm_Click()Print"今天是"+Str(Year(Date))+"年"+Str(Month(Date))+"月"+Str(Day(Date));"日"PrintPrint"現(xiàn)在是北京時間"&TimeEndSub4.5.5格式化輸出函數(shù)使用格式:Format$(表達式[,“格式字符串”])功能:格式化輸出函數(shù)Format主要用于屏幕顯示或打印時對輸出項的內(nèi)容進行格式描述,以滿足不同輸出格式的要求,常常用在print方法中。使用形式:printFormat$(表達式[,“格式字符串”])表達式:可以是數(shù)值、日期或字符串型表達式。格式字符串:表示輸出表達式時采用的輸出格式。不同數(shù)據(jù)類型所采用的格式字符串是不同的。(1)數(shù)值型數(shù)據(jù)格式化注意:對于符號:0與#,當數(shù)值的實際位數(shù)比格式控制給定的位數(shù)多時,系統(tǒng)將按四舍五入返回給定的位數(shù)。如:Format(3.14159,“###.#00”),其值為3.142符號功能說明數(shù)值表達式格式化字符串顯示結(jié)果#用于表示一個數(shù)字位。若實際數(shù)值的位數(shù)小于符號位數(shù),數(shù)字前后不加01234.5671234.56712“#####.####”“###.##”“#.##”1234.5671234.57120功能同#。只是當實際數(shù)值的位數(shù)小于符號位數(shù),數(shù)字前后加01234.5671234.56712“00000.0000”“000.00”“0.00”01234.56701234.5712.00.小數(shù)點占位符。常與#和0格式符配合使用1234“000.000”1234.000,千分位符號占位符1234.567“##,##0.0000”1,234.5670%數(shù)值乘以100,加百分號。常放在格式字符串的末尾1234.5678“####.##%”123456.78%$常放在格式字符串的開頭,以使在輸出的數(shù)值前加一個$符號1234.567“$####.##”$1234.57+常放在格式字符串的開頭,用以在輸出的數(shù)值前加正號-1234.567“+####.##”-+1234.57-常放在格式字符串的開頭,用以在輸出的數(shù)值前加負號1234.567“-####.##”-1234.57E+指數(shù)形式輸出0.123450.12345“0.00E+00”“00.00E+00”1.23E-0112.35E-02E-與E+作用相似1234.5671234.567“#.##E-00”“##.##E-00”1.23E0312.35E02(2)日期和時間型數(shù)據(jù)格式化缺省日期格式為:“mm/dd/yy”,時間格式:“hh:mm:ss”

如:PrintFormat(Now),其值為2008-03-1010:07:10類型符號功能說明日d顯示日期(1—31),個位前不加0dd顯示日期(01—31),個位前加0ddd顯示星期縮寫(Sun——Sat)dddd顯示星期全名(Sunday——Saturday)ddddd顯示完整日期(日、月、年)缺省格式為mm/dd/yy月m顯示月份(1——12),個位前不加0mm顯示月份(01——12),個位前加0mmm顯示月份縮寫(Jan——Dec)mmmm顯示月份全名(January——December)年y顯示一年中的天(1——366)yy兩位數(shù)顯示年份(00——99)yyyy四位數(shù)顯示年份(0100——9999)季q季度數(shù)(1——4)星期w星期為數(shù)字(1——7,1為星期日)ww一年中的星期數(shù)(1——53)時h顯示小時(0——23),個位前不加0hh顯示小時(00——23),個位前加0分m在h后顯示分(0——59),個位前不加0mm在h后顯示分(00——59),個位前加0秒s顯示秒(0——59),個位前不加0ss顯示秒(00——59),個位前加0tttt顯示完整時間(小時、分、秒)缺省格式為hh:mm:ssAM/PMam/pm用12小時制顯示時間,中午前AM(或am),中午后PM(或pm)。和h格式符一起使用A/Pa/p同“AM/PM”,中午前A(或a),中午后P(或p)例PrivateSubCommand1_Click()DimmytimeAsDate,mydateAsDateFontSize=10FontBold=Truemytime=#9:01:35AM#mydate=#7/1/1999#PrintTab(4);Format(mydate,"mm-dd-yy")PrintTab(4);Format(mydate,"mmmm-yy")PrintTab(4);Format(mytime,"h/m/sAM/PM")PrintTab(4);Format(mytime,"hh:mm:ssA/P")PrintTab(4);Format(Now,"yyyy年m月dd日hh:mm:ss")PrintTab(4);Format(Date,"dddd,mmmm,yyyy-mm-dd")EndSub(3)字符串類型數(shù)據(jù)格式化字符串格式化是指將字符串按“格式字符串”指定的格式輸出。符號功能說明字符串表達式例格式化字符串顯示結(jié)果@字符占位符。實際字符位數(shù)小于符號位數(shù)時,字符前加空格“ABab”“@@@@@@”ABab!與@一起使用,當實際字符位數(shù)小于符號位數(shù)時,強制字符后加空格“ABab”“!@@@@@@”ABab&字符占位符。實際字符位數(shù)小于符號位數(shù)時,字符前不加空格“ABab”“&&&&&&&”ABab<強制小寫。將所有字母以小寫顯示“ABcd”“<”Abcd>強制大寫。將所有字母以大寫顯示“ABcd”“>”ABCD4.6用戶交互函數(shù)和過程

4.6.1InputBox函數(shù)變量名=InputBox[$](提示信息[,標題][,缺省][,x坐標][,y坐標])

其中:提示信息:該項為一字符串表達式(≤255個字符),不可以省略。若信息太長需要進行多行顯示,必須在每行行末加回車Chr(13)和換行符Chr(10),或直接加回車換行控制符vbCrLf。X坐標、y坐標:是對話框左上角點相對于屏幕(注意,不是窗體)的坐標。

例如:有下列語句如下:

Dimx%x=Val(InputBox(“請輸入一個數(shù)”,“輸入框”,100))

語句執(zhí)行后打開如下對話框。缺省值標題題提示注:Inputbox函數(shù)的函數(shù)值是字符串類型。例1.PrivateSubCommand1_Click()Dimmj,djmj=Val(InputBox("商品房面積"))dj=Val(InputBox("每平米價格"))Print"商品房面積";mjPrint“每平米價格”;djPrint"商品房價格";dj*mj;"元"EndSub(程序中mj和dj都定義為可變類型變量,而要求輸入商品房面積和每平米價格的Inputbox函數(shù)的結(jié)果是字符串類型,因此需要加Val把字符串轉(zhuǎn)換成數(shù)值。)例2PrivateSubForm_Click()DimstrnameAsString*40,strtmpAsString*40strname="輸入你的姓名"+vbCrLf+"然后單擊確定"strname=InputBox(strname,"輸入框程序示例","******",100,100)PrintstrnameEndSub2.MsgBox函數(shù)和MsgBox過程(message的縮寫)函數(shù)形式:變量[%]=MsgBox(提示[,按鈕[+圖標][+缺省按鈕][+模式]][,標題])過程形式:MsgBox

提示[,按鈕[+圖標][+缺省按鈕][+模式]][,標題]圖標標題提示信息命令按鈕說明:1“標題”和“提示”與InputBox函數(shù)中對應的參數(shù)相同;2“按鈕(C1)+圖標(C2)+缺省按鈕(C3)+模式(C4)”是整型表達式,決定信息框按鈕數(shù)目、出現(xiàn)在信息框上的圖標類型及操作模式(見表)

3若程序中需要返回值,則使用函數(shù),否則可調(diào)用過程。例如:前一頁的圖用下面的語句實現(xiàn)

PrintMsgBox(“注意:你輸入數(shù)據(jù)不正確”,50,“錯誤提示”)

根據(jù)選擇的不同,有3、4、5三個結(jié)果。按鈕按鈕、圖標、缺省按鈕、模式的值如下(P58)

根據(jù)用戶所選按鈕,函數(shù)返回1—7的整數(shù)值,其含義如下表(P58)例1.PrivateSubForm_Load()DimMsgPromptAsString,MsgTitleAsStringDimMsgStyleAsInteger,iAsIntegerMsgPrompt="輸出信息對話框"MsgStyle=1+48+0(也可以寫成MsgStyle=vbOkCanael+vbExclamation+vbDefaultButton1或直接寫成MsgStyle=49)MsgTitle="輸出對話框"i=MsgBox(MsgPrompt,MsgStyle,MsgTitle)Ifi=1Then

MsgBox"確定"Else

MsgBox"取消"EndIfEndSub例2.(口令:zhang)

PrivateSubCommand1_Click()DimiAsIntegerIfText1.Text="zhang"Then

MsgBox"口令輸入正確",vbInformation,"消息框程序示例"Else i=MsgBox("口令輸入錯誤",5+48,"輸入口令") Ifi=4Then Text1.Text="" Text1.SetFocus Else End EndIfEndIfEndSub補充說明:1.變量作用域作用范圍局部變量窗體/模塊級變量全局變量

窗體標準模塊聲明方式Dim、StaticDim、PrivatePublic聲明位置在過程中窗體/模塊的“通用聲明”段窗體/模塊的“通用聲明”段能否被本模塊其他過程存取不能能能能否被其他模塊存取不能不能能,但在變量名前加窗體名能,如果不唯一則需加模塊名2.VB中常用數(shù)據(jù)類型的初始值(1)初值為0%,&,!,#,byte,@(2)邏輯型:false(3)字符串:空(定長串為定長空)(4)日期型:0:00:003.不同數(shù)據(jù)類型數(shù)據(jù)的賦值(1)如果變量與表達式都是數(shù)值型,系統(tǒng)先求出表達式值,再將其轉(zhuǎn)換為變量類型最后賦值。

eg.K%=3.45*6‘四舍五入取整結(jié)果:k=21k&=17524*2‘%*%=%結(jié)果:溢出

k&=190^2‘^為double型結(jié)果:k=36100(2)如果變量是字符型,表達式為數(shù)值類型,則系統(tǒng)把表達式的值轉(zhuǎn)換為字符型賦值給變量。

eg.A$=2.3e5printa結(jié)果:“230000”

(3)對于小數(shù)(如:小數(shù)0.5)系統(tǒng)默認是double型(4)不同類型的數(shù)值數(shù)據(jù)運算時其結(jié)果的類型與數(shù)值范圍最大的數(shù)據(jù)類型一致

eg.a%=30:b%=40:c%=50Printa*b*c*1&‘%*%=%結(jié)果:溢出

Print1&*a*b*c’&*%=&結(jié)果:60000練習:強制顯式說明:OptionExplicit語句在模塊中使用該語句,當遇到未經(jīng)顯式說明的變量

時,就會發(fā)出錯誤警告OptionExplicitPrivateSubCommand1_Click() DimcurSalaryAsSingle

curSalary=3000

curSalry=curSalry+500EndSubVB接受許多種日期時間格式例:下面的Date/Time值全部有效。

#3-6-9313:20##March27,19931:20am##Apr-2-93##14April1993##12/18/1999#可以用逗號分隔多個常量聲明

ConstPi=3.14,Max=9,MyStr="Hello"'用先前定義過的常量定義新常量

ConstPi2=Pi*2使用:在程序中引用如:AREA=Pi*R^2

在程序中不可修改如:Pi=3.14系統(tǒng)定義符號常量

VB內(nèi)部已定義,可以直接使用的常量查看內(nèi)部常量:

視圖→對象瀏覽器→選擇庫、類、成員如:庫VBRUN

類ColorConstants

ShapeConstants

成員Vbred

例:PrivateSubForm_Activate()ConstAAsString="各種常量的使用"Form1.BackColor=vbGreenForm1.ForeColor=vbRedForm1.FontSize=14PrintAEndSub例:在窗體中放置按鈕Command1和Command2DimaAsIntegerPrivateSubCommand1_Click()a=a+10PrintaEndSubPrivateSubCommand2_Click()a=a+15PrintaEndSub

運行程序,觀察結(jié)果將DimaAsInteger放到過程內(nèi),再運行,觀察結(jié)果。去除Dim,比較使用OptionExplicit與不使用的結(jié)果。例:將以下表達式寫成VB合法的表達式

(xy)za1+a2a-b+a(-b)a1+a2a^(-b)+a*(-b)

(x^y)^z

a^(1/n)

y/(-x)+x/(-y)A/(4+(8/(3+B))1.乘方運算例:10^210的平方,結(jié)果為10010^(-2)10的平方的倒數(shù),結(jié)果為0.0125^0.525的平方根,結(jié)果為58^(1/3)8的立方根,結(jié)果為22^2^3運算順序從左到右,結(jié)果為64(-8)^(-1/3)錯誤,當?shù)讛?shù)為負時,指數(shù)必須是整數(shù)2.整數(shù)除法例:10\4結(jié)果為225.68\6.99先四舍五入再整除,結(jié)果為33.取模運算例:10Mod4結(jié)果為225.68Mod6.99先四舍五入再求余數(shù),結(jié)果為5

11Mod–4結(jié)果為3-11Mod5結(jié)果為-1-11Mod-3結(jié)果為-2字符串運算符與字符串表達式字符串運算符有兩個:&+例:"Hello"&"World"結(jié)果為"HelloWorld""Check"&123結(jié)果為"Check123"123&456結(jié)果為"123456""123"&456結(jié)果為"123456"123+456結(jié)果為579"123"+"456"結(jié)果為"123456""Check"+123錯誤例:將以下條件寫成VB布爾表達式

1.m1-n1≤j≤m1+n12.X<-5或X>53.M和N之一為5,但不能同時為54.-100<k<100,且K為偶數(shù)

5.的定義域1.(J>=M1-N1)And(J<=M1+N1)2.(X<-5.0)Or(X>5.0)3.((M=5)And(N<>5))Or((M<>5)And(N=5))4.(K>-100)And(K<100)And(KMod2=0)5.(X<>0)And((X-1.0)*(X-2.0)>=0.0)表達式的運算順序

()→函數(shù)運算→算術運算→關系運算→布爾運算數(shù)學函數(shù)例:Fix(45.67)結(jié)果為45Int(45.67)結(jié)果為45Fix(-2.89)結(jié)果為-2Int(-2.89)結(jié)果為-3Abs(-4)結(jié)果為4Log(10)結(jié)果為2.30258509299405Sgn(3)結(jié)果為1Sgn(-6)結(jié)果為-1Sgn(0)結(jié)果為0例:求sin300

Sin(a*3.14/180)例:判斷一個整數(shù)Y能否被另一個整數(shù)X整除如果INT(Y/X)=Y/X則整除例:常用對數(shù)log10X的求法用換底公式log10X=Ln(X)/Ln(10)

即LOG(X)/LOG(10)例:求e3

正確:EXP(3)

錯誤:e^3(錯)字符串函數(shù)例:LTrim("∪∪∪ABC")結(jié)果為"ABC"表示空格RTrim("ABC∪∪∪")結(jié)果為"ABC"Trim("∪∪∪ABC∪∪∪")結(jié)果為"ABC"Left("ABCDE",2)結(jié)果為"AB"Right("ABCDE",2)結(jié)果為"DE"Mid("ABCDE",2,3)結(jié)果為"BCD"Mid("ABCDE",2,6)結(jié)果為"BCDE"例:Len("ABCDE")結(jié)果為5String(3,"ABC")結(jié)果為"AAA"String(3,65)結(jié)果為"AAA"

InStr("ABCDECDE","DE")結(jié)果為4InStr(5,"ABCDECDE","DE")結(jié)果為7

UCase("Abc")結(jié)果為"ABC"

LCase("ABc")結(jié)果為"abc"轉(zhuǎn)換函數(shù)例:Asc("A")結(jié)果為65

Asc("ABC")結(jié)果為65Chr(65)結(jié)果為"A"Str(123)結(jié)果為"∪123"Str(-123)結(jié)果為"-123"Val("123")結(jié)果為123Val("123AB")結(jié)果為123Val(".123AB")結(jié)果為.123Val("a123AB")結(jié)果為0格式輸出函數(shù)例:Format(123.45,"0000.000")結(jié)果為"0123.450"Format(123.45,"0.0")結(jié)果為"123.5"Format(123.45,"####.###")結(jié)果為"123.45"Format(123.45,"#.#")結(jié)果為"123.5"Format(0.123,".##")結(jié)果為".12"Format(0.123,"0.##")結(jié)果為"0.12"

Format("HELLO","<")結(jié)果為"hello"

Format("Thisisit",">")結(jié)果為"THISISIT"

注:經(jīng)Format函數(shù)格式化后的結(jié)果為字符串類型例:Format(123)+Format(456)結(jié)果為"123456"區(qū)別:Str(123)+Str(456)結(jié)果為"∪123∪456"本章小結(jié):1.常用數(shù)據(jù)類型整型:Integer%

長整型:Long&

單精度:Single!

雙精

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論