VB教學(xué)課件共345徐玉斌_第1頁
VB教學(xué)課件共345徐玉斌_第2頁
VB教學(xué)課件共345徐玉斌_第3頁
VB教學(xué)課件共345徐玉斌_第4頁
VB教學(xué)課件共345徐玉斌_第5頁
已閱讀5頁,還剩340頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

面向?qū)ο蟪绦蛟O(shè)計(jì)課時(shí):48講課:32上機(jī):16主講教師:徐玉斌(計(jì)算機(jī)學(xué)院)課程目的與任務(wù)

本課程的目的與任務(wù)是通過本課程的學(xué)習(xí)和示例的分析,掌握面向?qū)ο蟪绦虻脑O(shè)計(jì)和開發(fā)方法,同時(shí)掌握使用VisualBasic開發(fā)Windows應(yīng)用程序的一般方法和特點(diǎn),理解Windows應(yīng)用程序的基本概念、主要功能和Windows應(yīng)用程序開發(fā)的基本思想,能夠根據(jù)實(shí)際需要自行開發(fā)簡單的Windows應(yīng)用程序,并為今后進(jìn)一步使用VisualBasic或其他面向?qū)ο蟮目梢暬_發(fā)工具開發(fā)Windows應(yīng)用程序打下基礎(chǔ)。教學(xué)安排

第一章VisualBasic程序設(shè)計(jì)概述

第二章VB簡單的程序設(shè)計(jì)

第三章VB語言基礎(chǔ)

第四章基本的控制結(jié)構(gòu)

第五章數(shù)組

第六章過程

第七章常用控件

第八章界面設(shè)計(jì)

第九章文件

第十章圖形

第十一章數(shù)據(jù)庫技術(shù)第一章VisualBasic程序設(shè)計(jì)概述

(1學(xué)時(shí))

1.1程序設(shè)計(jì)語言概述

1.2VB簡介

1.3VB主要功能和特點(diǎn)

1.4VB集成開發(fā)環(huán)境1.1程序設(shè)計(jì)語言概述定義:程序設(shè)計(jì)語言是人與計(jì)算機(jī)之間交換信息的工具,一般分為機(jī)器語言,匯編語言和高級語言。程序:為使計(jì)算機(jī)能按人的意圖工作,能夠接受人向它發(fā)出的命令和信息就必須使用計(jì)算機(jī)的程序設(shè)計(jì)語言,把待解決的問題按處理步驟寫成一條條計(jì)算機(jī)能識(shí)別和執(zhí)行的語句。所有的語句集合稱為程序。一、機(jī)器語言機(jī)器語言:是計(jì)算機(jī)硬件系統(tǒng)識(shí)別的,不需要翻譯直接供機(jī)器使用的程序設(shè)計(jì)語言,也稱手編語言,通常隨計(jì)算機(jī)型號的不同而不同。指令:指計(jì)算機(jī)進(jìn)行基本操作的命令。機(jī)器指令:機(jī)器語言中的語句(二進(jìn)制)優(yōu)點(diǎn):速度快缺點(diǎn):1)難于看懂和調(diào)試2)人們無法從程序看出讓計(jì)算機(jī)執(zhí)行的是什么任務(wù).3)程序很長,編制程序困難.4)程序員稍不小心就會(huì)出錯(cuò),而且這些錯(cuò)誤難以發(fā)現(xiàn)和修改.二、匯編語言為簡化機(jī)器語言,人們采用符號和數(shù)字代替二進(jìn)制指令碼對每條指令都給予一個(gè)名稱即助記符.計(jì)算機(jī)不能直接識(shí)別和執(zhí)行匯編語言程序,必須由一種起翻譯作用的程序?qū)⑵浞g成計(jì)算機(jī)可以執(zhí)行的機(jī)器語言程序;這一翻譯過程就稱為匯編,起翻譯作用的程序稱為匯編程序.優(yōu)點(diǎn):易寫,易讀,易檢查,易修改,編程質(zhì)量高,執(zhí)行速度快,占用存儲(chǔ)空間小.缺點(diǎn):1)不方便編程,工作難度大,費(fèi)時(shí)間2)要求用戶詳細(xì)了解所用的計(jì)算機(jī)硬件性能和各種指令,尋址方式以及其他許多知識(shí).3)對機(jī)器硬件的依賴性很大,匯編程序不具備通用性,可移植性.三、高級語言50年代中期發(fā)展起來的,面向題目的程序設(shè)計(jì)語言.實(shí)現(xiàn)一條指令與多條匯編語言指令相對應(yīng).優(yōu)點(diǎn):1)可以更容易,更快的寫出程序.2)高級語言都有自己的語法.3)不依附于任何特定的硬件結(jié)構(gòu).4)具有通用性和可移植性.缺點(diǎn):1)要掌握高級語言必須學(xué)會(huì)其語法2)相當(dāng)繁難.3)源程序必須經(jīng)過“翻譯”變成機(jī)器語言程序才能被執(zhí)行.(解釋形式basic,編譯形式c,pascal,fortan)1.2VisualBasic簡介

一、VisualBasic的發(fā)展

VisualBasic是Microsoft公司開發(fā)的Windows應(yīng)用程序開發(fā)工具,Visual——“可視化的”,是一種開發(fā)圖形戶界面(GUI)的方法。1991年微軟公司推出了VisualBasic1.0,VB的誕生使編程技術(shù)向前邁進(jìn)了一大步。1992年微軟推出VisualBasic2.0,之后在1993年又推出VisualBasic3.0。在1995年隨著Windows95的發(fā)布,VisualBasic4.0也同時(shí)問世。1997年微軟公司開始推出Windows開發(fā)工具套件MicrosoftVisualStudio1.0其中包括VisualBasic5.01998所發(fā)布的MicrosoftVisualStudio98則包括了VisualBasic6.0。VisualBasic6.0,共有三種版本,各自滿足不同的開發(fā)需要?!癡isualBasic學(xué)習(xí)版”使編程人員輕松開發(fā)Windows95/98和WindowsNT應(yīng)用程序,該版本包括了所有的內(nèi)部控件?!皩I(yè)版”為專業(yè)編程人員提供了一整套進(jìn)行開發(fā)的功能完備的工具,該版本包括了學(xué)習(xí)版的全部功能?!捌髽I(yè)版”使得專業(yè)編程人員能夠開發(fā)出功能強(qiáng)大的分布式、高性能的客戶/服務(wù)器或Internet/Intranet應(yīng)用程序,該版本包括了企業(yè)版的全部功能。

Visual的英文含義就是可視化,“可視的Baisc”這個(gè)名字可能抽象了點(diǎn),但實(shí)際上它卻是最直觀的編程方法,之所以叫做“可視化”,你只要看到VB的界面就會(huì)明白,實(shí)際上你無需編程,就可以完成許多步驟。在VB中引入了控件的概念,在Windows中控件的身影無處不在,如按鈕、文本框等,VB把這些控件模式化,并且每個(gè)控件都有若干屬性用來控制控件的外觀,工作方法。這樣你就可以象在畫板上一樣,隨意點(diǎn)幾下鼠標(biāo),一個(gè)按鈕就完成了,這些在以前的編程語言下是要經(jīng)過相當(dāng)復(fù)雜的工作的。Visual(可視化)Basic“Basic”指的是BASIC(BeginnersAll-PurposeSymbolicInstructionCode)語言,一種在計(jì)算技術(shù)發(fā)展歷史上應(yīng)用得最為廣泛的語言。VisualBasic在原有BASIC語言的基礎(chǔ)上進(jìn)一步發(fā)展,至今包含了數(shù)百條語句、函數(shù)及關(guān)鍵詞,其中很多和WindowsGUI有直接關(guān)系。專業(yè)人員可以用VisualBasic實(shí)現(xiàn)其它任何Windows編程語言的功能,而初學(xué)者只要掌握幾個(gè)關(guān)鍵詞就可以建立實(shí)用的應(yīng)用程序。VisualBasicScriptingEdition(VBScript)是廣泛使用的腳本語言,它是VisualBasic語言的子集,可嵌入HTML語言中,用于網(wǎng)頁設(shè)計(jì),如ASP(ActiveServerPage)文件。1.3VB主要功能和特點(diǎn)具有面向?qū)ο蟮目梢暬O(shè)計(jì)工具(1)可視化的設(shè)計(jì)平臺(tái)Visual是“可視化的”意思,VisualBasic使用直觀的編程方法。通過使用窗口、控件(如各種各樣的按鈕、文本框、復(fù)選框、圖片框等)來設(shè)計(jì)工程界面,并通過對控件的屬性進(jìn)行設(shè)置來改變其外觀。編程時(shí)只需對每個(gè)對象的事件過程進(jìn)行模塊化編程,而無需編寫大量的代碼去描述界面元素的外觀和位置,就能方便快捷地設(shè)計(jì)工程界面。傳統(tǒng)的編程方法,用戶必需通過編程計(jì)算來設(shè)計(jì)工程界面,然后反復(fù)運(yùn)行和調(diào)試才能得到滿意的效果。(2)面向?qū)ο蟮脑O(shè)計(jì)方法

