版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中英文設(shè)備維修合同范本(2024版)
- 2025年苗圃地租賃合同模板(含知識(shí)產(chǎn)權(quán)保護(hù)條款)
- 2025年度二手房交易房地產(chǎn)評(píng)估機(jī)構(gòu)選擇合同3篇
- 二零二五年度醫(yī)療設(shè)備銷售傭金分紅合同范本3篇
- 二零二五版電子商務(wù)知識(shí)產(chǎn)權(quán)保護(hù)合同簽署4篇
- 二手房購買定金協(xié)議:2024年標(biāo)準(zhǔn)版版B版
- 二零二五版網(wǎng)絡(luò)信息安全技術(shù)服務(wù)合同范本2篇
- 2025版新產(chǎn)品發(fā)布宣傳片制作服務(wù)協(xié)議2篇
- 2025年度個(gè)人之間房屋買賣合同爭(zhēng)議解決條款范本2篇
- 二零二五版月子中心嬰兒早教及產(chǎn)后恢復(fù)服務(wù)合同2篇
- 2024屆高考英語詞匯3500左右
- 量子計(jì)算在醫(yī)學(xué)圖像處理中的潛力
- 阿里商旅整體差旅解決方案
- 浙江天臺(tái)歷史文化名城保護(hù)規(guī)劃說明書
- 邏輯思維訓(xùn)練500題
- 第八講 發(fā)展全過程人民民主PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 實(shí)體瘤療效評(píng)價(jià)標(biāo)準(zhǔn)RECIST-1.1版中文
- 企業(yè)新春茶話會(huì)PPT模板
- GB/T 19185-2008交流線路帶電作業(yè)安全距離計(jì)算方法
- DIC診治新進(jìn)展課件
- 公路工程施工現(xiàn)場(chǎng)安全檢查手冊(cè)
評(píng)論
0/150
提交評(píng)論