版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章VisualBasic.NET語(yǔ)言基礎(chǔ)
3.1基本數(shù)據(jù)類型3.2數(shù)據(jù)的運(yùn)算3.3VB.NET語(yǔ)句的結(jié)構(gòu)3.4函數(shù)及其應(yīng)用3.5數(shù)組3.6面向過(guò)程VisualBasic.NET程序3.7應(yīng)用舉例——數(shù)制轉(zhuǎn)換器3.1基本數(shù)據(jù)類型表3.1列出了所有的基本數(shù)據(jù)類型。3.1.1數(shù)值數(shù)據(jù)類型1.字節(jié)型(Byte)字節(jié)型是無(wú)符號(hào)整型數(shù)據(jù)類型,用1字節(jié)(8位)來(lái)存儲(chǔ)數(shù)值,可存儲(chǔ)0~255(=28-1)范圍內(nèi)的整數(shù)。例如,下面的語(yǔ)句將128賦值給bytMyByte變量:DimbytMyByteAsBytebytMyByte=1282.短整型(Short)短整型是整型數(shù)據(jù)類型,用2字節(jié)(16位)來(lái)存儲(chǔ)帶符號(hào)整數(shù),其可表示的整數(shù)范圍是-32768~+32767,即-215~+215-1。例如,下面的語(yǔ)句將-20128賦值給shoMyShort變量:DimshoMyShortAsShortshoMyShort=-201283.1.1數(shù)值數(shù)據(jù)類型3.整型(Integer)整型也用于存儲(chǔ)帶符號(hào)整數(shù),它用4字節(jié)(32位)來(lái)存儲(chǔ)數(shù)值,其可表示的整數(shù)范圍是-2147483648~+2147483647,即-231~+231-1。例如,下面的語(yǔ)句將200012賦值給intMyInteger變量:DimintMyIntegerAsIntegerintMyInteger=2000124.長(zhǎng)整型(Long)長(zhǎng)整型以8字節(jié)(64位)來(lái)存儲(chǔ)帶符號(hào)整數(shù),其可表示的整數(shù)范圍是-9223372036854775808~+9223372036854775807,即-263~+263-1。例如,下面的語(yǔ)句將200012012812賦值給lngMyLong變量:DimlngMyLongAsLonglngMyLong=2000120128123.1.1數(shù)值數(shù)據(jù)類型5.小數(shù)型(Decimal)小數(shù)型是非整型數(shù)據(jù)類型,用來(lái)存儲(chǔ)小數(shù),它以16字節(jié)來(lái)存儲(chǔ)數(shù)值。當(dāng)小數(shù)位為0時(shí),最大可能值為+/-79228162514264337593543950335。對(duì)于28位小數(shù),最大支持?jǐn)?shù)非常小,為+/-7.9228162514264337593543950335,而最小的非0值為+/-0.0000000000000000000000000001(28位小數(shù))。例如,下面的語(yǔ)句將0.00012賦值給decMyDecimal變量:DimdecMyDecimalAsDecimaldecMyDecimal=0.00012
3.1.1數(shù)值數(shù)據(jù)類型6.單精度浮點(diǎn)型(Single)單精度浮點(diǎn)型用來(lái)存儲(chǔ)單精度浮點(diǎn)數(shù),它用以4字節(jié)來(lái)存儲(chǔ)數(shù)值,其中符號(hào)占1位,指數(shù)占8位,其余23位表示尾數(shù)。單精度浮點(diǎn)型比小數(shù)型支持的有效位少,且可能導(dǎo)致四舍五入的誤差,但它可以表示的數(shù)的范圍比小數(shù)型要大。單精度浮點(diǎn)數(shù)可以精確到7位十進(jìn)制數(shù),其負(fù)數(shù)的取值范圍為-3.402823E+38~-1.401298E-45,正數(shù)的取值范圍為1.401298E-45~3.402823E+38。例如,下面的語(yǔ)句將-1.4E06賦值給sngMySingle變量:DimsngMySingleAsSinglesngMySingle=-1.4E063.1.1數(shù)值數(shù)據(jù)類型7.雙精度浮點(diǎn)型(Double)雙精度浮點(diǎn)型用來(lái)存儲(chǔ)雙精度浮點(diǎn)數(shù),它用8字節(jié)(64位)來(lái)存儲(chǔ)數(shù)值,其中符號(hào)占1位,指數(shù)占11位,其余52位表示尾數(shù)。雙精度浮點(diǎn)數(shù)比單精度浮點(diǎn)數(shù)支持更大的數(shù)據(jù)范圍,它可以精確到15或16位十進(jìn)制數(shù),其負(fù)數(shù)的取值范圍為-1.79769313486232E+308~-4.94065645841247E-324,正數(shù)的取值范圍為4.94065645841247E-324~1.79769313486232E+
308。例如,下面的語(yǔ)句將1.4000123E106賦值給dblMyDouble變量:DimdblMyDoubleAsDoubledblMyDouble=1.4000123E1063.1.2字符數(shù)據(jù)類型1.字符型(Char)一般來(lái)說(shuō),Char數(shù)據(jù)類型用于存儲(chǔ)單個(gè)字符,如下面的語(yǔ)句將字符“A”賦值給chrMyChar變量:DimchrMyCharAsCharchrMyChar="A"2.字符串型(String)String類型的字符串放在一對(duì)西文雙引號(hào)內(nèi),其中長(zhǎng)度為0的字符串(不含任何字符)稱為空字符串。例如,下面的一組語(yǔ)句將“張三”賦值給strMyName變量,為strMyStr變量賦值為空字符串,將“2.0”賦值給strMyNumStr變量:DimstrMyNameAsStringDimstrMyStrAsStringDimstrMyNumStrAsStringstrMyName="張三"strMyStr=""strMyNumStr="2.0"3.1.3其他數(shù)據(jù)類型1.布爾型(Boolean)布爾型變量用2字節(jié)(16位)的數(shù)值形式存儲(chǔ)邏輯值,其值只能是True或False。在VisualBasic.NET中,如果將這兩個(gè)邏輯值轉(zhuǎn)換成數(shù)值類型,對(duì)應(yīng)的值分別為-1和0。當(dāng)將數(shù)值類型轉(zhuǎn)換為布爾值時(shí),0轉(zhuǎn)換為False,其他值則轉(zhuǎn)換為True。布爾變量的值可用于記錄布爾型變量的狀態(tài),一個(gè)布爾型變量的狀態(tài)不是True就是False。當(dāng)用戶要完成某一任務(wù)(如打開(kāi)一個(gè)窗口)時(shí),可將變量設(shè)置成布爾型,并通過(guò)變量的值確定執(zhí)行哪個(gè)操作。3.1.3其他數(shù)據(jù)類型例如,下面的代碼根據(jù)布爾型變量blnMyBoolean的值確定執(zhí)行A操作或B操作:DimblnMyBooleanAsBooleanblnMyBoolean=FalseIfblnMyBoolean=FalseThen '執(zhí)行A操作Else '執(zhí)行B操作EndIf3.1.3其他數(shù)據(jù)類型2.日期型(Date)日期型變量用8字節(jié)(64位)的整數(shù)值形式存儲(chǔ)。VB.NET把對(duì)Date類型的處理與數(shù)值類型區(qū)分開(kāi)來(lái)。Date類型必須以mm/dd/yyyy(月/日/年)的格式定義,如12/22/2012。文字串必須以一對(duì)“#”括起來(lái),如#12/22/2012#,該類型可表示的日期范圍從公元1年1月1日到公元9999年12月31日。例如,可以按以下方式定義存儲(chǔ)日期變量:DimdatMyDate1AsDatedatMyDate1=#12/22/2012#3.1.3其他數(shù)據(jù)類型Date數(shù)據(jù)類型也用于存儲(chǔ)時(shí)間信息,所存儲(chǔ)的時(shí)間范圍可以是00:00:00到23:59:59之間的任意值,時(shí)間數(shù)據(jù)必須以hh:mm:ss(小時(shí):分鐘:秒)格式定義,如16:20:09。例如,可以按以下方式定義時(shí)間變量:DimdatMyDate2AsDatedatMyDate2=#16:20:09#
Date數(shù)據(jù)類型也可同時(shí)存儲(chǔ)日期和時(shí)間信息,數(shù)據(jù)必須以“mm/dd/yyyyhh:mm:ss”(月/日/年小時(shí):分鐘:秒)格式定義。例如,可以按以下方式定義日期時(shí)間變量:DimdatMyDate3AsDatedatMyDate3=#12/6/200410:30:05#3.1.3其他數(shù)據(jù)類型3.對(duì)象型(Object)對(duì)象型變量用4字節(jié)(32位)地址形式存儲(chǔ),該地址為對(duì)象引用??梢詾槁暶魇荗bject類型的變量分配任何引用類型(字符串、數(shù)組、類或接口),Object變量也可引用其他任何數(shù)據(jù)類型的數(shù)據(jù)(數(shù)值型、布爾型、字符型、日期型、結(jié)構(gòu)型或枚舉型)。3.2數(shù)據(jù)的運(yùn)算3.2.1常量和變量1.常量在VB.NET中常量分為一般常量和符號(hào)常量。(1)一般常量一般常量包括:數(shù)值常量、字符常量、邏輯常量和日期常量。先來(lái)看幾個(gè)一般常量的實(shí)例:數(shù)值常量(由正/負(fù)號(hào)、數(shù)字和小數(shù)點(diǎn)組成):123,-265,-75.32。字符常量(用雙引號(hào)括起來(lái)):"abC","李明","你好!"。邏輯常量(只有兩個(gè)):True(真),F(xiàn)alse(假)。日期常量(用“#”括起來(lái)):#23/8/2003#,#January1,1999#。數(shù)值整數(shù)大多數(shù)都是十進(jìn)制數(shù)(基數(shù)為10),但有時(shí)也用十六進(jìn)制數(shù)(基數(shù)為16)或八進(jìn)制數(shù)(基數(shù)為8)表示。3.2.1常量和變量各種數(shù)值整數(shù)表示的實(shí)例如下:十進(jìn)制數(shù):如123,-456,0。八進(jìn)制數(shù):用前綴&O表示,如&O123。十六進(jìn)制數(shù):用前綴&H表示,如&H123。表3.2為十進(jìn)制、八進(jìn)制和十六進(jìn)制整數(shù)的5個(gè)實(shí)例的對(duì)應(yīng)關(guān)系表。浮點(diǎn)數(shù):用尾數(shù)、指數(shù)符號(hào)、指數(shù)來(lái)表示,用指數(shù)符號(hào)E表示單精度浮點(diǎn)數(shù),用D表示雙精度浮點(diǎn)數(shù)。3.2.1常量和變量例如,123.45E-3表示單精度浮點(diǎn)數(shù),它的值為123.45×10-3;236D5表示雙精度浮點(diǎn)數(shù),它的值為236×105。VB.NET根據(jù)輸入常量的形式來(lái)決定使用什么數(shù)據(jù)類型來(lái)保存它。在默認(rèn)情況下,把整數(shù)常量作為Integer類型處理,把小數(shù)常量作為Double類型處理。例如,根據(jù)輸入值的形式來(lái)決定數(shù)據(jù)類型:Var1=30 '
此值為Integer類型Var2=18.4 '
此值為Double類型Var3=True '
此值為Boolean類型3.2.1常量和變量顯式地指定常量的類型,可以用VB.NET提供的值類型字符,方法是在值的后面加上類型字符。表3.3列出了值類型字符及用法示例。3.2.1常量和變量(2)符號(hào)常量在VB.NET中,可以用定義的符號(hào)常量來(lái)代替數(shù)值或字符串。定義符號(hào)常量的語(yǔ)法格式如下:[Public|Private]Const常量名[As類型]=表達(dá)式[,常量名[As類型]=表達(dá)式]…例如,下面兩條語(yǔ)句分別定義了一個(gè)字符串常量和一個(gè)整型常量:PublicConstMyVar1AsString="hello" '定義字符串常量PrivateConstMyVar2AsInteger=18 '定義整型常量也可以在一條語(yǔ)句中定義兩個(gè)以上的符號(hào)常量,例如:PublicConstMyVar3AsInteger=18,ConstMyVar4AsDouble=MyVar3+13.2除了使用“As類型”子句來(lái)指定常量類型外,還可以用值類型字符(見(jiàn)表3.3)或類型說(shuō)明符(見(jiàn)表3.6)來(lái)指定常量類型,例如:PublicConstPAI@=3.1415926 '定義小數(shù)常量ConstNIAN=365L '定義整數(shù)常量3.2.1常量和變量2.變量(1)變量命名變量名表示變量所存儲(chǔ)的數(shù)據(jù)的一個(gè)名稱,通過(guò)名稱來(lái)引用變量數(shù)據(jù)的值。給變量命名必須遵循下列規(guī)則:①變量名必須以英文字母開(kāi)頭,不能以數(shù)字或其他字符開(kāi)頭。例如,6ABC、$ABC都是不合法的。但最后一個(gè)字符可以是類型聲明字符(%、$、@、#、&、!)。②變量名只能由字母、數(shù)字或下劃線(_)組成,不能包含句號(hào)(。)或空格。例如,ab.、a%b、Howareyou、A$B等都是不合法的。③變量名最長(zhǎng)不能超過(guò)255個(gè)字符。④變量名不能和VB.NET的關(guān)鍵字同名。例如,Or、If、Loop、Len、Abs、Mod等都是關(guān)鍵字,不能作為變量名。3.2.1常量和變量(2)命名約定命名約定不是強(qiáng)制性的,通常取決于程序員的命名習(xí)慣。目前最常用的命名約定是匈牙利標(biāo)記法(HungarianNotation),它用變量名的前三個(gè)小寫字母表示數(shù)據(jù)類型,第4個(gè)字母大寫,表示從這開(kāi)始是變量的具有實(shí)際意義的名字。表3.4列出了本書建議的變量命名約定。3.2.1常量和變量(3)變量聲明①顯式聲明顯式聲明是在變量使用之前,用Dim、Public、Private、Static、Protected、FriendProtected、Friend、Shared等關(guān)鍵字聲明變量。其中Dim是最常用的聲明變量語(yǔ)句,它可以聲明一個(gè)或多個(gè)變量。Dim語(yǔ)句的語(yǔ)法格式如下:Dim變量名As數(shù)據(jù)類型Dim變量名1As數(shù)據(jù)類型1,變量名2As數(shù)據(jù)類型2…例如,下面兩行語(yǔ)句,分別聲明了一個(gè)String變量strSomeString和一個(gè)Date變量datSomeDate:DimstrSomeStringAsStringDimdatSomeDateAsDate3.2.1常量和變量在一個(gè)語(yǔ)句中也可以聲明多個(gè)變量,而且類型可以不同。若變量是相同類型的,只需使用一個(gè)As子句。例如,下面兩行語(yǔ)句中,第一行一次聲明多個(gè)不同類型的變量,第二行則一次聲明了多個(gè)同類(Char類型)的變量:DimstrXAsString,datYAsDate,intZAsIntegerDimchrA,chrB,chrCAsChar變量允許具有初始值,可以在聲明變量的同時(shí)對(duì)它初始化。例如,在下面代碼中,聲明了一個(gè)Integer變量、一個(gè)Boolean變量和一個(gè)Object變量,并分別將它們初始化為80、True以及新創(chuàng)建的Label類實(shí)例:DimintScoreAsInteger=80PrivateblnSexAsBoolean=TrueProtectedobjLabelAsNewLabel3.2.1常量和變量如果在聲明時(shí)沒(méi)有指定變量的初始值,VB.NET將把它們初始化為相應(yīng)數(shù)據(jù)類型的默認(rèn)值。各種數(shù)據(jù)類型的默認(rèn)初始值見(jiàn)表3.5。3.2.1常量和變量②隱式聲明隱式聲明是在使用一個(gè)變量之前不需要聲明這個(gè)變量,而是用一個(gè)特殊的類型說(shuō)明符加在變量名后面來(lái)說(shuō)明其數(shù)據(jù)類型,表3.6給出了數(shù)據(jù)類型與類型說(shuō)明符的對(duì)應(yīng)關(guān)系。3.2.1常量和變量在VB.NET中,通過(guò)OptionExplicit語(yǔ)句控制編譯器的行為方式,以便根據(jù)不同的要求設(shè)置相應(yīng)的默認(rèn)操作。OptionExplicit語(yǔ)句的語(yǔ)法格式如下:OptionExplicit[On|Off]若選用參數(shù)On,則要求每個(gè)變量必須“先聲明,后使用”;若選用參數(shù)Off,則編譯器不檢查變量是否已聲明,即使用隱式聲明的變量;若省略參數(shù),則默認(rèn)為On。例如,下面代碼允許使用隱式聲明變量:OptionExplicitOffstrMyCountry$="中國(guó)"intMyAge%=203.2.1常量和變量選擇VS2010主菜單【工具】→【選項(xiàng)】項(xiàng),在【選項(xiàng)】對(duì)話框左側(cè)條目樹(shù)中選中“VB默認(rèn)值”,如圖3.1所示。3.2.2運(yùn)算符和表達(dá)式1.算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符是用于數(shù)值計(jì)算的運(yùn)算符。表3.7列出了VB.NET的算術(shù)運(yùn)算符。算術(shù)表達(dá)式是用算術(shù)運(yùn)算符將運(yùn)算元素連接起來(lái)的式子,其值是數(shù)值型的。例如:MyValue=2^2 '
返回4MyValue=10/4 '
返回
2.5MyValue=11\4 '
返回
2MyResult=10Mod3 '
返回
13.2.2運(yùn)算符和表達(dá)式【例3.1】根據(jù)華氏溫度計(jì)算出攝氏溫度。采用以下公式:功能要求:?jiǎn)螕簟居?jì)算】命令按鈕(btnStart),計(jì)算出華氏溫度為78時(shí)的攝氏溫度值,在文本框(txtTemperature)中顯示出計(jì)算的攝氏溫度結(jié)果。界面設(shè)計(jì):由三個(gè)控件組成,分別是標(biāo)簽(labF)、文本框(txtTemperature)和命令按鈕(btnStart),界面如圖3.2所示。3.2.2運(yùn)算符和表達(dá)式程序代碼如下:PrivateSubbtnStart_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnStart.Click
'計(jì)算溫度DimfAsSingle,cAsSinglef=78c=5/9*(f-32)txtTemperature.Text=cEndSub3.2.2運(yùn)算符和表達(dá)式2.賦值運(yùn)算符賦值運(yùn)算符用“=”符號(hào)表示,它用于賦值語(yǔ)句,將其右側(cè)的值賦給左側(cè)的變量或?qū)傩?,語(yǔ)法格式如下:變量或?qū)傩悦?值例如,給文本框的Text屬性賦值:Text1.Text="你好"給MyStr變量賦值:DimMyStrAsStringMyStr="HelloWorld"引用符號(hào)常量CONPI賦值給變量dblSquare:ConstCONPI=3.14159265358979DimdblSquareAsDoubledblSquare=CONPI*5*5
3.2.2運(yùn)算符和表達(dá)式如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不一致,系統(tǒng)將按下面4個(gè)原則進(jìn)行處理。(1)當(dāng)賦值運(yùn)算符右邊的表達(dá)式為數(shù)值型,但與左邊的變量類型不同時(shí),系統(tǒng)將強(qiáng)制把表達(dá)式值轉(zhuǎn)換成左邊的類型和精度。例如,下面代碼由低到高轉(zhuǎn)換能正確執(zhí)行:Dim X As DoubleDim Y As Integer=2Dim Z As Integer=3X=Y+Z '編譯成功然而,由高到低轉(zhuǎn)換則會(huì)出錯(cuò):Dim X As IntegerDim Y As Double=2Dim Z As Double=3X=Y+Z '編譯出錯(cuò)3.2.2運(yùn)算符和表達(dá)式(2)當(dāng)賦值運(yùn)算符右邊的表達(dá)式是數(shù)字字符串,而左邊的變量是數(shù)值類型時(shí),系統(tǒng)自動(dòng)把表達(dá)式轉(zhuǎn)換為數(shù)值類型后,再賦值給左邊的變量。但是當(dāng)表達(dá)式中有非數(shù)字字符串或空格時(shí),將會(huì)出錯(cuò)。例如,下面代碼X能正確得到值,而Y和Z則會(huì)出錯(cuò):DimX,Y,ZAsDoubleX="100" '轉(zhuǎn)換成功,X=100Y="12a3" '類型不匹配,出錯(cuò)Z="" '類型不匹配,出錯(cuò)3.2.2運(yùn)算符和表達(dá)式(3)當(dāng)邏輯表達(dá)式賦值給數(shù)值型變量時(shí),True轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0;反之,當(dāng)數(shù)值型表達(dá)式賦值給邏輯型變量時(shí),0轉(zhuǎn)換為False,非0值轉(zhuǎn)換為True。例如:DimXAsDouble=6DimYAsBoolean=FalseY=X '
Y值為TrueX=Y '
X值為-1(4)任何非字符類型值賦給字符類型,自動(dòng)轉(zhuǎn)換為字符類型。例如:DimXAsStringDimYAsCharY=150 '
Y值為字符串"150"X=12.05 '
X值為字符串"12.05"3.2.2運(yùn)算符和表達(dá)式3.關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符也稱比較運(yùn)算符,用它連接兩個(gè)表達(dá)式的式子稱為關(guān)系表達(dá)式,其結(jié)果是一個(gè)邏輯值(True或False)。VB.NET提供了8個(gè)關(guān)系運(yùn)算符,見(jiàn)表3.8。3.2.2運(yùn)算符和表達(dá)式(1)數(shù)值比較數(shù)值比較通常是對(duì)兩個(gè)算術(shù)表達(dá)式進(jìn)行比較,常用表3.8中的前6種運(yùn)算符。例如:Var1+Var2>(X–1)/2(2)字符串比較字符串比較通常是對(duì)兩個(gè)字符串表達(dá)式進(jìn)行比較,常用表3.8中的前7種運(yùn)算符。字符串比較的規(guī)則是,從前到后逐個(gè)字符按其ASCII碼大小比較,ASCII碼大的字符大;如果前面部分相同,則串長(zhǎng)的大;字符串全部一樣并長(zhǎng)度相同,才能相等。例如:"5">"24" '
結(jié)果為True"aaa">"aa" '
結(jié)果為True"54"="5" '
結(jié)果為False"54"<"9" '
結(jié)果為True"54">="5" '
結(jié)果為True3.2.2運(yùn)算符和表達(dá)式Like運(yùn)算符用來(lái)比較兩個(gè)字符串的模式是否匹配,即判斷一個(gè)字符串是否符合某一模式。在Like表達(dá)式中可使用通配符,如表3.9所示。例如:"264"Like"2?4" '
結(jié)果為True"a2a"Like"a#a" '
結(jié)果為True"V"Like"[A-Z]" '
結(jié)果為True"V"Like"[!A-Z]" '
結(jié)果為False"aBBBa"Like"a*a" '
結(jié)果為True3.2.2運(yùn)算符和表達(dá)式(3)對(duì)象比較可以用Is和IsNot運(yùn)算符來(lái)比較對(duì)象,其語(yǔ)法格式如下:對(duì)象名1Is對(duì)象名2對(duì)象名1IsNot對(duì)象名2①Is運(yùn)算符用來(lái)判斷兩個(gè)變量是否引用同一個(gè)對(duì)象,它不執(zhí)行值的比較。如果兩個(gè)對(duì)象變量都引用同一個(gè)對(duì)象,Is運(yùn)算的結(jié)果為True,否則為False。例如:DimobjXAsButtonDimobjYAsNewButtonobjX=objYMyResult=objXIsobjY '
結(jié)果為True3.2.2運(yùn)算符和表達(dá)式上例中,objXIsobjY計(jì)算為True,因?yàn)閮蓚€(gè)變量引用的是同一個(gè)Button實(shí)例。而下面的例子運(yùn)算結(jié)果則為False:DimobjXAsButtonDimobjYAsNewButtonMyResult=objXIsobjY '
結(jié)果為False3.2.2運(yùn)算符和表達(dá)式②IsNot運(yùn)算符用來(lái)判斷兩個(gè)變量是否引用不同的對(duì)象,它也不執(zhí)行值的比較。如果兩個(gè)對(duì)象變量都引用同一個(gè)對(duì)象,IsNot運(yùn)算的結(jié)果為False,否則為True。例如:DimobjXAsButtonDimobjYAsNewButtonobjX=objYMyResult=objXIsNotobjY '結(jié)果為False3.2.2運(yùn)算符和表達(dá)式4.連接運(yùn)算符和連接表達(dá)式用連接運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子稱為連接表達(dá)式。例如:DimstrMyStrA,strMyStrB,strMyStrCAsStringstrMyStrA="Hello"+"World" '結(jié)果為"HelloWorld"strMyStrB="How"&"Are"&"You" '結(jié)果為"HowAreYou"strMyStrC=strMyStrA&strMyStrB '結(jié)果為"HelloWorldHowAreYou"3.2.2運(yùn)算符和表達(dá)式5.邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算也稱布爾運(yùn)算,邏輯運(yùn)算符是用來(lái)執(zhí)行邏輯運(yùn)算的運(yùn)算符。VB.NET提供了6種邏輯運(yùn)算符,見(jiàn)表3.10。3.2.2運(yùn)算符和表達(dá)式這6種邏輯運(yùn)算的詳細(xì)規(guī)則見(jiàn)表3.11。3.2.2運(yùn)算符和表達(dá)式(1)邏輯運(yùn)算邏輯運(yùn)算就是用邏輯運(yùn)算符來(lái)比較邏輯表達(dá)式,可以使用表3.10中的6種邏輯運(yùn)算符。例如:DimblnMyStrA,blnMyStrB,blnMyStrCAsBooleanblnMyStrA=(3>5)Or(15<40) '
blnMyStrA=TrueblnMyStrB=(3>5)And(15<40) '
blnMyStrB=FalseblnMyStrC=(3>5)Xor(15<40) '
blnMyStrC=TrueblnMyStrA=Not(3>5) '
blnMyStrA=TrueblnMyStrA=12>45AndAlso(32*128<5000) '
blnMyStrA=FalseblnMyStrA=45>12OrElse(32*128<5000) '
blnMyStrA=True3.2.2運(yùn)算符和表達(dá)式(2)位運(yùn)算當(dāng)And(與)、Or(或)、Xor(異或)和Not(非)這4種邏輯運(yùn)算符對(duì)數(shù)值使用時(shí),可以實(shí)現(xiàn)位運(yùn)算。所謂位運(yùn)算,就是以二進(jìn)制數(shù)的對(duì)應(yīng)位的值(0或1)進(jìn)行邏輯運(yùn)算,然后基于運(yùn)算結(jié)果再賦值。二進(jìn)制位的邏輯運(yùn)算規(guī)則與布爾值相同,只需將1和0分別對(duì)應(yīng)于布爾值的True和False。例如:DimintMyStrAAsIntegerintMyStrA=3And5
3.2.2運(yùn)算符和表達(dá)式6.復(fù)合運(yùn)算符部分算術(shù)運(yùn)算符可以和賦值運(yùn)算符結(jié)合使用,構(gòu)成復(fù)合運(yùn)算符,也稱自反賦值運(yùn)算符。各種復(fù)合運(yùn)算符見(jiàn)表3.12。3.2.2運(yùn)算符和表達(dá)式舉例說(shuō)明復(fù)合運(yùn)算符的使用方法:DimintAAsInteger=10DimintBAsInteger=3intA-=intB '結(jié)果為
intA=7intA+=intB '結(jié)果為
intA=13intA*=intB '結(jié)果為
intA=30intA^=intB '結(jié)果為
intA=1000intA/=intB '結(jié)果為
intA=3.33333intA\=intB '結(jié)果為
intA=3DimintCAsString="你好"DimintDAsString="中國(guó)"intC&=intD '結(jié)果為
intC="你好中國(guó)"3.2.3運(yùn)算符的優(yōu)先順序運(yùn)算符優(yōu)先順序(從高到低)如下:算術(shù)運(yùn)算符→字符串連接運(yùn)算符(&)→關(guān)系運(yùn)算符→邏輯運(yùn)算符算術(shù)運(yùn)算符的優(yōu)先順序(從高到低)如下:^→+-(正負(fù)號(hào))→*、/→\(整數(shù)除法)→Mod→+、–(加減)邏輯運(yùn)算符優(yōu)先順序(從高到低)如下:Not→And、AndAlso→Or、OrElse→Xor3.2.3運(yùn)算符的優(yōu)先順序所有關(guān)系運(yùn)算符的優(yōu)先順序都相同,按從左到右順序進(jìn)行運(yùn)算。例如,對(duì)A,B,C變量進(jìn)行邏輯運(yùn)算:DimA,B,C,MyCheckA=10B=8C=6MyCheck=A>BAndAlsoB>C 'MyCheck為True,先">"運(yùn)算,再"AndAlso"運(yùn)算。MyCheck=A>BOrElseB>C '返回
TrueMyCheck=A>BXorB>C '返回
FalseMyCheck=A>=2*3.1415926*BAndC<
>5 '返回
False3.2.3運(yùn)算符的優(yōu)先順序再例如,在例2.7中輸入半徑為2,如果將單擊按鈕的代碼改成:PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesButton1.ClickDimrAsSingle '聲明一個(gè)實(shí)數(shù)類型的變量
rr=TextBox1.Text '從
TextBox1中讀取半徑值存入變量
rTextBox2.Text=1+Math.PI*r*r '計(jì)算圓面積+1并顯示在
TextBox2中EndSub3.2.3運(yùn)算符的優(yōu)先順序在表達(dá)式1+Math.PI*r*r中,由于乘法運(yùn)算符優(yōu)先,所以先計(jì)算Math.PI*r*r,再將計(jì)算的結(jié)果加1。因此單擊【計(jì)算】按鈕后顯示面積加1的結(jié)果,如圖3.3所示。3.3VB.NET語(yǔ)句的結(jié)構(gòu)3.3.1順序結(jié)構(gòu)順序結(jié)構(gòu)如圖3.4(a)所示,整個(gè)程序按語(yǔ)句的書寫順序依次執(zhí)行。先執(zhí)行A,再執(zhí)行B,即自上而下依次運(yùn)行。我們也可用N-S圖來(lái)簡(jiǎn)潔地表示程序的控制結(jié)構(gòu),它規(guī)定了一些圖形元素,用以表示各種復(fù)雜的代碼結(jié)構(gòu),圖3.4(b)為順序結(jié)構(gòu)的N-S結(jié)構(gòu)化流程圖。3.3.2分支結(jié)構(gòu)分支結(jié)構(gòu)如圖3.5所示,通過(guò)E判斷后選擇要執(zhí)行的分支,滿足條件執(zhí)行A,不滿足條件執(zhí)行B。3.3.2分支結(jié)構(gòu)1.If...Then結(jié)構(gòu)If...Then結(jié)構(gòu)表示“如果……就”,是條件轉(zhuǎn)移語(yǔ)句,根據(jù)條件測(cè)試后的結(jié)果,決定程序的下一步。其語(yǔ)法格式如下:If條件
Then語(yǔ)句或者If條件
Then
語(yǔ)句塊EndIf例如,當(dāng)滿足條件x<y時(shí),執(zhí)行Sum=Sum+1:Ifx<yThenSum=Sum+1如果條件為
True時(shí)要執(zhí)行多行代碼,則必須使用
If...Then...EndIf結(jié)構(gòu)。例如:Ifx<yThen Sum=Sum+1 z=xEndIf
3.3.2分支結(jié)構(gòu)2.If...Then...Else結(jié)構(gòu)If...Then...Else結(jié)構(gòu)表示“如果……就……否則”,比前面的If...Then結(jié)構(gòu)的條件選擇和應(yīng)用范圍更廣。其語(yǔ)法格式如下:If條件1Then
語(yǔ)句塊1[ElseIf條件2Then
語(yǔ)句塊2]......[Else
語(yǔ)句塊n]EndIf3.3.2分支結(jié)構(gòu)【例3.2】
設(shè)計(jì)一個(gè)獲獎(jiǎng)查詢程序,要求查詢是否中獎(jiǎng)及所中獎(jiǎng)的等級(jí)。界面設(shè)計(jì):界面由4個(gè)控件組成:標(biāo)簽(labResult)、文本框(txtInput)、【查詢】命令按鈕(btnCheck)和標(biāo)簽(Label1)。程序運(yùn)行界面如圖3.6所示。3.3.2分支結(jié)構(gòu)功能要求:從文本框txtInput中輸入獎(jiǎng)券號(hào)碼,單擊【查詢】按鈕,在其Click事件中查詢是否中獎(jiǎng)及中獎(jiǎng)的等級(jí)。中獎(jiǎng)號(hào)碼為“123”,與中獎(jiǎng)號(hào)碼相同的為一等獎(jiǎng);前兩位相同為二等獎(jiǎng);前一位相同為三等獎(jiǎng)。將中獎(jiǎng)結(jié)果在標(biāo)簽labResult中顯示。程序代碼如下:PrivateSubbtnCheck_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnCheck.Click'單擊按鈕查詢DimstrInputAsString '定義字符串型strInput=txtInput.TextIfstrInput="123"Then '號(hào)碼為"123" labResult.Text="真幸運(yùn),中了一等獎(jiǎng)!"ElseIfstrInputLike"12?"Then '號(hào)碼前兩位為"12"labResult.Text="恭喜你,中了二等獎(jiǎng)!"ElseIfstrInputLike"1??"Then '號(hào)碼第一位為"1"labResult.Text="還不錯(cuò),中了三等獎(jiǎng)!"ElselabResult.Text="謝謝您的參與!"EndIfEndSub3.3.2分支結(jié)構(gòu)3.SelectCase結(jié)構(gòu)SelectCase結(jié)構(gòu)與
If...Then...Else結(jié)構(gòu)類似,但對(duì)多重選擇的情況,用SelectCase語(yǔ)句代碼效率更高,更易讀。其語(yǔ)法格式如下:SelectCase變量
|表達(dá)式Case值1
語(yǔ)句塊1[Case值2
語(yǔ)句塊2]......[CaseElse
語(yǔ)句塊n]EndSelect3.3.2分支結(jié)構(gòu)其中,值1、值2…可以取以下幾種形式:(1)具體常數(shù),如1、2、〞A〞等。(2)連續(xù)的數(shù)據(jù)范圍,如1To100、AToZ等。(3)滿足某個(gè)條件的表達(dá)式,如I>0等。(4)可同時(shí)設(shè)置多個(gè)不同的范圍,用逗號(hào)(,)分隔開(kāi),如-10,1To100。SelectCase語(yǔ)句的N-S流程圖如圖3.7所示。3.3.2分支結(jié)構(gòu)【例3.3】
用SelectCase結(jié)構(gòu)設(shè)計(jì)獲獎(jiǎng)查詢程序。PrivateSubbtnCheck_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnCheck.ClickDimstrInputAsString'定義字符串型strInput=txtInput.TextSelectCasestrInputCase123labResult.Text="真幸運(yùn),中了一等獎(jiǎng)!"Case120To129labResult.Text="恭喜你,中了二等獎(jiǎng)!"Case100To199labResult.Text="還不錯(cuò),中了三等獎(jiǎng)!"CaseElselabResult.Text="謝謝您的參與!"EndSelectEndSub3.3.2分支結(jié)構(gòu)4.嵌套嵌套是指把一個(gè)控制結(jié)構(gòu)放入另一個(gè)之內(nèi)。例如,在
If...Then中嵌套
If...Then結(jié)構(gòu)或SelectCase結(jié)構(gòu)等,嵌套的層數(shù)沒(méi)有限制。【例3.4】
計(jì)算下列函數(shù):3.3.2分支結(jié)構(gòu)函數(shù)分成三個(gè)分支,即x<0、x>0和x=0時(shí)執(zhí)行不同的語(yǔ)句塊。方法1用If嵌套結(jié)構(gòu)來(lái)設(shè)計(jì),將x>0的判斷嵌套在x<>0的分支結(jié)構(gòu)中:y=-1Ifx<>0Then Ifx>0Then y=1 EndIfElse y=0EndIf3.3.2分支結(jié)構(gòu)方法2用If嵌套結(jié)構(gòu)來(lái)設(shè)計(jì),將x>0和x=0的判斷嵌套在x>=0的分支結(jié)構(gòu)中:Ifx>=0Then Ifx>0Then y=1 Else y=0 EndIfElse y=-1EndIf方法3用If…Then…Else結(jié)構(gòu)來(lái)設(shè)計(jì):Ifx<0Then y=-1ElseIfx=0Then y=0Else y=1EndIf3.3.3循環(huán)結(jié)構(gòu)1.Do循環(huán)結(jié)構(gòu)可使用Do循環(huán)語(yǔ)句執(zhí)行不確定次數(shù)的循環(huán),它有兩種形式:“DoWhile結(jié)構(gòu)”和“Do結(jié)構(gòu)”。“DoWhile”循環(huán)的語(yǔ)法格式如下:DoWhile|Until條件 語(yǔ)句塊
[ExitDo]
語(yǔ)句塊Loop“Do”循環(huán)的語(yǔ)法格式如下:Do
語(yǔ)句塊
[ExitDo]
語(yǔ)句塊LoopWhile|Until條件3.3.3循環(huán)結(jié)構(gòu)DoWhile循環(huán)結(jié)構(gòu)流程圖如圖3.8所示。執(zhí)行步驟:首先測(cè)試條件;當(dāng)條件為
True時(shí),執(zhí)行語(yǔ)句塊A,如此循環(huán)執(zhí)行并測(cè)試條件;一旦條件為False,就跳過(guò)所有語(yǔ)句到循環(huán)體外。Do循環(huán)結(jié)構(gòu)的流程圖如圖3.9所示。
3.3.3循環(huán)結(jié)構(gòu)在Do...Loop結(jié)構(gòu)中Until和While不同,判斷條件正好相反。Until結(jié)構(gòu)是只要條件為
False(而不是
True),就執(zhí)行循環(huán),直到條件為Ture跳出循環(huán)體,其流程圖如圖3.10所示。3.3.3循環(huán)結(jié)構(gòu)【例3.5】
用DoWhile循環(huán)計(jì)算整數(shù)1~100的和。DimiAsInteger,SumAsIntegerSum=0:i=1 '置初始值DoWhilei<=100 Sum=Sum+i i=i+1LoopSum的結(jié)果是:5050?!纠?.6】
用Do循環(huán)計(jì)算整數(shù)1~100的和。DimiAsInteger,SumAsIntegerSum=0:i=1 '置初始值Do Sum=Sum+i i=i+1LoopWhilei<=100Sum的結(jié)果是:5050。3.3.3循環(huán)結(jié)構(gòu)2.While循環(huán)結(jié)構(gòu)可使用While循環(huán)語(yǔ)句執(zhí)行不確定次數(shù)的循環(huán),While循環(huán)也稱為“當(dāng)型”循環(huán),其流程圖如圖3.11所示。執(zhí)行步驟:首先測(cè)試條件,只要條件為True就執(zhí)行語(yǔ)句塊A,然后循環(huán)測(cè)試While語(yǔ)句的條件;一旦條件為False,就跳過(guò)所有語(yǔ)句到循環(huán)體外。其語(yǔ)法格式如下:While條件
語(yǔ)句塊 [ExitWhile]
語(yǔ)句塊EndWhile
3.3.3循環(huán)結(jié)構(gòu)【例3.7】
用
While循環(huán)計(jì)算整數(shù)1~100的和。DimiAsInteger,SumAsIntegerSum=0:i=1 '置初始值Whilei<=100 Sum=Sum+i i=i+1EndWhile3.3.3循環(huán)結(jié)構(gòu)3.For循環(huán)結(jié)構(gòu)For循環(huán)結(jié)構(gòu)使用起來(lái)最靈活。它使用一個(gè)計(jì)數(shù)器,每循環(huán)一次,計(jì)數(shù)器變量就會(huì)自動(dòng)增加或減少。其語(yǔ)法格式如下:For計(jì)數(shù)器
=初始值
To終止值
[Step步長(zhǎng)]
語(yǔ)句塊 [ExitFor]Next[計(jì)數(shù)器]For循環(huán)結(jié)構(gòu)流程圖如圖3.12所示。3.3.3循環(huán)結(jié)構(gòu)【例3.8】
用For循環(huán)結(jié)構(gòu)計(jì)算整數(shù)1~100的和,分別取步長(zhǎng)為1和-1計(jì)算。(1)取步長(zhǎng)為1的程序:DimiAsInteger,SumAsIntegerSum=0Fori=1To100 '步長(zhǎng)默認(rèn)為1 Sum=Sum+iNexti(2)取步長(zhǎng)為-1的程序:DimiAsInteger,SumAsIntegerSum=0Fori=100To1Step-1 Sum=Sum+iNexti
3.3.3循環(huán)結(jié)構(gòu)4.嵌套【例3.9】
編寫搖獎(jiǎng)程序。圖3.13【例3.9】運(yùn)行界面功能要求:用For循環(huán)由隨機(jī)數(shù)生成器循環(huán)產(chǎn)生三位數(shù)的中獎(jiǎng)號(hào)碼,為了獲得搖獎(jiǎng)的效果,出現(xiàn)每個(gè)號(hào)碼之間要有一小段時(shí)間間隔,用一個(gè)For循環(huán)生成延時(shí)程序。界面設(shè)計(jì):界面中有一個(gè)文本框txtPrize、一個(gè)【搖獎(jiǎng)】按鈕(btnStart)和一個(gè)標(biāo)簽,其運(yùn)行界面如圖3.13所示。3.3.3循環(huán)結(jié)構(gòu)程序代碼如下:PrivateSubbtnStart_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnStart.ClickDimiAsInteger,jAsIntegerDimaAsSingleDimStrPrizeAsString
StrPrize=""Fori=1To3j=Int(10*Rnd()) '產(chǎn)生0~9的隨機(jī)數(shù)
StrPrize=StrPrize&jFora=1To10000Step0.001
'延時(shí)Nexta
txtPrize.Text=StrPrize
txtPrize.Refresh() '刷新文本框NextiEndSub3.3.3循環(huán)結(jié)構(gòu)5.退出循環(huán)用
Exit語(yǔ)句可以直接退出
For循環(huán)、Do循環(huán)。程序執(zhí)行中遇到
Exit語(yǔ)句時(shí),不再執(zhí)行循環(huán)結(jié)構(gòu)中的任何語(yǔ)句而立即退出,轉(zhuǎn)到循環(huán)結(jié)構(gòu)的下面繼續(xù)執(zhí)行。其語(yǔ)法格式如下:ExitForExitDoExitWhile【例3.10】
計(jì)算整數(shù)1~100的和,當(dāng)和大于等于5000時(shí)退出循環(huán)。DimiAsInteger,SumAsIntegerSum=0Fori=100To1Step-1 Sum=Sum+i IfSum>=5000ThenExitFor '當(dāng)和大于等于5000時(shí)跳出循環(huán)Nexti
3.4函數(shù)及其應(yīng)用函數(shù)可以有返回值,應(yīng)注意返回值的數(shù)據(jù)類型。例如,y=CBool(x)的返回值是Boolean型。在程序中調(diào)用函數(shù)的語(yǔ)法格式如下:函數(shù)名(參數(shù)1,參數(shù)2,…)3.4.1算術(shù)函數(shù)表3.13所示為常用的算術(shù)函數(shù)。3.4.1算術(shù)函數(shù)【例3.11】
制作一個(gè)萬(wàn)年歷,用來(lái)查看某年的元旦是星期幾。確定某年的元旦是星期幾可由下式得出:式中,Y為某年公元年號(hào),計(jì)算出的K為星期幾,K=0為星期日,K=1為星期一,…,依次類推。3.4.1算術(shù)函數(shù)功能及界面設(shè)計(jì)要求:從文本框(txtYear)輸入年份,單擊【查看】(Button1)按鈕,在文本框(txtDay)中顯示星期,運(yùn)行結(jié)果如圖3.14所示。3.4.1算術(shù)函數(shù)程序代碼如下:PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesButton1.ClickDimY,F,kAsIntegerY=Val(txtYear.Text)F=Int((Y-1)*(1+1/4-1/100+1/400)+1)k=F-Fix(F/7)*7If(k=0)ThentxtDay.Text="日"ElsetxtDay.Text=kEndIfEndSub在VB.NET中,有些算術(shù)函數(shù)在名稱空間System.Math中定義(用方法機(jī)制實(shí)現(xiàn)),為了使用它們必須在程序模塊的開(kāi)頭引入System.Math名稱空間,語(yǔ)法格式如下:ImportsSystem.Math3.4.1算術(shù)函數(shù)【例3.12】
求一元二次方程ax2+bx+c=0的根。求解公式如下:所求方程的根有以下幾種可能:(1)a=0,有一個(gè)實(shí)根。(2)b2-4ac=0,有兩個(gè)相等的實(shí)根。(3)b2-4ac>0,有兩個(gè)不等的實(shí)根。(4)b2-4ac<0,有兩個(gè)共軛復(fù)根。3.4.1算術(shù)函數(shù)界面設(shè)計(jì):界面由5個(gè)文本框、5個(gè)標(biāo)簽和1個(gè)按鈕組成,各控件的屬性如表3.14所示。3.4.1算術(shù)函數(shù)程序流程圖如圖3.15(a)所示,界面安排見(jiàn)圖3.15(b)。3.4.1算術(shù)函數(shù)功能要求:在文本框中輸入a、b、c的值,單擊【計(jì)算】按鈕(btnStart),計(jì)算方程根并將結(jié)果顯示在文本框txtX1和txtX2中。程序代碼。計(jì)算示例如圖3.16所示。3.4.2字符串函數(shù)字符串函數(shù)用于進(jìn)行字符串處理。表3.15所示為常用的字符串函數(shù)。3.4.2字符串函數(shù)【例3.13】
將輸入的字符串清除首尾空格,統(tǒng)一轉(zhuǎn)換成小寫并反向顯示。界面設(shè)計(jì):界面包含2個(gè)標(biāo)簽、1個(gè)按鈕(btnReverse)和2個(gè)文本框(txtInput用于輸入,txtReverse用于顯示處理后的字符串)。運(yùn)行結(jié)果如圖3.17所示。3.4.2字符串函數(shù)功能要求:從文本框txtInput輸入原始的字符串,單擊【處理】(btnReverse)按鈕,在文本框txtReverse中顯示處理后的字符串。程序代碼如下:PrivateSubbtnReverse_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnReverse.ClickDimStrAsStringStr=StrReverse(LCase(Trim(txtInput.Text)))txtReverse.Text=StrEndSub3.4.2字符串函數(shù)【例3.14】
加密電文。為了使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換成密碼,收?qǐng)?bào)人再按規(guī)律譯回原文。假設(shè)將字母A變成E,即變成其后的第4個(gè)字母,依次類推。相應(yīng)地,最后4個(gè)字母W變成A,X變成B,Y變成C,Z變成D。小寫字母也是同樣,加密的規(guī)律如圖3.18(a)所示。界面設(shè)計(jì):界面由2個(gè)文本框(txtInput和
txtOutput)、1個(gè)命令按鈕btnStart和2個(gè)標(biāo)簽組成,如圖3.18(b)所示。
3.4.2字符串函數(shù)功能要求:在文本框(txtInput)中輸入原文world,單擊【開(kāi)始】(btnStart)按鈕后,在文本框(txtOutput)中出現(xiàn)加密后的密文asvph,窗體中各控件屬性設(shè)置如表3.16所示。程序代碼。3.4.3日期與時(shí)間函數(shù)日期與時(shí)間函數(shù)用于日期和時(shí)間的處理。表3.17所示為常用的日期與時(shí)間函數(shù)。3.4.3日期與時(shí)間函數(shù)【例3.15】
使用日期和時(shí)間函數(shù)在窗體上顯示日期和時(shí)間。界面設(shè)計(jì):用4個(gè)空白標(biāo)簽labYear、labMonth、labDay和labTime分別顯示年、月、日和時(shí)間,設(shè)計(jì)的界面如圖3.19所示。3.4.3日期與時(shí)間函數(shù)窗體加載(Load)事件程序代碼如下:PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)
HandlesMyBase.LoadlabYear.Text=Year(Now) '顯示年份labMonth.Text=Month(Now) '顯示月份labDay.Text=Microsoft.VisualBasic.Day(Now) '顯示日期labTime.Text=Hour(Now)&":"&Minute(Now)&":"&Second(Now)'顯示時(shí)間EndSub
程序運(yùn)行結(jié)果如圖3.20所示。3.4.4類型轉(zhuǎn)換函數(shù)VB.NET提供了幾種類型轉(zhuǎn)換函數(shù),每個(gè)函數(shù)都可以強(qiáng)制將一個(gè)表達(dá)式的值轉(zhuǎn)換成某種特定的數(shù)據(jù)類型。轉(zhuǎn)換函數(shù)如表3.18所示。3.4.5隨機(jī)函數(shù)1.Rnd函數(shù)Rnd函數(shù)生成一個(gè)Single類型的隨機(jī)數(shù)。其語(yǔ)法格式如下:Rnd([number])其中,參數(shù)number是一個(gè)Single類型的表達(dá)式。Rnd函數(shù)的返回值是一個(gè)0到1(小于
1但大于或等于
0)之間的單精度數(shù)值。例如:DimintAAsIntegerDimsngBAsSinglesngB=Rnd() '產(chǎn)生0到1之間的隨機(jī)數(shù)intA=CInt(Int((6*Rnd())+1)) '產(chǎn)生1到6之間的隨機(jī)整數(shù)2.Randomize語(yǔ)句Randomize語(yǔ)句的功能是初始化隨機(jī)數(shù)產(chǎn)生器。其語(yǔ)法格式如下:Randomize[number]3.4.6輸入/輸出函數(shù)1.InputBox函數(shù)InputBox函數(shù)用于接受用戶從鍵盤輸入的數(shù)據(jù),也稱輸入框。在運(yùn)行時(shí),它會(huì)自動(dòng)產(chǎn)生一個(gè)對(duì)話框,用戶可在其中輸入數(shù)據(jù)。其語(yǔ)法格式如下:InputBox(對(duì)話框字符串s[,標(biāo)題s][,文本框默認(rèn)值s][,橫坐標(biāo)值n][,縱坐標(biāo)值n])在調(diào)用InputBox函數(shù)時(shí)會(huì)出現(xiàn)一個(gè)對(duì)話框,包含一個(gè)文本框及【確定】和【取消】按鈕。對(duì)話框等待用戶在文本框輸入內(nèi)容。如果單擊【確定】按鈕或按下Enter鍵,InputBox函數(shù)的返回值就是文本框的內(nèi)容;如果單擊【取消】按鈕,則返回一個(gè)零長(zhǎng)度字符串。例如:InputBox("請(qǐng)輸入文件名:","打開(kāi)文件","C:\ProgramFiles\MicrosoftVisualStudio10.0\Common7 \IDE\devenv.exe")3.4.6輸入/輸出函數(shù)對(duì)應(yīng)的輸入框如圖3.21所示。3.4.6輸入/輸出函數(shù)【例3.16】
用InputBox函數(shù)及對(duì)話框獲取用戶輸入的文件名。界面設(shè)計(jì):界面包含2個(gè)標(biāo)簽(labFile和labFileName)和1個(gè)按鈕(btnStart)。功能要求:?jiǎn)螕簟据斎胛募浚╞tnStart)按鈕出現(xiàn)InputBox輸入框,在其中輸入文件名,將輸入的文件名顯示在窗體的標(biāo)簽(labFileName)中。程序代碼如下:PrivateSubbtnStart_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnStart.ClickDimFileNameAsStringFileName=InputBox(“請(qǐng)輸入文件名:”,“打開(kāi)文件”,“C:\ProgramFiles\MicrosoftVisualStudio10.0 \Common7\IDE\devenv.exe")'默認(rèn)的文件名是"C:\ProgramFiles\MicrosoftVisualStudio10.0\Common7\IDE\devenv.exe"IfFileName<>""ThenlabFileName.Text=FileNameElse'當(dāng)用戶單擊【取消】按鈕時(shí)labFileName.Text=""EndIfEndSub3.4.6輸入/輸出函數(shù)程序運(yùn)行結(jié)果如圖3.22所示,這里是以默認(rèn)文件名輸入的。3.4.6輸入/輸出函數(shù)2.MsgBox函數(shù)MsgBox函數(shù)用于向用戶發(fā)布提示信息。程序運(yùn)行時(shí),它會(huì)自動(dòng)產(chǎn)生一個(gè)對(duì)話框,也稱消息框,在其中顯示提示消息。同時(shí),它還包含命令按鈕,要求用戶通過(guò)單擊按鈕做出響應(yīng),使程序繼續(xù)執(zhí)行。其語(yǔ)法格式如下:MsgBox(消息文本s[,顯示按鈕n][,標(biāo)題s])其中:(1)消息文本,是在對(duì)話框中作為消息顯示的字符串,其內(nèi)容為提示信息。當(dāng)消息文本內(nèi)容超過(guò)一行時(shí),可以在每行之間插入回車符(Chr(13))或換行符(Chr(10))進(jìn)行換行。(2)標(biāo)題,是在對(duì)話框標(biāo)題欄中顯示的標(biāo)題,默認(rèn)時(shí)為空白。(3)顯示按鈕,是一個(gè)枚舉類型的MsgBoxStyle值,用來(lái)控制在對(duì)話框內(nèi)顯示的按鈕、圖標(biāo)的種類及數(shù)量,該值由c1、c2、c3、c4這4個(gè)值構(gòu)成,即c1+c2+c3+c4的總和,用來(lái)指定顯示按鈕的數(shù)目、形式、圖標(biāo)樣式。Buttons的設(shè)置值c1、c2、c3、c4如表3.19、表3.20、表3.21、表3.22所示。3.4.6輸入/輸出函數(shù)MsgBox函數(shù)等待用戶單擊按鈕,返回一個(gè)Integer型值,表示用戶單擊的是哪一個(gè)按鈕,返回值如表3.23所示。如果用戶按下
Esc鍵,則與單擊Cancel按鈕效果相同。3.4.6輸入/輸出函數(shù)對(duì)應(yīng)的消息框如圖3.23所示。3.4.6輸入/輸出函數(shù)【例3.17】
在例3.16的界面中包含一個(gè)【退出】(btnEnd)按鈕,單擊后顯示消息框如圖3.23所示,單擊【確定】按鈕退出系統(tǒng),單擊【取消】按鈕取消操作。程序代碼如下:PrivateSubbtnEnd_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesbtnEnd.ClickDimResponseResponse=MsgBox("是否退出系統(tǒng)?",vbOKCancel+vbQuestion,"退出")IfResponse=1Then'當(dāng)單擊【確定】按鈕EndEndIfEndSub3.4.7自定義函數(shù)1.定義Function過(guò)程Function過(guò)程由包含在Function和EndFunction語(yǔ)句之間的一系列語(yǔ)句構(gòu)成。每次調(diào)用函數(shù)時(shí)都會(huì)執(zhí)行過(guò)程中的語(yǔ)句,即從Function語(yǔ)句后的第一個(gè)可執(zhí)行語(yǔ)句開(kāi)始,直到遇到第一個(gè)EndFunction、ExitFunction或Return語(yǔ)句結(jié)束。定義Function過(guò)程的一般語(yǔ)法格式如下:[Private|Public][Static]Function函數(shù)名
([參數(shù)列表])[As數(shù)據(jù)類型][局部變量和常數(shù)聲明]
語(yǔ)句塊 [函數(shù)名
=表達(dá)式] [ExitFunction]
語(yǔ)句塊 [Return表達(dá)式]EndFunction3.4.7自定義函數(shù)例如,下面是計(jì)算直角三角形第三邊(斜邊)的函數(shù),函數(shù)名為Hypotenuse,函數(shù)值的數(shù)據(jù)類型為Single,函數(shù)的形參為直角三角形兩直角邊A和B,返回值為斜邊的值,F(xiàn)unction過(guò)程代碼如圖3.24所示。3.4.7自定義函數(shù)2.調(diào)用Function過(guò)程調(diào)用Function函數(shù)過(guò)程的方法和調(diào)用
VB.NET內(nèi)部函數(shù)一樣,在語(yǔ)句中直接使用函數(shù)名即可。其語(yǔ)法格式如下:變量=Function函數(shù)名([參數(shù)列表])Function過(guò)程可返回一個(gè)值賦給變量。另外,也可使用Call語(yǔ)句或僅僅引用函數(shù)名來(lái)直接執(zhí)行函數(shù)過(guò)程。其語(yǔ)法格式如下:Call函數(shù)名([參數(shù)列表])或者函數(shù)名[參數(shù)列表]當(dāng)用這種方法調(diào)用函數(shù)時(shí),將會(huì)放棄函數(shù)的返回值。例如,下面的語(yǔ)句都是調(diào)用計(jì)算直角三角形斜邊的函數(shù)Hypotenuse。Debug.Write(10*Hypotenuse(3,4)) '在窗體顯示函數(shù)值運(yùn)算結(jié)果X=Hypotenuse(3,4) '將函數(shù)值賦給變量XIfHypotenuse(3,4)=10ThenDebug.Write("Error!") '判斷函數(shù)值是否=10X=Abs(Hypotenuse(3,4)) '函數(shù)值作為Abs函數(shù)的參數(shù)CallHypotenuse(3,4) 'Call語(yǔ)句執(zhí)行函數(shù)過(guò)程
3.4.7自定義函數(shù)【例3.18】
采用輾轉(zhuǎn)相除法,編寫用函數(shù)調(diào)用求兩個(gè)自然數(shù)的最大公約數(shù)的程序。輾轉(zhuǎn)相除法的算法如下:(1)輸入兩個(gè)自然數(shù)M,N。(2)計(jì)算M除以N的余數(shù)R,R=MModN。(3)用N替換M,M=N;用R替換N,N=R。(4)若R<>0則重復(fù)上述步驟(2)、(3)、(4)。程序代碼如下:PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesMyBase.LoadDimmAsInteger,nAsInteger,gAsIntegerm=InputBox("請(qǐng)輸入M")n=InputBox("請(qǐng)輸入N")g=Divisor(m,n)'調(diào)用函數(shù)DivisorDebug.Write(m&"和"&n&"的最大公約數(shù)是:"&g)EndSub3.4.7自定義函數(shù)在Form1_Load事件中輸入兩個(gè)自然數(shù)M和N并調(diào)用Divisor函數(shù),M和N傳遞給Divisor函數(shù)。PrivateFunctionDivisor(ByValxAsInteger,ByValyAsInteger)'函數(shù)
Divisor計(jì)算最大公約數(shù)DimrAsIntegerr=xModyDoWhiler<>0x=yy=rr=xModyLoopDivisor=yEndFunction運(yùn)行程序,當(dāng)輸入M為45,N為25時(shí),在集成環(huán)境的【即時(shí)窗口】中顯示結(jié)果為:45和25的最大公約數(shù)是:5
3.5數(shù)組3.5.1數(shù)組聲明在使用數(shù)組前,必須先聲明??梢月暶饕痪S數(shù)組、二維數(shù)組,也可以定義多維數(shù)組。其語(yǔ)法格式如下:Dim數(shù)組名(第一維下標(biāo)上界[,第二維下標(biāo)上界,…])[As數(shù)據(jù)類型
]1.LBound函數(shù)對(duì)已經(jīng)定義的數(shù)組,可以用LBound函數(shù)獲得數(shù)組任一維可用的最小下標(biāo),從而確定數(shù)組任一維的下界。其語(yǔ)法格式如下:LBound(數(shù)組名[,維])其中,維指定返回?cái)?shù)組的哪一維。1(默認(rèn))表示第一維,2表示第二維,…,依次類推。例如:DimA(9,14)AsIntegerDimLAsIn
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游度假空置別墅租賃協(xié)議
- 航空公司足浴技師招聘合同
- 防水工程維修合同
- 災(zāi)害救援項(xiàng)目捐贈(zèng)協(xié)議
- 文化旅游用房購(gòu)房合同協(xié)議書
- 美容養(yǎng)生店合同范例
- 金屬材料生產(chǎn)加工合同三篇
- 育秧大棚建設(shè)合同(2篇)
- 土壤修復(fù)效果評(píng)估技術(shù)合同
- 集體土地私人修路協(xié)議范文
- 海闊天空音樂(lè)
- 2024年中國(guó)國(guó)際貨運(yùn)航空股份有限公司招聘筆試參考題庫(kù)含答案解析
- 梁湘潤(rùn)《子平基礎(chǔ)概要》簡(jiǎn)體版
- 《開(kāi)關(guān)電源基礎(chǔ)知識(shí)》課件
- 政府部門的協(xié)調(diào)配合措施
- 托??荚噲?bào)名流程完整詳解
- 提升學(xué)生深度閱讀教學(xué)設(shè)計(jì)
- 江蘇省宿遷市宿城區(qū)2023-2024學(xué)年一年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 《工業(yè)工程導(dǎo)論》課件
- 廣東省中山市2023-2024學(xué)年五年級(jí)上學(xué)期期末數(shù)學(xué)試卷
- 計(jì)算機(jī)網(wǎng)絡(luò)局域網(wǎng)組建與維護(hù)
評(píng)論
0/150
提交評(píng)論