第3章基本知識_第1頁
第3章基本知識_第2頁
第3章基本知識_第3頁
第3章基本知識_第4頁
第3章基本知識_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

VB.NET程序設計實訓教程第3章基本知識3.1數(shù)據(jù)類型3.2運算符3.3VB中的常用內(nèi)部函數(shù)3.4VB中的三種程序結(jié)構(gòu)3.5實訓練習33.1數(shù)據(jù)類型3.1.1常量與變量1.常量:在程序執(zhí)行過程中保持不變的數(shù)據(jù)稱為常量。(1)普通常量①數(shù)值常量:即數(shù)學中的常數(shù)。例如:3.14。②字符串常量:用雙引號括起來的字符序列。③邏輯常量:只有兩個值True和False。④日期常量:用于表示某一具體的日期和時間,用符號#括起來。例如:#3jan,98#、#08/12/2005#等。(2)符號常量:用一個符號來表示一個固定不變的量。格式:Const符號常量名[As數(shù)據(jù)類型]=表達式例如:ConstPI=3.14159262.變量:程序運行過程中其值可以改變的量。(1)用類型說明語句定義變量。Public|Dim|Static|<變量名>[As<數(shù)據(jù)類型符>][,<變量名>[As<數(shù)據(jù)類型符>]…]例如:④Dim語句定義的變量,其作用范圍由Dim語句所在的位置決定。分為窗體級變量、過程級變量(局部變量)。DimaAsIntegerDimbAsLong(2)變量的隱性聲明:不聲明變量即可直接引用。OptionExplicitOff(系統(tǒng)默認OptionExplicitOn,即先聲明后引用)合并為:DimaAsInteger,bAsLong3.1.2數(shù)值型數(shù)據(jù)類型1.整型(1)整型(Integer,類型符%):在計算機內(nèi)一般用2個字節(jié)來表示整數(shù),取值范圍是-32768到+32767。例如:10,-35,56%都是整數(shù)型,而50000%則會發(fā)生溢出錯誤。(2)長整型(Long,類型符&):在計算機內(nèi)一般用4個字節(jié)來表示整數(shù),取值范圍是-2147483648到+2147483647。例如:123450,98765&都是長整型數(shù)。(3)字節(jié)型(Byte):用1個字節(jié)表示,取值范圍0到255。2.實型(1)單精度浮點數(shù)(Single,類型符!):在計算機中一般用4個字節(jié)來表示單精度浮點數(shù),取值范圍為±1.40E-45~±3.40E+38。例如:3.1415!,2.123456都是單精度浮點數(shù)。(2)雙精度浮點數(shù)(Double,類型符#):在計算機中一般用8個字節(jié)來表示雙精度浮點數(shù),其取值范圍為±4.94E-324~±1.80E+308。3.1.3字符型數(shù)據(jù)類型字符型數(shù)據(jù)(String,類型符$):用雙引號括起。例如:DimStuNameAsString3.1.4日期及邏輯型數(shù)據(jù)類型1.邏輯型:邏輯型數(shù)據(jù)(Boolean)只有兩個值:True(真)和False(假)。邏輯型數(shù)據(jù)可以轉(zhuǎn)換成數(shù)值型數(shù)據(jù),True轉(zhuǎn)為-1,F(xiàn)alse轉(zhuǎn)為0。也可以把數(shù)值型數(shù)據(jù)轉(zhuǎn)換為邏輯型數(shù)據(jù),此時,非0的數(shù)據(jù)轉(zhuǎn)換為True,0轉(zhuǎn)換為False。

2.日期型日期型數(shù)據(jù)(Date):在計算機中一般用8個字節(jié)的浮點數(shù)來表示一個日期型數(shù)據(jù)。日期的取值范圍從公元100年1月1日到9999年12月31日,時間的取值范圍從00:00:00到23:59:59??梢杂?括起來放置日期和時間。例如:#08/06/201510:25:00pm#。3.2運算符運算符含義優(yōu)先級算術表達式例子結(jié)果^乘方15^225-負號2-8-8*乘35*525/除35/31.66666666666667\整除45\31Mod取模55Mod32+加63+58-減63-5-23.2.1算術運算符3.2.2字符串連接運算符字符串運算符“+”和“&”的作用是將兩個操作數(shù)連接起來,成為一個字符串?!?”運算符是要求參與運算的兩個數(shù)據(jù)必須是字符型數(shù)據(jù)。例如,”abcd”+”efg”的結(jié)果是“abcdefg”,而”abcd”+123是錯誤的?!?”是將參與運算的兩個數(shù)據(jù)強制性地按字符串類型連接在一起,生成一個新的字符串。參與運算的兩個數(shù)據(jù)可以是字符型、數(shù)值型和可變型數(shù)據(jù)。例如,”abcd”+”123”的結(jié)果是“abcd123”,而”abcd”&123也是“abcd123”。在使用“&”時,應在變量和“&”之間加一個空格。

