VB教學(xué)ppt課件第6章-數(shù)組【醫(yī)藥版】_第1頁
VB教學(xué)ppt課件第6章-數(shù)組【醫(yī)藥版】_第2頁
VB教學(xué)ppt課件第6章-數(shù)組【醫(yī)藥版】_第3頁
VB教學(xué)ppt課件第6章-數(shù)組【醫(yī)藥版】_第4頁
VB教學(xué)ppt課件第6章-數(shù)組【醫(yī)藥版】_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第六章數(shù)組高等醫(yī)藥院校藥學(xué)類第三輪規(guī)劃教材——大學(xué)計(jì)算機(jī)基礎(chǔ)第六章數(shù)組高等醫(yī)藥院校藥學(xué)類第三輪規(guī)劃教材——大學(xué)計(jì)算機(jī)基第一節(jié)數(shù)組的概念

目錄第二節(jié)數(shù)組的基本操作第三節(jié)動(dòng)態(tài)數(shù)組第四節(jié)控件數(shù)組第五節(jié)常用算法沈陽藥科大學(xué)計(jì)算中心沈陽藥科大學(xué)計(jì)算中心第一節(jié)數(shù)組的概念目錄第二節(jié)數(shù)組的基本操作第三節(jié)2第一節(jié)數(shù)組的概念

第一節(jié)數(shù)組的概念大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第一節(jié)數(shù)組的概念第一節(jié)數(shù)組的概念大學(xué)計(jì)算機(jī)基礎(chǔ)——沈3第一節(jié)數(shù)組的概念為什么要使用數(shù)組?引例:編寫一個(gè)程序,讀入30名學(xué)生的考試成績(jī),然后打印出比平均分高的學(xué)生的考試成績(jī)。方法一:簡(jiǎn)單變量和循環(huán)結(jié)構(gòu)相結(jié)合。雖然處理變得簡(jiǎn)單,但無法輸出比平均值高的成績(jī)。方法二:使用多個(gè)變量。雖然可以輸出比平均值高的成績(jī),但程序的編寫很麻煩,處理很復(fù)雜。(1)定義一次即可定義很多變量(2)通過循環(huán)來處理這些變量

數(shù)組因此處理大批量的類型相同的數(shù)據(jù)我們通常使用數(shù)組這樣一種數(shù)據(jù)結(jié)構(gòu).大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第一節(jié)數(shù)組的概念為什么要使用數(shù)組?引例:編寫一個(gè)程序,讀入4第一節(jié)數(shù)組的概念6.1數(shù)組的概念說明:(1)這些變量使用一片連續(xù)的存儲(chǔ)單元。(2)使用數(shù)組就是用一個(gè)相同的名字引用這一組變量中的數(shù)據(jù),這個(gè)名字稱為數(shù)組名。(3)數(shù)據(jù)類型VS數(shù)組:數(shù)據(jù)類型指的是數(shù)據(jù)的取值范圍,而數(shù)組通常是表示相同數(shù)據(jù)類型的數(shù)據(jù)的集合。利用數(shù)組,可以方便靈活地處理批量的數(shù)據(jù)。

在VisualBasic中,把一組具有同一名字、相同類型的變量組成的集合稱為數(shù)組。例如:dimmark(1to100)assinglemark稱為數(shù)組名,1跟100都是下標(biāo),這個(gè)數(shù)組具有100個(gè)元素。通過下標(biāo)指出某個(gè)具體的數(shù)組元素,即指出它在數(shù)組中的位置。例如,mark(6)代表mark數(shù)組中的第6個(gè)元素。大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第一節(jié)數(shù)組的概念6.1數(shù)組的概念說明:在Visua5第一節(jié)數(shù)組的概念6.1.1數(shù)組命名與數(shù)組元素例如:dimmark(1to100)assingle數(shù)組名:命名規(guī)則與簡(jiǎn)單變量一樣。數(shù)組名不是代表一個(gè)變量,而是代表有內(nèi)在聯(lián)系的一組變量。

數(shù)組元素:數(shù)組內(nèi)的每一個(gè)成員稱為數(shù)組元素

。數(shù)組元素的類型也就是數(shù)組的類型。數(shù)組元素的一般形式如下

數(shù)組名(下標(biāo)1[,下標(biāo)2,…])例如:mark(20)

下標(biāo):每個(gè)數(shù)組元素都有各自的編號(hào)即下標(biāo),下標(biāo)確定了數(shù)組元素在數(shù)組中的位置。

維數(shù):下標(biāo)數(shù)就是數(shù)組的維數(shù)。