VisualBasic中所指的對象是代碼和數(shù)據(jù)的組合并封裝起來,可把這樣的對象作為一個(gè)單位來處理。對象可以是窗體和控件,也可以是一個(gè)應(yīng)用程序。VisualBasic采用面向?qū)ο缶幊碳夹g(shù)。在設(shè)計(jì)對象時(shí),不必編寫建立和描述每個(gè)對象的程序代碼,而是用工具把它們畫在界面上,由VisualBasic自動(dòng)生成對象的程序代碼并封裝起來。對象提供了現(xiàn)成的代碼避免了編寫程序的麻煩。2.事件驅(qū)動(dòng)的編程機(jī)制每個(gè)對象都有一個(gè)事件集,每個(gè)事件發(fā)生都要有相應(yīng)的程序代碼來響應(yīng),即要執(zhí)行一段程序代碼。事件可以由用戶操作觸發(fā)、也可以由操作系統(tǒng)或其它應(yīng)用程序的消息觸發(fā)、甚至可由應(yīng)用程序本身的消息觸發(fā)。VB通過事件驅(qū)動(dòng)來執(zhí)行對象的操作。在事件驅(qū)動(dòng)的程序中,代碼不是按照預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同的事件時(shí)執(zhí)行不同的代碼模塊。這些事件的順序決定了代碼執(zhí)行的順序,因此應(yīng)用程序每次運(yùn)行時(shí)所經(jīng)過的代碼的路徑是不同的。3.交互式的程序開發(fā)過程傳統(tǒng)的編程過程分三個(gè)步驟:編寫源程序、將源程序編譯和連接生成可執(zhí)行的二進(jìn)制代碼和最后運(yùn)行生成可執(zhí)行的二進(jìn)制代碼。而VisualBasic采用是交互式方法開發(fā)應(yīng)用程序。使三個(gè)步驟之間不再有明顯的界限。VB編程在輸入代碼時(shí)便進(jìn)行解釋,即時(shí)捕獲到并突出顯示大多數(shù)語法或拼寫錯(cuò)誤,同時(shí)將出現(xiàn)警告對話框,并將出錯(cuò)的源代碼以紅色顯示。方便用戶及時(shí)修改程序。4.

結(jié)構(gòu)化編程語言

VB是由結(jié)構(gòu)化的Basic語言發(fā)展起來的,加上面向?qū)ο蟮脑O(shè)計(jì)方法,因此具有更大的靈活性。5.提供強(qiáng)大的數(shù)據(jù)庫訪問工具。隨著計(jì)算機(jī)技術(shù)的發(fā)展,數(shù)據(jù)庫越來越顯示出其強(qiáng)大的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)管理能力。為了滿足人們對數(shù)據(jù)庫的需要,VB提供了強(qiáng)大的數(shù)據(jù)庫程序設(shè)計(jì)能力。不僅能管理MicrosoftAccess格式的數(shù)據(jù)庫,還能訪問其它外部數(shù)據(jù)庫,如FoxPro、Paradox等格式的數(shù)據(jù)庫。另外,VB還提供了開放式數(shù)據(jù)庫連接(ODBC)功能,可以通過直接訪問或建立連接的方式使用并操作后臺(tái)大型網(wǎng)絡(luò)數(shù)據(jù)庫,如SQLServer、Oracle等。6.提供創(chuàng)建強(qiáng)大的Internet應(yīng)用程序工具VisualBasic提供很多方法用于創(chuàng)建Internet應(yīng)用程序。使用VisualBasic新的Internet編程特征,可以利用VisualBasic提供的工具創(chuàng)建動(dòng)態(tài)的、功能強(qiáng)大的Internet應(yīng)用程序。您可以創(chuàng)建運(yùn)行在客戶端或服務(wù)器端的應(yīng)用程序,在基于窗體的應(yīng)用程序中使用HTML頁面,或在Web上使用ActiveX部件。此外,您還可以方便迅速地將應(yīng)用程序發(fā)布到Internet上。

8.充分利用Windows資源VB提供的動(dòng)態(tài)數(shù)據(jù)交換(DDE)編程技術(shù),可以在應(yīng)用程序中實(shí)現(xiàn)與其它Windows應(yīng)用程序建立動(dòng)態(tài)數(shù)據(jù)交換、在不同的應(yīng)用程序之間進(jìn)行通信的功能。VB提供的對象鏈接與嵌入(OLE)技術(shù)是將每個(gè)應(yīng)用程序都看作對象,將不同的對象連接起來,嵌入到某個(gè)應(yīng)用程序中,從而可以得到具有聲音、影像、圖像、動(dòng)畫、文字等各種信息集合式文件。VB還可以通過動(dòng)態(tài)(DLL)技術(shù)將C/C++或匯編語言編寫的程序加入到VB的應(yīng)用程序中,或調(diào)用Windows應(yīng)用程序接口(API)函數(shù),實(shí)現(xiàn)SDK所具有的功能。9.提供了易學(xué)易用的應(yīng)用程序集成開發(fā)環(huán)境10.完備的help聯(lián)機(jī)幫助功能1.4VB集成開發(fā)環(huán)境1.主窗口應(yīng)用程序窗口,由標(biāo)題欄、菜單欄和工具欄組成2.窗體(form)窗口設(shè)計(jì)vb程序的界面3.代碼(code)窗口編輯窗體、標(biāo)準(zhǔn)模塊中的代碼4.屬性(properties)窗口所有窗體或控件的屬性設(shè)置5.工程資源管理器(projectexpror)窗口保存一個(gè)應(yīng)用程序所有的文件6.工具箱(toolbox)窗口顯示各種控件的制作工具,供用戶在窗體上設(shè)計(jì)掌握好基本概念和編程方法上機(jī)和課下練習(xí)善于查閱資料和利用互連網(wǎng)資源參考資料《程序員指南》《部件工具指南》《數(shù)據(jù)訪問指南》如何學(xué)好本門課程第二章VB簡單的程序設(shè)計(jì)(3學(xué)時(shí))

2.1程序設(shè)計(jì)方法的發(fā)展

2.2VB中的有關(guān)概念

2.3建立簡單的應(yīng)用程序

2.4基本控件和屬性

2.5工程的管理及環(huán)境的設(shè)置

2.6生成可執(zhí)行文件和制作安裝盤

2.7程序調(diào)試

2.8常見錯(cuò)誤2.1程序設(shè)計(jì)方法的發(fā)展1.初期的程序設(shè)計(jì)

