《Visual Basic NET程序設計》課件第4章_第1頁
《Visual Basic NET程序設計》課件第4章_第2頁
《Visual Basic NET程序設計》課件第4章_第3頁
《Visual Basic NET程序設計》課件第4章_第4頁
《Visual Basic NET程序設計》課件第4章_第5頁
已閱讀5頁,還剩155頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第4章VB.NET語言基礎

4.1VB.NET程序設計基礎4.2流程控制4.3過程4.4程序調試和異常處理4.5面向對象的程序設計習題實驗四VB.NET語言基礎

4.1VB.NET程序設計基礎

4.1.1代碼書寫規則

1.關鍵字和標識符

關鍵字又稱系統保留字,是具有固定含義和使用方法的字母組合。關鍵字用于表示系統的標準過程、方法、屬性、函數和各種運算符等,如Private、Sub、If、Else、Select等。

標識符是由程序設計人員定義的,用于表示變量名、常量名、控件對象名稱等的字母組合。

VB.NET中標識符的命名規則如下:

(1)標識符必須以字母或下劃線開頭;

(2)標識符中不能出現空格符號;

(3)不能使用關鍵字。

例如,以下為錯誤的標識符:

Public(錯誤原因為使用了系統保留字);

Studentname(錯誤原因為標識符中出現了空格);

505Ccomputer(錯誤原因為標識符以數字開頭)。

2.代碼書寫規則

程序語句是執行具體操作的指令,是程序的基本功能單位。程序語句最長不能超過1023個字符。例如:

End

TextBox.Value=“Hello”

程序代碼的書寫規則如下:

●不區分字母的大小寫;

●一句語句中包含的字符數不能超過1023個字符,一行中包含的字符數不能超過255個字符;●一行可書寫若干句語句,語句之間用“:”分隔;

●一句語句分若干行書寫時,要用空格加續行符“_”連接;

●同一語句的續行符之間不能有空行;

●不能在對象名、屬性名、方法名、變量名和關鍵字的中間斷開。

原則上,不提倡一行寫多條語句,若需續行,則續行符應該加在運算符的前面或后面。

3.注釋

加入注釋語句是為了便于閱讀程序代碼,以方便程序的維護和調試。注釋語句可用REM或“‘”引導。在調試程序時,通常在語句前加上“’”,以使該語句在程序運行時不被執行。注釋語句的各種用法如下:

‘以下語句的作用是定義一個變量

REM以下語句的作用是定義一個變量

Dimstudentnoasint ’定義一個學生學號的變量

Dimstudentnoasint REM定義一個學生學號的變量

TextBox.Value=‘’Hello‘’

利用文本編輯器工具欄給某一個程序段整個加上注釋,其方法是:先選中需要注釋的代碼段,單擊編輯工具欄中的“塊注釋”按鈕,如要取消注釋,則只要再單擊“取消塊注釋”按鈕即可。這種注釋特別有利于程序的調試。4.1.2基本數據類型

VB.NET語言定義了多種數據類型,用以存儲各種不同形式的數據,節省存儲的空間。

VB.NET常用的數據類型如表4-1所示。

VB.NET中的數據類型與VB相比有兩點不同:一是所有的數據類型都是對象;二是許多數據類型(特別是整型)的取值范圍擴大了。4.1.3常量與變量

1.常量

所謂常量,是指在整個應用程序執行過程中其值保持不變的量。常量包括直接常量和符號常量兩種形式。

1)直接常量

直接常量是指在程序中直接給出的數據,包括數值常量、字符型常量、布爾常量、日期常量等。

各類常量的表示方法如下:

(1)數值常量:23、235、65、23.54、0.345、234.65。

(2)字符型常量:“A”、“a”、“t”、“上海”、“VB.NET程序設計”。

(3)布爾常量:True、False。

(4)日期常量:#10/21/2006#、#8/18/2007#。

2)符號常量

在應用程序中,使用的一些固定不變的數據,如固定的數學常量π,就應該考慮改用符號常量。通常在聲明符號常量時,使用Const語句來給常量分配名字、值和類型。

定義符號常量的一般格式如下:

Const<常量名>[As數據類型]=?[表達式]

功能:定義由“常量名”指定的符號常量。

說明:“常量名”是標識符,它的命名規則與標識符的命名規則一樣。“As數據類型”用來說明常量的數據類型。

2.變量

在VB.NET中,變量用來存儲在應用程序執行時會發生變化的值。一個變量在內存中占據一定的存儲單元,一個變量中可以存放一個數據。每個變量應有一個名字。

在使用變量之前,應先聲明變量。在聲明變量的同時還可以給變量賦初值。

變量聲明語句的一般格式如下:

Dim<變量名>As數據類型[=初值]

功能:定義由“變量名”指定的變量,并可以給它賦初值。

說明:語句中的“Dim”可以是Declare、Public、Protected、Friend、Private、Shared和Static。本節只介紹Dim。

數據類型可以是基本數據類型,也可以是用戶自定義的類型。

在VB.NET中,變量的聲明分為顯式聲明(先聲明后使用)與隱式聲明兩種,但一般推薦使用顯式聲明。

初值用來定義變量的初值。如果在聲明變量的時候沒有給變量賦初值,則VB.NET就用數據類型的默認值來給出初始值。

例如:

DimaaAsinteger=100‘?將變量aa聲明為整型變量并將初值設置為100

DimStudentNameAsString=’‘張毅’‘’?將變量aa聲明為字符型變量并將初值設置為“張毅”在VB.NET中,變量的命名應符合標識符命名規定。

變量的命名規則如下:

●變量必須以字母或下劃線開頭;