一個(gè)下標(biāo)表示一維數(shù)組,兩個(gè)下標(biāo)表示二維數(shù)組,二維以上的數(shù)組稱為多維數(shù)組。數(shù)組的維數(shù)不得超過60。上界和下界:數(shù)組中第一個(gè)元素的下標(biāo)稱為下界,最后一個(gè)元素的下標(biāo)成為上界。缺省時(shí)下界為0,若下標(biāo)的取值超出上界或下界,將出現(xiàn)“下標(biāo)越界”的出錯(cuò)信息。大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第一節(jié)數(shù)組的概念6.1.1數(shù)組命名與數(shù)組元素例如:dim6第一節(jié)數(shù)組的概念6.1.2數(shù)組定義注意:數(shù)組與簡(jiǎn)單變量不同,必須先定義(聲明),后使用。(目的是告知計(jì)算機(jī)它將占用多少內(nèi)存單元。)使用數(shù)組分兩個(gè)階段:聲明(定義)數(shù)組和使用數(shù)組元素。提供了數(shù)組的四個(gè)信息名字、類型、維數(shù)(由下標(biāo)的個(gè)數(shù)確定,下標(biāo)由“逗號(hào)”分隔)、大?。ǜ骶S大小的乘積)此時(shí)才真正把數(shù)組當(dāng)成是許多的變量(數(shù)組元素)的集合來使用,使用這些變量(數(shù)組元素)解決相關(guān)問題。數(shù)組的聲明數(shù)組元素的使用大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第一節(jié)數(shù)組的概念6.1.2數(shù)組定義注意:數(shù)組與簡(jiǎn)單變量不同7(1)靜態(tài)數(shù)組的聲明與使用形式1:

Dim數(shù)組名(下標(biāo)1[,下標(biāo)2…])As類型

下標(biāo):[下界To]上界

省略下界為0,

上下界必須為常數(shù)或常量,絕對(duì)不允許出現(xiàn)變量。

維數(shù):幾個(gè)下標(biāo)為幾維數(shù)組,最多60維。

每一維大小:上界-下界+1

數(shù)組大小:每一維大小的乘積聲明了數(shù)組的名、維數(shù)、大小、類型,同時(shí)還將數(shù)組初始化。靜態(tài)數(shù)組:聲明的時(shí)候即確定數(shù)組中元素的個(gè)數(shù)(數(shù)組中元素的個(gè)數(shù)是固定不變的)。另外一種聲明形式:Dim數(shù)組名類型符號(hào)(下標(biāo)1[,下標(biāo)2…])例:

Dimmark!(1to100)

例:Dimmark(1to100)Assingle例子第一節(jié)數(shù)組的概念大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)(1)靜態(tài)數(shù)組的聲明與使用形式1:Dim數(shù)組名(下標(biāo)8第一節(jié)數(shù)組的概念例:DimA(6)AsIntegerPrivateName(1999To2002)AsString*8DimB(2,1to2)AsInteger

DimMAsIntegerConstN=5AsIntegerDimA(N)AsIntegerDimB(1To6.6)AsIntegerDimC(1To2*3)AsIntegerM=5DimD(0ToM)AsIntegerDimScore(4),B(3,3)AsIntegerDimA(6)AsIntegerDimB(3,-1To4)AsSingle返回大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第一節(jié)數(shù)組的概念例:DimMAsInteger返回9(1)靜態(tài)數(shù)組的聲明與使用數(shù)組元素的使用:例如:Dimmark(1to10)AsIntegermark(2)=100注意:下標(biāo)只能在下界與上界之間如:mark(11)

會(huì)出現(xiàn)下標(biāo)越界的錯(cuò)誤例如:定義單精度類型、5個(gè)元素的數(shù)組Dimm(1to5)assingle或者Dim

m!

(1to5)第一節(jié)數(shù)組的概念大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)(1)靜態(tài)數(shù)組的聲明與使用數(shù)組元素的使用:例如:Dimma10例:Dimseat(1To3,1To4)As.。。。。(聲明數(shù)組時(shí)一個(gè)下標(biāo)的為一維數(shù)組,兩個(gè)下標(biāo)的為二維數(shù)組)二維、三維數(shù)組seat(1,1)seat(1,2)seat(1,3)seat(1,4)seat(2,1)seat(2,2)seat(2,3)seat(2,4)seat(3,1)seat(3,2)seat(3,3)seat(3,4)例:Dimseat(1To2,1to3,1To4)As.。。。。該三維數(shù)組共有2×3×4個(gè)元素該二維數(shù)組共有3×4個(gè)元素6.1.3數(shù)組的結(jié)構(gòu)一維數(shù)組的結(jié)構(gòu)

