高級程序設(shè)計語言VB課件_第1頁
高級程序設(shè)計語言VB課件_第2頁
高級程序設(shè)計語言VB課件_第3頁
高級程序設(shè)計語言VB課件_第4頁
高級程序設(shè)計語言VB課件_第5頁
已閱讀5頁,還剩349頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一章

VisualBasic概述1.1VB概述

一.什麼是VB?

VB(VisualBasic)是一種通用高級程式設(shè)計語言;

VB是一種OOP開發(fā)工具。

VB是可視化的工具二.VB的特點1.可視化2.集成開發(fā)環(huán)境(IDE)。3.VB與office.(VBA)。4.支持Windows系統(tǒng)的OLE技術(shù)。5.支持面向?qū)ο蟪淌皆O(shè)計(OOP)技術(shù)。三、VB的學(xué)習(xí)特點易學(xué)難學(xué)實用聽課與實習(xí)作業(yè)與檢查1.2VisualBasic簡介一.VB運行在32位windows9x

以上版本的操作系統(tǒng)。二.VB的三種版本:標(biāo)準(zhǔn)版、專業(yè)版、企業(yè)版。1.3面向?qū)ο蟮?/p>

程式設(shè)計方法概論一、什麼是面向?qū)ο蟮某淌皆O(shè)計方法?二、什麼是對象及類?三、什麼是屬性、事件、方法?四、VB的窗體與控件

一、什麼是OOP

(面向?qū)ο蟪淌皆O(shè)計)

OOP是提高程式設(shè)計開發(fā)效率的面向?qū)ο蟮某淌皆O(shè)計方法。它以對象為中心;它是基於對類和對象的程式設(shè)計;它以事件驅(qū)動機(jī)制實現(xiàn)資訊傳遞機(jī)制與分佈式系統(tǒng),網(wǎng)路模型融為一體。二、什麼是對象及類1、類: 定義了一組有共同特性,外觀,行為的對象的範(fàn)本; 如:汽車類;電話類;機(jī)器人類 類:是對象的正式定義。

2、對象1)對象:是類的一個實例;

動作體的邏輯模型。2)對象包括類共同特性下的

具體數(shù)據(jù)(尺寸,顏色,狀態(tài));

具體操作(事件,方法)3)對象的屬性(property)

對象的事件(event)

對象的方法(method)4)對象是程式運行時刻的基本成分,是一個封裝體。

而這個類的實例—對象,便是一部電話。電話的電路結(jié)構(gòu)和設(shè)計佈局可以是一個類品牌型號顏色大小聽筒有拿起和掛上兩種狀態(tài)三.什麼是屬性:

對象特征的描述。對象具有屬性(Property)每個對象都有屬性。屬性定義了對象的特徵或某一方面的行為。屬性由對象所基於的類決定。屬性值既能在設(shè)計時也可在運行時進(jìn)行設(shè)置。四、什麼是“事件”1、事件:是對象可以識別的動作;2、事件:使某個對象進(jìn)入活動狀態(tài)(又稱啟動)的一種操作或動作。3、事件發(fā)生:

自動執(zhí)行一段事先安排的代碼程式。4、事件驅(qū)動機(jī)制。5、例如:演示五.什麼是“方法”

指的是控制對象動作行為的方式。 為對象安排完成某個任務(wù)的“方法”;此方法對應(yīng)有程式或代碼。 例如:為某電話設(shè)計了一個可以打出市話外線的方法程式:撥02。

設(shè)計了一個可以打出長途電話的方法程式:撥03。習(xí)題4.有一個紅色、充滿氫氣的氣球,如果人不小心鬆開手抓的引線,就會飛走;如果用針刺它,則會爆破。請問,對於氣球?qū)ο螅男┦菍傩?、哪些是事件、哪些是方法?討論?/p>

“機(jī)器人”:屬性、事件、方法?六、VB的窗體與控件窗體:VB的窗體是大容器。

例如:WORD的窗口,對話框控件:是放在窗體的部件(組件)

例如:窗口中的文本框,列表框,命令按鈕……窗體與控件都有自己的屬性,事件,方法。事件驅(qū)動機(jī)制。舉例。小結(jié)VB與VB的特點。理解OOP、類、對象、屬性、事件、方法等概念。理解“事件驅(qū)動”過程的程式設(shè)計原理。1.2“工程”的概念一個應(yīng)用程式——一個工程檔

(擴(kuò)展名:.vbp)一個工程檔:

將與工程有關(guān)的各種類型檔組織在一起。並不包含這些檔,只是對檔的引用。所以

一個窗體檔可以屬於不同的工程檔。開始:‘工程1.VBP’。(可以更名)1.2VB的開發(fā)環(huán)境一.標(biāo)題條二.菜單三.工具欄四.窗體設(shè)計器五.控制箱六.彈出式菜單七.工程資源管理器窗口和代碼窗口八.屬性窗口九.“窗體佈局”窗口十.“立即”、“本地”和“監(jiān)視”窗口十一.對象流覽器P3-P7詳細(xì)如下標(biāo)題條菜單工具欄窗體設(shè)計器控件箱工程資源

管理窗口屬性窗口佈局窗口詳細(xì)如下

工程資源管理器窗口又稱為工程流覽器窗口,在窗口中會列出當(dāng)前工程的所有窗體和模組。

工程流覽器窗口也有一個小工具欄,上面的三個按鈕分別用於查看代碼、查看對象和切換檔夾。

單擊“查看代碼”按鈕,則會出現(xiàn)該對象的代碼編輯器窗口。

代碼編輯器是輸入應(yīng)用程式代碼的窗口。應(yīng)用程式的每個窗體或代碼模組都有一個單獨的代碼編輯器窗口。彈出式菜單 在要使用的對象上單擊滑鼠右鍵即可打開彈出式菜單。屬性窗口 屬性窗口由標(biāo)題條、對象列表框和屬性列表框及屬性說明幾部分組成工具欄

VB的工具欄由若干命令按鈕組成,在編程環(huán)境下提供對於常用命令的快速訪問。以下給出了各個命令按鈕的名稱及功能。1.3利用VB開發(fā)應(yīng)用程式的

一般步驟一.創(chuàng)建程式的用戶介面二.設(shè)置介面上各個對象的屬性三.編寫對象回應(yīng)事件的程式代碼P8四.保存工程(P9).vbp

工程檔一個工程保存在一個檔夾內(nèi)五.測試和調(diào)試應(yīng)用程式六.創(chuàng)建可執(zhí)行程式自己動手!舉例:

P9—P101.4VB的幫助“幫助”是自學(xué)的老師;是‘110’。獲得幫助的方法。P36-P37VB的示例程式(完全安裝,MSDN)

可以剪切到自己的程式中。演示小結(jié)瞭解什麼是工程。熟悉VB的開發(fā)環(huán)境。熟練掌握VB開發(fā)應(yīng)用程式的一般步驟。學(xué)會使用幫助。習(xí)題:P13。VB程式代碼的組織方式一、模組的概念:

1、窗體模組(.frm檔)

2、標(biāo)準(zhǔn)模組(.bas檔)

