VB程序设计课件_第1页
VB程序设计课件_第2页
VB程序设计课件_第3页
VB程序设计课件_第4页
VB程序设计课件_第5页
已阅读5页,还剩393页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1

VB程式設計基礎2數據類型是程式設計的必要組成部分,也是程式處理的對象。在不同語言中,數據類型的規定和處理方法不同。

VB提供系統定義的數據類型還允許用戶自己定義VB提供的基本數據類型主要有:數值型字串型(String)布爾型(Boolean)/邏輯型日期型(Date)變體型(Variant)對象型(Object)2.1數據類型3類型: 整型(Integer) 長整型(Long) 單精確度浮點型(Single) 雙精度浮點型(Double) 貨幣型(Currency) 位元組型(Byte)***vb會強制數值值為適當的數據類型2.1.1數值型數據4整型(Integer):以2個位元組的二進位碼存儲。十進位:由0-9數字組成和正負號,取值範圍-32768-32767八進制:由0-7數字組成,前面冠以&或&O,取值範圍&0-&177777例:&123,或&O123

十六進制:由0-9數字及A-F組成,前面冠以&H(或&h),取值範圍&H0-&HFFFF例:&H56,&H7F1.整數類型定義:是不帶小數點和指數符號的數根據表示數的範圍的不同,可分為整型、長整型,且都有三種表示形式,即十進位、八進制、十六進制。5長整型(Long):以4個位元組的二進位碼存儲。十進位:由0-9數字組成和正負號,取值範圍-2147483648~2147483647八進制:由0-7數字組成,前面冠以&或&O,以&結束,取值範圍&0&-&37777777777&例:&123&,或&O123&

十六進制:由0-9數字及A-F組成,前面冠以&H(或&h),以&結尾,取值範圍&H0&-&HFFFFFFFF&例:&H56&,&H7F&6是帶小數部分的數。按存儲格式,又分為浮點型和定點型

浮點型實數採用IEEE格式,由符號、尾數及指數三部分組成。2.實數類型單精確度浮點數的指數用E(e)表示;雙精度浮點的指數用D(或d)表示。[+|-]X···X.X···X[E|D][+|-]XXX指數部分尾數部分7單精確度浮點型(Single)占4個位元組存儲空間,可以精確到7位十進位,取值範圍±1.40×10-45~±3.40×1038貨幣型(Currency)占8個位元組的存儲空間,用於表達定點數,小數左邊有15位,右邊有4位,小數點固定,因此稱為定點數據類型.取值分圍:-922337203685477.5808~922337203685477.5807主要用於要求精度特別重要的場合,如貨幣計算和定點計算.雙精度浮點型(Double)占8個位元組的存儲空間,可以精確到15位或16位十進位數,取值範圍±4.94×10-324~±1.79×103088是一種無符號整型數,占1個位元組用於存儲二進位數據,取值範圍:0~255

3.位元組型(Byte)9字串是一個用雙引號括起來的字元序列,由一切可列印的西文字元和漢字組成2.1.2字串型數據(String)例:“Hello”“123456”“程式設計”“”(空字元串)10注意:

(1)VB字串有兩種:可變長度字串和固定長度字串。前者指程式執行過程中字串長度不固定,最多可包含2^31個字元;後者指在程式執行過程中字串長度保持不變的字串,最大長度為2^16。(2)雙引號在程式代碼中起字串的定界作用。(3)在字串中,字母的大小寫是有區別的。例如“AB123”與“ab123”代表兩個不同的字串。(4)若字串本身包含雙引號,可用連續的兩個雙引號表示.例:“Youmuststudyhard”,hesaid.寫成:“““Youmuststudyhard””,hesaid.”11注意:當將數值型數據轉換為布爾型時,0轉換為False,非0值轉換為True。當將布爾型數據轉換為其他數據類型時,False轉換為0,True轉換為-1。2.1.3布爾型數據(Boolean)占2個位元組的存儲空間,用於邏輯判斷,只有True和False兩個值。12按8個位元組的浮點形式存儲,可以表示的日期範圍從100年1月1日~9999年12月31日,而時間可以從0:00:00~23:59:592.1.4日期型數據(Date)日期型數據有兩種表示方法:用數字符號(#)表示,例#January1,2001#;另一種以數字序列表示,小數點左邊的值表示日期,而小數點右邊的值則表示時間。13是一種沒有用Dim等語句顯示說明其類型的數據類型可以包含數值等任何類型的數據還可以包含Empty、Error、Null等特殊值Empty用來標記未初始化的變體型變數:數值計算時為0,字元運算時為空串Null一般用於資料庫應用程式:如運算式中包含Null值則其值總為空Error用來表示在過程中出錯時的特殊值2.1.5變體型數據(Variant)14例如1:

dimsvSv=“17”Sv=sv-15Sv=“u”&sv

例如2:Subform_click()Dimx,yX=“6”Y=“7”Printx+y,x&yX=6Printx+y,x&y15存儲32位(4位元組)的地址資訊,可以用來表示圖形、OLE對象或其他對象,利用VB中的Set語句為其指定值DimxasobjectSetobject=opendatabase(“c:\vb6\bibio.mdb”)2.1.6對象型數據(Object)16存儲96位(12位元組)的無符號整型形式,並除以一個10的冪數,稱為變比因數。這個變比因數決定了小數點右面的數字位數,範圍0~28。目前Decimal只能在變體類型中使用,即不能把一個變數聲明為此類型。2.1.7Decimal數據類型172.1.8枚舉類型定義:

[Public|Private]Enum<枚舉類型名><成員名1>[=常數運算式]

<成員名2>[=常數運算式]...

EndEnum省略,默認為Public說明:1)Public整個工程Private聲明模組

2)常數運算式是可選的,可以是任何長整型數,也可以是別的枚舉成員。省略則默認第一個為0,以下依次增1182.1.9自定義數據類型定義:

