版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VisualBasic程式設(shè)計概述1.1Vb功能特點1.2可視化編程的概念1.3面向?qū)ο蟮挠嘘P(guān)概念1.4Vb集成開發(fā)環(huán)境1.5Vb程式設(shè)計的一般步驟第一節(jié)Vb功能特點
面向?qū)ο蟮目梢暬某淌皆O(shè)計方法事件驅(qū)動的程式設(shè)計機制簡單易學(xué)的程式設(shè)計語言互動式的集成開發(fā)環(huán)境第二節(jié)可視化編程的概念
傳統(tǒng)的程式設(shè)計方法針對用戶介面設(shè)計程式代碼可是化編程的優(yōu)點第三節(jié)面向?qū)ο蟮挠嘘P(guān)概念對象的概念是表示現(xiàn)實世界中某個具體的事物,或者對象是具有特殊屬性(數(shù)據(jù))和行為方式(方法)的實體,建立一個對象後,其操作通過與該對象有關(guān)的屬性、事件和方法來描述。對象的建立和編輯
建立:①單擊工具箱裏相應(yīng)對象的圖示,然後在窗體上拖動②雙擊工具箱裏相應(yīng)對象的圖示
選定:單擊選定一個;Ctrl+單擊選定多個不連續(xù);Shift+單擊選定多個連續(xù)刪除:選定按Del鍵對象的屬性、事件和方法屬性:一個對象的特徵??稍谠O(shè)計階段利用屬性窗口直接設(shè)置對象的屬性,也可在程式代碼中利用語句實現(xiàn),格式:對象名.屬性名=屬性值
事件:由VB預(yù)先設(shè)置好的、能被對象識別的動作。如:Click(單擊)、Change(改變)等。
事件過程:對象的事件發(fā)生後,應(yīng)用程式處理這個事件所執(zhí)行的一段代碼。一般格式如下:
PrivateSub對象名_事件名([參數(shù)列表])……
EndSub方法系統(tǒng)提供,用戶可以直接調(diào)用。一般格式如下:
[對象.]方法名[參數(shù)列表]第四節(jié)Vb集成開發(fā)環(huán)境VB6.0的安裝添加或刪除VB6.0組件VB6.0的啟動方法VB6.0集成開發(fā)環(huán)境1)主窗口 2)窗體窗口3)屬性窗口 4)工程資源管理器窗口5)代碼窗口 6)窗體佈局窗口7)立即窗口 8)工具箱窗口第五節(jié)Vb程式設(shè)計的一般步驟VB應(yīng)用程式開發(fā)的全過程(1)介面設(shè)計(2)編寫代碼(3)保存和運行(4)編譯與打包(5)安裝運行VB應(yīng)用程式開發(fā)的主要步驟開發(fā)一個VB應(yīng)用程式一般有以下三個主要步驟:(1)設(shè)計應(yīng)用程式介面(2)設(shè)置對象屬性(3)編寫程式代碼第二章窗體與基本控件
涉及內(nèi)容:2.1窗體2.2基本控件以及控件的格式化2.3基本控件的格式化2.4簡單語句一窗體1.窗體常用屬性
Name對象的名稱指定窗體的名稱,在程式代碼中用這個名稱引用該窗體。第一個窗體的名稱缺省值為form1,通常要給name屬性設(shè)置一個有實際意義的名稱,便於識別。
Caption對象的標(biāo)題設(shè)置窗體標(biāo)題欄顯示的文本。
Height對象的高度Width對象的寬度設(shè)置窗體的高度和寬度。單位為Twip。1Twip=1/20點=1/1440英寸=1/567cmEnabled對象的啟動或禁止用來設(shè)置窗體是否回應(yīng)滑鼠或鍵盤事件。缺省時為True,窗體能夠?qū)τ脩舢a(chǎn)生的事件作出反映。Visible對象的可見性設(shè)置窗體是否顯示。True(窗體可見),F(xiàn)alse(運行時,窗體及其上面的對象都將被隱藏)Top對象的頂邊距離Left對象的左邊距離Backcolor設(shè)置窗體的背景顏色;Forecolor設(shè)置窗體的前景顏色。Font設(shè)置窗體上字體的樣式,大小,字形等。Picture設(shè)置在窗體中顯示的圖片。
注意:要在程式中設(shè)置該屬性的值,需要使用LoadPicture函數(shù)。WindowStare屬性設(shè)置窗體運行時的大小狀態(tài)。有三個可選值:0-Normal窗體大小由Height和Width屬性決定,此值為缺省值;1-Minimized窗體最小化成圖示;2-Maximized窗體最大化,充滿整個螢?zāi)弧?.窗體事件和方法事件Click(單擊)事件:單擊滑鼠左鍵時觸發(fā)
DblClick(雙擊)事件:雙擊窗體時觸發(fā)
Load(裝入)事件:窗體被裝入工作區(qū)時觸發(fā)方法
格式:[對象名.]Print[運算式列表][;|,]功能:在對象上輸出資訊例如:Form1.Print“VB”;”程式設(shè)計”
Cls
格式:[對象名.]Cls
功能:清除運行時用Print方法在窗體或圖片框種顯示的文本或圖形例如:Picture1.Cls
Move
格式:[對象名.]Move左邊距離[,上邊距離[,寬度[,高度]]]功能:移動窗體或控件,並可改變其大小例如:Text1.Move800,800,4000,3000
相關(guān)例子下載
二基本控件以及控件的格式化1.命令按鈕常用屬性:Enabled屬性:描述控件是否可用。
false:不可獲得焦點
true:可以獲得焦點,能觸發(fā)滑鼠事件Visable屬性:描述控件是否可見。
false:不可見,即隱藏(命令按鈕)
true:可見Default屬性和Cancel屬性
default屬性為true,則該按鈕為默認(rèn)按鈕,回車操作相當(dāng)於單擊此按鈕
cancel屬性為true,則該按鈕為默認(rèn)的取消按鈕,按ese相當(dāng)於單擊此按鈕Style屬性用來設(shè)置命令按鈕的顯示類型。其屬性可設(shè)置為:0-Standard:標(biāo)準(zhǔn)的,命令按鈕上不能顯示圖形和背景色,此為缺省值。1-Graphical:圖形的,可顯示圖形和背景色。Picture屬性設(shè)置命令按鈕中要顯示的圖形。只有將Style屬性設(shè)置為1,圖形才能在按鈕上顯示。ToolTipText設(shè)置滑鼠在命令按鈕上停留的提示文本資訊。事件:
命令按鈕常用事件是Click(單擊)事件。即程式運行後,單擊滑鼠按鈕時所觸發(fā)的事件。2.標(biāo)籤(Label).作用:固定位置顯示文本,僅用於顯示
現(xiàn)有如下程式:用於顯示輸入的姓名、性別、年齡等內(nèi)容的清空,點擊顯示按鈕則在最下麵的文本框中顯示輸入的內(nèi)容,點擊退出按鈕退出程式)
PrivateSubForm_Load()Label4.Caption=''EndSubPrivateSubCommand1_Click()Text1.Text="“,Text2.Text=""Text3.Text=""EndSubPrivateSubCommand2_Click()Label4.Caption=Label4.Caption+Label1.Caption&Text1.Text&Label2.Caption&Text2.Text&Label3.Caption&Text3.TextEndSubPrivateSubCommand3_Click()EndEndSub
標(biāo)籤常用屬性
alignment:文本對齊方式0:代表左對齊1:右對齊2:居中
name:標(biāo)籤的名字,用來標(biāo)識一個標(biāo)籤
caption:標(biāo)籤中顯示出來的文字,注意與name屬性的區(qū)別。
forecolor:標(biāo)籤的前景色,即文字的顏色
backcolor:標(biāo)籤的背景色
backstyle:標(biāo)籤的背景模式
0:不覆蓋原背景(透明)1:覆蓋原背景
top:標(biāo)籤左頂點的Y座標(biāo)
left:標(biāo)籤的左頂點的X座標(biāo)
width:標(biāo)籤的寬度
height:標(biāo)籤的高度
font:標(biāo)籤的字體
enabled:標(biāo)籤是否可用。值為true或falsevisible:標(biāo)籤是否可見。值為true或false
常用事件a.change事件:當(dāng)標(biāo)籤的內(nèi)容更改時觸發(fā),即在程式中更改標(biāo)籤的內(nèi)容時。
b.click事件:單擊事件,點擊標(biāo)籤觸發(fā)該事件
c.dbclick事件:雙擊事件,雙擊標(biāo)籤時觸發(fā)該事件標(biāo)籤的其他用法標(biāo)籤除了直接在設(shè)計階段設(shè)置之外,也常常在運行階段用程式的方式來顯示時間。time$是一個與時間有關(guān)的函數(shù),由於它的返回值是字串,因此可以把它賦值給標(biāo)籤的標(biāo)題,這樣就可以用標(biāo)籤來顯示時間,例如:label1.caption=time$
當(dāng)要在標(biāo)籤中同時顯示2行以上的字串,就一定要靠程式,在字串之間加上chr$(13)+chr$(10)控制碼。例如:label1.caption=time$+chr$(13)+chr$(10)+date$3.文本框用於輸入、編輯文本或用於輸出、顯示文本,文本框最多可容納的字元為2048個。但如果Multline=True,則輸入的字元數(shù)可達(dá)32K。
屬性如下:.multiline=true‘可輸入、顯示多行文本
.scrollbars=3-both‘加滾動條.selstart=數(shù)字‘設(shè)置所選文本的起始點.sellength=選定長度
(文本框)
方法.seltext例程:
OptionExplicitPrivateaa,compare:privateaddressAsIntegerPrivateSubCommand1_Click()aa=InputBox("請輸入你要查找的內(nèi)容","查找")
address=InStr(1,Text1.Text,aa,vbTextCompare)
'前者為在哪個串中搜索,在串1中搜索串2
Ifaddress>0Then
Text1.SetFocus:Text1.SelStart=address–1:Text1.SelLength=Len(aa)
Else
MsgBox"沒有相關(guān)內(nèi)容"
EndIfEndSubPrivateSubForm_Load()Text1.Text=“hfsdfonrklesnflkshdncvoisnhdlfmnsdlfjksdjfsdflksdjflksjdfl"_&"skldflsdjflsjflskdjflksdjcvosdjflskdjflksdjvlkhsndfksdlfjlksadjflk"EndSub事件chang‘當(dāng)文本框中內(nèi)容發(fā)生變化時觸發(fā)該事件
keydown,keyup‘按鍵(在顯示出按鍵內(nèi)容的同時)與提起按鍵時觸發(fā)事件參數(shù):[indexasinteger,]keycodeasintegert,shiftasinteger)a.index:當(dāng)控件是控件數(shù)組中的一個元素時,index代表在數(shù)組是索引值,即下標(biāo)
b.keycode:鍵盤掃描碼?!?3對應(yīng)回車
c.shift:代表shift,ctrl,alt鍵的狀態(tài);是一個3位的二進(jìn)位位域。(111)=>(alt,ctrl,shift)
故shift=6代表:110=>同時按下alt,ctrl兩鍵以上可判定是否只按下某鍵;但是如果需要瞭解是否按下了某鍵,則需要與特定數(shù)進(jìn)行遮罩Keypress事件:用於截獲在文本框/組合框中輸入的按鍵;Sub控件名_keypress([indexasinteger,]keyasciiasinteger)參數(shù):([indexasinteger,]keyasciiasinteger)a.index:當(dāng)控件是控件數(shù)組中的一個元素時,index代表在數(shù)組是索引值,即下b.keyascii:返回標(biāo)準(zhǔn)的ascii鍵碼可以用chr(keyascii)將ascii轉(zhuǎn)化為相應(yīng)的字元;或用=asc(char)將字元轉(zhuǎn)為ascii碼.(用於判定輸入是否為某字元)注意:keypress事件不是指出所按字元在鍵盤上的物理位置,而是傳送一個字符,故它可以判別大小寫。相反,keyup/keydown能識別的是所按字元在鍵盤上的物理位置,則大小寫字元的keycode碼是一樣的。(若要在keyup/keydown中判別字元的大小寫,需判定是否為shift+該鍵)
例程:檢驗輸入(key_down代碼詳解)PrivateSubCommand1_Click()num=Val(Text_day)Ifnum>31Ornum<1Then
Beep:MsgBox“輸入日期有誤“:Text_day.SetFocus:ExitSub
EndIfnum=Val(Text_month.Text)Ifnum>12Ornum<1Then
Beep:MsgBox“輸入月份有誤“:Text_month.SetFocus:ExitSub
EndIfnum=Val(Text_year.Text)Ifnum>2001Ornum<1900Then
Beep:MsgBox“輸入年份有誤“:Text_year.SetFocus:ExitSub
EndIfEndSubPrivateSubText_day_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then
Beep:MsgBox“請輸入數(shù)字“:KeyAscii=0
EndIfEndSub
PrivateSubText_month_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then
Beep:MsgBox"請輸入數(shù)字“KeyAscii=0
EndIfEndSubPrivateSubText_passwd_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then
Beep:MsgBox"請輸入數(shù)字“:KeyAscii=0
EndIfEndSubPrivateSubText_year_KeyPress(KeyAsciiAsInteger)IfKeyAscii<48AndKeyAscii<>8OrKeyAscii>57Then
Beep:MsgBox"請輸入數(shù)字“:KeyAscii=0
EndIf‘8代表退格符EndSubPrivateSubText1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=13ThenMsgBox“按下了回車符"
If(ShiftAnd2)>1ThenMsgBox“你按下了ctrl鍵"
EndSub三基本控件的格式化1.控件的添加/刪除A:窗體中添加控件(1)在工具箱中單擊所要添加的控件,然後將滑鼠移動到窗體中,此時滑鼠指針變?yōu)槭?,在需要加入控件的地方按住滑鼠左鍵拖動成想要的尺寸,在釋放滑鼠左鍵,就可以看到控件被繪製到窗體上。按住“Ctrl”鍵,可以繪製多個相同控件。(2)單擊將要刪除的控件,再按“Del”即可,誤刪可以使用“Ctrl+Z”還原。2.調(diào)整控件的大小與位置
調(diào)整大小方法:用滑鼠單擊需要調(diào)整的對象,再控件四周出現(xiàn)8個藍(lán)色矩形小方框“尺寸柄”,通過它可以調(diào)整。調(diào)整位置的方法:A:滑鼠拖動對象B:使用Ctrl+方向鍵C:Ctrl+Shift鍵,再用滑鼠移動可以微調(diào)控件位置。其中A:和B:兩種方法都只能以網(wǎng)格為單位,也便於多個控件對齊。3.窗體與控件佈局調(diào)整控件佈局調(diào)整:進(jìn)行調(diào)整之前都必須先選定需要調(diào)整的控件。A:通過“格式”菜單進(jìn)行調(diào)整;
B:通過“窗體編輯器”工具欄。窗體佈局調(diào)整是指決定程式運行時,窗體在螢?zāi)簧铣霈F(xiàn)的位置。利用“窗體佈局窗口”,可以進(jìn)行調(diào)整。具體步驟為:視圖窗體佈局窗口當(dāng)重新調(diào)整“窗體佈局窗口”時,每個窗體都將相當(dāng)於設(shè)計窗口的大小進(jìn)行調(diào)整??蛻魠^(qū)域的左上角代表桌面座標(biāo)(0,0)點。
多個控件的選定方法:A:使用Shift鍵配合滑鼠的單擊;B:使用滑鼠在窗體上拖出一方框,在框內(nèi)的控件將被全部選中。四簡單語句1.Print方法Print是輸出數(shù)據(jù)的一種重要的方法。(1)格式[對象名.]Print[運算式列表](2)功能在對象上輸出運算式的值。(3)說明A:對象名可以是Form(窗體),Debug(立即窗口),Print(印表機)等。例如:Print”12*2=“;12*2‘在當(dāng)前窗口上輸出12*2=24Picture1.print“VB”‘在圖片框Picture1上輸出VB;Printer.print“OK”‘在印表機上輸出OKB:運算式列表是一個或多個運算式,若省略此項,則輸出一空行。輸出數(shù)據(jù)時,數(shù)值數(shù)據(jù)的前面有一個符號位,後面有一個空格;而字串前後都沒有空格。相關(guān)例子:例1.Print3;4‘用“;”分隔的各項,按緊湊格式顯示;
例2.Print‘輸出空行例3.Print“1234567”;Spc(2);”abcdef”‘輸出數(shù)據(jù)時,字串前後都沒有空格。例4.PrintTab(2);”**”;Tab(6);”**”;Tab(10);”**”;Tab(14);”**”‘Spc(2)使字串間留有兩個空格,Tab函數(shù),使第2,6,10,14列定位輸出“**”.2.InputBox輸入框此函數(shù)可以生成輸入框來接受用戶的輸入。(1)格式InputBox(提示[,標(biāo)題][,缺省值][,x座標(biāo)值][,y座標(biāo)位置])(2)功能生成一個能接受用戶輸入的對話框,並返回用戶在對話框中輸入的資訊。(3)例子說明A$=InputBox(“第一項為提示”&vbNewLine$“用vbNewLine實現(xiàn)換行”,“第二項為標(biāo)題”,“第三項為缺省值”,200,200)第一項“提示”;第二項“標(biāo)題”;第三項“缺省值”;第四項“x座標(biāo)位置”;第五項“y座標(biāo)位置”。3.MsgBox消息框此函數(shù)可生成用戶提示資訊和選擇互動式對話框。(1)格式MsgBox(提示[,按鈕數(shù)值][,標(biāo)題])(2)功能MsgBox函數(shù)在對話框中顯示資訊,在用戶單擊對話框上的按鈕時,可返回一個整數(shù)以標(biāo)明用戶單擊的是那個按鈕。(3)說明第一項“提示”:指定在消息框中出現(xiàn)的文本;第二項“按鈕數(shù)值”:整數(shù)運算式,指定消息框中出現(xiàn)的按鈕和圖示;第三項“標(biāo)題”:指定消息框的標(biāo)題。4.Cls語句(1)格式[對象名.]Cls(2)功能清除窗體(Form)或圖片框(PictureBox)中由Print方法顯示的文本和圖形方法所生成的圖形,並把輸出位置移動到對象的左上角。(3)說明格式中的對象可以是窗體或圖片框,如果省略對象名,則清除當(dāng)前當(dāng)前窗體的顯示內(nèi)容。用Cls語句清楚後的區(qū)域以背景色填充,但Picture屬性的背景位圖和放置的控件不受影響。(4)舉例PrivateSubForm1_Click()ClsEndSub5.Rem語句(1)格式‘|Rem<注釋內(nèi)容>(2)功能實現(xiàn)在代碼中加入用來解釋或說明的附加文本。(3)說明為提高程式的可讀性,通常在程式的適當(dāng)位置加上必要的注釋。注釋語句是非執(zhí)行語句,不參加編譯,對程式運行無影響。(4)例子Mystr1=“Hello”‘這也是一條注釋,無需使用冒號。6.End語句(1)格式End(2)功能用來結(jié)束程式的執(zhí)行,並關(guān)閉已打開的檔。(3)說明它提供了一種關(guān)閉程式的方法。執(zhí)行它,會卸載程式中所有窗體,釋放所有記憶體。(4)例子PrivateSubCommand4_click()‘單擊“退出”按鈕End‘結(jié)束程式EndSub7.Stop語句(1)格式Stop(2)功能在對程式調(diào)試時,用來暫停程式的執(zhí)行。(3)說明一般用在程式調(diào)試時,其相當(dāng)於在程式代碼中設(shè)置中斷點。(4)例子PrivateSubCommand5_click()‘單擊“退出”按鈕MsgBox“在Stop語句前顯示”Stop‘執(zhí)行Stop語句會在此暫停,按F5或F8鍵逐句調(diào)試MsgBox“在Stop語句後顯示”EndSub第三章VB程式設(shè)計語言基礎(chǔ)一VB中的數(shù)據(jù)與運算二標(biāo)準(zhǔn)函數(shù)三三種基本結(jié)構(gòu)(順序,判定,迴圈)一VB中的數(shù)據(jù)與運算3.1.1數(shù)據(jù)類型3.1.2變數(shù)與常量3.1.3運算符和運算式3.1.4
數(shù)組數(shù)值數(shù)據(jù)類型
(1)Integer型和Long型用來表示整數(shù)。Integer型數(shù)據(jù)占2個位元組,Long型數(shù)據(jù)占4個位元組。除了十進(jìn)位整型數(shù),常用的還有八進(jìn)制和十六進(jìn)制,它們的表示方法為:
Intger型:八進(jìn)制數(shù)值前加&O或&。如&O123
十六進(jìn)制數(shù)值前加&H。如&H123Long型:八進(jìn)制數(shù)值前加&O或&,最後加&。如&O123&
十六進(jìn)制數(shù)值前加&H,最後加&。如&H123&(2)Single型和Double型用來表示浮點數(shù)。Single型占4個位元組,Double型占8個位元組。表示一些單精確度型常量和雙精度常量時,可以用以下方法:0.123E5,0.34E-2,0.8D2
3.1.1數(shù)據(jù)類型(3)Currency型為表示錢款而設(shè)置。占8個位元組。小數(shù)點左邊最多15位,右邊最多4位。(4)Byte型占1個位元組,表示無符號整數(shù)。字元數(shù)據(jù)類型字元(String)類型存放字元型數(shù)據(jù)。用雙引號括起來,如“abc”。
注:①”“表示空字元串,長度為0。
②若字串中含有雙引號,則用連續(xù)兩個雙引號表示,如”abc””12”。日期數(shù)據(jù)類型日期型(Date)表示日期和時間,占8個位元組。用“#”括起來,如#2004-5-4#等。邏輯數(shù)據(jù)類型
邏輯型(Boolean)表示邏輯判斷,占2個位元組。只有True和Fale兩個值。邏輯型數(shù)據(jù)轉(zhuǎn)換成整型數(shù)據(jù)時,True轉(zhuǎn)換為-1,F(xiàn)alse轉(zhuǎn)換為0。其他類型數(shù)據(jù)轉(zhuǎn)換成邏輯型數(shù)據(jù)時,非0數(shù)轉(zhuǎn)換為True,0轉(zhuǎn)換為False。
對象數(shù)據(jù)類型
對象型(Object)表示圖形、OLE對象或其他對象,占4個位元組。變體數(shù)據(jù)類型變體型(Varient)可存放任何類型的數(shù)據(jù)類型說明符
可在常量或變數(shù)的後邊加上類型說明符指明它是哪一種數(shù)據(jù)類型,常見的類型說明符如下:整型:%長整型:&
單精確度型:!雙精度型:#字串型:$貨幣型:@3.1.2變數(shù)與常量命名規(guī)則
1.名字由字母、漢字、數(shù)字或下劃線組成;2.名字的第一個字元必須是字母或漢字;3.名字的有效長度小於等於255個字元;4.不能使用VB中的關(guān)鍵字。5.VB中不區(qū)分變數(shù)名的大小寫。6.為了增加程式的可讀性,可在變數(shù)名前加一個縮寫的首碼來表明該變數(shù)的數(shù)據(jù)類型。
變數(shù)變數(shù)定義的一般格式如下:
Declare變數(shù)名As類型其中,①Declare可以是Dim、Static、Public、ReDim。Dim、Static用於定義局部變數(shù)
Dim用於定義窗體和模組級變數(shù)
Public用於定義全局變數(shù)
ReDim用於重新定義數(shù)組
②類型可以是基本數(shù)據(jù)類型或用戶自定義數(shù)據(jù)類型③若“As類型”省略,默認(rèn)為變體數(shù)據(jù)類型④可在變數(shù)名後加類型說明符代替“As類型例如:DimxasInteger,yasSingleDimsasString
注:Dim定義的局部變數(shù)是自動變數(shù),過程結(jié)束後其值被重新設(shè)置;
Static定義的局部變數(shù)是景泰變數(shù),過程結(jié)束後其值繼續(xù)保留。常量
VB中有三種常量:即直接常量、用戶聲明的符號常量和系統(tǒng)提供的常量。(1)直接常量直接常量其常數(shù)值直接反映了其類型,也可在常數(shù)值後緊跟類型符顯示地說明常數(shù)的數(shù)據(jù)類型。(2)符號常量常量可用由用戶定義的符號常量表示,格式如下:
Const符號常量名[As類型]=運算式[,常量名=運算式]……例如:ConstPI=3.1415926(3)系統(tǒng)提供的常量
除了用戶通過聲明創(chuàng)建符號常量外,VB系統(tǒng)還提供了應(yīng)用程式和控件定義的常量,這些常量位於對象庫中,在“對象流覽器”中的VisualBasic(VB)、VisualBasicforApplications(VBA)等對象庫中列舉了VisualBasic的常量。
3.1.3運算符和運算式運算符
1.算術(shù)運算符加:+減:-乘:*整除:\浮點除:/取模:Mod
負(fù)號:-冪運算:^
2.字串運算符“&”和”+“都是將兩個字串拼接起來。但字串連接時最好用”&”,因為“+”還可以作為算術(shù)運算符使用
3.關(guān)係運算符對兩個運算式的值做比較,若關(guān)係成立,則返回True,否則返回False。
等於=大於>大於等於>=小於<小於等於<=不等於<>或><字串匹配Like對象引用比較Is
4.邏輯運算符取反:Not與:And或:Or
異或:Xor等價:Eqv蘊含:Imp
運算式運算式由變數(shù)、常量、運算符、函數(shù)和圓括號按一定的規(guī)則組成。運算式通過運算後有一個結(jié)果,運算結(jié)果的類型由數(shù)據(jù)和運算符共同決定。當(dāng)一個運算式中出現(xiàn)了多種不同類型的運算符時,不同類型的運算符優(yōu)先順序如下:
算術(shù)運算符>字元運算符>關(guān)係運算符>邏輯運算符
常用內(nèi)部函數(shù)
VB提供了大量的內(nèi)部函數(shù)(或稱標(biāo)準(zhǔn)函數(shù))供用戶在編程時調(diào)用。內(nèi)部函數(shù)按其功能可分成數(shù)學(xué)函數(shù)、轉(zhuǎn)換函數(shù)、字串函數(shù)、日期函數(shù)和格式輸出函數(shù)等。
具體內(nèi)容參見課本。3.1.4數(shù)組1.數(shù)組的概念2.靜態(tài)數(shù)組與動態(tài)數(shù)組3.數(shù)組的清除和重定義4.數(shù)組元素的基本操作5.控件數(shù)組6.自定義數(shù)據(jù)類型1.數(shù)組的概念一、數(shù)組的概念
在實際應(yīng)用中,經(jīng)常需要處理同一類型的成批數(shù)據(jù)。比如,要處理100個學(xué)生的會計這門課程的考試成績,如果在程式中定義100個變數(shù)來表示這批成績,顯然是很麻煩的。我們可以用VB提供的數(shù)組來完成這個功能??梢杂胏1,c2,…,c100來分別代表每個學(xué)生的分?jǐn)?shù),也就是說,用一批具有相同名字、不同下標(biāo)的下標(biāo)變數(shù)來表示同一屬性的一組數(shù)據(jù),這樣能更清楚的表示它們之間的關(guān)係。在VB中,把一組具有相同名字、不同下標(biāo)的下標(biāo)變數(shù)稱為數(shù)組。在電腦中,下標(biāo)用“()”括起來。比如c(2),其中c為數(shù)組名,2是下標(biāo)。根據(jù)數(shù)組中下標(biāo)變數(shù)的個數(shù)可以分為一維數(shù)組、二維數(shù)組或多維數(shù)組。二、數(shù)組的聲明定義數(shù)組可以用Dim、Public、Private、Static語句實現(xiàn)。格式(以Dim為例):Dim<數(shù)組名>(<第一維說明>[,<第二維說明>]……)[As<類型>]例:Dimc(99)asSingleDims(3,4)asstringDimstu(3,6)Dima(2to100)asstring*5Dimb(2to30,5to40)說明:①數(shù)組必須要先定義,後使用②如果不用AS語句指明類型,默認(rèn)為變體數(shù)據(jù)類型③一般情況下,下標(biāo)的下界默認(rèn)為0,如果希望下標(biāo)從1開始,可以用OptionBase語句設(shè)置,格式為OptionBasen,其中n為下標(biāo)的下界,只能是0或1④可以根據(jù)需要指定數(shù)組下標(biāo)的下界,格式為Dim數(shù)組名([下界To]上界[,[下界To]上界]……)⑤在同一個過程中,數(shù)組名不能與變數(shù)名同名⑥在定義數(shù)組時如果指明了類型,那麼數(shù)組中的每個元素都是這種類型的;如果沒有指明或定義成了變體數(shù)據(jù)類型,則其中的每個元素也是變體類型,可以存放各種類型的數(shù)據(jù)。2.靜態(tài)數(shù)組與動態(tài)數(shù)組定義數(shù)組後,為了使用數(shù)組,必須為數(shù)組開闢所需要的記憶體區(qū)。根據(jù)記憶體區(qū)開闢時機的不同,可把數(shù)組分為靜態(tài)數(shù)組和動態(tài)數(shù)組。通常把需要在編譯時開闢記憶體區(qū)的數(shù)組叫做靜態(tài)數(shù)組,把需要在運行時開闢記憶體區(qū)的數(shù)組叫做動態(tài)數(shù)組。一、靜態(tài)數(shù)組靜態(tài)數(shù)組的數(shù)組元素的個數(shù)是在數(shù)組聲明時確定的,系統(tǒng)運行過程中它的個數(shù)不變。前面定義的幾個數(shù)組都是靜態(tài)數(shù)組。我們主要講一下動態(tài)數(shù)組。
二、動態(tài)數(shù)組動態(tài)數(shù)組是在聲明數(shù)組時未給出數(shù)組的大?。ㄊ÷岳ɑ≈械南聵?biāo)),當(dāng)要使用它時,隨時用ReDim語句重新指出大小的數(shù)組。使用動態(tài)數(shù)組的優(yōu)點是可根據(jù)用戶需要,有效地利用存儲空間,它是在程式執(zhí)行到ReDim語句時分配存儲空間。建立動態(tài)數(shù)組的方法是,使用Dim、Private或Public語句聲明括弧內(nèi)為空的數(shù)組,然後在過程中用ReDim語句指明該數(shù)組的大小。形式如下:
ReDim<數(shù)組名>(<下標(biāo)1>[,<下標(biāo)2>…])[As<類型>]例如:
Dims()asinteger‘定義動態(tài)數(shù)組s,括弧不能省略
PrivateSubForm_Click()......n=InputBox("輸入n的值")
m=InputBox("輸入m的值")
n=Val(n)m=vla(m)ReDims(n,m)‘重新指明數(shù)組的大小......
EndSub
在過程中可多次使用ReDim語句來改變數(shù)組的大小,不能改變數(shù)組維數(shù),也不能改變數(shù)組的類型。每次執(zhí)行ReDim語句時,當(dāng)前存儲在數(shù)組中的值都會全部丟失。VisualBasic重新將數(shù)組元素的值置為Empty(對Variant數(shù)組)、置為0(對Numeric數(shù)組)、置為零長度字串(對String數(shù)組)。如果希望改變數(shù)組大小又不丟失數(shù)組中的數(shù)據(jù),可使用具有Preserve關(guān)鍵字的ReDim語句就可做到這點。如:Dimthis()AsStringPrivateSubCommand1_Click()ReDimthis(4)this(2)="microsoft"Printthis(2)ReDimPreservethis(6)Printthis(2)EndSub3.數(shù)組的清除和重定義在一個程式中,同一個數(shù)組只能定義一次。有時可能需要清除數(shù)組的內(nèi)容或?qū)?shù)組重新定義,這可以用Erase語句來實現(xiàn)。格式如下:
Erase<數(shù)組名>[,<數(shù)組名>]……說明:①在Erase語句中,只給出要刷新的數(shù)組名,不帶括弧和下標(biāo)②Erase語句用於靜態(tài)數(shù)組時,用來重新初始化各元素,內(nèi)容被清空。若是數(shù)值數(shù)組各元素被置0,字元數(shù)組各元素被置為空字元串。③Erase語句用於動態(tài)數(shù)組時,刪除整個數(shù)組的結(jié)構(gòu)並釋放該數(shù)組所佔用的記憶體。動態(tài)數(shù)組經(jīng)Erase後不再存在。下次引用該動態(tài)數(shù)組之前,必須用ReDim語句重新定義該數(shù)組的維數(shù)。4.數(shù)組元素的基本操作一、給數(shù)組元素賦值1.利用迴圈結(jié)構(gòu)
Fori=1to5A(i)=3Nexti2.利用InputBox()函數(shù)輸入
PrivateSubCommand1_Click()Dimb(2,3)Fori=0To2Forj=0To3b(i,j)=InputBox("輸入"&Str(i)&","&Str(j)&"的值")
NextjNexti
Fori=0To2Forj=0To3Printb(i,j);"";NextjPrintNextiEndSub
當(dāng)給一個較大的數(shù)組賦值時,以上方法比較麻煩,可以用Array()函數(shù)解決。3.利用Array()函數(shù)
PrivateSubForm_Click()Dima,ba=Array(1,2,3,4,5)b=Array("11","22","33")Fori=0ToUBound(a)Printa(i);NextiPrint
Fori=0ToUBound(b)Printb(i);NextiPrintEndSub
說明: ①Array()函數(shù)對各元素賦值,聲明的數(shù)組是動態(tài)數(shù)組或連小括弧都省略的數(shù)組,並且類型只能是Varient。②數(shù)組下界默認(rèn)為0,可通過OptionBase語句決定,上界由Array()函數(shù)括弧內(nèi)的參數(shù)個數(shù)決定,也可通過UBound()函數(shù)獲得。③Array函數(shù)只適用於一維數(shù)組。二、數(shù)組元素的輸出可以通過Print語句對數(shù)組輸出對一維數(shù)組,用單重迴圈就能實現(xiàn),對二維數(shù)組,要用二重迴圈實現(xiàn)。三、數(shù)組元素的複製1.單個數(shù)組元素可以像簡單變數(shù)一樣從一個數(shù)組複製到另一個數(shù)組。如:Dimb(4),a(6)……b(2)=a(3)2.要複製整個數(shù)組,要使用For迴圈語句。PrivateSubCommand1_Click()Dima(),b()a=Array(1,2,3,4,5)ReDimb(UBound(a))Fori=0ToUBound(a)b(i)=a(i)NextiFori=0ToUBound(a)Printb(i);NextiEndSub3.要複製整個數(shù)組,也可以使用一條簡單的賦值語句即可。如:
Dima(4)asinteger,b()asintegerA(0)=0:a(1)=5:a(2)=10:a(3)=13:a(4)=14B=a使用這種方法賦值時,必須要注意:①賦值號兩邊的數(shù)據(jù)類型必須一致②如果賦值號左邊的是一個大小固定的數(shù)組,則數(shù)組賦值出錯③賦值號左邊的必須是一個動態(tài)數(shù)組,賦值時系統(tǒng)自動將動態(tài)數(shù)組ReDim成與右邊同樣大小的數(shù)組四、ForEach…Next語句與For…Next語句類似,兩者都是用來執(zhí)行指定重複次數(shù)的語句。但ForEach…Next語句是專門用於運算元組的,它的格式如下:
ForEach<成員>In<數(shù)組名>[<循環(huán)體>][ExitFor]Next[<成員>]說明:①格式中的“成員”必須是一個變體變數(shù),是為迴圈提供的,代表的是數(shù)組中的每個元素。②〈數(shù)組名〉沒有括弧和上下界用ForEach…Next語句可以對數(shù)組元素進(jìn)行處理,它所重複執(zhí)行的次數(shù)由數(shù)組中元素的個數(shù)確定,數(shù)組中有多少個元素,就自動重複執(zhí)行多少次。例:OptionBase1PrivateSubCommand1_click()Dimabc(10)AsIntegerFori=1To10abc(i)=Int(Rnd*100)NextiPrint"使用普通迴圈輸出:"
Fori=1To10Printabc(i);NextiPrintPrint"使用ForEach…Next輸出:"
ForEachxInabcPrintx;NextEndSub5.自定義數(shù)據(jù)類型自定義數(shù)據(jù)類型由若干個標(biāo)準(zhǔn)數(shù)據(jù)類型組成,又稱記錄類型。通過Type語句實現(xiàn)。格式:Type自定義類型名元素名[(下標(biāo))]As類型名……[元素名[(下標(biāo))]As類型名]EndType如:TypeStudentNoAsIntegerNameAsString*20SexAsString*1Mark(1To4)AsSingleTotalAsSingleEndType說明:①自定義數(shù)據(jù)類型一般在標(biāo)準(zhǔn)模組(.bas)中定義,默認(rèn)是Public。若在窗體模組中定義,必須是Private。②自定義數(shù)據(jù)類型中的元素類型可以是字串,但應(yīng)是定長字串。定義好了類型,就可在變數(shù)的聲明時使用該類型,定義的方法和標(biāo)準(zhǔn)類型是一樣的。比如:Dimstuasstudent表示自定義類型變數(shù)中元素的格式為:變數(shù)名.元素名,如stu.no,等??山o變數(shù)stu賦值:標(biāo)準(zhǔn)函數(shù)2.1數(shù)學(xué)函數(shù)2.2轉(zhuǎn)換函數(shù)2.3字串函數(shù)2.4日期與事間函數(shù)1.數(shù)學(xué)函數(shù)Sin(N):返回引數(shù)N的正玄函數(shù)值,如:sin(0)=0,N為弧度。Cos(N):返回引數(shù)N的餘玄函數(shù)值,如:cos(0)=1,N為弧度。Tan(N):返回引數(shù)N的正切函數(shù)值,如:tan(0)=0,N為弧度。Atn(N):返回引數(shù)N的反正切值,如:atn(0)=0,函數(shù)值為弧度。Sgn(N):返回引數(shù)N的符號。N<0,返回-1;N=0,返回0;N》0,返回1。如:Sgn(35)=1,Sgn(0)=0,Sgn(-5.34)=-1Abs(N):返回引數(shù)N的絕對值,Abs(-345)=345,Abs(345)=345。Sqr(N):返回引數(shù)N的平方根,N>=0,如:Sqr(81)=9。Exp(N):返回e的N次冪值,n>=0。如:Exp(3)=20.086。Log(N):返回N的自然對數(shù),N>0,如:Log(10)=2.3Int(N):返回不大於N的最大整數(shù),如:Int(3.6)=3。Cint(N):四捨五入整數(shù)。Cint(3.6)=4。Rnd(N):返回0~1之間的隨機小數(shù)。注意:三角函數(shù)的引數(shù)以弧度表示。
2.轉(zhuǎn)換函數(shù)Fix(n):返回n的整數(shù)部分,截取小數(shù)部分;如:Fix(3.4)=3。Asc(c):返回字串C首字元的ASCII碼值,如:Asc(”A”)=65。Chr(n):返回ASCII碼值為n的字元,Chr(65)=”65”。Val(c):把數(shù)字組成的字串型數(shù)據(jù)轉(zhuǎn)換稱數(shù)值型。Val(”456”)=456。Str(n):把數(shù)值n轉(zhuǎn)換成字元型,Str(357)=”357”。Lcase(c):把字串c中大寫字母轉(zhuǎn)換為小寫字母。Lcase(”A”)=”a”。Ucase(c):把字串c中小寫字母轉(zhuǎn)換為大寫字母。Ucase(”a”)=”A”。3.字串函數(shù)Trim(c):去掉字串c兩端的空格,Trim(”ab”)=”ab”。Left(c,n):截取C最左邊的n個字元,Left(”command,3”)=”com”。Right(c,n):截取c最右邊的n個字元,Right(”command,3”)=”and”.Mid(C,m,n):截取c中第m個字元開始的n個字元。Mid(”command”,3,2)=”mm”。Len(c):返回c包含的字元數(shù),漢字空格都算一個字元。Len(”中”)=1。Ucase(c):將c中的小寫字母轉(zhuǎn)換成大寫字母。Ucase(”Who”)=”WHO”.Lcase(c):將c中的大寫字母轉(zhuǎn)換成小寫字母。Lcase(”Who”)=”who”。4.日期與時間函數(shù)Time[$][()]:返回系統(tǒng)當(dāng)前時間;Date[$][()]:返回系統(tǒng)當(dāng)前日期;Now[()]:返回系統(tǒng)當(dāng)前日期和時間;Day(c/n):返回數(shù)據(jù)中當(dāng)月第幾天;Month(c/n):返回數(shù)據(jù)中當(dāng)年第幾月;WeekDay(c/n):返回數(shù)據(jù)當(dāng)天是星期幾。三基本控制結(jié)構(gòu)3.1順序結(jié)構(gòu)3.2選擇結(jié)構(gòu)3.3迴圈結(jié)構(gòu)3.1順序結(jié)構(gòu)順序結(jié)構(gòu)就是各語句按出現(xiàn)的先後次序執(zhí)行。主要是由一些賦值語句、輸入/輸出語句等組成。賦值語句
格式:變數(shù)名=運算式
在VB中,既可以給一個變數(shù)賦值,也可以給對象的某一個屬性賦值。InputBox()函數(shù)
格式:InputBox(提示[,標(biāo)題][,默認(rèn)][,x座標(biāo)位置][,y座標(biāo)位置])功能:產(chǎn)生一個對話框,讓用戶從鍵盤輸入內(nèi)容,當(dāng)用戶單擊“確定”按鈕或按回車鍵時,函數(shù)返回輸入的值。
PrivateSubCommand1_Click()r=InputBox("請輸入姓名","教師登記表","張三",3000,4000)
PrintrEndSub
其中:“提示”:字串運算式,在對話框中作為資訊顯示。“標(biāo)題”:字串運算式,在對話框的標(biāo)題區(qū)顯示?!澳J(rèn)”:字串運算式,顯示輸入框裏的默認(rèn)資訊?!皒座標(biāo)位置”、“y座標(biāo)位置”:整型運算式,座標(biāo)確定對話框左上角在螢?zāi)簧系奈恢茫災(zāi)蛔笊辖菫樽鶚?biāo)原點,單位為twip。
在這五個參數(shù)中,只有“提示”是必選的。注:函數(shù)的返回值為字串類型,所以如果要對返回值進(jìn)行算術(shù)運算,必須要轉(zhuǎn)換成數(shù)值型的。
例如:PrivateSubCommand1_Click()r=InputBox("請輸入第一個數(shù)")
s=InputBox("請輸入第二個數(shù)")
r=Val(r):s=Val(s)x=r+sPrintxEndSubMsgBox()函數(shù)格式:變數(shù)=MsgBox(提示[,按鈕][,標(biāo)題])功能:打開一個資訊框,等待用戶選擇一個按鈕。例如:PrivateSubCommand1_Click()r=MsgBox("輸入密碼",51,"密碼錯誤")
PrintrEndSub
“提示”和“標(biāo)題”:意義與InputBox函數(shù)中對應(yīng)的參數(shù)相同?!鞍粹o”:整型運算式,用來控制在資訊框內(nèi)顯示的按鈕、圖示的種類和數(shù)量,該參數(shù)的值由4類數(shù)值相加產(chǎn)生,這4類數(shù)值或符號常量分別表示按鈕類型、顯示圖示的種類、活動按鈕(默認(rèn)按鈕)的位置及強制返回模式。按鈕設(shè)置值及意義見下圖?!鞍粹o”設(shè)置值及意義
4類分組系統(tǒng)內(nèi)部常量按鈕值描述按鈕類型VbOkOnlyVbOkCancelvbAboutRetryIgnoreVbYesNoCancelVbYesNoVbRetryCancel012345只顯示“確定”按鈕顯示“確定”、“取消”按鈕顯示“終止”、“重試”、“忽略”按鈕顯示“是”、“否”、“取消”按鈕顯示“是”、“否”按鈕顯示“重試”、“取消”按鈕圖示類型VbCriticalVbQuestionVbExclamationVbInformation16324864關(guān)鍵資訊圖示紅色STOP標(biāo)誌詢問資訊圖示?警告資訊圖示!資訊圖示i默認(rèn)按鈕VbDefaultButtonlVbDefaultButton2VbDefaultButton30256512第1個按鈕為默認(rèn)第2個按鈕為默認(rèn)第3個按鈕為默認(rèn)模式VbApplicationModuleVbSystemModule04096應(yīng)用模式系統(tǒng)模式MsgBox函數(shù)返回值是一個整數(shù)值,這個返回值與所選的按鈕有關(guān),所選按鈕返回數(shù)值的意義見下圖。被單擊的按鈕返回值系統(tǒng)內(nèi)部常量確定1VbOk取消2VbCancel終止3VbAbort重試4VbRetry忽略5VbIgnore是6VbYes否7vbNo再看一個有關(guān)返回值的例子:編寫一個程式,用MsgBox函數(shù)判斷是否繼續(xù)執(zhí)行。PrivateSubForm_Click()DimMsg$,Title$Dimm%Msg$="此數(shù)據(jù)是否正確"
Title$="數(shù)據(jù)驗證對話框"
m=MsgBox(Msg$,35,Title$)‘35=3+32+0+0Ifm=6Then‘Print"正確";m*mElseIfm=7Orm=2ThenPrint"數(shù)據(jù)錯誤,請重新輸入"
EndIfEndSub對於一些較簡單的資訊提示,我們可以使用MsgBox語句,格式如下:
MsgBox提示[,按鈕][,標(biāo)題]它與MsgBox函數(shù)的主要區(qū)別是函數(shù)有返回值,而語句沒有返回值3.2選擇結(jié)構(gòu)選擇結(jié)構(gòu),就是對條件進(jìn)行判斷,根據(jù)判斷結(jié)果,選擇執(zhí)行不同的分支。
VB中提供了多種形式的條件語句來實現(xiàn),我們主要介紹If條件語句和SelectCase語句If條件語句
If條件語句有兩種格式:單行結(jié)構(gòu)和塊結(jié)構(gòu)1.單行結(jié)構(gòu)格式:
If<條件>Then<語句塊1>[Else<語句塊2>]如果Then或Else後面有多條語句,那麼各語句之間用“:”隔開。2.塊結(jié)構(gòu)格式:
If<條件>Then<語句塊l>[Else<語句塊2>]
EndIfThen和Else後面不能有語句,而且最後不要忘了寫上EndIf。這兩種結(jié)構(gòu)都比較簡單,就不再舉具體的例子了。在實際應(yīng)用中,我們還經(jīng)常用的If語句的嵌套,即一個If語句裏又包含一個If語句。舉一個簡單的例子:某商場為了促銷,採用購物打折的優(yōu)惠辦法,每位顧客一次購物(1)1000元以上,按九五折優(yōu)惠(2)2000元以上,按九折優(yōu)惠(3)3000元以上,按八五折優(yōu)惠(4)5000元以上,按八折優(yōu)惠編寫程式,輸入購物款數(shù),計算並輸出優(yōu)惠價。方法一:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=val(Text1.Text)Ifx<1000Theny=xElseIfx<2000Theny=0.95*xElseIfx<3000Theny=0.9*xElseIfx<5000Theny=0.85*xElsey=0.8*xEndIfEndIf
EndIfEndIfText2.Text=Str(y)EndSub上面的這個程式出現(xiàn)多次If語句嵌套,程式長,不便閱讀。為此VB提供了帶ElseIf的塊If語句,使程式簡化易寫。其格式如下:If<條件1>Then<語句塊l>Elself<條件2>Then<語句塊2>……[Else<語句塊n+1>]EndIf上面的例子可以改寫成這種格式的,代碼如下:方法二:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx<1000Theny=xElseIfx<2000Theny=0.95*xElseIfx<3000Theny=0.9*xElseIfx<5000Theny=0.85*xElsey=0.8*xEndIfText2.Text=Str(y)EndSubSelectCase語句又稱情況語句,是多分支結(jié)構(gòu)的另一種形式。格式:
SelectCase變數(shù)或運算式
Case運算式列表1<語句塊1>
Case運算式列表2<語句塊2>…[CaseElse<語句塊n+1>]EndSelect
格式中的“運算式列表”可為下列形式之一:(1)運算式[,運算式]……
eg:Case2,4,6,8(2)運算式To運算式
eg:Case1to5(3)Is關(guān)係運算運算式
eg:CaseIs<10情況語句執(zhí)行時先對“測試運算式”求值,然後測試該值與哪一個Case子句中的“運算式列表”匹配,如果找到了,就執(zhí)行與該Case語句有關(guān)的語句塊,執(zhí)行完後轉(zhuǎn)移到EndSelect後面的語句;如果沒有找到,則執(zhí)行與CaseElse子句有關(guān)的語句塊,然後在轉(zhuǎn)移到EndSelect後面的語句。剛才那個購物打折的例子同樣可以用情況語句實現(xiàn),代碼如下:方法三:PrivateSubForm_Click()DimxAsSingle,yAsSinglex=InputBox("請輸入購物款數(shù)")
x=Val(x)SelectCasexCaseIs<1000y=xCaseIs<2000y=0.95*xCaseIs<3000y=0.9*x
CaseIs<5000y=0.85*xCaseElsey=0.8*xEndSelectPrint"購物款數(shù):";x,"優(yōu)惠價:";yEndSub同一個問題,解決的方法可能有多種,我們最好選擇自己比較熟悉而又簡單的來實現(xiàn)3.3迴圈結(jié)構(gòu)在實際應(yīng)用中,經(jīng)常遇到一些操作並不複雜,但需要反復(fù)多次處理的問題,比如人口增長統(tǒng)計、計算存款利息等,這些問題如果用順序結(jié)構(gòu)來處理十分麻煩,有時甚至難以實現(xiàn),而使用VB提供的迴圈語句可以輕鬆實現(xiàn)。迴圈結(jié)構(gòu)就是在指定的條件下多次重複執(zhí)行一組語句。VB提供了兩種不同風(fēng)格的迴圈結(jié)構(gòu):計數(shù)迴圈(For-Next迴圈)當(dāng)迴圈(While迴圈)
Do迴圈(Do-Loop迴圈)For迴圈語句
格式:For迴圈變數(shù)=初值To終值[step步長]<語句塊>[ExitFor]循環(huán)體<語句塊>Next迴圈變數(shù)
說明:①迴圈變數(shù)也稱“迴圈計算器”或“迴圈控制變數(shù)”,為數(shù)值型。②初值與終值均為數(shù)值運算式。③步長是一個數(shù)值運算式,為迴圈變數(shù)的增量,可正可負(fù);如果省略,默認(rèn)為1。④ExitFor可用於提前退出for迴圈。⑤Next後面的“迴圈變數(shù)”與For後面的“迴圈變數(shù)“必須相同。執(zhí)行過程:①把“初值”賦給“迴圈變數(shù)”②檢查“迴圈變數(shù)”是否超過終值,若沒有則執(zhí)行循環(huán)體,若超出則結(jié)束迴圈,執(zhí)行Next後面的語句③迴圈變數(shù)加步長,轉(zhuǎn)②,繼續(xù)迴圈。由上可看出For-Next迴圈的迴圈次數(shù)由初值、終值和步長三個因素決定,計算公式為:迴圈次數(shù)=Int(終值-初值)/步長+1下麵舉一個例子:求n!(n為自然數(shù))PrivateSubForm_Click()DimnAsIntegern=InputBox("輸入n的值:")
k=1Fori=1Tonk=k*iNextiPrintn;"!=";kEndSub再看一個有關(guān)步長和ExitFor語句的例子。PrivateSubForm_Click()Fori=1To100s=s+iIfs=4851ThenExitForEndIfNextiPrintiEndSub當(dāng)迴圈(While迴圈)格式:
While條件[語句塊]
Wend
當(dāng)條件為True時,執(zhí)行循環(huán)體。
例:PrivateSubForm_click()DimcharAsStringConstch$="?"Counter=0msg$="輸入一個字母"
char=InputBox$(msg$)Whilechar<>chCounter=Counter+1char=InputBox$(msg$)WendPrint"輸入字母的個數(shù)為:";CounterEndSub
Do…Loop迴圈語句Do迴圈有兩種格式:格式一:Do[{While|Until}<條件>]<語句塊>[ExitDo]<語句塊>Loop說明:①格式一為先判斷後執(zhí)行,循環(huán)體有可能一次也不執(zhí)行。格式二為先執(zhí)行後判斷,至少執(zhí)行一次循環(huán)體。②While用於指明條件為
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人攝影器材租賃合同(2024版)3篇
- 只樂一中2025年度廉潔辦公室裝修工程實施方案3篇
- 個人貸款購銷合同
- 2025年度餐飲店特色調(diào)料研發(fā)與銷售合作合同范本3篇
- 2025年度深層水資源勘探打井合同范本4篇
- 二零二五版特種貨物搬運與安全監(jiān)管合同3篇
- 個人房屋抵押借款協(xié)議模板 2024版版B版
- 少兒肌膚護(hù)理專業(yè)教育與日常實踐的結(jié)合
- 現(xiàn)代家居的智能化照明管理-家用光控系統(tǒng)的設(shè)計與實施
- 2025年度太陽能組件組裝代加工合同4篇
- 《集裝箱結(jié)構(gòu)》課件
- 項目績效和獎勵計劃
- 光伏自發(fā)自用項目年用電清單和消納計算表
- 量子計算在醫(yī)學(xué)圖像處理中的潛力
- 阿里商旅整體差旅解決方案
- 浙江天臺歷史文化名城保護(hù)規(guī)劃說明書
- 邏輯思維訓(xùn)練500題
- 實體瘤療效評價標(biāo)準(zhǔn)RECIST-1.1版中文
- 企業(yè)新春茶話會PPT模板
- GB/T 19185-2008交流線路帶電作業(yè)安全距離計算方法
- DIC診治新進(jìn)展課件
評論
0/150
提交評論