




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
vb各章知識點(diǎn)總結(jié)第一章:VisualBasic概述1.11.1VisualBasic簡介?具有面向?qū)ο蟮目梢暬O(shè)計(jì)工具?事件驅(qū)動的編程機(jī)制?提供了易學(xué)易用的應(yīng)用程序集成開發(fā)環(huán)境?結(jié)構(gòu)化的程序設(shè)計(jì)語言?支持多種數(shù)據(jù)庫的訪問?支持DDE、DLL、OLE技術(shù)?完備的Help聯(lián)機(jī)幫助功能1.1.2面向?qū)ο蟮某绦蛟O(shè)計(jì)方法基礎(chǔ)2.2.對象及對象類:動作體的邏輯模型,稱為“對象”3.3.屬性:屬性是用來描述對象的特性。4.4.方法:方法指對象可以進(jìn)行的動作或行為。VB對象具有屬性、方法和事件。屬性是描述對象的數(shù)據(jù);方法告訴對象應(yīng)做的事情;事件是對象所產(chǎn)生的事情,事件發(fā)生時可以編寫代碼進(jìn)行處理。VB的窗體和控件是具有自己的屬性、方法和事件的對象??梢园褜傩钥醋饕粋€對象的性質(zhì),把方法看作對象的動作,把事件看作對象的響應(yīng)。日常生活中的對象,如小孩玩的氣球同樣具有屬性、方法和事件。氣球的屬性包括可以看到的一些性質(zhì),如它的直徑和顏色。其它一些屬性描述氣球的狀態(tài)(充氣的或未充氣的)或不可見的性質(zhì),如它的壽命。通過定義,所有氣球都具有這些屬性;這些屬性也會因氣球的不同而不同。氣球還具有本身所固有的方法和動作。如:充氣方法(用氦氣充滿氣球的動作),放氣方法(排出氣球中的氣體)和上升方法(放手讓氣球飛走)。所有的氣球都具備這些能力。1.1.3基于Windows環(huán)境下的應(yīng)用程序的工作方式——事件驅(qū)動在傳統(tǒng)的或“過程化”的應(yīng)用程序中,應(yīng)用程序自身控制了執(zhí)行哪一部分代碼和按何種順序執(zhí)行代碼。從第一行代碼執(zhí)行程序并按應(yīng)用程序中預(yù)定的路徑執(zhí)行,必要時調(diào)用過程。在事件驅(qū)動的應(yīng)用程序中,代碼不是按照預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同的事件時執(zhí)行不同的代碼片段。事件可以由用戶操作觸發(fā)、也可以由來自操作系統(tǒng)或其它應(yīng)用程序的消息觸發(fā)、甚至由應(yīng)用程序本身的消息觸發(fā)。這些事件的順序決定了代碼執(zhí)行的順序,因此應(yīng)用程序每次運(yùn)行時所經(jīng)過的代碼的路徑都是不同的。因?yàn)槭录捻樞蚴菬o法預(yù)測的,所以在代碼中必須對執(zhí)行時的“各種狀態(tài)”作一定的假設(shè)。當(dāng)作出某些假設(shè)時(例如,假設(shè)在運(yùn)行來處理某一輸入字段的過程之前,該輸入字段必須包含確定的值),應(yīng)該組織好應(yīng)用程序的結(jié)構(gòu),以確保該假設(shè)始終有效(例如,在輸入字段中有值之前禁止使用啟動該處理過程的命令按鈕)。在執(zhí)行中代碼也可以觸發(fā)事件。例如,在程序中改變文本框中的文本將引發(fā)文本框的Change事件。如果Change事件中包含有代碼,則將導(dǎo)致該代碼的執(zhí)行。如果原來假設(shè)該事件僅能由用戶的交互操作所觸發(fā),則可能會產(chǎn)生意料之外的結(jié)果。正因?yàn)檫@一原因,所以在設(shè)計(jì)應(yīng)用程序時理解事件驅(qū)動模型并牢記在心是非常重要的。在VB中事件的調(diào)用形式是:PrivateSub對象名_事件名(事件內(nèi)容)EndSub1.4VisualBasic的集成開發(fā)環(huán)境VB集成開發(fā)環(huán)境(IDE——IntegratedDevelopingEnvironment)由以下元素組成:1(標(biāo)題欄用于顯示正在開發(fā)或調(diào)試的工程名和系統(tǒng)的工作狀態(tài)(設(shè)計(jì)態(tài)、運(yùn)行態(tài)、中止態(tài))。2(菜單欄用于顯示所使用的VisualBasic命令。VB6.0標(biāo)準(zhǔn)菜單包括:3(工具欄在編程環(huán)境下用于快速訪問常用命令。缺省情況下,啟動VB后顯示“標(biāo)準(zhǔn)”工具欄,附加的編輯、窗體設(shè)計(jì)和調(diào)試的工具欄可以從“視圖”菜單上的“工具欄”命令中移進(jìn)或移出。4(窗體設(shè)計(jì)器用來設(shè)計(jì)應(yīng)用程序的界面。啟動VB后,窗體設(shè)計(jì)器中自動出現(xiàn)一個名為Form1的空白窗體,可以在該窗體中添加控件、圖形和圖片等來創(chuàng)建所希望的外觀,窗體的外觀設(shè)計(jì)好后,從菜單中選擇“文件”?“保存窗體”?在保存對話框中給出合適的文件名(注意擴(kuò)展名),并選擇所需的保存位置?確定。需要再設(shè)計(jì)另一個窗體時,單擊工具欄上的“添加窗體”按鈕即可。5(控件(工具)箱由一組控件按鈕組成,用于設(shè)計(jì)時在窗體中放置控件。除了缺省的工具箱布局之外,還可以通過從上下文菜單中選定“添加選項(xiàng)卡”并在結(jié)果選項(xiàng)卡中添加控件來創(chuàng)建自定義布局。6(彈出式(上下文)菜單在要使用的對象上單擊鼠標(biāo)右鍵即可打開快捷菜單,其上會出現(xiàn)與當(dāng)前對象相關(guān)的經(jīng)常執(zhí)行的操作,以加快操作速度。7(工程管理器窗口用于瀏覽工程中所包含的窗體和模塊,還可以從中查看代碼、查看對象。8(屬性窗口是VB中一個比較復(fù)雜的窗口,其中列出了對選定窗體和控件的屬性設(shè)置值。VB中正是通過改變屬性來改變對象的特征,如大小、標(biāo)題或顏色。9(對象瀏覽器列出工程中有效的對象,并提供在編碼中漫游的快速方法??梢允褂谩皩ο鬄g覽器”瀏覽在VB中的對象和其它應(yīng)用程序,查看對那些對象有效的方法和屬性,并將代碼過程粘貼進(jìn)自己的應(yīng)用程序。,,(對象瀏覽器右擊窗體中的對象、從工程管理器中點(diǎn)“查看代碼”按鈕。11(窗體布局窗口FormLayoutwindow允許使用表示屏幕的小圖象來布置應(yīng)用程序中各窗體的位置。12(立即、本地和監(jiān)視窗口這些附加窗口是為調(diào)試應(yīng)用程序提供的,它們只在IDE之中運(yùn)行應(yīng)用程序時才有效。1.5創(chuàng)建VB應(yīng)用程序的一般步驟一個VB程序也稱為一個工程,由窗體、標(biāo)準(zhǔn)模塊、自定義控件及應(yīng)用所需的環(huán)境設(shè)置組成。開發(fā)步驟一般如下:1(創(chuàng)建程序的用戶界面2(設(shè)置界面上各個對象的屬性3(編寫對象響應(yīng)事件的程序代碼4(保存工程5(測試應(yīng)用程序,排除錯誤6(創(chuàng)建可執(zhí)行程序?硬件環(huán)境:486以上處理器、16MB以上內(nèi)存、50MB以上的硬盤空間、CD-ROM驅(qū)動器、鼠標(biāo)等?軟件環(huán)境:Windows95或indowsNT3.51以上版本?初次安裝:1)啟動Windows952)插入具有VB6.0系統(tǒng)的光盤3)運(yùn)行VB6.0安裝程序Setup.exe4)選擇“典型安裝”或“自定義安裝”或“最小安裝”?添加或刪除VB6.0部件:1)插入具有VB6.0系統(tǒng)的光盤2)運(yùn)行“開始/設(shè)置/控制面板”3)雙擊控制面板中的“添加/刪除程序”圖標(biāo)4)選擇其中的“VisualBasic6.0”選項(xiàng)?啟動1.桌面:開始/程序/VisualBasic6.02.建立快捷方式,雙擊圖標(biāo)?退出1.選擇文件菜單下的退出命令2.單擊窗口關(guān)閉按鈕舉例:1啟動VB,開始新工程2創(chuàng)建程序的用戶截面3加入程序代碼4保存工程文件5運(yùn)行和調(diào)試應(yīng)用程序,檢查并排除程序中的錯誤6生成可執(zhí)行程序7打印窗體和代碼(7)列表框(ListBox):用于列出可供用戶選擇的項(xiàng)目列表。用戶可以從中選擇一個或多個項(xiàng)目。屬性:名稱:(通常以“List”作為前綴。)List:列表屬性。用于保存列表的內(nèi)容。List實(shí)際上是一個一維數(shù)組,數(shù)組中元素的值,就是在執(zhí)行時看到的列表項(xiàng)(item)一維數(shù)組:List中有5個元素,List(0),List(1)List(2),List(3),List(4)列表項(xiàng)文本List(0)=68List(1)=78List(2)=88List(3)=80List(4)=76數(shù)組名:List列表項(xiàng)序號:0,1,2,3,4,(從0開始)列表項(xiàng)文本(數(shù)組元素值)分別為:6878888076Listcount:列表框內(nèi)所有選項(xiàng)的總數(shù),也就是List()數(shù)組元素的總個數(shù)。ListIndex:用戶最后單擊的列表項(xiàng)在List()數(shù)組中的編號順序。(無選中時其值為-1)Text:列表項(xiàng)的正文。其值為最后選中的列表項(xiàng)的文本。請記住如下關(guān)系:[對象名稱(]List(ListIndex)=TextColumns:列表框顯示形式。設(shè)定Listbox的列表項(xiàng)若超過顯示范圍時,其卷動方式使用垂直滾動條或是水平滾動條。取值:,:(默認(rèn)值)使用垂直滾動條。逐行顯示列表項(xiàng),可能有垂直滾動條。1~n:使用水平滾動條。此時列表框內(nèi)一次可顯示的列數(shù)(Column)即為n值。MultiSelect:設(shè)定是否允許用戶多重選取對象的列表項(xiàng)取值:,:不能多重選取。(默認(rèn)值),:簡易多重選取。(用鼠標(biāo)或空格鍵來選取,一次一個),:高級多重選取??捎?shift,或,ctrl,來選取。(類似文件選取)Selected:設(shè)定列表項(xiàng)是否被選取的狀態(tài)。它是一個與List大小相同的數(shù)組。其中各元素的取值:,rue:被選取。,alse:不被選取。(默認(rèn)值)Sorted:排序?qū)傩?。設(shè)定列表項(xiàng)是否要照ASCII代碼排序。(字母順序)取值:True:是(不區(qū)分大小寫)False:否。(默認(rèn)值)方法:(,28)AddItem:添加列表項(xiàng)。格式:[對象名稱(]AddItem<列表項(xiàng)文本>[,插入位置序號]說明:,、若不指定位置,則插入到列表項(xiàng)末尾。,、新列表項(xiàng)插入后,原來位置及其后的列表項(xiàng)順序下移。Clear:刪除列表所有項(xiàng)目。RemoveItem:刪除列表項(xiàng)。格式:,對象名稱(,RemoveItem刪除項(xiàng)序號事件:Click:單擊事件。Dblick:雙擊事件(使用較少)應(yīng)掌握:,(如何添加或刪除列表框中的列表項(xiàng),方法一:在設(shè)計(jì)態(tài):定制List屬性。(向列表中添加列表時,按,ctrl,+[Enter]換行。)方法二:在程序代碼中:用AddItem,RemoveItem等方法進(jìn)行。,(如何知道目前用戶所選取的列表項(xiàng)和目前列表框中的列表項(xiàng)數(shù)目,用戶目前所選的列表項(xiàng):Text的值。目前列表框中的列表項(xiàng)數(shù)目:ListCount的值。(8)組合框(comboBox):將文本框和列表框結(jié)合在一起,在列表框中所選項(xiàng)目的文本會自動填入文本框。(與列表框相比,組合框一次只能選取一個列表項(xiàng))工具箱中的圖標(biāo)P25;在窗體中的形式屬性:同Listbox有:List,ListCount,ListIndex,Text,Sorted等等。Style:外觀屬性。設(shè)置組合框的類型和功能。取值:(實(shí)驗(yàn)指導(dǎo)書P40)0:(默認(rèn)值)系統(tǒng)將創(chuàng)建一個帶有下拉式列表框的組合框。稱為組合下拉式的組合框。它的下拉式窗體不是一直顯示的。(如word中字體大小選擇框),此狀態(tài)下用戶可將所內(nèi)容直接輸入到文本框中。1:系統(tǒng)創(chuàng)建一個由文本框和列表框直接結(jié)合在一起的簡單組合框。稱為組合式的組合框。它的下拉式窗體是一直顯示的。如:word中字體菜單對話框中的字體、字號對話內(nèi)容。,:系統(tǒng)創(chuàng)建一個沒有文本框的下拉式列表框。單擊列表框右側(cè)的按鈕,文本框才會顯示出來。稱為單純下拉式的組合框。此狀態(tài)下用戶不可在文本框中輸入,只能在列表中選擇。且下拉式窗體也不是一直顯示的。Text:文本屬性。其取值為用戶從列表框中選定的文本內(nèi)容或直接輸入文本框中的內(nèi)容。事件:對不同類型的組合框,響應(yīng)的事件是不相同的。對于,,,類型的組合框:單擊事件。對于,類型的組合框:雙擊事件。帶有文本框的,,,組合框:在編輯文本時可引發(fā)Change事件。說明:,、用戶若只需要使用單選的列表框,則可用組合框來代替。,、如何添加或刪除組合框中的列表項(xiàng),(方法:同列表框),、如何知道用戶目前所選取或輸入的列表項(xiàng)是什么,由于組合框不允許多重選取,所以,,ext屬性值為內(nèi)容;Listindex屬性值為序號。方法:同列表框。圖像:(image):主要用于圖像的顯示、放大、縮小等靜態(tài)顯示圖像場合。圖像框中不能容納其他控件、也不能繪制圖形和顯示文本。而圖片控件框中可以。圖像在工具箱中的圖標(biāo)P25;在窗體中的形式屬性:名稱:visible:設(shè)置此對象在執(zhí)行時是否看得見。取值:True:(默認(rèn)值)看得見。False:隱藏。enabled:可用否。picture:設(shè)定圖像框中代表的圖片名稱。其值在設(shè)定時的格式為:盤符\路徑\圖片文件名(.ico圖標(biāo)文件.bmp位圖文件)stretch:用來決定圖像控件的大小是否要隨著所載入圖片的大小而變化。取值:true:隨圖片的大小而變化。False:(默認(rèn)值)不隨圖片的大小而變化。事件:類似窗體。方法:MoveRefresh(10)圖片:(picturebox):不僅可以裝入圖像,還可以在它上面繪制各種圖形和顯示正文、放置控件(類似框架控件)。圖片在工具箱中的圖標(biāo)P25;在窗體中的形式水平滾動條(horizontalscrollbar)、垂直滾動條(verticalscrollbar):滾動條:用來附加在那些不能自動支持滾動的應(yīng)用程序或控件中水平滾動或垂直滾動查閱大量信息。一般出現(xiàn)在文本框、列表框右邊;用來調(diào)整數(shù)據(jù)或選擇輸入。(如word中字體、段落對話框中)滾動條在工具箱中的圖標(biāo)P25;在窗體中的形式屬性:(實(shí)驗(yàn)指導(dǎo)書P18)名稱:(通常以“Hsb”、“Vsb”作為前綴。)Max/Min:定義了Value屬性值所能出現(xiàn)的最大值和最小值。說明:1、一開始使用滾動條時,Max為32768,Min為0。2、水平滾動條位于最左邊時、垂直滾動條位于最上邊時為Min;水平滾動條位于最右邊時、垂直滾動條位于最下邊時為Max。Value:滾動條目前所在位置所對應(yīng)的數(shù)值。(也可在代碼中設(shè)定。)LargeChange:當(dāng)用戶在滾動塊的上方、下方(左方、右方)單擊時Value所增加的值。默認(rèn)值為1。SmallChang:當(dāng)用戶在滾動條兩端的箭頭按鈕上單擊時Value所增加的值。默認(rèn)值為1。事件:Change:在滾動塊移動后(即Value值改變時)發(fā)生。例如,可用一個滾動條的Change事件過程更新一個TextBox控件中滾動條的Value屬性的設(shè)置。或者可以利用Change事件過程在一個工作區(qū)里顯示數(shù)據(jù)和公式,在另一個區(qū)域里顯示結(jié)果。Scroll:在拖動滾動塊時發(fā)生。單擊滾動箭頭或滾動條時不發(fā)生。方法:Move:用以移動滾動條。Refresh:強(qiáng)制全部重繪一個滾動條。SetFocus:設(shè)置焦點(diǎn)。將焦點(diǎn)移至指定的滾動條上。時間:(timer)(計(jì)時器):用來實(shí)現(xiàn)與時間有關(guān)的功能。時間控件在工具箱中的圖標(biāo)P25;在窗體中的形式屬性:名稱:enabledinterval用來設(shè)定引發(fā)timer事件過程的間隔時間,單位為1/1000秒。事件:(時間控件只有一個事件)timer:它會按照interval所設(shè)定的時間定時引發(fā)。說明:時間控件的使用方法:1(在form上放置一個時間對象。2(在屬性窗口中設(shè)定其interval屬性。3(填寫timer事件的程序內(nèi)容,4(當(dāng)程序開始執(zhí)行后,將不會看到它的圖標(biāo),每隔interval定義的時間內(nèi),程序會觸發(fā)一次timer事件。時間控控件應(yīng)用舉例:windows中計(jì)時器,word中的定時保存文件,定時更新屏幕畫面(屏幕保護(hù)程序)等等。:2'>Text取值:空字符串:(默認(rèn)值):可以看到輸入的字符。某一字符:用戶每輸入一個字符,文本框內(nèi)就出現(xiàn)一個該字符。MaxLength:最大長度屬性。設(shè)置文本框的Text屬性中所能放入的字符總個數(shù)。取值:,:(默認(rèn)值)。,,32KB。MultiLine:多行屬性。設(shè)置用戶是否可在文本框內(nèi)輸入多行文本。取值:True:可多行輸入。False:(默認(rèn)值)只能單行輸入。Alignment:對齊屬性。設(shè)置文本框內(nèi)的文本內(nèi)容的對齊方式。取值:0:(默認(rèn)值)靠左對齊。1:靠右對齊。2:居中對齊。說明:本屬性只在MultiLine為True時有效。TabStop:[Tab]鍵屬性。設(shè)置是否可用[Tab]鍵來移動焦點(diǎn)到另一個對象上。取值:True:(默認(rèn)值)可以。False:不可以。其它屬性類似窗體。方法:Refresh:刷新。SetFocus:設(shè)置焦點(diǎn)。通過本方法,可以使光標(biāo)指向指定的文本框。事件:Change:當(dāng)文本框的內(nèi)容發(fā)生變化時,就引發(fā)本事件。LostFocus:當(dāng)光標(biāo)離開文本框時,引發(fā)本事件。Keypress:當(dāng)用戶按下或松開鍵盤上某個按鍵時,發(fā)生本事件。(2)標(biāo)簽:(Label)主要用于在窗體上增加文字說明。標(biāo)簽在工具箱中的圖標(biāo)P25;在窗體中的形式屬性:名稱:標(biāo)簽名稱。(通常以“Lbl”作為前綴。)Caption:標(biāo)題屬性。本屬性的值為顯示在標(biāo)簽上的內(nèi)容。AutoSize:大小自適應(yīng)屬性。即標(biāo)簽的大小是否隨著標(biāo)題內(nèi)容的多少而自動變化。取值:True:是。False:(默認(rèn)值)否。FontName:字體名稱。設(shè)置在標(biāo)簽內(nèi)顯示的文本的字體名稱。方法:Refresh:刷新。Move:移動。事件:Click:單擊事件。DblClick:雙擊事件。(3)命令按鈕:(commandbutton):用戶用鼠標(biāo)單擊命令按鈕,表示要執(zhí)行某項(xiàng)功能。屬性:名稱:(通常以“Cmd”作為前綴。)Caption:標(biāo)題。其值就是在命令按鈕上顯示的文本。Default:設(shè)定此命令按鈕是否為窗體的默認(rèn)按鈕。取值true:在窗體啟動(Active)后,按Enter鍵馬上就會執(zhí)行的命令按鈕。(同一窗體中只能有一個命令按鈕的此項(xiàng)屬性值為true)False:否。Enabled:設(shè)定命令按鈕是否可用。取值true:(默認(rèn)值):可用。false:不可用。(命令按鈕呈灰色)事件:click:單擊事件方法:SetFocus:命令按鈕經(jīng)過SetFocus方法后,將取得焦點(diǎn)。(用戶此時按回車鍵將會執(zhí)行此命令按鈕。)(4)復(fù)選框:(checkbox):用來設(shè)定程序的執(zhí)行狀態(tài)。屬性:名稱:(通常以“Chk”作為前綴。)caption:標(biāo)題,顯示在復(fù)選框的右方,指明此復(fù)選框所代表的功能。Value:表示復(fù)選框在執(zhí)行時的三種狀態(tài)。取值:0:不復(fù)選,執(zhí)行時無勾。1:復(fù)選,執(zhí)行時有勾。2:灰色,表示用戶不能修改這個設(shè)定值,只能看到它目前狀態(tài)。事件:click:單擊事件。方法:Move:Refresh:(5)選項(xiàng)按鈕:(optionbutton)用來設(shè)定程序的執(zhí)行狀態(tài)。屬性:名稱:(通常以“Opt”作為前綴。)caption:標(biāo)題alignment:設(shè)置標(biāo)題文本的對齊方式。取值:0:(默認(rèn)值)靠左對齊1:靠右對齊2:靠中對齊value:其值決定該選項(xiàng)按鈕是否被選中。取值:true:表示此選項(xiàng)按鈕被選中。False:表示此選項(xiàng)按鈕沒選中。說明:一個窗體或一個框架內(nèi)的選項(xiàng)按鈕只能有一個被選中,(不同框架內(nèi)的選項(xiàng)按鈕互不干擾)若用戶不設(shè)定哪一個選項(xiàng)按鈕的值為true,則系統(tǒng)指定第一個選項(xiàng)按鈕的value值為true。事件:click:單擊。方法:Move:Refresh(6)框架:(frame)可以用框架控件將其它各自獨(dú)立的控件(一般指復(fù)選框、選項(xiàng)按鈕等)組合在一組中。如實(shí)驗(yàn)指導(dǎo)書P13、P16。屬性:名稱captiontopleftwidthheightfontforecolor等等事件:clickdblclick等等說明:1、在使用框架控件將其它控件分組時必須先繪制框架控件,后繪制其中的控件。2、在一個框架內(nèi)的控件可以進(jìn)行整體的激活、屏蔽、移動等等。3、在同一個窗體中的多個選項(xiàng)按鈕,只有一個可以被選中,但在窗體中可以用框架將選項(xiàng)按鈕分類,在同一框架內(nèi)的多個選項(xiàng)按鈕中只有一個可以被選取。不同框架內(nèi)的選項(xiàng)按鈕彼此互不干擾。4、要將控件畫在框架之中,不能雙擊控件,因?yàn)槟菢訉⑹箍丶丿B在框架的上面,必須單擊工具圖標(biāo),然后在框架內(nèi)拖動后釋放,這樣的所畫的控件在框架之中。第三章:VisualBasic語言基礎(chǔ)本章內(nèi)容及要求:1熟悉VB程序中代碼和語句書寫規(guī)則;2掌握VB的數(shù)據(jù)類型;3掌握VB的運(yùn)算符和表達(dá)式的使用;4掌握常用內(nèi)部函數(shù)的使用;本章重點(diǎn):變量和常量的定義及使用、運(yùn)算符和表達(dá)式的使用及常用內(nèi)部函數(shù)的使用。本章難點(diǎn):數(shù)據(jù)類型、內(nèi)部函數(shù)。3.1程序代碼的組織方式一個VB程序由窗體界面和程序代碼兩部組成,通過程序代碼把窗口界面的各個對象以及應(yīng)用中的其它元素聯(lián)系在一起。程序代碼部分則由若干被稱為“過程”的代碼行及向系統(tǒng)提供某些信息的說明組成。過程及說明又被組織在“模塊”之中。將設(shè)計(jì)的過程代碼及相關(guān)說明合理地組織到不同的模塊之中,也就是設(shè)計(jì)代碼的結(jié)構(gòu),在創(chuàng)建VB應(yīng)用程序時是最為重要的一個步驟。一過程所謂“過程”,就是具有特定書寫格式、包含若干可被作為一個整體執(zhí)行的代碼的組合。根據(jù)執(zhí)行方式,可把“過程”分為“事件過程”和“通用過程”兩類。二模塊模塊是VB用于將不同類型過程代碼組織到一起而提供的一種結(jié)構(gòu)。在VB中具有三種類型的模塊:窗體模塊標(biāo)準(zhǔn)模塊類模塊。3.2.VB代碼書寫規(guī)則(1)程序中不區(qū)分字母的大小寫,Ab與AB等效;(2)系統(tǒng)對用戶程序代碼進(jìn)行自動轉(zhuǎn)換:1)對于VB中的關(guān)鍵字,首字母被轉(zhuǎn)換成大寫,其余轉(zhuǎn)換成小寫2)若關(guān)鍵字由多個英文單詞組成,則將每個單詞的首字母轉(zhuǎn)換成大寫3)對于用戶定義的變量、過程名,以第一次定義的為準(zhǔn),以后輸入的自動轉(zhuǎn)換成首次定義的形式(1)在同一行上可以書寫多行語句,語句間用冒號(:)分隔(2)單行語句可以分多行書寫,在本行后加續(xù)行符:空格和下劃線_(3)一行允許多達(dá)255個字符3.3VB的數(shù)據(jù)類型3.3.1.數(shù)據(jù)類型VB的標(biāo)準(zhǔn)數(shù)據(jù)類型類型存儲空數(shù)據(jù)類型關(guān)鍵字前綴范圍符間字節(jié)1個字?jǐn)?shù)ByteByt0到255型節(jié)值數(shù)2個字整型Integer%Int-32,768到32,767據(jù)節(jié)類長整4個字-2,147,483,648到Long&Lng型型節(jié)2,147,483,647負(fù)數(shù):-3.402823E38到單精4個字Single~Sng-1.401298E-45;正數(shù):度型節(jié)1.401298E-45到3.402823E38負(fù)數(shù):-1.79769313486232E308-雙精8個字4.94065645841247E-324;Double#Dbl度型節(jié)正數(shù):4.94065645841247E-3241.79769313486232E308從-922,337,203,685,477.5808貨幣8個字Currency@Cur型節(jié)到922,337,203,685,477.58072個字邏輯型BooleanBlnTrue或False節(jié)8個字100年1月1日到9999年12日期型DateDtm節(jié)月31日4個字對象型ObjectObj任何Object引用節(jié)10字節(jié)變長字符String$Str加字符0到大約20億型串長度定長字符字符串String$Str1到大約65,400型長度變體數(shù)字16個字任何數(shù)字值,最大可達(dá)Double的VariantVnt型節(jié)范圍22個字變體字符節(jié)加字VariantVnt與變長String有相同的范圍型符串長度注意:1)VB中對沒有聲明的變量其缺省的數(shù)據(jù)類型是變體型,可以用來存儲各種數(shù)據(jù),但所占用的內(nèi)存比其它類型都多。為提高運(yùn)行效率(整型效率較高),或達(dá)到一定的運(yùn)算精確度(浮點(diǎn)型精度較高,但運(yùn)行較慢),應(yīng)合理的定義數(shù)據(jù)類型。2)邏輯型數(shù)據(jù)只有True和False兩個值,轉(zhuǎn)換成整型時,True=-1,F(xiàn)alse=0,將其它類型轉(zhuǎn)換成邏輯型時,非0數(shù)轉(zhuǎn)換為True,0轉(zhuǎn)換為False。3)字符型可以包括所有的西文字符和漢字,字符必須用雙引號括""起來,如:"abc123"4)日期型數(shù)據(jù)按8字節(jié)的浮點(diǎn)數(shù)來存儲,日期型數(shù)表示方式有兩種:可以用號碼符#括起來,也可以用數(shù)字序列表示(小數(shù)點(diǎn)左邊的數(shù)字代表日期,右邊代表時間,0為午夜,0。5為中午12點(diǎn),負(fù)數(shù)表示是1899年12月31日前的日期和時間)。如:#3/22/2002##2002-3-2214:30:20#DimTAsDateT=-2.5PrintT'打印出來的結(jié)果是1899-12-2812:00:00,)任何數(shù)據(jù)類型的數(shù)組都需要20個字節(jié)的內(nèi)存空間,加上每一數(shù)組維數(shù)占4個字節(jié),再加上數(shù)據(jù)本身所占用的空間。數(shù)據(jù)所占用的內(nèi)存空間可以用數(shù)據(jù)元數(shù)目乘上每個元素的大小加以計(jì)算。例如,以4個2字節(jié)之Integer數(shù)據(jù)元所組成的一維數(shù)組中的數(shù)據(jù),占8個字節(jié)。這8個字節(jié)加上額外的24個字節(jié),使得這個數(shù)組所需總內(nèi)存空間為32個字節(jié)。2.變量與常量(1)變量或常量的命名規(guī)則1)必須以字母或漢字開頭,由字母、漢字、數(shù)字或下劃線組成,長度?255個字符;2)不能使用VB中的關(guān)鍵字,并盡量不與VB中標(biāo)準(zhǔn)函數(shù)名同名;如:Dim、Sin3)VB中不區(qū)分變量的大小寫,一般變量首字母用大寫,其余用小寫;常量全部用大寫字母表示4)為了增加程序的可讀性,可在變量名前加一個縮寫的前綴來表明該變量的數(shù)據(jù)類型。(2)變量聲明1)用Dim語句進(jìn)行顯式聲明語句形式:Dim變量名[As類型]如:DimintXAsinteger說明:?如果沒有As類型,則默認(rèn)為變體類型。?可在變量名后加類型符來代替As類型如:DimintX%?一條語句可以同時定義多個變量,但每個變量必須有自己的類型聲明,類型聲明不能共用;?字符串變量根據(jù)其存放的長度是否固定,定義方法不同:定長字符串:DimstrAAsString*10表示最多存放10個字符,如果賦值不足10個,則右補(bǔ)空;若多于10個,則多余部分截去。不定長字符串:DimstrAAsString最多可存放2MB個字符2)隱式聲明VB中允許變量不經(jīng)過聲明就直接使用,這種稱為隱式聲明,所有隱式聲明的變量都是變體型的。隱式聲明容易造成錯誤,為了調(diào)試程序方便,一般對使用的變量都進(jìn)行聲明,可以在通用聲明段使用OptionExplicit語句來強(qiáng)制顯式聲明所有變量。(3)常量1)直接常量指在程序中直接給出值的數(shù)據(jù),如:123、123&、123.45、1.234E2、123D3分別表示整型、長整型、單精度浮點(diǎn)型(小數(shù)形式)、單精度浮點(diǎn)型(指數(shù)形式)、雙精度浮點(diǎn)型。八進(jìn)制常數(shù):在數(shù)值前加&O,如&O123十六進(jìn)制常數(shù):在數(shù)值前加&H,如&H1232)用戶聲明的符號常量用Const來聲明:Const符號常量名[As類型]=表達(dá)式如:ConstPI=3.14159'聲明了常量PI,代表3.14159,單精度型ConstMAXAsInteger=&O144''聲明了常量MAX,代表八進(jìn)制數(shù)144,整型ConstCOUNT#=45.67'聲明了常量COUNT,代表45.67,雙精度型3)系統(tǒng)提供的常量系統(tǒng)定義的常量位于對象庫中,在對象瀏覽器中的VisualBasic(VB)和VisualBasicforAplication(VBA)等對象庫中列出了VB的常量。這些常量可以與應(yīng)用程序的對象、方法、屬性一起使用。如:Form1.WindowsState=vbMaximized表示將窗口極大化。3.變量作用域與變量說明語句1)變量作用域變量的有效作用范圍稱為變量作用域。VB有以下三個作用域等級,見表3:等級范圍局部在過程中說明,僅在說明它的過程有效窗體、模塊在窗體或模塊中說明,在定義該變量的模塊或窗體的所有過程內(nèi)均有效。在模塊或窗體中說明,在工程內(nèi)的所有全局(公有)過程中都有效3.4運(yùn)算符與表達(dá)式本節(jié)課重點(diǎn):運(yùn)算符的功能及優(yōu)先級表達(dá)式的書寫及運(yùn)算規(guī)則VB中的運(yùn)算符和表達(dá)式可分為:算術(shù)運(yùn)算符與算術(shù)表達(dá)式、關(guān)系運(yùn)算符與關(guān)系表達(dá)式、邏輯運(yùn)算符與邏輯表達(dá)式1(算術(shù)運(yùn)算符VB的算術(shù)運(yùn)算符有以下幾種:。,:加法運(yùn)算,也適合于字符串的之間的合并運(yùn)算。,,:加法運(yùn)算。,*:乘法運(yùn)算。,/:除法運(yùn)算。,\:整除運(yùn)算。,Mod:求余運(yùn)算。例如:aModb表示a被b整除以后的余數(shù)。,^:冪運(yùn)算。A^B表示以A為底的B次方。把常量、變量等運(yùn)算元素用算術(shù)運(yùn)算符連接起來的式子稱為“算術(shù)表達(dá)式”。例如:a*b/(c*d)3.14159265*r^2等帶有括號的算術(shù)表達(dá)式在運(yùn)算時將優(yōu)先進(jìn)行括號內(nèi)的運(yùn)算注意:(1)/和,的區(qū)別:1/2=0.5,1,2=0(2)Mod運(yùn)算中,結(jié)果與被除數(shù)同號例如:-9Mod7結(jié)果為-2字符串運(yùn)算符與字符串表達(dá)式字符串運(yùn)算符有:,、+。功能是字符串連接例如:"ABCD"+"EFGHI"?結(jié)果為:"ABCDEFGHI""VB"&"程序設(shè)計(jì)教程"'結(jié)果為:"VB程序設(shè)計(jì)教程"說明:當(dāng)連接符兩旁的操作量都為字符串時,上述兩個連接符等價。它們區(qū)別是:+(連接運(yùn)算):兩個操作數(shù)均應(yīng)為字符串類型;&(連接運(yùn)算):兩個操作數(shù)既可為字符型也可為數(shù)值型,當(dāng)是數(shù)值型時,系統(tǒng)自動先將其轉(zhuǎn)換為數(shù)字字符,然后進(jìn)行連接操作。3.4.2關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算符都是雙目運(yùn)算,是用來比較兩個運(yùn)算量之間的關(guān)系,關(guān)系表達(dá)式的運(yùn)算結(jié)果為邏輯量。若關(guān)系成立,結(jié)果為True,若關(guān)系不成立,結(jié)果為False。關(guān)系運(yùn)算也稱比較運(yùn)算,它表示不等式的真或假,VB共提供六種運(yùn)算符,分別是=(等于),>(大于),<(小于),>=(大于等于),<=(小于等于)和<>(不等于)。關(guān)系表達(dá)式就是用關(guān)系運(yùn)算把兩個比較對象連接起來的式子。?比較對象可以是變量、常量和算術(shù)表達(dá)式。例如:a<32x+y>=z/2b$<>"Basic"object1isobject2?關(guān)系表達(dá)式的運(yùn)算是采用“按值比較”的方法,即先求出運(yùn)算符兩邊的“值”,若是變量,則取其當(dāng)前值,如果兩端的值滿足條件,則結(jié)果為“True”,否則為“False”。3.4.3邏輯運(yùn)算符與邏輯表達(dá)式邏輯運(yùn)算是對邏輯值進(jìn)行的運(yùn)算,Not邏輯非為單目運(yùn)算符(要求一個操作數(shù)),其它為雙目運(yùn)算符。運(yùn)算符說明說明例結(jié)果取反操作數(shù)為假,結(jié)果為真,NotNotFT操作數(shù)為真,結(jié)果為假與操作數(shù)均為真時,結(jié)果才AndTAndFF為真TAndTT或操作數(shù)中有一個為真時,OrTOrFT結(jié)果為真FOrFF異或操作數(shù)相反時,結(jié)果才為XorTXorFT真TXorTF邏輯運(yùn)算的優(yōu)先次序是:Not?And?Or?Xor2(邏輯表達(dá)式邏輯表達(dá)式是用邏輯運(yùn)算符把邏輯變量連接起來的式子。例如:a>=2*3.141159*rAnd(x<>5OrNotb)x>2OrText1.text=”Microsoft”表達(dá)式的書寫:(1)運(yùn)算符不能相鄰。例a+*b是錯誤的。(2)乘號不能省略。例x乘以y應(yīng)寫成:x*y(3)括號必須成對出現(xiàn),均使用圓括號,可以嵌套使用。(4)表達(dá)式從左到右在同一基準(zhǔn)并排書寫,不能出現(xiàn)上下標(biāo)(5)要注意各種運(yùn)算符的優(yōu)先級別,為保持運(yùn)算順序,在寫,,表達(dá)式時需要適當(dāng)添加括號()3.4.4(運(yùn)算規(guī)則表達(dá)式中出現(xiàn)了多種不同類型的運(yùn)算符時,其運(yùn)算符優(yōu)先級如下:算術(shù)運(yùn)算符>關(guān)系運(yùn)算符>邏輯運(yùn)算符說明:1(當(dāng)一個表達(dá)式中出現(xiàn)多種運(yùn)算符時,首先進(jìn)行算術(shù)運(yùn)算,接著關(guān)系運(yùn)算符,最后處理邏輯運(yùn)算符,在各類運(yùn)算中再按照相應(yīng)的優(yōu)先次序進(jìn)行。2(可以用括號改變優(yōu)先順序,強(qiáng)令表達(dá)式的某些部分優(yōu)先運(yùn)行。括號內(nèi)的運(yùn)算總是優(yōu)先于括號外的運(yùn)算。對于多重括號,總是由內(nèi)到外。2.3VB的公共函數(shù)1.數(shù)學(xué)函數(shù)VB中常用的數(shù)學(xué)函數(shù)函數(shù)名功能示例結(jié)果Sqr(x)求平方根Sqr(9)3Log(x)求自然對數(shù),x>0Log(10)2.3xExp(x)求以e為底的冪值,即求eExp(3)20.086Abs(x)求x的絕對值A(chǔ)bs(-2.5)2.5Hex[$](x)求x的十六進(jìn)制數(shù),返回的是字符型值Hex[$](28)"1C"Oct[$](x)求x的八進(jìn)制數(shù),返回的是字符型值Oct[$](10)"12"Sgn(x)求x的符號,當(dāng)x>0,返回1;x=0,返Sgn(15)1回0;x<0,返回-1Rnd(x)產(chǎn)生一個在(0,1)區(qū)間均勻分布的隨機(jī)Rnd(x)0-1之間數(shù),每次的值都不同;若x=0,則給出的的數(shù)是上一次本函數(shù)產(chǎn)生的隨機(jī)數(shù)Sin(x)求x的正弦值,x的單位是弧度Sin(0)0Cos(x)求x的余弦值,x的單位是弧度Cos(1)0.54Tan(x)求x的正切值,x的單位是弧度Tan(1)1.56Atn(x)求x的反正切值,x的單位是弧度,函數(shù)Atn(1)0.79返回的是弧度值2.字符函數(shù)(1)字符串編碼在Windows采用的DBCS(DoubleByteCharacterSet)編碼方案中,一個漢字在計(jì)算機(jī)內(nèi)存中占2個字節(jié),一個西文字符(ASCII碼)占1個字節(jié),但在VB中采用的是Unicode(ISO字符標(biāo)準(zhǔn))來存儲字符的,所有字符都占2個字節(jié)。為方便使用,可以用StrConv函數(shù)來對Unicode與DBCS進(jìn)行轉(zhuǎn)換,可以用函數(shù)Len()函數(shù)求字符串的字符數(shù),用LenB()函數(shù)求字符串的字節(jié)數(shù)。(2)常用的字符串函數(shù)函數(shù)名功能示例結(jié)果Len(x)求x字符串的字符Len("ab技術(shù)")4長度(個數(shù))LenB(x)求x字符串的字節(jié)LenB("ab技術(shù)")8個數(shù)Left(x,n)從x字符串左邊取Left("ABsYt",2)"AB"n個字符Right(x,n)從x字符串右邊取Right("ABsYt",2)"Yt"n個字符從x字符串左邊第Mid(x,n1,n2)Mid("ABsYt",2,3)"BsY"n1個位置開始向右取n2個字符Ucase(x)將x字符串中所有Ucase("ABsYug")ABSYUG小寫字母改為大寫Lcase(x)將x字符串中所有Ucase("ABsYug")absyug大寫字母改為小寫Ltrim(x)去掉x左邊的空格Lrim("ABC")"ABC"Rtrim(x)去掉x右邊的空格Trim("ABC")"ABC"Trim(x)去掉x兩邊的空格Trim("ABC")"ABC"在x中查找給定的字符,返回該字符Instr(x,"字符",M)在x中的位置,M=1Instr("WBAC","B")2不區(qū)分大小寫,省略則區(qū)分String(n,"字符")得到由n個首字符String(3,"abcd")"aaa"組成的一個字符串Space(n)得到n個空格Space(3)""在C字符串中從N1Replace("ABCASAA",""ABC12S12Replace(C,C1,C2,N1,N開始將C2替代N2A","12",2,2)A2)次C1,如果沒有N1表示從1開始3.日期與時間函數(shù)常用的日期與時間函數(shù)函數(shù)名含義示例結(jié)果Date()返回系統(tǒng)日期Date()02-3-19Time()返回系統(tǒng)時間Time()3:30:00PMNow返回系統(tǒng)時間和日期Now02-3-193:30:00Month(C)返回月份代號(1-12)Month("02,03,19")3Year(C)返回年代號(1752-2078)Year("02-03-19")2002Day(C)返回日期代號(1-31)Day("02,03,19")19WeekDay()返回星期代號(1-7),星期日WeekDay("02,03,17")1為1增減日期函數(shù):DateAdd(要增減日期形式,增減量,要增減的日期變量)例:計(jì)算期末考試日期:DateAdd("ww",15,#2002/3/19#)求日期之差函數(shù):DateDiff(要間隔日期形式,日期一,日期二)例:計(jì)算距畢業(yè)天數(shù):DateDiff("d",Now,#2005/6/30#)日期形式日期形式y(tǒng)yyyqmydwwwhns意義年季月一年的天數(shù)日一周的天數(shù)星期時分秒4.轉(zhuǎn)換函數(shù)函數(shù)名功能示例結(jié)果Str(x)將數(shù)值數(shù)據(jù)x轉(zhuǎn)換成字符串Str(45.2)"45.2"Val(x)將字符串x中的數(shù)字轉(zhuǎn)換成數(shù)值Val("23ab")23Chr(x)返回以x為ASCII碼的字符Chr(65)"A"Asc(x)給出字符x的ASCII碼值,十進(jìn)制數(shù)Asc("a")97Cint(x)將數(shù)值型數(shù)據(jù)x的小數(shù)部分四舍五入Cint(3.6)4取整Int(-3.5)-4Int(x)取小于等于x的最大整數(shù)Int(3.5)3Fix(x)將數(shù)值型數(shù)據(jù)x的小數(shù)部分舍去Fix(-3.5)-3True將任何有效的數(shù)字字符串或數(shù)值轉(zhuǎn)換CBool(x)CBool(2)CBool("0")成邏輯型FalseCByte(x)將0-255之間的數(shù)值轉(zhuǎn)換成字節(jié)型CByte(6)6CDate(x)將有效的日期字符串轉(zhuǎn)換成日期CDate(#1990,2,23#)1990-2-23CCur(x)將數(shù)值數(shù)據(jù)x轉(zhuǎn)換成貨幣型CCur(25.6)25.6Round(x,N)在保留N位小數(shù)的情況下四舍五入取Round(2.86,1)2.9整CStr(x)將x轉(zhuǎn)換成字符串型CStr(12)"12"CVar(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成變體型CVar("23")+"A""23A"CSng(x)將數(shù)值數(shù)據(jù)x轉(zhuǎn)換成單精度型CSng(23.5125468)23.51255CDbl(x)將數(shù)值數(shù)據(jù)x轉(zhuǎn)換成雙精度型CDbl(23.5125468)23.51254685.格式輸出Format函數(shù)Format函數(shù)用于制定字符串或數(shù)字的輸出格式。語法:x=Format(expression,fmt)expression是所輸出的內(nèi)容。fmt是指輸出的格式,這是一個字符串型的變量,這一項(xiàng)若省略的話,那么Format函數(shù)將和Str函數(shù)的功能差不多。如:語句輸出Format(2,“0.00”)2.00Format(.7,“0%”)70%Format(1140,“$#,##0”)$1,140Format字符的意義字符意義字符意義0顯示一數(shù)字,若此位置沒有數(shù)字則補(bǔ).小數(shù)點(diǎn)0#顯示一數(shù)字,若此位置沒有數(shù)字則不,千位的分隔符顯示%數(shù)字乘以100并在右邊加上”%”號-+$()這些字出現(xiàn)在fmt里將原樣打出第四章VB程序的控制結(jié)構(gòu)4.1算法概論1(算法的概念算法:指用計(jì)算機(jī)解決某一問題的方法和步驟。算法分類:數(shù)值算法:用于解決一般數(shù)學(xué)解析方法難以解決的問題,如:求超越方程的根、求定積分、解微分方程等。非數(shù)值算法:用于對非數(shù)值信息進(jìn)行查找、排序等2(算法的特征(1)確定性:指算法的每個步驟都應(yīng)確切無誤,沒有歧義。(2)可行性:指算法的每個步驟必須是計(jì)算機(jī)能夠有效執(zhí)行、可以實(shí)現(xiàn)的,并可得到確定的結(jié)果。(3)有窮性:指一個算法應(yīng)該在有限的時間和步驟內(nèi)可以執(zhí)行完畢的。(4)輸入性:指一個算法可以有0或多個輸入數(shù)據(jù)。(5)輸出性:指一個算法必須有一個或多個輸出結(jié)果。3(算法的評價主要評價指標(biāo)是:算法是否正確、運(yùn)行的效率、占用系統(tǒng)資源的多少。4(算法的描述一般常用流程框圖來描述算法。圖形符號名稱代表操作輸入/輸出數(shù)據(jù)的輸入與輸出處理各種形式的數(shù)據(jù)處理判斷判斷選擇,根據(jù)條件滿足與否選擇不同路徑起止流程的起點(diǎn)與終點(diǎn)特定過程一個定義過的過程流程線連接各個框圖,表示執(zhí)行順序連接點(diǎn)表示與流程圖其他部分相連接5.基本算法結(jié)構(gòu)“結(jié)構(gòu)化程序設(shè)計(jì)方法”規(guī)定算法有三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)6(算法示例歐幾里德算法——求兩個自然數(shù)的最大公約數(shù)4(2賦值語句及InputBox、MsgBox函數(shù)(1)賦值語句:P59一般格式:var=<表達(dá)式>其中:var可以是變量名或?qū)傩悦9δ?將表達(dá)式的值賦給“=”左邊的變量(或?yàn)槟硞€對象設(shè)置某屬性值)。使用說明:?“=”左邊的變量和右邊的表達(dá)式的值的類型要一致。程序舉例:已知半徑,求圓面積已知三邊長,求三角形面積P65(2)不同數(shù)據(jù)類型數(shù)據(jù)的賦值:P594(2(2InputBox函數(shù):P60InputBox函數(shù):用來接受用戶通過鍵盤輸入的數(shù)據(jù)。InputBox的使用形式:(P60)v=InputBox(prompt[,title][,default][,x,y][,helpfile,context])其中:v:可為變體變量、字符串變量、數(shù)值變量。功能:執(zhí)行本語句,調(diào)用InputBox函數(shù)時,將在屏幕上出現(xiàn)一個帶有提示信息的對話框,當(dāng)用戶從對話框的用戶編輯框中輸入數(shù)據(jù)并按回車鍵(或單擊確定按鈕))后,系統(tǒng)則把輸入的數(shù)據(jù)賦給變量v?;虬碵Esc]鍵或取消按鈕,則把0或空串賦給變量v。用戶可通過設(shè)置InputBox函數(shù)的參數(shù)來定制提示信息對話框的形式。具體內(nèi)容見P61例:P612、MsgBox函數(shù):向用戶發(fā)布提示信息,并要求用戶作出必要的響應(yīng)。函數(shù)格式:(P61)例:P634(3分支結(jié)構(gòu)與分支結(jié)構(gòu)語句?if–then結(jié)構(gòu):(可實(shí)現(xiàn)單分支)一般格式:格式一:ifethen語句格式二:ifethen語句組endif其中:e為條件,其形式可為:邏輯變量、關(guān)系表達(dá)式或邏輯表達(dá)式。功能:執(zhí)行本語句時,判斷e的值,若為true,則執(zhí)行then后的語句(語句組),若為false,則執(zhí)行本if語句(或endif)下面的語句。(對此功能的理解可看P64圖4-7)程序舉例:用InputBox輸入一個數(shù),若此數(shù)大小0,則在窗體上將它顯示出來。PrivateSubForm_click()DimxAsIntegerx=InputBox("請輸入一個數(shù)")Ifx>0ThenPrintxEndSub?if-then-else-endif結(jié)構(gòu):(可實(shí)現(xiàn)兩分支)一般格式:ifethenA語句組ElseB語句組Endif功能:執(zhí)行本語句時,先判斷e的值:e為true:執(zhí)行A語句組后轉(zhuǎn)endif下一條語句繼續(xù)執(zhí)行。e為false:執(zhí)行B語句組后轉(zhuǎn)endif下一條語句繼續(xù)執(zhí)行。(對此功能的理解可參考P58圖4-3(b))程序舉例:教材P65、實(shí)驗(yàn)指導(dǎo)書P43實(shí)驗(yàn)5-3?if-then-elseif結(jié)構(gòu):(可實(shí)現(xiàn)多分支)一般格式:ife1thenA1語句組Elseife2thenA2語句組Elseife3thenA3語句組……ElseifenthenAn語句組elseA(n+1)語句組Endif功能:執(zhí)行本語句時依次判斷各條件的值,若有e的值為true,則執(zhí)行相應(yīng)的A語句組后轉(zhuǎn)endif的下一條語句去繼續(xù)執(zhí)行。ii若所有e的值均為false,則執(zhí)行else后的A(n+1)語句組后轉(zhuǎn)endif的下一條語句i去繼續(xù)執(zhí)行。(對此功能的理解參考教材P66圖4-8)一般來說,e中最多只有一個值為true。i程序舉例:教材P66例4-2?Select-Case-EndSelect結(jié)構(gòu)語句:(可以實(shí)現(xiàn)多分支結(jié)構(gòu))P66一般格式:SelectCaseeCasec1A1語句組Casec2A2語句組……CasecnAn語句組CaseElseA(n+1)語句組EndSelect其中:e:測試表達(dá)式,形式可為:算術(shù)表達(dá)式或字符表達(dá)式。c1,c2,…:測試項(xiàng)。形式可為以下三種:?具體取值:常量1,常量2,…..?連續(xù)的數(shù)據(jù)范圍:下界值to上界值例如:8to12BtoH等等。?滿足某個判決條件:Is<關(guān)系表達(dá)式>常量例如:Is>20Is<=”p”其中Is代表e(測試表達(dá)式)的值。-2程序舉例:教材P67例44(4循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句循環(huán)語句:(可以使得某些語句組重復(fù)執(zhí)行的語句)4(4(2for-next循環(huán)語句:P69一般格式:forv=e1toe2[stepe3]……[exitfor]循環(huán)體語句組……nextv其中:v:循環(huán)控制變量。應(yīng)為整型或單精度型。e1:循環(huán)控制變量的初值。e2:循環(huán)控制變量的終值。e3:循環(huán)控制變量的步長值。功能:(執(zhí)行過程):P70使用說明:?超過終值的情況:當(dāng)e3>0時,指v>e2,當(dāng)e3<0時,指v<e2。?循環(huán)次數(shù)的計(jì)算公式:循環(huán)次數(shù)=Int((e2-e1)/e3)+1?當(dāng)step1時,此部分可以省略。?循環(huán)中執(zhí)行到exitfor語句時,結(jié)束本循環(huán)語句,轉(zhuǎn)本next的下一條語句去執(zhí)行。程序舉例:P70例:求1+2+3+4+5PrivateSubForm_click()DimsAsInteger,iAsIntegers=0Fori=1To5s=s+iNextiPrint"s=";sEndSub例:求1*2*3*4PrivateSubForm_click()DimsAsInteger,iAsIntegers=1Fori=1To4s=s*iNextIPrint"s=";sEndSub例4-4P70例4-5P71先看len、mid函數(shù)的使用:有一個字符串A=”abcd”(1)則len(A)=4len(x)可獲得x字符串長度。(一個漢字為2個字符)(2)(2)mid(x,n1,n2):取子串函數(shù)作用一:取子串:mid(A,1,1)=”a”mid(A,1,2)=”ab”mid(A,3,1)=”c”從一個字符串中一個一個取出字符的方法:forI=1tolen(x)printmid(x,I,1)nextI若逆序取出:forI=len(x)to1step-1printmid(x,I,1)nextI作用二:改變一個字符串中某些字符。mid(x,2,2)=”k”4(4(3循環(huán)嵌套:P73forI=1to2fotj=1to3print“b”nextjprint“a”nextI程序舉例:P73例4-6rnd(x):隨機(jī)函數(shù)的使用方法:P73改變程序中rnd(X)中的X取值,觀察結(jié)果PrivateSubForm_click()PrintRnd(1);Rnd(0)EndSub產(chǎn)生[a,b]范圍內(nèi)隨機(jī)整數(shù)的公式:P73int((b-a+1)*rnd+a)例:生成5個3位隨機(jī)整數(shù)。ForI=1to5Printint((999-100+1)*rnd+100)NextI自習(xí)P74各例isNumeric(x):判斷一個字符串是否是一個數(shù)字串。若x是數(shù)字串,其值為True,若不是數(shù)字串,其值為False4(4(1do-loop循環(huán)結(jié)構(gòu):P68一般格式:4種P68dowhileedo…………[exitdo][exitdo]…………looploopwhilee格式一:(1)先判斷e的值,為true,執(zhí)行循環(huán)體A,為false,循環(huán)結(jié)束,轉(zhuǎn)loop的下面一條語句去執(zhí)行。(2)循環(huán)體執(zhí)行完后,執(zhí)行l(wèi)oop語句,返回(1)。流程圖P67(a)例:(補(bǔ)充)求s=1+2+3+4+??當(dāng)結(jié)果大小等于55時結(jié)束PrivateSubForm_click()DimsAsInteger,nAsIntegers=0n=0DoWhiles<55n=n+1s=s+nLoopPrints,nEndSub格式二:(1)執(zhí)行循環(huán)體語句組。(2)執(zhí)行到loopwhile語句時,判斷e的值,若為true,轉(zhuǎn)(1),若為false,循環(huán)結(jié)束,轉(zhuǎn)loop的下面一條語句去執(zhí)行。流程圖P67(b)格式三:dountile格式四:do…..….[exitdo][exitdo]…………looploopuntile格式三功能:(1)判斷e的值,若為false,則執(zhí)行循環(huán)體語句;若為true,則循環(huán)結(jié)束,轉(zhuǎn)loop的下面一條語句去執(zhí)行。(2)執(zhí)行l(wèi)oop語句時,返回(1)流程圖P68圖4-13(b)格式四功能:(1)執(zhí)行循環(huán)體語句(2)執(zhí)行l(wèi)oop語句時,判斷e的值,若為false,返回(1),若為true,則循環(huán)結(jié)束,轉(zhuǎn)loop的下面一條語句去執(zhí)行。流程圖P68圖4-13(a)特別說明:無論哪種格式,記住循環(huán)體執(zhí)行的條件:(1)while后的條件值為true時,執(zhí)行循環(huán)體,為false時,循環(huán)結(jié)束。(,)until后的條件值為false時,執(zhí)行循環(huán)體,為true時,循環(huán)結(jié)束。程序舉例:P68例4-3第五章第五章數(shù)組5(5(1數(shù)組的概念數(shù)組:是同類變量的一個有序的集合。例:有5個學(xué)生的數(shù)學(xué)成績,若編程時這樣存放:s1=50s2=90s3=80s4=60s5=70則5個分?jǐn)?shù)分別存放在s1s2s3s4s5簡單變量中若編程時這樣存放:s(1)=89s(2)=67s(3)=42s(4)=68s(5)=97則5個分?jǐn)?shù)分別存放在一個s數(shù)組中。一、數(shù)組命名、數(shù)組元素、數(shù)組的維數(shù)與數(shù)組的類型:上例中:數(shù)組名s命名規(guī)則同簡單變量的命名規(guī)則。P45數(shù)組元素:數(shù)組中的每個成員為一個元素。如上例中s數(shù)組中有5個元素,分別為:s(1)s(2)s(3)s(4)s(5)數(shù)組元素又稱為下標(biāo)變量。其中:1,2,3,4,5稱為下標(biāo)。表示該元素在數(shù)組中排列的位置。數(shù)組的維數(shù):一維數(shù)組:只有一個下標(biāo)的數(shù)組稱為一維數(shù)組。二維數(shù)組:有兩個下標(biāo)的數(shù)組稱為二維數(shù)組。X(2,5)N維數(shù)組:有N個下標(biāo)的數(shù)組稱為N維數(shù)組。Score(1,3,5??)數(shù)組的類型:(1)(1)固定大小數(shù)組:P85(2)(2)動態(tài)數(shù)組:二、數(shù)組定義:程序中的數(shù)組必須先定義,后使用。?數(shù)組說明語句一般格式:P85Dim數(shù)組名1([<維界定義>])[As<數(shù)據(jù)類型>][,數(shù)組名2(下標(biāo)范圍)As<數(shù)據(jù)類型>]……其中:維界定義的形式:[下界1to]上界1[,[下界2to]上界2]……例如:Dima(1to5)Asinteger本語句說明了一個一維a數(shù)組,有5個元素,分別為a(1),a(2),a(3),a(4),a(5)又例如:Dimb(1to2,1to3)AsSingle,c(3)AsInteger,d(3to5)本語句說明了三個數(shù)組:二維數(shù)組b:有2行3列,6個元素分別為:b(1,1)b(1,2)b(1,3)b(2,1)b(2,2)b(2,3)一維數(shù)組c:有4個元素:c(0)c(1)c(2)c(3)d:有3個元素:d(3)d(4)d(5)一維數(shù)組使用說明:,,下界缺省時,為0。,,若在窗體或標(biāo)準(zhǔn)模塊的所有過程之前書寫下列語句:OptionBase1則下界缺省值為1。,,下界1或下界2只能是常量,不允許是變量或其它表達(dá)式。5.2數(shù)組的基本操作P925(2(1數(shù)組元素的賦值1(用賦值語句給數(shù)組元素賦值例:P92DimScore(3)AsIntegerDimTwo(1,1to2)AsIntegerScore(0)=80Score(1)=75Score(2)=91Score(3)=68Two(0,1)=Score(0)PrintTwo(0,1)22通過循環(huán)逐一給數(shù)組元素賦值例:PrivateSubForm_Click()DimA(6)AsInteger,iAsIntegerDimB(1To2,1To2)AsInteger,jAsIntegerFori=0To6'使用循環(huán)給一維數(shù)組賦值并輸出A(i)=Int(99*Rnd)+1PrintA(i)NextiPrintFori=1To2'利用二重循環(huán)給二維數(shù)組賦值并輸出Forj=1To2B(i,j)=i*10+jPrintB(i,j);NextjPrintNextiEndSub33用InputBox函數(shù)給數(shù)組元素賦值PrivateSubForm_Click()DimA(6)AsInteger,VAsVariantFori=0To6A(i)=InputBox("給數(shù)組元素賦值","數(shù)組A賦值")PrintA(i);NextiPrintEndSub4用Array函數(shù)給數(shù)組賦值A(chǔ)rray函數(shù)的一般使用形式如下:〈變體變量名〉=Array([數(shù)據(jù)列表])功能:將一個數(shù)據(jù)集賦給一個Variant變量,并將該變量創(chuàng)建成一個一維數(shù)組。例P93OptionBase1PrivateSubForm_Click()DimAAsVariant,IAsIntegerDimB(4)AsVariantA=Array(5,4,3,2,1)PrintA(1);A(2);A(3);A(4);A(5)A=Array(1.5,2.3,3.6,4.1)PrintA(1);A(2);A(3);A(4)A="NOArray"PrintA'B=Array(1,2,3,4,5,6)?注意A與B的區(qū)別EndSub5(2(2數(shù)組元素的輸出例:一維數(shù)組的輸出二維數(shù)組的輸出P94OptionExplicitOptionBase1PrivateSubForm_click()DimkAsInteger,iAsIntegerDimA(4,5)AsInteger,JAsInteger,SAsString'生成數(shù)組k=10Fori=1To4IfiMod2<>0Then'處理奇數(shù)行ForJ=1To5k=k+1A(i,J)=kNextJElseForJ=5To1Step-1'處理偶數(shù)行k=k+1A(i,J)=kNextJEndIfNexti'數(shù)組輸出IfCheck1.Value<>1ThenFori=1To4'輸出到圖片框ForJ=1To5Picture1.PrintA(i,J);NextJPicture1.PrintNextiElseFori=1To4'輸出到多行文本框ForJ=1To5S=S&Str(A(i,J))NextJS=S&Chr(13)&Chr(10)NextiText1.Text=SEndIfEndSub5(2(3數(shù)組元素的引用例5-1P95OptionExplicitOptionBase1PrivateSubForm_Click()DimCompare(12)AsInteger,iAsIntegerDimMaxAsInteger,MinAsIntegerRandomizeFori=1To12Compare(i)=Int(90*Rnd)+10PrintCompare(i);NextiPrintMax=Compare(1):Min=Compare(1)Fori=2To12IfCompare(i)>MaxThenMax=Compare(i)ElseIfCompare(i)<MinThenMin=Compare(i)EndIfNextiPrint"最大數(shù)是:";MaxPrint"最小數(shù)是:";MinEndSub5.5程序示例P102例5-3選擇排序法直接排序法OptionExplicitOptionBase1PrivateSubCmdSort_Click()DimSort(10)AsInteger,TempAsIntegerDimIAsInteger,JAsIntegerRandomizeForI=1To10Sort(I)=Int(Rnd*(100-1))+1Text1=Text1&Str(Sort(I))NextIForI=1To9ForJ=I+1To10IfSort(I)>Sort(J)ThenTemp=Sort(I)Sort(I)=Sort(J)Sort(J)=TempEndIfNextJText2=Text2&Str(Sort(I))NextIText2=Text2&Str(Sort(10))EndSubOptionExplicitOptionBase1PrivateSubCmdSort_Click()DimSort(10)AsInteger,TempAsIntegerDimIAsInteger,JAsIntegerDimPointerAsIntegerRandomizeForI=1To10Sort(I)=Int(Rnd*(100-1))+1Text1=Text1&Str(Sort(I))NextIForI=1To9Pointer=IForJ=I+1To10IfSort(Pointer)>Sort(J)ThenPointer=JEndIfNextJIfI<>PointerThenTemp=Sort(I)Sort(I)=Sort(Pointer)Sort(Pointer)=TempEndIfText2=Text2&Str(Sort(I))NextIText2=Text2&Str(Sort(10))EndSub例:5-4順序查找程序(界面見P105)先介紹ForEach–next結(jié)構(gòu)的語句:OptionExplicitOptionBase1DimSearchAsVariantPrivateSubCmd生成數(shù)組_Click()DimIAsInteger,ElementAsVariantSearch=Array(34,12,56,81,59,83,91,26,47)ForEachElementInSearch?foreach-next結(jié)構(gòu)語句見P90Text1=Text1&Str(Element)NextElementEndSubPrivateSubCmd查找_Click()DimIAsInteger,FindAsIntegerText2=""Find=InputBox("輸入要查找的數(shù)")ForI=1ToUBound(Search)IfSearch(I)=FindThenExitForNextIIfI<=UBound(Search)ThenText2="要查找的數(shù)"&Str(Search(I))&"是Search("&Str(I)&")"ElseText2="在數(shù)列中沒有找到"&Str(Find)EndIfEndSub例5-5二分查找程序:OptionExplicitOptionBase1DimSearchAsVariantPrivateSubCmd二分查找_Click()DimLeftAsInteger,RightAsIntegerDimMidAsInteger,FlgAsBooleanDimFindAsIntegerFind=InputBox("輸入要查找的數(shù)")Left=1:Right=UBound(Search)Flg=FalseDoWhileLeft<=RightMid=(Left+Right)/2IfSearch(Mid)=FindThenFlg=TrueExitDoElseIfFind>Search(Mid)ThenLeft=Mid+1ElseRight=Mid-1EndIfLoopIfFlgThenText2="要查找的數(shù)"&Str(Find)&"在Search("&Str(Mid)&")中"ElseText2=Str(Find)&"不在數(shù)組中"EndIfEndSubPrivateSubCmd生成數(shù)據(jù)_Click()DimVAsVariantSearch=Array(12,17,23,28,30,39,41,46,57,61,78,83,85,89,93)ForEachVInSearchText1=Text1&Str(V)NextVEndSub例5-7求裴波拉契數(shù)列。OptionBase1OptionExplicitPrivateSubForm_Click()DimFb(18)AsInteger,IAsIntegerFb(1)=1:Fb(2)=1ForI=3To18Fb(I)=Fb(I-2)+Fb(I-1)NextIForI=1To18Text1=Text1&Str(Fb(I))&""NextIEndSub-8:例5OptionExplicitPrivateSubCommand1_ClicK()DimStAsString,IdxAsIntegerDimA(0To25)AsIntegerDimIAsInteger,jsAsIntegerDimCHAsString
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重慶能源職業(yè)學(xué)院《醫(yī)藥產(chǎn)品推銷理論與技巧》2023-2024學(xué)年第一學(xué)期期末試卷
- 黑龍江佳木斯第一中學(xué)2024-2025學(xué)年高三下學(xué)期第一學(xué)段考英語試題含解析
- 海南工商職業(yè)學(xué)院《高分子基礎(chǔ)專業(yè)理論教學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶電信職業(yè)學(xué)院《漢語言文學(xué)教師教育專業(yè)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江紡織服裝職業(yè)技術(shù)學(xué)院《保健食品設(shè)計(jì)原理》2023-2024學(xué)年第二學(xué)期期末試卷
- 古代乳癖灸法論述
- 公路工程軟基處理質(zhì)量保證措施
- 瀝青路面拉毛施工方案
- 江蘇施工方案報(bào)審表
- 2025年中國酒業(yè)市場分析:規(guī)模突破萬億結(jié)構(gòu)升級與消費(fèi)趨勢洞察
- YB-4001.1-2007鋼格柵板及配套件-第1部分:鋼格柵板(中文版)
- 三戰(zhàn)課件(輿論戰(zhàn)、法律戰(zhàn)、心理戰(zhàn))
- 港口和碼頭服務(wù)行業(yè)數(shù)據(jù)安全與隱私保護(hù)
- NB/T 11265-2023再制造液壓支架技術(shù)要求
- 前沿科學(xué)與創(chuàng)新學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 醫(yī)療技術(shù)臨床應(yīng)用動態(tài)評估制度
- 生活質(zhì)量綜合評定問卷-74(題目)
- 護(hù)士奮斗從n1晉升n2個人總結(jié)大全
- 格力2匹柜機(jī)檢測報(bào)告KFR-50LW(50530)FNhAk-B1(性能)
- BS EN ISO 15848-1-2015 工業(yè)閥-逸散性排放的測量、試驗(yàn)和鑒定程序(中文)
- 【超星爾雅學(xué)習(xí)通】名偵探柯南與化學(xué)探秘網(wǎng)課章節(jié)答案
評論
0/150
提交評論