數(shù)組及其應用_第1頁
數(shù)組及其應用_第2頁
數(shù)組及其應用_第3頁
數(shù)組及其應用_第4頁
數(shù)組及其應用_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

數(shù)組及其應用第1頁,課件共47頁,創(chuàng)作于2023年2月輸入10個數(shù),輸出它們的平均值及大于平均值的那些數(shù)?引例:。輸入A當N<=10N=N+1打印AveS=0:N=1S=S+AAve=S/10DimN%,S!,A!,Ave!ForN=1to10A=Val(InputBox(“EnterANumber”))S=S+ANextNAve=S/10PrintAve第2頁,課件共47頁,創(chuàng)作于2023年2月輸入10個數(shù),輸出它們的平均值及大于平均值的那些數(shù)。引例:如果使用:A1,A2,A3,A4,A5,A6,A7,A8,A9,A10DimN%,S!,Ave!,A1!,A2!….,A10!‘實際程序是不能這樣寫

A1=Val(InputBox(“EnterA1Number”))A2=Val(InputBox(“EnterA2Number”))A3=Val(InputBox(“EnterA3Number”))A4=Val(InputBox(“EnterA4Number”))A5=Val(InputBox(“EnterA5Number”))A6=Val(InputBox(“EnterA6Number”))第3頁,課件共47頁,創(chuàng)作于2023年2月引例:

A7=Val(InputBox(“EnterA7Number”))A8=Val(InputBox(“EnterA8Number”))A9=Val(InputBox(“EnterA9Number”))A10=Val(InputBox(“EnterA10Number”))S=A1+A2+A3+A4+A5+A6+A7+A8+A9+A10Ave=S/10IFA1>AveThenPrintA1IFA2>AveThenPrintA2IFA3>AveThenPrintA3IFA4>AveThenPrintA4………..‘實際程序是不能這樣寫

第4頁,課件共47頁,創(chuàng)作于2023年2月引例:思考:

如果能使用Ai(i=1,2,…..10)的形式?使用循環(huán)來寫程序

VB中表示下標變量就是通過定義數(shù)組來實現(xiàn)的。第5頁,課件共47頁,創(chuàng)作于2023年2月4.1概述

數(shù)組的概念:數(shù)組并不是一種數(shù)據(jù)類型,而是一組相同類型數(shù)據(jù)的集合。用一個統(tǒng)一的名字(數(shù)組名)代表邏輯上相關的一批數(shù)據(jù),每個元素用下標變量來區(qū)分;下標變量代表元素在數(shù)組中的位置。VB中數(shù)組的表示形式:

A(1),A(10)‘一維數(shù)組

X(1,1),X(2,10)‘二維數(shù)組

Y(0,0,0),Y(1,2,5)‘三維數(shù)組第4章數(shù)組及其應用第6頁,課件共47頁,創(chuàng)作于2023年2月VisualBasic中的數(shù)組分類:按數(shù)組的大?。ㄔ貍€數(shù))是否可以改變來分為:定長數(shù)組、動態(tài)(可變長)數(shù)組。按元素的數(shù)據(jù)類型可分為:

數(shù)值型數(shù)組、字符串數(shù)組、邏輯數(shù)組、日期型數(shù)組、變體數(shù)組等、對象數(shù)組。按數(shù)組的維數(shù)可分為:

一維數(shù)組、二維數(shù)組、多維數(shù)組。

4.1概述

第7頁,課件共47頁,創(chuàng)作于2023年2月一維數(shù)組形式:

Dim數(shù)組名([<下界>to]<上界>)[As<數(shù)據(jù)類型>]或:

Dim數(shù)組名[<數(shù)據(jù)類型符>]([<下界>to]<上界>)例:Dima(1to10)AsInteger‘聲明了a數(shù)組有10個元素1是下標的下界10是下標的上界數(shù)組元數(shù)的數(shù)據(jù)類型與上面聲明等價形式:

Dima%(1to10)4.2一維數(shù)組4.2.1一維數(shù)組的聲明

第8頁,課件共47頁,創(chuàng)作于2023年2月說明:

1.數(shù)組名的命名規(guī)則與變量的命名相同。

2.數(shù)組的元素個數(shù):上界-下界+1。