●變量中不能出現空格和符號;

●變量不能使用關鍵字。

3.OptionExplicit語句

1)?OptionExplicit的工作方式

當OptionExplicit設置為On時(這是缺省情況),必須在使用變量前顯式聲明該變量,否則將產生編譯錯誤。

當OptionExplicit設置為Off時,可以在代碼中直接使用變量,即隱式聲明該變量。這時該變量作為對象類型創建。雖然隱式聲明變量比較方便,但會增加命名沖突和隱藏拼寫錯誤并且會抵消使用內存。

2)設置OptionExplicit

在代碼最前面編寫相應的語句,可以將OptionExplicit設置為On或Off。

OptionExplicitOn‘?將OptionExplicit設置為On

OptionExplicitOff’?將OptionExplicit設置為Off

如果使用隱式聲明變量,則VB.NET會將遇到的每一個沒有聲明的標識符均看成一個變量。

例如,在沒有聲明x和y的前提下,有下列語句:

x=314

y=250

系統將自動創建x和y這兩個變量。4.1.4運算符和表達式

VB.NET中也具有豐富的運算符,通過運算符和操作數組合成表達式,可實現程序編制中所需的大量操作。VB.NET中的運算符可分為算術運算符、關系運算符、邏輯運算符和字符串運算符四類,相應的表達式也可分為算術表達式、關系表達式、邏輯表達式和字符串表達式等。

1.算術運算符

算術運算符可以對數值型數據進行冪(^)、乘法(*)、除(/)、整除(\)、取余(mod)、加法(+)和減法(-)等運算。算術運算符的運算規律如表4-2所示。

在VB.NET中也引入了類似C語言的反目賦值運算。

在VB.NET中新增了一些新的算術運算符“+=”、“-=”、“&=”等,其功能如表4-3所示。

2.關系運算符