一維數(shù)組可以理解為線性存儲(chǔ)數(shù)據(jù),開辟連續(xù)的存儲(chǔ)單元來依次存放數(shù)組的各個(gè)元素。第一節(jié)數(shù)組的概念大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)例:Dimseat(1To3,1To411總結(jié):看一個(gè)數(shù)組中有多少個(gè)元素,要注意首先看一下程序的開頭是否有Optionbase語句

(1)無或者Optionbase0下標(biāo)從0開始(2)Optionbase1下標(biāo)從1開始Optionbase語句的使用書寫簡(jiǎn)便而又不浪費(fèi)內(nèi)存空間

Dimseat(1To3,1To4)As。。Dimseat(3,4)As。。練習(xí)Optionbase1PrivateSubCommand1_Click()Dim

seat(3,4)

as。。Dimmark(10)assingleEndSub第一節(jié)數(shù)組的概念大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)總結(jié):看一個(gè)數(shù)組中有多少個(gè)元素,要注意Optionbase12靜態(tài)數(shù)組的聲明與使用注意:(1)下界缺省為0,也可重新定義默認(rèn)的數(shù)組的下界。例如:

OptionBase1(2)錯(cuò)誤的聲明,下標(biāo)是變量。如:

n=Inputbox(“輸入n”):Dim

x(n)AsSingle(3)在數(shù)組聲明中的下標(biāo)說明了數(shù)組的整體,即每維的大??;而在程序其他地方出現(xiàn)的下標(biāo)表示數(shù)組中的一個(gè)元素。例如:

OptionBase1

Dimseat(2,3)AsInteger

‘聲明了seat為二維數(shù)組,第一維的大小為2,第二維的大小為3

seat(1,2)=100

‘對(duì)seat(1,2)這個(gè)數(shù)組元素賦值(4)在使用數(shù)組元素的時(shí)候,下標(biāo)只能在下界與上界之間。大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)靜態(tài)數(shù)組的聲明與使用注意:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)13

建立一個(gè)數(shù)組之后,可以對(duì)數(shù)組或數(shù)組元素進(jìn)行操作。數(shù)組的基本操作包括輸入、計(jì)算出來及輸出,這些操作都是對(duì)數(shù)組元素進(jìn)行的。此外,VisualBasic中數(shù)組經(jīng)常與For···Next結(jié)合使用。數(shù)組元素賦值數(shù)組元素操作數(shù)組元素輸出第二節(jié)數(shù)組的基本操作第二節(jié)數(shù)組的基本操作輸入數(shù)據(jù)計(jì)算處理數(shù)據(jù)輸出計(jì)算處理數(shù)據(jù)輸出計(jì)算處理數(shù)據(jù)輸出輸入數(shù)據(jù)計(jì)算處理數(shù)據(jù)輸出輸入數(shù)據(jù)計(jì)算處理大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)建立一個(gè)數(shù)組之后,可以對(duì)數(shù)組或數(shù)組元素進(jìn)行操14第二節(jié)數(shù)組的基本操作6.2.1數(shù)組元素的賦值1.用賦值語句給數(shù)組元素賦值。(直接賦一個(gè)數(shù)據(jù)或者文本框中的內(nèi)容)這種方法適合于數(shù)據(jù)量小的情況下使用。例: DimScore(3)AsIntegerDimTwo(1,1to2)AsIntegerScore(0)=80Score(1)=75Score(2)=91Score(3)=68Two(0,1)=Score(0)大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作6.2.1數(shù)組元素的賦值1.用賦值語句15第二節(jié)數(shù)組的基本操作6.2.1數(shù)組元素的賦值2.通過循環(huán)逐一給數(shù)組元素賦值(在循環(huán)當(dāng)中直接將計(jì)算的數(shù)據(jù)或者產(chǎn)生的隨機(jī)數(shù)賦值)這種方法適合于數(shù)據(jù)量大的情況下使用。DimA(6)AsInteger,iAsIntegerDimB(1to2,1to2)AsInteger,jAsIntegerFori=0To6’使用循環(huán)給一維數(shù)組賦值并輸出A(i)=Int(99*Rnd)+1PrintA(i);NextIFori=1To2,利用二重循環(huán)給二維數(shù)組賦值并輸出Forj=1To2 B(i,j)=i*10+j PrintB(i,j);

