單元五、 VB.NET語言基礎(chǔ)_第1頁
單元五、 VB.NET語言基礎(chǔ)_第2頁
單元五、 VB.NET語言基礎(chǔ)_第3頁
單元五、 VB.NET語言基礎(chǔ)_第4頁
單元五、 VB.NET語言基礎(chǔ)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單元五、 VB.NET語言基礎(chǔ)學(xué)習(xí)目標(biāo)初步掌握Visual Studio.NET程序的書寫規(guī)則、基本的數(shù)據(jù)類型、變量、常量、運(yùn)算符、表達(dá)式、常用函數(shù)、流程控制、過程、程序調(diào)試和異常處理和面向?qū)ο蟮某绦蛟O(shè)計等知識。通過實例進(jìn)一步鞏固利用Visual Basic.NET(簡稱VB.NET)開發(fā)Windows應(yīng)用程序的流程。加深理解解決方案、項目與項的含義,并了解利用解決方案及項目對開發(fā)進(jìn)行管理的基本方法。從前幾章的學(xué)習(xí)可以看出,一個VB.NET程序由兩個部分構(gòu)成:一部分是程序的應(yīng)用界面,另一部分是程序代碼。程序的應(yīng)用界面正是通過程序代碼將界面中的各個對象有機(jī)地結(jié)合起來,從而實現(xiàn)程序所需要的功能。與

2、其他任何程序設(shè)計語言一樣,VB.NET也規(guī)定了可編程的數(shù)據(jù)類型、基本語句、函數(shù)與過程等。對于已經(jīng)學(xué)習(xí)過VB或其他編程語言的讀者來說,本章的許多內(nèi)容是不陌生的,因此學(xué)習(xí)時只要快速瀏覽一下即可。而對于沒有編程語言基礎(chǔ)的讀者來說,本章則應(yīng)是學(xué)習(xí)的重點。5.1 VB.NET程序設(shè)計基礎(chǔ) 代碼書寫規(guī)則格式用標(biāo)題3,下同VB.NET程序設(shè)計語言的代碼書寫規(guī)則如下:1序號格式要前后一致,下同、. 關(guān)鍵字和標(biāo)識符關(guān)鍵字又稱是系統(tǒng)保留字,是具有固定含義和使用方法的字母組合。關(guān)鍵字用于表示系統(tǒng)的標(biāo)準(zhǔn)過程、方法、屬性、函數(shù)和各種運(yùn)算符等。如:Private、Sub、If、Else、Select等等。標(biāo)識符是由程序設(shè)

3、計人員定義的,用于表示變量名、常量名、控件對象名稱等的字母組合。VB.NET中標(biāo)識符的命名規(guī)則:(1) 標(biāo)識符必須以字母或下劃線開頭;(2) 標(biāo)識符中不能出現(xiàn)空格和符號;(3) 不能使用關(guān)鍵字。例如,以下為錯誤的標(biāo)識符:Public(錯誤原因:使用了系統(tǒng)保留字);Student name(錯誤原因:標(biāo)識符中出現(xiàn)了空格);505Ccomputer(錯誤原因:標(biāo)識符以數(shù)字開頭);2、程序語句和程序的代碼書寫規(guī)則程序語句是執(zhí)行具體操作的指令,是程序的基本功能單位。程序語句最長不能超過1023個字符。例如:EndTextBox.value=”Hello”程序代碼的書寫規(guī)則如下:(1) 不區(qū)分字母的大小

4、寫;(2) 一行語句中包含的字符數(shù)不能超過255可能要斟酌:VB6中即可達(dá)到1024個字符?個字符;(3) 一行可書寫若干句語句,語句之間用“:”分隔;(4) 一句語句分若干行書寫時,要用空格加續(xù)行符“_”連接;(5) 同一語句的續(xù)行符之間不能有空行;(6) 不能在對象名、屬性名、方法名、變量名、關(guān)鍵字的中間斷開;原則上,不提倡一行寫多條語句,續(xù)行符應(yīng)該加在運(yùn)算符的前面或后面3、注釋加入注釋語句的目的是為了便于方便閱讀程序代碼,以方便程序的維護(hù)的調(diào)試。注釋語句可用REM或“”引導(dǎo)。在調(diào)試程序時,通常可以在語句前加上“”,以使該語句在程序運(yùn)行時不被執(zhí)行。注釋語句的各種用法如下: 以下語句有作用是

5、定義一個變量REM 以下語句有作用是定義一個變量Dim studentno as int 定義一個學(xué)生學(xué)號的變量 Dim studentno as int REM 定義一個學(xué)生學(xué)號的變量 TextBox.value=”Hello”利用文本編輯器工具欄對某一個程序段整個加上注釋。方法是先選中需要注釋的代碼段,單擊編輯工具欄中的“塊注釋”按鈕,如要取消注釋,只要再單擊“取消塊注釋”按鈕即可。這種注釋特別有利于程序的調(diào)試。 基本數(shù)據(jù)類型isual Basic.NET語言定義了多種數(shù)據(jù)類型,用以存儲各種不同形式的數(shù)據(jù),節(jié)省存儲的空間。isual Basic.NET常用的數(shù)據(jù)數(shù)據(jù)類型如表5-1Visua