3、類模組(.cls檔)二、各種模組的功能三、各種模組包含的內(nèi)容(過程...)四、各種模組如何創(chuàng)建,組織3.1五、過程具有特定書寫格式、包含若干可被作為一個整體執(zhí)行的代碼組(小程式段)過程的種類:事件過程、通用過程。過程的作用範(fàn)圍:private

與public事件過程通用過程P41練習(xí)事件過程為窗體以及各種對象編寫的用來回應(yīng)各種事件的代碼行就是“事件過程”。

事件過程存儲在被稱為“窗體模組”的檔中(擴(kuò)展名.FRM)。在缺省情況下,是“私有的”(Private)。事件過程的代碼框架是由VB系統(tǒng)自動提供的

(圖3-1)。

圖3-1通用過程一個應(yīng)用程式中可被多個窗體共用的過程被稱為“通用過程”。

通用過程是由事件過程或其他通用過程調(diào)用而執(zhí)行的。在缺省情況下,它是“公有的”(Public),即通用過程可被所有的窗體共用。通用過程的位置:(窗體與標(biāo)準(zhǔn)模組)通用過程的創(chuàng)建圖3-2練習(xí)P53第1,2,3題代碼行的書寫規(guī)則語句書寫規(guī)範(fàn)練習(xí)3.2語句語句是

程式的最基本成份。語句的功能:提供資訊(如定義數(shù)據(jù)類型),或者執(zhí)行的某些操作。

語句的一般形式是:

一個語句可寫在一行上;一個語句可寫在多行上;使用“續(xù)行標(biāo)誌”多個語句可以寫在一行上;

語句之間用冒號“:”分隔。

<語句定義符>[語句體]示例語句示例例1,一個語句分寫在多行上:Dimstudent_nameAsString,student_numberAs_String,computerAsInteger,englishAsInteger例2,一行寫多個語句:

x=10:y$="VisualBasic":z=20書寫規(guī)範(fàn)語句中字母不區(qū)分大小寫。一個代碼行輸入完後,按回車鍵。系統(tǒng)自動進(jìn)行語法檢查。系統(tǒng)自動將所有“保留字”的第一個字母改為大寫字母。如,Rem是系統(tǒng)保留字,所以不論輸入的是ReM、還是rem或REM等,系統(tǒng)都會自動變換成Rem。

VB的數(shù)據(jù)類型 VB要處理各種各樣的數(shù)據(jù),如何有效的描述與處理這些數(shù)據(jù)?

每種數(shù)據(jù)類型的要素:數(shù)據(jù)類型常量變數(shù)3.3類型定義存儲大小取值範(fàn)圍運算函數(shù)數(shù)據(jù)類型VB支持的數(shù)據(jù)類型多達(dá)12種。表3-1變數(shù)若不加說明,系統(tǒng)均按viarian類型處理,它可以存儲各種類型的數(shù)據(jù)。

如果需要處理的數(shù)值超出了相應(yīng)數(shù)據(jù)類型數(shù)據(jù)的表示範(fàn)圍,將產(chǎn)生“數(shù)據(jù)溢出”錯誤。

3.3.1常量數(shù)值常量字元常量邏輯型常量 只有兩個取值:True和False。

日期常量符號常量3.3.2數(shù)值常量一般的數(shù)值常量由正負(fù)號、數(shù)字和小數(shù)點組成,正數(shù)的正號可以省略。

不帶小數(shù)點的數(shù)稱為“整數(shù)”(integer,long)。帶小數(shù)點的數(shù)稱為“實型數(shù)”或“浮點數(shù)”。(Single,double)。

浮點數(shù)值可表示為

mmmEeee

mmm

Deee

兩種形式數(shù)值常量示例數(shù)值常量示例123-22732742(integer)

1758624-3765410(long)123.4-752.6781.234E-5-9.654E-6(single)-5732.12345-8.573264907D-15(double)&O137

表示這是一個八進(jìn)制數(shù)137,它相當(dāng)於十進(jìn)位數(shù)95;

&H137

表示這是一個十六進(jìn)制數(shù)137,它相當(dāng)於十進(jìn)位數(shù)311。

字元常量把一串字元用引號括起來,就構(gòu)成一個字元常量。例如:

"VisualBasic"、"Howareyou!"、"aB"等都是合法的字元常量。字元常量最多可達(dá)65535個字元。注意:“ABC”不等於“abc”

日期常量日期常量要用“#”括起來。

日期型常量的一般表示形式是:

#月月/日日/年年#

如2003年2月15日可表示為:

#1/1/2003#

或者為:#january1,2003#符號常量以符號形式表示的常量稱為“符號常量”。代表常量的符號稱作“常量名”。

Const語句的形式是:

VB還在其內(nèi)部定義了許多符號常量

如:Vbred,Vbblue…...

[Public|Private]Const<常量名>[Astype]=<數(shù)值>變數(shù)變數(shù)名及類型說明變數(shù)作用域與變數(shù)說明語句3.3.3變數(shù)名及類型說明變數(shù)名的命名規(guī)則是:

首字元必須是字母;

長度不超過255個字元;

在作用域內(nèi)必須唯一;

不得包括點號和%、&、!、#、@、$。

為了提高程式的可讀性,變數(shù)名之前加上一個約定的首碼,用於表示變數(shù)的數(shù)據(jù)類型。約定的首碼見表3-2。表3-2數(shù)據(jù)類型首碼數(shù)據(jù)類型首碼整型int長整型lng單精確度型sng雙精度型dbl邏輯型bln貨幣型cur日期型dt字串型str變體型vnt位元組型byt變數(shù)作用域與變數(shù)說明語句定義變數(shù)的兩個要點:

在什麼地點定義變數(shù)用什麼語句定義變數(shù)變數(shù)作用域變數(shù)說明語句OptionExplicit語句變數(shù)作用域等級(語句)範(fàn)圍(地點)

局部

Dim/static在過程中說明,僅在此過程中有效窗體/模組

Dim/Private

在窗體或模組中說明,在此模組或窗體的所有過程內(nèi)均有效全局(公有)

Public在模組或窗體中說明,在工程內(nèi)的所有過程中都有效注意:變數(shù)兩個要點的應(yīng)用變數(shù)說明語句四種說明語句說明變數(shù)的類型:

Dim|Public|Private|Static注意:使用四種說明語句的地點!Dim語句對變數(shù)的初始化。變數(shù)的類型也可以“隱式說明”。

VB規(guī)定的類型說明字元如表3-4。關(guān)於字串變數(shù)的聲明表3-4說明字元示例意義%x%表示x是整型變數(shù)&x&表示x是長整型變數(shù)!x!表示x是單精確度變數(shù)#x#表示x是雙精度變數(shù)@x@表示x是貨幣型變數(shù)$x$表示x是字元型變數(shù)關(guān)於字串變數(shù)的聲明字串型變數(shù)的長度是可變的。但也可以說明為具有固定長度。方法是:

例如,

DimEmpNameAsString*50

去掉多餘的空格,使用Trim

RTrim

函數(shù)。

標(biāo)準(zhǔn)模組中的定長字串變數(shù)可說明為

Public

Private。在窗體和類模組中,則必須說明為