NextjPrintNexti大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作6.2.1數(shù)組元素的賦值2.通過循環(huán)逐16第二節(jié)數(shù)組的基本操作例:PrivateSubForm_Click()DimA(6)AsInteger,iAsIntegerFori=0To6A(i)=InputBox(“給數(shù)組元素賦值”,“數(shù)組A賦值”)PrintA(i);NextIEndSub6.2.1數(shù)組元素的賦值3.通過循環(huán)逐一給數(shù)組元素賦值(在循環(huán)當(dāng)中l(wèi)nputBox函數(shù)由鍵盤輸入給數(shù)組元素賦值)這種方法數(shù)據(jù)量大的情況下不適用。大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作例:6.2.1數(shù)組元素的賦值3.通過循17第二節(jié)數(shù)組的基本操作6.2.1數(shù)組元素的賦值4.用Array函數(shù)給數(shù)組賦值利用Array函數(shù)可以把一個(gè)數(shù)據(jù)集賦值給一個(gè)Variant變量,再將該Variant變量創(chuàng)建成—個(gè)一維數(shù)組。使用形式:<變體變量名>=Array([數(shù)據(jù)列表])注意:Array函數(shù)的括號(hào)內(nèi)值與值之間用逗號(hào)分隔;接收完值后的變體型變量可以像數(shù)組一樣,利用下標(biāo)來引用每一個(gè)值;Array函數(shù)產(chǎn)生給變量型變量的數(shù)組下界由OptionBasen決定,默認(rèn)是0;Array函數(shù)將產(chǎn)生一個(gè)數(shù)組;不可以用Array函數(shù)給非Variant類型的變量賦值。大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作6.2.1數(shù)組元素的賦值4.用Arra18第二節(jié)數(shù)組的基本操作6.2.1數(shù)組元素的賦值4.用Array函數(shù)給數(shù)組賦值例:OptionBase1PrivateSubForm_Click()DimAAsVariantDimB(4)AsVariantA=Array(5,4,3,2,1)PrintA(1);A(2);A(3);A(4);A(5)A=Array(1.51,2.31,3.61,4.11)PrintA(1);A(2);A(3);A(4)A=”NOArray”PrintAB=Array(1,2,3,4,5,6)’該語句是一條錯(cuò)誤語句EndSub大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作6.2.1數(shù)組元素的賦值4.用Arra19第二節(jié)數(shù)組的基本操作6.2.1數(shù)組元素的賦值5.讀取順序文件中的數(shù)據(jù)給數(shù)組賦值例:PrivateSubForm_Click()Dimiasinteger

Dima(1to30)asintegerOpenapp.path&“\”&“in.dat”forinputas#1

Dowhilenoteof(1)i=i+1Input#1,a(i)LoopClose#1EndSub大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作6.2.1數(shù)組元素的賦值5.讀取順序文20

DimbAsVariant

’變體類型的變量或字符型動(dòng)態(tài)數(shù)組

b=Split(“20,5,68”,“,”)

’分隔后每個(gè)元素都是字符若要變成數(shù)字可用val函數(shù)

Fori=0To2

Printb(i)

Nexti

無論有沒有OptionBase1語句,下界都從0開始

join函數(shù)

DimbAsVariant

’變體類型的變量或字符型數(shù)組

b=Split("20,5,68",",")

c=join(b,":")Printc

將數(shù)組b的各個(gè)元素用指定字符連接為一個(gè)字符串6.2.1數(shù)組元素的賦值6.Split函數(shù)給數(shù)組賦值大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué) DimbAsVariant21第二節(jié)數(shù)組的基本操作6.2.2數(shù)組元素的引用數(shù)組元素的使用和普通變量一樣,但是最應(yīng)該注意的是下標(biāo)是否合法,即不要發(fā)生下標(biāo)越界的錯(cuò)誤。例6-1:產(chǎn)生10個(gè)(1,50)之間的隨機(jī)整數(shù),并將其中的最大數(shù)和最小數(shù)打印出來,同時(shí)將其存放在順序文件”out.dat”中。 運(yùn)行結(jié)果:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作6.2.2數(shù)組元素的引用數(shù)組元素的使用22第二節(jié)數(shù)組的基本操作例6-2: 生成一個(gè)如下形式的矩陣(見圖),并按矩陣元素的排列次序?qū)⒕仃囕敵龅綀D片框或文本框(同時(shí)輸出也可)。