6、l Basic數(shù)據(jù)類型VB.NET公共語言運(yùn)行庫類型結(jié)構(gòu)名義存儲分配占(字節(jié)數(shù))取值范圍BooleanSystem.Boolean2True 或 FalseByteSystem.Byte10到255(無符號)CharSystem.Char20到65535(無符號)DateSystem.DateTime80001年1月1日凌晨0:00:00到9999年12月31日晚上11:59:59DecimalSystem.Decimal160到±79,228,162,514,264,337,593,543,950,335之間不帶小數(shù)點的數(shù);0到±7.9228162514264337593

7、543950335之間帶28位小數(shù)的數(shù);最小非零數(shù)為±0.0000000000000000000000000001Double(雙精度浮點型)System.Double8負(fù)值取值范圍為-1.79769313486231570E+308到-4.94065645841246544E-324;正值取值范圍為4.94065645841246544E-324到1.79769313486231570E+308IntegerSystem.Int324-2,147,483,648到2,147,483,647Long(長整型)System.Int648-9,223,372,036,854,775,80

8、8到9,223,372,036,854,775,807ObjectSystem.Object(類)4任何類型都可以存儲在Object類型的變量中ShortSystem.Int162-32,768到32,767Single(單精度浮點型)System.Single4負(fù)值取值范圍為-3.4028235E+38到-1.401298E-45;正值取值范圍為1.401298E-45到3.4028235E+38String(變長)System.String(類)大約20億個Unicode字符用戶自定義的類型(結(jié)構(gòu))(從System.ValueType繼承)結(jié)構(gòu)中的每個成員都可以由自身數(shù)據(jù)類型決定取值范圍,

9、并與其他成員的取值范圍無關(guān)表5-1 常用數(shù)據(jù)數(shù)據(jù)類型(在此增加一個“說明”:VB.NET中的數(shù)據(jù)類型與VB相比有兩點不同:一是所有的數(shù)據(jù)類型都是對象;二是許多數(shù)據(jù)類型(特別是整型)的取值范圍擴(kuò)大了。常量與變量1、常量格式請調(diào)整所謂常量是指在整個應(yīng)用程序執(zhí)行過程中其值保持不變的量。常量包括直接常量和符號常量兩種形式。(1)直接常量在程序中直接給出的數(shù)據(jù),包括整形常量、實型常量、字符型常量、字符串常量、布爾常量、日期常量等應(yīng)加上各種常量的表示方法,或以舉例的形式。(2)符號常量在應(yīng)用程序?qū)嶋H中,甬道的一些固定不變的數(shù)據(jù),如固定的數(shù)學(xué)常量,就應(yīng)該考慮改用常量。聲明符號常量,使用Const語句來給常量

10、分配名字、值和類型。定義符號常量的一般格式如下:格式Const <常量名> As 數(shù)據(jù)類型 =表達(dá)式功能 定義由“常量名”指定的符號常量。說明 常量名是標(biāo)識符,它的命名規(guī)則與標(biāo)識符的命名規(guī)則一樣。“As數(shù)據(jù)類型”用來說明常量的數(shù)據(jù)類型。若省略此項,則常量的數(shù)據(jù)類型由表達(dá)式?jīng)Q定1、系統(tǒng)符號常量的說明?2、枚舉的說明?。2、 變量在Visual Basic.NET中,變量就是用來存儲在應(yīng)用程序執(zhí)行時會發(fā)生變化的值。一個變量在捏村中占據(jù)一定的存儲單元,一個變量中可以存放一個數(shù)據(jù)。每個變量應(yīng)有一個名字。在Visual Basic.NET中,變量的命名應(yīng)符合標(biāo)識符命名發(fā)規(guī)定。在使用變量之前,

11、應(yīng)先聲明變量。在聲明變量的同時還可以給變量賦初值。變量聲明語句的一般格式如下:格式Dimeclare <變量名> As 數(shù)據(jù)類型 =初值功能 定義由“變量名”指定的變量,并可以給它賦初值。說明 語句中的“DeclareDim”可以是DeclareDim,Public,Protected,F(xiàn)riend,Private,Shared和Static。本節(jié)只介紹Dim。數(shù)據(jù)類型可以是基本數(shù)據(jù)類型,也可以是用戶自定義的類型。初值用來定義變臉變量的初值。如果在聲明變量的時候沒有給變量賦初值,Visual Basic.NET就用數(shù)據(jù)類型的默認(rèn)值來給出初始值初值是什么?請說明。(請舉幾個實例:順便

12、說明變量名的命名約定)3、Option Explicit語句(1)Option Explicit的工作方式當(dāng)Option Explicit設(shè)為On時(這是缺省情況),必須在使用變量前顯示聲明該變量,否則將產(chǎn)生編譯錯誤。當(dāng)Option Explicit設(shè)為Off時,可以在代碼中直接使用變量,即隱式聲明該變量。這時該變量作為對象類型創(chuàng)建。雖然隱式聲明變量比較方便,但會增加命名沖突和隱藏拼寫錯誤并且會抵消使用內(nèi)存。(2)設(shè)置Option Explicit在代碼最前面編寫相應(yīng)的語句,可以將Option Explicit設(shè)為On或Off:Option Explicit On ' 將Option

13、Explicit設(shè)為OnOption Explicit off ' 將Option Explicit 設(shè)為off如果那么在使用一個變量之前就不必聲明該變量隱式聲明變量,Visual Basic.NET會將把遇到的每一個沒有聲明的標(biāo)識符均看做成一個變量。例如:在沒有聲明X和Y的前提下,有下列語句:x=314y=250系統(tǒng)將自動創(chuàng)建X和Y這兩個變量。如果希望在使用每一個變量之前均必須聲明,可在類模塊、窗體模塊或標(biāo)準(zhǔn)模塊的開頭加入一條語句:Option Explicit on這樣,系統(tǒng)只要遇到一個未明確聲名就當(dāng)成變量的名字,就會發(fā)出錯誤警告。運(yùn)算符和表達(dá)式Visual Basic.NET中也

