




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Visual Basic 程序設(shè)計 (6.0版),皖南醫(yī)學(xué)院計算機教研室 畢迎春,1,2,課程要求,期末考核要求:理論考試 期末評分比例: 平時成績 30 % +期末成績70 %,3,第一章 Visual Basic程序設(shè)計概述,1.1 概述 1.2 運行環(huán)境、安裝和啟動 1.3 VB集成開發(fā)環(huán)境,4,1.1概述 一、VB簡介: Visual Basic是基于Basic的可視化的程序設(shè)計語言。 Visual Basic 6.0中文版是Microsoft公司最新推出的可視化開發(fā)工具,是一種基于Windows操作系統(tǒng)的新型的現(xiàn)代程序設(shè)計語言,是一種易于學(xué)習(xí)、功能強、效率高的編程工具。任何具有初步程
2、序設(shè)計基礎(chǔ)的人,都能在很短的時間內(nèi)掌握好VB,并有效地編寫出各種Windows程序。 VB6.0包括三個版本:學(xué)習(xí)版、專業(yè)版、企業(yè)版,5,二、VB主要功能特點: 1. 具有面向?qū)ο蟮目梢暬O(shè)計工具 2. 事件驅(qū)動的編程機制 3. 提供了易學(xué)易用的應(yīng)用程序集成開發(fā)環(huán)境 4. 結(jié)構(gòu)化的程序設(shè)計語言 5.支持多種數(shù)據(jù)庫系統(tǒng)的訪問 6.OLE技術(shù)。VB核心就是其對對象的鏈接與嵌入(OLE)的支持。 7.Active技術(shù) 8.完備的help聯(lián)機幫助功能 三、VB6.0新功能特點,6,1.2運行環(huán)境、安裝和啟動 一、運行環(huán)境: 二、安裝: 安裝文件:setup.exe 三、啟動: 方法:1、雙擊桌面VB快
3、捷方式。 2、“開始”程序Microsoft Visual Studio 6.0| Microsoft Visual Basic 6.0 3、 “開始”運行C:program files Microsoft Visual Studio VB98VB6.exe,7,進入VB6.0窗口,8,1.3 VB集成開發(fā)環(huán)境,9,1.主窗口 應(yīng)用程序窗口,由標(biāo)題欄、菜單欄和工具欄組成,VB的三種工作模式(標(biāo)題欄總顯示當(dāng)前模式) (1)設(shè)計模式:創(chuàng)建應(yīng)用程序的大多數(shù)工作都是在設(shè)計時完成的。在設(shè)計時,可以設(shè)計窗體、繪制控件、編寫代碼并使用“屬性”窗口來設(shè)置或查看屬性設(shè)置值。 (2)運行模式:代碼正在運行的時期,
4、用戶可與應(yīng)用程序交流??刹榭创a,但不能改動它。 (3)中斷模式:程序在運行的中途被停止執(zhí)行時。在中斷模式下,用戶可查看各變量及不是屬性的當(dāng)前值,從而了解程序執(zhí)行是否正常。還可以修改程序代碼,檢查、調(diào)試、重置、單步執(zhí)行或繼續(xù)執(zhí)行程序。,10,2.窗體(Form)設(shè)計窗口,窗體設(shè)計窗口是屏幕中央的主窗口,它可以作為自定義窗口用來設(shè)計應(yīng)用程序的界面。用戶可以在窗體中添加控件、圖形和圖片來創(chuàng)建所希望的外觀。每個窗口必須有一個的窗體名字,建立窗體時缺省名為Form1,Form2, . . .。 窗體網(wǎng)格點間距的設(shè)置:設(shè)計模式-”工具” ”選項” 應(yīng)注意窗體名(代碼中使用的標(biāo)識對象名稱)和窗體文件名的區(qū)
5、別,11,12,3.代碼(code)窗口,在設(shè)計模式中,通過雙擊窗體或窗體上任何對象或通過“工程資源管理器”窗口中的“查看代碼”按鈕來打開代碼編輯器窗口。代碼編輯器是輸入應(yīng)用程序代碼的編輯器。 代碼窗口主要包括: a.對象列表框 b.過程列表框 c.代碼框 d.過程查看按鈕 e.全模塊查看按鈕,13,14,4. 屬性(properties)窗口,屬性是指對象的特征,如大小、標(biāo)題或顏色等數(shù)據(jù)。在Visual Basic6.0設(shè)計模式中,屬性窗口列出了當(dāng)前選定窗體或控件的屬性的值,用戶可以對這些屬性值進行設(shè)置。,15,工程是指用于創(chuàng)建一個應(yīng)用程序的文件的集合。工程資源管理器列出了當(dāng)前工程中的窗體和
6、模塊,5. 工程資源管理器(project explorer)窗口,16,工程文件的擴展名為.VBP 工程資源管理器下面的列表窗口,以層次列表形式組成這個工程的所有文件。 主要包括三種類型的文件: 窗體文件(.FRM)存儲窗體上使用的所有控件對象和有關(guān)的屬性、對象相應(yīng)的事件過程、程序代碼。 標(biāo)準(zhǔn)模塊文件(.BAS)所有模塊級變量和用戶自定義的通用過程(可以被應(yīng)用程序各處調(diào)用的過程) 類模塊文件(.CLS)包含用戶對象的屬性及方法。,17,工具箱提供一組工具,用于設(shè)計時在窗體中放置控件生成應(yīng)用程序的用戶接口。系統(tǒng)啟動后缺省的General工具箱就會出現(xiàn)在屏幕左邊,上面有常用“部件”,6. 工具箱
7、(ToolBox)窗口,18,定制工具箱 添加選項卡: 對添加的選項卡加控件的方法: (1)在已有的選項卡中拖動所需控件 (2) 激活選項卡-”工程”-“部件”,19,窗體布局窗口顯示在屏幕右下角。用戶可使用表示屏幕的小圖像來布置應(yīng)用程序中各窗體的位置。這個窗口在多窗體應(yīng)用程序中很有用,因為這可以指定每個窗體相對于主窗體的位置。,7窗體布局窗口,20,立即窗口:中斷模式中調(diào)試應(yīng)用程序。 對象瀏覽窗口:可查看工程定義的模塊或過程,也可查看對象庫、類型庫、類、方法、屬性及可在過程中使用的常數(shù)。,21,第二章 簡單的VB程序設(shè)計,2.1 程序設(shè)計方法的發(fā)展 2.2 對象的概念 2.3 建立簡單的應(yīng)用
8、程序 2.4窗體和基本控件 2.5工程的管理及環(huán)境設(shè)置 2.6制作成安裝盤 2.7使用幫助系統(tǒng),22,2.1 程序設(shè)計方法的發(fā)展,1.初期的程序設(shè)計 高運行效率、少占用內(nèi)存為目標(biāo) 2.結(jié)構(gòu)化程序設(shè)計 程序的可讀性、可維護性為目標(biāo) 程序=算法+數(shù)據(jù)結(jié)構(gòu) 的面向過程的程序設(shè)計 3.面向?qū)ο蟮某绦蛟O(shè)計(OOP) 降低程序的復(fù)雜性、提高軟件的開法效率和改善工作界面為目標(biāo) 程序=對象+消息 的面向?qū)ο蟮某绦蛟O(shè)計,23,結(jié)構(gòu)化的分解突出過程(How to do?) 面向?qū)ο蟮姆纸馔怀稣鎸嵤澜绾统橄蟮膶ο螅╓hat to do?) 目前常用的面向?qū)ο笳Z言有:Visual Basic、Visual C+、Vi
9、sual FoxPro等 優(yōu)點 a.符合人們的思維方法 b.易于軟件的維護和功能的增減 c.能用繼承的方式減短程序開發(fā)時間 d.與可視化技術(shù)結(jié)合,改善了工作界面,24,2.2 對象的概念,一、對象和類 1、類:是創(chuàng)建對象實例的模板,是同種對象的集合與抽象, 包含了創(chuàng)建對象的屬性描述和行為特征的定義. 2、對象: 是類的一個實例,繼承了類的屬性、方法。 Vb中常用的對象有:窗體、控件等。 3、控件:以圖標(biāo)的形式放在工具箱中。VB中的控件分為三類: 內(nèi)部控件(標(biāo)準(zhǔn)控件):如工具箱上的控件,20個 ActiveX控件:“工程/部件”命令加載 可插入對象:Windows應(yīng)用程序的對象,如Excel工作
10、表。 二、對象的建立和編輯: 1、對象的建立:兩種方法 2、對象的選定:單選、多選 3、復(fù)制或刪除對象 4、對象的命名,25,三、對象的三要素:屬性、事件和方法 (1)屬性 對象的性質(zhì),即用來描述和反映對象特征的參數(shù)。 (2)事件 對象的響應(yīng)稱為事件,它發(fā)生在用戶與應(yīng)用程序交互時。如單擊控件、鼠標(biāo)移動、鍵盤按下等。 事件過程 指附在該對象上的用戶編寫的程序代碼,是事件的處理程序。 事件驅(qū)動過程 是圖形用戶界面的本質(zhì),由用戶控制而代碼作出響應(yīng)。,26,VB程序執(zhí)行步驟:,啟動應(yīng)用程序,裝載和顯示窗體 窗體(或窗體上的控件)等待事件的發(fā)生 事件發(fā)生時,執(zhí)行對應(yīng)的事件過程 重復(fù)執(zhí)行(2)和(3),直
11、到遇到“END”結(jié)束語句結(jié)束程序的運行或單擊“結(jié)束”按鈕強制停止程序的運行,27,(3)方法 對象的動作,即將一些通用的過程編寫好并封裝起來,作為方法供用戶直接調(diào)用。,對象方法的調(diào)用格式: 對象.方法參數(shù)名表 例如:在窗體上顯示一行文字。 Form1.Print ”歡迎使用Visual Basic6.0”,28,2.3 建立簡單的應(yīng)用程序,設(shè)計一個VB應(yīng)用程序的通用步驟: 1.設(shè)計用戶界面的對象 2.設(shè)置對象的屬性 3.編寫對象事件代碼 4.保存文件 5.程序運行和調(diào)試 (解釋執(zhí)行: 或 “運行|啟動” 或 按F5) 6.建立可執(zhí)行文件。 (編譯運行:“文件”|“生成exe”),29,例2.1
12、 編寫一個對輸入字符進行轉(zhuǎn)換的程序,轉(zhuǎn)換規(guī)則為:將其中的大寫字母轉(zhuǎn)換成小寫字母,小寫字母轉(zhuǎn)換成大寫字母,空格不轉(zhuǎn)換,其余轉(zhuǎn)換成“*”。 要求每輸入一個字符,馬上就進行判斷和轉(zhuǎn)換。,30,Private Sub Text1_KeyPress(KeyAscii As Integer) Dim aa As String * 1 aa = Chr$(KeyAscii) Select Case aa Case a To z aa = Chr$(KeyAscii - 32) Case A To Z aa = Chr$(KeyAscii + 32) Case Case Else aa = * End Sel
13、ect Text2.Text = Text2.Text 為0 去除剛輸入的字符. LostFocus : 當(dāng)控件失去焦點時發(fā)生. GotFocus : 當(dāng)控件獲得焦點時發(fā)生. 3.常用方法 對象.SetFocus: 是把光標(biāo)移到指定的文本框?qū)ο笾?即設(shè)置焦點)。 4.文本框的應(yīng)用 數(shù)據(jù)過濾 例2.7 要求輸入合法的數(shù)字?jǐn)?shù)據(jù)。當(dāng)輸入結(jié)束時(按Tab鍵),對于輸入正確的數(shù)據(jù),顯示正確信息;對輸入的非數(shù)字?jǐn)?shù)據(jù),則響鈴(Beep)、顯示錯誤信息、清除文本框中的內(nèi)容,并使焦點重新回到文本框。 Text2_ LostFocus 當(dāng)輸入結(jié)束按Tab鍵時,該事件激發(fā) IsNumeric(Text2) : 判斷
14、是否輸入非數(shù)字?jǐn)?shù)據(jù). Text2.SetFocus : 使焦點重新回到文本框 書上例子:P32,42,五.命令按鈕CommandButton 功能:接受用戶輸入的命令。 輸入命令可以有三種方式: 鼠標(biāo)單擊 Tab鍵焦點到該按鈕 快捷鍵 1. 屬性:P33 Caption: 命令按鈕顯示的內(nèi)容,可設(shè)置快捷鍵,例 String(6 - i, ); _ Spc(6); String(i, ) Next i End Sub,48,2、cls方法,形式:對象.cls (如:picture.cls) 作用:用于清除運行時在窗體或圖形框中顯示的文本或圖形。 注意: (1)cls方法只清除運行時在窗體或圖形框
15、中顯示的文本或圖形,不清除窗體在設(shè)計時的文本或圖形。 (2)cls方法使用后, currentx和currenty屬性被設(shè)置為0。,49,3、move方法,形式: 對象.move 左邊距離,上邊距離,寬度,高度 作用:用于移動窗體或控件,并可改變其大小。 對象:可以是窗體及除時鐘、菜單外的所有控件,省略對象為窗體。如果對象是窗體,則“左邊距離”和“上邊距離”以屏幕左邊界和上邊界為準(zhǔn),否則以窗體的左邊界和上邊界為準(zhǔn),寬度和高度表示可改變其大小。,50,例2-10,Private Sub Form_Load() Image1.Top = 0 Image1.Left = 0 Image1.Pictu
16、re = LoadPicture(App.Path + 1.gif) End Sub Private Sub Image1_Click() Image1.Move (Form1.Left + Form1.Width) 2 - Form1.Left,(Form1.Top + Form1.Height) 2 - Form1.Top,Image1.Width 2, Image1.Height 2 End Sub,51,七、應(yīng)用舉例,例2-11:根據(jù)房產(chǎn)商提供的信息,購房者選擇房型、面積、單價、按揭期等信息,編寫計算每月支付貸款的程序。 程序由兩個窗體構(gòu)成,第一個窗體輸入或選擇買房的數(shù)據(jù),該窗體由列表
17、框選擇數(shù)據(jù)、標(biāo)簽顯示數(shù)據(jù)、文本框輸入數(shù)據(jù);第二個窗體顯示房屋的平面圖,該窗體僅有一個圖形控件。,52,2.5 工程的管理,一、工程的組成 工程文件包含了一個應(yīng)用程序的所有文件: 工程文件(.vbp): 工程組文件(.vbg): 窗體文件(.frm):控件及屬性、事件過程和自定義過程 窗體的二進制數(shù)據(jù)文件(.frx),自動產(chǎn)生同名.frx文件。 標(biāo)準(zhǔn)模塊文件(.bas) 類模塊文件(.cls) 資源文件(.res) ActiveX控件的文件(.ocx) 二、創(chuàng)建、打開和保存工程:“文件”菜單,53,三.添加、刪除和保存文件:可利用“文件”和“工程”菜單 1、窗體名和窗體文件名概念 窗體名:窗體的
18、Name屬性, 在代碼中用來引用該窗體,同一 工程不能有相同的窗體名; 窗體文件名:窗體存放在磁盤上的文件名,該文件包含了該窗體的所有控件屬性和代碼,同一文件夾不能有相同的文件名。 2、在工程中添加現(xiàn)存的窗體時,只是對該窗體文件的引用納入工程。因此,如果更改窗體并保存它,會影響包含此窗體文件的任何工程。 3、在工程中刪除窗體時,僅將此窗體從工程里刪除掉,但是窗體文件仍存在于磁盤上。但是,如果在VB之外刪除一個窗體文件,VB不能更新此工程文件,當(dāng)打開此工程時,將顯示一個文件丟失的錯誤信息。,54,四、環(huán)境設(shè)置,“工具”選項” 1.”編輯器”選項卡 2、“通用”選項卡,4、對窗體文件改名方法: 在
19、“工程資源管理器”中-右擊窗體文件-“Form另存為” 5、保存窗體文件:若只想保存窗體文件而不保存工程文件,可直接在“工程資源管理器”中選定,然后執(zhí)行“文件”菜單中的相應(yīng)選項。,55,2.6 制作成安裝盤,2.6.1 使用打包和展開向?qū)?打包:把工程中用到的各種類型的文件(包括工程自身的文件、必要的系統(tǒng)文件和安裝主文件)進行打包壓縮后,存放到特定的目錄下。 展開:把打包的文件展開到用戶可以攜帶的用來安裝的軟盤、光盤等介質(zhì)。 管理腳本:記錄打包或展開過程中的設(shè)置,便于以后做同樣的操作。 系統(tǒng)的壓縮文件以.cab擴展名保存。 2.6.2 檢測安裝程序,56,第三章 VB語言基礎(chǔ),3.1 編碼基礎(chǔ)
20、 3.2 數(shù)據(jù)類型 3.3 常量與變量 3.4 運算符和表達(dá)式 3.5 基本語句 3.6 數(shù)組 3.7 過程 3.8 常用算法舉例 3.9 程序調(diào)試,57,3.1 編碼基礎(chǔ),一、書寫要求: 1.VB代碼不區(qū)分字母的大小寫 系統(tǒng)關(guān)鍵字自動轉(zhuǎn)換每個單詞的首字母大寫; 用戶自定義行以第一次為準(zhǔn) 2.語句書寫自由 一行可書寫幾個語句,之間用冒號分隔;一行最多255個字符; 一條語句可分若干行書寫,用續(xù)行符 (空格+下劃線)連接 3.注釋有利于程序的維護和調(diào)試 Rem 或 單撇號“” 以及“編輯”工具欄的“設(shè)置注釋塊”; VB中注釋語句會自動變?yōu)榫G色 4.保留行號與標(biāo)號 5.其他注意事項:保留字與變量之
21、間至少有一空格; 字母“l(fā)”與數(shù)字“1”、字母“o”與數(shù)字“0”的使用。,58,3.2 數(shù)據(jù)類型,一、 標(biāo)準(zhǔn)數(shù)據(jù)類型:,59,1、數(shù)值數(shù)據(jù)類型: Integer Long Single Double Currency Byte,(1)Integer和Long型用于保存整數(shù) (2)Single和Double型用于保存浮點實數(shù) (3)Currency型是定點實數(shù)或整數(shù) (4)Byte字節(jié)型用于存儲二進制數(shù),60,2、日期(Date)數(shù)據(jù)類型 按8字節(jié)浮點數(shù)來存儲。 日期范圍:公元100年1月1日9999年12月31日 時間范圍:0:00:00 23:59:59 表示方法:一般日期形式前后加來表示
22、另一種是以數(shù)字序列表示日期和時間 (1)一般日期表示法:使用成對#將任何可被認(rèn)作日期和時間的字符括起來。公元年份默認(rèn)19年,因而填入1995年與填入95年效果一樣,但年的部分輸入029間的數(shù)字,則VB自動轉(zhuǎn)換為20 年。例如:#5/25/24#與#5/25/2024#等價。 而#5/25/95#,#May 25,95#,#May-25-95#, #25 May 1995#, #1995 May 25#等均為合法日期格式。,61,(2)數(shù)字序列表示法 數(shù)字序列是雙精度的浮點數(shù),由VB自動解釋。序號的整數(shù)部分表示日期,小數(shù)部分表示時間。 在VB中,基準(zhǔn)日期為公元1899年12月30日,這一天的整數(shù)
23、部分為0,比基準(zhǔn)早的日期序號為負(fù)數(shù),比其晚的日期序號為正數(shù),其取值范圍為657434(公元100年1月1日)到2958465(公元9999年12月31日)。小數(shù)部分:以某個時間點占一天24小時的比例表示。如:6:00 AM會以0.25來表示。 -2.5 表示1899-12-28 12:00:00 5.75表示1900-1-4 18:00:00 366.05表示1900-12-31 1:12:00 367.05表示1901-1-1 1:12:00 -367.05表示1898-12-28 1:12:00,62,3、邏輯(布爾型)數(shù)據(jù)型:Boolean 當(dāng)邏輯型轉(zhuǎn)換成整型數(shù)據(jù)時:true (-1)
24、false(0) 當(dāng)其他類型數(shù)據(jù)轉(zhuǎn)換成邏輯數(shù)據(jù)時: 非0數(shù)轉(zhuǎn)換為true, 0轉(zhuǎn)換為false 4、字符串型:String “” 5、對象數(shù)據(jù)類型:Object 作為32位(4個字節(jié))地址來存儲,63,6、變體類型:Variant 是所有未定義的變量的缺省數(shù)據(jù)類型,它可以包括標(biāo)準(zhǔn)數(shù)據(jù)類型,還包含四個特殊的數(shù)據(jù): empty(空)表示未指定確定的數(shù)據(jù) null(無效)表示數(shù)據(jù)不合法 Error(出錯)指出過程中出現(xiàn)了一個錯誤條件 Nothing(無指向)表示數(shù)據(jù)還沒有指向一個具體對象 Vartype:檢測變體型變量中保存的數(shù)值類型 如: dim t Vartype(t) 或Vartype(667
25、),64,二、自定義類型 讓用戶自己定義的數(shù)據(jù)類型,由若干個標(biāo)準(zhǔn)數(shù)據(jù)類型組成。是一組不同類型變量的集合。相當(dāng)于C語言中的結(jié)構(gòu)類型;Pascal中的記錄類型。 1.自定義類型的定義 形式如下: Type 自定義類型名 元素名(下標(biāo)) As 類型名 元素名(下標(biāo)) As 類型名 End Type 其中:元素名:表示自定義類型中的一個成員 下標(biāo):表示數(shù)組 類型名:為標(biāo)準(zhǔn)類型,65,例如,以下定義了一個有關(guān)學(xué)生信息的自定義類型: Type StudType No As Integer 學(xué)號 Name As String * 20 姓名 Sex As String * 1 性別 Mark(1 To 4)
26、 As Single 4門課程成績 Total As Single 總分 End Type 注意: (1)自定義類型一般在標(biāo)準(zhǔn)模塊(.BAS)中定義,默認(rèn)是Public;在窗體必須是Private。 (2)自定義類型中的元素類型可以是字符串,但應(yīng)是定長字符串。 (3)不要將自定義類型名和該類型的變量名混淆,前者表示了如同Integer、Single等的類型名,后者VB根據(jù)變量的類型分配所需的內(nèi)存空間,存貯數(shù)據(jù)。 (4)自定義類型一般和數(shù)組結(jié)合使用,簡化程序的編寫。,66,2自定義類型變量的聲明和使用 (1) 聲明形式: Dim 變量名 As 自定義類型名 例 Dim Student As St
27、udType (2) 引用: 形式:變量名.元素名 例 表示Student變量中的姓名,第4門課程的成績,則表示如下: Student.Name,Student.Mark(4) (3) 賦值: 如:Student.Name=“王剛” Student.Mark(4)=98,67,3.3 常量與變量,一.常量和變量的命名規(guī)則 常量:在程序運行中其值不可以改變。 變量:在程序運行中其存儲的值可以改變。 命名規(guī)則: 1.以字母或漢字開頭,后可跟漢字、字母、數(shù)字或下劃線組 合,長度小于等于255個字符; 2.不能使用VB中的關(guān)鍵字; 3.VB中不區(qū)分變量名的大小寫. 4.為了增加程序的可讀性,可在變量名
28、前加一個縮寫的前綴來表明該變量的數(shù)據(jù)類型。如:strMystring、intCount,68,VB6.0的關(guān)鍵字有: As Binary ByRef ByVal Date Else Empty Error False For Friend Get Input Is Len Let Lock Me Mid New Next Nothing Null On Option Optional ParamArray Print Private Property Public Resume Seek Set Static Step String Then Time To True WithEvents,6
29、9,二. 常量 (一)直接常量 有數(shù)值常量(整數(shù)、長整數(shù)、定點數(shù)和浮點數(shù))、字符串常量、布爾常量、日期常量 (二)符號常量 1. 系統(tǒng)提供的常量 系統(tǒng)定義常量位于對象庫中,可通過“對象瀏覽器”查看. 例: vbNormal 、 vbMinimized、vbMaximized、vbblue等 form1.windowsstate=vbmaximized 將窗口極大化 form1.windowsstate=2 與上面的語句等價的,70,2. 用戶聲明常量 形式: Const 常量名 AS 類型 = 表達(dá)式 省略 AS 類型 ,常量的類型由表達(dá)式值的類型決定,也可在常量后加類型符。 表達(dá)式:可以是數(shù)
30、值常數(shù)、字符串常數(shù)以及由運算符組成的表達(dá)式。對于數(shù)值常數(shù)除了可用十進制表示外,還可以使用十六進制數(shù)(數(shù)值前加 若密碼錯,顯示有關(guān)信息,選擇“重試”按鈕,清除原內(nèi)容再輸入,選擇“取消”按鈕,停止運行。 分析: 帳號6位,MaxLength為6 , LostFocus判斷數(shù)字IsNumeric函數(shù) 密碼PassWordChar為“*”,MsgBox函數(shù)設(shè)置密碼錯對話框.,92,3.5.3 選 擇 結(jié) 構(gòu) 1. IfThen語句(單分支結(jié)構(gòu)) If Then 語句塊 End If 或 If Then ,例:已知兩個數(shù)x和y,比較它們的大小,使得x大于y. If xy Then t=x x=y y=t
31、 End If 或 If xy Then t=x: x=y: y=t,93,2. IfThenElse語句(雙分支結(jié)構(gòu)) (1) If Then Else End If (2)If Then Else 計算分段函數(shù),單分支結(jié)構(gòu)實現(xiàn): if x=0 then y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr (x*x+1),雙分支結(jié)構(gòu)實現(xiàn): If x0 Then y=sin(x)+sqr (x*x+1) Else y=cos(x)x3+3*x End If,94,3. IfThenElseIf語句(多分支結(jié)構(gòu)) 形式: If Then ElseIf Then Else
32、 語句塊 n+1 End If,95,例 已知變量strC中存放了一個字符,判斷該字符是字母字符、數(shù)字字符還是其他字符。 用多分支結(jié)構(gòu)實現(xiàn): If Ucase(strC) =A And Ucase (strC) =0 And strC =9 Then Print strC + 是數(shù)字字符 Else Print strC + 其他字符 End If,不管有幾個分支,依次判斷,當(dāng)某條件滿足,執(zhí)行相應(yīng)的語句,其余分支不再執(zhí)行;若條件都不滿足,且有Else子句,則執(zhí)行該語句塊,否則什么也不執(zhí)行。. ElseIf不能寫成 Else If。,96,例 已知百分制成績mark,顯示對應(yīng)的五級制成績 哪些正確
33、,哪些錯誤?,正確:方法一、二錯誤:方法三,97,4If語句的嵌套 If語句的嵌套是指If或Else后面的語句塊中又包含If語句。 形式如下: If Then If Then End If End If,例 已知x,y,z三個數(shù),使得xyz 用一個IF語句和一個嵌套的IF語句實現(xiàn),If xy Then t=x: x=y: y=t If yz Then t=y: y=z: z=t If xy Then t=x: x=y: y=t End If End If,If語句的嵌套注意事項:書寫鋸齒型;End If與它前面最近的if配對。,98,:與的類型必須相同,可以是下面四種形式之一: 表達(dá)式 例:
34、A 一組枚舉表達(dá)式(用逗號分隔) 2,4,6,8 表達(dá)式1 To 表達(dá)式2 60 To 100 Is 關(guān)系運算符表達(dá)式 Is 60,5. Select Case語句(情況語句) 形式: Select Case 變量或表達(dá)式 Case 表達(dá)式列表1 語句塊1 Case 表達(dá)式列表2 語句塊2 Case Else 語句塊n+1 End Select,變量:只能含有一個 表達(dá)式:數(shù)值型或字符串,99,注意: 關(guān)鍵字Is定義條件時,只能是簡單的條件,不能用邏輯運算符將兩個或多個簡單的條件組合在一起。 例如“Case Is20 and Is20”是正確的。,100,例 變量strC中存放了一個字符,判斷
35、該字符類型。 用多分支結(jié)構(gòu)實現(xiàn): If Ucase(strC) =A And Ucase (strC) =0 And strC =9 Then Print strC + 是數(shù)字字符 Else Print strC + 其他字符 End If 用Select Case語句實現(xiàn): Select Case strC Case a To z,A To Z Print strC + 是字母字符 Case 0 To 9 Print strC + 是數(shù)字字符 Case Else Print strC + 其他字符 End Select,101,例:已知坐標(biāo)點(x,y),判斷其落在哪個象限。,哪個能實現(xiàn),哪個
36、不能實現(xiàn)?,方法一 If x 0 And y 0 Then Print 在第一象限 ElseIf x 0 Then Print 在第二象限 ElseIf x 0 And y 0 Then Print 在第四象限 End If,方法二 Select Case x,y Case x 0 And y 0 Print 在第一象限 Case x 0 Print 在第二象限 Case x 0 And y 0 Print 在第四象限 End Select,方法二代碼錯誤: 1. Select Case 后不能出現(xiàn)多個變量; 2. Case后不能出現(xiàn)變量及有關(guān)運算符。,比較:Select Case結(jié)構(gòu)清晰,但
37、使用受到限制,因此,凡是對多個變量的條件判斷只能用If的多分支結(jié)構(gòu)來實現(xiàn)。,102,例由計算機來當(dāng)一年級的算術(shù)老師,要求給出一系列的110的操作數(shù)和運算符,學(xué)生輸入該題的答案,計算機根據(jù)學(xué)生的答案判斷正確與否,當(dāng)結(jié)束時給出成績。 分析:產(chǎn)生110操作數(shù),可通過Int(10 * Rnd + 1) 實現(xiàn) 設(shè)置的控件名 Label1 Text1 Picture1,Command1,103,6.條件函數(shù) (1)IIf函數(shù)形式是: IIf(表達(dá)式,當(dāng)表達(dá)式為True時的值,當(dāng)表達(dá)式為False時的值) 例如,求x,y中大的數(shù),放入Tmax變量中,語句如下: Tmax=IIf(x y,x,y) (2) S
38、witch函數(shù)形式是: Switch(條件表達(dá)式1,條件表達(dá)式1為True時的值 ,條件表達(dá)式2,條件表達(dá)式2為True時的值),104,(3)Choose函數(shù)形式是:,Choose(數(shù)字類型變量,值為1的返回值,值為2的返回值) 例如:Nop是1-4的值,轉(zhuǎn)換成 + 、-、運算符 Op= Choose(Nop,“+,-,) 當(dāng)值為1,返回字符串“+”,然后放入Op變量中,值為2,返回字符 串“-”,依次類推;當(dāng)Nop是1-4的非整數(shù),系統(tǒng)自動取Nop的整數(shù)辦法在判斷;若Nop不在1-4之間,函數(shù)返回Null值。,105,1在選擇結(jié)構(gòu)中缺少配對的結(jié)束語句 對多行式的If塊語句中,應(yīng)有配對的 E
39、nd If語句結(jié)束。 2. 多邊選擇ElseIf關(guān)鍵字的書寫和條件表達(dá)式的表示 ElseIf 不要寫成Else If; 多個條件表達(dá)式次序問題 3. Select Case語句的使用 Select Case 后不能出現(xiàn)多個變量;Case子句后不能出現(xiàn)變量,本節(jié)常見錯誤,106,3.5.4 循 環(huán) 結(jié) 構(gòu) 1. For循環(huán)語句 (一般用于循環(huán)次數(shù)已知) 形式 For 循環(huán)變量初值 to 終值 Step 步長 語句塊 Exit For 語句塊 Next 循環(huán)變量,循環(huán)變量, =,終值,語句塊,Exit For,語句塊,循環(huán)變量加步長,T,F,循環(huán)變量得初值,循環(huán)體,例 計算1100的奇數(shù)和 Dim
40、 i %, s% 等價于: Dim i %, s% s=0 s=0 : i = 1 For i = 1 To 100 step 2 re: If i = 100 Then s = s + i s = s + i Next i i = i +2 GoTo re End If,107,0 初值終值 =0 死循環(huán),循環(huán)次數(shù),要注意: 出了循環(huán),循環(huán)控制變量值的問題。 例程序段: For i=2 To 13 Step 3 循環(huán)執(zhí)行次數(shù) Print i , 輸出 i的值分別為: Next i 2 5 8 11 Print : Print “I=“, i 出了循環(huán)輸出為: I=14 在循環(huán)體內(nèi)對循環(huán)控制變
41、量可多次引用;但最好不要對其賦值,否則影響原來的循環(huán)控制規(guī)律。,步長,108,例 改變循環(huán)控制變量對循環(huán)的影響。 Private Sub Command1_Click() j = 0 For i = 1 To 20 Step 2 i = i + 3 j = j + 1 Print 第; j; 次循環(huán)i=; i Next i Print 退出循環(huán)后i=; i End Sub 正常情況:i=1,3,5,7,9,11,13,15,17,19 現(xiàn)在:i=4,9,14,19,例 輸出可打印的ASCII碼字符與它的編碼值。,109,2. DoLoop循環(huán)語句(用于控制循環(huán)次數(shù)未知) 形式1: Do Whi
42、le|Until 語句塊 Exit Do 語句塊 Loop,形式2: Do 語句塊 Exit Do 語句塊 Loop While|Until ,110,例 我國有13億人口,按人口年增長0.8%計算,多少年后我國人口超過26億。 分析:解此問題兩種方法,可根據(jù)公式:26=13*(1+0.008)n 直接利用標(biāo)準(zhǔn)對數(shù)函數(shù)求得;也可利用循環(huán)求得,程序如下: Private Sub Command1_Click() x = 13 n = 0 Do While x 26 x = x * 1.008 n = n + 1 Loop Print n, x End Sub,111,例用輾轉(zhuǎn)相除法求兩自然數(shù)m,
43、n的最大公約數(shù)和最小公倍數(shù)。 分析:求最大公約數(shù)的算法思想: (1)對于已知兩數(shù)m,n,使得mn; (2) m除以n得余數(shù)r; (3)若r=0,則n為最大公約數(shù)結(jié)束;否則執(zhí)行(4); (4)mn,nr,再重復(fù)執(zhí)行(2)。 例 求 m=14 ,n=6 的最大公約數(shù). If m 0) m=n n=r r= m mod n Loop Print 最大公約數(shù)=, n,m n r 14 6 2 6 2 0,輾轉(zhuǎn)相減法 m=m-n mn n=n-m nm m、n為公約數(shù) m=n Do While m n m n If m n Then 14 6 m = m n 8 6 Else 2 6 n = n m 2
44、 4 End If 2 2 Loop,112,3、While Wend循環(huán):(類似于Do WhileLoop) 格式為:While Wend 執(zhí)行過程:先計算表達(dá)式的值,如果表達(dá)式的值為True,則執(zhí)行循環(huán)體,遇到Wend語句后,返回到While語句并再對條件進行測試,如為True,則繼續(xù)執(zhí)行循環(huán)體,如為False,則退出循環(huán)體。 例:計算1+2+3+100,Dim i as integer,s as integer i=1 s=0 While i=100 s=s+i i=i+1 Wend,113,4.循環(huán)的嵌套 一個循環(huán)體內(nèi)又包含了一個完整的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套. 例打印九九乘法表. Fo
45、r i = 1 To 9 For j = 1 To 9 se = i Next j Picture1.Print Next i,思考:打印上三角或下三角程序如何改動?,上三角 For j=i To 9,下三角 For j=1 To i,114,For ii =1 To 10 For jj=1 To 20 Next ii Next jj,For ii =1 To 10 For ii=1 To 20 Next ii Next ii,For ii =1 To 10 For jj=1 To 20 Next jj Next ii,For ii =1 To 10 Next ii For ii =1 To
46、10 Next ii,對于循環(huán)的嵌套,要注意以下事項: 內(nèi)循環(huán)變量與外循環(huán)變量不能同名; 外循環(huán)必須完全包含內(nèi)循環(huán),不能交叉; 不能從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi),反之則可以。 正確錯誤,115,本節(jié)常見錯誤 1. 不循環(huán)或死循環(huán)的問題 主要是循環(huán)條件、循環(huán)初值、循環(huán)終值、循環(huán)步長的設(shè)置有問題。 2. 循環(huán)結(jié)構(gòu)中缺少配對的結(jié)束語句 For 少 配對的Next 3. 循環(huán)嵌套時,內(nèi)外循環(huán)交叉 4. 累加、連乘時,存放累加、連乘結(jié)果的變量賦初值問題 (1)一重循環(huán) 在一重循環(huán)中,存放累加、連乘結(jié)果的變量初值設(shè)置應(yīng)在循環(huán)語句前。 (2)多重循環(huán):這要視具體問題分別對待。如:1!+2!+3!+n! 5.大數(shù)相
47、乘產(chǎn)生“溢出”問題,116,3.5.5 其他輔助控制語句 1. GoTo 語句 形式: GoTo 標(biāo)號|行號 作用:無條件地轉(zhuǎn)移到標(biāo)號或行號指定的那行語句. 標(biāo)號是一個字符序列,行號是一個數(shù)字序列. 2.開關(guān)語句: On-GoTo語句 3.Exit語句 多種形式: Exit For、Exit Do、Exit Sub、Exit Function等。 作用:退出某種控制結(jié)構(gòu)的執(zhí)行。 4. End語句 多種形式: End、 End If、 End Select、 End With、 End Type、 End Sub、 End Function、 作用:End結(jié)束一個程序的運行;其余表示某個結(jié)構(gòu)的結(jié)
48、束,與對應(yīng)的結(jié)構(gòu)語句配對出現(xiàn)。,117,6.With 語句 形式如下: With 對象 語句塊 End With 作用:對某個對象執(zhí)行一系列的操作,而不用重復(fù)指出對象的名稱。 With Label1 .Height = 2000 .Width = 2000 .FontSize=22 .Caption = MyLabel End With,Label1.Height = 2000 Label1.Width = 2000 Label1.FontSize=22 Label1.Caption = MyLabel,等價,118,3.6 數(shù)組,1、引例 例: 若要求100個學(xué)生的平均成績,然后統(tǒng)計高于平均
49、分的人數(shù)。 aver = 0 For i = 1 To 100 mark = InputBox(輸入 + i + 位學(xué)生的成績) aver = aver + mark Next i aver = aver / 100 但若要統(tǒng)計高于平均分的人數(shù),則無法實現(xiàn)。 已有知識解決方法:再重復(fù)輸入成績,帶來兩個問題: (1)輸入數(shù)據(jù)的工作量成倍增加; (2)若本次輸入的成績與上次不同,則統(tǒng)計的結(jié)果不正確。 解決此問題的根本方法,引入數(shù)組,始終保持輸入的數(shù)據(jù),一次輸入,多次使用。,119,引入數(shù)組 dim mark(1 to 100) as integer dim i as integer, n%,ave
50、r! n=0 for i=1 to 100 aver= aver + mark(i) next i aver = aver / 100 for i=1 to 100 if mark(i)aver then n=n+1 next i,120,2、數(shù)組的概念 數(shù)組不是一種數(shù)據(jù)類型,而是一組相同類型的變量的集合。在程序中使用數(shù)組的最大好處是用一個數(shù)組名代表邏輯上相關(guān)的一批數(shù)據(jù),用下標(biāo)表示該數(shù)組中的各個元素,和循環(huán)語句結(jié)合使用,使得程序書寫簡潔。 數(shù)組元素:數(shù)組中的某一個數(shù)據(jù)項。數(shù)組元素的使用同簡單變量的使用。 數(shù)組:必須先聲明后使用。 兩類數(shù)組: 靜態(tài)(定長)數(shù)組、動態(tài)(可變長)數(shù)組。,121,3、
51、靜態(tài)數(shù)組及聲明 靜態(tài)數(shù)組:在聲明時已確定了數(shù)組元素個數(shù)。 形式: Dim 數(shù)組名(下標(biāo)1,下標(biāo)2) As 類型 維數(shù):幾個下標(biāo)為幾維數(shù)組,最多60維。 下標(biāo): 下界 To 上界 下界最小為32768,上界最大為32767,省略下界為0 。下標(biāo)必須為常數(shù),不可以為表達(dá)式或變量。 每一維大?。?上界下界+1 數(shù)組大小: 每一維大小的乘積 As類型:如果省略,默認(rèn)為變體類型 例:Dim mark(1 to 100) As Integer,122,Dim lArray( 0 To 3, 0 To 4) As Long 共有 45個元素 等價于: Dim lArray(3, 4) As Long,注意:
52、 (1)下界缺省為0,也可再重新定義數(shù)組的缺省下界為1。 Option Base 1,123,注意: (2)在靜態(tài)數(shù)組聲明時的下標(biāo)只能是常數(shù),而在其他地方出現(xiàn)的數(shù)組元素的下標(biāo)可以是變量,要加以區(qū)分。如: n =Inputbox(“輸入n”) Dim x(n) As Single 錯誤的聲明,下標(biāo)是變量 x(n)=100 數(shù)組元素的下標(biāo)可以是變量,但要防止下標(biāo)越界的錯誤發(fā)生 (3)在數(shù)組聲明中的下標(biāo)說明了數(shù)組的整體,即每維的大??;而在程序其他地方出現(xiàn)的下標(biāo)表示數(shù)組中的一個元素。兩者寫法形式相同,但意義不同。 例如:Dim x(10) As Integer 聲明了x數(shù)組有11個元素 x(10)=1
53、00 對x(10)這個數(shù)組元素賦值,124,4、動態(tài)數(shù)組及聲明 動態(tài)數(shù)組是指在聲明數(shù)組時未給出數(shù)組的大小(省略括號中的下標(biāo)),當(dāng)要使用它時,隨時用ReDim語句重新指出數(shù)組大小。形式如下: Dim 數(shù)組名( ) ReDim 數(shù)組名(下標(biāo)1,下標(biāo)2) As 類型 例 Sub Form_Load( ) Dim x( ) As Single n =Inputbox(“輸入n”) ReDim x(n) End Sub,125,注意 Dim、Private、Public變量聲明語句是說明性語句,可出現(xiàn)在過程內(nèi)或通用聲明段;ReDim語句是執(zhí)行語句,只能出現(xiàn)在過程內(nèi)。 在過程中可多次使用ReDim來改變數(shù)
54、組的大小和維數(shù)。 使用ReDim語句會使原來數(shù)組中的值丟失,可以在ReDim語句后加Preserve參數(shù)來保留數(shù)組中的數(shù)據(jù)。使用Preserve只能改變最后一維的大小,前面幾維大小不能改變。 ReDim中的下標(biāo)可以是常量,也可以是有了確定值的變量。 靜態(tài)數(shù)組在程序編譯時分配存儲單元,動態(tài)數(shù)組在運行時分配存儲單元。,126,例:Redim和 Preserve語句的使用 Dim a() as integer Private Sub Form_Click() Dim a() As Integer ReDim a(3, 2) For i = 0 To 3 For j = 0 To 2 a(i, j)
55、= i * j Print a(; i; ,; j; )=; a(i, j); Next j Next i End Sub,127,Private Sub Form_Click() Dim a() As Integer ReDim a(3, 2) For i = 0 To 3 For j = 0 To 2 a(i, j) = i * j Next j Next i ReDim Preserve a(3, 4) For j = 3 To 4 a(3, j) = j + 10 Next j For i = 0 To 3 For j = 0 To 4 Print a(; i; ,; j; )=; a
56、(i, j); Next j Next i End Sub,128,5、 數(shù)組的基本操作 應(yīng)掌握的基本操作有:數(shù)組初始化、數(shù)組輸入、輸出、求數(shù)組中最大(最?。┰丶跋聵?biāo)、求和、平均值、排序和查找等。 A. 數(shù)組元素的賦初值 (1)用循環(huán) Dim ia(1 to 10) As Integer For i = 1 To 10 ia(i)=0 Next i,(2) Array函數(shù) Dim ib As Variant ib = Array(“abc”, “def”, “67”) ib數(shù)組有3個元素,上界為2 For i = 0 To UBound(ib) Picture1.Print ib(i); ; Next i,129,注意 利用Array對數(shù)組各元素賦值,聲明的數(shù)組是可變數(shù)組或連圓括號都可省的數(shù)組,并且其類型只能是Variant。 數(shù)組的下界為零,上界由Array函數(shù)括號內(nèi)的參數(shù)個數(shù)決定,也可通過函數(shù)Ubound獲得上界,Lbound獲得下界。 賦值號左邊的
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車安全教學(xué)課件
- 提升護士健康宣教能力的實踐路徑
- 心臟復(fù)蘇健康宣教
- 病例質(zhì)量管理制度
- 求瓶子的容積說課課件
- 氣道護理教學(xué)課件
- 比較新穎的護理課件
- DB4201T 569.1-2018 武漢市反恐怖防范系統(tǒng)管理規(guī)范 第1部分:通則
- 2025年四年級語文暑假作業(yè)計劃
- 2025年高二語文暑假作業(yè)計劃
- 2025豬藍(lán)耳病防控及凈化指南(第三版)
- TCUWA20059-2022城鎮(zhèn)供水管網(wǎng)模型構(gòu)建與應(yīng)用技術(shù)規(guī)程
- 2025至2030中國壓縮空氣儲能產(chǎn)業(yè)現(xiàn)狀調(diào)查及項目投資策略建議報告
- 三臺縣2024-2025學(xué)年小學(xué)六年級數(shù)學(xué)畢業(yè)檢測指導(dǎo)卷含解析
- 宅基地互換合同協(xié)議書范本
- 2025人教版數(shù)學(xué)四年級下冊 第一單元《四則運算》單元分層作業(yè)
- 園藝植物育種學(xué)知到課后答案智慧樹章節(jié)測試答案2025年春浙江大學(xué)
- 集團公司下屬子公司管理制度
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫帶答案
- GB/T 15683-2025糧油檢驗大米直鏈淀粉含量的測定
- 南瓜訂貨合同范例
評論
0/150
提交評論