[Public|Private]Type<自定義類型名><元素名1>As<類型名1>

[<元素名2>As<類型名2>]...

EndType標準模組中如省略,默認為Public在類模組/窗體模組中,只能定義為Private且不能省略說明:1)必須為定長字串

2)定義自定義數據類型變數用:

Dim<變數名>As<自定義類型名>3)元素名引用:

<變數名>.<元素名>192.1.9自定義數據類型例如:PrivatetypesturecordNameasstringBirthdayasdateOthersasvariantEndtype‘自定義類型變數的定義Dimmrassturecord=“張名”Mr.birthday=#1986-04-01#20常量是指在程式運行期間其值不發生變化的量。在VisualBasic中,有兩種形式的常量直接常量符號常量。符號常量又分為:用戶自定義符號常量系統定義符號常量2.2常量與變數2.2.1常量21根據數據類型常量分為字串常量數值常量布爾常量日期常量1直接常量直接常量就是在程式代碼中,以直接明顯的形式給出的數。例如:”歡迎使用visualBasic”字串常量,長度為2012345數值型常量

True布爾型常量

#11/10/2001#日期型常量22在程式設計中,常用常量命名的方法來取代程式代碼中出現的數,這種常量稱為符號常量。符號常量在使用前需要使用Const語句進行聲明。

聲明的格式如下:

[Public|Private]Const<常量名>[As<類型>]=<運算式>2用戶自定義符號常量說明:<常量名>:按變數名的命名規則命名。

As<類型>:可選項,用以說明符號常量的數據類型。<類型>可以是Byte、Boolean、Integer、Long、Currency、Single、Double、Date、String或Variant。一個As<類型>子句只能說明一個符號常量。若省略該項,則系統根據運算式的求值結果,確定最合適的數據類型。

<運算式>:由數值常量或字串常量以及運算符組成。在<運算式>中不能使用函數調用。23用先前定義過的符號常量定義新符號常量自定義符號常量舉例ConstPi=3.14159聲明符號常量Pi代表3.14159,單精確度類型ConstMaxAsInteger=9聲明符號常量Max代表9,整型ConstBirthDate=#1/1/01#聲明符號常量BirthDate代表2001年1月1日,日期型ConstPi=3.14,Max=9,MyStr=“Hello”用逗號分隔多個符號常量聲明ConstPi2=Pi*2241)如果要使創建的符號常量只作用於某個過程中,則應在該過程內部聲明該符號常量。注意:2)如果要使創建的符號常量對模組中所有過程都有效,但對模組之外任何代碼都無效,則應在模組的聲明段中聲明符號常量。3)如果要使創建的符號常量在整個應用程式中有效,則應在標準模組的聲明段中進行聲明,並在Const前面放置Public關鍵字。在窗體模組或類模組中不能聲明Public符號常量。25

例如:Constpi=3.14159PrivateSubCommandl_Click()Constr=100s=pi*r^2Print“圓面積=”;sEndSubPrivateSubCommand2_C1ick()angle=Sin(20*pi/180)PrintangleEndSub符號常量pi在整個窗體模組中有效,符號常量r只在本事件過程中有效264)由於符號常量可以用其他符號常量定義,因此在兩個以上符號常量之間不要出現迴圈或迴圈引用。例如:在標準模組Modulel中定義:

PublicConstconA=conB*2在整個應用程式中有效在標準模組Module2中定義:

PublicConstconB=conA/2在整個應用程式中有效當程式中有兩個以上的公共符號常量,而且每個公共符號常量都用另一個去定義時就會出現迴圈。出現迴圈引用,在運行此應用程式時,VB就會產生錯誤資訊。為了避免出現迴圈引用,可以將公共符號常量限制在單一模組內,或最多只存在於少數幾個模組內。275)符號常量是有意義的名字,它用於取代永遠不變的數值或字串。儘管符號常量有點像變數,但不能像對變數那樣修改符號常量,也不能對符號常量賦以新值。283系統定義符號常量符號常量的定義可以從“對象流覽器”中獲得。使用對象流覽器可以顯示包括當前工程及對象庫在內的過程、模組、類、屬性和方法等的描述資訊。選擇對象庫在“類”列表中選擇所需要的符號常量組用滑鼠單擊某一個符號常量描述框中顯示有關該符號常量的定義及描述資訊。例:vbBlue所表示的顏色值為&HFF0000從菜單欄視圖中選擇“對象流覽器”或(F2)29每個變數都有名字和數據類型,通過名字來引用一個變數,而通過數據類型來確定該變數的存儲方式。

變數是指一個有名稱的記憶體單元。2.2.2變數分為屬性變數和用戶自定義變數30VB變數的命名規則:.第一個字元必須是字母。.長度不超過255個字元。.不可以包含小數點或者內嵌的類型聲明字元。.不能使用關鍵字。.不能與過程名或符號常量同名。1.變數的命名規則例如:合法變數名:strMyString、intCount、MyForm、姓名、性別等非法變數名:1x、a+b、δ、π等

關鍵字:

又稱保留字,在語法上有固定含義,是語言的自稱組成部分,用於表示系統提供的標準過程、函數、運算符、常量等;VB中約定關鍵字的首寫字母為大寫。312.變數的聲明變數使用之前,一般必須先聲明變數名和類型,以便系統為其分配存儲單元。固定格式聲明隱式聲明強制顯式聲明VB變數及其類型聲明方式32格式:說明:<類型>:可以是VB提供的各種數據類型或用戶自定義類型。

[As<類型>]:方括號部分表示該部分可以缺省。缺省時,變數默認為變體類型.Dim:在窗體模組、標準模組或過程中聲明變數。

Private:變數僅在該模組或過程中有效。

Static:在過程中定義靜態變數,即使該過程結束,也仍然保留變數的值。

Public:標準模組中聲明全局變數,使變數在整個應用程式中有效。