關系運算符也稱比較運算符,用來對兩個相同類型的表達式或變量進行等于(=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、不等于(<>)、字符串比較(Like)和對象引用比較(Is),其結果是一個邏輯值,即True或False。關系運算符的運算規律如表4-4所示。

在比較時注意以下規則:

●如果兩個操作數都是數值型,則按其大小比較。

●如果兩個操作數都是字符型,則按字符的ASCII碼值從左到右逐一比較。

●關系運算符的優先級相同。

●?VB.NET中,Like比較運算符用于字符串匹配,可與通配符“?”、“#”、“*”結合使用。

通配符“?”、“#”、“*”的作用如下:

“?”表示任何單個字符;

“#”表示任何單個數字(0~9);

“*”表示零或更多字符。

3.邏輯運算符

邏輯運算也稱為布爾運算,有與(And)、或(Or)、非(Not)、異或(Xor)等操作。邏輯運算符的運算規律如表4-5所示。

4.字符串運算符

字符串運算符有“+”和“&”兩個運算符,用來連接兩個或更多個字符串。“+”要求參加連接的兩個字符串必須均為字符串數據,“&”可以把不同類型的數據轉變成字符串來連接。

例如,“中國”+“上海”=“中國上海”;“中國上海”&2010?=“中國上海2010”。4.1.5常用函數

VB.NET中提供了許多具有一定功能的內置函數供開發人員直接調用。函數通常有一個返回值,按返回值的數據類型可以將VB.NET中的函數分為數學函數、字符處理函數、類型轉換函數和日期時間函數。

VB.NET中的函數與VB6.0中的函數并不一一對應,VB6.0中的有些函數在VB.NET中已經不支持或已經變成了方法。

1.數學函數

數學函數包含在Math類中,使用時應在函數名之前加上“Math”,如Math.sin(3.14),也可以先將Math命名框架引入到程序中,然后直接調用函數。引入命名空間在類模塊、窗體模塊或標準模塊的聲明部分使用Imports語句,如導入Math命名空間可使用如下語句:ImportsSystem.Math。

隨機函數Rnd是一種經常使用的數學函數,其一般格式為Rnd(X)。使用Rnd函數可產生一個0~1(不包括0和1)的單精度隨機數。當X<0時,總產生隨機數;當X=0時,總產生上一次產生的隨機數;當X>0時,產生序列中的一個隨機數。X值可以缺省,缺省時與X>0等價。通常使用該函數之前,先用Randomize初始化,然后使用不同參數的Rnd()函數。Randomize語句使隨機數生成器用系統計時器返回的值作為新的種子值。

另外,在Math類中還定義了兩個重要的常數——Math.PI(圓周率:3.141?592?653?589?793?238?46)

和Math.E(自然對數底:2.718?281?828?459?045?235?4)。

Math類中的常用函數有Abs()、Sin()、Cos()、Round()、Sqr()、Sign()、Exp()、Log()、Max()、Min()等。

2.字符處理函數

字符處理函數可以直接調用,常用的字符處理函數有Ltrim()、Rtrim()、Trim()、Mid()、Left()、Len()、Ucase()、Lcase()、Space()等。

常用函數及功能如表4-6所示。

4.2流程控制

與其他程序設計語言一樣,VB.NET的程序結構也可分為順序結構、分支結構和循環結構三種。

4.2.1順序結構

順序結構是一種最簡單的程序結構,各語句按排列的先后順序執行。

【案例4-1】

編寫一個解一元二次方程AX2+BX+C=0的程序,其中,A、B、C三個參數滿足條件B2-4AC≥0。

A、B、C三個參數使用InputBox語句輸入,方程的兩個解通過MsgBox語句輸出。相關界面見圖4-1。

【技能目標】

(1)掌握順序結構的程序流程。

(2)掌握賦值語句、Input語句和MsgBox語句的使用。

【操作要點與步驟】

(1)新建一個項目“VBnet4-1”;

(2)在窗體上建立一個命令按鈕;

(3)雙擊命令按鈕,進入代碼編寫窗口;

(4)輸入以下代碼:

數學函數包含在Math類中,使用時應在函數名前加上“Math”,或在程序中導入Math命令空間,即Importssystem.math。

【相關知識】

知識點4-2-1

InputBox函數

InputBox函數提供了一種和用戶交互的語句,在對話框中顯示提示信息,等待用戶輸入文本和單擊按鈕,返回包含相關內容的字符串。

InputBox函數用來接收鍵盤的輸入,例如以下的語句將顯示如圖4-2所示的輸入框:

strName=InputBox(“請輸入要查找的姓名:”,“輸入”)

其典型使用格式如下:

InputBox(prompt[,title][,default][,xpos][,ypos])

其中,prompt是輸入框中的提示文字,如“請輸入要查找的姓名:”;title為輸入框的標題,如“輸入”;default為顯示在輸入文本框中的默認內容,省略則顯示空串;xpos、ypos是輸入框在屏幕上顯示的位置坐標。

從圖4-2中可以看出,該函數的作用是打開一個對話框,等待用戶輸入信息,信息輸入完成后單擊“確定”或按回車鍵,函數將返回文本框中輸入的字符型值并賦給指定的變量。在圖4-2中,如輸入“張三”后按回車鍵,則strName變量中的內容即為“張三”。圖4-2信息輸入框在使用該函數時,除了第一項提示外都是可以省略的,但要注意如果省略一部分參數,則被省略的參數必須用占位符,即逗號跳過。

在使用該函數時要注意以下幾點:

●提示文字的最大長度為1024個字符,在對話框中顯示這些提示信息時會自動換行。如果想按自己的要求換行,則必須在提示信息中插入回車換行來實現。例如,將提示信息寫成?“請輸入要查找的姓名:”+Chr(13)+Chr(10)+“?按確定按鈕或回車鍵結束”。執行后將在對話框中顯示兩行文字。其中,Chr(13)+Chr(10)也可以用VB的常量“vbCrLf”來代替。

●默認情況下該函數的返回值為字符串型,如果用戶沒有輸入而直接按回車鍵,則會返回空字符串。●如果需要接受一個數值(如年齡、成績等),則通常要將接收返回值的變量聲明成一個數值類型的變量。如果事先沒有聲明,則該變量仍然是一個字符型,因此在使用該變量前一般要進行轉換,以防止類型不匹配的錯誤發生。另外,如果已將該變量聲明成數值型變量,則為防止出現運行錯誤,一般要設置default參數,以保證用戶不輸入也有一個默認的數值返回到變量中。

●該函數在運行時還有一個“取消”按鈕用于將輸入的值作廢,相當于按Esc鍵,此時將返回一個空串。

●每次調用該函數時只能輸入一個值,如果需要連續輸入多個值,則必須將該函數與循環語句聯合使用,每調用一次可將輸入的數據保存下來(通常是存放到一個數組中)以備再次調用。知識點4-2-2

MsgBox函數

在Windows及其應用軟件中,消息框的使用非常頻繁,如警告信息、提示信息、確認信息等。VB.NET也提供了消息框功能,圖4-3所示的詢問消息框就是用MsgBox函數實現的。

MsgBox的主要格式如下:

MsgBox(prompt[,buttons][,title])

其中,prompt指消息框中的提示信息(與InputBox函數的使用相同),如圖4-3中“繼續嗎?”;buttons定義消息框中的按鈕類型、數目及圖標樣式;title即消息框的標題,如圖4-3中的“詢問”。

應用MsgBox時最主要的是確定第二項參數,該參數共有4組,即為4項參數之和:“按鈕數目值”+“圖標類型值”+“缺省按鈕值”+“模式值”。該參數有兩種取法,一種是直接用4個取值相加,另一種是用4個內部常量相加。按鈕取值及意義見表4-7。圖4-3詢問消息框圖4-3所示的消息框可用下列命令之一來實現:

intRet=MsgBox(“繼續嗎?”,VbYesNoCancel+VbQuestion,

“詢問”) ‘?用內部常量

intRet=MsgBox(“繼續嗎?”,3+32,“詢問”)

’?用數值

命令執行后,函數有一個返回值送到變量intRet中。返回值取決于用戶響應了哪一個按鈕,各個按鈕對應的返回值見表4-8。程序可以根據用戶響應的按鈕所返回的值來決定程序的流程。4.2.2分支結構

在VB.NET中提供了多種形式的分支結構語句,根據條件是否為真,執行不同的分支語句,這種結構又稱為選擇結構。

【案例4-2】

編寫一個解一元二次方程AX2+BX+C=0的程序。當B2-4AC≥0時,通過MsgBox語句輸出方程的解;否則,通過MsgBox語句輸出“無實數解”。相關界面見圖4-4。

【技能目標】

(1)掌握IF分支結構的程序流程。

(2)進一步掌握賦值語句、InputBox函數和MsgBox函數的使用。

【操作要點與步驟】

只要將案例4-1中的代碼作相應修改即可實現,修改后的代碼如下:圖4-4案例4-2界面

【相關知識】

知識點4-2-3IF分支結構

IF分支結構語句分單行結構與塊結構兩種形式。

1.單行結構

IfconditionThenstatement[Elseelsestatement]

2.塊結構

Ifcondition[Then]

[statements]

[ElseIfcondition-n[Then]

[elseifstatements]]

[Else

[elsestatements]]

EndIf單行結構適用于簡單的測試;塊結構不僅具有更強的結構性與適應性,而且也易于維護與調試。單行結構與塊結構的區別有以下兩點:

●塊結構的Then后面可以沒有語句,而單行結構的Then后面肯定有語句;

●單行結構沒有EndIf結束語句,而塊結構必須有該結束語句。

【案例4-3】

編寫一個輸入月份、輸出季節名稱的程序。

【技能目標】

掌握Select分支結構的程序流程與使用。

本案例是一個輸入月份查詢季節的程序。當輸入月份為12、1和2時,輸出“冬季!”;當輸入月份為3、4和5時,輸出“春季!”;當輸入月份為6、7和8時,輸出“夏季!”;當輸入月份為9、10和11時,輸出“秋季!”;當輸入其他數字時,輸出“輸入錯誤,請重新輸入!”。相關界面見圖4-5。圖4-5案例4-3界面

【操作要點與步驟】

(1)新建一個項目“VBnet4-3”。

(2)在窗體上建立一個命令按鈕。

(3)雙擊命令按鈕,進入代碼編寫窗口。

(4)輸入以下代碼:

【相關知識】

知識點4-2-4SelectCase語句

有時需要判定的條件較多,如果再用以上的條件結構,則代碼顯得十分繁瑣且容易出錯。為此VB.NET提供了專門用于多重判定的選擇結構(也稱為情況語句)。

SelectCase語句是VB.NET語言中的多分支語句,語句格式如下:

SelectCase<測試表達式>

Case<表達式列表1>

<語句塊1> Case<表達式列表2>

<語句塊2>

[CaseElse

<語句塊n+1>]

EndSelect

VB.NET在執行時首先計算測試表達式的值,然后將該值與每個Case后的值進行比較,若值相同,則執行該Case后的語句塊。如果有多個Case值與之相匹配,則只執行第一個;如果沒有一個與之相匹配,則執行CaseElse后的語句塊。使用Select選擇結構語句的關鍵是選擇合適的測試表達式,并確定合適的測試值。測試值的表示方法可以有以下幾種:

●具體取值,可以是一個或多個,如100、85、1。

●連續的數據范圍,如85To100、60To84等。

●利用Is關鍵字來判定,如對于成績而言不可能大于100,因此85~100就可以寫成Is>=85。

●以上幾種表示方法的組合,如100、60To84、Is>=85。4.2.3循環結構

在VB.NET中提供了多種形式的循環結構語句,循環結構是指在指定的條件下多次重復執行一組語句。

【案例4-4】

編寫一個程序,計算1+2+…+(n-1)+n的值,其中n通過input語句輸入,結果通過MsgBox語句輸出。相關界面見圖4-6。圖4-6案例4-4界面

【技能目標】

(1)掌握循環結構的程序流程。

(2)?for…next循環語句的使用。

【操作要點與步驟】

(1)新建一個項目“VBnet4-4”。

(2)在窗體上建立一個命令按鈕。

(3)雙擊命令按鈕,進入代碼編寫窗口。

(4)輸入以下代碼:

【相關知識】

知識點4-2-5

For循環

For循環一般用于循環次數已知的情況。For循環含有一個循環計數變量,每執行一次循環,該變量就會增加或減少指定的值,直到循環結束。其語法格式如下:

Forcounter=startToend[Stepstep]

[statements]

[ExitFor]

[statements]

Next[counter]該語句執行時,先將counter設為start(初值)。測試counter的值是否超過end(如step為正數,則是大于,否則是小于),若已經超過,則循環結束,否則執行循環體中的語句。step是每次循環時counter變化的數值,它可正可負,缺省時為1。本次循環結束后,counter將加上步長step的值返回到循環開始,再進行測試,直到counter的值超過終值,循環結束。同樣可以在循環體內加上判定結構與ExitFor結合,從而提前退出循環。

①不要在循環體內修改循環計數變量的值,否則會造成循環次數的不準確,而且程序調試也非常困難。

②初值、終值與步長均為數值表達式,但其值不一定是整數,也可以是實數,VB會自動取整。

知識點4-2-6其他循環語句

1.DoWhile…Loop語句

使用DoWhile…Loop語句實現案例4-4功能的代碼如下:

2.DoUntil…Loop語句

使用DoUntil…Loop語句實現案例4-4功能的代碼如下:

3.Do…LoopWhile語句

使用Do…LoopWhile語句實現案例4-4功能的代碼如下:

4.Do…LoopUntil語句

使用Do…LoopUntil語句實現案例4-4功能的代碼如下:

Do循環主要用于循環次數預先不能確定的循環結構。它有兩種語法形式,即當型與直到型。

①當型循環如下:

Do[{While|Until}condition]

[statements]

[ExitDo]

[statements]

Loop

②直到型循環如下:

Do

[statements]

[ExitDo]

[statements]

Loop[{While|Until}condition]當型循環是先判斷后執行,循環體中的語句可能一次也不執行;直到型循環是先執行后判斷,循環體中的語句至少執行一次。

4.3過程

所謂過程,是指能完成某種特定功能,且能被反復調用的一組程序代碼。VB.NET中的過程可以分為兩大類:一類是VB.NET本身所提供的大量內部函數過程和事件過程;另一類是用戶根據需要自己定義的、可供事件過程反復調用的自定義過程。事件過程構成了應用程序的主體,而自定義過程則為事件過程服務,供事件過程調用。

在VB.NET中,自定義過程又可以分為以下4種:

●?Sub過程:指以Sub為關鍵字的過程,也稱為子過程。實際上通常的事件過程也是Sub過程。●?Function過程:指以Function為關鍵字的過程,又稱為函數。

●?Property過程:指以Property為關鍵字的過程,也稱為屬性過程,主要用于用戶自定義控件的屬性。

●事件過程:為響應由用戶操作或程序中的事件所觸發的事件而執行的Sub過程。

對于VB.NET過程有以下幾點說明:

(1)VB.NET中的任何過程均必須包含在某一個模塊之中。

(2)Sub過程在調用后不會返回值,而Function過程會返回一個值。

(3)用戶自定義過程根據其作用范圍的不同可分為公有過程和私有過程兩種。

(4)事件過程的作用范圍一般局限于該模塊范圍之內。

本書限于篇幅,只討論前兩種過程。4.3.1Sub過程

【案例4-5】

編寫一個已知三角形三邊長求三角形面積的過程,通過對過程的調用,計算三角形的面積。相關界面見圖4-7。圖4-7案例4-5界面

【技能目標】

(1)掌握Sub過程的定義。

(2)掌握Sub過程的調用方法。

【案例說明】

編寫一個程序,建立一個Sub過程,通過對過程的調用,計算三角形的面積。

【操作要點與步驟】

(1)新建一個項目“VBnet4-5”。

(2)單擊“項目”菜單中的“添加模塊”命令添加模塊,在Module1中輸入如下代碼:

(3)在窗體上建立一個命令按鈕。

(4)雙擊命令按鈕,進入代碼編寫窗口。

(5)輸入以下代碼:

【相關知識】

知識點4-3-1

Sub過程

設計一個比較復雜的程序,首先應按照程序中要實現的若干主要功能,將程序分解成一個個相對簡單的問題去解決。每個簡單問題通過一段程序來實現,它們之間相對獨立,這種程序稱為過程,以“Sub”保留字開始的子程序過程沒有返回值。

1.定義Sub過程

定義Sub過程的一般格式如下:

[Private|Friend|Public|Protected|ProtectedFriend]Sub過程名(參數列表)

[局部變量和常量聲明]‘用Dim或Const聲明

[語句塊]

[ExitSub]

[語句塊]

EndSub

功能:建立一個由“過程名”標識的通過過程。

需要說明的有以下幾點:

(1)缺省[Private|Public…]時,系統默認為Public。

(2)以關鍵字Private開頭的過程是模塊級的(私有的)過程,私有過程只能被同一模塊中的過程調用。以關鍵字Public開頭的過程是公有的或全局的過程,公有過程可以被應用程序中的任一過程調用。

(3)過程的命名規則與標識符的命名規則相同,在同一個模塊中,同一符號名不得既用做Sub過程名,又用做Function過程名。

(4)“參數列表”中的參數稱為形式參數,簡稱形參。它可以是變量名或數組名,只能是簡單變量,不能是常量、數組元素和表達式。若有多個參數,則各參數之間用逗號分隔,行參沒有具體的值。VB.NET的過程可以沒有參數,但一對圓括號不可以省略。不含參數的過程稱為無參數過程。形參的一般格式如下:

格式1:

[Optional][ByVal]變量名[()]As數據類型

格式2:

[Optional][ByRef]變量名[()]As數據類型

格式3:

ByVal|ByRefParemArray參數數組名()As數據類型

●?ByVal:表明其后的形參是按值來傳遞參數(傳值參數)的,也稱為“傳值”(PassedByValue)方式。

●?ByRef:表明參數是按地址傳遞(傳址參數)的,也稱“傳址”(PassedByReference)方式。

●?Optional:表明該參數是一個可選參數。

●變量名[()]:變量名為合法的VB.NET變量名或數組名,無括號表示變量,有括號表示數組。通常,調用的過程所包含的參數不能超出過程聲明指定的數目。當需要數量不確定的參數時,可聲明一個“參數數組”,它允許過程接受參數的值數組。定義過程時,并不需要知道參數數組中的元素數。每次過程調用都單獨確定數組的大小。

(5)?Sub過程不能嵌套定義,但可以嵌套調用。

(6)?EndSub標志該過程結束,系統返回并調用該過程語句的下一條語句。

(7)過程中可以用EndSub提前結束過程,并返回到調用該過程語句的下一條語句。

2.建立Sub過程的方法

通用過程可以在窗體中建立,也可以在模塊中建立。

在窗體中建立通用過程的一般步驟如下:

(1)打開代碼編輯器窗口。

(2)找到文字“Windows窗體設計器生成的代碼”的所在位置。

(3)直接在該段文字的下方輸入要建立的通用過程。

通用過程還可以定義在模塊文件中,模塊文件以?.vb為擴展名。模塊代碼以Module開頭,以EndModule結尾。可以將各窗口都公用的過程或函數一起放在模塊中,這樣可使程序更加清晰、易懂,便于維護。在模塊中建立通用過程的一般步驟如下:

(1)選擇“項目”下的“添加模塊”命令,出現“添加新項”對話框。

(2)在“添加新項”對話框的“模板”內選擇“模塊”,在“名稱”文本框中輸入模塊文件名,單擊“打開”按鈕,在代碼對話框中顯示建立的模板。

(3)在ModuleModule1下面輸入要建立的通用過程代碼。

(4)選擇“文件”下的“保存Module1.vb”命令,保存模塊文件。

3.Sub子過程的調用

Sub子過程的調用是一條獨立的調用語句。

格式:

Call<通用過程名>([實際參數列表])

<通用過程名>([實際參數列表])

功能:調用執行“通用過程名”指定的過程。

實際參數的個數、類型和順序應該與被調用過程的形式參數相匹配,有多個參數時,用逗號分隔。如果通用過程無形參,則“實際參數列表”可以缺省。4.3.2Function過程

【案例4-6】

編寫一個已知三角形三邊長求三角形面積的函數,通過對函數的調用,計算三角形的面積。相關界面見圖4-8。

【技能目標】

(1)掌握Function過程的定義。

(2)掌握Function過程的調用方法。圖4-8案例4-6界面

【操作要點與步驟】

(1)新建一個項目“VBnet4-6”。

(2)單擊“項目”菜單中的“添加模塊”命令添加模塊,在Module1中輸入如下代碼:

PublicFunctions(ByValaAsSingle,ByValbAsSingle,ByValcAsSingle)

DimccAsSingle

cc=(a+b+c)/2

DimssAsSingle

ss=Math.Sqr(cc*(cc-a)*(cc-b)*(cc-c))

Returnss

EndFunction

(3)在窗體上建立一個命令按鈕。

(4)雙擊命令按鈕,進入代碼編寫窗口。

(5)輸入以下代碼:【相關知識】

知識點4-3-2Function過程

VB.NET中包含了許多內部函數過程,如Trim(x)、Asc(x)、Mid(c,Start,n)等,在編寫程序時只需寫出函數過程名和相應的參數,就可以得到函數的返回值。另外,在應用程序中,用戶還可以使用Function語句來定義自己的函數過程。

函數定義的一般格式如下:

[Private|Friend|Public|Protected|ProtcetedFriend]Function函數過程名

[(參數列表)][As數據類型]

[局部變量和常量聲明]'?用Dim或Const聲明

[語句塊]

[ExitFunction]

[函數過程名=表達式]|[Return表達式]

[語句塊]

End

Function

功能:建立一個由“函數過程名”標識的自定義函數。

需要說明的有以下幾點:

(1)?“函數過程名”的命名規則與標識符的命名規則相同,函數過程必須由函數名返回一個值。

(2)?“As數據類型”用來指定函數過程返回值的類型。缺省該選項時,返回值類型默認為Object類型。

(3)在函數過程體內通過“函數過程名=表達式”給過程名賦值,所賦的值就是函數過程的返回值,也可以直接使用“Return”表達式語句來返回函數值,表達式的值就是函數過程的返回值。

(4)如果函數體內沒有給函數名賦值,則返回對應類型的缺省值,數值型返回0,字符型返回空字符串。4.3.3參數傳遞

1.按值傳遞參數

定義形參時,形參前面加上“ByVal”表示該形參是按值傳遞的。傳遞過程為:首先,將實際參數(表達式)的數值進行計算并將結果存放到對應的形式參數存儲單元中;然后,實際參數與形式參數斷開聯系。被調用過程中的操作是在形式參數自己的存儲單元中進行的,當過程調用結束時,這些形式參數所占用的存儲單元也同時被釋放。因此,在過程中形式參數的任何操作不會影響到實參。

按值傳遞參數是一種單向傳遞,即實參的值能夠傳給形參,但對形參的改變卻無法影響到實參。

2.按址傳遞參數

定義形參時,形參前面加上“ByRef”表示該形參是按址傳遞的。按址傳遞參數是指將實際參數的地址傳給對應的形式參數。在被調過程中對形式參數的任何操作都變成了對對應實參的操作,因此實際參數的值就會隨形式參數的改變而改變。當參數是字符串、數值時,使用按址傳遞參數直接將實參的地址傳遞給過程會使程序的效率提高。

4.4程序調試和異常處理

4.4.1錯誤類型

程序中的錯誤通常可以分成三類:語法錯誤、運行錯誤和邏輯錯誤。可以使用不同的方法和工具來查找并修改每種類型的錯誤。其中,語法錯誤比較容易排除,也是一種低級錯誤;運行錯誤和邏輯錯誤需要靠經驗、調試工具以及不斷深入地分析代碼來排除。

1.語法錯誤

語法錯誤通常是由于編程人員對語言本身的熟悉度不足而產生的,例如關鍵字拼錯、標點錯誤(如西文標點寫成了中文標點)或漏寫、結構錯誤(如If之后忘了加上Then或者For語句少了Next)等。

在應用程序代碼中每輸入一條語句,VB.NET都會顯示其所包含的語法錯誤(若存在語法錯誤的話),包含錯誤的那部分代碼下會標有波浪線。當把鼠標指針移到帶波浪線的代碼上時,鼠標指針附近就會出現一條簡短的錯誤描述提示,并且,運行后在任務列表窗體中會產生相關的錯誤信息,如圖4-9所示。圖4-9語法錯誤

2.運行錯誤

運行錯誤多數發生于不可預期的異常。比如,打開硬盤上的某個文件時,該文件不存在;向硬盤上寫某個文件時,硬盤的空間不足;由于網絡阻塞而得不到預期的數據等。運行錯誤也有可能是用戶不按正確的操作步驟操作而造成的,比如在做除法時除數為零,訪問數組時超出了可訪問下標的范圍。

3.邏輯錯誤

邏輯錯誤是指程序算法的錯誤,這種錯誤是程序不發生任何程序中斷或跳出程序,而是一直執行到最后,但是執行結果是錯誤的。由于邏輯錯誤不會產生錯誤的信息,因此邏輯錯誤的發現和排除是比較困難的。4.4.2調試工具

1.VB.NET的工作模式

VB.NET的工作模式有三種:設計模式、運行模式和中斷模式。

VB.NET啟動后,自動進入設計模式。在設計模式下,標題欄顯示“設計”字樣。在設計模式下,可以進行相關的設計操作,如窗體設計,添加控件,設置對象屬性,編寫代

碼等。

當程序設計完成后,執行啟動命令,系統進入運行模式。在運行模式下,標題欄顯示“運行”字樣。在運行模式下,設計人員不能修改程序代碼,但可以查閱程序代碼。當程序處于運行模式時,在以下情況下將進入中斷模式:執行“全部中斷”命令,程序運行到斷點處,程序執行到“STOP”語句。在中斷模式下,標題欄顯示“中斷”字樣。在中斷模式下,設計人員可以查看和修改程序代碼,同時,可以檢查或修改數據。修改完成后,可單擊“繼續”按鈕,從中斷處繼續程序的運行。

2.調試工具欄

單擊視圖菜單工具欄中的“調試”命令,將在工具欄中出現“調試”工具欄,如圖4-10所示。圖4-10“調試”工具欄“調試”工具欄中從左到右各按鈕的功能分別如下:

●啟動/繼續:開始執行程序。在設計模式下顯示“啟動”,在中斷模式下顯示“繼續”。

●全部中斷:強迫進入中斷模式。

●停止:由運行模式進入設計模式。

●重新啟動:由中斷模式進入運行模式。

●顯示下一句:顯示程序的下一行語句。

●逐語句:在中斷模式下執行下一行語句,如果執行到過程,則進入過程內部,逐語句執行。

●逐過程:在中斷模式下執行下一行語句,如果執行到過程,則過程中的語句一次執行完成。●跳出:在中斷模式下執行下一行語句,如果執行到過程或函數,則不逐語句執行,并跳回調用函數的代碼處。

●十六進制:以十六進制顯示。

●設置斷點:打開“斷點”窗口。

3.調試窗口

若在調試程序時采用上述逐語句、逐過程的方法還無法解決問題,則必須運用并結合VB.NET中的各類調試窗口進行分析。在VB.NET中共有以下幾個調試窗口。

1)自動窗口