3.缺省<下界>為0,若希望下標從1開始,可在模塊的通用部分使用OptionBase語句將設為1。其使用格式是:

OptionBase0|1‘后面的參數(shù)只能取0或1

例如:

OptionBase1‘將數(shù)組聲明中缺省<下界>下標設為1

4.2.1一維數(shù)組的聲明4.<下界>和<上界>不能使用變量,必須是常量,常量可以是直接常量、符號常量,一般是整型常量。第9頁,課件共47頁,創(chuàng)作于2023年2月4.如果省略As子句,則數(shù)組的類型為變體類型。6.數(shù)組中各元素在內存占一片連續(xù)的存儲空間。

4.2.1一維數(shù)組的聲明DimNAsIntegerN=Val(InputBox(“EnterN=?”))DimA(N)AsInteger×A(0)A(1)A(2)A(n)….

一維數(shù)組在內存中存放的順序第10頁,課件共47頁,創(chuàng)作于2023年2月使用形式:

數(shù)組名(下標)

其中:下標可以是整型變量、常量或表達式。例如:設有下面的數(shù)組定義:

DimA(10)AsInteger

,B(10)AsInteger

則下面的語句都是正確的。

A(1)=A(2)+B(1)+5'取數(shù)組元素運算

A(i)=B(i)'下標使用變量

B(i+1)=A(i+2)'下標使用表達式第五章數(shù)組

4.2.2一維數(shù)組元素的引用第11頁,課件共47頁,創(chuàng)作于2023年2月1.可通過循環(huán)給數(shù)組元素的初值

Fori=1To10 ‘A數(shù)組的每個元素值為1 A(i)=1Nexti

2.數(shù)組的輸入

輸入10個數(shù),并存入到數(shù)組A中Fori=1To10A(i)=Val(InputBox(“輸入A(”&i&“)的值”))Nexti第五章數(shù)組

4.2.3一維數(shù)組的基本操作第12頁,課件共47頁,創(chuàng)作于2023年2月3.求數(shù)組中最大元素及所在下標

DimMaxAsInteger,iMaxAsIntegerMax=A(1):iMax=1Fori=2To10IfA(i)>MaxThenMax=A(i)iMax=iEndIfNextiPrint"A("&iMax&")=";A(iMax)第五章數(shù)組

4.2.3一維數(shù)組的基本操作第13頁,課件共47頁,創(chuàng)作于2023年2月4.將數(shù)組元素倒置Fori=1To10\2t=A(i)A(i)=A(10-i+1)A(10-i+1)=tNextI(演示)

4.2.3一維數(shù)組的基本操作第14頁,課件共47頁,創(chuàng)作于2023年2月一、統(tǒng)計問題

例4.1例4.1

編程求某班60個學生某門課程考試的平均成績及高于平均成績的學生人數(shù)。例4.2

在例4.1中如果還要統(tǒng)計0~9,10~19,20~29,….80~89,90~99分數(shù)段及100分的學生人。則可另用數(shù)組bn來存各分數(shù)段的人數(shù),并用bn(0)存0~9分的人數(shù),bn(1)存10~19分的人數(shù),…bn(9)存90~99分的人數(shù),bn(10)存100分的人數(shù)。4.2.4一維數(shù)組的應用第15頁,課件共47頁,創(chuàng)作于2023年2月二、排序問題數(shù)據(jù)的排序就是將一批數(shù)據(jù)由小大到(升序)或由大到?。ń敌颍┻M行排列。常用的有選擇法、冒泡法。

1.選擇法排序753468

91算法(升序)(設有n個數(shù),存放在數(shù)組A(1)…..A(n)中)

1)第1遍:從中選出最小的數(shù),與第1個數(shù)交換位置;

(演示)第五章數(shù)組

4.2.4一維數(shù)組的應用——數(shù)據(jù)排序第16頁,課件共47頁,創(chuàng)作于2023年2月

2)第2遍:除第1個數(shù)外,其余n-1個數(shù)中選最小的數(shù),與第2個數(shù)交換位置;(演示)753468

9171

3)依次類推,選擇了n-1次后,這個數(shù)列已按升序排列。第五章數(shù)組