運(yùn)行結(jié)果:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作例6-2:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大23第二節(jié)數(shù)組的基本操作6.2.3數(shù)組函數(shù)及數(shù)組語句1.LBound函數(shù)功能:返回?cái)?shù)組某維的維下界的值。調(diào)用形式:LBound(數(shù)組名[,d]) 參數(shù)d為維數(shù),若缺省則函數(shù)返回?cái)?shù)組第一維的維下界的值或一維數(shù)組的下界。例:PrivateSubForm_Click()DimA(4)AsInteger,B(3to6,10to20)PrintLBound(A),LBound(B,1),LBound(B,2)EndSub程序執(zhí)行結(jié)果是:0310大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作6.2.3數(shù)組函數(shù)及數(shù)組語句1.LBo24第二節(jié)數(shù)組的基本操作2.UBound函數(shù)功能:返回?cái)?shù)組某維的維上界的值調(diào)用形式:UBound(數(shù)組名[,d])例:PrivateSubForm_Click()DimA(4)AsInteger,B(3to6,10to20)PrintUBound(A),UBound(B,1),UBound(B,2)EndSub程序執(zhí)行結(jié)果是:4620大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作2.UBound函數(shù)例:大學(xué)計(jì)算機(jī)基礎(chǔ)25第二節(jié)數(shù)組的基本操作3.ForEach-Next結(jié)構(gòu)語句功能:用來依次訪問數(shù)組中的每一個(gè)元素。調(diào)用形式:

ForEachElementIn<array> [語句集] Next[Element]說明:Element是在ForEach-Next結(jié)構(gòu)內(nèi)重復(fù)使用的Variant變量,實(shí)際上代表數(shù)組中每一個(gè)元素。<array>是要處理的數(shù)組名。循環(huán)次數(shù)則由數(shù)組中的元素的個(gè)數(shù)確定。循環(huán)體內(nèi)可以包含ExitFor語句,用以退出循環(huán)。大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作3.ForEach-Next結(jié)構(gòu)語句26第二節(jié)數(shù)組的基本操作例6-3找出10個(gè)能被9整除的兩位數(shù),分兩行輸出,使用ForEach-Next結(jié)構(gòu)。

運(yùn)行結(jié)果:例6-4把下面的二維數(shù)組,用ForEach-Next結(jié)構(gòu)輸出。觀察輸出結(jié)果。運(yùn)行結(jié)果:程序驗(yàn)證:二維數(shù)組在內(nèi)存中存儲(chǔ)時(shí),按列優(yōu)先存儲(chǔ)大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作例6-3找出10個(gè)能被9整除的兩位數(shù)27第二節(jié)數(shù)組的基本操作提示:文本框中的內(nèi)容可以在設(shè)計(jì)狀態(tài)時(shí),在文本框的Text屬性中輸入,可以避免程序調(diào)試時(shí)重復(fù)的文字輸入。6.2.4數(shù)組應(yīng)用例6-5

統(tǒng)計(jì)字母(不分大小寫)在文本中出現(xiàn)的次數(shù)。運(yùn)行結(jié)果:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作提示:文本框中的內(nèi)容可以在設(shè)計(jì)狀態(tài)時(shí),28第二節(jié)數(shù)組的基本操作例6-620個(gè)小朋友按照編號(hào)順序圍成一圈,1~3循環(huán)報(bào)數(shù),凡報(bào)到3者出圈,直到全部出圈為止。編寫程序記錄出圈小朋友的出圈順序。運(yùn)行結(jié)果:經(jīng)典:猴子選大王一共有n只猴子圍成一圈,開始數(shù)數(shù),數(shù)到m時(shí)退出圈,剩下的重新開始數(shù),直到最后一只猴子為大王。

大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作例6-620個(gè)小朋友按照編號(hào)順序圍29第三節(jié)動(dòng)態(tài)數(shù)組

第三節(jié)動(dòng)態(tài)數(shù)組大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第三節(jié)動(dòng)態(tài)數(shù)組第三節(jié)動(dòng)態(tài)數(shù)組大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥30例:求一個(gè)班級(jí)中學(xué)生數(shù)學(xué)成績(jī)的平均值并輸出大于平均分的成績(jī).Dimmark(1to32)assingleOpenapp.path&“\”&“math.dat”forinputas#1Dowhilenoteof(1)i=i+1Input#1,a(i)LoopClose#1sum=0Fori=1to32sum=sum+mark(i)NextIavg=sum/32

Fori=1to32ifmark(i)>avgthenprintmark(i)Nexti賦值求平均值輸出大于平均分的成績(jī)Dimmark!(1to32)靜態(tài)數(shù)組的缺陷當(dāng)實(shí)際元素個(gè)數(shù)少,浪費(fèi)空間當(dāng)實(shí)際元素個(gè)數(shù)多,不夠用,程序出錯(cuò)元素個(gè)數(shù)可動(dòng)態(tài)變化的數(shù)組動(dòng)態(tài)數(shù)組大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)例:求一個(gè)班級(jí)中學(xué)生數(shù)學(xué)成績(jī)的平均值并輸出大于平均分的成績(jī).31在聲明數(shù)組時(shí)未給出數(shù)組的大小(省略括號(hào)中的下標(biāo)),當(dāng)要使用它時(shí),隨時(shí)用ReDim語句重新指出數(shù)組的維數(shù)以及大小(以方便為數(shù)組元素分配存儲(chǔ)空間)。形式如下:ReDim數(shù)組名(下標(biāo)[,下標(biāo)2…])[As類型]動(dòng)態(tài)數(shù)組:聲明的時(shí)候沒有指出數(shù)組中元素的個(gè)數(shù)(數(shù)組中元素的個(gè)數(shù)是動(dòng)態(tài)變化的)。例:SubForm_Load()Dimx()AsSingle 例