Private。

Dim<變數(shù)名>AsString

*

sizeOptionExplicit語句

在模組中使用OptionExplicit語句,系統(tǒng)將檢查模組中所有未加顯式說明的變數(shù),一旦發(fā)現(xiàn)有這樣的變數(shù)存在,就會產(chǎn)生一個出錯資訊,提示使用者改正錯誤。

運算符與運算式VB中運算符和運算式可分為以下三類。

算術(shù)運算符與算術(shù)運算式關(guān)係運算符與關(guān)係運算式邏輯運算符與邏輯運算式運算規(guī)則3.4算術(shù)運算符與算術(shù)運算式算術(shù)運算符算術(shù)運算式3.4.1算術(shù)運算符VB的算術(shù)運算符有以下幾種:

^乘方運算符;+加;-減(負(fù)號)*乘;/除;

\

整除

例:8\6結(jié)果等於1Mod取餘運算

例:8Mod6結(jié)果等於2&字串連接運算

例:"Visual"&"Basic"結(jié)果是VisualBasic

算術(shù)運算符的運算次序為:

^→

-(負(fù)號)→*和

/→\(整除)→Mod→+和

-

→&算術(shù)運算式可以使用圓括號來改變運算次序。

例:

a*b/(c*d)3.14159265*r^2

等都是合法的算術(shù)運算式。注意:

P53第9題,第8題關(guān)係運算符與關(guān)係運算式

關(guān)係運算用於對兩個數(shù)據(jù)進(jìn)行比較,比較結(jié)果為邏輯值“True”或“False”。關(guān)係運算符關(guān)係運算式3.4.2關(guān)係運算符運算符功能<小於<=小於等於>大於>=大於等於<>不等於=等於Is用來比較兩個對象的引用變數(shù)關(guān)係運算式

字元型數(shù)據(jù)的關(guān)係運算是依照字元的ASCII代碼,自左至右按照“查英語字典”的原則進(jìn)行。例如:

“aBcd”>“abc”的運算結(jié)果是False注意:

x+y>a+b

先做算術(shù)運算再做關(guān)係運算!邏輯運算符與邏輯運算式

邏輯運算是對邏輯值進(jìn)行的運算。

邏輯運算符邏輯運算式3.4.3邏輯運算符NOT

邏輯非

NOTA>BAND

邏輯與

例:a>=bANDa>=cOR

邏輯或

例:a>=5ORa<=—5XOR

邏輯異或

邏輯運算的優(yōu)先次序是:

NOT→AND→OR→XOR邏輯運算式邏輯運算式主要用於表示一些複雜的判斷條件。

運算規(guī)則算術(shù)運算符—關(guān)係運算符—邏輯運算符。不同數(shù)據(jù)類型的數(shù)據(jù)進(jìn)行運算,結(jié)果的類型為兩個運算對象中存儲長度較長的那個對象的類型。注意:除法運算是個例外,不論除數(shù)與被除數(shù)類型如何,結(jié)果總是雙精度型。

3.4.4VB公共函數(shù)(考點)公共函數(shù)是由系統(tǒng)提供的,可隨時隨地調(diào)用。

函數(shù)調(diào)用形式:函數(shù)名(參數(shù)表)。函數(shù)的三要素