4.2.4一維數(shù)組的應用——數(shù)據(jù)排序第17頁,課件共47頁,創(chuàng)作于2023年2月選擇法排序算法的流程圖:第五章數(shù)組

4.2.4一維數(shù)組的應用——數(shù)據(jù)排序第18頁,課件共47頁,創(chuàng)作于2023年2月Fori=1Ton-1p=iForj=i+1TonIfa(p)>a(j)Thenp=jNextjt=a(i):a(i)=a(p):a(p)=tNexti選擇法排序(升序)的VB程序:思考:如果按降序排,程序如何修改?第五章數(shù)組

4.2.4一維數(shù)組的應用——數(shù)據(jù)排序第19頁,課件共47頁,創(chuàng)作于2023年2月例4.3

用隨機函數(shù)產(chǎn)生50個10~100的隨機整數(shù),并按由小到大的順序打印出來。

演示第五章數(shù)組

4.2.4一維數(shù)組的應用——數(shù)據(jù)排序第20頁,課件共47頁,創(chuàng)作于2023年2月2.冒泡法排序(升序)

算法:(將相鄰兩個數(shù)比較,大數(shù)交換到后面)1)第1趟:將每相鄰兩個數(shù)比較,大數(shù)交換到后面,經(jīng)n-1次兩兩相鄰比較后,最大的數(shù)已交換到最后一個位置。演示

4.2.4一維數(shù)組的應用——數(shù)據(jù)排序2)第2趟:將前n-1個數(shù)(最大的數(shù)已在最后)按上法比較,經(jīng)n-2次兩兩相鄰比較后得次大的數(shù);

3)依次類推,n個數(shù)共進行n-1趟比較,在第j趟中要進行n-j次兩兩比較。第21頁,課件共47頁,創(chuàng)作于2023年2月冒泡法排序算法的流程圖:第五章數(shù)組

4.2.4一維數(shù)組的應用——數(shù)據(jù)排序第22頁,課件共47頁,創(chuàng)作于2023年2月Fori=1Ton-1Forj=1Ton-iIfa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndifNextjNexti冒泡法排序(升序)程序:演示第五章數(shù)組

4.2.4一維數(shù)組的應用——數(shù)據(jù)排序第23頁,課件共47頁,創(chuàng)作于2023年2月3、兩種排序方法的比較結論:選擇法排序比冒泡法排序算法優(yōu)問題:兩種排序方法那一種好?第五章數(shù)組

4.2.4一維數(shù)組的應用——數(shù)據(jù)排序第24頁,課件共47頁,創(chuàng)作于2023年2月4.3二維數(shù)組及多維數(shù)組4.3.1二維數(shù)組的聲明聲明格式如下:Dim數(shù)組名([<下界>]to<上界>,[<下界>to]<上界>)[As<數(shù)據(jù)類型>]其中的參數(shù)與一維數(shù)組完全相同。例如:Dima(2,3)AsSingle

二維數(shù)組在內存的存放順序是“先行后列”。例如數(shù)組a的各元素在內存中的存放順序是:a(0,0)→a(0,1)→a(0,2)→a(0,3)→a(1,0)→a(1,1)→a(1,2)→a(1,3)→a(2,0)→(2,1)→a(2,2)→a(2,3)第25頁,課件共47頁,創(chuàng)作于2023年2月4.3.2二維數(shù)組的引用引用形式:

數(shù)組名(下標1,下標2)例如:

a(1,2)=10a(i+2,j)=a(2,3)*2在程序中常常通過二重循環(huán)來操作使用二維數(shù)組元素。

4.3.3二維數(shù)組的基本操作二維數(shù)組數(shù)據(jù)的輸入2.求最大元素及其所在的行和列3.計算兩矩陣相乘4.矩陣的轉置4.3二維數(shù)組及多維數(shù)組第26頁,課件共47頁,創(chuàng)作于2023年2月二維數(shù)組數(shù)據(jù)的輸入ConstN=4,M=5,L=6Dima(1toN,1toM)AsInteger,i%,j%,k%1.給二維數(shù)組a輸入數(shù)據(jù)的程序段如下:

Fori=1to4Forj=1to5A(i,j)=Val(InputBox("a("&I&","&j&")=?"))NextjNexti4.3二維數(shù)組及多維數(shù)組第27頁,課件共47頁,創(chuàng)作于2023年2月2.求最大元素及其所在的行和列用變量max存放最大值,row,col存放最大值所在行列號

Max=a(1,1):row=1:Col=1Fori=1ToNForj=1ToMIfa(i,j)>a(row,Col)ThenMax=a(i,j)row=iCol=jEndIfNextjNextiPrint"最大元素是";MaxPrint"在第"&row&"行,";"第"&Col&"列"4.3二維數(shù)組及多維數(shù)組第28頁,課件共47頁,創(chuàng)作于2023年2月3.計算兩矩陣相乘(略)

4.矩陣的轉置方陣的轉置的程序代碼如下:Fori=2ToM

Forj=1ToI-1Temp=a(i,j)a(i,j)=a(j,i)a(j,i)=TempNextjNexti設A是M*N的矩陣,要重新定義一個N*M的二級數(shù)組B,將A轉置得到B的程序代碼如下:Fori=1

ToM

Forj=1

ToNb(j,i)=a(i,j)NextjNexti4.3二維數(shù)組及多維數(shù)組第29頁,課件共47頁,創(chuàng)作于2023年2月例4.4

設某一個班共有60個學生,期末考試5門課程,請編一程序評定學生的獎學金,要求打印輸出一、二等獎學金學生的學號和各門課成績。(獎學金評定標準是:總成績超過全班總平成績20%發(fā)給一個獎學金,超過全班總平成績10%發(fā)給二個獎學金。)

4.3二維數(shù)組及多維數(shù)組4.3.4二維數(shù)組應用舉例

第30頁,課件共47頁,創(chuàng)作于2023年2月4.3.5多維數(shù)組的聲明和引用定義多維數(shù)組的格式如下:Dim數(shù)組名([<下界>]to<上界>,[<下界>to]<上界>,……)[As<數(shù)據(jù)類型>]例如:

Dima(5,5,5)AsInteger聲明a是三維數(shù)組

Dimb(2,6,10,5)AsInteger'聲明b是四維數(shù)組4.3二維數(shù)組及多維數(shù)組第31頁,課件共47頁,創(chuàng)作于2023年2月動態(tài)數(shù)組:在聲明時未給出數(shù)組的大小。在程序執(zhí)行時分配存儲空間。4.4.1動態(tài)數(shù)組的建立及使用

建立動態(tài)數(shù)組包括聲明和大小說明兩步:

1.在使用Dim、Private或Public語句聲明括號內為空的數(shù)組。格式:Dim|Private|Public數(shù)組名()As數(shù)據(jù)類型例:Dima()AsInteger2.在過程中用ReDim語句指明該數(shù)組的大小。格式:ReDim[Preserve]數(shù)組名(下標1[,下標2…])

Preserve參數(shù):保留數(shù)組中原來的數(shù)據(jù)例:RedimA(10)RedimPreserveA(20)4.4動態(tài)數(shù)組第32頁,課件共47頁,創(chuàng)作于2023年2月說明:(1)ReDim語句是一個可執(zhí)行語句,只能出現(xiàn)在過程中,并且可以多次使用,改變數(shù)組的維數(shù)和大小。(2)定長數(shù)組聲時中的下標只能是常量,而動態(tài)數(shù)組ReDim語句中的下標是常量,也可以是有了確定值的變量。例:

PrivateSubForm_Click()DimNAsIntegerN=Val(InputBox(“輸入N=?”))Dima(N)AsInteger…….Endsub×4.4動態(tài)數(shù)組第33頁,課件共47頁,創(chuàng)作于2023年2月(3)在過程中可以多次使用ReDim來改變數(shù)組的大小,也可改變數(shù)組的維數(shù)。例:ReDimx(10)ReDimx(20)x(20)=30Printx(20)ReDimx(20,5)x(20,5)=10Printx(20,5)

(4)每次使用ReDim語句都會使原來數(shù)組中值丟失,可以在ReDim后加Preserve

參數(shù)來保留數(shù)組中的數(shù)據(jù)。但此時只能改變最后一維的大小。4.4動態(tài)數(shù)組第34頁,課件共47頁,創(chuàng)作于2023年2月

