第5章 數組和自定義類型_第1頁
第5章 數組和自定義類型_第2頁
第5章 數組和自定義類型_第3頁
第5章 數組和自定義類型_第4頁
第5章 數組和自定義類型_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章數組和自定義類型

5.1數組的概念5.2數組的基本操作和排序5.3列表框和組合框控件5.4自定義類型及其數組5.5綜合應用本章目錄1安徽工業(yè)大學計算機學院5.1數組的概念1.引例例5.1

求100個學生的平均成績,并統計高于平均分的人數。用簡單變量和循環(huán),求平均成績程序段如下:

aver=0Fori=1To100mark=InputBox("輸入學生成績")aver=aver+markNextiaver=aver/100由于循環(huán)體內變量mark只能放一個學生的成績,無法統計高于平均分的人數。若用簡單變量保存100個學生的成績,則需定義100個變量和使用100句輸入語句。由此引入了數組。本章目錄2安徽工業(yè)大學計算機學院用數組解決問題的程序如下:

Dimmark(99)AsInteger'聲明數組markDimaver!,overn%,i%aver=0Fori=0To99'輸入成績,求分數和

mark(i)=InputBox("輸入學生的成績")aver=aver+mark(i)Nextiaver=aver/100'求100人的平均分

overn=0Fori=0To99'統計高于平均分的人數

Ifmark(i)>averThenovern=overn+1Nexti

MsgBox("平均分:"&aver&"高于平均分人數:"&overn)

本章目錄3安徽工業(yè)大學計算機學院數組不是一種數據類型,而是一組相同類型的變量的集合。程序中使用數組的最大好處是用一個數組名代表邏輯上相關的一批數據,用下標表示該數組中的各個元素,和循環(huán)語句結合使用,使得程序書寫簡潔。數組必須先聲明后使用本章目錄4安徽工業(yè)大學計算機學院數組不是一種數據類型,而是一組相同類型的變量的集合。程序中使用數組的最大好處是用一個數組名代表邏輯上相關的一批數據,用下標表示該數組中的各個元素,和循環(huán)語句結合使用,使得程序書寫簡潔。數組必須先聲明后使用使用Dim語句聲明數組名、類型、維數、數組大小聲明時下標的個數確定數組的維數,數組聲明后在內存可分配一塊連續(xù)的區(qū)域。本章目錄5安徽工業(yè)大學計算機學院5.1.2數組聲明及初始化一維數組

Dim數組名(下標上界)

[As類型]下標上界為常數、已有值的表達式或變量。下標下界為0。一維數組的大小為:下標上界+1。本章目錄6安徽工業(yè)大學計算機學院Dimmark(99)AsInteger

聲明了一維定長整型數組mark,共有100個元素,下標范圍為0To99;mark數組的各元素是mark(0),mark(1),…,mark(99);mark(i)表示由下標i的值決定是哪一個元素。mark數組內存分配如下:mark(99)mark(98)…mark(2)mark(1)mark(0)每個數組元素有一個唯一的順序號,下標不能超出數組聲明時的上、下界范圍,否則會產生“索引超出了數組界限”錯誤

。數組元素的使用規(guī)則與同類型的簡單變量相同本章目錄7安徽工業(yè)大學計算機學院多維數組聲明

Dim數組名(下標1,下標2…)

[As類型]下標數決定了數組的維數,每一維的大小=上界+1;數組的大小為每一維大小的乘積。例Dimx(2,4)AsLong聲明了一個長整型的二維數組

x;共占據3×5個長整型變量的空間

x(1,4)x(1,3)x(1,2)x(1,1)x(1,0)x(2,4)x(2,3)x(2,2)x(2,1)x(2,0)x(0,4)x(0,3)x(0,2)x(0,1)x(0,0)本章目錄8安徽工業(yè)大學計算機學院5.1.3動態(tài)數組及聲明

建立動態(tài)數組要分兩步:用Dim語句聲明數組,但不能指定數組大小Dim

數組名()As數據類型用ReDim語句動態(tài)地分配元素個數ReDim

數組名

(下標[,下標2…])例:Dims()AsSingleSubForm_Load()

ReDims(4,8)