函數(shù)名與功能,參數(shù),返回值算術(shù)函數(shù)字元函數(shù)轉(zhuǎn)換函數(shù)日期與時間函數(shù)格式化函數(shù)Format$3.5必須掌握的函數(shù)(考綱)函數(shù)的上機(jī)練習(xí)P54第11題與補充題函數(shù)的總結(jié)函數(shù)名功能Sqr(x)求平方根值,x≥0Log(x)求自然對數(shù),x>0Exp(x)求以e為底的冪值,即求exAbs(x)求x的絕對值Hex[$](x)求x的十六進(jìn)制數(shù)值Oct[$](x)求x的八進(jìn)制數(shù)值Sgn(x)求x的符號,當(dāng)x>0,返回1;x=0,返回0;x<0,返回-1Rnd[(x)]產(chǎn)生一個在(0,1)區(qū)間均勻分佈的亂數(shù),若x=0,則給出的是上一次利用本函數(shù)產(chǎn)生的亂數(shù)Sin(x)求x的正弦值,x單位是弧度Cos(x)求x的余弦值,x單位是弧度Tan(x)求x的正切值,x單位是弧度Atn(x)求x的反正切值,函數(shù)返回的是主值區(qū)間的弧度值函數(shù)名功能Len(x)求x字串的長度(字元個數(shù))Left[$](x,n)從x字串左邊起取n個字元Right[$](x,n)從x字串右邊起取n個字元Mid[$](x,n1,n2)從x字串左邊第n1個位置開始向右起取n2個字元Ucase[$](x)將x字串中所有小寫字元改為大寫Lcase[$](x)將x字串中所有大寫字元改為小寫Ltrim[$](x)去掉x左邊的空格Rtrim[$](x)去掉x右邊的空格Instr([n,]x,"字元")從x的第n個位置起查找給定的字元,返回該字元在x中的位置,n的缺省值為1String[$](n,"字元")得到由n個給定字元組成的一個字串Space[$](n)得到n個空格函數(shù)名功能Str[$](x)將數(shù)值數(shù)據(jù)x轉(zhuǎn)換成字串(含符號位)Val(x)將字串x中的數(shù)字轉(zhuǎn)換成數(shù)值Chr[$](x)返回以x為ASCII代碼值的字元Asc(x)給出字元x的ASCII代碼值(十進(jìn)位數(shù))Cint(x)將數(shù)值型數(shù)據(jù)x的小數(shù)部分四捨五入取整Fix(x)將數(shù)值型數(shù)據(jù)x的小數(shù)部分舍去Int(x)取小於等於x的最大整數(shù)CBool(x)將任何有效的字串或數(shù)值轉(zhuǎn)換成邏輯型CByte(x)將0至255之間的數(shù)值轉(zhuǎn)換為位元組型CDate(x)將有效的日期字串轉(zhuǎn)換成日期Ccur(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成貨幣型數(shù)據(jù)CLng(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成長整數(shù)型,小數(shù)部分四捨五入CDbl(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成雙精度數(shù)CSng(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成單精確度型Cvar(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成變體型CStr(x)將x轉(zhuǎn)換成字串型函數(shù)名功能Date[$]返回系統(tǒng)當(dāng)前的日期Time[$]返回系統(tǒng)當(dāng)前的時間Now返回系統(tǒng)當(dāng)前的日期和時間Year(x)X應(yīng)為一有效的日期變數(shù)、常量或字元運算式本函數(shù)返回一個表示x的年號的整數(shù)Month(x)X應(yīng)為一有效的日期變數(shù)、常量或字元運算式本函數(shù)返回一個表示x的月份的整數(shù)Day(x)X應(yīng)為一有效的日期變數(shù)、常量或字元運算式本函數(shù)返回1到31之間的整數(shù),表示是一個月的第幾日Weekday(x[,c])X應(yīng)為一有效的日期變數(shù)、常量或字元運算式c是用於指定星期幾為一個星期第一天的常數(shù),缺省時表示一周的星期天為第一天格式化函數(shù)Format$Format[$]是專門用於將各種數(shù)據(jù)按指定格式輸出的函數(shù)。它的一般形式是:

式中的fmt$是用於格式控制的字串。

格式控制字元有:

#、0、.、,、%、$、-、+、(、)、E+、E-Format函數(shù)僅用於控制數(shù)據(jù)的外部輸出形式,不會改變數(shù)據(jù)在電腦內(nèi)部的存儲形式。

Format[$](<算術(shù)運算式>,fmt$)本章總結(jié)VB程式的組織方式

(模組與過程)數(shù)據(jù)、運算式及運算規(guī)則:

類型、常量、

變數(shù)說明與作用域;(兩個要點)

運算符與表達(dá)式、運算規(guī)則

公共函數(shù):(三要素)

常用算術(shù)函數(shù)、轉(zhuǎn)換函數(shù)、字元函數(shù)、

日期函數(shù)及Format函數(shù)的功能及應(yīng)用

演算法基礎(chǔ)及VB的基本語句

第4章演算法及程式設(shè)計基礎(chǔ)賦值語句及InputBox、MsgBox函數(shù)

分支結(jié)構(gòu)與分支結(jié)構(gòu)語句迴圈結(jié)構(gòu)與迴圈結(jié)構(gòu)語句程式示例小結(jié)演算法及程式設(shè)計基礎(chǔ)演算法的特徵演算法的描述基本演算法結(jié)構(gòu)4.1演算法的特徵確定性可行性有窮性輸入性輸出性演算法的描述流程圖。 是使用規(guī)定的圖形符號來描述演算法的。

流程圖使用的圖形符號見表4-1。圖4-1和圖4-2分別是兩個演算法示例的流程圖。圖框內(nèi)的文字用於說明具體的操作內(nèi)容。上例表現(xiàn)演算法的五個特性圖形符號名稱代表的操作輸入/輸出數(shù)據(jù)的輸入與輸出處理各種形式的數(shù)據(jù)處理判斷判斷選擇,根據(jù)條件滿足與否選擇不同路徑起止流程的起點與終點特定過程一個定義過的過程流程線連接各個圖框,表示執(zhí)行順序連接點表示與流程圖其他部分相連接基本演算法結(jié)構(gòu)“結(jié)構(gòu)化程式設(shè)計方法”的核心是規(guī)定了演算法的三種基本結(jié)構(gòu):

順序結(jié)構(gòu)、分支結(jié)構(gòu)和迴圈結(jié)構(gòu)。P58

三種基本結(jié)構(gòu)的共同特點是:

1)只有單一的入口和單一的出口;2)每個部分都可能被執(zhí)行;3)結(jié)構(gòu)內(nèi)不存在永不終止的死迴圈。賦值語句及InputBox、MsgBox函數(shù)

賦值語句InputBox函數(shù)MsgBox函數(shù)4.2習(xí)題:P81:第6,7,8題上機(jī):P41實驗5.1,5.2賦值語句賦值語句的形式不同數(shù)據(jù)類型數(shù)據(jù)的賦值圖4-4

一個說明不同數(shù)據(jù)類型數(shù)據(jù)賦值方式的簡單程式示例

4.2.1賦值語句的形式賦值語句的一般形式是:

其中var表示某個變數(shù)名或?qū)傩悦?/p>

先運算,後“賦值”。

賦值語句可使變數(shù)或某個對象的某屬性獲得一個新值。示例

賦值語句還可以獲取一個對象的當(dāng)前屬性值。例如:pw=texpass.text

var=<運算式>賦值語句示例x="Thisis”&“aflower"number%=72+23Lable1.Text="Filenameis:"Text.Font.Size=12Y=(a+b)/2思考:如何將A與B交換內(nèi)容?不同數(shù)據(jù)類型數(shù)據(jù)的賦值有數(shù)值意義的字串,OK!

無數(shù)值意義的字符串出錯!字元數(shù)值變數(shù)True—”true”;False—”False”邏輯值字元變數(shù)Ture:變數(shù)的值將為-1;

False:變數(shù)的值為0邏輯值整型變數(shù)值轉(zhuǎn)換為字元型賦給變數(shù)數(shù)值字元變數(shù)先求值再轉(zhuǎn)換為變數(shù)類型後再賦值數(shù)值數(shù)值變數(shù)系統(tǒng)處理

運算式類型

變數(shù)類型

邏輯變數(shù)數(shù)值非0值轉(zhuǎn)換為True賦變數(shù),

0則轉(zhuǎn)換為False賦變數(shù)圖4-4

一個簡單程式示例

InputBox函數(shù)InputBox函數(shù)

用來接受用戶通過鍵盤輸入的數(shù)據(jù)。

InputBox函數(shù)應(yīng)用示例

P61

4.2.2N_student=inputbox(“請輸入你的學(xué)號”,”程式示例”,230001)運行時,N_student的值為用戶輸入的學(xué)號值MsgBox函數(shù)MsgBox函數(shù)用於向用戶發(fā)佈提示資訊,並要求用戶作出必要的回應(yīng)。MsgBox函數(shù)根據(jù)用戶選擇單擊的按鈕而返回不同的值MsgBox函數(shù)有以下幾種使用方法4.2.3MsgBox函數(shù)的幾種使用方法

三種方法都可以獲得如圖所示畫面。 但第二、三種用法將得不到用戶點擊不同按鈕的返回值(或沒有返回值)。Ans=msgbox(“非法數(shù)據(jù)!”,48,“提示資訊”)printmsgbox(“非法數(shù)據(jù)!”,48,“提示資訊”)Msgbox“非法數(shù)據(jù)!”,48,“提示資訊”123參數(shù)C1,C2,C3,C4見P62分支結(jié)構(gòu)與分支結(jié)構(gòu)語句

分支結(jié)構(gòu)是程式的基本演算法結(jié)構(gòu)之一。VB提供了實現(xiàn)分支結(jié)構(gòu)的相關(guān)語句。If-Then-Else-EndIf結(jié)構(gòu)語句Select-Case-EndSelect結(jié)構(gòu)語句4.3習(xí)題:P81第2題上機(jī):P43實驗5.3到5.7If-Then-Else-EndIf結(jié)構(gòu)語句該結(jié)構(gòu)語句的一般形式該結(jié)構(gòu)的變形1該結(jié)構(gòu)的變形2[例4-1]已知三角形三個邊的長度,設(shè)計求此三角形面積的程式

[例4-2]一個有多個分支的示例程式

4.3.1If結(jié)構(gòu)語句的一般形式IfeThen[A組語句]Else[B組語句]EndIfIf結(jié)構(gòu)的變形1IfeThenA組語句EndifIfeThen<語句>If結(jié)構(gòu)的變形2Ife1ThenA1組語句

ElseIfe2ThenA2組語句

...Endif[例4-1]已知三角形三個邊的長度,設(shè)計求此三角形面積的程式演算法流程圖當(dāng)a+b>c且a+c>b且b+c>a時,三角形存在,其面積式中:

p=(a+b+c)/2[例4-1]演算法流程圖[例4-2]一個有多個分支的示例程式程式代碼[例4-2]程式代碼PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)