高運(yùn)行效率、少占用內(nèi)存為目標(biāo)2.結(jié)構(gòu)化程序設(shè)計(jì)

程序的可讀性、可維護(hù)性為目標(biāo)程序=算法+數(shù)據(jù)結(jié)構(gòu)的面向過程的程序設(shè)計(jì)程序的結(jié)構(gòu)規(guī)定為順序、選擇和循環(huán)三種基本結(jié)構(gòu),采取自頂向下、逐步求精的分析和設(shè)計(jì)方法,即功能分析方法。3.面向?qū)ο蟮某绦蛟O(shè)計(jì)

降低程序的復(fù)雜性、提高軟件的開法效率和改善工作界面為目標(biāo)程序=對象+消息的面向?qū)ο蟮某绦蛟O(shè)計(jì)結(jié)構(gòu)化的分解突出過程,既如何做(Howtodo)?它強(qiáng)調(diào)代碼的功能是如何得以完成。面向?qū)ο蟮姆纸馔怀稣鎸?shí)世界和抽象的對象,既做什么(Whattodo)?它將大量的工作由相應(yīng)的對象完成,程序員在應(yīng)用中只需說明要求對象完成的任務(wù)。面向?qū)ο蟮某绦蛟O(shè)計(jì)的優(yōu)點(diǎn):1.符合人們習(xí)慣的思維方法,便于分解大型的復(fù)雜多變的問題。由于對象對應(yīng)于現(xiàn)實(shí)世界中的實(shí)體,因而可以很自然地按照現(xiàn)實(shí)世界中處理實(shí)體的方法來處理對象,軟件開發(fā)者可以很方便地與問題提出者進(jìn)行溝通和交流。

2.易于軟件的維護(hù)和功能的增減。對象的封裝性及對象之間的松散組合,都給軟件的修改和維護(hù)帶來了方便。3.可重用性好。重復(fù)使用一個(gè)類(類是對象的集合,對象是類的實(shí)例化),可以比較方便地構(gòu)造出軟件系統(tǒng),加上繼承的方式,極大地提高了軟件開發(fā)的效率。4.與可視化技術(shù)相結(jié)合,改善了工作界面。隨著基于圖形界面操作系統(tǒng)的流行,面向?qū)ο蟮某绦蛟O(shè)計(jì)方法也將深入人心。它與可視化技術(shù)相結(jié)合,使人機(jī)界面進(jìn)入GUI時(shí)代。2.2對象的有關(guān)概念1.對象對象是基本的運(yùn)行時(shí)的實(shí)體,如窗體、各種控件等,它包括作用于對象的操作(方法)和對象的響應(yīng)(事件)。對象將數(shù)據(jù)和處理這些數(shù)據(jù)的過程封裝在一起。2.類

類是一個(gè)抽象的整體概念,是同種對象的集合與抽象,是創(chuàng)建對象實(shí)例的模板。對象是類的實(shí)例化。類與對象是面向?qū)ο蟪绦蛟O(shè)計(jì)語言的基礎(chǔ)。以“學(xué)生”為例,說明類與對象的關(guān)系。學(xué)生是一個(gè)籠統(tǒng)的名稱,是整體概念,我們把學(xué)生看成一個(gè)“類”,一個(gè)個(gè)具體的學(xué)生(比如你自己)就是這個(gè)類的實(shí)例,也就是這個(gè)類的一個(gè)個(gè)對象。

工具箱的各種控件并不是對象,而是代表了各個(gè)不同的類。通過類的實(shí)例化,可以得到真正的對象。當(dāng)在窗體上畫一個(gè)控件時(shí),就將類轉(zhuǎn)換為對象,即創(chuàng)建了一個(gè)控件對象,也簡稱為控件。3.對象的建立和命名(1)對象的建立

方法一:

單擊工具箱控件對象在窗體上按住左鍵拖拉到所需要的大小后釋放。

方法二:

雙擊工具箱控件對象,則立即在窗體出現(xiàn)一個(gè)默認(rèn)大小的對象框。(2)編輯對象

先選中對象(單擊對象),放大、縮小刪除對象復(fù)制對象(3)對象的命名

每一個(gè)對象都有有自己的名字。每個(gè)窗體、控件對象在建立時(shí)VB系統(tǒng)給出了一個(gè)默認(rèn)名。用戶可通過屬性窗口設(shè)置(名稱)來給對象命名。

命名的原則:1)必須由字母或漢字開頭、隨后可以是字母、漢字、數(shù)字、下劃線(最好不用)串組成。2)長度<=255個(gè)字符。4.對象的三要素(1)屬性

對象中的數(shù)據(jù),所有對象都有自的屬性。它們是用來描述和反映對象特征的參數(shù)。例如:控件名稱(Name)、標(biāo)題(Caption)、顏色(Color)、字體(FontName)等屬性決定了對象展現(xiàn)給用戶的界面具有什么樣的外觀及功能。對象屬性設(shè)置的方法:

方法一:在設(shè)計(jì)模式下,通過屬性窗口直接設(shè)置對象的屬性。方法二:在程序的代碼中通過賦值實(shí)現(xiàn),其格式為:

對象.屬性=屬性值

例如:cmdDisp.Caption=“顯示”

(2)方法

對象的行為,即將一些通用的過程編寫好并封裝起來,作為方法供用戶直接調(diào)用。在對象上可操作的過程,是VB系統(tǒng)提供的一種特殊的過程和函數(shù)——方法。方法是面向?qū)ο蟮模詫ο蟮姆椒ㄕ{(diào)用一般要指明對象。對象方法調(diào)用形式:

[對象.]方法[參數(shù)列表]

如省略對象,表示在當(dāng)對象,一般指窗體。例如:

Form1.print"歡迎您使用VisualBasic6.0"(3)事件響應(yīng)對象的動(dòng)作稱為事件(可被對象識(shí)別的動(dòng)作),它發(fā)生在用戶與應(yīng)用程序交互時(shí)。如單擊控件、鼠標(biāo)移動(dòng)、鍵盤按下等。事件過程指附在該對象上的用戶編寫的程序代碼,是事件的處理程序。事件過程的形式如下:

Sub對象名_事件過程名[(參數(shù)列表)]…..(事件過程代碼)

EndSub例如:

SubcmdOk_Click()cmdOk.FontSize=20’設(shè)置命令按鈕的字體大小為20EndSub事件驅(qū)動(dòng)程序設(shè)計(jì)

是圖形用戶界面的本質(zhì),由用戶控制而代碼作出響應(yīng)。在傳統(tǒng)的面向過程的程序設(shè)計(jì)語言中,應(yīng)用程序自身控制了執(zhí)行那一部分代碼和按何種順序執(zhí)行代碼,從第一行代碼執(zhí)行程序并按應(yīng)用程序中預(yù)定的路徑執(zhí)行,必要時(shí)調(diào)用過程。在事件驅(qū)動(dòng)的應(yīng)用程序設(shè)計(jì)中,代碼不是按照預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同的事件時(shí)執(zhí)行不同的代碼片段。事件可以由用戶觸發(fā),也可以由來自操作系統(tǒng)或其它應(yīng)用程序的消息觸發(fā),基至可以由應(yīng)用程序本身觸發(fā)。5.VB程序的執(zhí)行步驟如下:1)啟動(dòng)應(yīng)用程序,裝載和顯示窗體2)窗體(或窗體上的控件)等待事件的發(fā)生;3)事件發(fā)生時(shí),執(zhí)行對應(yīng)的事件過程;4)重復(fù)執(zhí)行步驟(2)和(3);5)直到遇到“END”結(jié)束語句結(jié)束程序的運(yùn)行或按“結(jié)束”強(qiáng)行停止程序的運(yùn)行。2.3建立簡單的應(yīng)用程序以例2.1為例1.建立用戶界面的對象2.對象屬性的設(shè)置3.對象事件過程及編程4.程序運(yùn)行和調(diào)試5.保存文件2.4基本控件和窗體一.常用屬性