EndSub

本章目錄9安徽工業(yè)大學計算機學院定義動態(tài)數組大小注意:

Dim

是說明語句,可出現在程序的任何地方,而ReDim

是執(zhí)行語句,只能在過程中在過程中可多次使用ReDim語句來改變數組的大小,但不能改變維數和類型可在ReDim

后加Preserve參數用來保留數組中的數據,若使用Preserve參數后,只能改變最后一維的大小。例5.2編一個程序,顯示有n個數的非波那契數序列本章目錄10安徽工業(yè)大學計算機學院5.2數組的基本操作數組的輸入

通過TextBox控件或InputBox函數輸入Dims(3,4)ASIntegerFori=0To3Forj=0To4

s(I,j)=

InputBox("輸入"&i&“,"&j&"元素")NextjNexti本章目錄11安徽工業(yè)大學計算機學院數組的輸出例5.3

形成5×5的方陣,分別輸出方陣中各元素、上三角和下三角元素

本章目錄方陣規(guī)律:第一行的元素為0~4,以后每一行是前一行對應元素增加5上三角規(guī)律:每一行的起始列與行號相同,只要控制內循環(huán)的初值

用Tab函數或Space定位控制輸出的空格,12安徽工業(yè)大學計算機學院求數組和、最值、位置例5.4

求一維數組中各元素之和、最小數組元素,并將最小值數組元素與數組中第一個元素交換求元素和通過循環(huán)將每個元素進行累加求數組中最小元素假設第一個元素為最小,然后將該數與其他元素逐一比較,若發(fā)現小于最小值,就用新值替換最小值,同時記錄下標值。求最大值的方法與求最小值相似本章目錄13安徽工業(yè)大學計算機學院交換元素下標0123456789初值26436187331937597669下標0123456789初值19436187332637597669本章目錄14安徽工業(yè)大學計算機學院數組排序排序是將一組數按遞增或遞減的次序排列,例如按學生的成績、球賽積分等排序。排序的算法有許多,常用的有選擇法、冒泡法、插入法、合并排序等。

選擇法排序基本思想:每次在若干個無序數中找最小(大)數,并放在相應的位置。本章目錄15安徽工業(yè)大學計算機學院數組排序n個數的序列,用選擇法按遞增次序排序的步驟:1)從n個數中找出最小數的下標,出了內循環(huán),最小數與第1個數交換位置;通過這一輪排序,第1個數已確定好。2)除已排序的數外,其余數再按步驟1)的方法選出最小的數,與未排序數中的第1個數交換位置。3)重復步驟2),最后構成遞增序列。選擇法演示本章目錄16安徽工業(yè)大學計算機學院選擇法排序例5.5

對已知存放在數組中的6個數,用選擇法按遞增順序排序。

原始數據869327a(1)a(2)a(3)a(4)a(5)a(6)第1輪比較269387

a(2)a(3)a(4)a(5)a(6)第2輪比較239687

a(3)a(4)a(5)a(6)第3輪比較236

987

a(4)a(5)a(6)第4輪比較236789

a(5)a(6)第5輪比較236789選擇法排序過程示意

本章目錄17安徽工業(yè)大學計算機學院冒泡法排序基本思想是:從第一個元素開始,對數組中兩兩相鄰的元素比較,將值較小的元素放在前面,值較大的元素放在后面,一輪比較比較完畢,一個最大的數沉底成為數組中的最后一個元素,一些較小的數如同氣泡一樣上浮一個位置。n個數,經過n-1輪比較后完成排序。冒泡法演示本章目錄18安徽工業(yè)大學計算機學院冒泡法排序

原始數據869327a(1)a(2)a(3)a(4)a(5)a(6)第1輪比較683279a(1)a(2)a(3)a(4)a(5)

第2輪比較632789a(1)a(2)a(3)a(4)

第3輪比較326789a(1)a(2)a(3)

第4輪比較236789a(1)a(2)

第5輪比較236789例5.6用冒泡排序法實現例5.5的問題。本章目錄19安徽工業(yè)大學計算機學院插入數據