14、具有豐富的運(yùn)算符,通過運(yùn)算符和操作數(shù)組合成表達(dá)式,實現(xiàn)程序編制中所需的大量操作。Visual Basic.NET中的運(yùn)算符可分算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和字符串運(yùn)算符四類,相應(yīng)的表達(dá)式也可分為算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式和字符串表達(dá)式等。(1)算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符可以對數(shù)值型數(shù)據(jù)進(jìn)行冪()、乘法(*)、浮點刪除(/)、整數(shù)除法()、取余模(Mod)、加法(+)和減法(-)等運(yùn)算。算術(shù)運(yùn)算符運(yùn)算規(guī)律見表5-2。運(yùn)算符名稱優(yōu)先級實例 a=3結(jié)果乘方1a29 -負(fù)號2-a-3 *乘3a*a*a27 /除310/a3.333333 整除410a3 Mod取余模510 mod

15、a1 +加610+a13減710-a7表5-2 算術(shù)運(yùn)算符運(yùn)算規(guī)律新增的+=、-=、&=等等功能簡介,或放在“說明”中(2)關(guān)系運(yùn)算符關(guān)系運(yùn)算符也稱比較運(yùn)算符,用來對兩個相同類型的表達(dá)式或變量進(jìn)行等于(=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、不等于(<>)、字符串比較(Like)和對象引用比較(Is),其結(jié)果是一個邏輯值,即True和False。關(guān)系運(yùn)算符運(yùn)算規(guī)律見表。在比較時注意以下規(guī)則:l 如果兩個操作數(shù)都是數(shù)值型,則按其大小比較l 如果兩個操作數(shù)都是字符型,則按字符的ASCII碼值從左到右逐一比較。l 關(guān)系運(yùn)算符的優(yōu)先

16、級相同。l Visual Basic.NET中,Like比較運(yùn)算符用于字符串匹配,可與通配符“?”、“#”、“*”其含義的解釋,可以放在“說明”標(biāo)記中結(jié)合使用,通常在操作數(shù)據(jù)庫的SQL語句中使用。見表5-3運(yùn)算符名稱實例結(jié)果=等于“ABCDE”=“ABR”F>大于“ABCDE”>“ABR”F>=大于等于“bc”>=“大小”F<小于23<3F<=小于等于“23”<=“3”TLike字符串匹配“ABCDEFG”Like“* DE”TIS對象引用比較ClassSample 1 is NothingT表5-3關(guān)系運(yùn)算符(3) 邏輯運(yùn)算符邏輯運(yùn)算也稱布爾運(yùn)

17、算,有與(And)、或(Or)、非(Not)、異或(Xor)等操作。邏輯運(yùn)算規(guī)律見表5-4。運(yùn)算符名稱優(yōu)先級結(jié)果Not邏輯非1當(dāng)操作作數(shù)為假時,結(jié)果為真,反之亦然And邏輯與2A和B都是True時,結(jié)果才為TOr邏輯或3A和B都是False時,結(jié)果才為FXor邏輯異或4兩個操作數(shù)的值不相同,結(jié)果為T,相同時結(jié)果為F表5-5邏輯運(yùn)算符andAlso和OrElse簡介(4) 字符運(yùn)算符 字符串運(yùn)算符有“+”和“&”兩個運(yùn)算符,用來連接兩個或更多個字符串。說明: “+”要求參加連接的兩個字符串必須均為字符串?dāng)?shù)據(jù),“&”可以把不同類型的數(shù)據(jù)當(dāng)成字符串來連接。(這里一定舉幾個例子,說明兩

18、種連接的區(qū)別)常用函數(shù)VB.NET中提供了許多 函數(shù)是實現(xiàn)具有一定功能的內(nèi)置函數(shù)供開發(fā)人員直接調(diào)用程序段。函數(shù)通常有一個返回值,按返回值的數(shù)據(jù)類型可以將Visual Basic.NET中的函數(shù)分為:數(shù)學(xué)函數(shù)、字符處理函數(shù)、類型轉(zhuǎn)化函數(shù)、隨即數(shù)函和日期時間函數(shù)。(一定要增加一個說明:VB.NET中的函數(shù)與VB6函數(shù)并不一一對應(yīng),有些VB6中的函數(shù)在VB.NET已經(jīng)不支持或已經(jīng)變成了方法等這樣一些情況)(1) 數(shù)學(xué)函數(shù) 數(shù)學(xué)函數(shù)包含在Math類中,使用時應(yīng)在函數(shù)名之前加上“Math”,如Math.sIN(3.14)。也可以先將Math命名框架引入到程序中,然后直接調(diào)用函數(shù)即可。引入命名空間在類模塊

19、、窗體模塊或標(biāo)準(zhǔn)模塊的在聲明部分使用Imports語句,如導(dǎo)入Math命名空間,可使用如下語句:Imports System.MathMath類中的常用函數(shù)有Abs()、Sin()、Cos()、Round()、Sqrt()、Sign()、Exp()、Log()、Max()、Min()等最好只列出是仍然函數(shù)的,對于已經(jīng)變成方法可以作一“說明”,下同。 (2) 字符處理函數(shù)字符處理函數(shù)可以直接調(diào)用,常用的字符處理函數(shù)有Ltrim()、Rtrim()、Trim()、Mid()、Left()、Len()、Ucase()、Lcase()、Space()等。2.5.3 隨機(jī)數(shù)函數(shù) 產(chǎn)生隨機(jī)數(shù)使用Rnd函數(shù)