Global:在標準模組中聲明全局變數.Dim|Private|Static|Public|Global<變數名>[As<類型>]格式聲明33Defbool|DefByte|DefInt|Deflng|Defcur|Defsng|DefDbl|DefDate|DefStr|DefObj|DefVar字母範圍[,字母範圍]...變數名後加一特定符號來表明數據類型:%整型&長整型!單精確度型#雙精度型@貨幣型$字串型34若變數未經定義而直接使用,VB會自動建立一個變數。可存放任何類型的數據,如數值、字串、日期和時間。隱式聲明可見,隨著所賦值的不同,變數的類型在不斷變化.

這種方法很方便,但是常常會因為轉換過程難以預料,而導致一個難以查找的錯誤。因此,應該在應用程式中聲明所使用的變數的類型。例如:SomeValue=“100”SomeValue=SomeValue–10;SomeValue=“ABC”+SomeValue35

可在窗體模組或標準模組的聲明段中加入語句:

OptionExplicit強制顯式聲明VB可採用強制聲明功能,使所有變數都必須先聲明後使用.☆這樣,若運行時遇到一個未經明確聲明的變數名,VB就會發出錯誤警告。聲明方式:在“工具”菜單中打開“選項”對話框,單擊“編輯器”選擇“要求變數聲明”選項,即可自動插入OptionExplicit語句.注:OptionExplicit語句的作用範圍僅限於語句所在模組.

對於需要強制式變數聲明的窗體模組、標準模組及類模組,必須將OptionExplicit語句放在這些模組的聲明段中。36VB中有以下6類運算符和運算式:

·算術運算符與算術運算式.字串運算符與字串運算式.關係運算符與關係運算式.邏輯運算符與邏輯運算式.日期運算符與日期運算式.對象運算符與對象運算式用運算符將運算對象(或運算元)連接起來即構成運算式。運算式表示了某種求值規則。運算元可以是常量、變數、函數、對象等,而運算符也有各種類型。2.3運算符與運算式372.3.1算術運算符與算術運算式

算術運算符用於對數值型數據執行各種算術運算。VB提供了7個算術運算符,優先順序次序如表所列:優先順序運算符運算1^乘方2-取負3*乘法/浮點除法4\整數除法5Mod取模6+加法-減法其中,取負(—)運算符是單目運算符,其餘運算符均為雙目運算符(需要兩個運算元)。38乘方運算用來計算乘方和方根。例:

10^210的平方,結果為10010^(-2)10的平方的倒數,即1/100,結果為0.0125^0.525的平方根,結果為58^(1/3)8的立方根,結果為22^2^3運算順序從左到右,結果為以64(-8)^(-1/3)錯誤,當底數為負數時,指數必須是整數1.乘方運算2.整數除法例:

10\4結果為225.68\6.99先四舍五人再整除,結果為3執行整除運算,結果為整型值。參加運算的運算元一般為整型數。當運算元帶有小數點時,先被四捨五入為整型數,後整除。39例:10Mod4結果為225.68Mod6.99先四舍五人再求餘數,結果為511Mod-4結果為3-11Mod5結果為-1-11Mod–3結果為-23.取模運算取模運算符Mod用於求餘數,為第一運算元整除第二運算元所得的餘數.運算元帶小數,先四捨五入取整型數,後求餘;運算結果符號取決於第一個運算元。40注意:“&”和“+”這兩個運算符的區別:“+”運算符兩邊的運算元應均為字串。如果都為數值型,則進行算術運算;如果有一個為字串,另一個為數值型,則出錯。“&’’運算符兩邊的運算元不論是數值型的還是字串型的,都進行字串的連接運算,系統先將數值型運算元轉換為字串,然後再進行連接運算。2.3.2字串運算符與字串運算式字串運算符有兩個:“&”、“+”,是將兩個字串連接起來,合併成一個新的字串。例如:“Hello”&“World”結果為“HelloWorld”“Check”&123結果為“Checkl23”“Check”+123錯誤41VB提供的關係運算符:=等於2=3False<>不等於2<>3True<2<3True>2>3False>=2>=3False<=2<=3TrueLike

字串匹配“aBBa”Like“a*a”TrueIs

對象引用比較2.3.3關係運算符與關係運算式關係運算符又稱為比較運算符,用於對兩個運算式的值進行比較,比較的結果為布爾值True(真)或False(假)。42有關說明:若兩個運算元是數值型,按其大小比較。若兩個運算元是字串,則按字元的ASCII碼值從左到右逐一比較。對單精確度或雙精度進行比較時,應避免直接判斷兩個浮點數是否相等,而改成對其誤差的判斷。例如:Abs(A-B)<1E-5

關係運算符的優先順序相同。“Like”運算符與通配符“?”、“*”、“#”等結合使用,常用於資料庫模糊查詢。“Is”運算符用於兩個對象變數的引用比較。**isNull43例:數學上判斷x是否在區間[a,b]內如寫成:a<=x<=b則不能完成指定功能假設a=1,b=3,x=4VB在計算:1<=x<=3

時由左向右計算先計算1<=4

成立,值為-1接著計算-1<=3

成立,最終結果為True,而我們想要的結果為False