自動窗口只能在運行模式和中斷模式下打開,用于顯示當前代碼處的相關變量的值,如圖4-11所示。圖4-11自動窗口

2)局部變量窗口

局部變量窗口只能在運行模式和中斷模式下打開,用于顯示當前過程中所有局部變量的值,如圖4-12所示。

3)調用堆棧窗口

調用堆棧窗口只能在運行模式和中斷模式下打開,用于跟蹤多個過程的調用情況,如圖4-13所示。

4)監視窗口

監視窗口只能在運行模式和中斷模式下打開,用于顯示指定的表達式的值,如圖4-14所示。圖4-12局部變量窗口圖4-13調用堆棧窗口圖4-14監視窗口

5)命令窗口

在命令窗口中可以輸入執行函數和語句,從而可以查看和更改有關變量的值,如圖4-15所示。

6)斷點窗口

通過運行“調試”菜單中的“新斷點”命令可以設置斷點的出現條件。在運行過程中,當滿足相關條件時,程序中斷,如圖4-16所示。圖4-15命令窗口圖4-16斷點窗口4.4.3異常處理

VB.NET支持結構化和非結構化異常(錯誤)處理。通過在應用程序中設置特定代碼,可以處理用戶可能遇到的大多數錯誤并使應用程序能夠繼續運行。結構化和非結構化錯誤處理允許為潛在的錯誤進行計劃,防止它們干擾應用程序的正常工作。