20、,該函數(shù)的一般格式如下: 格式 Rnd(X) 功能產(chǎn)生一個01(不包括0和1)之間的單精度隨機(jī)數(shù)。當(dāng)X小于0時,總產(chǎn)生隨機(jī)數(shù),當(dāng)X等于0時,總產(chǎn)生上一次產(chǎn)生的隨機(jī)數(shù),當(dāng)X大于0時,產(chǎn)生序列中的一個隨機(jī)數(shù)。X值可以缺省,缺省時與X大于0等價。通常使用該函數(shù)之前,用Randomize初始化,然后使用不同參數(shù)的Rnd()函數(shù)。Randomize語句使隨機(jī)數(shù)生成器具有一個基本統(tǒng)計時器的種子。類似于如下表格對于函數(shù)可以通過一個表將幾類函數(shù)中的代表列出,對重要并舉例說明:函 數(shù) 名功 能類 型舉 例結(jié) 果Abs(N)Rnd(N)Sqr(N)取絕對值產(chǎn)生隨機(jī)數(shù)平方根算術(shù)函數(shù)Abs(12.34)RndSqr(

21、16)12.3401之間的任意數(shù)4Asc(C)Chr$(N)Str$(N)Val(C)轉(zhuǎn)換成ASCII值A(chǔ)SCII值轉(zhuǎn)換為字符數(shù)值轉(zhuǎn)換為字符字符轉(zhuǎn)換為數(shù)值轉(zhuǎn)換函數(shù)Asc("A")Chr(65)Str(45.90)Val("23.4a")65"A""45.9"23.4Len(C)Left$(C,n)Right$(C,n)Ltrim$(C)Rtrim$(C)Mid$(C,n1,n2)InStr(C1,C2)Ucase$(C)Lcase$(C)字符串長度取字符串左邊n個字符取字符串右邊n個字符去掉字符串左邊的空格去掉字符

22、串右邊的空格從n1位開始取n2個字符在字符串C1中查找C2將C轉(zhuǎn)換成大寫字母將C轉(zhuǎn)換成小寫字母字符串函數(shù)Len("Visual Basic")Left("Visual Basic",6)Rigth("Visual Basic",5)Ltrim(" Basic")Rtrim("Visual ")Mid("Visual Basic",9,2)InStr("Visual","a")Ucase("Visual")Lcase(

23、"Visual")12"Visual""Basic""Basic""Visual""as"5VISUALvisualDate$Time$Day(C|N)Month(C|N)Year(C|N)取系統(tǒng)日期取系統(tǒng)時間取日期值取月份值取年份值日期函數(shù)DateTimeDay("07/13/2001")Month("07/13/2001")Year("07/13/2001")當(dāng)前日期當(dāng)前時間1372001 5.2流程控制在VB.

24、NET的程序設(shè)計中,可分為順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)三種結(jié)構(gòu)。順序結(jié)構(gòu)順序結(jié)構(gòu)是一種最簡單的程序結(jié)構(gòu),各語句按排列的先后順序執(zhí)行?!景咐?-2-1】編寫一個解一元二次方程 AX2+BX+C=0的程序,其中之一A、B、C三個參數(shù)滿足條件B2-4*A*C要統(tǒng)一,不能是VB表達(dá)式與數(shù)學(xué)表達(dá)式的混合>=0。圖5-1案例5-2-1界面技能目標(biāo)1. 掌握順序結(jié)構(gòu)的程序流程。2. 掌握賦值語句、input語句和msgbox語句的使用。案例說明本案例是一個解一元二次方程 AX2+BX+C=0的程序,其中之一A、B、C三個參數(shù)滿足條件B2-4*A*C>=0。A、B、C三個參數(shù)使用input語句輸入

25、,方程的二個解通過msgbox語句輸出。相關(guān)界面見圖5-1.操作要點與步驟1、 新建一個項目2、 在窗體上建立一個命令按鈕3、 雙擊命令按鈕,進(jìn)入代碼編寫窗口4、 輸入以下代碼Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a As Integer Dim b As Integer Dim c As Integer Dim x1 As Single Dim x2 As Single a = InputBox("

26、輸入A的值:", "解一元二次方程") b = InputBox("輸入B的值:", "解一元二次方程") c = InputBox("輸入C的值:", "解一元二次方程") x1 = (-b + Math.Sqrt(b * b - 4 * a * c) / (2 * a) x2 = (-b + Math.Sqrt(b * b - 4 * a * c) / (2 * a) MsgBox("x1=" & x1 & Chr(13) & Chr(1

27、0) & "x2=" & x2) End Sub數(shù)學(xué)函數(shù)包含在Math類中,使用時應(yīng)在函數(shù)名前加上“Math”,或在程序中導(dǎo)入Math命令空間。Imports system.mathInput語句?是inputBox函數(shù)吧?知識點5-2-1Msgbox語句知識點5-2-2Input語句提供了一種和用戶交互的語句,在對話框中顯示提示信息,等待用戶輸入文本或單擊按鈕,返回包含廣西內(nèi)容的字符串該函數(shù)的內(nèi)容介紹少了。下面的MsgBox也是如此。Msgbox語句用于彈出消息對話框,并返回用戶選擇按鈕的對應(yīng)值。分支結(jié)構(gòu)在VB.NET中提供了多種形式的分支結(jié)構(gòu)語句,根據(jù)條