插入數據基本思想是:1)首先查找待插入數據在數組中的位置k;2)然后從最后一個元素開始往前直到下標為k的元素依次往后移動一個位置;3)第k個元素的位置騰出,將數據插入。例5.7在有序數組a中插入數值x。

本章目錄數據插入演示20安徽工業(yè)大學計算機學院刪除數據刪除操作首先也是要找到欲刪除的元素的位置k;然后從k+1到n個位置開始向前移動;最后將數組元素減1。

例5.8要將值為13的元素刪除。

本章目錄數據刪除演示21安徽工業(yè)大學計算機學院5.3列表框和組合框列表框可顯示多個選項供用戶選擇,不能直接修改其中的內容。組合框組合了文本框和列表框的特性而形成的一種控件。組合框有3種式樣。本章目錄22安徽工業(yè)大學計算機學院列表框和組合框重要屬性(1)

ListList是一個集合(2)ListIndex

選項的序號(從0開始)(3)ListCount項目數量

(4)Sorted排序(5)Text被選定的文本內容

本章目錄23安徽工業(yè)大學計算機學院List1.ListIndex=2List1.ListCount=6List1.Sorted=FalseList1.Text為

"C/C++程序設計"

List1.List(List1.ListIndex)等于List1.Text本章目錄24安徽工業(yè)大學計算機學院常用方法

AddItem方法把一個項目加入列表對象.AddItem

項目字符串[,索引值]索引值:決定新增項在列表中的位置,如果省略,則新增項目添加在最后。

RemoveItem方法刪除列表中指定項目對象.RemoveItem

索引值

Clear

清除列表中所有項目例如:List1.Clear 全部清除本章目錄25安徽工業(yè)大學計算機學院重要事件列表框:Click、DblClick組合框:Click例5.9編寫一個能對列表框進行項目添加、修改和刪除的應用程序。修改列表框,先選定項將選項顯示在文本框中,更改文本框中內容后,再更新列表框

本章目錄26安徽工業(yè)大學計算機學院應用例5.10編寫一個使用屏幕字體、字號的程序

例5.11使用列表框實現排序、查找、刪除例5.12使用組合框對省和直轄市名稱管理本章目錄27安徽工業(yè)大學計算機學院5.4自定義類型及數組數組存放性質相同的數據集合。若不同類型信息作為一個整體來描述,例如姓名、性別、出生年月等,通過Type語句來實現。

Type自定義類型名

元素名1As數據類型名

元素名nAs數據類型名

EndType本章目錄28安徽工業(yè)大學計算機學院例如,定義一個有關學生信息的類型:TypeStudType

'StudType為自定義類型名

NameAs

String*5

'姓名

SexAs

String*1

'性別

TelephoneAs

Long

'電話

SchoolAs

String*10

'學校EndType自定義類型不能在過程內定義,一般放在標準模塊文件,默認為Public;若在窗體模塊的通用聲明段定義,必須加Private。

本章目錄29安徽工業(yè)大學計算機學院5.4.2自定義類型變量的使用

定義了自定義類型,就可在變量的聲明時使用。Dim變量名As

自定義類型名例如,如下語句:

DimS1AsStudType,S2AsStudType

聲明S1、S2為兩個同種類型的變量本章目錄30安徽工業(yè)大學計算機學院注意:不要混淆StudType

和S1,前者如同Integer等的類型名,后者根據該類型分配所需的內存空間,存儲各成員數據。(2)類型變量和數組相同之處它們都是由若干個成員組成;不同之處,前者的成員代表不同性質、不同類型的數據,以各個不同的成員名表示;而數組一般存放的是同種性質、同種類型的數據,以下標表示不同的元素。本章目錄31安徽工業(yè)大學計算機學院自定義類型變量成員的引用

引用自定義類型變量中的某個成員,形式如下:

自定義類型變量名.成員名例如,S1.NameS1變量中的姓名

S1.Sex性別可利用With語句簡化成員引用:With結構變量對象名語句塊EndWithWithS1.Name="張華".Sex="男".School="同濟大學"EndWith本章目錄32安徽工業(yè)大學計算機學院5.4.3自定義類型數組及應用自定義類型數組就是數組中的每個元素是自定義類型

溫馨提示

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

評論

0/150

提交評論