關系運算符含義關系表達式結(jié)果=等于3=4False>

大于3>4False>=大于等于3>=4False<

小于3<4True<=小于等于3<=4True<>或><不等于3<>4True3.2.3關系運算符關系運算的結(jié)果是邏輯型的值。當關系成立時,結(jié)果為True;當關系不成立時,結(jié)果為False。

(1)如果兩個操作數(shù)為數(shù)值型,則按其大小比較。(2)如果兩個操作數(shù)為字符型,則按字符的ASCII碼值從左到右一一比較,直到出現(xiàn)不同的字符為止。(3)關系運算符的優(yōu)先級相同。邏輯運算符含義關系表達式結(jié)果And邏輯與(當且僅當參與運算的兩個數(shù)都為True時,運算結(jié)果為True)。4>3And5<64>3And6<5TrueFalseOr邏輯或(當且僅當參與運算的兩個數(shù)都為False時,運算結(jié)果為False)。4>3Or6<54<3Or6<5TrueFalseNot邏輯非(當參與運算的數(shù)為False時,運算結(jié)果為True;當參與運算的數(shù)為True時,運算結(jié)果為False)。3>4Not3>4FalseTrueXor異或(當且僅當參與運算的兩個數(shù)的邏輯值相異時,運算結(jié)果為True)。4>3Xor6>54>3Xor5>6FalseTrue3.2.4邏輯運算符邏輯運算符是對操作數(shù)進行邏輯運算,運行的結(jié)果為邏輯型數(shù)據(jù)。當邏輯關系成立時,運算結(jié)果為True;當邏輯關系不成立時,運算結(jié)果為False。3.3VB中的常用內(nèi)部函數(shù)VB提供了大量的內(nèi)部函數(shù),并把這些內(nèi)部函數(shù)都寫成語言庫中的一個個子程序,供用戶隨時調(diào)用,同時也允許用戶自定義函數(shù)過程。這些函數(shù)都有一個或多個參數(shù),對這些參數(shù)進行特定的運算,返回一個結(jié)果值,叫函數(shù)值。函數(shù)調(diào)用的一般格式如下:<函數(shù)名>([<參數(shù)表>])其中“參數(shù)表”可以有一個參數(shù)或逗號隔開的多個參數(shù)。3.3.1數(shù)學函數(shù)數(shù)學函數(shù)包含在Math類中。用于各種算數(shù)運算。在程序中要使用某個數(shù)學函數(shù)時,要在其函數(shù)名前面加上“Math.”,或者再模塊的聲明部分使用如下語句:ImportsSystem.Math(1)取整函數(shù)Ceiling(x):求不小于x的最大整數(shù)。例如,Ceiling(5.5)的結(jié)果是6,而Ceiling(-2.8)的結(jié)果是-2。(2)四舍五入取整函數(shù)Round(x):對x進行四舍五入取整。例如,Round(5.6)的結(jié)果是6,而Round(5.4)的結(jié)果是5。(3)平方根函數(shù)Sqr(x):求x的算術平方根。x為數(shù)值型參數(shù),且x>=0。返回的函數(shù)值為一個非負數(shù)值。例如,Sqr(16)的結(jié)果為4;而Sqr(-16)將提示錯誤信息。(4)絕對值函數(shù)Abs(x):求x的絕對值。例如,Abs(-5)與Abs(5)的結(jié)果都是5。(5)符號函數(shù)Sign(x):求x的符號值。當x<0時,返回的函數(shù)值為-1;當x=0時,返回的函數(shù)值為0;當x>0時,返回的函數(shù)值為1。例如,Sign(5)結(jié)果為1;Sign(-5)結(jié)果為-1;而Sign(0)結(jié)果為0。(6)指數(shù)函數(shù)Exp(x):求e的x次方的值,x為數(shù)值型參數(shù)。例如,Exp(1)結(jié)果為。(7)以e為底的對數(shù)函數(shù)Log(x)x為數(shù)值型參數(shù),且x>0。例如:Log(2.718281)結(jié)果近似于1。(8)三角函數(shù)Sin(x)、Cos(x)、Tan(x)、Atn(x)分別用來計算x的正弦值、余弦值、正切值和反正切值。注意對于前三項來講,x代表一個弧度,而最后一項的返回值也是弧度。例如,Sin(450)應寫成Sin(450*3.14/180)。(9)求最大值函數(shù)Max(x,y)求x和y中的較大值。(10)求最小值函數(shù)Min(x,y)求x和y中的較小值。3.3.2字符型函數(shù)(1)大寫字母轉(zhuǎn)換為小寫字母函數(shù)Lcase(c):數(shù)將字符串c中的大寫字母轉(zhuǎn)換為小寫字母,其他字符不變。例如,LCase("ABcdeF")的結(jié)果為"abcdef"(2)小寫字母轉(zhuǎn)換為大寫字母函數(shù)Ucase(c):將字符串c中的小寫字母轉(zhuǎn)換為大寫字母,其他字符不變。例如,UCase("AbcdeF")的結(jié)果為"ABCDEF"。(3)求字符串長度函數(shù)Len(c):求字符串c的長度,即c中所包含的字符的個數(shù),函數(shù)返回值為整數(shù)。例如,Len("ABCDE")的結(jié)果為5(4)取左子串函數(shù)Left(c,n):返回字符串c左邊的n個字符。其中c為字符串類型的參數(shù),n為數(shù)值型參數(shù)。例如,Left("ABCDEFG",3)的結(jié)果為"ABC"(5)取右子串函數(shù)Right(c,n):返回字符串c右邊的n個字符。例如,Right("ABCDEFG",3)的結(jié)果為"EFG"(6)取子字符串函數(shù)Mid(c,n1,n2):自字符串c的第n1個字符開始向右取n2個連續(xù)的字符。其中c為字符串類型的參數(shù),n1、n2為數(shù)值型參數(shù)。當省略n2時,則得到的是從n1開始的往后所有字符。例如,Mid("ABCDEFG",3,4)的結(jié)果為"CDEF"。(7)刪除空白字符函數(shù)Ltrim(c)、Rtrim(c)、Trim(c)去掉字符串c左邊、右邊、左右邊的空格。夾在字符串中間的字符不能被去掉。例如,LTrim("└┘└┘ABCDEF└┘└┘")的結(jié)果為"ABCDEF└┘└┘";RTrim("└┘└┘ABCDEF└┘└┘")的結(jié)果為"└┘└┘ABCDEF";Trim("└┘└┘ABCDEF└┘└┘")的結(jié)果為"ABCDEF"。(8)搜索子字符串函數(shù)InStr([n1,]c1,c2[,n2])找出一個字符串在另一個字符串中最先出現(xiàn)的位置。其中n1和n2均為可選參數(shù)。n1表示開始搜索的位置(默認值為1),n2默認為0,表示區(qū)分大小寫;若n2為1,則不分大小寫。函數(shù)返回值為一整數(shù)。在字符串c1中從第n1個字符開始查找字符串c2(默認是從頭開始找)。若找到了,則返回位置值;若找不到,則返回0。例如,Instr(3,"AB12a34A56","A")的結(jié)果為8,Instr(3,"AB12a34A56","A",1)的結(jié)果為5,而Instr("AB12a34A56","A")的結(jié)果為1。(9)生成空格函數(shù)Space(n)產(chǎn)生由n個空格組成的字符串。n為數(shù)值型參數(shù),函數(shù)返回值是一個全部由空格組成的字符串。