如果發生異常的方法不能處理它,則異常將被傳回調用該方法的前一個方法。如果前一個方法也沒有異常處理程序,則異常被傳回該方法的調用方,以此類推。對處理程序的搜索一直持續到“調用堆棧”,它是應用程序內被調用過程的序列。如果未能找到異常的處理程序,則顯示錯誤信息并終止應用程序。

1.結構化異常處理

VB.NET支持結構化異常處理,該處理幫助創建和維護具有可靠、全面的錯誤處理程序的程序。結構化異常處理旨在通過將控件結構(類似于SelectCase或While)與異常、受保護的代碼塊和篩選器結合起來,在執行期間檢測和響應錯誤的代碼。

使用Try…Catch…Finally語句可以保護有可能引發錯誤的代碼塊,可以嵌套異常處理程序,并且每個塊內生命的變量將具有局部范圍。

格式:

Try

[Try語句塊]

[Catch[exception[Astype]][Whenexpression]‘?用于捕獲Try

語句塊中的異常語句塊] ’?Catch語句塊用來對捕捉的錯

誤進行處理

[Finally

[Finally語句塊]] ‘Finally語句塊,存放異常處理后執行

的代碼

EndTry

2.非結構化異常處理

非結構化異常處理由三個語句實現:Error語句、OnError語句和Resume語句。當方法使用非結構化異常處理時,將為整個方法建立單個的異常處理程序來捕獲引發的所有異常。然后,該方法跟蹤最新的異常處理程序的位置和已引發的最新異常。在方法的入口點,異常處理程序的位置和異常均設置為Nothing。