1.Name名稱屬性創(chuàng)建的對象名稱,有默認(rèn)的名.在程序中,控件名是作為對象的標(biāo)識(shí)而引用,不會(huì)顯示在窗體上。

2.Caption標(biāo)題屬性 該屬性決定了控件上顯示的內(nèi)容。3.Height、width、top和left屬性

單位為twip:1twip=1/20點(diǎn)=1/1440英寸=1/567cm4.Enabled屬性控件是否可操作.當(dāng)設(shè)置為false時(shí),呈暗淡色,禁止用戶進(jìn)行操作.5.Visible屬性控件是否可見.當(dāng)設(shè)置為false時(shí),用戶看不到,但控件本身存在。6.Font屬性

Fontname

字體Fontsize字體大小Fontbold是否是粗體

Fontitalic

是否斜體Fontstrikethru是否加一刪除線

Fontunderline是否帶下劃線

例2.2在窗體是建立兩個(gè)命令按鈕

Command1和Command2,Command2

的Font通過屬性窗口設(shè)置,其余屬性通過代碼實(shí)現(xiàn)。7.Forecolor前景顏色屬性 設(shè)置控件的前景顏色(即正文顏色).其值是一個(gè)16進(jìn)制常數(shù),用戶可以在調(diào)色板中直接選擇所需顏色。8.Backcolor背景顏色屬性9.Backstyle背景風(fēng)格屬性 0-transparent:透明顯示,即控件背景顏色顯示不出來10.BorderStyle邊框風(fēng)格屬性

0-None:控件周圍沒有邊框1-FixedSingle:控件帶有單邊框。11.Alignment屬性 控件上正文水平對齊方式

0:正文左對齊1:右對齊 2:居中12.AutoSize屬性 控件是否根據(jù)正文自動(dòng)調(diào)整大小,

False.13.WordWarp屬性

AutoSizeTrue時(shí),WordWarp才有效 按正文字體大小在垂直方向上改變顯示區(qū)域的大小。14.TabIndex屬性決定了按Tab鍵時(shí),焦點(diǎn)在各個(gè)控件移動(dòng)的順序。各個(gè)控件默認(rèn)

TabIndex值就是以控件建立時(shí)的順序,第一個(gè)為0.15.控件默認(rèn)屬性

反映該控件最重要的屬性,使用時(shí)可省略屬性名。.注意:Command的默認(rèn)屬性為Default,當(dāng)該屬性為True,當(dāng)按Enter鍵,該控件起作用。例2.3控件設(shè)置效果二.窗體1.屬性

Caption標(biāo)題

MaxButton、MinButton

Icon、ControlBox

Picture

BorderStyle(012345)WindowsState(0-正常、1-最小化、2-最大化)2.事件

Click、DblClick和Load

Load當(dāng)裝入窗體時(shí)激發(fā),通常用于對屬性和變量初始化3.方法

Print、Cls和Move等

例2.4上述屬性、Click、DblClick和Load

事件演示。三.標(biāo)簽Label

用于顯示文本(輸出)信息,不能作為輸入信息的界面。

例2.5.顯示浮雕效果的文字,實(shí)現(xiàn)方法:字顏色、標(biāo)簽位置四.文本框TextBox

是一個(gè)文本編輯區(qū)域,可在該區(qū)域輸入,編輯和顯示正文內(nèi)容。

1.其他屬性

Text:正文內(nèi)容

Maxlength:設(shè)置正文的最多字符個(gè)數(shù),0任意長度值.,

MultiLine:是否為多行,默認(rèn)一行.FALSE

ScrollBars:當(dāng)MultiLine為True時(shí),該屬性才有效,表示滾動(dòng)條的形式

0-None、1-Horizontal、2-Vertical、3-Both。Locked:是否可被編輯屬性,F(xiàn)alse,表示為可編輯。PassWord:口令字符.Text屬性返回輸入的數(shù)據(jù),屏幕顯示該字符,

SelStart,SelLength,SelText:選中文本的起始、長度、內(nèi)容。

例2.6復(fù)制選中的文本2.常用事件

Change:當(dāng)改變文本框的Text屬性時(shí)會(huì)引發(fā)該事件.

KeyPress(KeyAsciiAsInteger):同上,并可返回一個(gè)KeyAscii參數(shù)

KeyAscii

為13,按回車鍵;為0去除剛輸入的字符.

LostFocus:當(dāng)控件失去焦點(diǎn)時(shí)發(fā)生.GotFocus:當(dāng)控件獲得焦點(diǎn)時(shí)發(fā)生.3.常用方法

[對象.]SetFocus:

是把光標(biāo)移到指定的文本框?qū)ο笾小?.文本框的應(yīng)用數(shù)據(jù)過濾例2.7要求輸入合法的數(shù)字?jǐn)?shù)據(jù)。當(dāng)輸入結(jié)束時(shí)(按Tab鍵),對于輸入正確的數(shù)據(jù),顯示正確信息;對輸入的非數(shù)字?jǐn)?shù)據(jù),則響鈴(Beep)、顯示錯(cuò)誤信息、清除文本框中的內(nèi)容,并使焦點(diǎn)重新回到文本框。

Text2_LostFocus

當(dāng)輸入結(jié)束按Tab鍵時(shí),該事件激發(fā)

IsNumeric(Text2):

判斷是否輸入非數(shù)字?jǐn)?shù)據(jù).

Text2.SetFocus:

使焦點(diǎn)重新回到文本框

五.命令按鈕CommandButton

接受用戶輸入的命令.輸入命令可以有三種方式:鼠標(biāo)單擊Tab鍵焦點(diǎn)到該按鈕快捷鍵

1.其他屬性Caption:命令按鈕顯示的內(nèi)容,可設(shè)置快捷鍵,例&Ok,顯示

OkValue:檢查該按鈕是否按下.該屬性在設(shè)計(jì)時(shí)無效.Picture:按鈕可顯示圖片文件(.bmp和.Ico),當(dāng)Style為1時(shí)有效Style:確定顯示的形式.0只能顯示文字,1文字、圖形均可。ToolTipText:設(shè)置工具提示,和Picture結(jié)合使用。2.事件

Click3.例2.8

建立一個(gè)允許剪切、復(fù)制和粘貼的簡單便箋板程序。增加內(nèi)容:利用MouseMove事件決定命令按鈕的有效性,即當(dāng)選中內(nèi)容,“剪切”、“復(fù)制”按鈕有效,否則無效。六常用方法方法是面向?qū)ο蟮模适褂玫男问綖椋篬對象.]方法[參數(shù)列表]

1.Print方法

形式:[對象.]Print[{Spc(n)|Tab(n)}][表達(dá)式列表][;|,]作用:在對象上輸出信息對象:窗體、圖形框或打印機(jī)(Printer),省略對象在窗體上輸出。Spc(n)函數(shù):插入n個(gè)空格,允許重復(fù)使用。Tab(n)函數(shù):左端開始右移動(dòng)n列,允許重復(fù)使用。;(分號):光標(biāo)定位上一個(gè)顯示的字符后。,(逗號):光標(biāo)定位在下一個(gè)打印區(qū)的開始位置處。無;,換行。開始打印的位置是由對象的CurrentX和CurrentX屬性決定,缺省為打印對象的左上角0,0。注意:Print方法在Form_Load事件過程中起作用,必須設(shè)置窗體的

AutoRedraw為True。例2.9顯示圖形

PrivateSubForm_Click()Fori=1To5PrintTab(i);String(6-I,"▼");Spc(6);String(I,"▲")NextiEndSub考慮:若把Spc(6)換成Tab(6),效果如何?2.Cls方法

形式:[對象.]Cls