Ifx<1ThenText2.Text=“這是小於1的數(shù)”

ElseIfx<=10ThenText2.Text=“這是1到10之間的數(shù)”

ElseText2.Text=”這是大於10的數(shù)”

EndIfEndSubSelect-Case-EndSelect結(jié)構(gòu)語句實現(xiàn)多分支結(jié)構(gòu)的另一種方法。

例4-2的程式代碼也可使用本結(jié)構(gòu)語句實現(xiàn)

4.3.2SelectCaseeCasec1A組語句

Casec2B組語句

...CaseElsen組語句

EndSelecte稱為測試運算式;

c1,c2,...是測試項(1)具體取值:如:3、5、7.2等(當(dāng)測試運算式是算術(shù)運算式時);(2)連續(xù)的數(shù)據(jù)範(fàn)圍:如:8To20;BToH等;(3)滿足某個判決條件:如:Is>20;Is<="P"等。例4-2使用本結(jié)構(gòu)語句實現(xiàn)PrivateSubCommand1_Click()DimxAsIntegerx=Val(text1.Text)

SelectCasexCaseIs<1Text2.text="這是小於1的數(shù)"Case1To10Text2.Text="這是1到10之間的數(shù)"CaseElseText2.Text="這是大於10的數(shù)"

EndSelectEndSub迴圈結(jié)構(gòu)與迴圈結(jié)構(gòu)語句

迴圈結(jié)構(gòu)是程式的基本演算法結(jié)構(gòu)。所謂迴圈,就是重複地執(zhí)行某些操作。

當(dāng)型迴圈和直到型循的不同執(zhí)行方式Do-Loop迴圈結(jié)構(gòu)語句For-Next迴圈結(jié)構(gòu)語句迴圈嵌套4.4習(xí)題:P81第3,4,5,9題上機(jī):P47實驗6.1到6.6回顧(3.30)賦值語句的相容(P60)IF語句的多態(tài)(舉例)Elseif語句的迷惑(舉例)多路分支語句selectcase的妙用DO語句的2種結(jié)構(gòu)、2種控制語句關(guān)於FOR語句當(dāng)型迴圈和直到型循的不同執(zhí)行方式當(dāng)型迴圈的不同執(zhí)行方式直到型迴圈的不同執(zhí)行方式Do-Loop迴圈結(jié)構(gòu)語句Do-Loop迴圈結(jié)構(gòu)語句的四種形式

ExitDo語句

[例4-3]

求兩個自然數(shù)的最大公約數(shù)程式

4.4.11.DoWhilee2.Do......[ExitDo][ExitDo]......LoopLoopWhilee

3.DoUntile4.Do......[ExitDo][ExitDo]......LoopLoopUntile回顧(4.27)補課問題賦值語句的相容(P60)IF語句的多態(tài)(舉例)Elseif語句的迷惑(舉例)多路分支語句selectcase的妙用DO語句的2種結(jié)構(gòu)、2種控制語句關(guān)於EXITDO語句ExitDo語句循環(huán)體中,執(zhí)行到ExitDo語句時,就會直接退出本層迴圈,轉(zhuǎn)而執(zhí)行Loop語句的下一條語句。最常用的形式是與If-Then語句相結(jié)合,即:

IfeThenExitDo表示:如果條件e被滿足,則執(zhí)行ExitDo語句直接退出本層迴圈。

舉例:P81第3題[例4-3]

求兩個自然數(shù)的最大公約數(shù)程式在程式中加入對數(shù)據(jù)的合法性進(jìn)行檢驗的部分;數(shù)據(jù)類型可選用長整型。

使用Mod運算符時,切記應(yīng)前後各加一個空格

程式代碼

最小公倍數(shù)?For-Next迴圈結(jié)構(gòu)語句如果事先已知迴圈次數(shù),則可使用For-Next迴圈結(jié)構(gòu)語句。它的一般形式是:

For-Next迴圈結(jié)構(gòu)語句的執(zhí)行方式注意[例4-4][例4-5]4.4.2Forv=e1Toe2[Stepe3]

[ExitFor]

Nextvv是迴圈控制變數(shù),

e1為初值;

e2為終值;

e3為步長。

當(dāng)e3=1時,可省略。For-Next迴圈結(jié)構(gòu)語句的執(zhí)行方式1.計算e1、e2和e3的值;2.給v賦初值;(1與2只做一次)3.判v的值是否超過e2,如果未超過,則執(zhí)行循環(huán)體;如果超過了,則退出迴圈。4.做完循環(huán)體後,到Next語句,v增加一個步長;轉(zhuǎn)3:判別操作。

注意迴圈參數(shù)e1、e2和e3中包含的變數(shù)如果在循環(huán)體內(nèi)被改變,不會影響迴圈的執(zhí)行次數(shù);但迴圈控制變數(shù)若在循環(huán)體內(nèi)被重新賦值,則迴圈次數(shù)有可能發(fā)生變化(舉例P82:#4)若使用非整型數(shù)做迴圈控制變數(shù)和迴圈參數(shù),那麼迴圈次數(shù)就有可能發(fā)生意想不到的變化。[例4-4]求1到10這十個數(shù)的和與連乘積

求若干個數(shù)之和或連乘積,可採用“累加”或“累乘”法。累加法是設(shè)置一個存放和數(shù)的變數(shù),稱為“累加器”,初始值為0,累加過程通過迴圈實現(xiàn);累乘的演算法設(shè)置的是“累乘器”,初始值為1,在循環(huán)體內(nèi),乘數(shù)應(yīng)與累乘器相乘。設(shè)置適當(dāng)?shù)臄?shù)據(jù)類型。程式代碼

FOR語句的特例關(guān)於正常情況下的迴圈次數(shù)關(guān)於正常情況下迴圈結(jié)束後迴圈變數(shù)的值EXITFOR語句非正常情況下:迴圈變數(shù)的值??!舉例:

P81#3#4迴圈嵌套無論是Do-Loop迴圈,還是For-Next迴圈,都可以在大循環(huán)中套小迴圈。注意:小迴圈一定要完整地被包含在大循環(huán)之內(nèi)。

PrivateSubForm_Click()Fori=1To9Forj=1To9Printi;"*";j;"=";i*j;NextjPrintNextiEndSub[例4-6]一個模擬搖獎的程式

4.4.3小結(jié)VB的基本語法規(guī)則VB的基本元素(常量,變數(shù),函數(shù),運算符,各種運算式)結(jié)構(gòu)化程式的三種結(jié)構(gòu)(順序,分支,迴圈)如何設(shè)計演算法?如何用VB實現(xiàn)演算法?[例4-5]大寫字母逆序輸出的程式回顧幾組函數(shù):

Len(),

Mid(),Left(),Right(),Chr,Asc()本例利用Mid函數(shù)可以從字串中提取出單個字元如何控制迴圈過程?(使用Len函數(shù));如何處理?(採用連接運算)如何逆序輸出?(程式設(shè)計技巧之一)