求若干個(gè)學(xué)生的平均分。

n=Inputbox(“輸入n”)

ReDimx(n)…EndSub練習(xí)6.3動(dòng)態(tài)數(shù)組大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)在聲明數(shù)組時(shí)未給出數(shù)組的大小(省略括號(hào)中的下標(biāo)32第三節(jié)動(dòng)態(tài)數(shù)組說明:(1)靜態(tài)數(shù)組(元素個(gè)數(shù)固定)在程序編譯(聲明)時(shí)分配存儲(chǔ)單元,動(dòng)態(tài)數(shù)組(元素個(gè)數(shù)不固定)只有在運(yùn)行(Redim語句)時(shí)分配存儲(chǔ)單元。

(2)當(dāng)數(shù)組中元素個(gè)數(shù)可以確定的時(shí)候,則使用ReDim語句來重新定義這個(gè)數(shù)組;在過程中可多次使用ReDim來改變數(shù)組的大小和維數(shù),但一般不改變動(dòng)態(tài)數(shù)組的數(shù)據(jù)類型。ReDim中的下標(biāo)可以是常量,也可以是有了確定值的變量。(3)每次ReDim將會(huì)使原動(dòng)態(tài)數(shù)組中的內(nèi)容清零或清空??梢栽赗eDim語句后加Preserve參數(shù)來保留數(shù)組中的數(shù)據(jù)。使用Preserve只能改變最后一維的大小,前面幾維大小和維數(shù)不能改變,不用Preserve時(shí)前面幾維大小和維數(shù)可以改變。(4)Dim、Private、Public變量聲明語句是說明性語句,可出現(xiàn)在過程內(nèi)或通用聲明段;ReDim語句是執(zhí)行語句,只能出現(xiàn)在過程內(nèi)。大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第三節(jié)動(dòng)態(tài)數(shù)組說明:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)33第三節(jié)動(dòng)態(tài)數(shù)組例:求一個(gè)班級(jí)中學(xué)生數(shù)學(xué)成績(jī)的平均值并輸出大于平均分的成績(jī).改進(jìn)使程序?qū)τ谌我庖粋€(gè)班級(jí)都適用。例6-7對(duì)數(shù)組重新定義時(shí)保留動(dòng)態(tài)數(shù)組的內(nèi)容。運(yùn)行結(jié)果:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第三節(jié)動(dòng)態(tài)數(shù)組例:求一個(gè)班級(jí)中學(xué)生數(shù)學(xué)成績(jī)的平均值并輸出大34第三節(jié)動(dòng)態(tài)數(shù)組6.3.2Erase語句功能:對(duì)于靜態(tài)數(shù)組使用Erase語句將重新初始化數(shù)組元素,對(duì)于動(dòng)態(tài)數(shù)組使用Erase語句將釋放動(dòng)態(tài)數(shù)組的存儲(chǔ)空間。調(diào)用形式: Erasea1[,a2,…] 語句中的a1、a2為需要重新初始化的數(shù)組名例子注意:下標(biāo)越界是初學(xué)者使用數(shù)組時(shí)經(jīng)常遇到的錯(cuò)誤。要仔細(xì)檢查數(shù)組的說明語句和對(duì)數(shù)組元素進(jìn)行賦值操作語句中的下標(biāo)值,若下標(biāo)值超過了數(shù)組說明語句中的上、下界就會(huì)產(chǎn)生下標(biāo)越界錯(cuò)誤。大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第三節(jié)動(dòng)態(tài)數(shù)組6.3.2Erase語句功能:對(duì)于靜態(tài)數(shù)組使35第三節(jié)動(dòng)態(tài)數(shù)組運(yùn)行結(jié)果:提示:凡是只能被1和本身整除的數(shù)稱為素?cái)?shù)。除2以外的素?cái)?shù)都是奇數(shù),所以只需對(duì)100以內(nèi)的每一個(gè)奇數(shù)進(jìn)行判斷即可。