作用:清除運(yùn)行時(shí)在窗體或圖形框中顯示的文本或圖形。注意:不清除在設(shè)計(jì)時(shí)的文本和圖形。3.Move方法形式:[對象.]Move左邊距離[,上邊距離[,寬度[,高度]]]作用:移動(dòng)窗體或控件,并可改變其大小。

對象:可以是窗體及除時(shí)鐘、菜單外的所有控件

例2.10圖形起始點(diǎn)(左上角)移到窗體的中心,同時(shí)圖形縮小50%。五.應(yīng)用舉例

例2-11編一計(jì)算月支付貸款的程序?,F(xiàn)要求根據(jù)房產(chǎn)商提供的信息,買房者選擇房型、面積、單價(jià)、按揭期等信息,計(jì)算每月支付代款的程序。第一個(gè)窗體:列表框選擇數(shù)據(jù)、標(biāo)簽顯示數(shù)據(jù)、文本框輸入數(shù)據(jù);第二個(gè)窗體:圖形框顯示房屋的平面圖。

Pmt函數(shù)計(jì)算月支付貸款2.5工程的管理及環(huán)境的設(shè)置一.工程的組成工程文件包含了一個(gè)應(yīng)用程序的所有文件:窗體文件(.frm):控件及屬性、事件過程和自定義過程

窗體的二進(jìn)制數(shù)據(jù)文件(.frx),自動(dòng)產(chǎn)生同名.frx文件。標(biāo)準(zhǔn)模塊文件(.bas)類模塊的文件(.cls) 資源文件(.res) ActiveX控件的文件(.ocx)二.創(chuàng)建、打開和保存工程三.添加、刪除和保存文件注意:1.窗體名和窗體文件名概念,

窗體名:窗體的Name屬性,在代碼中用來引用該窗體,同一工程不能有相同的窗體名;

窗體文件名:窗體存放在磁盤上的文件名,該文件包含了該窗體的所有控件屬性和代碼,同一文件夾不能有相同的文件名。2.在工程中添加現(xiàn)存的窗體時(shí),只是對該窗體文件的引用納入工程。因此,如果更改窗體并保存它,會(huì)影響包含此窗體文件的任何工程。3.在工程中刪除窗體時(shí),僅將此窗體從工程里刪除掉,但是窗體文件仍存在于磁盤上。但是,如果在VB之外刪除一個(gè)窗體文件,VB不能更新此工程文件,當(dāng)打開此工程時(shí),將顯示一個(gè)文件丟失的錯(cuò)誤信息。4.對窗體文件改名方法二:1).打開工程“另存為…Form”實(shí)現(xiàn)文件的復(fù)制保存工程文件2).利用編輯程序打開工程文件,修改FORM=XXX的文件名窗體文件名窗體名四、環(huán)境設(shè)置要求變量聲明

OptionExplicit2.6生成可執(zhí)行文件和制作安裝盤

以工程文件例2.11為例1.生成可執(zhí)行文件文件/生成V6B2-11.exe文件,然后關(guān)閉VisualBasic6.0。2.制作安裝盤運(yùn)行VB6.0中文版工具“Package&Deployment”,在向?qū)У闹笇?dǎo)下:“打包”:把工程中用到的各種類型的文件進(jìn)行打包壓縮后,存放到特定的目錄下?!罢归_”:再把這些打包的文件展開到用戶可以攜帶的安裝介質(zhì)軟盤、光盤等。3.檢測安裝程序

在沒有VB6.0系統(tǒng)的環(huán)境下,執(zhí)行安裝盤中的Setup.exe文件,將發(fā)行盤進(jìn)行安裝。2.7程序調(diào)試.錯(cuò)誤類型

(1)編輯錯(cuò)誤在編輯代碼時(shí),VB會(huì)對鍵入的代碼直接進(jìn)行語法檢查。當(dāng)發(fā)現(xiàn)代碼存在打字錯(cuò)誤,遺漏關(guān)鍵字或標(biāo)點(diǎn)符等語法錯(cuò)誤,VB在Form窗口中彈出一個(gè)子窗口,提示出錯(cuò)信息,出錯(cuò)的那一行變成紅色。這時(shí),用戶必須單擊“確定”按鈕,關(guān)閉出錯(cuò)提示窗,然后對出錯(cuò)行進(jìn)行修改。(2)編譯錯(cuò)誤

編譯錯(cuò)誤指按了“啟動(dòng)”按鈕,VB開始運(yùn)行程序前,先編譯執(zhí)行的程序段時(shí),產(chǎn)生的錯(cuò)誤。此類錯(cuò)誤由于用戶未定義變量、遺漏關(guān)鍵字等原因產(chǎn)生。這時(shí),VisualBasic也彈出一個(gè)子窗口,提示出錯(cuò)信息,出錯(cuò)的那一行被高亮度顯示。(3)運(yùn)行錯(cuò)誤運(yùn)行時(shí)錯(cuò)誤指VB在編譯通過后,運(yùn)行代碼時(shí)發(fā)生的錯(cuò)誤。這類錯(cuò)誤往往是指令代碼執(zhí)行了一非法操作引起的。例如類型不匹配、試圖打開一個(gè)不存在的文件等。(4)邏輯錯(cuò)誤程序運(yùn)行后,得不到所期望的結(jié)果,這說明程序存在邏輯錯(cuò)誤。這類錯(cuò)誤往往是程序存在邏輯上的缺陷所引起。例如,運(yùn)算符使用不正確、語句的次序不對、循環(huán)語句的起始、終值不正確等。通常,邏輯錯(cuò)誤不會(huì)產(chǎn)生錯(cuò)誤提示信息,故錯(cuò)誤較難排除,需要程序員仔細(xì)地閱讀分析程序以及調(diào)試。2調(diào)試錯(cuò)誤(1)VB的三種模式設(shè)計(jì)模式[設(shè)計(jì)]進(jìn)行程序的界面設(shè)計(jì)、屬性設(shè)置、代碼編寫等。運(yùn)行模式[運(yùn)行]執(zhí)行“運(yùn)行/啟動(dòng)”命令,可以查看程序代碼,但不能修改。中斷模式[中斷]當(dāng)在運(yùn)行模式,按了“中斷”命令或當(dāng)程序出現(xiàn)運(yùn)行時(shí)錯(cuò)誤時(shí)進(jìn)入中斷模式??梢圆榭创a、修改代碼、檢查數(shù)據(jù)。

(2)調(diào)試窗口有三個(gè)調(diào)試窗口,它們是:“立即”窗口、“監(jiān)視”窗口、和“本地”窗口??蓡螕粢晥D菜單中的對應(yīng)命令打開這些窗口。(3)設(shè)置斷點(diǎn)和逐語句跟蹤

斷點(diǎn)是告訴VB掛起程序執(zhí)行的一個(gè)標(biāo)記,當(dāng)程序執(zhí)行到斷點(diǎn)處即暫停程序的運(yùn)行,進(jìn)入中斷模式。設(shè)置或刪除斷點(diǎn)的步驟:中斷模式下,直接查看某個(gè)變量的值,只要把鼠標(biāo)指向所關(guān)心的變量處,稍停一下,就在鼠標(biāo)下方顯示該變量的值。斷點(diǎn)標(biāo)記當(dāng)前行2.8常見錯(cuò)誤1.使用中文標(biāo)點(diǎn)符號

系統(tǒng)產(chǎn)生“無效字符”,以紅色顯示2.字母和數(shù)字形狀相似小寫字母“l(fā)”和數(shù)字“1”形式相同、小寫字母“o”與數(shù)字“0”。3.對象名稱(Name)屬性寫錯(cuò)

Text1、Text2、Command1

txtInput、txtOutput、cmdOk4.對象的屬性名、方法名、標(biāo)準(zhǔn)函數(shù)名寫錯(cuò)

盡量使用自動(dòng)列出成員功能。正確的系統(tǒng)按規(guī)定的大小寫表示。5.無意形成控件數(shù)組