故引入邏輯運算式442.3.4邏輯運算符與邏輯運算式邏輯運算也稱布爾運算或邏輯乘.運算符兩邊的運算元要求為邏輯值.用邏輯運算符連接兩個或多個邏輯量組成的運算式稱為邏輯運算式或布爾運算式.邏輯運算式的結果仍為邏輯值True或False.當兩個運算元均為假時,結果才為假當兩個運算元均為真時,結果才為真當運算元為假時,結果為真說明False(3>8)And(5<6)與And2TrueTrue結果(3>8)Or(5<6)Not(3>8)例子或非運算OrNot運算符Not運算符為單目運算符,其他為雙目運算符.31優先順序45XorEqv6Imp異或同或蘊含當兩個運算元不等價時,結果為真當兩個運算元值等價時,結果為真如果A則B(3>8)Xor(5<6)(3>8)Eqr(5<6)(3>8)Imp(5<6)TrueFalseTrue45真值表TrueFalseAXorBFalseBFalseAFalseTrueTrueFalseTrueTrueTrueFalseTrueFalseAEqvBFalseBFalseATrueFalseeTrueFalseFalseTrueTrueTrueTrueFalseAImpBFalseBFalseATrueTrueTrueFalseTrueTrueTrueFalse462.3.5運算式的運算順序運算式的運算的先後順序為:函數運算算術運算關係運算邏輯運算例:a=3,b=5,c=-1,d=7a+b>c+dAnda>=5OrNotc>0Ord<0⑩True①8②6④False③True⑤False⑥False⑦True⑧False⑨True47VB提供系統內部函數,允許用戶自定義函數過程內部函數分5類:

數學函數字串函數隨機函數、格式輸出函數轉換函數日期和時間函數這些函數都帶有一個或幾個引數,在程式設計中稱為參數。函數運算後返回一個值。函數一般調用格式:<函數名>([<參數表>])函數的參數可以是常量、變數或運算式,若有多個參數時,參數之間以逗號分隔2.4常用內部函數482.4.1數學函數數學函數用於各種數學運算,主要包括

三角函數平方根函數絕對值函數對數函數指數函數絕對值函數

Abs(x)返回x的絕對值例:Abs(3.4)結果為3.4Abs(-3.4)結果為3.4平方根函數

Sqr(x)返回x的平方根,x>=0例:Sqr(9)結果為3三角函數

Sin(x)正玄函數

Cos(x)餘玄函數

Tan(x)正切函數

Atn(x)反正切函數參數單位為弧度49指數和對數函數Exp(x)返回以e為底的指數函數,即數學中的exLog(x)返回以e為底的自然對數,即數學中的lnx。VB沒有提供常用對數函數,要想計算常用對數可以換算:例如:Exp(1)、Exp(2*X)、Log(10)。取整函數

Int(x)返回不大於x的最大值

Fix(x)返回x的整數部分例:Int(3.6)=3Int(-2.3)=-3Fix(6.5)=6Fix(-5.6)=-5四捨五入函數

CInt(x)CLng(x)

例:CInt(3.6)=4

50隨機函數Rnd[(x)]產生0~1之間的單精確度亂數。說明:若x<0,則每次都使用x作為亂數種子得到相同的結果;

若x>0,則以上一個亂數作為種子,產生序列中的下一個亂數;

若x=0,則產生與最近生成的亂數相同的數;

若省略參數x,則以上一個亂數作為種子,產生序列中的下一個亂數產生[N1,N2]問亂數,可使用公式:

Int(N2-N1+1)*Rnd+N2隨機種子生成器:Randomizetime512.4.2字串函數VisualBasic提供了大量的字串函數,具有很強的字串處理能力。1.刪除空白字元函數

LTrim(s)去掉字串s左邊的空白字元(即前導空格)。

RTrim(s)去掉字串s右邊的空白字元(即後置空格)。

Trim(s)去掉字串s左右兩邊的空白字元。例如:

LTrim(”UUUABC”)結果為“ABC”RTrim(”ABCUUU”)結果為“ABC”Trim(”UUUABCUUU”)結果為“ABC”522.取子串函數

Left(s,n)取字串s左邊的n個字元

Right(s,n)取字串s右邊的n個字元

Mid(s,p,n)從字字符串s的第p個字元開始取n個字元例:

Left(“ABCDE”,2)結果為“AB”Right(“ABCDE”,2)結果為“DE”Mid(“ABCDE”,2,3)結果為“BCD”Mid(“ABCDE”,2,6)結果為“BCDE”3.字串長度函數

Len(s)返回字串s的長度例:

Len(“ABCDE”)結果為5535.生成空格函數

Space(n)返回n個空格例:Space(3)的結果為“UUU”4.生成字串函數

String(n,s)取字串s的第一個字元構成長度為n的新字串。例:

String(3,”ABC”)結果“AAA”

String(3,65)結果“AAA”(字元”A”的ASCII碼為65)547.字母大小寫轉換函數

UCase(s)把小寫字母轉換為大寫字母。

LCase(s)把大寫字母轉換為小寫字母。例:

UCase(”Abc”)結果為"ABC”LCase(”ABc”)結果為"abc”6.搜索予字串函數

InStr([S,]s1,s2[,C])在字串s1中第S個位置開始查找字串s2出現的起始位置例:InStr(”ABCDE”,”BC”)結果為21nStr(”ABCDECDE”,”DE”,)結果為455轉換函數用於數據類型或形式的轉換,包括整型、實型、字串型之間以及與ASCII碼字元之間的轉換。下麵介紹常用的轉換函數。1.將字元轉換成ASCII碼

Asc(s)返回字串s中第一個字元的ASCII碼。例:

Asc(“A”)結果為65Asc(“ABC”)結果為652.4.4轉換函數2.將ASCII碼轉換成字元

Chr(x)把x的值轉換為對應的ASCII字元例:Chr(65)的結果為”A”。563.將數值轉換成字串

Str(x)把x的值轉換為一個字串。如果x為正,則返回的字串前有一前導空格。例:Str(123)的結果為“

123”。‘4.將字串轉換成數值

Val(s)把數字字串s轉換為數值。例:

Val(“123”)結果為123Val(“123AB”)結果為123Val(“.123AB”)結果為.123Val(”a123AB")結果為0575.轉換成邏輯型數據

Cbool(x)非0為True0為False。例:Cbool(123)的結果為True。‘

6.轉換成日期型數據

Cdate(x)把數字、字串轉換為日期數據。例:

Cdate(“February20,1999”)結果為99-2-20Cdate(“4:30:40PM”)結果為16:30:4058日期和時間函數可以顯示系統的日期和時間,提供某個事件何時發生及持續時間長短等資訊。常用的日期時間函數有:Now返回系統日期和時間Date返回系統日期Time返回系統時間Day(d)返回參數d中指定月份的第幾天WeekDay(d)返回參數d中指定的星期幾Month(d)返回參數d中指定的月份Year(d)返回年份Hour(d)返回小時(0~23)Minute(d)返回分鐘(0~59)Second(d)返回秒(0~59)Timer返回從午夜開始到現在經過的秒數2.4.3日期和時間函數59格式輸出函數可以使數值、日期或字串按指定的格式輸出。其格式為

Format(<運算式>[,<格式字串>])2.4.5格式輸出函數<運算式>:要格式化的數值、日期或字符串運算式。<格式字串>:指定運算式的值的輸出格式。格式字元有三類:數值格式、日期格式和字串格式。格式字元要加引號。60612.4.6其他函數1.條件函數

Iif(<x1>,<x2>,<x3>)如x1值為真,則返回x2的值,否則返回x3例:

Iif(x>y,x,y)返回x,y中較大值

Iif(x>=60,“Pass”,”Failure”)2.選擇函數

Choose(n,<x1>[,<x2>]...)例:Choose(3,”星期一”,”星期二”

”星期三”

”星期四”

”星期五”))的結果為”星期三”。62課後分析:本節需掌握知識點較多,不需要一下子都記住,以後用到時逐漸記憶。

63結束,謝謝!64教學目的要求:掌握順序結構程式設計方法掌握選擇結構程式設計方法掌握迴圈結構程式設計方法教學重點順序、選擇、迴圈結構程式設計第3章流程控制65教學方法:大螢幕投影演示時間安排:

6學時教學難點:迴圈結構程式設計

66VB採用事件驅動方法,但仍需要結構化程式設計方法,用控制結構控制程式執行的流程。程式流程有三種最基本的結構:順序、選擇、迴圈。

一個電腦程式通常可分為三部分,即輸入、處理和輸出。

VB的輸入輸出有著十分豐富的內容和形式,它提供了多種手段,並可通過各種控件實現輸入輸出操作,使輸入輸出更加靈活、多樣、方便、直觀。3.1.1順序結構67功能:先計算“=”號(稱為賦值號)右邊的運算式的值,然後將此值賦給賦值號左邊的變數或對象屬性.說明:<變數名>應符合VB的變數命名約定。<運算式>可以是常量、變數、運算式及帶有屬性的對象。格式:[Let]<變數名|屬性名>=<運算式>3.1.1幾個基本語句1.賦值語句681)“=”賦值號與數學中的等號意義不同。例如:語句X=X+1表示將變數X的值加1後的結果值再賦給變數X,而不是表示兩邊的值相等.2)賦值號左邊必須是變數或對象屬性.例:X=1MyStr=“GoodMorning”Command1.Caption=“確定”X+1=X(錯誤)注意事項693)變數名或對象屬性名的類型應與運算式的類型相容.即變數名或對象屬性名能夠正確存取賦值號右邊的運算式的值.例如DimAAsInteger,BAsSingle,CAsDouble,SAsStringA=100S="123.45“A=S‘A=123S=A‘S=“123”B=12345.67A=B‘A=123457四捨五入後取整C=123456.789B=C‘A=123456.8單精確度有效數字為7位S="abc”A=S錯誤,類型不匹配70

4)變數未賦值時,數值型變數的值為0,字串變數的值為空串“”。

[例4-1]交換兩個變數的值。設變數A中存放5,變數B中存放8,交換兩個變數的值,使變數A中存放8,變數B中存放5。分析:交換變數需要借助第三個變數C,才能實現交換。代碼如下:

A=5B=8C=AA=BB=C712.注釋語句格式:Rem|’[注釋內容]1)如使用Rem則在Rem與注釋內容之間要加空格;以‘開頭,可不加2)允許使用GoTo或GoSub語句轉到一個有行號或標號的注釋語句,程式從該注釋行下麵的第一條可執行語句繼續執行3)在其他語句行後使用Rem,用冒號注意事項:723.停止程式執行語句格式:End4.響鈴語句格式:Beep

功能:結束程式的執行。

一個程式沒有End語句,對運行沒有什麼影響。但如果沒有End語句,或者雖然有,卻沒執行,程式都不能正常結束,此時要結束程式必須執行“運行”菜單中的“結束”命令或單擊工具欄中的“結束”按鈕。為了保持程式的完整性,應當在程式中含有End語句,並且通過End語句來結束程式的運行。73說明:

<提示資訊>:字串運算式。在對話框內顯示提示資訊,提示用戶輸入的數據的範圍、作用等。如果要顯示多行資訊,則可在各行行末用回車符Chr(13)、換行符Chr(10)、回車換行符的組合Chr(13)&Chr(10)或系統常量vbCrLf來換行。

<對話框標題>:字串運算式,可選項。運行時該參數顯示在對話框的標題欄中。如果省略,則在標題欄中顯示當前的應用程式名。

<默認值>:字串運算式,可選項。顯示在對話框上的文本框中,在沒有其他輸入時作為缺省值。如果省略,.則文本框為空。InputBox函數產生一個對話框,作為輸入數據的介面,等待用戶輸入正文或按下按鈕,並返回所輸入的內容。格式:InputBox(<提示資訊>[,<對話框標題>][,<默認值>])3.1.2輸入數據1輸入框函數(InputBox)74例如,假設某程式中有如下代碼:·

MyStr=InputBox(“提示”&vbCrLf&“資訊”,“對話框標題”,“aaaaaa”)執行該行代碼時,彈出的輸入對話框可以在文本框中將默認值修改成其他內容,單擊“確定”按鈕,文本框中的文本返回到變數MyStr中;單擊“取消”按鈕,返回一個0長度的字串。75在windOWS中,如果操作有誤,通常會在螢幕上顯示一個對話框,提示用戶進行選擇,然後系統根據選擇確定其後的操作。