程式代碼[例4-6]一個模擬搖獎的程式設(shè)有100個人中簽,要從中找出中獎人。由機(jī)器自動隨機(jī)產(chǎn)生1000個1到100間的數(shù)據(jù),第1000個亂數(shù)據(jù)即為中獎人的號碼。

如何產(chǎn)生1~100之間的隨機(jī)整數(shù)??捎靡韵鹿剑?/p>

Int((上限

-下限lb+1)*Rnd)+下限

調(diào)用

Rnd之前,可先使用無參數(shù)的

Randomize語句初始化亂數(shù)生成器程式代碼程式示例[例4-7]一個簡易函數(shù)計算器程式

(P74)[例4-8]

個人收入調(diào)節(jié)稅應(yīng)用程式

(P77)[例4-9]牛頓迭代法程式設(shè)計(P78)[例4-10]

原碼轉(zhuǎn)換成反碼的程式(P79)

4.5[例4-7]一個簡易函數(shù)計算器程式預(yù)處理:

考慮在文本框中沒有輸入數(shù)據(jù);輸入的數(shù)據(jù)超出函數(shù)的定義域時的出錯處理。

程式中使用的IsNumeric(s)函數(shù)用於檢測引數(shù)s是否是一個可轉(zhuǎn)換成數(shù)值的數(shù)字串,如果是,則返回邏輯值True,否則返回False。

程式代碼

PrivateSubcmd1_Click()

IfText1.Text=""ThenMsgBox"請輸入X值!",48+vbOKOnly,"程式示例"Text1.SetFocus

ElseIfIsNumeric(Text1.Text)ThenX=Val(Text1.Text) ‘求函數(shù)

Label2.Caption=“Exp(X)=:” ‘換門牌

Text2.Text=Str(Exp(X)) ‘送結(jié)果

ElseMsgBox"輸入數(shù)據(jù)錯誤!",48+vbOKOnly,"程式示例"Text1.Text="”

EndIfEndSubexp效果?初始介面MsgBox“請輸入X值!”,48+vbOKOnly,"程式示例"顯示結(jié)果按月收入額計個人收入調(diào)節(jié)稅的計稅公式式中,pay為納稅人的月收入。

程式代碼[例4-8]個人收入調(diào)節(jié)稅應(yīng)用程式

PrivateSubCommand1_Click()DimtaxAsSingle,payAsSinglepay=Text1.Text

IfCheck1.Value=1orpay<=1000Thentax=0

ElseIfpay<=1500Thentax=(pay-1000)*0.05

ElseIfpay<=2000Thentax=25+(pay-1500)*0.1…………...

Else ‘什麼情況下執(zhí)行??tax=700+(pay-4500)*0.4

EndIfText2.Text=taxEndSub思考:1、判斷順序2、if--then--elseif的結(jié)合?3、改成selectcase語句?[例4-9]利用牛頓迭代法求方程根xex-1=0at:x0=0.5<=10-7

演算法說明

P78程式代碼

P79OptionExplicitPrivateSubcmd1_Click()DimxAsSingle,x1AsSingle,EpsAsSinglex=InputBox("輸入初始值x:","牛頓迭代法")Eps=InputBox("輸入允許誤差Eps:","牛頓迭代法")

Dox1=x ‘總把新符換舊符

x=x1-(x1*Exp(x1)-1)/(Exp(x1)*(x1+1))

Loop

UntilAbs(x-x1)<=EpsText1.Text=Str(x)EndSub[例4-10]

原碼轉(zhuǎn)換成反碼的程式Mid函數(shù)的另外一個功能:

可以用在賦值語句中:其功能是用指定的字元替換字串中指定位置的內(nèi)容。例s=“abcdef”

mid(s,4,3)=“xyz”‘s的結(jié)果為“abcxyz”程式代碼

PrivateSubCommand1_Click()DimSourceAsString,IAsIntegerSource=Text1.Text

IfMid(Source,1,1)<>"1"ThenText2.Text="正數(shù)沒有補數(shù)"Else

ForI=2ToLen(Source)IfMid(Source,I,1)="1"Then

Mid(Source,I,1)="0"Else

Mid(Source,I,1)="1"EndIf

NextIText2.Text=Source

EndIfEndSubMid函數(shù)的新作用本章小結(jié)演算法及程式設(shè)計基礎(chǔ)賦值語句及InputBox、MsgBox函數(shù)

分支結(jié)構(gòu)與分支結(jié)構(gòu)語句迴圈結(jié)構(gòu)與迴圈結(jié)構(gòu)語句程式示例習(xí)題(P81--P83第10--13題)上機(jī)(P41--P55)(5月16日交)時間:5月27日中午要求:60分鐘做完窗體上注明:

班級學(xué)號姓名隨機(jī)抽題臨時點題可加分1.實驗書P522.實驗書P55(6--6)3.實驗書P604.實驗書P63(7--5)5.實驗書P64(7--7)6.實驗書P72(8--4)7.教材P116第9題8.教材P115第2題關(guān)於期中上機(jī)考試數(shù)組的概念

數(shù)組可用於存儲成組的有序數(shù)據(jù)。使用數(shù)組就是用一個相同的名字引用這一組變數(shù)中的數(shù)據(jù),這個名字被稱為數(shù)組名。數(shù)組命名與數(shù)組元素

數(shù)組定義

數(shù)組的結(jié)構(gòu)

數(shù)組函數(shù)及數(shù)組語句

5.1數(shù)組命名與數(shù)組元素數(shù)組名的命名規(guī)則與簡單變數(shù)命名規(guī)則一樣。

數(shù)組內(nèi)的每個成員稱為數(shù)組元素,數(shù)組元素又稱為下標(biāo)變數(shù),數(shù)組元素的類型也就是數(shù)組的類型。

數(shù)組元素名的一般形式是:

其中:下標(biāo)可以是常量、變數(shù)或算術(shù)運算式。當(dāng)下標(biāo)的值為非整數(shù)時,會自動進(jìn)行四捨五入。

5.1.1數(shù)組名(下標(biāo)1[,下標(biāo)2……])數(shù)組定義數(shù)組說明語句數(shù)組的初始化5.1.2定義:1、名稱和數(shù)據(jù)類型

2、維數(shù)和每一維的上、下界的取值範(fàn)圍。數(shù)組類型:

靜態(tài)數(shù)組和動態(tài)數(shù)組。數(shù)組說明同變數(shù)定義(地點?語句?)Optionbase1語句的功能維的大小=上界--下界+1數(shù)組元素總個數(shù)=各維數(shù)連乘數(shù)組類型定義(例)數(shù)組維說明示例數(shù)組說明語句示例 DimA(6)AsInteger PrivateName(1999To2002)AsString*8 DimB(2,1to2)AsIntegerA(6)A(5)A(4)A(3)A(2)A(1)A(0)Name(2002)Name(2001)Name(2000)Name(1999)B(2,2)B(2,1)B(1,2)B(1,1)B(0,2)B(0,1)數(shù)組維說明示例DimMAsintegerConstNAsInteger=5DimA(N)AsInteger√DimB(1To6.6)AsInteger√DimC(1To2+3)AsInteger√ DimD(0ToM)AsInteger