建立控件時(shí)小心使用“復(fù)制”、“粘貼”按鈕6.打開工程時(shí)找不到對應(yīng)的文件

保存文件時(shí)先保存窗體.frm文件、再保存.vbp文件,注意路徑。第三章VB語言基礎(chǔ)

(2學(xué)時(shí))

3.1編碼規(guī)則

3.2數(shù)據(jù)類型

3.3變量與常量

3.4運(yùn)算符和表達(dá)式

3.5常用函數(shù)

3.6常見錯(cuò)誤

3.1編碼基礎(chǔ)1.VB代碼不區(qū)分字母的大小寫

系統(tǒng)保留字自動(dòng)轉(zhuǎn)換每個(gè)單詞的首字母大寫用戶自定義行以第一次為準(zhǔn)2.語句書寫自由

一行可書寫幾句語句,之間用冒號分隔;一句語句可分若干行書寫,用續(xù)行符連接_一行<=255個(gè)字符3.注釋有利于程序的維護(hù)和調(diào)試

Rem開始或單撇‘4.保留行號與標(biāo)號.3.2數(shù)據(jù)類型

一、標(biāo)準(zhǔn)數(shù)據(jù)類型關(guān)于Date數(shù)據(jù)類型

小數(shù)點(diǎn)左邊的數(shù)字代表日期(以天為單位),右邊數(shù)字代表時(shí)間(24小時(shí)),負(fù)數(shù)代表的是1899年12月30日之前的日期和時(shí)間。小數(shù)點(diǎn)右邊若是1位,則每0.1代表2.4小時(shí),例如0.1——2:24:000.8——19:12:00示例:-2.2——1899-12-284:48:003.2——1900-1-24:48:00365.5——1900-12-3012:00:00367.5——1901-1-112:00:00二、自定義數(shù)據(jù)類型

實(shí)際上是由標(biāo)準(zhǔn)數(shù)據(jù)類型組成的“復(fù)合”數(shù)據(jù)類型。通過Type語句實(shí)現(xiàn)。

Type

自定義數(shù)據(jù)類型名稱元素名[(下標(biāo))]As標(biāo)準(zhǔn)數(shù)據(jù)類型名

??????

EndType

示例見書上56頁。注意事項(xiàng):

(1)必須在標(biāo)準(zhǔn)模塊(.BAS)中定義;(2)元素類型可以是字符串,但必須是定長字符串。

3.3變量與常量一.變量和常量的命名規(guī)則變量:在程序運(yùn)行中其存儲(chǔ)的值可以改變。常量:在程序運(yùn)行中其值不可以改變。命名規(guī)則:1.以字母或漢字開頭,后可跟漢字、字母、數(shù)字或下劃線組成,長度小于等于255個(gè)字符;2.不要使用VB中的關(guān)鍵字;3.VB中不區(qū)分變量名的大小寫.4.為了增加程序的可讀性,可在變量名前加一個(gè)縮寫的前綴來表明該變量的數(shù)據(jù)類型。二.變量聲明1.用Dim語句顯式聲明變量

形式:Dim變量名[AS類型]

Dim變量名類型符例DimiCountAsinteger,sAllsumAssingle

等價(jià)于

DimiCount%,sAllsum!2.隱式聲明

未進(jìn)行上述的聲明而直接使用,其類型為Variant類型

建議不使用.注意:在通用聲明處加OptionExplicit語句來強(qiáng)制顯式聲明變量。除了用Dim語句聲明變量外,還可以用Static、Public、Private等關(guān)鍵字聲明變量。將在以后討論。三.常量1.用戶聲明常量形式:

Const常量名[AS類型]=表達(dá)式省略[AS類型],常量的類型由表達(dá)式值的類型決定 為使與變量名區(qū)分,一般常量名使用大寫字母例ConstMAX=1002.系統(tǒng)提供的常量

系統(tǒng)定義常量位于對象庫中,可通過“對象瀏覽器”查看.例:vbNormalvbMinimized、vbbCrLf等3.4運(yùn)算符和表達(dá)式一.運(yùn)算符

1.算術(shù)運(yùn)算符例:5+10mod10\9/3+2^2結(jié)果:10

2.字符串運(yùn)算符

&、+字符串連接"123"+"456"結(jié)果"123456""123"&"456"結(jié)果"123456"區(qū)別:+兩邊必須是字符串,&不一定例如:"abcdef"+12345'出錯(cuò) "abcdef"&12345'結(jié)果為"abcdef12345""123"+456'結(jié)果為579

"123"

&456'結(jié)果為

"123456"

3.關(guān)系運(yùn)算符

將兩個(gè)操作數(shù)進(jìn)行大小比較,結(jié)果為邏輯量。字符串比較,則按字符的ASCII碼值從左到右一一比較,直到出現(xiàn)不同的字符為止.。例:"ABCDE">"ABRA" 結(jié)果為False

"男字">"女字"按漢字的拼音字母比較4.邏輯運(yùn)算符

將操作數(shù)進(jìn)行邏輯運(yùn)算,結(jié)果是邏輯值條件表達(dá)式1And條件表達(dá)式2條件表達(dá)式均為T結(jié)果為T

條件表達(dá)式1Or條件表達(dá)式2條件表達(dá)式有一個(gè)T結(jié)果為T例如“異或”邏輯運(yùn)算真值表:T=AXorBABT000011101110如果路基運(yùn)算符對數(shù)值進(jìn)行運(yùn)算,則以數(shù)字的二進(jìn)制值逐位進(jìn)行邏輯運(yùn)算。例如:10And7,結(jié)果為2相當(dāng)于:101001110010還有2個(gè)邏輯運(yùn)算符:Eqv(等價(jià))、Imp(蘊(yùn)含)二.表達(dá)式

1.組成

變量、常量、函數(shù)、運(yùn)算符和圓括號

2.書寫規(guī)則(1)運(yùn)算符不能相鄰。例a+-b是錯(cuò)誤的。(2)乘號不能省略。例x乘以y應(yīng)寫成:x*y(3)括號必須成對出現(xiàn),均使用圓括號。(4)表達(dá)式從左到右在同一基準(zhǔn)上書寫,無高低、大小。3.不同數(shù)據(jù)類型的轉(zhuǎn)換運(yùn)算結(jié)果的數(shù)據(jù)類型向精度高的數(shù)據(jù)類型靠.

Integer<Long<Single<Double<Currency4.優(yōu)先級算術(shù)運(yùn)算符>=字符運(yùn)算符>關(guān)系運(yùn)算符>邏輯運(yùn)算例:用人單位招聘職員:年齡小于40歲,男性,學(xué)歷??苹虮究颇挲g<40性別=“男”(學(xué)歷=“專科”學(xué)歷=“本科”)

AndAndOr正確寫法:(年齡<40)And(性別=“男”)And(學(xué)歷=“??啤監(jiān)r學(xué)歷=“本科”)

例:表示算術(shù)表達(dá)式:正確的VB表達(dá)式:3〈=xAndx<=7

錯(cuò)誤的VB表達(dá)式:3<=x<=7或

3<=xOrx<=7

比a小,比b大用Ora小數(shù)b大數(shù)a小數(shù)b大數(shù)比a大,比b小用And3.5常用內(nèi)部函數(shù)1.數(shù)學(xué)函數(shù)

Rnd函數(shù)返回0和1(包括0但不包括1)之間的雙精度隨機(jī)數(shù).每次運(yùn)行時(shí),要產(chǎn)生不同序列的隨機(jī)數(shù),執(zhí)行Randomize語句.例產(chǎn)生1-100的隨機(jī)數(shù):Int(Rnd*100)+12.轉(zhuǎn)換函數(shù)

Chr(66)

“B“