4.5面向對象的程序設計

【案例4-7】

類及對象的創建。

有一汽車類的具體參數為:具有四個輪子、五個座椅,每行駛3000公里需要保養一次,行駛50000公里后,該車報廢,如圖4-17所示。圖4-17案例4-7界面

【技能目標】

(1)掌握類和對象的創建;

(2)掌握類的屬性、方法、事件和構造函數;

(3)了解控制臺應用程序的創建方法。

【操作要點與步驟】

(1)單擊“文件”菜單,在出現的下拉菜單中,單擊“新建”,再單擊“新建項目”,新建一個項目。項目存放在“D:\VB.net”下,項目名稱取為“mycar”。項目類型選擇“VisualBasic項目”,模板選擇“控制臺應用程序”,項目名與位置按以上要求改寫,其他選默認值,單擊“確定”按鈕,如圖4-18所示。圖4-18創建控制臺應用程序

(2)創建類(Car),為類添加屬性、方法和事件。創建汽車類的實例“mycar”,行駛了3000公里后,觸發“保養”事件;行駛了50000公里后,觸發“報廢”事件。

具體代碼如下:

【相關知識】

知識點4-5-1類的創建

創建類的關鍵字是Class,完整的類包含了組成類的屬性、方法、事件,以及類的變量和構造函數等。創建類的代碼如下:

PublicClassCar類的方法的創建知識點4-5-2

EndClass

知識點4-5-2類的方法的創建

在VB.NET中,使用Sub和Function過程來創建方法。‘?方法:汽車開動

PublicSubgo()

Console.WriteLine(“嘀……”)

EndSub

在VB.NET中,使用Property語句來定義類的屬性。

知識點4-5-3類的屬性的創建

(1)設置汽車的顏色屬性為可讀/寫的屬性,代碼如下:

(2)設置汽車的輪子數目屬性為只讀屬性,代碼如下:知識點4-5-4類的事件的創建與驅動

事件是一種對外界操作產生響應的機制。在程序中,通過事件的聲明和驅動機制可以使對象具有與應用程序交互的能力。

1.類的事件的創建

本案例中共創建了兩個事件:

(1)行駛3000公里,需要保養一次;

(2)行駛50000公里,汽車報廢。

代碼如下:

2.事件的驅動

驅動事件的代碼如下:

RaiseEventtakecare()對象的創建和使用知識點4-5-5

RaiseEve

ntexpire()知識點4-5-5對象的創建和使用

1.對象的創建

類的對象又稱為類的實例。創建類的對象的語句如下:

PublicmycarAsNewCar

2.對象的使用

Mycar.runable=True‘?為對象設置屬性