由于編寫程序時(shí)不能確定100以內(nèi)有多少個(gè)素?cái)?shù),所以在定義數(shù)組時(shí)用動(dòng)態(tài)數(shù)組,這樣可以減少存儲(chǔ)空間的浪費(fèi)。6.3.3動(dòng)態(tài)數(shù)組應(yīng)用

例6-8:找出100以內(nèi)的所有素?cái)?shù),存放在數(shù)組Prime中,并將所找到的素?cái)?shù),按每行5個(gè)的形式顯示在窗體上。大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第三節(jié)動(dòng)態(tài)數(shù)組運(yùn)行結(jié)果:提示:6.3.3動(dòng)態(tài)數(shù)組應(yīng)用大學(xué)36標(biāo)志變量的使用在編程中經(jīng)常用到,例如下面題目:隨機(jī)產(chǎn)生30個(gè)不重復(fù)的兩位數(shù),存入數(shù)組中并分5行顯示出來OptionBase1Dima%(30),Temp%,n%,i%,FlagAsBoolean

a(1)=Int(Rnd*90+10)‘第一個(gè)是不可能重復(fù)的

n=2

DoWhile

n<=30Temp=Int(Rnd*90+10)

Flag=False‘假設(shè)沒重復(fù)

Fori=1Ton-1IfTemp=a(i)Then

Flag=True:ExitFor‘退出內(nèi)層循環(huán),沒必要···

EndIfNextiIfNotFlagThena(n)=Temp:n=n+1Loop實(shí)驗(yàn)6.6P98大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)標(biāo)志變量的使用在編程中經(jīng)常用到,例如下面題目:Option37

(1)插入查找要插入的位置k(1<=k<=n-1)騰出位置,把最后一個(gè)元素開始到第K個(gè)元素往后移動(dòng)一個(gè)位置第k個(gè)元素的位置騰出,就可將數(shù)據(jù)插入(2)刪除要找到欲刪除的元素的位置k;然后從k+1到n個(gè)位置開始向前移動(dòng);最后將數(shù)組元素減1。注意:redimpreserve的應(yīng)用數(shù)組元素的插入與刪除大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)(1)插入(2)刪除注意:redimpreser38第三節(jié)動(dòng)態(tài)數(shù)組對(duì)有序數(shù)列的插入、刪除元素。思想:首先找到要插入(刪除)的數(shù)據(jù)在數(shù)組當(dāng)中的位置,然后做插入(刪除)操作。插入:刪除:例子:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第三節(jié)動(dòng)態(tài)數(shù)組對(duì)有序數(shù)列的插入、刪除元素。思想:首先找到要39第三節(jié)動(dòng)態(tài)數(shù)組注意:思想:依次取出數(shù)組的一個(gè)個(gè)元素與其后續(xù)的所有元素比較(通過雙重的Do循環(huán)實(shí)現(xiàn))。刪除數(shù)組中的元素通過將其后續(xù)的元素依次前移即可實(shí)現(xiàn)重復(fù)的數(shù)據(jù)。思考:能否用For循環(huán)替代Do循環(huán)?為什么?例6-9編寫程序,刪除一個(gè)數(shù)列中的重復(fù)數(shù)。運(yùn)行結(jié)果:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第三節(jié)動(dòng)態(tài)數(shù)組注意:例6-9編寫程序,刪除一個(gè)數(shù)列中的40第四節(jié)控件數(shù)組

第四節(jié)控件數(shù)組大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第四節(jié)控件數(shù)組第四節(jié)控件數(shù)組大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥41第四節(jié)控件數(shù)組6.4控件數(shù)組6.4.1基本概念引入控件數(shù)組是由一組具有共同名稱和相同類型的控件組成,數(shù)組中的每一個(gè)控件共享同樣的事件過程。控件數(shù)組的名字由控件的Name屬性指定,而數(shù)組中的每個(gè)元素的下標(biāo)則由控件的Index屬性指定,控件數(shù)組的第一個(gè)元素的下標(biāo)是0,控件數(shù)組可用到的最大索引值為32767。同一控件數(shù)組中的元素可以有相同的屬性設(shè)置值,也可以有自己的屬性設(shè)置值。引用形式:控件數(shù)組名(下標(biāo)) 例:Optionl(0) 表示控件數(shù)組Optionl的第0個(gè)元素。大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第四節(jié)控件數(shù)組6.4控件數(shù)組引入控件數(shù)組是由一組具42第四節(jié)控件數(shù)組6.4.2建立控件數(shù)組控件數(shù)組的建立有三種方法:1)創(chuàng)建同名控件

2)復(fù)制現(xiàn)存控件

3)運(yùn)用代碼產(chǎn)生控件數(shù)組

通過Load方法添加其余的若干個(gè)元素,也可以通過Unload方法刪除某個(gè)添加的元素。調(diào)用形式:

Load控件數(shù)組名(<表達(dá)式>)Unload控件數(shù)組名(<表達(dá)式>)大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第四節(jié)控件數(shù)組6.4.2建立控件數(shù)組大學(xué)計(jì)算機(jī)基礎(chǔ)——沈43第四節(jié)控件數(shù)組例6-10在程序運(yùn)行時(shí),通過Load語句創(chuàng)建名為Tl的控件數(shù)組。運(yùn)行結(jié)果:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第四節(jié)控件數(shù)組例6-10在程序運(yùn)行時(shí),通過Load語句創(chuàng)44第三節(jié)動(dòng)態(tài)數(shù)組

數(shù)組常用的算法大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第三節(jié)動(dòng)態(tài)數(shù)組數(shù)組常用的算法大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥451.分類統(tǒng)計(jì)

SelectCasea(i)CaseIs<60b(5)=b(5)+1CaseIs<70b(6)=b(6)+1······CaseIs<=100b(9)=b(9)+1EndSelect例:隨機(jī)產(chǎn)生20個(gè)學(xué)生的成績(jī),統(tǒng)計(jì)50~59、60~69、70~79、80~89、90~100各分?jǐn)?shù)段的人數(shù)。方法一

j=a(i)\10Ifj=10Thenj=9b(j)=b(j)+1

Fori=5to8‘輸出各分?jǐn)?shù)段人數(shù)

Printi*10;“~”;i*10+9;“的人數(shù):”;b(i)NextiPrint“90~100的人數(shù):”;b(9)方法二大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)1.分類統(tǒng)計(jì)SelectCasea(i)例46第二節(jié)數(shù)組的基本操作提示:文本框中的內(nèi)容可以在設(shè)計(jì)狀態(tài)時(shí),在文本框的Text屬性中輸入,可以避免程序調(diào)試時(shí)重復(fù)的文字輸入。6.2.4數(shù)組應(yīng)用例6-5

統(tǒng)計(jì)字母(不分大小寫)在文本中出現(xiàn)的次數(shù)。運(yùn)行結(jié)果:大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)第二節(jié)數(shù)組的基本操作提示:文本框中的內(nèi)容可以在設(shè)計(jì)狀態(tài)時(shí),472.求極值(最大、最?。?/p>

例:求一批數(shù)中的最大值。方法一:max=最小值,min=最大值方法二:max=第一個(gè)元素的值,min=第一個(gè)元素的值改進(jìn):max、min保存最大、最小元素的下標(biāo)這時(shí)只能求出最大、最小值,但若是問那個(gè)同學(xué)成績(jī)最高、最低,很顯然不知道,因此在求最大、最小值時(shí)最好記錄下標(biāo)。程序大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)2.求極值(最大、最?。├呵笠慌鷶?shù)中的最大483.數(shù)組元素逆序

Fori=1Ton\2t=num(i)num(i)=num(n-i+1)num(n-i+1)=tNexti大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)3.數(shù)組元素逆序Fori=1Ton\2大學(xué)計(jì)49數(shù)組的輸出往往體現(xiàn)在對(duì)數(shù)組中已存數(shù)據(jù)的打印輸出效果,主要是二維數(shù)組,如各種矩陣的輸出樣式,也是考試的熱點(diǎn)。

矩陣Fori=0To4‘5次

Forj=0to4‘5次

sc(i,j)=i*5+jPrintsc(i,j);NextjPrint‘換行Nexti已知數(shù)組sc(0To4,0To4)4.輸出矩陣

大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)數(shù)組的輸出往往體現(xiàn)在對(duì)數(shù)組中已存數(shù)據(jù)的打印輸出效果50左下三角矩陣Fori=0To4

‘5次

Forj=0toi

‘i+1次

sc(i,j)=i*5+jPrintsc(i,j);NextjPrint‘換行Nexti已知數(shù)組sc(0To4,0To4)大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)左下三角矩陣已知數(shù)組sc(0To4,0To4)大學(xué)計(jì)51左上三角矩陣Fori=0To4

‘5次

Forj=0to4-i‘5-i次

sc(i,j)=i*5+jPrintsc(i,j);NextjPrint‘換行Nexti已知數(shù)組sc(0To4,0To4)大學(xué)計(jì)算機(jī)基礎(chǔ)——沈陽藥科大學(xué)左上三角矩陣已知數(shù)組sc(0To4,0To4)大學(xué)計(jì)52右上三角矩陣Fori=0To4

‘5次

Forj=ito4

‘5-i次

sc(i,j)=i*5+jPrintTab(4*j);sc(i,j);Next

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論