版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章概述1.1VisualBasic語言概述一、VisualBasic的特點(diǎn)1.面向?qū)ο蟮目梢暬O(shè)計(jì)平臺(tái)2.事件驅(qū)動(dòng)的編程機(jī)制3.結(jié)構(gòu)化的程序設(shè)計(jì)語言VisualBASIC是面向?qū)ο?,結(jié)構(gòu)化的計(jì)算機(jī)語言,VB的界面由對(duì)象(窗體和控件)組成,每個(gè)對(duì)象有若干屬性,程序員的任務(wù)就是設(shè)計(jì)這些對(duì)象和對(duì)象的“事件”過程1.2VisualBasic6.0的集成開發(fā)環(huán)境VB的三種工作模式(標(biāo)題欄總顯示當(dāng)前模式)(1)設(shè)計(jì)模式:創(chuàng)建應(yīng)用程序的大多數(shù)工作都是在設(shè)計(jì)時(shí)完成的。在設(shè)計(jì)時(shí),可以設(shè)計(jì)窗體、繪制控件、編寫代碼并使用“屬性”窗口來設(shè)置或查看屬性設(shè)置值。(2)運(yùn)行模式:代碼正在運(yùn)行的時(shí)期,用戶可與應(yīng)用程序交流。可查看代碼,但不能改動(dòng)它。(3)中斷模式:程序在運(yùn)行的中途被停止執(zhí)行時(shí)。在中斷模式下,用戶可查看各變量及不是屬性的當(dāng)前值,從而了解程序執(zhí)行是否正常。還可以修改程序代碼,檢查、調(diào)試、重置、單步執(zhí)行或繼續(xù)執(zhí)行程序。1.3可視化編程的基本概念1.對(duì)象對(duì)象是現(xiàn)實(shí)世界的實(shí)體,如人、汽車、電腦等,并且復(fù)雜的對(duì)象可以由若干簡(jiǎn)單的對(duì)象構(gòu)成。圖1編程中的“對(duì)象”圖1編程中的“對(duì)象”1個(gè)“文本框”對(duì)象7個(gè)“單選框”對(duì)象2個(gè)“復(fù)選框”對(duì)象多個(gè)“按鈕”對(duì)象2.對(duì)象的三要素:屬性、事件和方法(1)屬性:即一個(gè)對(duì)象所具有的性質(zhì)、特征。(2)事件:發(fā)生在該對(duì)象上的事情,發(fā)生在用戶與應(yīng)用程序交互時(shí),如單擊控件、鼠標(biāo)移動(dòng)、鍵盤按下等。事件過程:當(dāng)在對(duì)象上發(fā)生某個(gè)事件后,就要處理事件,對(duì)事件作出反應(yīng),處理事件的步驟叫做事件過程。(3)方法:對(duì)象所具有的動(dòng)作和行為。在編程中,對(duì)象的方法完成某種特定功能,即將一些通用的過程編寫好并封裝起來,作為方法供用戶直接調(diào)用1.4可視化編程的一般步驟VB的對(duì)象已經(jīng)被抽象為窗體和控件,所以簡(jiǎn)化了應(yīng)用程序設(shè)計(jì),一般需要三個(gè)步驟:①創(chuàng)建應(yīng)用程序界面;②設(shè)置屬性;③編寫代碼。第2章窗體與常用控件2.1窗體1.窗體(Form)的屬性①Name:對(duì)象(窗體或控件)的名稱⑴對(duì)象名必須以字母開頭,不能多于40個(gè)字符,可以包含字母、數(shù)字和下劃線,不能包括標(biāo)點(diǎn)符號(hào)和空格;⑵對(duì)象名不能與其他公共對(duì)象重名;②:顯示在窗體標(biāo)題欄中窗體圖標(biāo)后面的文字;⑴Visible:設(shè)置窗體是否可見,取值為True或False;True-可見False-隱藏注意:Visible屬性只有在運(yùn)行時(shí)才生效,設(shè)計(jì)時(shí)可見。⑵Enabled:確定窗體是否對(duì)用戶事件做出反應(yīng);True-響應(yīng)用戶的鼠標(biāo)或鍵盤操作False-不響應(yīng)用戶操作通過程序代碼為對(duì)象的屬性賦值賦值語句格式:對(duì)象名.屬性名=新的屬性值例如,將窗體對(duì)象frmInput的標(biāo)題欄文字改為“你好!Vb”frmInput.Caption=“你好!Vb”2.窗體的方法①調(diào)用對(duì)象方法的一般形式:對(duì)象名.方法名[參數(shù)](1)Show和Hide(2)Print用于在窗體上輸出指定的內(nèi)容窗體Print方法的語法:對(duì)象名.Printstring例如,F(xiàn)orm1.Print“Hello”/在窗體上顯示“Hello”(3)Move用于移動(dòng)窗體,并可改變其大小。(4)Cls用于清除運(yùn)行時(shí)窗體上所生成的圖形和文字窗體的事件(1)Load√當(dāng)一個(gè)窗體被加載到內(nèi)存中準(zhǔn)備顯示時(shí),引發(fā)Load事件√此事件由操作系統(tǒng)發(fā)送;√常常在Load事件過程中進(jìn)行窗體或控件的初始化工作。(2)Click◎鼠標(biāo)單擊事件◎Click事件過程的語法結(jié)構(gòu):PrivateSubForm_Click()程序段EndSub◎注意:窗體對(duì)象比較特殊,其事件過程名稱為Form_事件名(),不像其他控件,由對(duì)象名_事件名組成。(3)DblClick◎鼠標(biāo)雙擊事件◎事件過程的語法結(jié)構(gòu):PrivateSubForm_DblClick()程序段EndSub◎此事件過程沒有參數(shù)注意:當(dāng)在窗體上雙擊鼠標(biāo)時(shí),首先觸發(fā)的是窗體的Click事件,然后才是DblClick事件。所以如果兩個(gè)事件都編寫了程序代碼,則會(huì)被依次執(zhí)行。(4)GotFocus、LostFocus◎焦點(diǎn)是接收用戶鼠標(biāo)或鍵盤輸入的能力?!虍?dāng)一個(gè)對(duì)象處于焦點(diǎn)狀態(tài)時(shí),可接收用戶的輸入◎當(dāng)對(duì)象得到焦點(diǎn)時(shí),觸發(fā)GotFocus事件;失去焦點(diǎn)時(shí),觸發(fā)LostFocus事件(5)Resize◎在程序運(yùn)行時(shí),當(dāng)窗體的大小發(fā)生改變或窗體剛剛顯示時(shí),會(huì)引發(fā)此事件(6)Unload◎是從內(nèi)存中清除一個(gè)窗體時(shí)觸發(fā)的事件2.2常用控件1.標(biāo)簽控件
主要用來顯示或輸出文本信息
常用的屬性:Name,Caption,Alignment,AutoSize,BorderStyleAlignment:設(shè)置文本的對(duì)齊方式:0-左對(duì)齊(默認(rèn)值),1-右對(duì)齊,2-中間對(duì)齊AutoSize:其值決定標(biāo)簽控件的大小是否隨所顯示內(nèi)容而自動(dòng)調(diào)整:True/False(默認(rèn))BorderStyle:決定標(biāo)簽是否有邊框:0-無邊框(默認(rèn)),1-有邊框(固定單線框)2.文本框控件
是一個(gè)文本編輯區(qū)域,用來接收用戶輸入的信息
用戶可以在該區(qū)域輸入、編輯、修改和顯示正文內(nèi)容
常用的屬性:Name,Text,Alignment,Enabled,Locked,MaxLength,Multiline,PasswordChar,ScrollBars
Text:文本框中的文本內(nèi)容;
Locked:設(shè)置是否鎖住文本框的Text屬性的內(nèi)容;
MaxLength:設(shè)置文本框輸入的最大字符數(shù);
Multiline:設(shè)置是否可以輸入多行文本;
PasswordChar:此屬性可用來創(chuàng)建“密碼文本框”;
ScrollBars:當(dāng)文本框的MultiLine屬性值為True時(shí),ScrollBars屬性值決定文本框有無水平或垂直滾動(dòng)條;3.命令按鈕控件
用來接收用戶的操作信息,觸發(fā)相應(yīng)的事件過程;
它是用戶與程序進(jìn)行交互的最直接的手段。
常用的屬性:Name,Caption,Default,Cancel,EnabledDefault:設(shè)置該命令按鈕是否為窗體的默認(rèn)按鈕,即在運(yùn)行時(shí)按回車鍵與單擊該按鈕效果相同,取值為True/False。Cancel:設(shè)置該命令按鈕是否為CancelButton,即在運(yùn)行時(shí)按ESC鍵與單擊該按鈕效果相同,取值為True/False。第三章數(shù)據(jù)類型、常量、變量及表達(dá)式3.1VB的字符集及編碼規(guī)則1.標(biāo)識(shí)符的命名規(guī)則(1)VB標(biāo)識(shí)符由字母、數(shù)字和下劃線組成,且以字母打頭;(2)長(zhǎng)度不得超過255個(gè)字符;(3)不能與VB中的關(guān)鍵字同名;(4)在同一個(gè)范圍(作用域)內(nèi)必須是唯一的。2.編碼規(guī)則(1)大小寫——VB代碼不區(qū)分字符的大小寫。(2)語句是程序的基本單位,VB中每條語句--enter鍵結(jié)束(3)一行書寫多條語句
一行可以書寫多條語句,各語句之間用冒號(hào)“:”分隔(4)續(xù)行
一行書寫不完的語句,可以在該行后加上續(xù)行符(由空格+下劃線組成),然后換行書寫。3.2數(shù)據(jù)類型1.數(shù)值型1)整數(shù)(Integer)
在內(nèi)存中占2個(gè)字節(jié)
取值范是-32768(-215)~+32767(215-1)。
VB中用±n[%]來表示整數(shù),其中%為整數(shù)的類型符,2)長(zhǎng)整型(Long)
長(zhǎng)整型數(shù)占4個(gè)字節(jié);
最大值為231-1。
VB中用±n&來表示長(zhǎng)整數(shù),其中&為長(zhǎng)整數(shù)的類型符。2.字符串型(string)
由若干字符組成的字符序列,專門用來存放文字信息的
在VB中有兩種類型字符串:定長(zhǎng)字符串和變長(zhǎng)字符串(1)定長(zhǎng)字符串:能夠包含字符的個(gè)數(shù)是可以指定的一定數(shù)目的字符,它在程序執(zhí)行過程中其長(zhǎng)度保持不變,如果所賦予的字符長(zhǎng)度不夠,用空格填補(bǔ);如果超出則截去超出部分。√字符串變量定義Dim字符串變量名Asstring*長(zhǎng)度(2)變長(zhǎng)字符串
字符串的長(zhǎng)度不確定,它的長(zhǎng)度隨著賦予的字符串的長(zhǎng)度而變化
字符串變量定義Dim字符串變量名Asstring3.布爾型(Boolean)
也稱為邏輯型,只有兩個(gè)值:真(True)和假(False),用2字節(jié)二進(jìn)制數(shù)存儲(chǔ),經(jīng)常用來表示邏輯判斷的結(jié)果。
布爾型與整型或長(zhǎng)整型轉(zhuǎn)換:當(dāng)把數(shù)值型數(shù)據(jù)轉(zhuǎn)換為邏輯型數(shù)據(jù)時(shí),0會(huì)轉(zhuǎn)換為False,其它非0值轉(zhuǎn)換為True反之,當(dāng)把邏輯型數(shù)據(jù)轉(zhuǎn)換為數(shù)值型時(shí),F(xiàn)alse轉(zhuǎn)換為0,True轉(zhuǎn)換為-1。4.日期型(Date)
任何在字面上可以被認(rèn)作日期的文本都可以賦值給日期變量;日期文字必須用符號(hào)“#”括起來。5.變體型(Variant)
Variant數(shù)據(jù)類型是VB對(duì)所有未定義的變量的缺省數(shù)據(jù)類型的定義3.3變量和常量1.變量程序運(yùn)行過程中其值可以改變的量稱為變量,用于存儲(chǔ)程序運(yùn)行時(shí)的臨時(shí)數(shù)據(jù)(1)變量的命名規(guī)則遵循標(biāo)識(shí)符命名規(guī)則:①以字母開頭,可以包括數(shù)字、字母和下劃線;②不能包含標(biāo)點(diǎn)符號(hào);③不能多于255個(gè)字符;④不能與關(guān)鍵字重復(fù);⑤在同一作用域中,變量名不能相互重復(fù)。(2)變量聲明使用變量前,一般應(yīng)先聲明變量名以及變量的類型,以使系統(tǒng)為變量分配內(nèi)存單元。如果沒有聲明,則默認(rèn)為變體型數(shù)據(jù)聲明變量時(shí)可以指定變量名、變量的類型以及變量的作用域?!蚨x變量的統(tǒng)一語法格式如下:Public|Private|Dim|Static變量名[As類型[*字符串長(zhǎng)度]]其中,“Public|Private|Dim|Static”4個(gè)關(guān)鍵字指定變量的作用范圍(即作用域);如果省略“As類型”部分,定義的是變體類型變量;當(dāng)定義定長(zhǎng)字符串變量時(shí),需要“*字符串長(zhǎng)度”部分指定字符串長(zhǎng)度。變量的作用域:指變量生效的范圍,即能夠?qū)υ撟兞抠x值又能讀取該變量值的代碼范圍。在VB中,變量有三種作用域:過程級(jí)、模塊級(jí)和全局級(jí).①過程級(jí)變量:又稱為局部變量,作用域是定義它的過程(包括事件過程和通用過程),也就是說它在哪個(gè)過程中定義就只能在這個(gè)過程中使用。定義過程級(jí)變量的語句為:Dim|Static變量名[As數(shù)據(jù)類型名[*字符串長(zhǎng)度]]
使用Dim關(guān)鍵字定義的過程級(jí)變量,當(dāng)所在過程執(zhí)行完畢,變量就會(huì)消失,釋放所占用的內(nèi)存;
使用Static定義的變量,被稱為“靜態(tài)變量”,在程序啟動(dòng)時(shí)即被分配內(nèi)存空間,程序結(jié)束時(shí)清除,每次過程執(zhí)行完畢變量的值仍被保留,下一次該過程被執(zhí)行時(shí)變量的值仍然可用。②模塊級(jí)變量:必須在模塊開始的通用聲明段中定義(位于“代碼”窗口的最頂部,所有過程的前面),語法格式為:Private|Dim變量名[As數(shù)據(jù)類型名[*字符串長(zhǎng)度]]其中,關(guān)鍵字Private和Dim是等效的;
作用域是所在的模塊,定義變量的這個(gè)模塊中的所有過程都可以訪問該變量;
它在程序啟動(dòng)時(shí)被創(chuàng)建,程序結(jié)束時(shí)被清除。③程序級(jí)變量:也稱為全局變量或公共變量,指在程序的所有模塊中都可以對(duì)其值進(jìn)行存取的變量。
必須在模塊開頭的通用聲明段中定義,語法格式為:Public變量名[As數(shù)據(jù)類型名[*字符串長(zhǎng)度]]
在程序啟動(dòng)時(shí)創(chuàng)建,程序結(jié)束時(shí)被清除?!蛴妙愋驼f明符表示變量√將類型說明符放在變量名的尾部,可以表示不同的變量,如%表示整型、&表示長(zhǎng)整型、!表示單精度型、#表示雙精度型、@表示貨幣型,$表示字符型?!蜃兞康哪J(rèn)值√一個(gè)變量在被定義之后,被首次賦值之前的這一段時(shí)間中具有默認(rèn)值。對(duì)于不同的數(shù)據(jù)類型,默認(rèn)值不相同?!虜?shù)值型變量的默認(rèn)值為0;√邏輯型變量的默認(rèn)值為False;2.常量常量是指程序運(yùn)行過程中始終保持不變的常數(shù)、字符串等在程序代碼中,以數(shù)值或字符等形式直接給出的常量。例如:a=3.14Text1.text=“welcome”3.4運(yùn)算符和表達(dá)式一、運(yùn)算符◎VB提供了5種類型的運(yùn)算符:1.算術(shù)運(yùn)算符
整除運(yùn)算和取模運(yùn)算的操作數(shù)一般為整型數(shù),當(dāng)操作數(shù)含有小數(shù)時(shí),先四舍五入取整,然后再進(jìn)行運(yùn)算;
整除運(yùn)算的結(jié)果取商的整數(shù)部分;取模運(yùn)算的結(jié)果取商的余數(shù)部分。2.字符串運(yùn)算符(1)字符串連接運(yùn)算符:“&”和“+”(2)字符串比較運(yùn)算符
按照字符串對(duì)應(yīng)字符從左到右逐個(gè)進(jìn)行比較;
結(jié)果為真返回True;否則返回False;
英文、數(shù)字和半角符號(hào)按ASCII碼的大小進(jìn)行比較,漢字和中文符號(hào)按漢字國(guó)際碼的順序進(jìn)行比較3.日期時(shí)間運(yùn)算符①兩個(gè)日期型數(shù)據(jù)相減,結(jié)果為兩個(gè)日期相差的天數(shù),如:#09/29/2012#-#09/20/2012#‘結(jié)果為數(shù)值型數(shù)據(jù):9②日期型數(shù)據(jù)加數(shù)值型數(shù)據(jù),結(jié)果為日期型數(shù)據(jù)(向后推算日期),如:#09/29/2012#+9‘結(jié)果為日期型數(shù)據(jù):#10/08/2012#③日期型數(shù)據(jù)減數(shù)值型數(shù)據(jù),結(jié)果為日期型數(shù)據(jù)(向前推算日期),如:#09/29/2012#-10‘結(jié)果為日期型數(shù)據(jù):#09/19/2012#4.關(guān)系運(yùn)算符(><>=<==<>)對(duì)兩個(gè)表達(dá)式的值進(jìn)行比較,結(jié)果為邏輯值,如果關(guān)系成立返回True,否則返回False。在VB中,分別用-1和0表示True和False5.布爾運(yùn)算符(邏輯運(yùn)算符)運(yùn)算符的優(yōu)先級(jí)當(dāng)表達(dá)式中存在多種運(yùn)算符共存時(shí),按如下優(yōu)先級(jí)的先后進(jìn)行運(yùn)算:3.5類型轉(zhuǎn)換3.6常用內(nèi)部函數(shù)◎內(nèi)部函數(shù)是指VB已經(jīng)定義好的函數(shù),供用戶隨時(shí)調(diào)用?!騐B的內(nèi)部函數(shù)可以分為五類:√數(shù)學(xué)函數(shù)√字符串函數(shù)√隨機(jī)函數(shù)√轉(zhuǎn)換函數(shù)√日期函數(shù)◎常用數(shù)學(xué)函數(shù):Rnd(N):返回[0,1)的隨機(jī)數(shù)√若要返回指定范圍的隨機(jī)數(shù),使用公式:Rnd*(Int(上界值-下界值+1))+下界值Int(N):返回不大于給定數(shù)的最大整數(shù)Fix(N):返回?cái)?shù)的整數(shù)部分第4章基本控制結(jié)構(gòu)4.1結(jié)構(gòu)化程序設(shè)計(jì)概述4.2順序結(jié)構(gòu)1.賦值語句
程序設(shè)計(jì)中最基本的語句,它的作用是將指定的值賦給某個(gè)變量或?qū)ο蟮哪硞€(gè)屬性。
語句格式:名稱=表達(dá)式2.數(shù)據(jù)輸入
程序語言應(yīng)具備的基本功能,指把要加工處理的原始數(shù)據(jù)從某種外部設(shè)備(例如鍵盤)輸入到計(jì)算機(jī)中去,以備計(jì)算機(jī)處理;
在VB中,數(shù)據(jù)輸入的功能可以用文本框和輸入框(InputBox)完成;
InputBox函數(shù)√作用:在一對(duì)話框中顯示提示信息,等待用戶輸入正文或按下按鈕,返回文本框中內(nèi)容,函數(shù)值的類型為String類型?!陶Z法格式:<變量>=InputBox(<信息內(nèi)容>[,<對(duì)話框標(biāo)題>][,<默認(rèn)內(nèi)容>])說明:<信息內(nèi)容>:對(duì)話框中出現(xiàn)的文本,用來描述“提示信息”;<對(duì)話框的標(biāo)題>:設(shè)置對(duì)話框的標(biāo)題;<默認(rèn)內(nèi)容>:輸入框中顯示的默認(rèn)文本。例:InputBox("提示信息","標(biāo)題","輸入信息區(qū)域")3.數(shù)據(jù)輸出VB中數(shù)據(jù)輸出的方法有:Print方法、文本框控件、標(biāo)簽控件以及消息框(MsgBox)函數(shù);
消息框(MsgBox函數(shù))MsgBox函數(shù)在對(duì)話框中顯示信息,等待用戶單擊按鈕,并返回一個(gè)整數(shù)以標(biāo)明用戶單擊了哪個(gè)按鈕。語法格式為:MsgBox<消息內(nèi)容>[,<對(duì)話框類型>][,<對(duì)話框標(biāo)題>]說明:<消息內(nèi)容>為對(duì)話框中出現(xiàn)的文本<對(duì)話框類型>用來指定對(duì)話框中出現(xiàn)的按鈕和圖標(biāo)<對(duì)話框標(biāo)題>用來指定對(duì)話框的標(biāo)題。Msgbox()返回的值指明了對(duì)話框選擇了哪個(gè)按鈕4.3選擇結(jié)構(gòu)一、IF語句
IF語句是最常用的選擇結(jié)構(gòu),它是屬于單條件、雙分支的選擇結(jié)構(gòu);
IF語句的傳統(tǒng)流程圖如下:
IF語句的執(zhí)行過程:所給的條件如果為真,則執(zhí)行A1塊;如果條件為假,則執(zhí)行A2塊。
兩種形式:行IF語句和塊IF語句1.單行結(jié)構(gòu)條件語句
語法格式:IF<條件>Then<語句組1>[Else<語句組2>]2.塊結(jié)構(gòu)條件語句有兩種表現(xiàn)形式:一種是單分支,另外一種是雙分支(1)單分支語法格式:If<條件>Then<語句組1>EndIf(2)雙分支結(jié)構(gòu)語法格式:If<條件>Then<語句塊1>Else<語句塊2>EndIf二、SelectCase語句
SelectCase語句用來實(shí)現(xiàn)多分支條件選擇結(jié)構(gòu);
多條件選擇結(jié)構(gòu)的特點(diǎn):從多個(gè)選擇條件中選擇第一個(gè)條件為真的線路作為執(zhí)行路線。
SelectCase的語法結(jié)構(gòu)形式為:SelectCase<測(cè)試表達(dá)式>[Case<表達(dá)式表1><語句塊1>][Case<表達(dá)式表2><語句塊2>]…[CaseElse<語句塊n+1>]EndSelect4.4循環(huán)結(jié)構(gòu)循環(huán)的基本概念
程序設(shè)計(jì)中的循環(huán)是指在程序中從某處開始有規(guī)律的反復(fù)執(zhí)行某一操作塊(或程序塊)的現(xiàn)象。
被重復(fù)執(zhí)行的操作塊(或程序塊)稱為循環(huán)體,循環(huán)體的執(zhí)行與否及次數(shù)多少視循環(huán)類型與條件而定。
無論何種類型的循環(huán),共同的特點(diǎn)是:必須確保循環(huán)體的重復(fù)執(zhí)行能被終止(即非無限循環(huán))。
在VB中的循環(huán)結(jié)構(gòu)有:For…nextDo…LoopWhile…Wend一.For…Next語句
For…Next循環(huán)語句一般用于循環(huán)次數(shù)已知的程序中;
語法形式For<循環(huán)變量>=<初值>to<終值>[Step步長(zhǎng)] [語句塊1] [ExitFor] [語句塊2]Next[<循環(huán)變量>]
說明:①<循環(huán)變量>為必要參數(shù),用作循環(huán)計(jì)數(shù)器的數(shù)值變量;②<初值>to<終值>都是必要參數(shù)。<步長(zhǎng)>可以是正數(shù)或負(fù)數(shù)。當(dāng)步長(zhǎng)的值為1時(shí),可以省略。③在循環(huán)中的任何位置放置任意個(gè)ExitFor語句,隨時(shí)退出循環(huán)(本層)For與Next語句中的循環(huán)變量必須是同一變量,Next中的循環(huán)變量可以省去。二.Do…Loop循環(huán)語句用于控制循環(huán)次數(shù)未知,或循環(huán)的初值和終值不明了的循環(huán)。
Do…Loop語句有兩種語法形式:①前測(cè)型循環(huán)結(jié)構(gòu)②后測(cè)型循環(huán)結(jié)構(gòu)三.循環(huán)的嵌套循環(huán)嵌套的概念:在一個(gè)循環(huán)結(jié)構(gòu)中包含另外一個(gè)完整的循環(huán)結(jié)構(gòu),就是循環(huán)嵌套。要注意以下事項(xiàng):(1)內(nèi)循環(huán)變量與外循環(huán)變量不能同名;(2)外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉;(3)外層循環(huán)每執(zhí)行一次,內(nèi)層循環(huán)就要從頭開始執(zhí)行一輪。例4.13打印輸出“九九乘法表”(P105).Fori=1To9Forj=1To9(Forj=1Toi)se=i&"×"&j&"="&i*jPicture1.PrintTab((j-1)*9+1);se;Nextj思考:打印三角程序如何改動(dòng)?Picture1.PrintNexti四、常用的算法
算法是對(duì)某個(gè)問題求解過程的描述1.累加、連乘1~100的5或7的倍數(shù)的和Sum=0Fori=1To100IfiMod5=0OriMod7=0ThenSum=Sum+iEndIfNextiPrintSum3~10的乘積t=1Fori=3To10t=t*iNextiPrintt2.最小、最大值
在若干個(gè)數(shù)中求最大值,一般先假設(shè)一個(gè)較小的數(shù)為最大值的初值,若無法估計(jì)較小的值,則取第一個(gè)數(shù)為最大值的初值;然后將每一個(gè)數(shù)與最大值比較,若該數(shù)大于最大值,將該數(shù)替換為最大值;依次逐一比較。
例:隨機(jī)產(chǎn)生10個(gè)100~200之間的數(shù),求最大值。PrivateSubCommand1_Click()Max=100Fori=1To10x=Int(Rnd*101+100)Printx;Ifx>MaxThenMax=xNextiPrintPrint"最大值=";MaxEndSub第五章數(shù)組5.1數(shù)組的概念一、數(shù)組和數(shù)組元素◎數(shù)組就是一組具有相同類型的有序的數(shù)據(jù),其特點(diǎn):排列有序;個(gè)數(shù)有限;用一個(gè)統(tǒng)一的名字◎數(shù)組的命名:命名規(guī)則和簡(jiǎn)單變量的命名規(guī)則相同?!驍?shù)組的維數(shù):數(shù)組中下標(biāo)的個(gè)數(shù)為數(shù)組的維數(shù),根據(jù)維數(shù)的不同,數(shù)組就分為一維數(shù)組、二維數(shù)組、三維數(shù)組等。◎數(shù)組元素:在同一數(shù)組中,構(gòu)成該數(shù)組的元素;◎每個(gè)數(shù)組元素,都可以使用數(shù)組名與下標(biāo)來唯一的確定;5.2靜態(tài)數(shù)組◎數(shù)組的形式√靜態(tài)數(shù)組:數(shù)組元素的個(gè)數(shù)固定不變?!虅?dòng)態(tài)數(shù)組:數(shù)組元素的個(gè)數(shù)在運(yùn)行時(shí)可以改變。靜態(tài)數(shù)組是指在聲明時(shí)就已經(jīng)確定了數(shù)組元素個(gè)數(shù)的數(shù)組,數(shù)組的類型、維數(shù)和大小將不得改變。一.靜態(tài)數(shù)組的聲明
聲明靜態(tài)數(shù)組的語法格式:Dim數(shù)組名(下標(biāo)1[,下標(biāo)2…])[As類型]說明:①維數(shù):幾個(gè)下標(biāo)為幾維數(shù)組,最多60維;②下標(biāo):[下界To]上界省略下界則下界由OptionBase<n>語句控制,默認(rèn)值為0;
OptionBase語句形式:OptionBase<n>√n只能為0或1;√如果沒有使用OptionBase語句,則默認(rèn)下界為0;√如果使用OptionBase1語句,例如:OptionBase1Dimb(2,1To3,1To4)①每一維大小:上界-下界+1;②數(shù)組大小:每一維大小的乘積◎例如Dimb(2,1To3,1To4)等價(jià)于Dimb(0to2,1To3,1To4)共有3×3×4個(gè)元素◎與數(shù)組操作有關(guān)的幾個(gè)函數(shù)1.Array函數(shù)Array函數(shù)可方便地對(duì)數(shù)組整體賦值,但它只能給聲明為Variant的變量或僅由括號(hào)括起來的動(dòng)態(tài)數(shù)組賦值。賦值后的數(shù)組大小由賦值的個(gè)數(shù)決定。語法格式為:<數(shù)組變量名>=Array(<數(shù)組元素值>)例如:Dima‘聲明一個(gè)Variant的變量aa=array(1,2,3,4,5,6,7)b=a(2)2.求數(shù)組的上界Ubound()函數(shù)、下界Lbound()函數(shù)Ubound()函數(shù)和Lbound()函數(shù)分別用來確定數(shù)組某一維的上界和下界值。
使用形式如下:UBound(<數(shù)組名>[,<N>])LBound(<數(shù)組名>[,<N>])其中:√<數(shù)組名>:必選項(xiàng),表示數(shù)組變量的名稱;√<N> :可選項(xiàng),一般是整型常量或變量,指定返回哪一維的上界或下界。1表示第一維,2表示第二維,如此等等。如果省略默認(rèn)是1二.數(shù)組的基本操作1.數(shù)組元素的輸入(賦初值)(1)賦值語句(2)在運(yùn)行時(shí)通過InputBox函數(shù)輸入(3)用For循環(huán)(元素較多時(shí))(4)Array函數(shù)2.數(shù)組的輸出(可以使用Print方法、文本框、列表框等)【例】輸出方陣sc中的下三角元素Dimsc(5,5)AsIntegerFori=0To4Forj=0Toi【Forj=iTo4(輸出上三角)】sc(i,j)=i*5+jPrintsc(i,j);"";NextjPrint'換行Nexti1選擇排序法基本思想:假設(shè)對(duì)n個(gè)數(shù)進(jìn)行排序,首先從n個(gè)數(shù)中選出最小的數(shù),然后再從剩余的n-1個(gè)數(shù)中選出最小的數(shù),依此類推,進(jìn)行n-1趟選擇后,這n個(gè)數(shù)按照升序排列步驟:①首先從數(shù)組a中選出最小的數(shù),與a(1)交換位置;②從a(2)~a(n)中選出最小的數(shù),與a(2)交換位置;③依此類推,直到n個(gè)數(shù)從小到大排列。④說明:⑤按照上述步驟,若前面(n-1)個(gè)數(shù)的位置已確定,則剩下的最后一個(gè)數(shù)的位置也隨之確定。所以共進(jìn)行n-1趟選擇,外循環(huán)i的值為1to(n-1).⑥第1趟選擇選出第1最小數(shù),第2趟選擇選出第2最小數(shù)…依此類推,第i趟選擇選出第i最小數(shù),由于i前面的位置已確定,所以內(nèi)循環(huán)某一i值始終與其后的數(shù)比較,因此j的值為(i+1)ton.⑦對(duì)于每一趟選擇,例如第i趟選擇(需選出第i個(gè)最小數(shù)),采用a(i)與a(i+1)到a(n)中的每個(gè)數(shù)比較大小,小數(shù)始終放在a(i)里。Fori=1Ton-1Forj=i+1TonIfa(i)>a(j)Thent=a(i)a(i)=a(j)a(j)=tEndIfNextjNexti◎例5.3由計(jì)算機(jī)產(chǎn)生10個(gè)0~100之間的隨機(jī)整數(shù),使用選擇法排序,將這些數(shù)按照遞增的順序排列(P118)?!窘夥ㄒ弧縁ori=1To9Forj=i+1To10Ifa(i)>a(j)Thent=a(i)a(i)=a(j)a(j)=tEndIfNextjNexti【解法二】Fori=1To9p=iForj=i+1To10Ifa(j)<a(p)Thenp=jEndIfNextjt=a(i):a(i)=a(p):a(p)=tNexti2、冒泡排序法基本思想(升序):將兩兩相鄰的數(shù)進(jìn)行比較,將較小的調(diào)換到前面,則一輪兩兩比較過后,最大數(shù)“沉”在最后面。步驟:①n個(gè)數(shù)存放在a(n)中,第一趟將每相鄰的兩個(gè)數(shù)比較,小的調(diào)到前面,經(jīng)過n-1次兩兩比較后,最大數(shù)“沉底”,放在最后的a(n)中;②第二趟對(duì)余下的n-1個(gè)數(shù)按上述方法比較,經(jīng)n-2次兩相鄰比較后,次大的數(shù)放在a(n-1)中;依此類推,最終得到升序排列數(shù).◎說明:◎按照上述步驟,若后面(n-1)個(gè)數(shù)的位置已確定,則剩下的最后一個(gè)數(shù)的位置也隨之確定。所以共進(jìn)行n-1趟兩兩比較,外循環(huán)i的值為1to(n-1).◎內(nèi)循環(huán)某一i始終與i+1在比較,由于后面的數(shù)先沉下來,所以內(nèi)循環(huán)i的值為1to(n-i),始終從第一個(gè)數(shù)開始比較。Fori=1Ton-1Forj=1Ton-iIfa(j)>a(j+1)Thent=a(j)a(j)=a(j+1)a(j+1)=tEndIfNextjNexti將例5.3使用冒泡法排序,將這些數(shù)按照遞增的順序排列(P119)。Fori=1To9Forj=1To10-iIfa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndIfNextjNexti5.3動(dòng)態(tài)數(shù)組
動(dòng)態(tài)數(shù)組指在聲明數(shù)組時(shí)未給出數(shù)組的大小(省略括號(hào)中的下標(biāo)),當(dāng)要使用它時(shí),隨時(shí)用ReDim語句重新指出數(shù)組大小,但不能改變數(shù)組的類型。
動(dòng)態(tài)數(shù)組的聲明(1)聲明一個(gè)空維數(shù)組Dim數(shù)組名()As數(shù)據(jù)類型(2)在過程中用ReDim語句分配實(shí)際大小 ReDim數(shù)組名(下標(biāo)1[,下標(biāo)2…])例:PrivateSubForm_Load()DimsArray()AsSingle…ReDimsArray(4,8) …EndSub5.4控件數(shù)組
控件數(shù)組是由一組相同類型的控件組成。它們共用一個(gè)控件名,共享同樣的事件過程,建立時(shí)系統(tǒng)給每個(gè)元素賦一個(gè)唯一的索引號(hào)(Index),通過返回的索引值(或下標(biāo)值)區(qū)分控件數(shù)組中的各個(gè)元素。
控件數(shù)組的建立:1.在設(shè)計(jì)時(shí)建立控件數(shù)組:首先,在窗體上添加一個(gè)新的控件作為控件數(shù)組中的第1個(gè)控件,設(shè)置控件的Name屬性值,為控件命名;第二步,使用下面方法之一創(chuàng)建控件數(shù)組:√復(fù)制現(xiàn)有的控件√為控件起相同的名字√指定第一個(gè)控件的Index屬性為02.運(yùn)行時(shí)添加控件數(shù)組成員建立的步驟如下:√在窗體上創(chuàng)建某控件,設(shè)置該控件的Index值為0,表示該控件為數(shù)組,這是建立的第一個(gè)元素√在編程時(shí)通過Load方法添加其余的若干個(gè)元素,也可以通過Unload方法刪除某個(gè)添加的元素。格式為:Load控件數(shù)組名(Index)Unload控件數(shù)組名(Index)其中,Index為控件數(shù)組元素的下標(biāo)。第6章過程6.1過程概述VB中的三種過程(1)事件過程對(duì)象事件在用戶或系統(tǒng)發(fā)出動(dòng)作時(shí)被觸發(fā),響應(yīng)事件時(shí)執(zhí)行的過程為事件過程,由VB創(chuàng)建,用戶不能增加或刪除。(2)通用過程必須由其他過程顯式調(diào)用的代碼塊,由用戶自己創(chuàng)建。子過程:不返回值函數(shù)過程:返回一個(gè)值(3)屬性過程可以用來返回和設(shè)置屬性的6.2.1事件過程當(dāng)用戶對(duì)某一個(gè)對(duì)象發(fā)生一個(gè)動(dòng)作時(shí),Windows會(huì)通知VB產(chǎn)生了一個(gè)事件,VB便自動(dòng)用相應(yīng)事件的名字調(diào)用該事件過程。所以事件過程的名字在對(duì)象和代碼之間建立了聯(lián)系。事件過程是依附于窗體和控件上的。1.控件事件過程的語法格式為:PrivateSub<控件名>_<事件名>([形參表])[<語句組>]EndSub2.窗體事件過程的語法格式為:PrivateSubForm_<事件名>([形參表])[<語句組>]EndSub6.2.2子過程◎當(dāng)有幾個(gè)不同的事件過程需要執(zhí)行相同的操作時(shí),為了簡(jiǎn)化程序,把這些操作寫入一個(gè)分離開的子過程(通用過程)中,并由事件過程來調(diào)用它?!蜃舆^程的調(diào)用 Call<子過程名>([<實(shí)參表>])或 <子過程名>[實(shí)參表]6.3函數(shù)過程
函數(shù)過程的調(diào)用函數(shù)過程的調(diào)用同標(biāo)準(zhǔn)函數(shù)調(diào)用,參與表達(dá)式運(yùn)算。①直接調(diào)用函數(shù)過程名([參數(shù)列表])例如:printmyreplace(“a”,”d”,”4”)②用call語句調(diào)用,和子過程調(diào)用相同,但是vb將放棄返回值callmyreplace(“a”,”g”,”e”)或myreplace“a”,”g”,”e”③無參函數(shù)的調(diào)用函數(shù)可以沒有參數(shù),調(diào)用無參函數(shù)得到一個(gè)固定的值。例如:Functionaa=“abcd”EndFunctionPrinta例利用函數(shù)過程編寫計(jì)算圓面積的程序
子過程與函數(shù)過程區(qū)別(1)函數(shù)過程名有值,有類型,在函數(shù)體內(nèi)至少賦值一次;子過程名無值,無類型,在子過程體內(nèi)不能對(duì)子過程名賦值;(2)調(diào)用時(shí),子過程調(diào)用是一句獨(dú)立的語句。函數(shù)過程不能作為單獨(dú)的語句加以調(diào)用,必須參與表達(dá)式運(yùn)算。
子過程和函數(shù)過程最根本的區(qū)別是:子過程的過程名不能返回值,而函數(shù)過程能夠通過過程名返回值。6.5參數(shù)傳遞1、形參和實(shí)參形參是在過程定義中出現(xiàn)的變量名,也就是過程中的參數(shù)列表;實(shí)參是調(diào)用過程時(shí)傳遞給過程的常量、變量、表達(dá)式或數(shù)組,也就是調(diào)用過程時(shí)的參數(shù)列表。2、按值傳遞與按地址傳遞①傳值:形參得到的是實(shí)參的值,形參值的改變不會(huì)影響實(shí)參的值。數(shù)據(jù)的傳遞是單向的!如何實(shí)現(xiàn)?調(diào)用語句中的實(shí)參是常量或表達(dá)式,如果實(shí)參是變量,則在定義過程的形參之前選用ByVal關(guān)鍵字,②傳址:形參得到的是實(shí)參的地址,形參和實(shí)參使用相同的內(nèi)存單元,當(dāng)形參的值改變時(shí),同時(shí)也改變實(shí)參的值。數(shù)據(jù)的傳遞是雙向的!如何實(shí)現(xiàn)?調(diào)用語句中的實(shí)參為變量或數(shù)組時(shí),定義過程的形參之前選用ByRef關(guān)鍵字6.2.2子過程例寫出下列程序的執(zhí)行結(jié)果。PrivateSubCommand1_Click()DimxAsInteger,yAsIntegerx=12:y=20CallValue(x,y)Printx,yEndSubPrivateSubValue(ByValmAsInteger,ByValnAsInteger)m=m*2:n=n-5Printm,nEndSub第7章用戶界面高級(jí)編程7.1滾動(dòng)條控件◎滾動(dòng)條(ScrollBar):①水平滾動(dòng)條(HSscrollBars)②垂直滾動(dòng)條(VSscrollBars)③滾動(dòng)條常用的屬性:√N(yùn)ame屬性,Left、Top、Width、Height屬性,Enabled、Visible屬性,Value、Max、Min、LargeChange、SmallChange屬性;√Value:用來返回或設(shè)置滾動(dòng)條的當(dāng)前位置,其返回值始終介于Max和Min屬性值之間,包括這兩個(gè)值;√Max、Min:用來返回或設(shè)置滾動(dòng)條所能代表的最大值和最小值√LargeChange:用來返回或設(shè)置單擊滑塊和滾動(dòng)箭頭之間的區(qū)域時(shí),滾動(dòng)條控件Value屬性值的改變量;√SmallChange:用來返回或設(shè)置單擊滾動(dòng)條箭頭時(shí),滾動(dòng)條控件Value屬性值的改變量⑴滾動(dòng)條的常用事件:①Change事件:在程序運(yùn)行過程中,每當(dāng)滾動(dòng)條的Value屬性值發(fā)生變化時(shí),就會(huì)觸發(fā)Change事件。引起Value屬性值發(fā)生變化的原因有:拖動(dòng)滾動(dòng)條的滾動(dòng)框部分、單擊滾動(dòng)箭頭、單擊滾動(dòng)條兩端的空白區(qū)域、在程序中通過代碼改變Value屬性值。②Scroll事件:在拖動(dòng)滾動(dòng)條的滾動(dòng)框的過程中,觸發(fā)Scroll事件。與Scroll事件不同,Change事件是在拖動(dòng)滾動(dòng)條的滾動(dòng)框的動(dòng)作結(jié)束后被觸發(fā)。7.2框架控件◎框架(Frame)控件是一個(gè)左上角有標(biāo)題文
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年適用全國(guó)員工勞動(dòng)協(xié)議官方樣本下載版B版
- 2025版酒店客房窗簾及地毯設(shè)計(jì)施工承包合同3篇
- 成都銀杏酒店管理學(xué)院《土力學(xué)含實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年道路交通事故處理諒解書
- 2024年技術(shù)交流活動(dòng)代理
- 2025年度土地購置與綠色交通合作合同3篇
- 2024年股權(quán)出售居間協(xié)議
- 《花鐘》教學(xué)實(shí)踐經(jīng)驗(yàn)總結(jié)
- 2025年日本留學(xué)貸款專項(xiàng)基金管理與使用合同3篇
- 萬兆園區(qū)的市場(chǎng)需求分析
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) X2-10-07-18 陶瓷工藝師(試行)勞社廳發(fā)200633號(hào)
- 人教版八年級(jí)上冊(cè)生物全冊(cè)教案(完整版)教學(xué)設(shè)計(jì)含教學(xué)反思
- 2024年銀行考試-銀行間本幣市場(chǎng)交易員資格考試近5年真題附答案
- 人教版小學(xué)四年級(jí)數(shù)學(xué)上冊(cè)期末復(fù)習(xí)解答題應(yīng)用題大全50題及答案
- 冀教版五年級(jí)上冊(cè)脫式計(jì)算題100道及答案
- 你是排長(zhǎng)我是兵(2022年山東濟(jì)南中考語文試卷記敘文閱讀題及答案)
- 《ISO56001-2024創(chuàng)新管理體系 - 要求》之22:“8運(yùn)行-8.2 創(chuàng)新行動(dòng)”解讀和應(yīng)用指導(dǎo)材料(雷澤佳編制-2024)
- 廣東省中山市2023-2024學(xué)年高三物理上學(xué)期第五次統(tǒng)測(cè)試題含解析
- 《體育科學(xué)研究方法》題庫
- 高級(jí)會(huì)計(jì)實(shí)務(wù)案例分析-第三章 企業(yè)全面預(yù)算管理
- DL∕T 5142-2012 火力發(fā)電廠除灰設(shè)計(jì)技術(shù)規(guī)程
評(píng)論
0/150
提交評(píng)論