Mycar.go()’?對象的方法類的成員變量知識點4-5-6

Cc=mycar.runcount‘?讀取對象的屬性

知識點4-5-6類的成員變量

成員變量是指在類中聲明,在運行應用程序時適用于每一個單獨對象的變量。

Private_ColorAsString=“紅色”

Public_wheelcountAsShort=4

Public_chaircountAsShort=5

Public_runcountAsInteger=0

Public_runableAsBoolean=True

知識點4-5-7構造函數

構造函數是在創建對象時調用的一種特定的方法。構造函數主要用于為對象分配存儲空間,完成初始化操作。構造函數是一個通用過程,過程名為New。當類中定義構造函數時,系統采用默認構造函數。

Publicsubnew

Endsub

本例的構造函數如下:

SubNew()

_Color=“米色”

EndSub

【案例4-8】

類和類的繼承。

先創建一個Animal類,Dog類使用類的繼承方法來創建,如圖4-19所示。圖4-19案例4-8運行結果

【技能目標】

(1)鞏固掌握類和對象的創建;

(2)掌握類的繼承。

【操作要點與步驟】

(1)單擊“文件”菜單,在出現的下拉菜單中,單擊“新建”,再單擊“新建項目”,新建一個項目。項目存放在“D:\VB.net”下,項目名取為“animal”。項目類型選擇“VisualBasic項目”,模板選擇“控制臺應用程序”,項目名與位置按以上要求改寫,其他選默認值,然后單擊“確定”按鈕。

(2)創建一個Animal類,并創建一個實例a_animal,如圖4-20所示。圖4-20運行結果代碼如下:

(3)通過類的繼承創建如圖4-21所示的Dog類,代碼如下:

圖4-21創建Dog類知識點4-5-8類的繼承

VB.NET中最重要的新特性就是繼承(Inheritance)。繼承就是從一個簡單的類(BasicClass)派生出一個新類(稱為派生類或繼承類)的能力。派生類繼承了基類的所有屬性、方法和事件等。

PublicClassdog

Inheritsanimal

EndClass

Dog類中的“speak”方法的重載如圖4-22所示。圖4-22方法的重載代碼如下:

知識點4-5-9方法的重載

派生類(又稱繼承類)從基類中繼承了屬性和方法。為了使派生類具有新的屬性和方法,就要用到重載。要能在派生類中實現方法的重載,必須在基類中對該方法進行聲明時采用Overrideable修飾符。

PublicOverridableSubspeak()

在重載方法時,應采用Overloads修飾符。

PublicOverloadsSubspeak()

Console.WriteLine(“汪汪汪……”)

EndSub

【案例4-9】

將類組織到命名空間。

將class1類和class2類組織到命名空間namespace1,見圖4-23。圖4-23命名空間實例

【技能目標】

(1)掌握命名空間的概念;

(2)掌握類的繼承。

【操作要點與步驟】

(1)單擊“文件”菜單,在出現的下拉菜單中,單擊“新建”,再單擊“新建項目”,新建一個項目。項目存放在“D:\VB.net”下,項目名取為“namespacelx”。項目類型選擇“VisualBasic項目”,模板選擇“Windows應用程序”,項目名與位置按以上要求改寫,其他選默認值,然后單擊“確定”按鈕。

(2)單擊“項目”菜單中的“添加類”命令,在出現的對話框的“模板”中選擇“代碼文件”,單擊“打開”按鈕。在出現的對話框中輸入如下代碼:

(3)在Form1窗體中建立兩個命令按鈕Button1和Button2,在相應的“Click”事件中輸入以下代碼:(4)運行后,單擊兩個命令按鈕,效果如圖4-23所示。習題

一、單項選擇

1.一條語句中包含的字符數不能超過______個。

A.1024

B.1023 C.255 D.256

2.在默認設置下,代碼的顏色為_____時,表示該代碼有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論