VB提供的MsgBox函數可以實現此功能,它可以向用戶傳送資訊,並可以接收用戶在對話框上的選擇,以此作為程式繼續執行的依據。2消息框函數(MsgBox)格式:

MsgBox(<提示資訊>[,<按鈕類型>][,<對話框標題>])功能:在對話框中顯示消息,等待用戶單擊按鈕,並返回一個整數告訴用戶單擊了哪個按鈕。76說明:<提示資訊>:字串運算式,用於指定顯示在對話框中的資訊,要在提示資訊中對文本資訊進行換行,可以使用回車符Chr(13)、換行符Chr(10)或是回車與換行符的組合Chr(13)&Chr(10)。

<按鈕類型>:數值型數據,是可選項,用來指定對話框中出現的按鈕和圖示的種類及數量,該參數的值由三類數值相加產生,這三類數值分別表示按鈕的類型、顯示圖示的種類及默認按鈕的位置

<對話框標題>:字串運算式,是可選項,它顯示在對話框的標題欄中,如果省略,則在標題欄中顯示應用程式名。77分類按鈕值系統定義符號常量含義按鈕類型0vbOKOnly只顯示“確定”按鈕1vbOKCancel顯示“確定”、“取消”按鈕2vbAbortRetryIgnore顯示“終止”、“重試”、“忽略”按鈕3vbYesNoCancel顯示“是”、“否”、“取消”按鈕4vbYesNo顯示“是”、“否”按鈕5vbRetryCancel顯示“重試”、“取消”按鈕圖示類型16vbCritical顯示停止圖示x32vbQuestion顯示詢問圖示?48vbExclamation顯示警告圖示!64vbInformation顯示資訊圖示i默認按鈕0vbDefaultButton1第一個按鈕是默認按鈕256vbDefaultButton2第二個按鈕是默認按鈕512vbDefaultButton3第三個按鈕是默認按鈕“按鈕類型”的設置值及含義78MsgBox函數的返回值系統符號常量返回值按鍵vbOK1確定vbCancel2取消vbAbort3終止vbRetry4重試vbIgnore5忽略vbYes6是vbNo7否若不需要返回值,則可以使用MsgBox語句,其格式為:MsgBox<提示資訊>[,<按鈕類型>][,<對話框標題>]79例:PrivateSubCommand1_Click()a=MsgBox(“提示資訊”)EndSubPrivateSubCommand1_Click()a=MsgBox(“提示資訊”&Chr(13)&“換行顯示”)EndSub只顯示“提示資訊”提示資訊換行80PrivateSubCommand1_Click()a=MsgBox(“提示資訊”,,“標題”)EndSub省略第二個參數“按鈕類型”,但逗號不能省略PrivateSubCommand1_Click()a=MsgBox(“提示資訊”,1,“標題”)EndSub顯示“確定”、“取消”按鈕81PrivateSubCommand1_Click()a=MsgBox(“提示資訊”,1+16,“標題”)EndSubPrivateSubCommand1_Click()a=MsgBox(“提示資訊”,2+32+0,“標題”)EndSub顯示停止圖示設第一按鈕是默認按鈕821)Text屬性:字串類型。返回或設置文本框中顯示的內容。例如:Text1.Text=“歡迎使用VisualBasic”2)MultiLine屬性:布爾型。當MultiLine屬性為True時,文本框可以輸入或顯示多行文本,且會在輸入的內容超出文本框時自動換行。默認值為False。在設計階段,在屬性窗口設置Text屬性值時,通過按下Ctrl+Enter組合鍵實現文本的換行。在運行階段,如果窗體上沒有缺省按鈕,則在多行文本框(TextBox)控件中按下回車鍵可以把游標移動到下一行;如果有缺省按鈕存在,則必須按下Ctrl+Enter組合鍵才能移動到下一行。

3用文本框(TextBox)輸入數據

文本框控件在工具箱中的名稱為TextBox,在VB中,可以使用文本框控件作為輸入控件,在運行時接收用戶輸入的數據。1.屬性833)PasswordChar屬性:字串類型。當MuitiLine屬性值為False時,該屬性可以用於口令輸入。在缺省狀態下,該屬性被設置為空串,用戶從鍵盤輸入時,每個字元都可以在文本框中顯示出來。如果把PasswordChar屬性設置為一個字元,如星號(*),則在文本框中鍵人字元時,只顯示星號,不顯示鍵人的字元。Text屬性接收的仍是用戶輸入的文本。4)ScrollBars屬性:數值型。該屬性用於確定文本框是否帶滾動條。有以下4種選擇:

0-None沒有滾動條

1-Horizontal只有水準滾動條

2-Vertical只有垂直滾動條

3—Both同時具有水準和垂直滾動條只有當MultiLine屬性值為True時,文本框才顯示滾動條。845)SelLength屬性:數值型。在程式運行期間返回或設置選擇的字元數。例如:Text1.Sellength=Len(Text1.Text)

表示選中文本框Text1中所有字元。

6)SelStart屬性:數值型。在程式運行期間返回或設置當前選擇文本的起始位置。例如:Textl.SelStart=0

表示選擇文本的起始位置從第一個字元開始。

7)Locked屬性:布爾型。指定運行時文本框內容是否可以編輯。默認值為False,表示可以編輯。851)Change事件:當用戶向文本框輸人新的內容,或在程式代碼中對文本框的Text屬性進行賦值從而改變了文本框的Text屬性時,將觸發Change事件。

2.事件和方法

文本框除了支持滑鼠的Click、DblClick事件外,還支持Change、GotFocus、LostFocus、KeyPress等事件和SetFocus方法。例:建立三個文本框和兩個命令按鈕。運行時,用戶在文本框Text1中輸入內容的同時,文本框Text2和Text3顯示相同的內容,但顯示的字體不同。單擊“清除”,按鈕清空三個文本框中的內容,單擊“退出”按鈕結束程式的運行86設計介面程式代碼運行介面872)GotFOCUS事件:

當運行時用Tab鍵或用滑鼠選擇對象,或用SetFOCUS方法使游標落在對象上時,觸發該事件,稱之為“獲得焦點”。該事件適用於窗體和大部分可接受鍵盤輸入的控件。Text1獲得焦點Text2獲得焦點883)LostFOCUS事件:

當按下Tab鍵使游標離開當前文本框,或者用滑鼠選擇窗體的其他對象時觸發該事件,稱之為“失去焦點”。4)KeyPtess事件:當在鍵盤上按下某個鍵時觸發該事件。KeyPress事件返回一個參數KeyAscii,該參數值為整數,表示所按下鍵的ASCⅡ碼。5)SetFocus方法:

SetFocus方法是文本框常用的方法,該方法是把游標移到指定的文本框中,使該文本框獲得焦點。當在窗體上建立了多個文本框後,可以使用該方法把游標置於所需要的文本框上。使用格式如下:

[<對象名>.]SetFocus

例如,將焦點定位在文本框Textl中,使用語句:Textl.SetFocus89在程式設計中對輸入的數據進行加工後,往往需要將數據輸出。在VB中,可以使用消息框(MsgBox)函數或語句文本框(Text)控件標籤(Label)控件Print方法實現輸出。3.1.3輸出數據90在windOWS中,如果操作有誤,通常會在螢幕上顯示一個對話框,提示用戶進行選擇,然後系統根據選擇確定其後的操作。

VB提供的MsgBox函數可以實現此功能,它可以向用戶傳送資訊,並可以接收用戶在對話框上的選擇,以此作為程式繼續執行的依據。1.用消息框(MsgBox)輸出數據914.3.3用文本框(TextBox)輸出數據用文本框可以輸人數據,也可以使用文本框輸出數據。例:在文本框Textl中輸入任意一個英文字母,在文本框Text2中顯示該英文字母及ASCⅡ碼值,要求在文本框Text2中顯示所有輸入的英文字母及其ASCⅡ碼值。92設計介面Label1Label2TextBox1TextBox2Command1運行介面931.屬性

Caption屬性:字元型。標籤的標題。

Alignment屬性:數值型。確定標籤中標題的對齊方式,有以下設置值:

0-LeftJustify缺省值,標題從標籤的左邊開始顯示。

1-RightJustif標題靠右顯示。

2-Center標題居中顯示。

AutoSize屬性:布爾型。設置為True時,可根據標題自動調整標籤的大小;設置為False(缺省值)時,標籤保持設計時定義的大小,太長的標題內容將不能顯示出來。

BackStyle屬性:數值型。缺省值為1,標籤不透明;設置為0時,標籤透明。

WordWrap屬性:布爾型。設置為True時,標籤將在垂直方向變化大小以與標題相適應,此時,Autosize屬性應設置為True;設置為False時(缺省值),標籤不能在垂直方向上擴展。3.用標籤(Label)輸出數據VB提供的標籤控件只能顯示文本,而不能對文本進行編輯。標籤通常用於標注本身具有Caption屬性的控件。例如,可以使用標籤為文本框附加描述資訊。標籤也常用於輸出。94設計介面代碼運行介面例95標籤控件可以支持Click、DblClick等事件。例:設窗體上有一個標籤控件Labell,其AutoSize屬性值為True,雙擊該標籤控件,則標籤的標題字體增加10磅,可以通過如下代碼實現:

PrivateSubLabel1_DblClick()Labell.FontSize=Labell.FontSize+10EndSub2.事件96標籤控件支持Move方法,用於實現控件的移動。Move方法的格式:

[<對象名>.]Move<left>[,[<top>][,[<width>][,<height>]]]<left>:指示對象左邊的水準座標(x-軸)。<top>:指示對象頂邊的垂直座標(y-軸)。<width>:指示對象新的寬度。、<height>:指示對象新的高度。3.方法例:設窗體上有一個標籤控件Labell,單擊該標籤控件,使該標籤控件向右移動50緹,可以通過如下代碼實現:

PrivateSubLabeli_C1ick()Labell.MoveLabell.Left+50EndSub97Print方法可以在窗體、圖片框、印表機和立即窗口等對象上輸出數據。

[<對象名>.]Print[<運算式表>][{;|,}]<對象名>可以是窗體、圖片框、印表機或立即窗口。如果省略“對象名”,則在當前窗體上輸出。<運算式表>中的運算式可以是算術運算式、字串運算式、關係運算式或者布爾運算式,多個運算式之間的分隔符號為逗號(,)或分號(;)。4.用Print方法輸出數據1.Print方法98例:Form1.Print“歡迎使用VisualBasic”

在窗體Forml上顯示字串“歡迎使用VisualBasic”Picture1.Print“歡迎使用VisualBasic”

在圖片框Picturel上顯示字串“歡迎使用VisualBasic”Debug.Print“歡迎使用VisualBasic”

在立即窗口中顯示”歡迎使用VisualBasic”Printer.Print“歡迎使用VisualBasic”

在印表機上列印字串“歡迎使用VisualBasic”99Print方法具有計算和輸出雙重功能。對於運算式,先計算運算式的值,然後輸出。輸出時,數值型數據前面有一符號位(正號不顯示),後面留一個空格位;字串原樣輸出,前後無空格。

符號位100Print方法有兩種顯示格式:區分格式和緊湊格式。