28、件是否為真,執(zhí)行不同的分支的語句,。它又稱為選擇結(jié)構(gòu)?!景咐?-2-2】格式編寫一個解一元二次方程 AX2+BX+C=0的程序,當(dāng)B2-4*A*C>=0時,通過msgbox語句輸出方程的解;否則,通過msgbox語句輸出“無實數(shù)解”。技能目標(biāo)1. 掌握順序結(jié)構(gòu)的程序流程。2. 掌握賦值語句、input語句和msgbox語句的使用。技能與順序結(jié)構(gòu)的重復(fù)案例說明本案例是一個解一元二次方程 AX2+BX+C=0的程序。A、B、C三個參數(shù)使用input語對嗎?句輸入,當(dāng)B2-4*A*C>=0時,方程的二個解通過msgbox語句輸出,否則,通過msgbox語句輸出“無實數(shù)解”。相關(guān)界面見圖5

29、-2。圖5-2案例5-2-2界面操作要點與步驟1、 在上例中將代碼作相應(yīng)修改2、 修改后的代碼如下:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a As Integer Dim b As Integer Dim c As Integer Dim x1 As Single Dim x2 As Single a = InputBox("輸入A的值:", "解一元二次方程") b =

30、 InputBox("輸入B的值:", "解一元二次方程") c = InputBox("輸入C的值:", "解一元二次方程") If b * b - 4 * a * c >= 0 Then x1 = (-b + Math.Sqrt(b * b - 4 * a * c) / (2 * a) x2 = (-b + Math.Sqrt(b * b - 4 * a * c) / (2 * a) MsgBox("x1=" & x1 & Chr(13) & Chr(10) &

31、amp; "x2=" & x2) Else MsgBox("無實數(shù)解!") End IfSelect Case 語句知識點5-2-2 End SubSelect Case 語句是VB.NET語言中的多分支語句,語句格式如下此處起碼有兩個知識點:一個是分支,另一個是情況選擇,而且這種講法太簡單。:Select Case <表達(dá)式>Case <表達(dá)式列表1> <語句塊1>Case <表達(dá)式列表2> <語句塊2> Case Else<語句塊n+1>循環(huán)結(jié)構(gòu)在VB.NET中提供了多種

32、形式的循環(huán)結(jié)構(gòu)語句,循環(huán)結(jié)構(gòu)是在指定的條件下多次重復(fù)執(zhí)行一組語句?!景咐?-2-3】編寫一個程序,計算1+2+(n-1)+n的值,其中n 通過input語句輸入,結(jié)果通過msgbox語句輸出。 圖5-3案例5-2-3界面技能目標(biāo)1. 掌握循環(huán)結(jié)構(gòu)的程序流程。2. for next循環(huán)語句的使用。案例說明編寫一個程序,計算1+2+(n-1)+n的值,其中n 通過input語句輸入,結(jié)果通過msgbox語句輸出。相關(guān)界面見圖5-3。操作要點與步驟1、 新建一個項目2、 在窗體上建立一個命令按鈕3、 雙擊命令按鈕,進(jìn)入代碼編寫窗口4、 輸入以下代碼Private Sub Button1_Click(

33、ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim n As Integer n = InputBox("輸入N的值:", "1+2+n") Dim s As Integer For i = 1 To n s = s + i Next MsgBox("s=" & s)其它循環(huán)語句知識點5-2-3 End Sub1、 Do WhileLoop語句首先應(yīng)該介紹For循環(huán),在講Do

34、四種循環(huán)時可以簡單,但在最后必須說明四種Do循環(huán)的區(qū)別使用Do WhileLoop語句,實現(xiàn)上例功能的代碼如下:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer Dim n As Integer n = InputBox("輸入N的值:", "1+2+n") Dim s As Integer For i = 1 To n s = s + i Next Msg

35、Box("s=" & s) End Sub2、Do UntilLoop語句使用Do UntilLoop語句,實現(xiàn)上例功能的代碼如下:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer = 1 Dim n As Integer n = InputBox("輸入N的值:", "1+2+n") Dim s As Integer Do Un

36、til i > n s = s + i i = i + 1 Loop MsgBox("s=" & s) End Sub3、DoLoop While語句使用DoLoop While語句,實現(xiàn)上例功能的代碼如下:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer = 1 Dim n As Integer n = InputBox("輸入N的值:",

37、"1+2+n") Dim s As Integer Do s = s + i i = i + 1 Loop While i<=n MsgBox("s=" & s) End Sub4、DoLoop Until語句使用DoLoop Until語句,實現(xiàn)上例功能的代碼如下:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer = 1 Dim n As I

38、nteger n = InputBox("輸入N的值:", "1+2+n") Dim s As Integer Do s = s + i i = i + 1 Loop Until i>n MsgBox("s=" & s) End Sub5.3過程此后加一段引語:說明VB.NET中的過程概述,以下還是通過案例來介紹,簡單一些。5.3.1   Sub過程設(shè)計一個比較復(fù)雜的程序,首先,按照程序中要實現(xiàn)的若干主要功能,往往將程序分解成一個個相對簡單的問題去解決。每個簡單問題通過一段程序?qū)崿F(xiàn),它們之間相對獨立,

39、這種程序稱之過程,以“Sub”保留字開始的子程序過程,沒有返回值。1、定義Sub過程通過過程定義的一般格式如下:格式Privae | Friend | Public | Protected | Protected Friend Sub 過程名(參數(shù)列表)局部變量和常量聲明 用Dim或Const聲明語句塊Exit Sub語句塊End Sub功能建立一個由“過程名”標(biāo)識的通過過程。說明(1) 缺省Private | Public時,系統(tǒng)默認(rèn)為Public;(2) 以關(guān)鍵字Private開頭的通過過程是模塊級的(私有的)過程,私有過程只能被有、同一模塊中的過程調(diào)用。以關(guān)鍵字Public開通的通過過程

40、是公有的或全局的過程,公有過程可以被應(yīng)用程序中的任一過程調(diào)用;(3)過程的命名規(guī)則與標(biāo)識符命名規(guī)則相同,在同一個模塊中,同一符號名不得既用作Sub過程名,又用作Function過程名;(4)“參數(shù)列表”中的參數(shù)稱為形式參數(shù),簡稱形參。它可以是變量名或數(shù)組名,只能是簡單變量,不能是常量、數(shù)組元素、表達(dá)式:若有多個參數(shù)時,各參數(shù)之間用逗號分隔,行參沒有具體的值。Visual Basic.NET的過程可以沒有參數(shù),但一對圓括號不可以省略。不含參數(shù)的過程稱為無參數(shù)過程。行參的一般格式如下:格式1Optional ByVal 變量名() As 數(shù)據(jù)類型格式2Optional ByRef 變量名() As

41、 數(shù)據(jù)類型格式3ByVal | ByRef Paremrray 參數(shù)數(shù)組名()As 數(shù)據(jù)類型功能 定義行參說明l ByVal:表明其后的形象是按值傳遞參數(shù)(傳值參數(shù) Passed By Value),或稱為“傳值”方式。若缺省表示ByRef。l ByRef:表明參數(shù)是按地址傳遞的(傳址參數(shù))或成“傳址”(Passed By Reference)方式。l Optional:表明該參數(shù)是一個可選參數(shù)。l 變量名():明亮名為合法的Visual Basic.NET變量名或數(shù)組名,無括號表示變量,有括號表示數(shù)組。(5)Sub 過程不能嵌套定義,但可以嵌套調(diào)用;(6)End Sub 標(biāo)志該過程的結(jié)束,系

42、統(tǒng)返回并調(diào)用該過程語句的下一條語句;(7)過程中可以用End Sub 提前結(jié)束過程,并返回到下調(diào)用該過程語句的下一條語句。2、 建立Sub過程的方法通過過程可以在窗體中建立也可以在模塊中建立。在窗體中建立通過用過程的一般步驟如下:(1) 打開代碼編輯器窗口。(2) 找到文字“Windows 窗體設(shè)計器生成的代碼”所在位置。(3) 直接在該段文字的下方輸入要建立的通用過程。通用過程還可以定義在模塊文件中,模塊文件是以.vb為擴(kuò)展名的文件。模塊代碼以Module開頭,以End Module結(jié)尾。可以將各窗口都公用的過程或函數(shù)一起放在模塊中,這樣可使程序更加清晰、易懂、便于維護(hù)。在模塊中建立通用過程

43、的一般步驟如下:(1) 選擇項目|添加模塊命令,出現(xiàn)添加新項對話框,如圖5.1所示。(2) 在添加新項多化框的模板內(nèi)選擇模塊,在名稱文本框中輸入模塊文件名,單擊打開按鈕,在代碼對話框中顯示建立的該模塊的模板,如圖5.2所示。在Module Module1下面輸入要建立的通用過程代碼。選擇文件|保存 Module1.vb命令,保存模塊文件。3、 Sub 子過程的調(diào)用Sub 子過程的調(diào)用是一條獨立的調(diào)用語句。格式Call <通用過程名> (實際參數(shù)列表)或<通用過程名> (實際參數(shù)列表)功能調(diào)用執(zhí)行“通用過程名”指定的過程。說明實際參數(shù)的個數(shù)、類型和順序,應(yīng)該與被調(diào)用過程的

44、形式參數(shù)相匹配,有多個參數(shù)時,用逗號分隔。如果通用過程無行參,“實際參數(shù)列表”可以缺省。5.3.2 Function過程在Visual B中,包含了許多內(nèi)部函數(shù)過程,如Trim(x),Asc(x),Mid(c,Start,n)等,在編寫程序時只需寫出函數(shù)過程名和相應(yīng)的參數(shù),就可以得到函數(shù)。另外,在應(yīng)用程序中,擁護(hù)還可以使用Function語句來定義自己的函數(shù)過程。函數(shù)定義的一般式如下:格式Private | Friend | Public | Protected | Protceted Friend | Function 函數(shù)過程名(參數(shù)列表) As 數(shù)據(jù)類型局部變量和常量聲明 用Dim或Co

45、nst聲明語句塊Exit Function函數(shù)過程名=表達(dá)式 | Return 表達(dá)式語句塊EndFunction功能建立一個由“函數(shù)過程名”標(biāo)識的自定義函數(shù)。說明(1) 函數(shù)過程名的命名規(guī)則與標(biāo)識符命名規(guī)則相同;憾事古過程必須由函數(shù)名返回一個值。(2) “As 數(shù)據(jù)類型”用來指定函數(shù)過程返回值的類型。缺省該懸想時,返回值類型默認(rèn)為Object類型。(3) 在函數(shù)過程提內(nèi)通過“函數(shù)過程名=表達(dá)式”給過程名賦值,所賦的值就是函數(shù)過程的返回值。也可以直接使用“Return”表達(dá)式語句來返回函數(shù)值,表達(dá)式的值就是函數(shù)過程的返回值。(4) 如果函數(shù)體內(nèi)沒有給函數(shù)名賦值,則返回對應(yīng)類型的缺省值,數(shù)值型返

46、回0,字符型返回空字符串。   5.3.3參數(shù)傳遞 在調(diào)式過程時,一般主調(diào)過程與被調(diào)過程之間有數(shù)據(jù)傳遞,即將主調(diào)過程的實參傳遞給被調(diào)過程的形象,完成實參與形參的結(jié)合,然后執(zhí)行被調(diào)過程體,這個過程稱為參數(shù)傳遞。 注意:過程調(diào)用時實際參數(shù)的個數(shù)、類型和含義與形式參數(shù)的個數(shù)、類型和含義一致。(1) 按值傳遞參數(shù) 定義形象時,形參前面加上“ByVal”表示該形象是按值傳遞的形參。傳遞過程為,首先,將實際參數(shù)(表達(dá)式)的數(shù)值進(jìn)行計算并將結(jié)果存放到對應(yīng)的形式參數(shù)存儲單元。然后,實際參數(shù)與形式參數(shù)斷開聯(lián)系。被調(diào)用過程中的操作是在形式參數(shù)自己的存儲單元中進(jìn)行,當(dāng)過程調(diào)用結(jié)束時,這些形式參數(shù)

47、所占用的存儲單元也同時被釋放。因此在過程中形式參數(shù)的任何操作不會影響到實參。 按值傳遞參數(shù)是一種單向傳遞,即實參的值能夠傳給形象,但對形參的改變卻無法影響到實參。(2) 按址傳遞參數(shù) 定義形參時,形參前面加上“ByRef”表示該形參是按址傳遞的形參。按址傳遞參數(shù)是指實際參數(shù)的地址傳給對應(yīng)的形式參數(shù)。在被調(diào)過程中對形式參數(shù)的任何操作都變成了對應(yīng)實參的操作,因此實際參數(shù)的值就會隨形式參數(shù)的改變而改變。當(dāng)參數(shù)是字符串、數(shù)值時,使用按址傳遞參數(shù)直接將實參的地址傳遞給過程,會使程序的效率提高。   5.3.4 過程的調(diào)用(嵌套與遞歸按該節(jié)的內(nèi)容可以不講了,太深了,學(xué)生理解不了,而且也

48、沒講透。)1、 過程的嵌套調(diào)用 嵌套就是一層套一層的程序結(jié)構(gòu)。比如,過程A套住過程B,過程B套住過程C,過程C套住過程D。嵌套中要強(qiáng)調(diào)的是必須完全套住,局部套住是不行的,即不允許有兩個或兩個以上的過程彼此交叉,或稱相互“跨騎”的現(xiàn)象。2、過程的遞歸調(diào)用在VB.NET語言中允許過程的遞歸調(diào)用,所謂過程的遞歸是指調(diào)用一個過程時,又出現(xiàn)了直接調(diào)用或間接調(diào)用該過程本身。5.4程序調(diào)試和異常處理隨著程序規(guī)模的越來越龐大和結(jié)構(gòu)的復(fù)雜,在程序編寫中不可避免地會產(chǎn)生一些錯誤,這些錯誤稱為缺陷。找出并排除這些錯誤的過程稱為調(diào)試。本節(jié)中將介紹錯誤的類型,常用的調(diào)試工具和在應(yīng)用研究程序中實現(xiàn)結(jié)構(gòu)化的異常處理。

49、60;  5.4.1錯誤類型程序中的錯誤通??梢苑殖?類:語法錯誤、運(yùn)行錯誤和邏輯錯誤??梢允褂貌煌姆椒ê凸ぞ邅聿檎也⑿薷拿糠N類型的錯誤。其中語法錯誤比較容易排除,也是一種低級的錯誤。運(yùn)行錯誤和邏輯錯誤需要靠經(jīng)驗、調(diào)試工具以及不斷深入地分析代碼來排除。1、 語法錯誤語法錯誤通常發(fā)生在編程人員對語言本身的熟悉度不足,例如關(guān)鍵字拼錯、標(biāo)點錯誤(如西文標(biāo)點寫成了中文標(biāo)點)或漏寫、或結(jié)構(gòu)錯誤(如If之后忘了加上Then或者For語句少了Next)等等。在應(yīng)用程序代碼中每輸入一句語句,Microsoft Visual Basic .NET都會顯示其所包含的語法錯誤(若存在語法錯誤的話),包含

50、錯誤的那部分代碼下會標(biāo)有波浪線。當(dāng)把鼠標(biāo)指針移到帶波浪的代碼上時,鼠標(biāo)指針附近就會出現(xiàn)一條簡短的錯誤描述提示,并且,運(yùn)行后在任務(wù)列表窗體中會產(chǎn)生相關(guān)的錯誤信息。見圖 5-3。 圖5-3 語法錯誤2、 運(yùn)行錯誤運(yùn)行是錯誤多數(shù)發(fā)生于不可預(yù)期的異常。比如打開硬盤上的某個文件時,該文件不存在:向硬盤上寫某個文件的時候,硬盤的空間不足;由于網(wǎng)絡(luò)阻塞得不到預(yù)期的數(shù)據(jù)等。也有可能是用戶不按正確的操作步驟而造成的錯誤,比如在做除法的時候除數(shù)為零;訪問數(shù)組的時候,超出了可訪問下標(biāo)的范圍。3、 邏輯錯誤邏輯錯誤是指程序算法的錯誤,這種錯誤程序不會發(fā)生任何程序中斷或跳出程序,而是一直執(zhí)行到最后,但是執(zhí)行結(jié)果是錯誤的

51、。由于邏輯錯誤不會產(chǎn)生錯誤的信息,所以邏輯錯誤的發(fā)現(xiàn)和排除是比較困難的。   5.4.2調(diào)試工具1、 VB.NET的工作模式VB.NET的工作模式有三種:設(shè)計模式、運(yùn)行模式和中繼模式。VB.NET啟動后,自動進(jìn)入設(shè)計模式。在設(shè)計模式下,標(biāo)題欄顯示“設(shè)計”字樣。在設(shè)計模式下,可以進(jìn)行相關(guān)的設(shè)計操作。如窗體設(shè)計、添加控件、設(shè)置對象屬性、編寫代碼等。當(dāng)程序設(shè)計完成后,執(zhí)行啟動命令,系統(tǒng)進(jìn)入運(yùn)行模式,在運(yùn)行模式下,標(biāo)題欄顯示“運(yùn)行”字樣。在運(yùn)行模式下設(shè)計人員不能修改程序代碼,但可以查閱程序代碼。當(dāng)程序處于運(yùn)行模式時,在以下情況下將進(jìn)入中斷模式:執(zhí)行“全部中斷”命令、程序運(yùn)行到斷點處

52、、程序執(zhí)行到“STOP”語句。在中斷模式下,標(biāo)題欄顯示“中斷”字樣。在中斷模式下,設(shè)計人員可以查看和修改程序代碼,同時,可以檢查或修改數(shù)據(jù)。修改完成后,可單擊“繼續(xù)”按鈕,從中斷處繼續(xù)程序的運(yùn)行。在下面加一段:說明程序調(diào)試的一般過程與方法。當(dāng)然如果能結(jié)合案例來就最好了。2、 調(diào)試工具欄單擊視圖菜單中的工具欄中的“調(diào)試”命令,在工具欄中出現(xiàn)在“調(diào)試”工具欄。見圖xx-xx。圖 5-4 “調(diào)試”工具欄從左到右各按鈕的功能分別為: 為“啟動/繼續(xù)”、“全部中斷”、“停止”、“重新啟動”、“顯示下一句”、“逐語句”、“逐過程”、“跳出”、“十六進(jìn)制顯示”和“設(shè)置斷點”。l 啟動/繼續(xù):開始執(zhí)行程序。在

53、設(shè)計模式下顯示“啟動”,在中斷模式下顯示“繼續(xù)”。l 全部中斷:強(qiáng)迫進(jìn)入中斷模式。l 停止:由運(yùn)行模式進(jìn)入設(shè)計模式。l 重新啟動:由中斷模式進(jìn)入運(yùn)行模式。l 顯示下一句:顯示程序的下一行語句。l 逐語句:在中斷模式下執(zhí)行下一行語句,如果執(zhí)行到過程,則進(jìn)入過程內(nèi)部,逐語句執(zhí)行。l 逐過程:在中斷模式下執(zhí)行下一行語句,如果執(zhí)行到過程,過程中的語句一次執(zhí)行完成。l 跳出:在中斷模式下執(zhí)行下一行語句,如果執(zhí)行到過程或函數(shù),不逐語句執(zhí)行,并跳回調(diào)用函數(shù)的代碼處。l 設(shè)置斷點:打開“斷點”窗口。3、 調(diào)試窗口當(dāng)在調(diào)試程序時采用上述逐語句、逐過程的方法,還無法解決問題時,就必須運(yùn)用并結(jié)合VB.NET中的各類

54、調(diào)試窗口進(jìn)行分析,在VB.NET中共有以下幾個調(diào)試窗口:(1)自動窗口只能在運(yùn)行模式和中斷模式下打開。用于顯示當(dāng)前代碼處的相關(guān)變量的值。見圖5-5。圖5-5 自動窗口(2)局部變量窗口只能在運(yùn)行模式和中斷模式下打開。用于顯示當(dāng)前過程中所有局部變量的的值。見圖5-6。圖5-6 局部變量窗口(3)調(diào)用堆棧窗口只能在運(yùn)行模式和中斷模式下打開。用于跟蹤多個過程調(diào)用的情況。見圖5-7。圖5-7 調(diào)用堆棧窗口(4)監(jiān)視窗口只能在運(yùn)行模式和中斷模式下打開。用于顯示指定的表達(dá)式的值。見圖5-8。圖5-8 監(jiān)視窗口(5)命令窗口要多解釋一些,這與VB6有很大的不同??梢栽诿畲翱谥?,輸入執(zhí)行函數(shù)和語句,可以查看和更改有關(guān)變量的值。見圖5-9。圖5-9 命令窗口(6)斷點窗口通過運(yùn)行“調(diào)試”菜單中的“新斷點”命令,可以設(shè)置斷點的出現(xiàn)條件,在運(yùn)行過程中,當(dāng)滿足相關(guān)條件時,程序中斷。見圖5-10。圖5-10 斷點窗口

溫馨提示

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

評論

0/150

提交評論