![完整詳細全面的VB教學(xué)課件_第1頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/28/72939acd-411b-4b26-906f-f868ed0d901f/72939acd-411b-4b26-906f-f868ed0d901f1.gif)
![完整詳細全面的VB教學(xué)課件_第2頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/28/72939acd-411b-4b26-906f-f868ed0d901f/72939acd-411b-4b26-906f-f868ed0d901f2.gif)
![完整詳細全面的VB教學(xué)課件_第3頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/28/72939acd-411b-4b26-906f-f868ed0d901f/72939acd-411b-4b26-906f-f868ed0d901f3.gif)
![完整詳細全面的VB教學(xué)課件_第4頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/28/72939acd-411b-4b26-906f-f868ed0d901f/72939acd-411b-4b26-906f-f868ed0d901f4.gif)
![完整詳細全面的VB教學(xué)課件_第5頁](http://file1.renrendoc.com/fileroot_temp2/2021-1/28/72939acd-411b-4b26-906f-f868ed0d901f/72939acd-411b-4b26-906f-f868ed0d901f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Visual Basic 程序設(shè)計教程,Visual Basic 6.0,一、為什么要學(xué)本課程 ,全國計算機等級考試(二級)中,計算機程序設(shè)計是必修課程。 Windows程序設(shè)計的語言有如下幾種: 傳統(tǒng)的CC+語言:面向過程,學(xué)習(xí)難度大。 Visual C+:面向?qū)ο?,學(xué)習(xí)難度大。 Visual FoxPro:面向?qū)ο蠛蛿?shù)據(jù)庫,已停止發(fā)展。 Visual BASIC:面向?qū)ο螅δ軓姶?,比較簡單,適合于作為第一門計算機課程,學(xué)了VB可以干什么?VB可以實現(xiàn): 開發(fā)各種應(yīng)用程序。如“考試系統(tǒng)”。 數(shù)據(jù)庫管理。如“財務(wù)管理、成績管理”等。 開發(fā)動態(tài)交互網(wǎng)站。如“電子商務(wù)、網(wǎng)上查詢”等。(用VBSc
2、ript腳本語言,是VB的子集,二、考試要求,國家二級考試:本學(xué)期末可以開始報考。 分科:筆試機試,單科成績一年內(nèi)有效。 考場:本??紙觥?考試時間:每年4月、月,提前個月報名,必須以班為單位集體報名。 考試費:130元。 考試內(nèi)容:參看模擬考試軟件和考試大綱。 省二級考試:參看考試大綱,三、學(xué)習(xí)要求,上課:認真聽講,適當做筆記,不要什么都記。下課:多上機練習(xí)、多背程序、多做題。 上機實驗:要求提前寫好程序時,希望盡量做到。 最大目的:鍛煉邏輯思維,培養(yǎng)創(chuàng)造性,學(xué)會發(fā)現(xiàn)問題、思考問題、分析問題、解決問題的方法。(掌握算法,第一章 概述,第二章 Visual Basic程序設(shè)計入門,第三章 窗體
3、與常用控件,第四章 程序設(shè)計基礎(chǔ),第五章 程序控制結(jié)構(gòu),第六章 數(shù)組,第七章 過程,第八章 文件,第九章 圖形操作,第十章 界面設(shè)計,第十二章 程序調(diào)試及錯誤處理,第十一章 Visual Basic數(shù)據(jù)庫編程,Visual Basic 程序設(shè)計教程,第一章 概述,1.1 Visual Basic的發(fā)展和特點 1.1.1 Visual Basic的發(fā)展,Visual Basic是一種可視化的、面向?qū)ο蠛筒捎檬录?qū)動方式的高級程序設(shè)計語言,可用于開發(fā)Windows環(huán)境下的各類應(yīng)用程序。 Visual Basic由Microsoft公司于1991年推出,它的誕生標志著軟件設(shè)計和開發(fā)開始了一個新的時代
4、。自1991年至今,Microsoft公司先后發(fā)布了1.0-7.0等幾個升級版本,使得功能更加強大、完善。 目前比較常用的版本是Visual Basic 6.0、Visual Basic.NET等。 Visual Basic 6.0包含學(xué)習(xí)版、專業(yè)版和企業(yè)版。 1.1.2 Visual Basic的特點 Visual Basic是目前所有開發(fā)語言中最簡單、最容易使用的語言。作為程序設(shè)計語言,Visual Basic主要有以下特點。 1可視化編程。 2面向?qū)ο蟮某绦蛟O(shè)計 。 3結(jié)構(gòu)化程序設(shè)計語言,第一章 概述,4事件驅(qū)動編程機制 。 5強大的數(shù)據(jù)庫訪問能力 。 6對象的鏈接與嵌入(OLE,Obj
5、ect Linking And Embedding ) 。 7高度的可擴充性 。 8支持動態(tài)數(shù)據(jù)交換,1.2 Visual Basic 6.0的啟動和退出,1Visual Basic 6.0的啟動 2Visual Basic 6.0的退出 結(jié)合Visual Basic 6.0 的開發(fā)環(huán)境介紹Visual Basic 6.0 多種啟動方法和退出方式,1.3 Visual Basic 6.0集成開發(fā)環(huán)境,第一章 概述,Visual Basic6.0集成開發(fā)環(huán)境(IDE,Integrated Development Environment )是提供設(shè)計、運行和測試應(yīng)用程序所需的各種工具的一個工作環(huán)境
6、。這些工具互相協(xié)調(diào)、互相補充,大大減少了應(yīng)用程序的開發(fā)難度。 Visual Basic 6.0啟動后,出現(xiàn)如圖的對話框, 選擇“標準EXE”,再單擊“打開”, 即可進入Visual Basic 6.0集成開發(fā)環(huán)境,如下圖所示,第一章 概述,屬性窗口,工具箱窗口,布局窗口,代碼窗口,工程資源管理器窗口,工具欄,菜單欄,標題欄,窗體設(shè)計窗口,第一章 概述,1.4 Visual Basic 6.0的幫助系統(tǒng),1.4.1 使用MSDN Library Microsoft Visual Studio 中的MSDN Library,包含Visual Basic 6.0幫助信息的全面幫助系統(tǒng),包括示例代碼、
7、文檔、技術(shù)文章、Microsoft 開發(fā)人員知識庫、以及在使用 Microsoft 公司的技術(shù)來開發(fā)解決方案時所需要的其他資料。 1.4.2 使用上下文相關(guān)的幫助 Visual Basic 6.0提供了F1功能鍵上下文相關(guān)幫助。上下文相關(guān)幫助是指用戶在窗口中進行工作的任何時候,按鍵盤上的F1鍵,即可獲得正在操作對象的幫助內(nèi)容。 1.4.3 從Internet上獲得幫助 在Internet上有大量的介紹Visual Basic 6.0程序設(shè)計技巧、經(jīng)驗的站點,許多站點上還有例子及源程序下載,第二章 Visual Basic程序設(shè)計入門,2.1 Visual Basic編程的基本概念,學(xué)習(xí)計算機程
8、序設(shè)計課程的目的,就是學(xué)會怎樣與計算機交流,將人解決問題的思路、方法、手段以某種計算機能理解的方式告訴計算機,讓計算機根據(jù)人的指令去完成某項特定的工作,2.1.1 程序語言與程序設(shè)計 1、程序設(shè)計語言 人類進行交流的語言由語音、詞匯和語法構(gòu)成一定系統(tǒng);而人與計算機則是通過程序設(shè)計語言進行交流的。程序設(shè)計語言由字、詞和語法規(guī)則構(gòu)成指令系統(tǒng)。計算機程序設(shè)計語言有多種,可用不同的程序設(shè)計語言編寫不同的程序來解決同一個問題。 從計算機發(fā)明至今,隨著計算機硬件技術(shù)和軟件技術(shù)的發(fā)展,計算機程序設(shè)計語言經(jīng)歷了機器語言、匯編語言、高級語言幾個階段。 從機器的角度看,程序設(shè)計語言可以分為低級語言和高級語言兩大類
9、,第二章 Visual Basic程序設(shè)計入門,低級語言是面向機器的指令系統(tǒng),又分為機器語言和匯編語言。 高級語言是接近人類習(xí)慣和語言描述方式的指令系統(tǒng)。高級語言不依賴于機器,構(gòu)成簡單,移植性好,便于記憶、學(xué)習(xí)和維護。人們常說的“程序設(shè)計語言”就是指高級語言。高級語言又分為面向過程的程序設(shè)計語言和面向?qū)ο蟮某绦蛟O(shè)計語言。 2程序設(shè)計 計算機程序是用某種程序設(shè)計語言編寫一組指示計算機每一步動作的指令,運行于某種目標體系結(jié)構(gòu)上。 計算機解決問題的方法和步驟,稱為“計算機算法”,簡稱“算法”。算法是我們學(xué)習(xí)的重點內(nèi)容之一,需要我們在學(xué)習(xí)中逐步積累。 程序設(shè)計主要有兩個方面的任務(wù):首先是擬定算法,即將
10、需要計算機處理的實際問題抽象為數(shù)學(xué)模型,并設(shè)計出解決問題所需的方法和步驟;然后是編制程序,即用合適的程序設(shè)計語言對設(shè)計的算法進行編碼,第二章 Visual Basic程序設(shè)計入門,Visual Basic是采用事件驅(qū)動編程機制的可視化程序設(shè)計語言??梢暬绦蛟O(shè)計利用系統(tǒng)所提供的可視“控件類”來創(chuàng)建“對象”,不需編寫大量代碼去描述界面元素的外觀和位置,即可完成界面的設(shè)計工作,從而使界面設(shè)計更為輕松、簡捷、方便和靈活,2.1.2 面向?qū)ο蟪绦蛟O(shè)計 1對象與類 對象:是具有某些特征的具體事物的實體;類:是同種對象的集合與抽象,它包含這種對象的屬性描述和行為定義。 具體的講,在 VB中,工具箱中的控件
11、就是類,設(shè)計窗體時,將它(們)放在窗體上時,就是對象。 面向?qū)ο蟪绦蛟O(shè)計方法,是將數(shù)據(jù)與程序封裝成一個互相依存、不可分割的整體,這個整體被稱為“對象”,每個對象都是可視的。在VB系統(tǒng)中,對象的特性、名稱、大小、形狀、顏色及功能被稱為屬性,第二章 Visual Basic程序設(shè)計入門,VB中的“類”是同種對象的集合與抽象,是創(chuàng)建對象的模板,對象,類,第二章 Visual Basic程序設(shè)計入門,2對象的屬性、事件和方法 對象的屬性、事件和方法是對象的三要素(學(xué)習(xí)重點)。 屬性:是描述和反映對象特征的參數(shù)。例如,對象的標題、顏色、位 置、大小等屬性決定了對象展示出的界面具有什么樣的外觀及功能。 對
12、屬性不了解,就不可能設(shè)計出好的程序 。 屬性的表示: 對象名屬性 兩種屬性設(shè)置方法: (1)在設(shè)計階段設(shè)置(在屬性窗口); (2)在程序運行中設(shè)置,即在程序代碼中賦值。 對象名屬性=屬性值 這里的“=”號為賦值號 事件:對象所受到的外部行為,也就是發(fā)生在對象上的動作;該對象 上發(fā)生了事件,如果有響應(yīng),這就是事件過程。格式如下: Private Sub 對象名_事件(參數(shù)表) End sub,第二章 Visual Basic程序設(shè)計入門,方法:對象能完成的動作。 方法的動作是事先為程序設(shè)計人員提供的一種特殊的過程和函數(shù)。 (是不可見的程序代碼) 對象方法的調(diào)用格式: 對象方法(參數(shù)表,例2.1.
13、1 Move方法的調(diào)用示例。在窗體上創(chuàng)建了一個文本框?qū)ο骉ext1,用鼠標單擊窗體時,將文本框移到坐標為(200,100)的位置上。采用Move方法來實現(xiàn),其事件過程為: Private Sub Form_Click() 窗體單擊事件 Text1.Move 200,100 調(diào)用Move方法 End Sub,例2.1.2 Print方法的調(diào)用示例。用鼠標單擊命令按鈕時,在窗體上顯示“歡迎進入VB6.0 !”。事件過程為: Private Sub Command1_Click() 命令按鈕單擊事件 Form1.Print “歡迎進入VB6.0 !” 調(diào)用Print 方法 End Sub,注意省略對
14、象時的含義(指窗體,第二章 Visual Basic程序設(shè)計入門,2.1.3 可視化程序設(shè)計基礎(chǔ),1窗體模塊 窗體是Visual Basic程序設(shè)計的基礎(chǔ),是最常見的對象。窗體也是容器,各種控件對象都建立在窗體上。用戶通過窗體和窗體上的控件向應(yīng)用程序提供數(shù)據(jù)和控制命令,并通過窗體和窗體上的控件獲得程序執(zhí)行結(jié)果。 VB應(yīng)用程序一般至少包含一個窗體,有的含有多個窗體,一個窗體對應(yīng)工程管理器中一個窗體模塊。 2其他用戶界面元素 窗體及其控件、菜單欄、工具欄和狀態(tài)欄是用戶界面的基本元素。新建的窗體并不包含控件、菜單欄、工具欄和狀態(tài)欄,只是在必要時根據(jù)應(yīng)用程序的需要,由程序員自行設(shè)計,可視化程序設(shè)計的特
15、點是:引入了控件的概念和事件驅(qū)動,程序開發(fā)過程一般遵循先設(shè)計界面,再基于事件編寫程序代碼,第二章 Visual Basic程序設(shè)計入門,2.1.4 事件驅(qū)動,1控件對象的事件 Visual Basic系統(tǒng)為每個控件都設(shè)置了若干事件(如Click、DblClick、 Load等) 。多數(shù)事件都是由用戶驅(qū)動,有的事件是由系統(tǒng)來驅(qū)動(如Load事件,在VB的代碼窗口中,有對象列表框和事件列表框。只要是在用戶界面設(shè)計時創(chuàng)建的控件對象,系統(tǒng)都會將其控件名添加到對象列表框中。若是選中對象列表框中的一個對象,在事件列表框中就會列出該對象的所有事件以供選擇,第二章 Visual Basic程序設(shè)計入門,2事件
16、過程 事件過程是一段告訴計算機應(yīng)該執(zhí)行什么操作的程序代碼。每個事件均能驅(qū)動相應(yīng)的事件過程,事件過程代碼需要用戶自己來編寫。Visual Basic程序的主體通常是由若干個事件過程組成的。 事件過程的執(zhí)行是由用戶或系統(tǒng)的動作驅(qū)動。例如,單擊鼠標按鈕,觸發(fā)按鈕的Click事件,則對應(yīng)該事件過程中的代碼就會被執(zhí)行,事件過程的一般格式是: Private Sub 對象名_事件(參數(shù)表) 事件過程的過程頭 事件過程的程序代碼 End sub 事件過程的過程尾,3. 事件驅(qū)動機制 面向?qū)ο蟮某绦蛟O(shè)計中,每個對象都能響應(yīng)多個不同的事件,每個事件均能驅(qū)動一段能完成某項功能的程序代碼,程序代碼的執(zhí)行順序,基本上
17、取決于事件發(fā)生的順序,第二章 Visual Basic程序設(shè)計入門,例 2.1.3 事件驅(qū)動實例。窗體界面如圖2.1.4所示,運行程序后,用鼠標單擊、中的任何一個按鈕,紅色小球就會做出相應(yīng)的運動。如果鼠標單擊按鈕,紅色小球向下移動一次,而其它方向不動;若鼠標單擊按鈕,紅色小球向左移動一次,而其它方向不動,解:界面設(shè)置:在窗體上用Shape控件類生成1個小球,用CommandButton類創(chuàng)建4個命令按鈕。 屬性設(shè)置:將控件對象Shape1的Shape屬性為Circle,FillColor屬性設(shè)置為紅色,F(xiàn)illstyle屬性設(shè)置為0-Solid;將4個命令按鈕的Caption屬性分別設(shè)置為、(
18、軟鍵盤輸入,分析:本程序不改變Shape控件的大小,由Shape控件的Left屬性表示沿水平方向的移動,變量mx表示位移的增量,+mx為向右移動,-mx為向左移動;用Shape控件的Top屬性表示沿垂直方向的移動,+my為向下移動,-my為向上移動。(程序代碼分析請打開例2.1.3,第二章 Visual Basic程序設(shè)計入門,2.2 控件對象,控件是Visual Basic應(yīng)用程序界面設(shè)計的主要部件。Visual Basic 6.0提供了大量的控件。控件的操作主要包括控件對象的建立、控件的屬性設(shè)置和控件事件過程代碼編制,2.2.1 常用的控件類型: VB中的控件通常分為3種類型: 1、標準控
19、件(也稱為內(nèi)部控件):VB啟動后,標準控件就以圖標的形式出現(xiàn)在工具箱中,不能刪除。 2、 ActiveX控件:這類控件不在工具箱中,而是以.ocx類型文件形式存在。需要時,ActiveX控件可以添加到工具箱中,也可以從工具箱中移除。 3、可插入對象:用戶可將Word文檔、Excel工作表、PowerPoint幻燈片等作為一個控件對象類添加到工具箱中,編程時根據(jù)需要再創(chuàng)建對象,第二章 Visual Basic程序設(shè)計入門,2.2.2 標準控件,工具箱中每種工具都用一個圖形按鈕來表示,除了第一個指針工具,其余都是控件類。每個按鈕的功能如表2.2.1所示,控件對象的創(chuàng)建與操作 VB 工具箱中的控件對
20、象類用于窗體界面設(shè)計。 2.2.3 控件的屬性設(shè)置 控件的屬性設(shè)置有兩種方法(前面已提過): 1、在界面設(shè)計階段可以通過屬性窗口直接設(shè)置; 2、在程序運行的過程中,可以在代碼中改變控件的屬性。 格式為:對象名屬性=屬性值 注意省略對象時的含義! 控件的多數(shù)屬性既可利用屬性窗口設(shè)置,也可根據(jù)需要在程序運行時通過程序代碼來改變 ;也有少數(shù)屬性只能用一種方式設(shè)置,第二章 Visual Basic程序設(shè)計入門,例 2.2.1 在程序代碼中修改屬性實例。單擊窗體,在標簽中用紅顏色顯示“歡迎進入VB6.0 !”,如圖所示,解:程序界面設(shè)計和代碼分析見實例程序。 Private Sub Form_Click
21、() Form1.Caption = 運行程序修改屬性 設(shè)置窗體標題 Label1.BackColor = a, “b=”; b, “c=”; c 輸出結(jié)果 End Sub 程序運行的結(jié)果為: a=2 b=2 c=7,第四章 程序設(shè)計基礎(chǔ),4.3 運算符與表達式,運算是對數(shù)據(jù)進行加工處理的過程。描述各種不同運算關(guān)系的符號,稱為運算符。而參與運算的數(shù)據(jù),則稱為運算量。 表達式由運算符和運算量構(gòu)成,是說明應(yīng)對數(shù)據(jù)進行何種操作的基本語法單位。表達式中的運算量,可以是常量,也可以是變量,還可以是函數(shù)。單個的變量或常量也可以看作是表達式,4.3.1 算術(shù)運算符,算術(shù)運算符是程序中最常用的一種運算符,用來
22、執(zhí)行簡單的算術(shù)運算。在VB中提供的8個算術(shù)運算符,按運算優(yōu)先級順序,如表4.3.1所示。 注意與數(shù)學(xué)中的運算符的區(qū)別,第四章 程序設(shè)計基礎(chǔ),注意:/、Mod的區(qū)別(功能、優(yōu)先級)。例:10/3,103,10 Mod 3 的結(jié)果分別是3.3333,3,1 。 其中, 與 Mod 的操作數(shù)應(yīng)為整數(shù),如為小數(shù),先按四舍五入取整,然后進行運算。其中,Mod運算結(jié)果的正負由被除數(shù)確定。如: Print 5 -5.2 結(jié)果為:-1 Print 4 4.8 結(jié)果為: 0 Print -4 3.8 結(jié)果為: -1 Print -5 Mod 2 結(jié)果為:-1 Print -5 Mod 5.8 結(jié)果為:-5 Pr
23、int 5 Mod -4.2 結(jié)果為: 1 特別注意:小數(shù)尾數(shù)剛好為0.5時的四舍五入?(取四舍五入湊偶法則) 如: Print 12 4.5 Print 8 3.5 X=1.5:y=2.5 (x,y為整型變量) Print x,y 結(jié)果是多少,第四章 程序設(shè)計基礎(chǔ),VB算術(shù)表達式雖然與普通的數(shù)學(xué)表達式極為相似,但還是有所區(qū)別,第四章 程序設(shè)計基礎(chǔ),4.3.2 關(guān)系運算符,關(guān)系運算符也稱比較運算符,用于比較兩個表達式之間的關(guān)系。在VB中共提供了8種關(guān)系運算符,如表所示,Like:比較字符串表達式和SQL表達式的樣式。一般用于數(shù)據(jù)庫查詢 Is:比較兩個對象的引用變量,一般用于對象操作,第四章 程
24、序設(shè)計基礎(chǔ),說明: (1)所有關(guān)系運算具有相同的運算優(yōu)先級。 (2)數(shù)學(xué)不等式:axb,在VB中不能簡單地寫成“a=x=b”,應(yīng)為“a=x And x=b,4.3.3 邏輯運算符,邏輯運算符用于判斷兩個運算量之間的邏輯關(guān)系,其結(jié)果是一個邏輯值。VB提供的6種邏輯運算符,如下表所示,(省略了Eov、Imp,第四章 程序設(shè)計基礎(chǔ),4.3.4 連接運算符,連接運算符的作用是將兩個字符串相連接,以生成一個新的字符串。它有“ x, y=; y End Sub,在VB程序中,直接使用行If語句雖很方便,但當分支的功能比較復(fù)雜且需容納較多語句時,還是存在諸多限制,第五章 程序控制結(jié)構(gòu),5.2.2 塊If語句
25、 塊If語句也稱多行If語句。它有雙分支、單分支和多分支三種形式。其控制流程如圖5.2.2所示,第五章 程序控制結(jié)構(gòu),第五章 程序控制結(jié)構(gòu),1雙分支If 雙分支If語句是塊If語句的最基本形式。其語法格式為: If Then Else End If,在例5.2.1中的行If語句也可用塊If語句改寫為: If x = 0 Then y = x 1 Else y = 2 * x + 5 End If 由此可見,塊If語句在功能上與行If語句完全等價,1、用冒號連接的多條語句 2、多行語句,第五章 程序控制結(jié)構(gòu),例5.2.2 輸入一個學(xué)生的成績,如果高于60分則輸出“及格”,否則,輸出“不及格”。
26、Private Sub Form_Click() Dim score As Integer score = Val(InputBox(請輸入成績:) If score = 60 Then Print 及格 Else Print 不及格 End If Print score=; score End Sub 程序運行結(jié)果,如圖所示,第五章 程序控制結(jié)構(gòu),2單分支If 單分支If語句是塊If語句的最簡單形式。如果省略雙分支中的Else子句,則其格式可簡化為: If Then End If,例5.2.3 輸入兩個整數(shù)a和b,并按從大到小的順序存放。即若a小于b則交換兩個數(shù)的位置,否則直接輸出a和b。
27、Private Sub Form_Click() Dim a As Integer, b As Integer, temp As Integer a = Val(InputBox(請輸入a): b = Val(InputBox(請輸入b) If a b Then temp = a: a = b: b = temp 典型的交換算法,借助第三變量 End If Print a=; a, b=; b End Sub,a=b:b=a 能實現(xiàn)a和b的交換嗎,第五章 程序控制結(jié)構(gòu),3多分支If語句 在If語句的分支中包含If語句,這就構(gòu)成了If的嵌套結(jié)構(gòu),它能夠?qū)崿F(xiàn)多分支功能 。其語法格式為,例5.2.4
28、 輸入學(xué)生成績,并按分數(shù)段確定等級。其中,90分以上為優(yōu),75分以上為良,60分以上為及格,60分以下為不及格。 程序代碼 (見下頁,If Then If Then Else End If Else End If,第五章 程序控制結(jié)構(gòu),Private Sub Form_Click() Dim score As Integer score = Val(InputBox(請輸入成績:) If score = 90 Then Print 優(yōu) Else If score = 75 Then Print 良 Else If score = 60 Then Print 及格 Else Print 不及格
29、End If End If End If Print score=; score End Sub,第五章 程序控制結(jié)構(gòu),If語句的嵌套用法有時顯得過于冗長。為此,在VB中提供了一種帶ElseIf子句的多分支If語句來規(guī)范程序的書寫。其語法格式為: If Then ElseIf Then ElseIf Then Else End If 它的執(zhí)行過程是:按從上到下的順序依次判斷各表達式的值,若某個表達式為真,則執(zhí)行相應(yīng)的語句塊,并跳過剩余的語句;若所有條件表達式都不為真,則執(zhí)行最后的Else語句。其控制流程,如圖5.2.3 (c)所示,第五章 程序控制結(jié)構(gòu),例5.2.4也可用多分支If語句改寫如下
30、: Private Sub Form_Click() Dim score As Integer score = Val(InputBox(請輸入成績:) If score = 90 Then Print 優(yōu) ElseIf score = 75 Then Print 良 ElseIf score = 60 Then Print 及格 Else Print 不及格 End If Print score=; score End Sub,第五章 程序控制結(jié)構(gòu),5.2.3 Select Case語句,Select Case語句也稱情況語句或多分支語句。其語法格式為: Select Case Case C
31、ase Case Case Else End Select,Select Case語句的控制流程,如圖5.2.4所示,第五章 程序控制結(jié)構(gòu),說明: Select Case中的可以是任意數(shù)值表達式或字符串表達式,但通常是一個變量或常量。 Case子句中的,也稱值域。其數(shù)據(jù)類型必須與測試表達一致。當在表達式列表中含有多個表達式時,表達式之間用“,”號分隔。例如,Case 2 , 5 , 8 。 Case子句中的表達式也可用關(guān)鍵字“To”來指定范圍,或用關(guān)鍵字“Is”來引用關(guān)系運算符。例如: Case 10 To 20 Case 25 To 30 , 40 To 50 Case Is = 30 Ca
32、se Is 100 Select Case語句中的Case Else子句也是一個可選項。如果在語句中有Case Else子句,則所有Case子句必須放在Case Else子句之前。 若同一值域范圍在多個Case子句中出現(xiàn),則只會執(zhí)行符合要求的第一個Case子句,第五章 程序控制結(jié)構(gòu),例5.2.5 設(shè)銀行的定期存款利率為:一年期2.52%,二年期3.06%,三年期3.69%,五年期4.14%(不計復(fù)利)。請輸入存款金額,并選擇存款年限,編程計算到期本息合計總值。程序界面如圖所示,Private Sub Command1_Click() Dim money As Single, interest
33、As Single, year As Integer money = Val(Text1.Text) Select Case True Case Option1.Value year = 1:interest = 0.0252 Case Option2.Value year = 2:interest = 0.0306 Case Option3.Value year = 3:interest = 0.0369 Case Option4.Value year = 5:interest = 0.0414 End Select Text2.Text = money * interest * year
34、End Sub,第五章 程序控制結(jié)構(gòu),5.3 循環(huán)結(jié)構(gòu),在程序設(shè)計中,經(jīng)常需要進行一些重復(fù)操作,這就需要用到循環(huán)結(jié)構(gòu),5.3.1 ForNext 循環(huán),ForNext循環(huán)也稱For循環(huán)或計數(shù)循環(huán)。其語法格式為,For循環(huán)的控制流程如圖5.3.1所示,說明: “循環(huán)控制變量”只能是一個數(shù)值型變量。 步長是循環(huán)控制變量的增量,其值可為正數(shù)或負數(shù),如果省略不寫,則默認步長為1,第五章 程序控制結(jié)構(gòu),Exit For語句的作用是退出當前循環(huán),常與條件語句合用。 程序執(zhí)行到Next語句時,循環(huán)控制變量增加一個步長,然后再進入下一次循環(huán)。 如果是單層循環(huán),則Next后面的“循環(huán)控制變量”也可省略不寫,第五
35、章 程序控制結(jié)構(gòu),如何判斷For循環(huán)的次數(shù)呢? 當For循環(huán)運行時,如果循環(huán)變量未被修改且未使用For Exit語句,則循環(huán)的次數(shù)為: n=int(終值-初值)/步長+1) 例如:For i=-3 to 20 step 4 的循環(huán)次數(shù)為多少呢? n=int(20-(-3)/4+1)=6 例如:要使 For i=-3 to _x_ step 4 的循環(huán)次數(shù)為7, 循環(huán)終值x應(yīng)為多少呢? 7=int(x-(-3)/4+1) x可以為:21,22,23,24 通常解的個數(shù)與步長數(shù)相同,也可求初值,第五章 程序控制結(jié)構(gòu),例5.3.1 求 。 Option Explicit Private Sub Fo
36、rm_Click() Dim i As Integer, sum As Integer sum = 0 清零,可以取消嗎? why? For i = 1 To 100 sum = sum + i Next i Print sum=; sum End Sub 程序運行的結(jié)果為: sum = 5050 說明:本例的功能是計算1至100的累加和。其中,i是循環(huán)控制變量,累加和的結(jié)果存放在變量sum中。由于省略了關(guān)鍵字Step,因此,默認步長為1,累加算法,累加數(shù)i的構(gòu)成是關(guān)鍵,第五章 程序控制結(jié)構(gòu),例5.3.2 計算100以內(nèi)(含100)偶數(shù)的累加和。 Option Explicit Private
37、 Sub Form_Click() Dim i As Integer, sum As Integer sum = 0 For i = 2 To 100 Step 2 sum = sum + i Next i Print sum=; sum End Sub 程序運行的結(jié)果為: sum = 2550 思考:如何計算100以內(nèi)奇數(shù)的累加和,第五章 程序控制結(jié)構(gòu),例5.3.3 計算任意正整數(shù)N的階乘,程序代碼如下: Option Explicit Private Sub Command1_Click() Dim i As Integer, n As Integer, s As Long n = Val
38、(InputBox(請輸入一個正整數(shù)N(N=12):) s = 1 置1,why? For i = 1 To n s = s * i Next i Print n; !=; s End Sub 思考:如果取消“s = 1”語句,程序運行結(jié)果會有何不同?如果輸入整數(shù)大于12會產(chǎn)生什么結(jié)果,連乘算法,i的構(gòu)成是關(guān)鍵,第五章 程序控制結(jié)構(gòu),5.3.2 While Wend循環(huán),While Wend循環(huán)的控制流程如圖5.3.2所示。其語法格式為: While 表達式 語句塊 Wend,功能:首先計算表達式的值,若為邏輯真(非0值),則執(zhí)行內(nèi)嵌的“語句塊”(即循環(huán)體)一次;當遇到Wend語句時,控制返回
39、While語句并重復(fù)以上過程;當表達式為假時,則跳過循環(huán)體,執(zhí)行Wend之后的語句,第五章 程序控制結(jié)構(gòu),例5.3.4 使用While Wend循環(huán)重新編寫例5.3.1,計算1至100的累加和。 Option Explicit Private Sub Form_Click() Dim i As Integer, sum As Integer sum = 0 i = 1 While i = 100 sum = sum + i i = i + 1 Wend Print sum=; sum End Sub,第五章 程序控制結(jié)構(gòu),5.3.3 DoLoop循環(huán),DoLoop循環(huán)有前測型循環(huán)結(jié)構(gòu)和后測型循
40、環(huán)結(jié)構(gòu)兩種形式,1前測型循環(huán)結(jié)構(gòu) 前測型循環(huán)結(jié)構(gòu)的語法格式為: Do While | Until 語句塊1 Exit Do 語句塊2 Loop,說明: Do WhileLoop是當型循環(huán)語句。 Do UntilLoop是直到型循環(huán)語句。 Exit Do的作用是退出DoLoop循環(huán),轉(zhuǎn)而執(zhí)行Loop之后的一語句。Exit Do語句常與條件語句合用,以達到提前退出循環(huán)的目的,第五章 程序控制結(jié)構(gòu),例5.3.5 設(shè)銀行一年期定期存款利率為2.52%,則10 000元存款在一年到期后的本利合計為10 252元。若按此方式將本利合計反復(fù)存入銀行,試問多少年后本利合計會翻一番。 Option Explic
41、it Private Sub Form_Click() Dim money As Single, interest As Single, original, n As Integer money = 10000 original = money interest = 0.0252 Do While money original * 2 n = n + 1 money = money * (1 + interest) Loop Print 到第 str;”最后的分號(;),程序的輸入結(jié)果將如何? 若省略外循環(huán)中的“Print”語句,程序的輸出結(jié)果又將如何? 若要打印出如圖5.3.7所示的結(jié)果,程
42、序應(yīng)做何改動?(提示:方法不只一種,第五章 程序控制結(jié)構(gòu),例5.3.9 編寫程序,隨機產(chǎn)生20個兩位素數(shù)。 Private Sub Form_Click() Dim m As Integer, count As Integer, i As Integer, k As Integer Randomize 這個是必須的嗎? Do Until count = 20 m = Int(Rnd * 90) + 10 k = Sqr(m) For i = 2 To k If m Mod i = 0 Then Exit For Next i If i k Then Print m; ; count = cou
43、nt + 1 If count Mod 10 = 0 Then Print End If Loop End Sub程序運行的結(jié)果,如圖5.3.8所示,該題包含三個算法: 1、產(chǎn)生10,99的隨機數(shù); 2、判斷是否素數(shù); 3、每行輸出10個數(shù),思考:隨機產(chǎn)生20個不相同兩位素數(shù),第五章 程序控制結(jié)構(gòu),5.4 程序舉例,VB編程題思路:首先明確題目要求(總功能)是什么? 功能分解:分解為若干個子功能(已知算法)子功能求解(編程):根據(jù)算法編寫分段程序 組合:將各個子功能合為一個完整的程序,例:有50個學(xué)生的成績,每行輸出10個學(xué)生的成績,并求平均分、最高分、最低分,功能分解:1、如何得到(輸入)1
44、0個學(xué)生的成績? (1)隨機產(chǎn)生 (利用Rnd函數(shù)) (2)鍵盤錄入(利用inputbox()函數(shù)輸入) (3)array函數(shù)(數(shù)組用法) )(還未講) (4)文件讀入(文件用法)(還未講) 2、求平均分、最高分、最低分。 (1)求最大(小)值算法。 (2)求平均值算法。 3、每行輸出10個成績,打擂算法,每行按n個數(shù)輸出(t為計數(shù)變量) : 1、If t mod n=0 then print 2、If t mod n=0 then text1 pi End Sub 程序運行的結(jié)果為:pi = 3.141594,注意t的生成,第五章 程序控制結(jié)構(gòu),例5.4.2 請輸出以下斐不拉齊數(shù)列(Fibo
45、nacci)的前40個項。 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 分析:通過觀察可知,數(shù)列的第1、2項為1,其后每項都等于其前兩項之和。則有遞推公式如下: F1=1(n = 1) F2=1(n = 2) Fn=Fn-1+Fn-2(n3) 程序代碼如下: Option Explicit Private Sub Form_Click() Dim f1 As Long, f2 As Long, i As Integer f1 = 1 f2 = 1 For i = 1 To 20 Print f1, f2 f1 = f1 + f2 f2 = f2 + f1 Next i
46、End Sub,第五章 程序控制結(jié)構(gòu),例5.4.3 編寫程序,求兩個正整數(shù)m和n的最大公約數(shù)。程序界面如圖5.4.1所示。 分析:求兩個正整數(shù)的最大公約數(shù)有許多方法,其中,采用輾轉(zhuǎn)相除的算法為: 已知兩個正整數(shù)m、n,且mn; m除以n得余數(shù)r; 若r = 0,則n為最大公約數(shù),算法結(jié)束;否則執(zhí)行步驟; 將n賦值給m,r賦值給n,重復(fù)步驟,第五章 程序控制結(jié)構(gòu),程序代碼如下: Option Explicit Private Sub Command1_Click() Dim m As Integer, n As Integer, r As Integer m = Val(Text1.Text)
47、n = Val(Text2.Text) r = m Mod n While r 0 m = n n = r r = m Mod n Wend Label3.Caption = 最大公約數(shù)為: x, 母雞=; y, 小雞=; z End If Next y Next x End Sub,程序運行的結(jié)果。如圖5.4.2所示。 說明:本例是一個典型的窮舉算法。在程序中,采用一個雙重循環(huán)來窮舉公雞和母雞的所有可能組合,而小雞的數(shù)量由方程(2)直接得到。滿足條件的解,由方程(1)確定,第五章 程序控制結(jié)構(gòu),例5.4.5 編寫程序:當單擊“生成圖形”按鈕后,按用戶指定的首字母和行數(shù),生成如圖5.4.3所示
48、的由大寫字母構(gòu)成的圖形,第五章 程序控制結(jié)構(gòu),程序代碼如下: Option Explicit Private Sub Command1_Click() Dim ch As String, ln As Integer, temp As Integer Dim i As Integer, j As Integer, n As Integer Picture1.Cls ch = UCase(Text1.Text) ln = Val(Text2.Text) n = Asc(ch) - Asc(A) For i = 1 To ln Picture1.Print Tab(15 - i); For j =
49、1 To 2 * i - 1 temp = Asc(A) + n,字符圖形的要點: 1)行數(shù); 2)每行的起始位置; 3)每行數(shù)據(jù)個數(shù)(或字符個數(shù))、間隔、位置與行號之間的關(guān)系,控制行數(shù),控制字符個數(shù),起始位置,第五章 程序控制結(jié)構(gòu),If (temp Asc(Z) Then n = 0 temp = Asc(A) End If Picture1.Print Chr(temp); n = n + 1 Next j Picture1.Print Next i End Sub,說明: 圖形中的字符按字母順序循環(huán)排列,即到字母“Z”時,再回到“A”重新循環(huán)。當前字符的ASCII碼值為“temp = A
50、sc(A) + n”,其中,n為相對于字母“A”的偏移。 三角形圖案由一個雙重For循環(huán)實現(xiàn)。其中,外循環(huán)控制打印行數(shù),內(nèi)循環(huán)控制每行的打印字符個數(shù);每行的打印起點由“Picture1.Print Tab(15 - i);”語句控制,在內(nèi)外循環(huán)之間的“Picture1.Print”實現(xiàn)換行功能,換行,輸出其它形式的圖形呢,第五章 程序控制結(jié)構(gòu),例5.4.6 進制轉(zhuǎn)換。任意輸入一個十進制整數(shù),單擊“轉(zhuǎn)換”按鈕后,將該數(shù)轉(zhuǎn)換為指定進制的數(shù)。程序界面,如圖5.4.4所示,第五章 程序控制結(jié)構(gòu),程序代碼如下: Option Explicit Private Sub Command1_Click() D
51、im num As Integer, base As Integer, r As Integer num = Val(Text1.Text) Text2.Text = Select Case True Case Option1.Value base = 2 Case Option2.Value base = 8 End Select Do While num 0 r = num Mod base num = num base Text2.Text = LTrim(Str(r) Next i Print For i = 9 To 0 Step -1 按逆序輸出 Print a(i); Next
52、i End Sub 程序運行的結(jié)果,如圖6.2.1所示,注意掌握數(shù)組的輸入和輸出,第六章 數(shù)組,例6.2.2 編寫程序。從鍵盤任意輸入10個整數(shù),按從大到小的順序排序后輸出。 分析:排序是程序設(shè)計中最基本的問題之一。在本例中介紹最簡單、最直觀的排序方法選擇排序法。其基本思想是:首先,以第一個數(shù)為標準并把它與后面的數(shù)逐個比較,如果找到了更大的數(shù),則與第一個數(shù)交換位置。這樣,在完成一次循環(huán)后,就可以找到所有數(shù)中最大的數(shù)并存入第一個位置;然后,再以第二個數(shù)為標準,并在其余剩下的數(shù)中找出次大的數(shù),存入第二個位置, 以此類推,直到排序完成,第六章 數(shù)組,Private Sub Form_Click()
53、Dim i As Integer, j As Integer, temp As Integer Dim a(10) As Integer 省略了輸入 For i = 1 To 9 選擇法排序 For j = i + 1 To 10 If a(i) a(j) Then 如果aiaj,則交換位置 temp = a(i) a(i) = a(j) 交換算法 a(j) = temp End If Next j Next i 省略了輸出 End Sub,思考:如果要按從小到大的順序排序,應(yīng)如何修改程序,第六章 數(shù)組,3數(shù)組初始化 為數(shù)組中的各個元素賦初值稱為數(shù)組初始化。在VB中,除了在定義數(shù)組時,系統(tǒng)會自
54、動將數(shù)值型數(shù)組元素初始化為0,將字符型數(shù)組元素初始化為空字符串外,還提供了專門的Array函數(shù),用于在程序運行中對數(shù)組進行初始化。其語法格式為: 數(shù)組變量名 = Array(數(shù)組元素值) 說明: 格式中的“數(shù)組變量名”是一個預(yù)先定義的數(shù)組,且這個數(shù)組只能是一維數(shù)組。 使用Array函數(shù)進行初始化的數(shù)組只能是變體(Variant)類型。 多個“數(shù)組元素值”之間用逗號分隔。若不提供參數(shù),則創(chuàng)建一個長度為0的數(shù)組,第六章 數(shù)組,例6.2.3 編寫程序。測試Array函數(shù)的操作。 Private Sub Form_Click() Dim a As Variant a = Array(1, 2, 3,
55、4, 5) For i = 0 To 4 Print a(i), Next i Print b = Array(One, Two, Three) For i = 0 To 2 Print b(i), Next i End Sub,說明:在該例中用Array函數(shù)對兩個數(shù)組進行了初始化。其中,變量a被顯示定義為變體(Variant)類型;變量b未經(jīng)定義,VB默認為變體(Variant)類型,第六章 數(shù)組,6.2.2 二維數(shù)組 簡單的數(shù)據(jù)可以直接用一維數(shù)組進行處理,如果是更復(fù)雜的二維或多維數(shù)據(jù),則需要使用二維數(shù)組或多維數(shù)組。 1二維數(shù)組的定義 語法格式為: Dim 數(shù)組名(下界 to 上界1, 下界
56、2 To 上界2)As 類型,兩維之間逗號分開,功能:定義一個二維數(shù)組。該數(shù)組的大小為每維元素個數(shù)的乘積,2二維數(shù)組的引用和賦值 引用二維數(shù)組元素的語法格式為: 數(shù)組名(下標1,下標2,注意:定義數(shù)組時,下界可省,上界不能,第六章 數(shù)組,例6.2.4 編寫程序。將二維數(shù)組a中的元素行列互換,并存入另一數(shù)組b中。即形成如下結(jié)果,程序代碼如下: Option Explicit Option Base 1 Private Sub Command1_Click() Dim a(3, 3) As Integer, b(3, 3) As Integer Dim i As Integer, j As Int
57、eger For i = 1 To 3 為數(shù)組a賦值并顯示在Picture1中 For j = 1 To 3 a(i, j) = (i - 1) * 3 + j Picture1.Print a(i, j); Next j Picture1.Print Next i,第六章 數(shù)組,For i = 1 To 3 將數(shù)組a轉(zhuǎn)置為數(shù)組b For j = 1 To 3 b(i, j) = a(j, i) Next j Next i For i = 1 To 3 將數(shù)組b顯示在Picture2中 For j = 1 To 3 Picture2.Print b(i, j); Next j Picture2
58、.Print Next i End Sub,程序運行的結(jié)果,如圖6.2.3所示,注意下標的位置變化,第六章 數(shù)組,6.3 動態(tài)數(shù)組,可以改變數(shù)組大小、維數(shù)的數(shù)組稱為動態(tài)數(shù)組,在創(chuàng)建數(shù)組時,如果只聲明數(shù)組的名稱和類型,但不指定上下界,這樣就聲明了一個動態(tài)數(shù)組。 其語法格式為: Dim 數(shù)組名( ) As 數(shù)據(jù)類型,在定義了動態(tài)數(shù)組之后,就可以在程序中通過ReDim語句來重新定義數(shù)組的大小。其語法格式為: ReDim Preserver 數(shù)組名( 下界To 上界 , As 數(shù)據(jù)類型,這時是不能使用的,說明: ReDim語句是一個可執(zhí)行語句,只能放在過程中。 如果在ReDim語句中有Preserve
59、r選項,則VB將保留原數(shù)組中的數(shù)據(jù)。如果省略Preserver選項,則VB將重置數(shù)組元素的內(nèi)容,第六章 數(shù)組,只能用ReDim語句修改動態(tài)數(shù)組的大小。如果用ReDim語句修改靜態(tài)數(shù)組的大小,則是一種語法錯誤。 使用ReDim語句可以反復(fù)修改同一數(shù)組的大小。但使用ReDim語句會占用大量處理時間,影響運行效率。 在聲明動態(tài)數(shù)組時并不需要指定其維數(shù)。動態(tài)數(shù)組的維數(shù)由第一次出現(xiàn)的ReDim語句指定,且不可修改。 在VB程序中,動態(tài)數(shù)組的使用十分方便、靈活,可以有效地利用存儲空間。例如,在程序中,當需要短時間使用一個大數(shù)組時可以根據(jù)需要定義一個動態(tài)數(shù)組,然后,在使用完成后再釋放該數(shù)組所占存儲空間,例6
60、.3.1 編寫程序。輸出楊輝三角形,如圖6.3.1所示。其中,圖形的行數(shù)不超過15行,由用戶從鍵盤輸入。 程序代碼如下: Private Sub Command1_Click() Dim a() As Integer Dim i As Integer, j As Integer, n As Integer,第六章 數(shù)組,Do n = Val(InputBox(請輸入行數(shù)(1-15):) Loop Until n = 1 And n = 15 ReDim a(n, n) 指定動態(tài)數(shù)組的大小 For i = 1 To n For j = 1 To i If j = 1 Or j = i Then
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 游戲產(chǎn)業(yè)中知識產(chǎn)權(quán)的保護與運營
- 環(huán)境科學(xué)與生態(tài)旅游業(yè)的可持續(xù)發(fā)展策略研究
- 生產(chǎn)現(xiàn)場應(yīng)急救援設(shè)備的使用與維護
- Unit 2 My school things 第一課時 Get ready(說課稿)-2024-2025學(xué)年外研版(三起)(2024)英語三年級上冊
- 海外知識產(chǎn)權(quán)布局策略與實務(wù)操作
- 《一袋空氣的質(zhì)量是多少》(說課稿)2023-2024學(xué)年教科版科學(xué)三年級上冊
- 環(huán)境科學(xué)在城市建設(shè)中的作用
- 用戶體驗為中心的電信服務(wù)質(zhì)量評價模型
- 2023六年級語文下冊 第三單元 交流平臺 初試身手配套說課稿 新人教版
- 生產(chǎn)車間事故案例分析與警示教育
- 貨運車輛駕駛員安全培訓(xùn)內(nèi)容資料完整
- 高一學(xué)期述職報告
- 風(fēng)神汽車4S店安全生產(chǎn)培訓(xùn)課件
- ICU患者的體位轉(zhuǎn)換與床旁運動訓(xùn)練
- 人教版四年級上冊豎式計算200題及答案
- 建設(shè)工程工作總結(jié)報告
- 脾破裂術(shù)后健康宣教課件
- 三廢環(huán)保管理培訓(xùn)
- 財務(wù)管控的間接成本
- 藏族唐卡藝術(shù)特色分析
- QFD模板含計算公式計分標準說明模板
評論
0/150
提交評論