×數(shù)組初始化數(shù)值型的數(shù)組元素初始值為零變長字元類型的數(shù)組元素初始值為空字元串定長字元類型的數(shù)組元素初始值為指定長度個數(shù)的空格布爾型的數(shù)組元素初始值為False變體(Variant)類型的數(shù)組元素的初始值是Empty。

數(shù)組的結(jié)構(gòu)一維數(shù)組的結(jié)構(gòu)

二維數(shù)組的結(jié)構(gòu)

三維數(shù)組的結(jié)構(gòu)

5.1.3一維數(shù)組的結(jié)構(gòu)DimStrA(8)AsInteger線性順序StrA(0)StrA(1)StrA(2)StrA(3)StrA(4)StrA(5)StrA(6)StrA(7)StrA(8)StrA(8)StrA(7)StrA(6)StrA(5)StrA(4)StrA(3)StrA(2)StrA(1)StrA(0)存儲結(jié)構(gòu)邏輯結(jié)構(gòu)存儲結(jié)構(gòu)二維數(shù)組的結(jié)構(gòu)OptionBase1 DimTable(3,4)AsInteger

按列存放Table(1,1)Table(2,1)Table(3,1)Table(1,2)Table(2,2)Table(3,2)Table(1,3)Table(2,3)Table(3,3)Table(1,4)Table(2,4)Table(3,4)Table(3,1)Table(2,1)Table(3,2)Table(3,3)Table(3,4)Table(2,2)Table(2,3)Table(2,4)Table(1,1)Table(1,2)Table(1,3)Table(1,4)存儲結(jié)構(gòu)邏輯結(jié)構(gòu)存儲結(jié)構(gòu)三維數(shù)組的結(jié)構(gòu)Page(3,1,1)Page(2,1,1)Page(1,1,2)Page(3,2,1)Page(2,2,1)Page(1,2,2)Page(3,3,2)Page(2,3,2)Page(1,3,2)Page(3,1,1)Page(2,1,1)Page(1,1,1)Page(3,2,1)Page(2,2,1)Page(1,2,1)Page(3,3,1)Page(2,3,1)Page(1,3,1)邏輯結(jié)構(gòu)存儲結(jié)構(gòu)Page(1,1,1)Page(2,1,1)Page(3,1,1)Page(1,2,1)…Page(3,3,1)Page(1,1,2)Page(2,1,2)Page(3,1,2)Page(1,2,2)…Page(3,3,2)DimPage(3,3,2)ASInteger(行,列,頁)存放:逐頁逐列(先變左邊下標(biāo))邏輯結(jié)構(gòu)存儲結(jié)構(gòu)數(shù)組函數(shù)及數(shù)組語句LBound

函數(shù)與UBound函數(shù)

Erase語句

ForEach…Next結(jié)構(gòu)語句

5.1.4LBound

函數(shù);UBound函數(shù)Lbound的功能:是返回數(shù)組某維的維下界的值(例)Ubound的功能:是返回數(shù)組某維的維上界的值(例)例如:dima(-2to3,0to5) ……...printLbound(a),Lbound(a,2)printUbound(a),Ubound(a,2) ……….Lbound函數(shù)應(yīng)用示例PrivateSubForm_Click()DimA(5)AsInteger,DimB(3to8,200to208)PrintLBound(A),LBound(B,1),LBound(B,2)EndSub程式執(zhí)行結(jié)果是:0

3

200Ubound函數(shù)應(yīng)用示例PrivateSubForm_Click()DimA(5)AsInteger,DimB(3to8,200to208)PrintUBound(A),UBound(B,1),UBound(B,2)EndSub程式執(zhí)行結(jié)果是:5

8

208Erase語句Erase語句的功能是重新初始化固定大小數(shù)組的元素,或者釋放動態(tài)數(shù)組的存儲空間。Erase語句應(yīng)用示例Erase語句應(yīng)用示例PrivateSubForm_Click()DimA(3)AsInteger,B()AsIntegerA(1)=1:A(2)=2:A(3)=3ReDimB(4)‘為B分配4個整數(shù)單元(8B)

PrintA(1),A(2),A(3)EraseA,B‘A充0,B的單元釋放

PrintA(1),A(2),A(3)EndSubForEach…Next結(jié)構(gòu)語句ForEach…Next語句是專門用來為數(shù)組或?qū)ο蠹现械拿總€元素重複執(zhí)行一組語句而設(shè)置的。ForEach…Next語句應(yīng)用示例OptionBase1PrivateSubForm_Click()DimA(12)AsInteger,VAsVariantDimIAsInteger,JsAsIntegerJs=14ForI=1To12A(I)=JsJs=Js+7NextIJs=0

ForEachVInAJs=Js+1PrintV;If(JsMod6)=0ThenPrint

NextVPrintEndSub窗體上顯示的結(jié)果是:

142128354249566370778491數(shù)組賦值輸出每個元素輸出6個,換行數(shù)組的基本操作數(shù)組元素的賦值數(shù)組元素的輸出

數(shù)組元素的引用

5.2數(shù)組元素的賦值用賦值語句給數(shù)組元素賦值

通過迴圈逐一給數(shù)組元素賦值

用InputBox函數(shù)給數(shù)組元素賦值

用Array函數(shù)給數(shù)組賦值

5.2.1用賦值語句給數(shù)組元素賦值DimScore(3)AsIntegerDimTwo(1,1to2)asintegerScore(0)=80 Score(1)=75 Score(2)=91 Score(3)=68Two(0,1)=Score(0)

…K=4Score(K-2)=91PrivateSubForm_Click()DimA(6)AsInteger,IAsIntegerDimB(1to2,1to2)AsInteger,JAsIntegerForI=0To6‘使用迴圈給一維數(shù)組賦值並輸出

A(I)=Int(99*Rnd)+1

Print

A(I);

NextI

PrintForI=1To2 ‘利用二重迴圈給二維數(shù)組賦值並輸出

ForJ=1To2B(I,J)=I*10+J ‘外迴圈是I,行

PrintB(I,J);NextJ

Print

NextIEndSub用InputBox函數(shù)給數(shù)組元素賦值PrivateSubForm_Click()DimA(6)AsInteger,IAsIntegerForI=0To6A(I)=InputBox("給元素賦值","數(shù)組A賦值")PrintA(I);NextIPrintEndSub慢,適合少量數(shù)據(jù)OptionBase1PrivateSubForm_Click() DimAAsVariant ‘A是變數(shù)

DimB(4)AsVariant ‘B是數(shù)組

A=Array(5,4,3,2,1) PrintA(1);A(2);A(3);A(4);A(5) A=Array(1.5!,2.3!,3.6!,4.1!) PrintA(1);A(2);A(3);A(4);A(5);A(6) A=“NOArray” ‘A不是數(shù)組了

PrintA B=Array(1,2,3,4,5,6) ‘錯誤語句原因??EndSub注意:只對Varian類型的變數(shù)!數(shù)組元素輸出示例 P9411121314152019181716212223242530292827261.規(guī)律?

2.如何設(shè)計算法?