例4.5

通過輸入對話框輸入一批正整數(shù),將其中的偶數(shù)和奇數(shù)分別存入數(shù)組a和數(shù)組b中,然后分別以每行10個輸出數(shù)組a和b。4.4動態(tài)數(shù)組第35頁,課件共47頁,創(chuàng)作于2023年2月

4.4.2與數(shù)組操作有關的幾個函數(shù)Array函數(shù)Array函數(shù)可方便地對數(shù)組整體賦值,但它只能給聲明Variant的變量或僅由括號括起的動態(tài)數(shù)組賦值。賦值后的數(shù)組大小由賦值的個數(shù)決定。例如,要將1,2,3,4,5,6,7這些值賦值給數(shù)組a,可使用下面的方法賦值。Dima()A=array(1,2,3,4,5,6,7)DimaA=array(1,2,3,4,5,6,7)4.4動態(tài)數(shù)組第36頁,課件共47頁,創(chuàng)作于2023年2月

2求數(shù)組的上界Ubound()函數(shù)、下界Lbound()函數(shù)

Ubound()函數(shù)和Lbound()函數(shù)分別用來確定數(shù)組某一維的上界和下界值。使用形式如下:

UBound(<數(shù)組名>[,<N>])LBound(<數(shù)組名>[,<N>])

其中:<數(shù)組名>:數(shù)組變量的名稱,遵循標準變量命名約定。<N>

:可選的;一般是整型常量或變量。指定返回哪一維的上界。1表示第一維,2表示第二維,如此等等。如果省略默認是1。4.4動態(tài)數(shù)組第37頁,課件共47頁,創(chuàng)作于2023年2月3.Split函數(shù)使用格式:Split(<字符串表達式>[,<分隔符>])說明:使用Split函數(shù)可從一個字符串中,以某個指定符號為分隔符,分離若干個子字符串,建立一個下標從零開始的一維數(shù)組。補充例題:通過一文本框中輸入若于個數(shù)據(jù),數(shù)據(jù)之間用“,”分隔。將這些數(shù)據(jù)按升序出到窗體上。4.4動態(tài)數(shù)組第38頁,課件共47頁,創(chuàng)作于2023年2月4.4.3應用舉例例4.6在一個文本框中,輸入多個用“,”分隔的整數(shù),按回車鍵后,將各數(shù)據(jù)按升序打印輸出在窗體上。程序運行情況如圖4-4所示。4.4動態(tài)數(shù)組圖4-5程序運行情況

第39頁,課件共47頁,創(chuàng)作于2023年2月第五章數(shù)組本章小結1.數(shù)組的概念

通常數(shù)組用來存放具有相同性質的一組數(shù)據(jù),即數(shù)組中的數(shù)據(jù)必須是同一個類型。數(shù)組元素是數(shù)組中的某一個數(shù)據(jù)項,引用數(shù)組通常是引用數(shù)組元素,數(shù)組元素的使用同簡單變量的使用類似。數(shù)組可以被看作一組帶下標的變量集合,系統(tǒng)分配一塊連續(xù)的內存空間來存放數(shù)組中的元素。當所需處理的數(shù)據(jù)個數(shù)確定時,通常使用定長數(shù)組,否則應該考慮使用動態(tài)數(shù)組。

第40頁,課件共47頁,創(chuàng)作于2023年2月第五章數(shù)組本章小結2.數(shù)組的聲明聲明一個已確定數(shù)組元素個數(shù)的數(shù)組:Dim數(shù)組名

([下界

To]上界

[,[下界

To]上界

[,…]])As類型關鍵字它聲明了數(shù)組名、數(shù)組維數(shù)、數(shù)組大小、數(shù)組類型。下界、上界必須為常數(shù),不能為表達式或變量,若省略下界,則默認為

0,

也可用

OptionBase語句將默認下界設置為1。聲明一個長度可變的動態(tài)數(shù)組:Dim數(shù)組名()As類型關鍵字ReDim[Preserve]數(shù)組名

([下界

To]上界

[,[下界

To]上界

[,…]])第41頁,課件共47頁,創(chuàng)作于2023年2月第五章數(shù)組本章小結

溫馨提示

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

評論

0/150

提交評論