![全國(guó)計(jì)算機(jī)二級(jí)VB筆記全國(guó)計(jì)算機(jī)二級(jí)VB_第1頁(yè)](http://file4.renrendoc.com/view/ae06c1d50225b7e7ef735d7fc0cb7685/ae06c1d50225b7e7ef735d7fc0cb76851.gif)
![全國(guó)計(jì)算機(jī)二級(jí)VB筆記全國(guó)計(jì)算機(jī)二級(jí)VB_第2頁(yè)](http://file4.renrendoc.com/view/ae06c1d50225b7e7ef735d7fc0cb7685/ae06c1d50225b7e7ef735d7fc0cb76852.gif)
![全國(guó)計(jì)算機(jī)二級(jí)VB筆記全國(guó)計(jì)算機(jī)二級(jí)VB_第3頁(yè)](http://file4.renrendoc.com/view/ae06c1d50225b7e7ef735d7fc0cb7685/ae06c1d50225b7e7ef735d7fc0cb76853.gif)
![全國(guó)計(jì)算機(jī)二級(jí)VB筆記全國(guó)計(jì)算機(jī)二級(jí)VB_第4頁(yè)](http://file4.renrendoc.com/view/ae06c1d50225b7e7ef735d7fc0cb7685/ae06c1d50225b7e7ef735d7fc0cb76854.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一講:VisualBasic概述重點(diǎn):1、掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)的概念:對(duì)象、方法、屬性與事件2、事件驅(qū)動(dòng)過(guò)程的程序設(shè)計(jì)原理3、介紹VB集成開(kāi)發(fā)環(huán)境4,VB開(kāi)發(fā)環(huán)境的基本操作1.1VisualBasic簡(jiǎn)介具有面向?qū)ο蟮目梢暬O(shè)計(jì)工具事件驅(qū)動(dòng)的編程機(jī)制提供了易學(xué)易用的應(yīng)用程序集成開(kāi)發(fā)環(huán)境結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言支持多種數(shù)據(jù)庫(kù)的訪問(wèn)支持DDE、DLL、OLE技術(shù)完備的Help聯(lián)機(jī)幫助功能1.2面向?qū)ο蟮某绦蛟O(shè)計(jì)方法基礎(chǔ).對(duì)象及對(duì)象類:動(dòng)作體的邏輯模型,稱為“對(duì)象”.屬性:屬性是用來(lái)描述對(duì)象的特性。.方法:方法指對(duì)象可以進(jìn)行的動(dòng)作或行為。VB對(duì)象具有屬性、方法和事件。屬性是描述對(duì)象的數(shù)據(jù);方法告訴對(duì)象應(yīng)做的事情;事件是對(duì)象所產(chǎn)生的事情,事件發(fā)生時(shí)可以編寫代碼進(jìn)行處理。VB的窗體和控件是具有自己的屬性、方法和事件的對(duì)象。可以把屬性看作??個(gè)對(duì)象的性質(zhì),把方法看作對(duì)象的動(dòng)作,把事件看作對(duì)象的響應(yīng)。日常生活中的對(duì)象,如小孩玩的氣球同樣具有屬性、方法和事件。氣球的屬性包括可以看到的一些性質(zhì),如它的直徑和顏色。其它一些屬性描述氣球的狀態(tài)(充氣的或未充氣的)或不可見(jiàn)的性質(zhì),如它的壽命。通過(guò)定義,所有氣球都具有這些屬性;這些屬性也會(huì)因氣球的不同而不同。氣球還具有本身所固有的方法和動(dòng)作。如:充氣方法(用氮?dú)獬錆M氣球的動(dòng)作),放氣方法(排出氣球中的氣體)和上升方法(放手讓氣球飛走)。所有的氣球都具備這些能力。1.3基于Windows環(huán)境下的應(yīng)用程序的工作方式——事件驅(qū)動(dòng)在傳統(tǒng)的或“過(guò)程化”的應(yīng)用程序中,應(yīng)用程序自身控制了執(zhí)行哪一部分代碼和按何種順序執(zhí)行代碼。從第一行代碼執(zhí)行程序并按應(yīng)用程序中預(yù)定的路徑執(zhí)行,必要時(shí)調(diào)用過(guò)程。在事件驅(qū)動(dòng)的應(yīng)用程序中,代碼不是按照預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同的事件時(shí)執(zhí)行不同的代碼片段。事件可以由用戶操作觸發(fā)、也可以由來(lái)自操作系統(tǒng)或其它應(yīng)用程序的消息觸發(fā)、甚至由應(yīng)用程序本身的消息觸發(fā)。這些事件的順序決定了代碼執(zhí)行的順序,因此應(yīng)用程序每次運(yùn)行時(shí)所經(jīng)過(guò)的代碼的路徑都是不同的。因?yàn)槭录捻樞蚴菬o(wú)法預(yù)測(cè)的,所以在代碼中必須對(duì)執(zhí)行時(shí)的“各種狀態(tài)”作一定的假設(shè)。當(dāng)作出某些假設(shè)時(shí)(例如,假設(shè)在運(yùn)行來(lái)處理某一輸入字段的過(guò)程之前,該輸入字段必須包含確定的值),應(yīng)該組織好應(yīng)用程序的結(jié)構(gòu),以確保該假設(shè)始終有效(例如,在輸入字段中有值之前禁止使用啟動(dòng)該處理過(guò)程的命令按鈕)。在執(zhí)行中代碼也可以觸發(fā)事件。例如,在程序中改變文本框中的文本將引發(fā)文本框的Change事件。如果Change事件中包含有代碼,則將導(dǎo)致該代碼的執(zhí)行。如果原來(lái)假設(shè)該事件僅能由用戶的交互操作所觸發(fā),則可能會(huì)產(chǎn)生意料之外的結(jié)果。正因?yàn)檫@一原因,所以在設(shè)計(jì)應(yīng)用程序時(shí)理解事件驅(qū)動(dòng)模型并牢記在心是非常重要的。在VB中事件的調(diào)用形式是:PrivateSub對(duì)象名_事件名(事件內(nèi)容)EndSub1.4VisualBasic的集成開(kāi)發(fā)環(huán)境VB集成開(kāi)發(fā)環(huán)境(IDE IntegratedDevelopingEnvironment)由以下元素組成:標(biāo)題欄用于顯示正在開(kāi)發(fā)或調(diào)試的工程名和系統(tǒng)的工作狀態(tài)(設(shè)計(jì)態(tài)、運(yùn)行態(tài)、中止態(tài))。菜單欄用于顯示所使用的VisualBasic命令。VB6.0標(biāo)準(zhǔn)菜單包括:工具欄在編程環(huán)境下用于快速訪問(wèn)常用命令。缺省情況下,啟動(dòng)VB后顯示“標(biāo)準(zhǔn)”工具欄,附加的編輯、窗體設(shè)計(jì)和調(diào)試的工具欄可以從“視圖”菜單上的“工具欄”命令中移進(jìn)或移出。窗體設(shè)計(jì)器用來(lái)設(shè)計(jì)應(yīng)用程序的界面。啟動(dòng)VB后,窗體設(shè)計(jì)器中自動(dòng)出現(xiàn)一個(gè)名為Forml的空白窗體,可以在該窗體中添加控件、圖形和圖片等來(lái)創(chuàng)建所希望的外觀,窗體的外觀設(shè)計(jì)好后,從菜單中選擇“文件”一“保存窗體”一在保存對(duì)話框中給出合適的文件名(注意擴(kuò)展名),并選擇所需的保存位置一確定。需要再設(shè)計(jì)另一個(gè)窗體時(shí),單擊工具欄上的“添加窗體”按鈕即可。控件(工具)箱由一組控件按鈕組成,用于設(shè)計(jì)時(shí)在窗體中放置控件。除了缺省的工具箱布局之外,還可以通過(guò)從上下文菜單中選定“添加選項(xiàng)卡”并在結(jié)果選項(xiàng)卡中添加控件來(lái)創(chuàng)建自定義布局。6.彈出式(上下文)菜單在要使用的對(duì)象上單擊鼠標(biāo)右鍵即可打開(kāi)快捷菜單,其上會(huì)出現(xiàn)與當(dāng)前對(duì)象相關(guān)的經(jīng)常執(zhí)行的操作,以加快操作速度。工程管理器窗口用于瀏覽工程中所包含的窗體和模塊,還可以從中查看代碼、查看對(duì)象。屬性窗口是VB中一個(gè)比較復(fù)雜的窗口,其中列出了對(duì)選定窗體和控件的屬性設(shè)置值。VB中正是通過(guò)改變屬性來(lái)改變對(duì)象的特征,如大小、標(biāo)題或顏色。對(duì)象瀏覽器列出工程中有效的對(duì)象,并提供在編碼中漫游的快速方法。可以使用“對(duì)象瀏覽器”瀏覽在VB中的對(duì)象和其它應(yīng)用程序,查看對(duì)那些對(duì)象有效的方法和屬性,并將代碼過(guò)程粘貼進(jìn)自己的應(yīng)用程序。0.對(duì)象瀏覽器右擊窗體中的對(duì)象、從工程管理器中點(diǎn)“查看代碼”按鈕。.窗體布局窗口FormLayoutwindow允許使用表示屏幕的小圖象來(lái)布置應(yīng)用程序中各窗體的位置。.立即、本地和監(jiān)視窗口這些附加窗口是為調(diào)試應(yīng)用程序提供的,它們只在IDE之中運(yùn)行應(yīng)用程序時(shí)才有效。1.5創(chuàng)建VB應(yīng)用程序的一般步驟一個(gè)VB程序也稱為一個(gè)工程,由窗體、標(biāo)準(zhǔn)模塊、自定義控件及應(yīng)用所需的環(huán)境設(shè)置組成。開(kāi)發(fā)步驟一般如下:.創(chuàng)建程序的用戶界面.設(shè)置界面上各個(gè)對(duì)象的屬性.編寫對(duì)象響應(yīng)事件的程序代碼.保存工程.測(cè)試應(yīng)用程序,排除錯(cuò)誤.創(chuàng)建可執(zhí)行程序?硬件環(huán)境:486以上處理器、16MB以上內(nèi)存、50MB以上的硬盤空間、CD-ROM驅(qū)動(dòng)器、鼠標(biāo)等?軟件環(huán)境:Windows95或indowsNT3.51以上版本?初次安裝:1)啟動(dòng)Windows952)插入具有VB6.0系統(tǒng)的光盤3)運(yùn)行VB6.0安裝程序Setup.exe4)選擇“典型安裝”或“自定義安裝”或“最小安裝”?添加或刪除VB6.0部件:1)插入具有VB6.0系統(tǒng)的光盤2)運(yùn)行“開(kāi)始/設(shè)置/控制面板”3)雙擊控制面板中的“添加/刪除程序”圖標(biāo)4)選擇其中的“VisualBasic6.0”選項(xiàng)?啟動(dòng).桌面:開(kāi)始/程序/VisualBasic6.0.建立快捷方式,雙擊圖標(biāo)?退出.選擇文件菜單下的退出命令.單擊窗口關(guān)閉按鈕舉例:1啟動(dòng)VB,開(kāi)始新工程2創(chuàng)建程序的用戶截面3加入程序代碼4保存工程文件5運(yùn)行和調(diào)試應(yīng)用程序,檢查并排除程序中的錯(cuò)誤6生成可執(zhí)行程序7打印窗體和代碼第二講常用控件與界面設(shè)計(jì)重點(diǎn):1、掌握窗體常用的屬性、方法與事件,重點(diǎn)掌握窗體的Print方法的使用2、掌握標(biāo)簽、文本框、命令按鈕等控件的常用屬性、方法、事件2.1創(chuàng)建窗體補(bǔ)充內(nèi)容:調(diào)整窗體布局生成可執(zhí)行文件2.2VB的常用控件(P19)概述:控體是用來(lái)進(jìn)行用戶界面設(shè)計(jì)的可視化部件。常用的VB6控件一覽表P20常用控件:P21(1)文本框(TextBox):用于接收用戶在框內(nèi)輸入的信息或顯示由程序提供的信息。文本框在工具箱中的圖標(biāo)P25:在窗體中的形式屬性:名稱:文本框名稱。命名規(guī)則同窗體名。(通常以“Txt”作為前綴。)Text:文本屬性。該屬性的值為用戶從文本框中輸入的內(nèi)容。PasswordChar:口令屬性。設(shè)置是否可以看到用戶從文本框中輸入的文本內(nèi)容。取值:空字符串:(默認(rèn)值):可以看到輸入的字符。某一字符:用戶每輸入一個(gè)字符,文本框內(nèi)就出現(xiàn)一個(gè)該字符。MaxLength:最大長(zhǎng)度屬性。設(shè)置文本框的Text屬性中所能放入的字符總個(gè)數(shù)。取值:0:(默認(rèn)值)。1~32KBoMultiLine:多行屬性。設(shè)置用戶是否可在文本框內(nèi)輸入多行文本。取值:True:可多行輸入。False:(默認(rèn)值)只能單行輸入。Alignment:對(duì)齊屬性。設(shè)置文本框內(nèi)的文本內(nèi)容的對(duì)齊方式。取值:0:(默認(rèn)值)靠左對(duì)齊。1:靠右對(duì)齊。2:居中對(duì)齊。說(shuō)明:本屬性只在MultiLine為True時(shí)有效。TabStop:[Tab]鍵屬性。設(shè)置是否可用[Tab]鍵來(lái)移動(dòng)焦點(diǎn)到另一個(gè)對(duì)象上。取值:True:(默認(rèn)值)可以。False:不可以。其它屬性類似窗體。方法:Refresh:刷新。SetFocus:設(shè)置焦點(diǎn)。通過(guò)本方法,可以使光標(biāo)指向指定的文本框。事件:Change:當(dāng)文本框的內(nèi)容發(fā)生變化時(shí),就引發(fā)本事件。LostFocus:當(dāng)光標(biāo)離開(kāi)文本框時(shí),引發(fā)本事件。Keypress:當(dāng)用戶按下或松開(kāi)鍵盤上某個(gè)按鍵時(shí),發(fā)生本事件。(2)標(biāo)簽:(Label)主要用于在窗體上增加文字說(shuō)明。標(biāo)簽在工具箱中的圖標(biāo)P25:在窗體中的形式屬性:名稱:標(biāo)簽名稱。(通常以“Lbl”作為前綴。)Caption:標(biāo)題屬性。本屬性的值為顯示在標(biāo)簽上的內(nèi)容。AutoSize:大小自適應(yīng)屬性。即標(biāo)簽的大小是否隨著標(biāo)題內(nèi)容的多少而自動(dòng)變化。取值:True:是。False:(默認(rèn)值)否。FontName:字體名稱。設(shè)置在標(biāo)簽內(nèi)顯示的文本的字體名稱。方法:Refresh:刷新。Move:移動(dòng)。事件:Click:?jiǎn)螕羰录?。DblClick:雙擊事件。(3)命令按鈕:(commandbutton):用戶用鼠標(biāo)單擊命令按鈕,表示要執(zhí)行某項(xiàng)功能。屬性:名稱:(通常以“Cmd”作為前綴。)Caption:標(biāo)題。其值就是在命令按鈕上顯示的文本。Default:設(shè)定此命令按鈕是否為窗體的默認(rèn)按鈕。取值true:在窗體啟動(dòng)(Active)后,按Enter鍵馬上就會(huì)執(zhí)行的命令按鈕。(同一窗體中只能有一個(gè)命令按鈕的此項(xiàng)屬性值為true)False:否。Enabled:設(shè)定命令按鈕是否可用。取值true:(默認(rèn)值):可用。false:不可用。(命令按鈕呈灰色)事件:click:單擊事件方法:SetFocus:命令按鈕經(jīng)過(guò)SetFocus方法后,將取得焦點(diǎn)。(用戶此時(shí)按回車鍵將會(huì)執(zhí)行此命令按鈕。)(4)復(fù)選框:(checkbox):用來(lái)設(shè)定程序的執(zhí)行狀態(tài)。屬性:名稱:(通常以“Chk”作為前綴。)caption:標(biāo)題,顯示在復(fù)選框的右方,指明此復(fù)選框所代表的功能。Value:表示復(fù)選框在執(zhí)行時(shí)的三種狀態(tài)。取值:0:不復(fù)選,執(zhí)行時(shí)無(wú)勾。1:復(fù)選,執(zhí)行時(shí)有勾。2:灰色,表示用戶不能修改這個(gè)設(shè)定值,只能看到它目前狀態(tài)。事件:click:?jiǎn)螕羰录?。方法:Move:Refresh:(5)選項(xiàng)按鈕:(optionbutton)用來(lái)設(shè)定程序的執(zhí)行狀態(tài)。屬性:名稱:(通常以“Opt”作為前綴。)caption:標(biāo)題alignment:設(shè)置標(biāo)題文本的對(duì)齊方式。取值:0:(默認(rèn)值)靠左對(duì)齊1:靠右對(duì)齊2:靠中對(duì)齊value:其值決定該選項(xiàng)按鈕是否被選中。取值:true:表示此選項(xiàng)按鈕被選中。False:表示此選項(xiàng)按鈕沒(méi)選中。說(shuō)明:一個(gè)窗體或一個(gè)框架內(nèi)的選項(xiàng)按鈕只能有一個(gè)被選中,(不同框架內(nèi)的選項(xiàng)按鈕互不干擾)若用戶不設(shè)定哪一個(gè)選項(xiàng)按鈕的值為true,則系統(tǒng)指定第一個(gè)選項(xiàng)按鈕的value值為true.事件:click:?jiǎn)螕?。方法:Move:Refresh(6)框架:(frame)可以用框架控件將其它各自獨(dú)立的控件(一般指復(fù)選框、選項(xiàng)按鈕等)組合在一組中。如實(shí)驗(yàn)指導(dǎo)書P13、P16。屬性:名稱captiontopleftwidthheightfont forecolor等等事件:clickdblclick等等說(shuō)明:1、在使用框架控件將其它控件分組時(shí)必須先繪制框架控件,后繪制其中的控件。2、在一個(gè)框架內(nèi)的控件可以進(jìn)行整體的激活、屏蔽、移動(dòng)等等。3、在同一個(gè)窗體中的多個(gè)選項(xiàng)按鈕,只有一個(gè)可以被選中,但在窗體中可以用框架將選項(xiàng)按鈕分類,在同一框架內(nèi)的多個(gè)選項(xiàng)按鈕中只有一個(gè)可以被選取。不同框架內(nèi)的選項(xiàng)按鈕彼此互不干擾。4、要將控件畫在框架之中,不能雙擊控件,因?yàn)槟菢訉⑹箍丶丿B在框架的上面,必須單擊工具圖標(biāo),然后在框架內(nèi)拖動(dòng)后釋放,這樣的所畫的控件在框架之中。第三講常用控件與界面設(shè)計(jì)重點(diǎn):1、掌握列表框、組合框、選項(xiàng)按鈕、復(fù)選按鈕、滾動(dòng)條等控件的常用的屬性、方法、事件2、掌握菜單的設(shè)計(jì)(7)列表框(ListBox):用于列出可供用戶選擇的項(xiàng)目列表。用戶可以從中選擇一個(gè)或多個(gè)項(xiàng)目。屬性:名稱:(通常以“List”作為前綴。)List:列表屬性。用于保存列表的內(nèi)容。List實(shí)際上是一個(gè)一維數(shù)組,數(shù)組中元素的值,就是在執(zhí)行時(shí)看到的列表項(xiàng)(item)一維數(shù)組:List中有5個(gè)元素,List(O),List(l)List(2).List(3).List(4)列表項(xiàng)文本 List(0)=68List(1)=78List(2)=88List(3)=80List(4)=76數(shù)組名:List列表項(xiàng)序號(hào):0,1,2,3,4,(從0開(kāi)始)列表項(xiàng)文本(數(shù)組元素值)分別為:6878888076Listcount:列表框內(nèi)所有選項(xiàng)的總數(shù),也就是List()數(shù)組元素的總個(gè)數(shù)。Listindex:用戶最后單擊的列表項(xiàng)在List()數(shù)組中的編號(hào)順序。(無(wú)選中時(shí)其值為T)Text:列表項(xiàng)的正文。其值為最后選中的列表項(xiàng)的文本。請(qǐng)記住如下關(guān)系:[對(duì)象名稱.]List(ListIndex)=TextColumns:列表框顯示形式。設(shè)定Listbox的列表項(xiàng)若超過(guò)顯示范圍時(shí),其卷動(dòng)方式使用垂直滾動(dòng)條或是水平滾動(dòng)條。取值:0:(默認(rèn)值)使用垂直滾動(dòng)條。逐行顯示列表項(xiàng),可能有垂直滾動(dòng)條。l'n:使用水平滾動(dòng)條。此時(shí)列表框內(nèi)一次可顯示的列數(shù)(Column)即為n值。MultiSelect:設(shè)定是否允許用戶多用:選取對(duì)象的列表項(xiàng)取值:0:不能多重選取。(默認(rèn)值):簡(jiǎn)易多重選取。(用鼠標(biāo)或空格鍵來(lái)選取,一次一個(gè)):高級(jí)多重選取??捎茫踫hift]或[ctrl]來(lái)選取。(類似文件選取)Selected:設(shè)定列表項(xiàng)是否被選取的狀態(tài)。它是一個(gè)與List大小相同的數(shù)組。其中各元素的取值:True:被選取。False:不被選取。(默認(rèn)值)Sorted:排序?qū)傩?。設(shè)定列表項(xiàng)是否要照ASCII代碼排序。(字母順序)取值:True:是(不區(qū)分大小寫)False:否。(默認(rèn)值)方法:(P28)Additem:添加列表項(xiàng)。格式:[對(duì)象名稱.]AddItem (列表項(xiàng)文本〉[,插入位置序號(hào)]說(shuō)明:1、若不指定位置,則插入到列表項(xiàng)末尾。2、新列表項(xiàng)插入后,原來(lái)位置及其后的列表項(xiàng)順序下移。Clear:刪除列表所有項(xiàng)目。Removeitem:刪除列表項(xiàng)。格式: [對(duì)象名稱.]Removeitem刪除項(xiàng)序號(hào)事件:Click:?jiǎn)螕羰录?。Dblick:雙擊事件(使用較少)應(yīng)掌握:.如何添加或刪除列表框中的列表項(xiàng)?方法一:在設(shè)計(jì)態(tài):定制List屬性。(向列表中添加列表時(shí),按[ctrl]+[Enter]換行。)方法二:在程序代碼中:用Additem,Removeitem等方法進(jìn)行。.如何知道目前用戶所選取的列表項(xiàng)和目前列表框中的列表項(xiàng)數(shù)目?用戶目前所選的列表項(xiàng):Text的值。目前列表框中的列表項(xiàng)數(shù)目:ListCount的值。(8)組合框(comboBox):將文本框和列表框結(jié)合在一起,在列表框中所選項(xiàng)目的文本會(huì)自動(dòng)填入文本框。(與列表框相比,組合框一次只能選取一個(gè)列表項(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)建一個(gè)帶有下拉式列表框的組合框。稱為組合下拉式的組合框。它的下拉式窗體不是一直顯示的。(如word中字體大小選擇框),此狀態(tài)下用戶可將所內(nèi)容直接輸入到文本框中。1:系統(tǒng)創(chuàng)建一個(gè)由文本框和列表框直接結(jié)合在一起的簡(jiǎn)單組合框。稱為組合式的組合框。它的下拉式窗體是一直顯示的。如:word中字體菜單對(duì)話框中的字體、字號(hào)對(duì)話內(nèi)容。2:系統(tǒng)創(chuàng)建一個(gè)沒(méi)有文本框的下拉式列表框。單擊列表框右側(cè)的按鈕,文本框才會(huì)顯示出來(lái)。稱為單純下拉式的組合框。此狀態(tài)下用戶不可在文本框中輸入,只能在列表中選擇。且下拉式窗體也不是一直顯示的。Text:文本屬性。其取值為用戶從列表框中選定的文本內(nèi)容或直接輸入文本框中的內(nèi)容。事件:對(duì)不同類型的組合框,響應(yīng)的事件是不相同的。對(duì)于0,2類型的組合框:?jiǎn)螕羰录?。?duì)于1類型的組合框:雙擊事件。帶有文本框的0,1組合框:在編輯文本時(shí)可引發(fā)Change事件。說(shuō)明:1、用戶若只需要使用單選的列表框,則可用組合框來(lái)代替。2、如何添加或刪除組合框中的列表項(xiàng)?(方法:同列表框)3、如何知道用戶目前所選取或輸入的列表項(xiàng)是什么?由于組合框不允許多重選取,所以,Text屬性值為內(nèi)容:Listindex屬性值為序號(hào)。方法:同列表框。圖像:(image):主要用于圖像的顯示、放大、縮小等靜態(tài)顯示圖像場(chǎng)合。圖像框中不能容納其他控件、也不能繪制圖形和顯示文本。而圖片控件框中可以。圖像在工具箱中的圖標(biāo)P25;在窗體中的形式屬性:名稱:visible:設(shè)置此對(duì)象在執(zhí)行時(shí)是否看得見(jiàn)。取值:True:(默認(rèn)值)看得見(jiàn)。False:隱藏。enabled:可用否。picture:設(shè)定圖像框中代表的圖片名稱。其值在設(shè)定時(shí)的格式為:盤符'路徑'圖片文件名(.ic。圖標(biāo)文件.bmp位圖文件)stretch:用來(lái)決定圖像控件的大小是否要隨著所載入圖片的大小而變化。取值:true;隨圖片的大小而變化。False:(默認(rèn)值)不隨圖片的大小而變化。事件:類似窗體。方法:MoveRefresh(10)圖片:(picturebox):不僅可以裝入圖像,還可以在它上面繪制各種圖形和顯示正文、放置控件(類似框架控件)。圖片在工具箱中的圖標(biāo)P25;在窗體中的形式水平滾動(dòng)條(horizontalscrollbar)、垂直滾動(dòng)條(verticalscrollbar):滾動(dòng)條:用來(lái)附加在斯■不能1I動(dòng)支持滾動(dòng)的應(yīng)用程序或控件中水平滾動(dòng)或垂直滾動(dòng)查閱大量信息。一般出現(xiàn)在文車框、列表框右邊;用來(lái)調(diào)整數(shù)據(jù)或選擇輸入。區(qū)為word中字體、段落對(duì)話框中)-滾動(dòng)條在工具箱中的圖標(biāo)P25;在窗體中的形式屬性:(實(shí)驗(yàn)指導(dǎo)書P18)名稱:(通常以“Hsb”、“Vsb”作為前綴。)Max/Min:定義了Value屬性值所能出現(xiàn)的最大值和最小值。說(shuō)明:1、一開(kāi)始使用滾動(dòng)條時(shí),Max為32768,Min為0。2、水平滾動(dòng)條位于最左邊時(shí)、垂直滾動(dòng)條位于最上邊時(shí)為Min;水平滾動(dòng)條位于最右邊時(shí)、垂直滾動(dòng)條位于最下邊時(shí)為Max。Value:滾動(dòng)條目前所在位置所對(duì)應(yīng)的數(shù)值/(也可在代碼中設(shè)定。)LargeChange:當(dāng)用戶在滾動(dòng)塊的上方、下方(左方、右方)單擊時(shí)Value所增加的值。默認(rèn)值為1?SmallChang:當(dāng)用戶在滾動(dòng)條兩端的箭頭按鈕上單擊時(shí)Value所增加的值。默認(rèn)值為lo事件:Change:在滾動(dòng)塊移動(dòng)后(即Value值改變時(shí))發(fā)生。例如,可用一個(gè)滾動(dòng)條的Change獷件過(guò)程更新一個(gè)TextBox控件中滾動(dòng)條的Value屈性:的設(shè)置?;蛐锌梢岳肅hange貨件過(guò)程在一個(gè)「作區(qū)也顯小數(shù)據(jù)和公式,在另一個(gè)區(qū)域里顯示結(jié)果。一Scroll:在拖動(dòng)滾動(dòng)塊時(shí)發(fā)生。單擊滾動(dòng)箭頭或滾動(dòng)條時(shí)不發(fā)生。方法:Move:用以移動(dòng)滾動(dòng)條。Refresh:強(qiáng)制全部重繪一個(gè)滾動(dòng)條。SetFocus:設(shè)置焦點(diǎn)。將焦點(diǎn)移至指定的滾動(dòng)條上。時(shí)間:(timer)(計(jì)時(shí)器):用來(lái)實(shí)現(xiàn)與時(shí)間有關(guān)的功能。時(shí)間控件在工具箱中的圖標(biāo)P25;在窗體中的形式屬性:名稱:enabledinterval用來(lái)設(shè)定引發(fā)timer事件過(guò)程的間隔時(shí)間,單位為1/1000秒。事件:(時(shí)間控件只有一個(gè)事件)timer:它會(huì)按照interval所設(shè)定的時(shí)間定時(shí)引發(fā)。說(shuō)明:時(shí)間控件的使用方法:.在form上放置一個(gè)時(shí)間對(duì)象。.在屬性窗口中設(shè)定其interval屬性。.填寫timer事件的程序內(nèi)容,.當(dāng)程序開(kāi)始執(zhí)行后,將不會(huì)看到它的圖標(biāo),每隔interval定義的時(shí)間內(nèi),程序會(huì)觸發(fā)一次timer事件。時(shí)間控控件應(yīng)用舉例:windows中計(jì)時(shí)器,word中的定時(shí)保存文件,定時(shí)更新屏幕畫面(屏幕保護(hù)程序)等等。第四講數(shù)據(jù)表達(dá)式與簡(jiǎn)單程序設(shè)計(jì)本講內(nèi)容及要求:1熟悉VB程序中代碼和語(yǔ)句書寫規(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ù)。程序代碼的組織方式一個(gè)VB程序由窗體界面和程序代碼兩部組成,通過(guò)程序代碼把窗口界面的各個(gè)對(duì)象以及應(yīng)用中的其它元素聯(lián)系在一起。程序代碼部分則由若干被稱為“過(guò)程”的代碼行及向系統(tǒng)提供某些信息的說(shuō)明組成。過(guò)程及說(shuō)明又被組織在“模塊”之中。將設(shè)計(jì)的過(guò)程代碼及相關(guān)說(shuō)明合理地組織到不同的模塊之中,也就是設(shè)計(jì)代碼的結(jié)構(gòu),在創(chuàng)建VB應(yīng)用程序時(shí)是最為重要的一個(gè)步驟。一過(guò)程所謂“過(guò)程”,就是具有特定書寫格式、包含若干可被作為一個(gè)整體執(zhí)行的代碼的組合。根據(jù)執(zhí)行方式,可把“過(guò)程”分為"事件過(guò)程''和"通用過(guò)程”兩類。二模塊模塊是VB用于將不同類型過(guò)程代碼組織到一起而提供的一種結(jié)構(gòu)。在VB中具有三種類型的模塊: 窗體模塊標(biāo)準(zhǔn)模塊類模塊。.VB代碼書寫規(guī)則(1)程序中不區(qū)分字母的大小寫,Ab與AB等效:(2)系統(tǒng)對(duì)用戶程序代碼進(jìn)行自動(dòng)轉(zhuǎn)換:1)對(duì)于VB中的關(guān)鍵字,首字母被轉(zhuǎn)換成大寫,其余轉(zhuǎn)換成小寫2)若關(guān)鍵字由多個(gè)英文單詞組成,則將每個(gè)單詞的首字母轉(zhuǎn)換成大寫3)對(duì)于用戶定義的變量、過(guò)程名,以第一次定義的為準(zhǔn),以后輸入的自動(dòng)轉(zhuǎn)換成首次定義的形式(1)在同?行上可以書寫多行語(yǔ)句,語(yǔ)句間用冒號(hào)(:)分隔(2)單行語(yǔ)句可以分多行書寫,在本行后加續(xù)行符:空格和下劃線_(3)一行允許多達(dá)255個(gè)字符4.3VB的數(shù)據(jù)類型4.3.4數(shù)據(jù)類型
1VB的標(biāo)準(zhǔn)數(shù)據(jù)類型數(shù)據(jù)類型關(guān)鍵字類型符前綴存儲(chǔ)空間范圍數(shù)值數(shù)據(jù)類型字節(jié)型ByteByt1個(gè)字節(jié)0到255整型Integer%Int2個(gè)字節(jié)-32,768到32,767長(zhǎng)整型Long&Lng4個(gè)字節(jié)-2,147,483,648到2,147,483,647單精度型SingleJSng4個(gè)字節(jié)負(fù)數(shù):-3.402823E38到-1.401298E-45;正數(shù):1.401298E-45到3.402823E38雙精度型Double#Dbl8個(gè)字節(jié)負(fù)數(shù):-1?79769313486232E3084.94065645841247E-324;正數(shù):4.94065645841247E-3241.79769313486232E308貨幣型Currency@Cur8個(gè)字節(jié)從-922,337,203,685,477.5808到922,337,203,685,477.5807邏輯型BooleanBln2個(gè)字節(jié)True或False日期型Date1)tm8個(gè)字節(jié)100年1月1日到9999年12月31日對(duì)象型ObjectObj4個(gè)字節(jié)任何Object引用變長(zhǎng)字符型String$Str10字節(jié)加字符串長(zhǎng)度0到大約20億定長(zhǎng)字符型String$Str字符串長(zhǎng)度1到大約65,400變體數(shù)字型VariantVnt16個(gè)字節(jié)任何數(shù)字值,最大可達(dá)Double的范圍變體字符型VariantVnt22個(gè)字節(jié)加字符串氏度與變長(zhǎng)String有相同的范圍1)VB中對(duì)沒(méi)有聲明的變量其缺省的數(shù)據(jù)類型是變體型,可以用來(lái)存儲(chǔ)各種數(shù)據(jù),但所占用的內(nèi)存比其它類型都多。為提高運(yùn)行效率(整型效率較高),或達(dá)到一定的運(yùn)算精確度(浮點(diǎn)型精度較高,但運(yùn)行較慢),應(yīng)合理的定義數(shù)據(jù)類型。2)邏輯型數(shù)據(jù)只有True和False兩個(gè)值,轉(zhuǎn)換成整型時(shí),True=-1,Faise=O,將其它類型轉(zhuǎn)換成邏輯型時(shí),非0數(shù)轉(zhuǎn)換為True,0轉(zhuǎn)換為False.3)字符型可以包括所有的西文字符和漢字,字符必須用雙引號(hào)括””起來(lái),如:"abcl23”4)日期型數(shù)據(jù)按8字節(jié)的浮點(diǎn)數(shù)來(lái)存儲(chǔ),日期型數(shù)表示方式有兩種:可以用號(hào)碼符#括起來(lái),也可以用數(shù)字序列表示(小數(shù)點(diǎn)左邊的數(shù)字代表日期,右邊代表時(shí)間,0為午夜,0,5為中午12點(diǎn),負(fù)數(shù)表示是1899年12月31日前的日期和時(shí)間)。如:#3/22/2002# #2002-3-2214:30:20#DimTAsDateT=-2.5PrintT'打印出來(lái)的結(jié)果是1899-12-2812:00:005)任何數(shù)據(jù)類型的數(shù)組都需要20個(gè)字節(jié)的內(nèi)存空間,加上每一數(shù)組維數(shù)占4個(gè)字節(jié),再加上數(shù)據(jù)本身所占用的空間。數(shù)據(jù)所占用的內(nèi)存空間可以用數(shù)據(jù)元數(shù)目乘上每個(gè)元素的大小加以計(jì)算。例如,以4個(gè)2字節(jié)之Integer數(shù)據(jù)元所組成的一維數(shù)組中的數(shù)據(jù),占8個(gè)字節(jié)。這8個(gè)字節(jié)加上額外的24個(gè)字節(jié),使得這個(gè)數(shù)組所需總內(nèi)存空間為32個(gè)字節(jié)。2.變量與常量(1)變量或常量的命名規(guī)則1)必須以字母或漢字開(kāi)頭,由字母、漢字、數(shù)字或下劃線組成,長(zhǎng)度W255個(gè)字符;2)不能使用VB中的關(guān)鍵字,并盡量不與VB中標(biāo)準(zhǔn)函數(shù)名同名;如:Dim、Sin3)VB中不區(qū)分變量的大小寫,一般變量首字母用大寫,其余用小寫;常量全部用大寫字母表示4)為了增加程序的可讀性,可在變量名前加一個(gè)縮寫的前綴來(lái)表明該變量的數(shù)據(jù)類型。(2)變量聲明1)用Dim語(yǔ)句進(jìn)行顯式聲明語(yǔ)句形式:Dim變量名[As類型]如:DimintXAsinteger說(shuō)明:?如果沒(méi)有As類型,則默認(rèn)為變體類型。?可在變量名后加類型符來(lái)代替As類型如:DimintX%?一條語(yǔ)句可以同時(shí)定義多個(gè)變量,但每個(gè)變量必須有自己的類型聲明,類型聲明不能共用;?字符串變量根據(jù)其存放的長(zhǎng)度是否固定,定義方法不同:定長(zhǎng)字符串: DimstrAAsString*10表示最多存放10個(gè)字符,如果賦值不足10個(gè),則右補(bǔ)空;若多于10個(gè),則多余部分截去。不定長(zhǎng)字符串:DimstrAAsString最多可存放2MB個(gè)字符2)隱式聲明VB中允許變量不經(jīng)過(guò)聲明就直接使用,這種稱為隱式聲明,所有隱式聲明的變量都是變體型的。隱式聲明容易造成錯(cuò)誤,為了調(diào)試程序方便,一般對(duì)使用的變量都進(jìn)行聲明,可以在通用聲明段使用OptionExplicit語(yǔ)句來(lái)強(qiáng)制顯式聲明所有變量。(3)常量1)直接常量指在程序中直接給出值的數(shù)據(jù),如:123、123&、123.45、1.234E2、123D3分別表示整型、長(zhǎng)整型、單精度浮點(diǎn)型(小數(shù)形式)、單精度浮點(diǎn)型(指數(shù)形式)、雙精度浮點(diǎn)型。八進(jìn)制常數(shù):在數(shù)值前加&0,如&0123十六進(jìn)制常數(shù):在數(shù)值前加&H,如&H1232)用戶聲明的符號(hào)常量用Const來(lái)聲明:Const符號(hào)常量名[As類型]=表達(dá)式如:ConstPI=3.14159 '聲明了常量PI,代表3.14159,單精度型ConstMAXAsInteger=&0144''聲明了常量MAX,代表八進(jìn)制數(shù)144,整型ConstCOUNT#=45.67 '聲明了常量COUNT,代表67,雙精度型3)系統(tǒng)提供的常量系統(tǒng)定義的常量位于對(duì)象庫(kù)中,在對(duì)象瀏覽器中的VisualBasic(VB)和VisualBasicforAplication(VBA)等對(duì)象庫(kù)中列出了VB的常量。這些常量可以與應(yīng)用程序的對(duì)象、方法、屬性一起使用。如:Forml.WindowsState=vbMaximized表示將窗口極大化。3.變量作用域與變量說(shuō)明語(yǔ)句1)變量作用域變量的有效作用范圍稱為變量作用域。VB有以下三個(gè)作用域等級(jí),見(jiàn)表3:等級(jí)范圍局部在過(guò)程中說(shuō)明,僅在說(shuō)明它的過(guò)程有柄窗體/模塊在窗體或模塊中說(shuō)明,在定義該變量的模塊或窗體的所有過(guò)程內(nèi)均有全局(公有)在模塊或窗體中說(shuō)明,在工程內(nèi)的所有過(guò)程中都有效4運(yùn)算符與表達(dá)式運(yùn)算符的功能及優(yōu)先級(jí)表達(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)算符有以下幾種:“乘方—負(fù)號(hào)*乘/除'整除加法運(yùn)算,也齦暮騫串的之間而合郡運(yùn)算?!獪p加法運(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)算符連接起來(lái)的式子稱為“算術(shù)表達(dá)式例如:a*b/(c*d) 3.14159265*r'2等帶有括號(hào)的算術(shù)表達(dá)式在運(yùn)算時(shí)將優(yōu)先進(jìn)行括號(hào)內(nèi)的運(yùn)算注意:(1)/和\的區(qū)別:"2=0.5,1\2=0(2)Mod運(yùn)算中,結(jié)果與被除數(shù)同號(hào)例如:-9Mod7結(jié)果為-2字符串運(yùn)算符與字符串表達(dá)式字符串運(yùn)算符有:&、+o 功能是字符串連接例如:"ABCD"+"EFGHI” ,結(jié)果為:"ABCDEFGHI""VB"&"程序設(shè)計(jì)教程”‘結(jié)果為:"VB程序設(shè)計(jì)教程"說(shuō)明:當(dāng)連接符兩旁的操作量都為字符串時(shí),上述兩個(gè)連接符等價(jià)。它們區(qū)別是:+(連接運(yùn)算):兩個(gè)操作數(shù)均應(yīng)為字符串類型;&(連接運(yùn)算):兩個(gè)操作數(shù)既可為字符型也可為數(shù)值型,當(dāng)是數(shù)值型時(shí),系統(tǒng)自動(dòng)先將其轉(zhuǎn)換為數(shù)字字符,然后進(jìn)行連接操作。關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算符都是雙目運(yùn)算,是用來(lái)比較兩個(gè)運(yùn)算量之間的關(guān)系,關(guān)系表達(dá)式的運(yùn)算結(jié)果為邏輯量。若關(guān)系成立,結(jié)果為True,若關(guān)系不成立,結(jié)果為Falseo關(guān)系運(yùn)算也稱比較運(yùn)算,它表示不等式的真或假,VB共提供六種運(yùn)算符,分別是=(等于),>(大于),<(小于),>=(大于等于),<=(小于等于)和。(不等于)。關(guān)系表達(dá)式就是用關(guān)系運(yùn)算把兩個(gè)比較對(duì)象連接起來(lái)的式子。比較對(duì)象可以是變量、常量和算術(shù)表達(dá)式。例如:a<32 x+y>=z/2 b$<>"Basic" object1isobject2關(guān)系表達(dá)式的運(yùn)算是采用“按值比較'’的方法,即先求出運(yùn)算符兩邊的“值”,若是變量,則取其當(dāng)前值,如果兩端的值滿足條件,則結(jié)果為“True”,否則為“False”。邏輯運(yùn)算符與邏輯表達(dá)式邏輯運(yùn)算是對(duì)邏輯值進(jìn)行的運(yùn)算,Not邏輯非為單目運(yùn)算符(要求一個(gè)操作數(shù)),其它為雙目運(yùn)算符。運(yùn)算符說(shuō)明說(shuō)明例結(jié)果Not取反操作數(shù)為假,結(jié)果為真,操作數(shù)為真,結(jié)果為假NotFTAnd與操作數(shù)均為真時(shí),結(jié)果才為直TAndFTAndTFTOr或操作數(shù)中有一個(gè)為真時(shí),結(jié)果為直TOrFFOrFTFXor異或操作數(shù)相反時(shí),結(jié)果才為真TXorFTXorTTF邏輯運(yùn)算的優(yōu)先次序是:Not->And-*Or-Xor2.邏輯表達(dá)式邏輯表達(dá)式是用邏輯運(yùn)算符把邏輯變量連接起來(lái)的式子。例如:a>=2*3.141159*rAnd(x<>5OrNotb)x>2OrTextl.text="Microsoft”表達(dá)式的書寫:(1)運(yùn)算符不能相鄰。例a+*b是錯(cuò)誤的。(2)乘號(hào)不能省略。例x乘以y應(yīng)寫成:x*y(3)括號(hào)必須成對(duì)出現(xiàn),均使用圓括號(hào),可以嵌套使用。(4)表達(dá)式從左到右在同一基準(zhǔn)并排書寫,不能出現(xiàn)上下標(biāo)(5)要注意各種運(yùn)算符的優(yōu)先級(jí)別,為保持運(yùn)算順序,在寫VB表達(dá)式時(shí)需要適當(dāng)添加括號(hào)().運(yùn)算規(guī)則表達(dá)式中出現(xiàn)了多種不同類型的運(yùn)算符時(shí),其運(yùn)算符優(yōu)先級(jí)如下:算術(shù)運(yùn)算符》關(guān)系運(yùn)算符》邏輯運(yùn)算符說(shuō)明:.當(dāng)一個(gè)表達(dá)式中出現(xiàn)多種運(yùn)算符時(shí),首先進(jìn)行算術(shù)運(yùn)算,接著關(guān)系運(yùn)算符,最后處理邏輯運(yùn)算符,在各類運(yùn)算中再按照相應(yīng)的優(yōu)先次序進(jìn)行。2.可以用括號(hào)改變優(yōu)先順序,強(qiáng)令表達(dá)式的某些部分優(yōu)先運(yùn)行。括號(hào)內(nèi)的運(yùn)算總是優(yōu)先于括號(hào)外的運(yùn)算。對(duì)于多重:括號(hào),總是由內(nèi)到外。第五講數(shù)據(jù)表達(dá)式與簡(jiǎn)單程序設(shè)計(jì)--選擇分支與循環(huán)重點(diǎn):1、手握賦值語(yǔ)句及不同類型數(shù)據(jù)的賦值操作2、InputBox和Msgbox函數(shù)的用法3、lf-else-endif語(yǔ)句的格式及情況語(yǔ)句seIect5.1常用的函數(shù)1.數(shù)學(xué)函數(shù)VB中常用的數(shù)學(xué)函數(shù)函數(shù)名功能示例結(jié)果Sqr(x)求平方根Sqr(9)3Log(x)求自然對(duì)數(shù),x>0Log(10)2.3Exp(x)求以e為底的哥值,即求e*Exp(3)20.086Abs(x)求X的絕對(duì)值A(chǔ)bs(-2.5)2.5Hex[$](x)求X的十六進(jìn)制數(shù),返回的是字符型值Hex[$](28)Oct[$](x)求X的八進(jìn)制數(shù),返回的是字符型值0ct[$](10)"12”Sgn(x)求x的符號(hào),當(dāng)x>0,返回1:x=0,返回0; x<0,返回-1Sgn(15)1Rnd(x)產(chǎn)生一個(gè)在(0,1)區(qū)間均勻分布的隨機(jī)數(shù),每次的值都不同;若x=0,則給出的是上一次本函數(shù)產(chǎn)生的隨機(jī)數(shù)Rnd(x)o-l之間的數(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ù)返回的是弧度值A(chǔ)tn(1)0.792.字符函數(shù)(1)字符串編碼在Windows采用的DBCS(DoubleByteCharacterSet)編碼方案中,一個(gè)漢字在計(jì)算機(jī)內(nèi)存中占2個(gè)字節(jié),一個(gè)西文字符(ASCII碼)
占1個(gè)字節(jié),但在VB中采用的是Unicode(ISO字符標(biāo)準(zhǔn))來(lái)存儲(chǔ)字符的,所有字符都占2個(gè)字節(jié)。為方便使用,可以用StrConv函數(shù)來(lái)對(duì)Unicode與DBCS進(jìn)行轉(zhuǎn)換,可以用函數(shù)Len()函數(shù)求字符串的字符數(shù),用LenB()函數(shù)求字符串的字節(jié)數(shù)。(2)常用的字符串函數(shù)函數(shù)名功能示例結(jié)果Len(x)求x字符串的字符長(zhǎng)度(個(gè)數(shù))Len("ab技術(shù)”)1LenB(x)求x字符串的字節(jié)個(gè)數(shù)LenB("ab技術(shù)”)8Left(x,n)從x字符串左邊取n個(gè)字符Left(*ABsYt*,2)"AB"Right(x,n)從x字符串右邊取n個(gè)字符Right("ABsYt”,2)"Yt"Mid(x,n1,n2)從x字符串左邊第nl個(gè)位置開(kāi)始向右取n2個(gè)字符Mid("ABsYt”,2,3)〃BsY〃Ucase(x)將x字符串中所有小寫字母改為大寫Ucase("ABsYug")ABSYUGLease(x)將X字符串中所有大寫字母改為小寫Ucase("ABsYug")absyugLtrim(x)去掉X左邊的空格Lrim(*ABC")”ABCRtrim(x)去掉X右邊的空格Trim("ABC")”ABCTrim(x)去掉x兩邊的空格Trim(*ABC")"ABC"Instr(x,"字符”,M)在X中查找給定的字符,返回該字符在X中的位置,M=1不區(qū)分大小寫,省略則區(qū)分Instr("WBAC","B")2String(n,"字符”)得到由n個(gè)首字符組成的一個(gè)字符串String(3,"abed")aaaSpace(n)得到n個(gè)空格Space(3)Replace(C,Cl,C2,Nl,N2)在C字符串中從N1開(kāi)始將C2替代N2次C1,如果沒(méi)有N1表示從1開(kāi)始Replace("ABCASAA","A","12",2,2)〃ABC12S12A*3.日期與時(shí)間函數(shù)常用的日期與時(shí)間函數(shù)函數(shù)名含義示例結(jié)果
Date()返回系統(tǒng)日期Date()02-3-19Time()返回系統(tǒng)時(shí)間Time()3:30:00PMNow返回系統(tǒng)時(shí)間和日期Now02-3-193:30:00Month(C)返回月份代號(hào)(1-12)Month(*02,03,19")3Year(C)返回年代號(hào)(1752-2078)Year("02-03-19")2002Day(C)返回日期代號(hào)(1-31)Day("02,03,19")19WeekDay()返回星期代號(hào)(1-7),星期日為1WeekDay(*02,03,17")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ù)星期時(shí)分秒4.轉(zhuǎn)換函數(shù)函數(shù)名功能示例結(jié)果Str(x)將數(shù)值數(shù)據(jù)X轉(zhuǎn)換成字符串Str(45.2)"45.2"Vai(x)將字符串X中的數(shù)字轉(zhuǎn)換成數(shù)值Vai("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)4Int(x)取小于等于X的最大整數(shù)Int(-3.5)Int(3.5)-43Fix(x)將數(shù)值型數(shù)據(jù)X的小數(shù)部分舍去Fix(-3.5)-3CBool(x)將任何有效的數(shù)字字符串或數(shù)值轉(zhuǎn)換成邏輯型CBool(2)CBool(*0*)TrueFalseCByte(x)將0-255之間的數(shù)值轉(zhuǎn)換成字節(jié)型CByte(6)6CDate(x)將有效的日期字符串轉(zhuǎn)換成日期CDate(#1990,2,23#)1990-2-23
CCur(x)將數(shù)值數(shù)據(jù)x轉(zhuǎn)換成貨幣型CCur(25.6)25.6Round(x?N)在保留N位小數(shù)的情況下四舍五入取整Round(2.86,1)2.9CStr(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ù)字的輸出格式。語(yǔ)法:x=Format(expression,fmt)expression是所輸出的內(nèi)容。fmt是指輸出的格式,這是一個(gè)字符串型的變量,這一項(xiàng)若省略的話,那么Format函數(shù)將和Str函數(shù)的功能差不多。如:語(yǔ)句輸出Format(2, “0.00")2.00Format(.7,“0曠)70%Format(1140,“$也##0”)$1,140Format字符的意義字符意義字符意義0顯示一數(shù)字,若此位置沒(méi)有數(shù)字則補(bǔ)。小數(shù)點(diǎn)顯示一數(shù)字,若此位置沒(méi)有數(shù)字則不顯示千位的分隔符%數(shù)字乘以100并在右邊加上“%”2-+$()這些字出現(xiàn)在fmt里將原樣打出5.2算法概論.算法的概念算法:指用計(jì)算機(jī)解決某一問(wèn)題的方法和步驟。算法分類:數(shù)值算法:用于解決一般數(shù)學(xué)解析方法難以解決的問(wèn)題,如:求超越方程的根、求定積分、解微分方程等。非數(shù)值算法:用于對(duì)非數(shù)值信息進(jìn)行查找、排序等.算法的特征(1)確定性:指算法的每個(gè)步驟都應(yīng)確切無(wú)誤,沒(méi)有歧義。(2)可行性:指算法的每個(gè)步驟必須是計(jì)算機(jī)能夠有效執(zhí)行、可以實(shí)現(xiàn)的,并可得到確定的結(jié)果。(3)有窮性:指一個(gè)算法應(yīng)該在有限的時(shí)間和步驟內(nèi)可以執(zhí)行完畢的。(4)輸入性:指一個(gè)算法可以有0或多個(gè)輸入數(shù)據(jù)。(5)輸出性:指?jìng)€(gè)算法必須有一個(gè)或多個(gè)輸出結(jié)果。.算法的評(píng)價(jià)主要評(píng)價(jià)指標(biāo)是:算法是否正確、運(yùn)行的效率、占用系統(tǒng)資源的多少。.算法的描述?般常用流程框圖來(lái)描述算法。圖形符號(hào)名稱代表操作Z__/輸入/輸出數(shù)據(jù)的輸入與輸出—處理各種形式的數(shù)據(jù)處理O判斷判斷選擇,根據(jù)條件滿足與否選擇不同路徑起止流程的起點(diǎn)與終點(diǎn)n n特定過(guò)程一個(gè)定義過(guò)的過(guò)程 A流程線連接各個(gè)框圖,表示執(zhí)行順序O連接點(diǎn)表示與流程圖其他部分相連接.基本算法結(jié)構(gòu)“結(jié)構(gòu)化程序設(shè)計(jì)方法”規(guī)定算法有三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)
6.算法示例歐兒里德算法——求兩個(gè)自然數(shù)的最大公約數(shù)
5.3賦值語(yǔ)句及InputBox、MsgBox函數(shù)1賦值語(yǔ)句:P59一般格式:var=<表達(dá)式>其中:var可以是變量名或?qū)傩悦?。功能:將表達(dá)式的值賦給“=”左邊的變量(或?yàn)槟硞€(gè)對(duì)象設(shè)置某屬性值)。使用說(shuō)明:■“=”左邊的變量和右邊的表達(dá)式的值的類型要一致。程序舉例:已知半徑,求圓面積已知三邊長(zhǎng),求三角形面積P652不同數(shù)據(jù)類型數(shù)據(jù)的賦值:P593InputBox函數(shù):P60InputBox函數(shù):用來(lái)接受用戶通過(guò)鍵盤輸入的數(shù)據(jù)。InputBox的使用形式:(P60)v=InputBox(prompt[,title][,default][,x,y][,helpfile,context])其中:v:可為變體變量、字符串變量、數(shù)值變量。功能:執(zhí)行本語(yǔ)句,調(diào)用InputBox函數(shù)時(shí),將在屏幕上出現(xiàn)一個(gè)帶有提示信息的對(duì)話框,當(dāng)用戶從對(duì)話框的用戶編輯框中輸入數(shù)據(jù)并按回車鍵(或單擊確定按鈕))后,系統(tǒng)則把輸入的數(shù)據(jù)賦給變量vo或按[Esc]鍵或取消按鈕,則把0或空串賦給變量VO用戶可通過(guò)設(shè)置InputBox函數(shù)的參數(shù)來(lái)定制提示信息對(duì)話框的形式。具體內(nèi)容見(jiàn)P61例:P612、MsgBox函數(shù):向用戶發(fā)布提示信息,并要求用戶作出必要的響應(yīng)。函數(shù)格式:(P61)例:P63.4 分支結(jié)構(gòu)與分支結(jié)構(gòu)語(yǔ)句if-then結(jié)構(gòu):(可實(shí)現(xiàn)單分支)一般格式:格式一:ifethen語(yǔ)句格式二:ifethen語(yǔ)句組endif其中:e為條件,其形式可為:邏輯變量、關(guān)系表達(dá)式或邏輯表達(dá)式。功能:執(zhí)行本語(yǔ)句時(shí),判斷e的值,若為true,則執(zhí)行then后的語(yǔ)句(語(yǔ)句組),若為false,則執(zhí)行本if語(yǔ)句(或endif)下面的語(yǔ)句。(對(duì)此功能的理解可看P64圖4-7)程序舉例:用InputBox輸入一個(gè)數(shù),若此數(shù)大小0,則在窗體上將它顯示出來(lái)。PrivateSubFormclickODimxAsIntegerx=InputBox("請(qǐng)輸入一個(gè)數(shù)")Ifx>0ThenPrintxEndSubif-then-else-endif結(jié)構(gòu):(可實(shí)現(xiàn)兩分支)一般格式:ifethenA語(yǔ)句組ElseB語(yǔ)句組Endif功能:執(zhí)行本語(yǔ)句時(shí),先判斷e的值:e為true:執(zhí)行A語(yǔ)句組后轉(zhuǎn)endif下一條語(yǔ)句繼續(xù)執(zhí)行。e為false:執(zhí)行B語(yǔ)句組后轉(zhuǎn)endif下一條語(yǔ)句繼續(xù)執(zhí)行。(對(duì)此功能的理解可參考P58圖4-3(b))程序舉例:教材P65、實(shí)驗(yàn)指導(dǎo)書P43實(shí)驗(yàn)5-3if-then-elseif結(jié)構(gòu):(可實(shí)現(xiàn)多分支)一般格式:ifelthenAl語(yǔ)句組Elseife2thenA2語(yǔ)句組Elseife3 thenA3語(yǔ)句組Elseifen thenAn語(yǔ)句組elseA(n+1)語(yǔ)句組Endif功能:執(zhí)行本語(yǔ)句時(shí)依次判斷各條件的值,若有ei的值為true,則執(zhí)行相應(yīng)的Ai語(yǔ)句組后轉(zhuǎn)endif的下一條語(yǔ)句去繼續(xù)執(zhí)行。若所有ei的值均為false,則執(zhí)行else后的A(n+1)語(yǔ)句組后轉(zhuǎn)endif的下一條語(yǔ)句去繼續(xù)執(zhí)行。(對(duì)此功能的理解參考教材P66圖4-8)一般來(lái)說(shuō),ei中最多只有一個(gè)值為true。程序舉例:教材P66例4-2Select-Case-EndSelect結(jié)構(gòu)語(yǔ)句:(可以實(shí)現(xiàn)多分支結(jié)構(gòu))P66一般格式:SelectCaseeCaseclAl語(yǔ)句組Casec2A2語(yǔ)句組CasecnAn語(yǔ)句組CaseElseA(n+1)語(yǔ)句組EndSelect其中:e:測(cè)試表達(dá)式,形式可為:算術(shù)表達(dá)式或字符表達(dá)式。cl,c2,...:測(cè)試項(xiàng)。形式可為以下三種:具體取值:常量1,常量2,…連續(xù)的數(shù)據(jù)范圍:下界值to上界值例如:8to12BtoH等等。滿足某個(gè)判決條件:Is〈關(guān)系表達(dá)式〉常量例如:Is>20Is<="p"其中Is代表e(測(cè)試表達(dá)式)的值。程序舉例:教材P67例4-2第六講循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語(yǔ)句點(diǎn):1、握單分支、雙分支以及多分支結(jié)構(gòu)語(yǔ)句的格式以及程序設(shè)計(jì)方法2、do-loop型循環(huán)語(yǔ)句及循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)3、For-Next型循環(huán)語(yǔ)句及循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)4、循環(huán)的嵌套1for-next循環(huán)語(yǔ)句:P69一般格式:forv=eltoe2[stepe3][exitfor] 循環(huán)體語(yǔ)句組nextv其中:v:循環(huán)控制變量。應(yīng)為整型或單精度型。el:循環(huán)控制變量的初值。e2:循環(huán)控制變量的終值。e3:循環(huán)控制變量的步長(zhǎng)值。功能:(執(zhí)行過(guò)程):P70使用說(shuō)明:?超過(guò)終值的情況:當(dāng)e3>0時(shí),指v>e2,當(dāng)e3<0時(shí),指v〈e2。循環(huán)次數(shù)的計(jì)算公式:循環(huán)次數(shù)=Int((e2-el)/e3)+l當(dāng)step1時(shí),此部分可以省略。循環(huán)中執(zhí)行到exitfor語(yǔ)句時(shí),結(jié)束本循環(huán)語(yǔ)句,轉(zhuǎn)本next的下一條語(yǔ)句去執(zhí)行。1.1程序舉例例:求1+2+3+4+5PrivateSubFormclickODimsAsInteger,iAsIntegers=0Fori=1To5s=s+iNextiPrint"s=";sEndSub例:求1*2*3*4PrivateSubFormclickODimsAsInteger,iAsIntegers=1Fori=1To4s=s*iNextIPrint's=";sEndSub例P70例P71先看len、mid函數(shù)的使用:有一個(gè)字符串A="abcd”(1)則len(A)=4len(x)可獲得x字符串長(zhǎng)度。(一個(gè)漢字為2個(gè)字符)(2)mid(x,nl,n2):取子串函數(shù)作用一:取子串:mid(A,1,l)="a"mid(A,l,2)=MabMmid(A,3,l)=wcM從一個(gè)字符串中一個(gè)一個(gè)取出字符的方法:for1=1tolen(x)printmid(x,I,1)nextI若逆序取出:forI=len(x)to1step-1printmid(x,I,1)nextI作用二:改變一個(gè)字符串中某些字符。mid(x,2,2)="k''1.2循環(huán)嵌套:P73for1=1to2fotj=lto3print"b”nextjprint"a"nextI程序舉例:P73例rnd(x):隨機(jī)函數(shù)的使用方法:P73改變程序中rnd(X)中的X取值,觀察結(jié)果PrivateSubForm_click()PrintRnd(l);Rnd(O)EndSub產(chǎn)生[a,b]范圍內(nèi)隨機(jī)整數(shù)的公式:P73int((b-a+1)*rnd+a)
例:生成5個(gè)3位隨機(jī)整數(shù)。For1=1to5Printint((999-100+1)*rnd+100)NextI自習(xí)P74各例isNumeric(x):判斷一個(gè)字符串是否是一個(gè)數(shù)字串。若x是數(shù)字串,其值為True,若不是數(shù)字串,其值為False2do-loop循環(huán)結(jié)構(gòu):P68一般格式:4種P68dowhilee do[exitdo] [exitdo]loop loopwhilee格式一:(1)先判斷e的值,為true,執(zhí)行循環(huán)體A,為false,下面一條語(yǔ)句去執(zhí)行。(2)循環(huán)體執(zhí)行完后,執(zhí)行l(wèi)oop語(yǔ)句,返回(1)。流程圖P67(a)例:(補(bǔ)充)求s=l+2+3+4+……當(dāng)結(jié)果大小等于55時(shí)結(jié)束PrivateSubForm_click()DimsAsInteger,nAsIntegers=0n=0DoWhiles<55n=n+1s=s+nLoopPrints,nEndSub格式二:(1)執(zhí)行循環(huán)體語(yǔ)句組。(2)執(zhí)行到loopwhile語(yǔ)句時(shí),判斷e的值,若為true,循環(huán)結(jié)束,轉(zhuǎn)loop的下面一條語(yǔ)句去執(zhí)行。循環(huán)結(jié)束,轉(zhuǎn)loop的轉(zhuǎn)⑴,若為false,格式二:dountile循環(huán)結(jié)束,轉(zhuǎn)loop的轉(zhuǎn)⑴,若為false,格式二:dountile格式四:do[exitdo] [exitdo]loop loopuntile格式三功能:(1)判斷e的值,若為false,則執(zhí)行循環(huán)體語(yǔ)句;若為true,則循環(huán)結(jié)束,轉(zhuǎn)loop的下面一條語(yǔ)句去執(zhí)行。(2)執(zhí)行l(wèi)oop語(yǔ)句時(shí),返回(1)流程圖P68圖4-13(b)格式四功能:(1)執(zhí)行循環(huán)體語(yǔ)句(2)執(zhí)行l(wèi)oop語(yǔ)句時(shí),判斷e的值,若為false,返回(1),若為true,則循環(huán)結(jié)束,轉(zhuǎn)loop的下面一條語(yǔ)句去執(zhí)行。流程圖P68圖4-13(a)特別說(shuō)明:無(wú)論哪種格式,記住循環(huán)體執(zhí)行的條件:while后的條件值為true時(shí),執(zhí)行循環(huán)體,為false時(shí),循環(huán)結(jié)束。(2)until后的條件值為false時(shí),執(zhí)行循環(huán)體,為true時(shí),循環(huán)結(jié)束。程序舉例:P68例4-3第七講選擇分支與循環(huán)——VB程序設(shè)計(jì)的常用算法重點(diǎn):1、,重點(diǎn)掌握結(jié)構(gòu)程序設(shè)計(jì)的方法和思想;4、理解和掌握VB中常用算法的思想和設(shè)計(jì)方法;算法(Algorithm):計(jì)算機(jī)解題的基本思想方法和步驟。算法的描述:是對(duì)要解決一個(gè)問(wèn)題或要完成一項(xiàng)任務(wù)所采取的方法和步驟的描述,包括需要什么數(shù)據(jù)(輸入什么數(shù)據(jù)、輸出什么結(jié)果)、采用什么結(jié)構(gòu)、使用什么語(yǔ)句以及如何安排這些語(yǔ)句等。通常使用自然語(yǔ)言、結(jié)構(gòu)化流程圖、偽代碼等來(lái)描述算法。一、計(jì)數(shù)、求和、求階乘等簡(jiǎn)單算法此類問(wèn)題都要使用循環(huán),要注意根據(jù)問(wèn)題確定循環(huán)變量的初值、終值或結(jié)束條件,更要注意用來(lái)表示計(jì)數(shù)、和、階乘的變量的初值。例:用隨機(jī)函數(shù)產(chǎn)生100個(gè)[0,99]范圍內(nèi)的隨機(jī)整數(shù),統(tǒng)計(jì)個(gè)位上的數(shù)字分別為1,2,3,4,5,6,7,8,9,0的數(shù)的個(gè)數(shù)并打印出來(lái)。本題使用數(shù)組來(lái)處理,用數(shù)組a(lto100)存放產(chǎn)生的確100個(gè)隨機(jī)整數(shù),數(shù)組x(lto10)來(lái)存放個(gè)位上的數(shù)字分別為1,2,3,4,5,6,7,8,9,0的數(shù)的個(gè)數(shù)。即個(gè)位是1的個(gè)數(shù)存放在x(l)中,個(gè)位是2的個(gè)數(shù)存放在x(2)中, 個(gè)位是0的個(gè)數(shù)存放在x(10)。將程序編寫在一個(gè)GetTJput過(guò)程中,代碼如下:PublicSubGetTJput()Dima(lTo100)AsIntegerDimx(lTo10)AsIntegerDimiAsInteger,pAsInteger產(chǎn)生100個(gè)[0,99]范圍內(nèi)的隨機(jī)整數(shù),每行10個(gè)打印出來(lái)Fori=1To100a(i)=Int(Rnd*100)Ifa(i)<lOThenForm1.PrintSpace(2);a(i);ElseForm1.PrintSpace(l);a(i);EndIfIfiMod10=0ThenForm1.PrintNexti,統(tǒng)計(jì)個(gè)位上的數(shù)字分別為1,2,3,4,5,6,7,8,9,0的數(shù)的個(gè)數(shù),并將統(tǒng)計(jì)結(jié)果保存在數(shù)組x(l),x(2),…,x(10)中,將統(tǒng)計(jì)結(jié)果打印出來(lái)Fori=1To100p=a(i)Mod10 1求個(gè)位上的數(shù)字Ifp=0Thenp=10x(p)=x(p)+1
NextiForml.Print”統(tǒng)計(jì)結(jié)果”Fori=1To10P=1Ifi=10Thenp=0Form1.Print”個(gè)位數(shù)為“+Str(p)+“共”+Str(x(i))+“個(gè)“NextiEndSub二、求兩個(gè)整數(shù)的最大公約數(shù)、最小公倍數(shù)分析:求最大公約數(shù)的算法思想:(最小公倍數(shù)=兩個(gè)整數(shù)之積/最大公約數(shù))(1)對(duì)于已知兩數(shù)加,n,使得\7X)\!/1234/n\7X)\!/1234/nzlx(Vfx例若r=0,則〃為求得的單大公約數(shù),算法結(jié)束;否則執(zhí)行(4);n-n,Lr,再重復(fù)執(zhí)行(2)。求m=14,n=6的最大公約數(shù). mnr,14 6 26Y 0m=inputBox(nm=n)n=inputBox(Mn=n)nm=n*mIfm<nThent=m:m=n:n=tr=mmodnDoWhile(r<>0)m=nr=mmodnLoopPrint”最大公約數(shù)=”,nPrint”最小公倍數(shù)=",nm/n三、判斷素?cái)?shù)只能被1或本身整除的數(shù)稱為素?cái)?shù)基本思想:把m作為被除數(shù),將2—INT(4T)作為除數(shù),如果都除不盡,m就是素?cái)?shù),否則就不是。(可用以下程序段實(shí)現(xiàn))m=val(InputBox(”請(qǐng)輸入一個(gè)數(shù)”))Fori=2Toint(sqr(m))IfmModi=0ThenExitForNextiIfi>int(sqr(m))ThenPrint”夜窺是素?cái)?shù)”ElsePrint”該數(shù)不是素?cái)?shù)”EndIf將其寫成一函數(shù),若為素?cái)?shù)返回True,不是則返回FalsePrivateFunctionPrime(masInteger)AsBooleanDimi%Prime=TrueFori=2Toint(sqr(m))IfmModi=0ThenPrime=False:ExitForNextiEndFunction四、驗(yàn)證哥德巴赫猜想(任意一個(gè)大于等于6的偶數(shù)都可以分解為兩個(gè)素?cái)?shù)之和)基本思想:n為大于等于6的任一偶數(shù),可分解為nl和n2兩個(gè)數(shù),分別檢查nl和n2是否為素?cái)?shù),如都是,則為一組解。如nl不是素?cái)?shù),就不必再檢查n2是否素?cái)?shù)。先從nl=3開(kāi)始,檢驗(yàn)nl和n2(n2=N?nl)是否素?cái)?shù)。然后使nl+2再檢驗(yàn)nl>n2是否素?cái)?shù),…直到n1=n/2為止。利用上面的prime函數(shù),驗(yàn)證哥德巴赫猜想的程序代碼如下:Dimn%,nl%,n2%n=Val(InputBox("輸入大于6的正整數(shù)”))Forn1=3ton\2step2n2=n-n1Ifprime(nl)ThenIfprime(n2)thenPrintn&&nl& &n2ExitFor ,結(jié)束循環(huán)EndifEndifNextnl五、迭代法算法思想:對(duì)于一個(gè)問(wèn)題的求解x,可由給定的一個(gè)初值xO,根據(jù)某一迭代公式得到一個(gè)新的值xl,這個(gè)新值xl比初值xO更接近要求的值x;再以新值作為初值,即:xl-xO,重新按原來(lái)的方法求xl,重復(fù)這一過(guò)和直到|xl-xO|<e(某一給定的精度)。此時(shí)可將xl作為問(wèn)題的解。例:用迭代法求某個(gè)數(shù)的平方根。已知求平方根的迭代公式為:X,=i(x0+—)2X。PrivateFunctionFsqrt(aAssingle)ASsingleDimxOAsSingle,xlAsSinglexO=a/2 ,迭代初值xl=0.5*(x0+a/xO)Dox0=xl ,為下一次迭代作準(zhǔn)備xl=0.5*(x0+a/x0)LoopWhileAbs(xl-xO)>0.00001Fsqrt=xlEndFunction六、數(shù)制轉(zhuǎn)換將一個(gè)十進(jìn)制整數(shù)0轉(zhuǎn)換成~r(2-16)進(jìn)制字符串。方法:將勿不斷除r取余數(shù),直到商為零,以反序得到結(jié)果。下面寫出?轉(zhuǎn)換函數(shù),參數(shù)idee為十進(jìn)制數(shù),ibase為要轉(zhuǎn)換成數(shù)的基(如二進(jìn)制的基是2,八進(jìn)制的基是8等),函數(shù)輸出結(jié)果是字符串。PrivateFunctionTrDec(idecAsInteger,ibaseAsInteger)AsStringDimstrDecRS,iDecR%strDecR="MDoWhileidee<>0iDecR=ideeModibaseIfiDecR>=10ThenstrDecR=Chr$(65+iDecR-10)&strDecRElsestrDecR=iDecR&strDecREndIfidee=idee\ibaseLoopTrDec=strDecREndFunction七、字符串的一般處理1.簡(jiǎn)單加密和解密加密的思想是: 將每個(gè)字母C加(或減)一序數(shù)K,即用它后的第K個(gè)字母代替,變換式公式:c=chr(Asc(c)+k)例如序數(shù)k為5,這時(shí)“A」”F”,,舊…當(dāng)加序數(shù)后的字母超過(guò)“Z“或則c=Chr(Asc(c)+k-26)例如:Youaregood—?Dtz fwjItti解密為加密的逆過(guò)程將每個(gè)字母C減(或加)一序數(shù)K,即c=chr(Asc(c)-k),例如序數(shù)k為5,這時(shí)Z7U”, "YJT…當(dāng)加序數(shù)后的字母小于“A”或則c=Chr(Asc(c)-k+26)下段程序是加密處理:i=1:strp=nL=Len(RTrim(strI))DoWhile(i<=nL)strT=Mid$(strl,i,1)取第i個(gè)字符If(strT>=AndstrT<="Zn)TheniA=Asc(strT)+5IfiA>Asc(HZn)TheniA=iA-26strp=strp+Chr$(iA)ElseIf(strT>=ManAndstrTv="z")TheniA=Asc(strT)+5IfiA>Asc("zn)TheniA=iA-26strp=strp+ChrS(iA)Elsestrp=strp+strTEndIf=i+1LoopPrintstrp.統(tǒng)計(jì)文本單詞的個(gè)數(shù)算法思路:(1)從文本(字符串)的左邊開(kāi)始,取出一個(gè)字符;設(shè)邏輯量WT表示所取字符是否是單詞內(nèi)的字符,初值設(shè)為False(2)若所取字符不是“空格”,“逗號(hào)”,“分號(hào)”或“感嘆號(hào)”等單詞的分隔符,再判斷WT是否為True,若WT不為True則表是新單詞的開(kāi)始,讓單詞數(shù)Nw=Nw+L讓W(xué)T=True;(3)若所取字符是“空格”,“逗號(hào)”,“分號(hào)”或“感嘆號(hào)”等單詞的分隔符,則表示字符不是單詞內(nèi)字符,讓W(xué)T=False;(4)再依次取下一個(gè)字符,重得(2)(3)直到文本結(jié)束。下面程序段是字符串strl中包含的單詞數(shù)Nw=0:Wt=FalsenL=Len(RTrim(strI))Fori=1TonLstrT=Mid$(strl,i,1)取第i個(gè)字符SelectCasestrTCaseWt=FalseCaseElseIfNotWtThenNw=Nw+1Wt=TrueEndIfEndSelectNextiPrint”單詞數(shù)為:",Nw八、窮舉法窮舉法(又稱“枚舉法”)的基本思想是:一一列舉各種可能的情況,并判斷哪一種可能是符合要求的解,這是一種“在沒(méi)有其它辦法的情況的方法”,是一種最“笨”的方法,然而對(duì)一些無(wú)法用解析法求解的問(wèn)題往往能奏效,通常采用循環(huán)來(lái)處理窮舉問(wèn)題。例:將一張面值為100元的人民幣等值換成100張5元、1元和0.5元的零鈔,要求每種零鈔不少于1張,問(wèn)有哪幾種組合?Dimi%,j%,k%Print”5元 1元 0.5元”Fori=1To20Forj=1To100-ik=100-i-jIf5.0*i+1.0*j+0.5*k=100ThenPrinti,j,kEndIfNextjNexti九、遞歸算法用自身的結(jié)構(gòu)來(lái)描述自身,稱遞歸VB允許在一個(gè)Sub子過(guò)程和Function過(guò)程的定義內(nèi)部調(diào)用自己,即遞歸Sub子過(guò)程和遞歸Function函數(shù)。遞歸處理一般用棧來(lái)實(shí)現(xiàn),每調(diào)用一次自身,把當(dāng)前參數(shù)壓棧,直到遞歸結(jié)束條件;然后從棧中彈出當(dāng)前參數(shù),直到棧空。遞歸條件:(1)遞歸結(jié)束條件及結(jié)束時(shí)的值;(2)能用遞歸形式表示,且遞歸向終止條件發(fā)展。例:編fac("片加的遞歸函數(shù)Functionfac(nAsInteger)AsIntegerIfn=1Thenfac=1Elsefac=n*fac(n-1)EndIfEndFunction第八講數(shù)組 靜態(tài)數(shù)態(tài)重點(diǎn):1、掌握數(shù)組的概念以及數(shù)組的定義和數(shù)組的結(jié)構(gòu)2、數(shù)組相關(guān)的函數(shù)和語(yǔ)句3、數(shù)組元素的引用4、數(shù)組元素的輸入、輸出和處理1數(shù)組的概念數(shù)組:是同類變量的一個(gè)有序的集合。例:有5個(gè)學(xué)生的數(shù)學(xué)成績(jī),若編程時(shí)這樣存放:sl=50 s2=90 s3=80 s4=60 s5=70則5個(gè)分?jǐn)?shù)分別存放在sis2s3s4s5簡(jiǎn)單變量中若編程時(shí)這樣存放:s(1)=89 s(2)=67s(3)=42 s(4)=68s(5)=97則5個(gè)分?jǐn)?shù)分別存放在一個(gè)s數(shù)組中。一、數(shù)組命名、數(shù)組元素、數(shù)組的維數(shù)與數(shù)組的類型:上例中:數(shù)組名s 命名規(guī)則同簡(jiǎn)單變量的命名規(guī)則。P45數(shù)組元素:數(shù)組中的每個(gè)成員為一個(gè)元素。如上例中s數(shù)組中有5個(gè)元素,分別為:s(1)s(2)s(3)s(4)s(5)數(shù)組元素又稱為下標(biāo)變量。其中:1,2,3,4,5稱為下標(biāo)。表示該元素在數(shù)組中排列的位置。數(shù)組的維數(shù):一維數(shù)組:只有一個(gè)下標(biāo)的數(shù)組稱為一維數(shù)組。二維數(shù)組:有兩個(gè)下標(biāo)的數(shù)組稱為二維數(shù)組。X(2,5)N維數(shù)組:有N個(gè)下標(biāo)的數(shù)組稱為N維數(shù)組。Scored,3,5……)數(shù)組的類型:固定大小數(shù)組:P85動(dòng)態(tài)數(shù)組:二、數(shù)組定義:程序中的數(shù)組必須先定義,后使用。①數(shù)組說(shuō)明語(yǔ)句一般格式:P85Dim數(shù)組名1([〈維界定義>])[As<數(shù)據(jù)類型>][,數(shù)組名2(下標(biāo)范圍)As〈數(shù)據(jù)類型>]……其中:維界定義的形式:[下界1to]上界1[,[下界2to]上界2]……例如:Dima(lto5)Asinteger本語(yǔ)句說(shuō)明了一個(gè)一維a數(shù)組,有5個(gè)元素,分別為a(1),a(2),a(3),a(4),a(5)又例如:Dimb(1to2,1to3)AsSingle,c(3)AsInteger,d(3to5)本語(yǔ)句說(shuō)明了三個(gè)數(shù)組:二維數(shù)組b:有2行3歹U,6個(gè)元素分別為:b(l,1)b(l,2)b(l,3)b(2,1)b(2,2)b(2,3)一維數(shù)組c:有4個(gè)元素:c(0)c(l)c(2)c(3)一維數(shù)組d:有3個(gè)元素:d(3)d(4) d(5)使用說(shuō)明:下界缺省時(shí),為0。若在窗體或標(biāo)準(zhǔn)模塊的所有過(guò)程之前書寫下列語(yǔ)句:OptionBase1則下界缺省值為I。下界1或下界2只能是常量,不允許是變量或其它表達(dá)式。8.2 數(shù)組的基本操作7.2.1數(shù)組元素的賦值.用賦值語(yǔ)句給數(shù)組元素賦值例:P92DimScore(3)AsIntegerDimTwo(l,lto2)AsIntegerScore(0)=80Score(1)=75Score(2)=91Score(3)=68Two(0,l)=Score(O)PrintTwo(0,1)通過(guò)循環(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=lTo2 ,利用二重循環(huán)給二維數(shù)組賦值并輸出Forj=1To2B(i,j)=i*10+jPrintB(i,j);NextjPrintNextiEndSub3用InputBox函數(shù)給數(shù)組元素賦值
PrivateSubForm_Click()DimA(6)AsInteger,VAsVariantFori=0To6A(i)=InputBox("給數(shù)組元素賦值]啜組A賦值”)PrintA(i);NextiPrintEndSub用Array函數(shù)給數(shù)組賦值A(chǔ)rray函數(shù)的一般使用形式如下:〈變體變量名〉=Array([數(shù)據(jù)列表])功能:將一個(gè)數(shù)據(jù)集賦給一個(gè)Variant變量,并將該變量創(chuàng)建成一個(gè)一維數(shù)組。例P93OptionBase1PrivateSubF
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 路邊廣告位轉(zhuǎn)讓合同
- 美國(guó)自費(fèi)出國(guó)留學(xué)咨詢服務(wù)合同年
- 居間合同傭金承諾書
- 事故車買賣合同協(xié)議
- 連車帶人租賃合同
- 荒山承包合同范本
- 叉車租賃合同協(xié)議書范本大全
- 工地材料運(yùn)輸合同
- 借款合同答辯狀范本范本
- 個(gè)人工作總結(jié)范文20篇
- 2024-2030年中國(guó)香菇行業(yè)銷售狀況及供需前景預(yù)測(cè)報(bào)告
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》真題及解析
- 高中英語(yǔ)必背3500單詞表(完整版)
- 2024年版《輸變電工程標(biāo)準(zhǔn)工藝應(yīng)用圖冊(cè)》
- 2024年高考數(shù)學(xué)試卷(北京)(空白卷)
- 2024從洞見(jiàn)到生意:阿里健康特色人群消費(fèi)趨勢(shì)報(bào)告-阿里健康x一財(cái)商學(xué)院
- 人教版2024年新教材七年級(jí)上冊(cè)英語(yǔ)starter unit 1 -unit7重點(diǎn)短語(yǔ)句型清單
- 護(hù)理服務(wù)在產(chǎn)科中的應(yīng)用課件
- 2024年小升初語(yǔ)文入學(xué)分班測(cè)試卷四(統(tǒng)編版)
- 流行文化對(duì)青少年價(jià)值觀的影響研究
- 中國(guó)保險(xiǎn)行業(yè)協(xié)會(huì)官方-2023年度商業(yè)健康保險(xiǎn)經(jīng)營(yíng)數(shù)據(jù)分析報(bào)告-2024年3月
評(píng)論
0/150
提交評(píng)論