例如,Space(3)的結(jié)果是"└┘└┘└┘"。3.3.3日期與時間函數(shù)(1)返回系統(tǒng)當前日期及時間函數(shù)Now()。Today()函數(shù)返回系統(tǒng)的當前日期。TimeOfDay()函數(shù)返回系統(tǒng)的當前時間。(2)返回年月日函數(shù)DatePart()。例如,DatePart("yyyy",Today)返回當前日期的年份。DatePart("m",Today)返回當前日期的月份。DatePart("d",Today)返回當前日期的具體哪日。(3)返回星期幾的函數(shù)WeekDay(d)。返回日期型參數(shù)d的星期號。其中星期日為1,星期一、星期二……星期六依次為2、3…7。(4)返回小時、分鐘、秒的函數(shù)Hour(t)、Minute(t)、Second(t)【例3-1】日期與時間函數(shù)舉例。在窗體上添加1個命令按鈕Button1及4個標簽控件。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimxAsDate,aAsInteger,bAsIntegerDimyy1AsInteger,mm1AsInteger,dd1,hh1,mm2,ss1x=#4/1/2016#a=DateDiff("d",Today(),x):b=Weekday(x)yy1=DatePart("yyyy",Today):mm1=DatePart("m",Today)dd1=DatePart("d",Today)hh1=Hour(Now()):mm2=Minute(Now())ss1=Second(Now())Label1.Text="現(xiàn)在距離2016年愚人節(jié)還有:"&a&"天"Label2.Text="2016年愚人節(jié)是星期"&b-1Label3.Text="今天的日期是:"&yy1&"年"&mm1&"月"&dd1&"日"Label4.Text="現(xiàn)在的時間是:"&hh1&"時"&mm2&"分"&ss1&"秒"EndSub函數(shù)名含義函數(shù)舉例CBool將參數(shù)轉(zhuǎn)換成邏輯型CBool(-8)