當各運算式之間用逗號作為分隔符號時,則按區分格式顯示資料項目,以14個字元位置為單位把一個輸出行分成若干區段,每個區段輸出一個運算式的值。當各運算式之間用分號作為分隔符號時,則按緊湊格式輸出數據,後一項緊跟前一項輸出。101一般情況下,每執行一次Print方法都要自動換行,即每一次執行Print時,都會在新的一行上輸出數據。若要在同一行上輸出數據,則可以在末尾加上分號或逗號。若省略<運算式表>,則輸出一個空行或取消前面Print末尾的逗號或分號的作用。1022.與Print方法有關的函數

格式:

Tab[(n)]

功能:在指定的第n個位置上輸出數據.1)Tab函數說明:若n小於當前顯示位置,則自動移到下一個輸出行的第n列上;若n小於1,則列印位置在第1列;若n大於輸出行的寬度,則利用公式nModwidth計算下一個列印位置;若省略此參數,則將插入點移到下一個列印區的起點.1032)Spc函數

格式:

Spc(n)

功能:跳過n個空格.

說明:n是一個數值運算式,表示空格.例如:Print“Hello”;Spc(3);“World”輸出結果:

HelloUUUWorldSpc函數與輸出項之間用分號分隔.Spc函數表示兩個輸出項之間的間隔,Tab函數總是從對象的左端開始計數.1043.1.4舉例[例3-3]使用文本框輸入圓的半徑,計算圓的面積並用標籤輸出。運行介面如下圖所示。PrivateSubCommand1_Click()DimrAsDouble,sAsDouble

Constpi=3.1415926

r=Val(Text1.Text)s=pi*r*r

Label2.Caption=“圓的面積:”&

sEndSub105

有些實際問題中,往往需要根據條件成立與否,決定程式的執行方向,在不同的條件下,進行不同的處理。使用順序結構是無法解決這一問題的,需要用選擇結構。本章將介紹VisualBasic中用於解決此類問題的三種語句結構,即:

單行結構條件語句If…Then…Else…

塊結構條件語句If…Then…EndIf

多分支選擇語句Select

Case…End

Select

以上語句又統稱為條件語句,其功能都是根據條件或運算式的值有選擇地執行一組語句。3.2選擇結構程式設計106格式:If<條件>Then[<語句組1>][Else<語句組2>]功能:如果<條件>成立,則執行<語句組1>,否則執行<語句組2>。3.2.1實現選擇結構的語句

1.單行結構條件語句<條件>可以是關係運算式、邏輯運算式、數值運算式或字串運算式。對於數值運算式,VB將0作為False、非0作為True處理;對於字串運算式,VB只允許包含數字的字串,當字串中的數字值為0時,則認為是False,否則認為是True。

VisualBasic將Null作為False處理。

<語句組1>和<語句組2>可以有多條語句,各語句之間用冒號隔開。107例如:IfN>0ThenA=A+B:B=B+AElseA=A-B:B=B-A

可以沒有Else部分,這時必須有<語句組1>。例如:IfX<>"aaa"ThenPrintX

注意:

1)單行結構條件語句應作為一條語句書寫。如果語句太長需要換行,必須在折行處使用續行符號,即一個空格跟一個下劃線。

2)無論條件是否成立,單行結構條件語句的出口都是本條件語句之後的語句。

IfX>=0ThenX=1+XElseX=5-XY=1-XPrint“Y=“;Y

當X=4時,條件X>0成立,執行Then之後的語句X=1+X,使X的值成為5,然後執行條件語句之後的語句Y=1+X,使Y的值成為-4,所以輸出Y=-4。當X的值為-4時,條件X>=0不成立,執行Else之後的語句X=5-X,使X的值成為9,然後同樣執行條件語句之後的語句Y=1-X,使Y的值成為-8,所以輸出Y=-8。

即無論條件X>=0是否成立,都要執行If語句後面的語句Y=1-X。

3)單行結構條件語句可以嵌套,也就是說,在<語句組1>或<語句組2>中可以包含另外一個單行結構條件語句。1082塊結構條件語句格式:If<條件1>Then[<語句組1>][ElseIf<條件2>Then[<語句組2>]]…[Elself<條件N>Then[<語句組n>]][Else[<其他語句組>]]EndIf功能:執行該塊結構條件語句時,首先判斷<條件1>是否成立,若成立,則執行<語句組1>,若不成立,則繼續判斷ElseIf子句後的<條件2>是否成立,若成立,則執行<語句組2>,否則,繼續判斷以下的各個條件,依此類推。如果<條件1>到<條件N>都不成立,則執行Else子句後面的<其他語句組>。當某個條件成立而執行了相應的語句組後,將不再繼續往下判斷其他條件,而直接退出塊結構,執行EndIf之後的語句。條件1語句組1條件2語句組2條件n語句組n其他語句組…109注意:整個塊結構必須以If語句開頭,EndIf語句結束。除了第一行的If語句和最後一行的EndIf語句是必須的以外,ElseIf子句和Else子句都是可選的。塊結構條件語句的兩種常見的簡化形式:

形式一:

If<條件1>Then<語句組1>Else<語句組2>EndIf

形式二:

If<條件>Then<語句組>Endlf

形式一的功能與單行結構條件語句功能相同,用於處理兩個條件分支的情況;而形式二僅在條件成立時執行一定的操作,當條件不成立時則不做任何處理。110注意:

1)使用塊結構條件語句時,關鍵字Elself不能寫成ElseIf,即中間不能有空格。

2)在書寫時,可以將If語句、ElseIf語句、Else子句和EndIf語句左對齊,而各語句組向右縮進若干空格,以使程式結構更加清楚,便於閱讀和查錯。

3)要注意嚴格按格式要求進行書寫,不可以隨意換行或將兩行合併成一行。

4)塊結構條件語句可以嵌套。

111格式如下:SelectCase<測試運算式>Case<運算式表1>[<語句組1>][Case<運算式表2>[<語句組2>]]…[CaseElse[<語句組n>]]EndSelect3多分支選擇語句功能:根據<測試運算式>的值,按順序匹配Case後的運算式表,如果匹配成功,則執行該Case

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论