Asc(“B")

66

Asc(Chr(99))99Chr(Asc(“K”))

“K”

Ucase$("abcdefg")

“ABCDEFG"3.日期函數(shù)Time返回系統(tǒng)時(shí)間

Date返回系統(tǒng)日期DateAdd(要增減日期形式,增減量,要增減的日期變量)DateDiff(要間隔日期形式,日期1,日期2)例如求兩個(gè)時(shí)間相差的秒數(shù):

DateDiff(”s”,#19:3:23#,#19:5:1#)結(jié)果為984.字符串編碼和函數(shù)(1)字符串編碼

Windows系統(tǒng)對字符采用了DBCS編碼,中文2字節(jié),西文1字節(jié)

VB中字符Unicode編碼,任何字符2字節(jié).

Len(“中國good”)為6LenB(“中國good”)為12

StrConv()進(jìn)行DBCS與Unicode之間轉(zhuǎn)換.(2)字符串函數(shù)

Mid$("ABCDEFG",2,3)"BCD"InStr(2,"ABCDEFG","EF") 5

S=Split("123,56,ab",",") Join(S,"")"12356ab" Replace("ABCDABCD","CD","123") “AB123AB123”S(0)="123”,S(1)="56”,S(2)="ab"示例:Unicode與DBCS的區(qū)別PrivateSubForm_Click() DimS1AsString,S2AsString,S3AsString S1=“VisualBasic程序設(shè)計(jì)教程”

Print“S1:len(”;S1;“)=”;Len(S1) Print“S1:lenB(”;S1;“)=”;LenB(S1) Print S2=StrConv(S1,vbFromUnicode) Print“執(zhí)行s2=StrConv(s1,vbFormUnicode)后”

Print“S2:lenB(”;S2;“)=”;LenB(S2) Print S3=StrConv(S2,vbUnicode) Print“執(zhí)行s3=StrConv(s2,vbUnicode)后”

Print“S3:lenB(”;S3;“)=”;LenB(S3)EndSub 5.格式輸出函數(shù)例3.1利用Format函數(shù)顯示有關(guān)的日期和時(shí)間。

Form_CLICK()效果

FontSize=12 MyTime=#9:21:30PM# MyDate=#7/21/97# PrintFormat(MyDate,"m/d/yy") PrintFormat(MyDate,"mmmm-yy") PrintFormat(MyTime,"h-m-sAM/PM") PrintFormat(MyTime,"hh:mm:ssA/P") '顯示系統(tǒng)當(dāng)前日期和時(shí)間

PrintFormat(Now,"yyyy年m月dd日hh:mm")

'以系統(tǒng)預(yù)定義的格式顯示系統(tǒng)當(dāng)前時(shí)間

PrintFormat(Date,"dddd,mmmm,dd,yyyy") EndSub6.Shell函數(shù)能在DOS下或Windows下運(yùn)行的應(yīng)用程序,也可以在VB中調(diào)用.形式:Shell(命令字符串,窗口類型)窗口類型值為1表示正常窗口,缺省窗口最小化為圖標(biāo)。

i=Shell("c:\windows\calc.exe")

j=Shell("c:\",1)

3.6常見錯(cuò)誤1.邏輯表達(dá)式書寫錯(cuò),在VB沒有造成語法錯(cuò)而形成邏輯錯(cuò)

例數(shù)學(xué)表達(dá)式3≤x<10VB表達(dá)式為3<=x<10

問題在于VB中的邏輯量與數(shù)值量可互轉(zhuǎn)2.同時(shí)給多個(gè)變量賦值,在VB沒有造成語法錯(cuò)而形成邏輯錯(cuò)例Dimx%,y%,z%x=y=z=13.標(biāo)準(zhǔn)函數(shù)名寫錯(cuò)4.變量名寫錯(cuò)檢查方法:在通用聲明段加OptionExplicit5.語句書寫位置錯(cuò)

在通用聲明段只能有Dim語句,不能有賦值等其它語句第四章基本的控制結(jié)構(gòu)

4.1順序結(jié)構(gòu)

4.2選擇結(jié)構(gòu)

4.3循環(huán)結(jié)構(gòu)

4.4其它輔助控制語句

4.5常用算法(一)

4.6常見錯(cuò)誤

(順序、條件、循環(huán))一.賦值語句

形式:[LET]變量名=表達(dá)式

作用:將表達(dá)式的值賦值給變量名.一般用于給變量賦值或?qū)丶O(shè)定屬性值.例:sRate!=0.1Text1.Text="歡迎使用VisualBasic6.0”

當(dāng)表達(dá)式的類型與變量的類型不一致時(shí),強(qiáng)制轉(zhuǎn)換成左邊的精度

iA%=10/3iA中的結(jié)果為3注意:雖然賦值號與關(guān)系運(yùn)算符等于號都用“=”表示,VB系統(tǒng)會(huì)根據(jù)所處的位置自動(dòng)判斷是何種意義的符號。

二.與用戶交互函數(shù)和過程

1.InputBox函數(shù)

InputBox(提示[,標(biāo)題][,缺省][,x坐標(biāo)位置][,y坐標(biāo)位置])

其中:提示提示信息,標(biāo)題對話框標(biāo)題,缺省輸入?yún)^(qū)缺省值

函數(shù)返回字符類型.例要在屏幕上顯示如下的對話框:

DimstrNameAsString*40,strS1AsString*40

相應(yīng)的語句如下:

strName=InputBox(“請輸入你的姓名”+vbCrLf+“然后單擊確定”,“輸入框”)

也可以:

strS1=“請輸入你的姓名”+Chr(13)+Chr(10)+“然后單擊確定”

strName=InputBox(strS1,“輸入框”,,100,100)

當(dāng)鍵盤輸入“王曉明”后,變量strName獲得鍵盤輸入的值.2.MsgBox函數(shù)和MsgBox過程

函數(shù)形式:變量[%]=MsgBox(提示[,按鈕][,標(biāo)題])過程形式:MsgBox提示[,按鈕][,標(biāo)題]

按鈕值如下:函數(shù)返回所選按鈕整數(shù)值:例3.2編一帳號和密碼檢驗(yàn)程序。要求:帳號不超過6位數(shù)字,有錯(cuò),清除原內(nèi)容再輸入.密碼輸入時(shí)在屏幕上以“*”代替;若密碼錯(cuò),顯示有關(guān)信息,選擇“重試”按鈕,清除原內(nèi)容再輸入,選擇“取消”按鈕,停止運(yùn)行。分析:帳號6位,MaxLength為6,LostFocus判斷數(shù)字IsNumeric函數(shù)密碼PassWordChar為“*”,MsgBox函數(shù)設(shè)置密碼錯(cuò)對話框.常見錯(cuò)誤數(shù)據(jù)合法性檢查中引起程序的死循環(huán)PrivateSubText1_LostFocus()IfNotIsNumeric(Text1)ThenText1=""Text1.SetFocus

EndIfEndSubPrivateSubText2_LostFocus()IfNotIsNumeric(Text2)ThenText2=""Text1.SetFocus

EndIfEndSubIfText2<>""AndNotIsNumeric(Text2)Text1Text2Text1確定三.選擇結(jié)構(gòu)

1.If…Then語句(單分支結(jié)構(gòu))

If<表達(dá)式>Then

語句塊

EndIf

If<表達(dá)式>Then<語句>例:已知兩個(gè)數(shù)x和y,比較它們的大小,使得x大于y.

Ifx<yThent=x

x=y

y=tEndIf

Ifx<yThent=x:x=y:y=t重要的是學(xué)會(huì)兩個(gè)數(shù)的交換,若上述語句次序變一下,結(jié)果如何?2.If…Then…Else語句(雙分支結(jié)構(gòu))

If<表達(dá)式>Then<語句塊1>

Else<語句塊2>

EndIf

If<表達(dá)式>Then<語句1>Else<語句2>

計(jì)算分段函數(shù)

單分支結(jié)構(gòu)實(shí)現(xiàn):Ifx=0Then

y=cos(x)-x^3+3*x

Ifx<>0Theny=sin(x)+sqrt(x*x+1)

雙分支結(jié)構(gòu)實(shí)現(xiàn):

Ifx<>0Then

y=sin(x)+sqrt(x*x+1)Elsey=cos(x)-x^3+3*x

EndIf3.If…Then…ElseIf語句(多分支結(jié)構(gòu))

形式:

If<表達(dá)式1>Then <語句塊1>

ElseIf<表達(dá)式2>Then <語句塊2> … [Else

語句塊n+1]EndIf

不管有幾個(gè)分支,依次判斷,當(dāng)某條件滿足,執(zhí)行相應(yīng)的語句塊,其余分支不再執(zhí)行;若條件都不滿足,且有Else子句,則執(zhí)行該語句塊,否則什么也不執(zhí)行。.

ElseIf不能寫成

ElseIf。例已知百分制成績mark,顯示對應(yīng)的五級制成績哪些正確,哪些錯(cuò)誤?4.If語句的嵌套

If語句的嵌套是指If或Else后面的語句塊中又包含If語句。形式如下:

If<表達(dá)式1>ThenIf<表達(dá)式11>Then…EndIf…EndIf

例:已知x,y,z三個(gè)數(shù),使得x>y>z。

用一個(gè)IF語句和一個(gè)嵌套的IF語句實(shí)現(xiàn):

Ifx<yThent=x:x=y:y=tIfy<zThent=y:y=z:z=tIfx<yThent=x:x=y:y=tEndIfEndIf

If語句的嵌套注意事項(xiàng):書寫鋸齒型;If與EndIf配對。算法: (1)取任意兩個(gè)數(shù)X、Y進(jìn)行比較,并使得X>Y; (2)如果Y大于第三個(gè)數(shù)Z,轉(zhuǎn)(4); (3)如果Y小于第三個(gè)數(shù)Z,則使得Y>Z(此時(shí)Y值已變),再比較X、Y,并使得X>Y; (4)結(jié)束。5.SelectCase語句(情況語句)形式:

SelectCase變量或表達(dá)式

Case表達(dá)式列表1 語句塊1

Case表達(dá)式列表2 語句塊2 … [CaseElse

語句塊n+1] EndSelect<表達(dá)式列表>:與<變量或表達(dá)式>的類型必須相同。

數(shù)值型或字符串表達(dá)式例如:已知變量strC中存放了一個(gè)字符,判斷該字符是字母字符、數(shù)字字符還是其他字符。用多分支結(jié)構(gòu)實(shí)現(xiàn):

IfUcase(strC)>="A"AndUcase(strC)<="Z"Then

PrintstrC+"是字母字符"

ElseIfstrC>="0"AndstrC<="9"Then

PrintstrC+"是數(shù)字字符"

Else PrintstrC+"其他字符"

EndIf用SelectCase語句實(shí)現(xiàn):

SelectCasestrC

Case"a"To"z","A"To"Z" PrintstrC+"是字母字符"

Case"0"To"9" PrintstrC+"是數(shù)字字符"

CaseElse PrintstrC+"其他字符"

EndSelect例輸入百分制成績mark,顯示對應(yīng)的五級制成績哪些能實(shí)現(xiàn),哪些不能實(shí)現(xiàn)?例實(shí)驗(yàn)3.6對三門課程獎(jiǎng)學(xué)金的判斷,一等獎(jiǎng)獲得:

SelectCasemark1,mark2,mark3Case(mark1+mark2+mark3)/3>=95Print"一等獎(jiǎng)"

Casemark1=100Andmark2=100Andmark2>=80……EndSelect錯(cuò)誤注意:SelectCase后不能出現(xiàn)多個(gè)變量;Case后不能出現(xiàn)變量及有關(guān)運(yùn)算符。例3.3由計(jì)算機(jī)來當(dāng)一年級的算術(shù)老師,要求給出一系列的1~10的操作數(shù)和運(yùn)算符,學(xué)生輸入該題的答案,計(jì)算機(jī)根據(jù)學(xué)生的答案判斷正確與否,當(dāng)結(jié)束時(shí)給出成績。分析:產(chǎn)生1~10操作數(shù),可通過Int(10*Rnd+1)實(shí)現(xiàn)

設(shè)置的控件名

Label1 Text1

Picture1 Command16.條件函數(shù)(1)IIf函數(shù)形式是:

IIf(表達(dá)式,當(dāng)表達(dá)式為True時(shí)的值,當(dāng)表達(dá)式為False時(shí)的值)例如,求x,y中大的數(shù),放入Tmax變量中,語句如下:

Tmax=IIf(x>y,x,y)(2)Choose函數(shù)形式是:

Choose(數(shù)字類型變量,值為1的返回值,值為2的返回值……)例如,Nop是1-4的值,轉(zhuǎn)換成+、-、×、÷運(yùn)算符的語句如下:

Op=Choose(Nop,"+","-","×","÷")

當(dāng)值為1,返回字符串“+”,然后放入Op變量中,值為2,返回字符串“-”,依次類推;當(dāng)Nop是1-4的非整數(shù),系統(tǒng)自動(dòng)取Nop的整數(shù)辦法在判斷;若Nop不在1-4之間,函數(shù)返回Null值。

常見錯(cuò)誤1.在選擇結(jié)構(gòu)中缺少配對的結(jié)束語句對多行式的If塊語句中,應(yīng)有配對的EndIf語句結(jié)束。2.多邊選擇ElseIf關(guān)鍵字的書寫和條件表達(dá)式的表示

ElseIf不要寫成ElseIf;

多個(gè)條件表達(dá)式次序問題,見例3.SelectCase語句的使用

SelectCase后不能出現(xiàn)多個(gè)變量;Case子句后不能出現(xiàn)變量見例四.循環(huán)結(jié)構(gòu)1.For循環(huán)語句(一般用于循環(huán)次數(shù)已知)形式

For循環(huán)變量=初值to終值[Step步長] 語句塊 [ExitFor]

語句塊

Next循環(huán)變量步長循環(huán)體>0初值<終值=1時(shí),可省略<0初值>終值=0死循環(huán)循環(huán)次數(shù)例:ForI=2To13Step3循環(huán)執(zhí)行次數(shù)

PrintI,輸出I的值分別為:

NextI25811Print:Print“I=“,I出了循環(huán)輸出為:I=142.Do…Loop循環(huán)語句(用于控制循環(huán)次數(shù)未知)形式1:

Do{While|Until}<條件>語句塊[ExitDo

語句塊]

Loop形式2:

Do

語句塊 [ExitDo

語句塊]

Loop{While|Until}<條件>關(guān)鍵字While和Until的區(qū)別

While用于指明條件為真時(shí)執(zhí)行循環(huán)體中的語句;Until正相反。例:

x=15x=15 Y=8Y=8 t=0

t=0DoWhilet>yDoUntilt>y t=t+1t=t+1 Ift>100Then

Ift>100Then ExitDo

ExitDo EndIf

EndIfLoopLoopMsgboxt

Msgboxt例4.12用輾轉(zhuǎn)相除法求兩自然數(shù)m,n的最大公約數(shù)和最小公倍數(shù)。分析:求最大公約數(shù)的算法思想:(1)對于已知兩數(shù)m,n,使得m>n;(2)m除以n得余數(shù)r;(3)若r=0,則n為最大公約數(shù)結(jié)束;否則執(zhí)行(4);(4)m

n,n

r,再重復(fù)執(zhí)行(2)。例求m=14,n=6

的最大公約數(shù).

Ifm<nThent=m:m=n:n=tr=mmodnDoWhile(r<>0)m=nn=rr=mmodnLoopPrint"最大公約數(shù)=",n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論