的結(jié)果為True,而CBool(0)的結(jié)果為FalseCChar將參數(shù)轉(zhuǎn)換成字符型CChar("adf")結(jié)果為"a"CDate將有效的日期字符串轉(zhuǎn)換成日期CDate("5/7/2016")結(jié)果為日期CInt將數(shù)字型數(shù)據(jù)的小數(shù)部分四舍五入取整CInt(56.68)結(jié)果為57CDbl將數(shù)字型數(shù)據(jù)轉(zhuǎn)換成雙精度型CDbl(4)轉(zhuǎn)換為雙精度型數(shù)據(jù)4CSng將數(shù)字型數(shù)據(jù)轉(zhuǎn)換成單精度型CDbl(4)轉(zhuǎn)換為單精度型數(shù)據(jù)4CStr將參數(shù)轉(zhuǎn)換成字符串CStr(123)轉(zhuǎn)換為"123"3.3.4轉(zhuǎn)換函數(shù)3.3.5隨機函數(shù)Rnd(n)隨機產(chǎn)生一個在區(qū)間(0,1)內(nèi)的浮點數(shù)。要先使用語句Randomize()初始化隨機數(shù)發(fā)生器,當n>0時,每次產(chǎn)生的隨機數(shù)都不同;當n=0時,每次產(chǎn)生的隨機數(shù)都與上次的相同;當n<0時,每次產(chǎn)生的隨機數(shù)都相同?!纠?-2】在窗體上添加1個命令按鈕和4個標簽控件。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickRandomize()Label1.Text=Rnd(3)Label2.Text=Rnd(0)Label3.Text=Rnd(3)Label4.Text=Rnd(0)EndSub幾個產(chǎn)生隨機整數(shù)的技巧。CInt(Rnd*n):產(chǎn)生0,1,…,n-1中的一個隨機整數(shù)。CInt(Rnd*n)+1:產(chǎn)生1,…,n中的一個隨機整數(shù)。CInt(Rnd*(n-m+1)+m產(chǎn)生一個在區(qū)間[m,n]內(nèi)的隨機整數(shù)?!纠?-3】小學生加法運算題。在窗體上添加3個文本框和2個命令按鈕,當單擊“出題”時,分別在TextBox1和TextBox2中生成兩個介于10和20之間的隨機整數(shù)。當單擊“求和”時,在TextBox3中顯示兩個整數(shù)之和。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickRandomize()TextBox1.Text=10+Int(Rnd(3)*11)TextBox2.Text=10+Int(Rnd(3)*11)EndSubPrivateSubButton2_Click(senderAsObject,eAsEventArgs)HandlesButton2.ClickTextBox3.Text=Val(TextBox1.Text)+Val(TextBox2.Text)EndSub3.4

VB中的3種程序結(jié)構(gòu)3.4.1順序結(jié)構(gòu)1.賦值語句格式1:<變量名>=<表達式>格式2:[<對象名>.]<屬性名>=<表達式>例如:a=10'把10賦給ab=a*5'計算a*5的值,得50,把50賦給bch$="Hello" '把“Hello”賦給ch$Button1.Text="確定"'把“確定”賦給Button1的Text屬性【例3-4】給出矩形的長和寬,單擊命令按鈕時在文本框中顯示矩形的面積。

PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.Clicka=15b=25TextBox1.Text=a*bEndSub2.使用輸入框(InputBox函數(shù))輸入數(shù)據(jù)賦值語句具有一定的局限性。VB另外提供了一種輸入數(shù)據(jù)的方法,可以在程序運行時為變量賦值。格式:InputBox(<提示信息>[,<對話框標題>][,<默認值>][,<X坐標>][,<Y坐標>])產(chǎn)生一個對話框,等待用戶輸入并返回所輸入的內(nèi)容。(1)<提示信息>:是一個字符串表達式。如果要顯示多行信息,可用回車換行符的組合Chr(13)&Chr(10)來分隔。(2)<對話框標題>:顯示在標題欄中作為對話框的標題。(3)<默認值>:字符串表達式。缺省為空。(4)<X坐標>:對話框左邊與屏幕左邊的距離。(5)<Y坐標>:對話框上邊與屏幕上邊的垂直距離。如果省略,屏幕垂直方向距下邊1/3的位置顯示。(6)該函數(shù)的返回值默認為字符串類型?!纠?-5】用InputBox給出矩形的長和寬,單擊命令按鈕時在文本框中顯示矩形的面積。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimaAsInteger,bAsIntegera=InputBox("請輸入長度","計算面積",10)b=InputBox("請輸入寬度","計算面積",20)TextBox1.Text=a*bEndSub運行后單擊命令按鈕會出現(xiàn)兩次InputBox對話框,分別輸入10和20。3.用消息框(MsgBox)輸出數(shù)據(jù)消息框可以向用戶傳送信息,并可以通過用戶在對話框上的選擇識別用戶所作的響應,作為程序繼續(xù)執(zhí)行的依據(jù)。(1)MsgBox函數(shù)格式:MsgBox(<提示信息>[,<按鈕類型>][,<對話框標題>])①<提示信息>:字符串表達式,該字符串的內(nèi)容將在對話框上顯示,作為系統(tǒng)提示信息。②<按鈕類型>:數(shù)值型數(shù)據(jù),可選項。用來指定對話框中出現(xiàn)的按鈕和圖標的種類及數(shù)量?!鞍粹o數(shù)值”是3個數(shù)值之和,這3個數(shù)值分別代表按鈕的數(shù)目和類型、使用的圖標樣式以及默認按鈕的位置。不同的組合會得到不同的結(jié)果。③<對話框標題>:顯示在對話框的標題欄。分類按鈕值系統(tǒng)符號常量含義

按鈕類型

0VbOKOnly只顯示“確定”按鈕1VbOKCancel顯示“確定”和“取消”按鈕2VbAbortRetrylgnore顯示“終止”、“重試”和“忽略”按鈕3VbYesNoCancel顯示“是”、“否”和“取消”按鈕4VbYesNo顯示“是”和“否”按鈕5VbRetryCancel顯示“重試”和“取消”按鈕

圖標類型

16VbCritical顯示CriticalMessage圖標x32VbQuestion顯示W(wǎng)arningQuery圖標?48VbExclamation顯示W(wǎng)arningMessage圖標!64VbInformation顯示InformationMessage圖標i

默認按鈕0VbDefaultButton1第1個按鈕是默認值256VbDefaultButton2第2個按鈕是默認值512VbDefaultButton3第3個按鈕是默認值768VbDefaultButton4第4個按鈕是默認值④MsgBox函數(shù)的返回值是一個整數(shù),這個整數(shù)與所選擇的命令按鈕有關,可以通過返回的這個整數(shù)的數(shù)值確定用戶在對話框中單擊的是哪個按鈕,即用戶在對話框中作出了什么響應。其返回值如下表所示。系統(tǒng)符號常量返回值按下的按鈕VbOK1確定VbCancel2取消VbAbort3終止VbRetry4重試Vblgnore5忽略VbYes6是VbNo7否例如,下面語句使用MsgBox函數(shù)彈出的消息框顯示“確定”、“重試”、“忽略”按鈕,設第2個按鈕是默認按鈕。a=MsgBox("提示信息",2+256,"標題內(nèi)容")下面語句使用MsgBox函數(shù)彈出的消息框顯示警告圖標。如圖3-6中的右圖所示。a=MsgBox("提示信息",48,"標題內(nèi)容")(2)MsgBox語句MsgBox函數(shù)也可以寫成語句形式。格式:MsgBox<提示信息>[,<按鈕類型>][,<對話框標題>]MsgBox語句和MsgBox函數(shù)實現(xiàn)的功能相同,只是沒有返回值,因而通常用于較簡單的信息輸出。例如:MsgBox"添加成功",vbInformation,"數(shù)據(jù)維護"4.注釋、暫停與程序結(jié)束語句(1)注釋語句為了提高程序的可讀性,可以在程序的適當位置加上必要的注釋,對語句的功能加以解釋。格式:'<注釋內(nèi)容>或REM<注釋內(nèi)容>(2)暫停語句暫停語句用來暫停程序的執(zhí)行。格式:STOP(3)結(jié)束語句結(jié)束語句用來結(jié)束程序的執(zhí)行。格式:End3.4.2分支結(jié)構(gòu)1.行If語句格式:If<條件表達式>Then<語句組1>[Else<語句組2>]當條件成立(為True)時,執(zhí)行語句組1;條件不成立(為False)時,執(zhí)行語句組2。(1)<條件表達式>是一個有邏輯值的表達式,其返回結(jié)果必須是True或False。(2)<語句組1>、<語句組2>可以有多條語句,各語句之間用冒號隔開。例如:Ifx>0Thena=b:b=a+bElsea=b:b=a-b(3)Else及其后面的部分是可選項。例如:Ifx>0Thent=x:x=y:y=t【例3-6】輸入一個百分制的成績,當成績大于60時顯示“及格”,否則顯示“不及格”。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimaAsIntegera=InputBox("請輸入成績")Ifa>=60ThenTextBox1.Text=“及格”Else_

TextBox1.Text="不及格"EndSub單行結(jié)構(gòu)條件語句應作為一條語句書寫。如果語句太長需要換行,必須在折行處使用續(xù)行符號,即空格加下劃線。2.塊If語句(If...Then語句)格式:If<條件表達式>Then[<語句組1>][Else[<語句組2>]]EndIf如果條件成立,則執(zhí)行Then后面的語句組1;如果條件不成立,則執(zhí)行Else后面的語句組2。使用該語句時,應該注意以下問題。①整個塊結(jié)構(gòu)必須以If開始,以EndIf結(jié)束。②塊If語句中Then后面的語句不能與其寫在同一行上,否則必須加上分隔符。③塊結(jié)構(gòu)中的<語句組2>可以省略?!纠?-7】火車站行李費的收費標準是40kg以內(nèi)(包括40kg)0.50元/kg,超過部分為0.80元/kg。編寫程序,根據(jù)輸入的任意重量,計算出應付的行李費。PrivateSubForm1_Click(senderAsObject,eAsEventArgs)HandlesMe.ClickDimweightAsSingle,payAsSingleweight=InputBox("請輸入行李重量","輸入框")Ifweight>40Thenpay=(weight-40)*0.8+40*0.5Elsepay=weight*0.5EndIfTextBox1.Text="行李重量="&weightTextBox2.Text="所付費用="&payEndSub3.塊if語句的嵌套嵌套,即在上述結(jié)構(gòu)中的<語句組1>和<語句組2>部分仍然可以包含另外一個塊If語句。

(1)如果存在嵌套時,語句中的每一個Else必須和一個If相對應,應避免產(chǎn)生混亂。(2)每一個塊結(jié)構(gòu)都必須以If開始,以EndIf結(jié)束。(3)內(nèi)層嵌套的塊結(jié)構(gòu)中除了滿足該層規(guī)定的條件外,還必須首先滿足外層結(jié)構(gòu)中相應位置的條件。(4)VB中對塊嵌套的層數(shù)沒有限制,在嵌套的塊結(jié)構(gòu)中仍然可以繼續(xù)嵌套其他的塊結(jié)構(gòu),但嵌套時外層的塊結(jié)構(gòu)必須完全“包住”內(nèi)層的塊結(jié)構(gòu),不能相互交叉?!纠?-8】輸入系數(shù)a,b和c,求二次方程ax2+bx+c=0的實根。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimaAsInteger,bAsInteger,cAsIntegerDimdAsSingle,x1AsSingle,x2AsSingle,xAsSinglea=InputBox("請輸入系數(shù)a:"):b=InputBox("請輸入系數(shù)b:")c=InputBox("請輸入系數(shù)c:"):d=b*b-4*a*cIfd>0Thenx1=(-b+Math.Sqrt(d))/(2*a):x2=(-b-Math.Sqrt(d))/(2*a)Label1.Text="x1="&x1:Label2.Text="x2="&x2ElseIfd=0Thenx=-b/(2*a)MsgBox("此方程有兩個相等實根"&x)ElseMsgBox("此方程無實根")EndIfEndIfEndSub4.ElseIf子句If<條件表達式1>Then語句組1ElseIf<條件表達式2>Then語句組2……[Else語句組n+1]EndIf【例3-9】向文本框中輸入一個學生的成績,根據(jù)其所在分數(shù)段給出該生的考試等級。分數(shù)段劃分規(guī)則是:90<score<=100為“優(yōu)秀”,80<score<=90為“良好”,70<score<=80為“中等”,60<=score<=70為“及格”,score<60為“不及格”,score>100為“輸入錯誤”。依次判斷條件表達式的值,如某一條件成立,則執(zhí)行其下面的語句組;如果所有條件均不成立,則執(zhí)行Else后面的語句組。在相應語句組執(zhí)行完后,會跳過EndIf,執(zhí)行其后面的語句。PrivateSubForm1_Click(senderAsObject,eAsEventArgs)HandlesMe.ClickDimscoreAsSinglescore=TextBox1.TextIfscore<60ThenLabel1.Text="不及格"ElseIfscore<=70ThenLabel1.Text="及格"ElseIfscore<=80ThenLabel1.Text="中等"ElseIfscore<=90ThenLabel1.Text="良好"ElseIfscore<=100ThenLabel1.Text="優(yōu)秀"ElseLabel1.Text="輸入錯誤"EndIfEndSub5.SelectCase語句格式:SelectCase<測試表達式>[Case<表達式列表1>[<語句組1>]][Case<表達式列表3>[<語句組2>]]…[Case<表達式列表n>[<語句組n>]][CaseElse[<語句組n+1>]]EndSelect該語句根據(jù)“測試表達式”的值,選擇第一個符合條件的語句組執(zhí)行。先求“測試表達式”的值,然后順序測試該值符合哪一個Case子句中情況。如果找到了,則執(zhí)行該Case子句下面的語句組,然后執(zhí)行EndSelect下面的語句;如果沒找到,則執(zhí)行CaseElse下面的語句組,然后執(zhí)行EndSelect下面的語句。(1)“測試表達式”可以是數(shù)值表達式或字符串表達式。(2)“表達式列表”與“測試表達式”的類型必需相同。(3)“表達式列表”形式有以下3種。①一個表達式或用逗號隔開的若干表達式。例如:Case1,3,5'表示條件在1,3,5范圍內(nèi)取值

②表達式1To表達式2。例如:Case60To80'表示條件取值范圍為60~80③Is關系運算符表達式。例如:CaseIs<5'表示條件在小于5范圍取值【例3-10】用SelectCase語句完成例3-9。

PrivateSubForm1_Click(senderAsObject,eAsEventArgs)HandlesMe.ClickDimscoreAsSinglescore=TextBox1.TextSelectCasescoreCaseIs<60Label1.Text="不及格"CaseIs<=70Label1.Text="及格"CaseIs<=80Label1.Text="中等"CaseIs<=90Label1.Text="良好"CaseIs<=100Label1.Text="優(yōu)秀"CaseElseLabel1.Text="輸入錯誤"EndSelectEndSub3.4.3循環(huán)結(jié)構(gòu)1.For循環(huán)格式:For<循環(huán)變量>=<初值>To<終值>[Step<步長>][<循環(huán)體>]Next[<循環(huán)變量>](1)對格式的說明如下。①<循環(huán)變量>亦稱為循環(huán)控制變量,必須為數(shù)值型。②<初值>和<終值>都是數(shù)值型,可以是數(shù)值表達式。若為實數(shù),則自動取整。③<步長>是循環(huán)變量的增量,是一個數(shù)值表達式。步長不能是0。如果步長是1,Step1可略去不寫。④<循環(huán)體>是在For和Next之間的一條或多條語句。<循環(huán)體>中可以包含ExitFor語句,用于退出循環(huán)。⑤Next后面的<循環(huán)變量>與For語句中的<循環(huán)變量>必須相同。(2)For循環(huán)的執(zhí)行過程如下。①系統(tǒng)將初值賦給循環(huán)變量,并自動記下終值和步長。②判斷循環(huán)變量是否超過終值。未超過終值,則執(zhí)行一次循環(huán)體;否則,轉(zhuǎn)到⑤。③執(zhí)行Next語句,將循環(huán)變量加上一個步長。④轉(zhuǎn)到②,繼續(xù)執(zhí)行。⑤結(jié)束循環(huán),執(zhí)行Next后面的語句。

【例3-11】求n!(即n!=1×2×3×…×N)PrivateSubForm1_Click(senderAsObject,eAsEventArgs)HandlesMe.ClickDimI%,f&,n%n=InputBox("輸入一個自然數(shù):","輸入提示","10")f=1ForI=1Tonf=f*INextILabel1.Text=n&"!="&fEndSub2.While循環(huán)對于只知道控制條件,但不能預先確定需要執(zhí)行多少次循環(huán)體的情況,可以使用While循環(huán)。格式:While<條件表達式>[<循環(huán)體>]Wend當條件成立(為真)時,執(zhí)行循環(huán)體;當條件不成立(為假)時,終止循環(huán)。While循環(huán)結(jié)構(gòu)的循環(huán)體中應含有對“條件”的修改操作,使循環(huán)體能正常結(jié)束。否則,若條件永遠成立,則循環(huán)體將被無限地執(zhí)行下去,不能結(jié)束,就形成了“死循環(huán)”。若初始條件不成立,則循環(huán)體一次也不執(zhí)行?!纠?-12】編寫程序,找到一個正整數(shù)N,要求N的階乘最接近1000但又不大于1000。PrivateSubForm1_Click(senderAsObject,eAsEventArgs)HandlesMe.ClickDimn%,f%n=0f=1Whilef<1000n=n+1f=f*nEndWhilen=n-1

'求此數(shù)的前一個數(shù)Label1.Text="N="&n'顯示要找的正整數(shù)NEndSub3.Do循環(huán)Do循環(huán)有兩種語句格式。(1)語法格式1:Do{While|Until}<條件表達式>[<循環(huán)體>]Loop①DoWhile-Loop語句的功能是當條件成立時,執(zhí)行循環(huán)體;當條件不成立時,終止循環(huán)。②DoUntil-Loop句的功能是當條件不成立時,執(zhí)行循環(huán)體,直到條件成立時,終止循環(huán)。(2)語法格式2:

Do[<循環(huán)體>]Loop{While|Until}<條件表達式>格式2與格式1的區(qū)別是:先執(zhí)行循環(huán)體,然后判斷條件。(3)循環(huán)體中可包含ExitDo語句,用來強行退出循環(huán)體?!纠?-14】給出兩個正整數(shù)M和N,求他們的最大公約數(shù)和最小公倍數(shù)。PrivateSubForm1_Click(senderAsObject,eAsEventArgs)HandlesMe.ClickDimAAsInteger,BAsInteger,NAsInteger,MAsInteger,RAsInteger,TAsIntegerM=InputBox("請輸入第一個正整數(shù)M","")N=InputBox("請輸入第二個正整數(shù)N","")A=M:B=NIfM<NThen'使M中存放較大的數(shù),N中存放較小的數(shù)T=M:M=N:N=TEndIfR=MModNDoWhileR<>0M=N:N=R:R=MModNLoopLabel1.Text="最大公約數(shù)為:"&NLabel2.Text="最小公倍數(shù)為:"&A*B/NEndSub4.循環(huán)的嵌套在

溫馨提示

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

評論

0/150

提交評論