3.用什么語句實現(xiàn)算法?picture1Text1OptionExplicit:OptionBase1PrivateSubCmd1_Click()DimA(4,5)AsInteger,KAsIntegerDimIAsInteger,JAsInteger,SAsStringK=10ForI=1To4IfIMod2<>0Then‘處理奇數(shù)行

ForJ=1To5K=K+1A(I,J)=KNextJElseForJ=5To1Step–1 ‘處理偶數(shù)行

K=K+1A(I,J)=KNextJEndIfNextI'生成數(shù)組IfCheck1.Value<>1ThenForI=1To4 '輸出到圖片框

ForJ=1To5Picture1.PrintA(I,J);NextJPicture1.PrintNextIElseForI=1To4 '輸出到多行文本框

ForJ=1To5S=S&Str(A(I,J))NextJS=S&Chr(13)&Chr(10)NextI

Text1.Text=SEndIfEndSub'數(shù)組輸出對text1的屬性有要求!

回顧(4月20日)為什麼要使用數(shù)組?

數(shù)組的特點

(程序設(shè)計=數(shù)據(jù)結(jié)構(gòu)+演算法)如何定義數(shù)組?

固定大小的數(shù)組;動態(tài)數(shù)組

數(shù)組的結(jié)構(gòu)(邏輯結(jié)構(gòu);物理結(jié)構(gòu))如何使用數(shù)組?

函數(shù):Ubound()與Lbound()

數(shù)組的賦值;數(shù)組的輸出今天:數(shù)組的引用?數(shù)組元素的引用數(shù)組元素的下標(biāo)在規(guī)定的維界範(fàn)圍之內(nèi),否則就會產(chǎn)生“數(shù)組越界”的錯誤。

【例5-1】

隨機(jī)產(chǎn)生12個兩位數(shù),存放在數(shù)組Com中,並從中找出一個最大數(shù)和一個最小數(shù)。

5.2.3OptionExplicitOptionBase1PrivateSubForm_Click()DimCompare(12)AsInteger

DimIAsIntegerDimMaxAsInteger,MinAsIntegerRandomizeForI=1To12Compare(I)=Int(90*Rnd)+10PrintCompare(I);NextIPrint

生成12個隨機(jī)整數(shù)

Max=Compare(1):Min=Compare(1)ForI=2To12IfCompare(I)>MaxThen

Max=Compare(I)ElseIfCompare(I)<MinThen

Min=Compare(I)EndIfNextIPrint"最大數(shù)是:";MaxPrint"最小數(shù)是:";MinEndSub思考:求最大數(shù)的位置?動態(tài)數(shù)組的特點:

不知數(shù)組應(yīng)有多大能滿足需要,在運行程式時改變數(shù)組的大小能力。定義動態(tài)數(shù)組分為兩步:

1.首先定義不指明大小的數(shù)組。Public|Private|Dim|Static

數(shù)組名()[AS類型]2.用ReDim語句來動態(tài)地定義數(shù)組的ReDim[Preserve]數(shù)組名(維界定義)動態(tài)數(shù)組5.3OptionBase1

DimDynArry()AsInteger

…….PrivateSubSub1()DimXAsInteger,YAsInteger

ReDimDynArry(9)

……..

X=2:Y=4

ReDimDynArry(X,Y)

EndSub動態(tài)數(shù)組舉例Redim語句中Preserve的使用 ReDim語句中缺省關(guān)鍵字Preserve時,當(dāng)前存儲在數(shù)組中的值全部丟失;

若要保留原數(shù)組的內(nèi)容,應(yīng)在ReDim語句中使用關(guān)鍵字Preserve,並只能改變最後一維的維上界。

舉例OptionBase1DimDynArry()AsInteger

PrivateSubForm_Click()

DimIAsInteger,JAsInteger

ReDimDynarry(3,3)

Debug.Print"數(shù)組Dynarry(3,3)的值"

ForI=1To3

ForJ=1To3

Dynarry(I,J)=I*10+J

Debug.PrintDynarry(I,J);

NextJ

Debug.Print

NextI

ReDimPreserveDynarry(3,4)Debug.Print"數(shù)組Dynarry(3,4)的值"ForI=1To3

ForJ=1To4

Debug.PrintDynarry(I,J);

NextJ

Debug.Print

NextIEndSubDynarry(3,3)的值為:

111213212223313233Dynarry(3,4)的值為

1112130

2122230

3132330問?!控件數(shù)組基本概念

【例5-2】

使用控件數(shù)組,編寫一個能進(jìn)行加、減、乘、除運算的運算器的程式兩條語句(LOAD與UNLOAD)

5.4基本概念5.4.1

控件數(shù)組是由一組具有共同名稱和相同類型的控件組成,數(shù)組中的每一個控件共用同樣的事件過程。 控件數(shù)組的名字由控件的Name屬性指定,每個元素的下標(biāo)則由控件的Index屬性指定.第一個元素的下標(biāo)是零(0),最大索引值為32767。引用方式同普通數(shù)組元素.操作演示Command2:有5個元素,各元素分別表示+、-、*、/和Mod運算符。

Command3的Caption屬性值設(shè)為“清屏”;Command4的Caption屬性值是設(shè)為“=”;Command5的Caption屬性值設(shè)為“退出”。編寫一個運算器的程式

Command1:

有11個元素,前10個元素分別表示10個數(shù)字,第11個元素表示小數(shù)點。

共用Command1_Click()事件過程;Load語句格式:Load

Object(Index)功能:向控件數(shù)組添加控件Unload語句格式:UnloadObject(Index)功能:刪除用Load語句產(chǎn)生的對象數(shù)組元素舉例P100OptionExplicitDimTextNumPrivateSubCommand1_Click()IfTextNum<3ThenTextNum=TextNum+1LoadText1(TextNum)

Text1(TextNum).Visible=TrueText1(TextNum).Top=Text1(TextNum-1).Top+_

Text1(TextNum-1).Height+100Text1(TextNum).Text="文本框"&Str(TextNum)EndIfEndSub回顧數(shù)組的基本概念數(shù)組的基本操作數(shù)組的應(yīng)用實例?數(shù)組與常用演算法精妙的結(jié)合難點,重點

N遍的重複===熟練掌握排序演算法的創(chuàng)新!程式示例【例5-3】用選擇法對10個數(shù)進(jìn)行排序

【例5-4】順序查找與二分查找程式【例5-11】將數(shù)組中重複元素刪除【例5-6】有關(guān)矩陣的程式設(shè)計

【例5-7】求出裴波拉契數(shù)列的前18項【例5-8】統(tǒng)計字母在文本中出現(xiàn)的次數(shù)

【例5-9】找出100以內(nèi)的所有素數(shù)【例5-10】找出5000以內(nèi)的親密對數(shù)

5.5用選擇法對10個數(shù)進(jìn)行排序設(shè)在數(shù)組Sort中存放10個無序的數(shù),要將這10個數(shù)按升序重新排列。演算法講解…..比較次數(shù):N*(N-1)/2如何寫程式???如何改進(jìn)演算法?直接排序法Flash動畫掌握了嗎?(改題)

ForI=1To10Sort(I)=Int(Rnd*(100

溫馨提示

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

評論

0/150

提交評論