![VisualBasic程序設(shè)計(jì)課件之第5章數(shù)組和記錄_第1頁(yè)](http://file4.renrendoc.com/view/513269f6347d04fb662c98c65c402b64/513269f6347d04fb662c98c65c402b641.gif)
![VisualBasic程序設(shè)計(jì)課件之第5章數(shù)組和記錄_第2頁(yè)](http://file4.renrendoc.com/view/513269f6347d04fb662c98c65c402b64/513269f6347d04fb662c98c65c402b642.gif)
![VisualBasic程序設(shè)計(jì)課件之第5章數(shù)組和記錄_第3頁(yè)](http://file4.renrendoc.com/view/513269f6347d04fb662c98c65c402b64/513269f6347d04fb662c98c65c402b643.gif)
![VisualBasic程序設(shè)計(jì)課件之第5章數(shù)組和記錄_第4頁(yè)](http://file4.renrendoc.com/view/513269f6347d04fb662c98c65c402b64/513269f6347d04fb662c98c65c402b644.gif)
![VisualBasic程序設(shè)計(jì)課件之第5章數(shù)組和記錄_第5頁(yè)](http://file4.renrendoc.com/view/513269f6347d04fb662c98c65c402b64/513269f6347d04fb662c98c65c402b645.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章數(shù)組和記錄
5.1數(shù)組的概念
5.2數(shù)組的定義
5.3數(shù)組的基本操作
5.4數(shù)組的應(yīng)用
5.5控件數(shù)組
5.6記錄
5.7常用算法(二)第5章數(shù)組和記錄5.1數(shù)組的概念15.1數(shù)組的概念
1.數(shù)組的作用數(shù)組通常和循環(huán)一起使用可以大大減少編程的復(fù)雜性,有些算法不用數(shù)組就無(wú)法實(shí)現(xiàn)。例5.1計(jì)算100個(gè)學(xué)生某門課的平均分,并統(tǒng)計(jì)高于平均分的人數(shù)。不用數(shù)組就很難編程。Dimmark(1To100)AsInteger,aver!,over%,i%aver=0:over=oFori=1To100mark(i)=InputBox("輸入成績(jī)")aver=aver+mark(i)‘計(jì)算總分Nextiaver=aver/100‘over=0Fori=1To100If(mark(i)>aver)Thenover=over+1NextIPrintaver,over5.1數(shù)組的概念1.數(shù)組的作用22.數(shù)組的概念數(shù)組是一批數(shù)據(jù)或控件的集合。
普通數(shù)組存放一批相同類型的數(shù)據(jù)控件數(shù)組存放一批相同名稱的控件例如,定義一個(gè)integer型數(shù)組a(10),它包含11個(gè)同類型的變量:a(0),a(1),……,a(10)Variant型數(shù)組則可以存放不同類型的數(shù)據(jù)又如,在窗體上畫(huà)一個(gè)標(biāo)簽label1,并用復(fù)制和粘貼的方法操作5次,可以得到一個(gè)名稱為label1的控件數(shù)組,含6個(gè)標(biāo)簽,每個(gè)標(biāo)簽的名稱均為label1,但各個(gè)控件的index屬性值分別是0,1,……,5。2.數(shù)組的概念3
3.數(shù)組元素和數(shù)組的維數(shù)數(shù)組的成員稱為數(shù)組元素,其名稱與數(shù)組名相同,其下標(biāo)表示該元素在數(shù)組中的位置。因此,數(shù)組元素也稱下標(biāo)變量。數(shù)組的維數(shù)表示數(shù)組元素需要幾個(gè)下標(biāo)才能正確表示其在數(shù)組中的位置,它代表數(shù)組的邏輯結(jié)構(gòu),最多60維。一維數(shù)組的邏輯結(jié)構(gòu)是線性的,只用一個(gè)下標(biāo)表示各個(gè)元素在數(shù)組中的位置例a(10):含11個(gè)元素的一維數(shù)組
a(0),a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8),a(9),a(10)二維數(shù)組的邏輯結(jié)構(gòu)是一個(gè)二維表,用兩個(gè)下標(biāo)表示各個(gè)元素在數(shù)組中的位置:第一個(gè)下標(biāo)表示行,第二個(gè)下標(biāo)表示列。例b(2,3):含三行四列共12個(gè)元素的二維數(shù)組
b(0,0)b(0,1)b(0,2)b(0,3)b(1,0)b(1,1)b(1,2)b(1,3)b(2,0)b(2,1)b(2,2)b(2,3)3.數(shù)組元素和數(shù)組的維數(shù)4
4.數(shù)組的存儲(chǔ)結(jié)構(gòu)數(shù)組在內(nèi)存中占用一片連續(xù)的存儲(chǔ)單元。
一維數(shù)組的存儲(chǔ)結(jié)構(gòu)與邏輯結(jié)構(gòu)相同,即各個(gè)元素按下標(biāo)順序依次存放;
二維數(shù)組的存儲(chǔ)結(jié)構(gòu)是按行的順序存儲(chǔ)各個(gè)元素。例如,數(shù)組b(2,3)的存儲(chǔ)形式為:b(0,0)b(0,1)b(0,2)b(0,3)b(1,0)b(1,1)b(1,2)b(1,3)b(2,0)b(2,1)b(2,2)b(2,3)
三維數(shù)組是由若干個(gè)二維數(shù)組組成的,其存儲(chǔ)結(jié)構(gòu)是按順序存儲(chǔ)各個(gè)二維數(shù)組。例如,數(shù)組c(1,2,1)的存儲(chǔ)形式為:c(0,0,0)c(0,1,0)c(0,2,0)c(1,0,0)c(1,1,0)c(1,2,0)c(0,0,1)c(0,1,1)c(0,2,1)c(1,0,1)c(1,1,1)c(1,2,1)4.數(shù)組的存儲(chǔ)結(jié)構(gòu)55.2數(shù)組的定義靜態(tài)數(shù)組(定界數(shù)組)動(dòng)態(tài)數(shù)組(可變數(shù)組、可調(diào)數(shù)組)
靜態(tài)數(shù)組:在定義時(shí)明確規(guī)定數(shù)組的大小,且在程序運(yùn)行過(guò)程中,其大小不能再改變
動(dòng)態(tài)數(shù)組:在定義時(shí)不指定數(shù)組的大小,在運(yùn)行過(guò)程中可以根據(jù)需要用ReDim重新規(guī)定其大小數(shù)組5.2數(shù)組的定義數(shù)組6
1.靜態(tài)數(shù)組的定義
形式:Dim數(shù)組名(維界1[,維界2…])[As類型]維界1、維界2等表示各維的大小,形式為:
[下界To]上界
下界和上界為常數(shù)表達(dá)式:
-2147483648到2147483647下界缺省時(shí)默認(rèn)0維界用來(lái)確定數(shù)組的體積。類型缺省時(shí),默認(rèn)變體型
除了用Dim外,還可以用static、private和public來(lái)定義數(shù)組,它們可以在不同的窗體和模塊內(nèi)定義,所定義的數(shù)組的作用范圍也不相同。1.靜態(tài)數(shù)組的定義7下界可以缺省,系統(tǒng)默認(rèn)的下界缺省值為0。例:DimlArray(0To3,0To4)AsLong等價(jià)于:DimlArray(3,4)AsLong
例:Dimmark(1to100)AsInteger下界可以缺省,系統(tǒng)默認(rèn)的下界缺省值為0。例:Dimmark8如果需要默認(rèn)的下界缺省值不是0,則可以在通用聲明段內(nèi)用OptionBase語(yǔ)句確定,例如用
OptionBase1來(lái)定義下界缺省值為1,此后,若定義Dima(2,3)則等價(jià)于Dima(1to2,1to3)注意:(1)在數(shù)組定義中,數(shù)組名后面括號(hào)中數(shù)值表示數(shù)組的維界,即每一維的大?。欢诔绦蚱渌胤匠霈F(xiàn)的帶擴(kuò)號(hào)的則表示數(shù)組中的某一個(gè)元素,括號(hào)中的數(shù)值表示該元素在數(shù)組中的位置。兩者寫(xiě)法形式相同,但意義不同。Dimx(10)AsInteger‘定義x數(shù)組有11個(gè)元素x(10)=100‘對(duì)x(10)這個(gè)數(shù)組元素賦值(2)靜態(tài)數(shù)組一經(jīng)定義,編譯系統(tǒng)為其安排存儲(chǔ)空間,其維數(shù)和各維大小不能再改變?nèi)绻枰J(rèn)的下界缺省值不是0,則可以在通用聲明段內(nèi)用Opt9
2.動(dòng)態(tài)數(shù)組的定義定義動(dòng)態(tài)數(shù)組時(shí),數(shù)組名后面的括號(hào)內(nèi)不含維界。這時(shí),編譯系統(tǒng)并不為該數(shù)組安排存儲(chǔ)空間。而在程序運(yùn)行時(shí),用ReDim語(yǔ)句指明該數(shù)組的大小,并安排存儲(chǔ)空間DimsArray()AsSingleSubForm_Load() …ReDimsArray(4,8)‘sArray原有值丟失 …ReDimPreservesArray(4,100)‘sArray原有值保留…EndSub2.動(dòng)態(tài)數(shù)組的定義10
(1)重新定義動(dòng)態(tài)數(shù)組的大小時(shí),既可以改變其大小,也可以改變其維數(shù),下標(biāo)可以用常數(shù),也可以用有確定值的變量。例如:Dima()AsInteger‘a(chǎn)為動(dòng)態(tài)數(shù)組PrivateSubCommand1_click()ReDima(4,5)‘重新定義動(dòng)態(tài)數(shù)組……n=InputBox(“請(qǐng)輸入n的值”)ReDima(n)‘重新定義動(dòng)態(tài)數(shù)組……EndSub(1)重新定義動(dòng)態(tài)數(shù)組的大小時(shí),既可以改變其大小,也可11
(2)定義Variant型動(dòng)態(tài)數(shù)組時(shí),可以省略數(shù)組名后面的圓括號(hào)Dima‘a(chǎn)為variant型變量或數(shù)組a=5‘a(chǎn)為簡(jiǎn)單變量PrintaRedima(5)‘a(chǎn)為數(shù)組ForI=0to5a(I)=IPrinta(I);NextI(2)定義Variant型動(dòng)態(tài)數(shù)組時(shí),可以省略數(shù)組名后面12
(3)每次使用ReDim語(yǔ)句都會(huì)使數(shù)組中原有的數(shù)據(jù)丟失,當(dāng)希望改變數(shù)組大小而又要保留數(shù)組中原有的數(shù)據(jù)時(shí),可以在數(shù)組名前面增加Preserve關(guān)鍵字,這時(shí),只能改變多維數(shù)組中最后一維的上界,而不允許改變其它維的大小及最后一維的下界。Dima()AsInteger……ReDima(10,10)……ReDimPreservea(10,Ubound(a)+2)‘正確……ReDimPreservea(Ubound(a)+2,10)‘錯(cuò)誤(3)每次使用ReDim語(yǔ)句都會(huì)使數(shù)組中原有的數(shù)據(jù)丟失,當(dāng)135.3數(shù)組的基本操作1.數(shù)組元素的賦值(1)靜態(tài)數(shù)組只能對(duì)數(shù)組元素逐一賦值,不能用數(shù)組名整體賦值Dima(4)AsIntegerFori=0To4 a(i)=10‘a(chǎn)數(shù)組的每個(gè)元素值為10NextI是允許的。
a=(1,2,3,4,5)是不允許的。
5.3數(shù)組的基本操作1.數(shù)組元素的賦值14
(2)變體型動(dòng)態(tài)數(shù)組可以用Array函數(shù)定界和整體賦值DimaAsVariant,b()Asvariant,i%a=Array(1,2,3,4,5)b=Array(“abc”,”derf”,67,True)Fori=Lbound(a)ToUbound(a)Picture1.Printa(i)NextiFori=Lbound(b)ToUbound(b)Picture1.Printb(i)NextI其中,Lbound()和Ubound()用來(lái)確定數(shù)組的下界和上界(2)變體型動(dòng)態(tài)數(shù)組可以用Array函數(shù)定界和整體賦值15
(3)動(dòng)態(tài)數(shù)組也可以用同類型的靜態(tài)數(shù)組整體賦值Dima(4)AsInteger,b()AsIntegera(0)=1:a(1)=3:a(2)=5:a(3)=-8:a(4)=7
b=a‘將數(shù)組a整體賦給數(shù)組b,b為動(dòng)態(tài)數(shù)組其中,b=a相當(dāng)于Fori=Lbound(a)ToUbound(a)b(i)=a(i)Nexti(3)動(dòng)態(tài)數(shù)組也可以用同類型的靜態(tài)數(shù)組整體賦值162.數(shù)組的輸入
可以用InputBox函數(shù)或文本框?qū)崿F(xiàn)數(shù)組的輸入DimsB(4,5)AsInteger,i%,j%Fori=0To4Forj=0To5
sB(i,j)=InputBox("輸入sB("&i&","&j&)"的值")NextjNextiFori=0To4Forj=0To5PrintFormat$(sB(i,j),"00");spc(2);NextjPrintNexti用inputbox輸入數(shù)組2.數(shù)組的輸入用inputbox輸入數(shù)組173.數(shù)組的輸出數(shù)組的輸出只能對(duì)數(shù)組的各個(gè)元素進(jìn)行。例:輸出方陣sc中的下三角元素
Dimsc(4,4)AsInteger
Fori=0To4Forj=0Toisc(i,j)=i*5+jPrintsc(i,j);““;NextjPrintNexti如何輸出上三角?3.數(shù)組的輸出如何輸出上三角?184.求數(shù)組中最大元素及所在下標(biāo)及各元素之和
OptionBase1
DimMaxAsInteger,iMaxAsIntegerDimSumAsInteger,iA(10)…… Max=iA(1):iMax=1:Sum=iA(1)Fori=2To10IfiA(i)>MaxThen‘求最大值Max=iA(i)iMax=iEndIfSum=Sum+iA(i)‘求各元素之和NextiPicture1.PrintMax,iMax,Sum4.求數(shù)組中最大元素及所在下標(biāo)及各元素之和195.將數(shù)組iA(10)中第一個(gè)元素與最后一個(gè)元素交換,第二個(gè)元素與倒數(shù)第二個(gè)元素交換,直到整個(gè)數(shù)組各元素按逆序存放。
Fori=1To10\2t=iA(i)iA(i)=iA(10-i+1)iA(10-i+1)=tNexti5.將數(shù)組iA(10)中第一個(gè)元素與最后一個(gè)元素交換,第二201.控件數(shù)組的概念一組相同的控件可以組成一個(gè)控件數(shù)組,它們共用一個(gè)控件名,具有相同的屬性,建立時(shí)系統(tǒng)給每個(gè)元素賦一個(gè)唯一的索引號(hào)(Index=0,1,2,...),類似數(shù)組的下標(biāo)。使用控件數(shù)組的最大優(yōu)點(diǎn)是數(shù)組中的各個(gè)控制件可以共享同樣的事件過(guò)程,從而減少編程工作量。例:PrivateSubcmdName_Click(IndexAsInteger)…IfIndex=3then‘處理第四個(gè)命令按鈕的操作EndIf…EndSub5.4控件數(shù)組1.控件數(shù)組的概念5.4控件數(shù)組212.控件數(shù)組的建立(1)在設(shè)計(jì)階段建立第一步先建立第一個(gè)控件,即在窗體上畫(huà)出該控件,設(shè)置其Name屬性,作為控件數(shù)組名。第二步選中該控件,進(jìn)行“復(fù)制”和“粘貼”,當(dāng)彈出的對(duì)話框中出現(xiàn)“已經(jīng)有一個(gè)控件為…...,創(chuàng)建控件數(shù)組嗎”信息時(shí),單擊“是”按鈕,就建立了一個(gè)控件數(shù)組,經(jīng)過(guò)若干次“復(fù)制”和“粘貼”,可以建立該控件數(shù)組的各個(gè)元素。每個(gè)元素都是一個(gè)控件,它們具有相同的Name,各個(gè)控件的index屬性值為該控件在數(shù)組中的位置(索引)號(hào),從0開(kāi)始。第三步編制控件數(shù)組的事件過(guò)程。2.控件數(shù)組的建立22例5.3建立含有四個(gè)命令按鈕的控件數(shù)組,當(dāng)單擊某個(gè)命令按鈕,分別顯示不同的圖形或結(jié)束操作。PrivateSubcommand1_Click(IndexAsInteger)Picture1.ClsPicture1.FillStyle=5'填充右斜線圖案SelectCaseIndexCase0Picture1.Print"畫(huà)直線"Picture1.Line(2,2)-(7,7)Case1Picture1.Print"畫(huà)矩形"Picture1.Line(2,2)-(7,7),,BFCase2Picture1.Print"畫(huà)圓"Picture1.Circle(4.5,4.5),3.5,,,,1CaseElseEndEndSelectEndSub例5.3建立含有四個(gè)命令按鈕的控件數(shù)組,當(dāng)單擊某個(gè)命令按鈕23(2)在程序運(yùn)行階段建立第一步在窗體上畫(huà)出某控件(如Label1),并設(shè)置該控件的Index屬性值為0,表示該控件為數(shù)組,從而建立控件數(shù)組的第一個(gè)元素第二步在編程時(shí)通過(guò)Load方法添加其余的若干個(gè)元素,也可以通過(guò)Unload方法刪除某個(gè)添加的元素。如:Loadlabel1(i)i>=1第三步在程序中為每個(gè)新添加的控件數(shù)組元素設(shè)置Left和Top屬性以確定其在窗體的位置,并將其Visible屬性設(shè)置為True(或-1)。程序運(yùn)行時(shí)會(huì)自動(dòng)按程序中的設(shè)置,將各個(gè)控件顯示在窗體上。(2)在程序運(yùn)行階段建立24例5.4通過(guò)程序建立的方法在窗體上用64個(gè)標(biāo)簽框組成一個(gè)國(guó)際象棋的棋盤。①先在窗體上畫(huà)label1控件,設(shè)置其Index屬性值為0,表示該控件為數(shù)組,從而建立控件數(shù)組的第一個(gè)元素②在Form_load()事件中用兩重循環(huán)由Load方法自動(dòng)生成8行8列l(wèi)abel1(k),k=8(i-1)+j,并確定每個(gè)控件的Left和Top③在label1_click()事件中獲得被單擊的label1控件的index值,并改變所有控件的顏色用程序建立的方法例5.4通過(guò)程序建立的方法在窗體上用64個(gè)標(biāo)簽框組成一個(gè)國(guó)25*VB程序設(shè)置顏色的四種方法①用RGB(x,y,z)函數(shù)—x、y、z在0~255之間取值黑色RGB(0,0,0)蘭色RGB(0,0,255)綠色RGB(0,255,0)青色RGB(0,255,255)紅色RGB(255,0,0)洋紅色RGB(255,0,255)黃色RGB(255,255,0)白色RGB(255,255,255)②用QuickBASIC提供的顏色函數(shù)QBColor(i)0黑色1蘭色2綠色3青色4紅色5洋紅色6黃色7白色8灰色9亮蘭色10亮綠色11亮青色12亮紅色13亮洋紅色14亮黃色15亮白③使用“對(duì)象瀏覽器”中列出的內(nèi)部常數(shù)vbBlack黑vbBlue藍(lán)vbCyan青vbGreen綠vbMagenta洋紅vbRed紅vbWhite白vbYellow黃④直接用十六進(jìn)制長(zhǎng)整數(shù)表示(數(shù)值越小顏色越深)&H0&黑……&HFFFFFF&白*VB程序設(shè)置顏色的四種方法265.5自定義數(shù)據(jù)類型(記錄)記錄的概念記錄是由一組相關(guān)的數(shù)據(jù)項(xiàng)(字段)組成的整體。例如,一個(gè)學(xué)生的記錄包括學(xué)號(hào)、姓名、性別、各門課的分?jǐn)?shù)等,均稱為數(shù)據(jù)項(xiàng)或字段,它們可以是不同的數(shù)據(jù)類型。
在VB中,每個(gè)控件是一個(gè)對(duì)象,一個(gè)對(duì)象的所有屬性組成一個(gè)記錄,屬性名則是記錄的一個(gè)數(shù)據(jù)項(xiàng)(字段)。當(dāng)用戶自己創(chuàng)建類或?qū)ο髸r(shí),就要定義屬性記錄。5.5自定義數(shù)據(jù)類型(記錄)記錄的概念272.記錄的定義
定義記錄時(shí),要先定義記錄類型,然后再定義該記錄類型的變量或數(shù)組。記錄類型的定義
Type自定義類型名元素名[(下標(biāo))]As類型名…………元素名[(下標(biāo))]As類型名EndType例:TypeStudType NoAsInteger'學(xué)號(hào) NameAsString*20'姓名 SexAsString*1 '性別 Mark(1To4)AsSingle'4門課程成績(jī) TotalAsSingle '總分EndType2.記錄的定義定義記錄時(shí),要先定義記錄類型,然后再定義28
定義記錄的語(yǔ)句如果放在標(biāo)準(zhǔn)模塊中,可省略public。如果放在窗體中,則必須用private。如在窗體的通用聲明處PrivateTypeStuType……EndType在模塊的通用聲明處[Public]TypeStuType……EndType(2)記錄變量或數(shù)組的定義可以用已定義的記錄類型定義變量或數(shù)組。DimaAsStuType,b(20)AsStuType3.記錄的引用(1)引用記錄的一般形式是
<記錄變量名>.<字段名>a.IntNo=123a.StrName=“李明”
定義記錄的語(yǔ)句如果放在標(biāo)準(zhǔn)模塊中,可省略public。29(2)用With語(yǔ)句引用形式:With<對(duì)象名>語(yǔ)句塊EndWith其中,對(duì)象名可以是記錄變量、控件名或其他的對(duì)象名作用:對(duì)一個(gè)對(duì)象執(zhí)行多條語(yǔ)句時(shí),可省略對(duì)象名。例如:要給記錄變量a賦值,可以用with語(yǔ)句設(shè)置。Witha.IntNo=123.StrName=“李明”.strSex=“M”.sngMark(1)=87.sngMark(2)=91.sngMark(3)=79.sngMark(4)=95.blnTag=TrueEndWith(2)用With語(yǔ)句引用30例5.5利用記錄類型編程模擬數(shù)據(jù)庫(kù)記錄的輸入、顯示和查詢。標(biāo)簽:Label1~Label5文本框:Text1~Text3命令按鈕:Command1(3)在窗體通用聲明段定義記錄類型:PrivateTypeStudType用Command1_Click(IndexAsInteger)事件編程新增:添加記錄前一個(gè):顯示前一條記錄后一個(gè):顯示下一條記錄最高分:顯示最高分位置:顯示總記錄數(shù)和當(dāng)前記錄號(hào)例5.5利用記錄類型編程模擬數(shù)據(jù)庫(kù)記錄的輸入、顯示和查詢。315.6常用算法(二)
1.分類統(tǒng)計(jì)例5.6輸入一串字符,統(tǒng)計(jì)各字符出現(xiàn)的次數(shù),不區(qū)分字母的大小寫(xiě)。5.6常用算法(二)1.分類統(tǒng)計(jì)32設(shè)計(jì):用一個(gè)文本框輸入字符串,圖形框輸出個(gè)字符的個(gè)數(shù),命令按鈕進(jìn)行統(tǒng)計(jì)。算法:為了計(jì)算各字母的個(gè)數(shù),定義一個(gè)含26個(gè)元素的一維整型數(shù)組a,a(1)存放字母a或A的個(gè)數(shù),a(2)存放字母b或B的個(gè)數(shù),……。為了對(duì)各個(gè)字母計(jì)數(shù),用Mid$()函數(shù)依次取出字符串中的各個(gè)字母并進(jìn)行判斷和計(jì)數(shù)。為了不區(qū)分大小寫(xiě),可用Ucase$()函數(shù)將所取出的字母一律轉(zhuǎn)換成大寫(xiě),也可用Lcase$()將所取出的字母一律轉(zhuǎn)換成小寫(xiě)設(shè)計(jì):用一個(gè)文本框輸入字符串,圖形框輸出個(gè)字符的個(gè)數(shù),命令按332.大量數(shù)據(jù)的輸入和編輯例5.7利用文本框可實(shí)現(xiàn)大量數(shù)字串輸入和編輯的功能。用Text1輸入一批數(shù)字串,Picture1顯示數(shù)字串中的各個(gè)數(shù)字,Text2輸出數(shù)組各元素用a=split(text1,”,”)將text1中的文字按逗號(hào)分割成各個(gè)數(shù)組元素,并顯示在圖形框picture1中用text2=join(a,”“)將數(shù)組a合并成用空格分隔的字符串2.大量數(shù)據(jù)的輸入和編輯用a=split(text1,”,”34設(shè)計(jì):兩個(gè)命令按鈕,一個(gè)用于通知用戶輸入數(shù)字串;另一個(gè)用于合并數(shù)組元素。兩個(gè)文本框,一個(gè)用于輸入和編輯數(shù)據(jù),另一個(gè)用于輸出結(jié)果;圖形框用于輸出數(shù)組a各元素的值。算法:①通過(guò)Text1_keypress事件編程只允許輸入0~9、“,”、“.”和“-”;②通過(guò)Command1_Click事件編程將連續(xù)兩個(gè)逗號(hào)分隔符替換成一個(gè)逗號(hào),并用a=Split(Text1,”,”)將Text1文本框中的字符串以逗號(hào)為分界符分離出各項(xiàng)數(shù)據(jù),依次存入數(shù)組a中,并在圖形框中顯示;③通過(guò)Command2_click事件編程,用Text2=join(a,”“)將數(shù)組a的各元素以空格為分隔符合并成字符串,并在Text2中顯示。設(shè)計(jì):兩個(gè)命令按鈕,一個(gè)用于通知用戶輸入數(shù)字串;另一個(gè)用于合353.數(shù)組排序(1)選擇法排序例5.8對(duì)已存放在數(shù)組iA中的n個(gè)數(shù),用選擇法按遞增順序排序。
3.數(shù)組排序36選擇排序算法
n個(gè)數(shù)排序要經(jīng)過(guò)n-1輪比較和交換(1)第一輪從n個(gè)數(shù)中選出最小的數(shù)(遞增),與第1個(gè)數(shù)交換位置;(2)第二輪從除第1個(gè)數(shù)外的其余n-1個(gè)數(shù)再按(1)的方法選出次小的數(shù),與第2個(gè)數(shù)交換位置。(3)以后各i輪均從余下的數(shù)中找到最小數(shù),并與第i個(gè)數(shù)交換,直到i=n-1為止。最后構(gòu)成遞增序列。Fori=1Ton-1 iMax=i Forj=i+1TonIfiA(iMax)>iA(j)TheniMax=jendifNextjt=iA(i) iA(i)=iA(iMax)iA(iMax)=tNextI選擇排序選擇排序算法選擇排序37
(2)冒泡法排序例5.9對(duì)例5.8用冒泡法按遞增順序排序。冒泡排序算法:n個(gè)數(shù)排序也要經(jīng)過(guò)n-1輪比較和交換①第一輪從第一個(gè)數(shù)開(kāi)始,與第二個(gè)數(shù)比較,若第一個(gè)數(shù)大于第二個(gè)數(shù),則將二者交換位置;否則,不交換。其后,再將第二個(gè)數(shù)與第三個(gè)數(shù)比較,順序不對(duì)的,也同樣進(jìn)行交換,直到倒數(shù)第二個(gè)數(shù)。結(jié)果:最大的數(shù)沉底,最小數(shù)上浮一個(gè)位置;②第二輪仍從第一個(gè)數(shù)開(kāi)始,依次進(jìn)行相鄰兩個(gè)數(shù)的比較,必要時(shí)進(jìn)行交換,直到倒數(shù)第三個(gè)數(shù),結(jié)果:次大數(shù)將落在倒數(shù)第二個(gè)位置上,最小數(shù)繼續(xù)上浮一個(gè)位置;③以后各i輪均從第1個(gè)數(shù)開(kāi)始,直到倒數(shù)第n-i+1個(gè)數(shù),進(jìn)行相鄰兩數(shù)的比較,直到i=n-1為止,此時(shí)最小數(shù)將上浮到第一個(gè)位置上,從而最后構(gòu)成遞增序列。冒泡排序(2)冒泡法排序冒泡排序38
OptionBase1Dimi%,j%,imax%,t%Fori=1Ton-1Forj=1Ton+1-iIfiA(j)>iA(j+1)Thent=iA(j)iA(j)=iA(j+1)iA(j+1)=tEndIfNextjNextiFori=1TonPicture2.PrintiA(i)Nexti原始數(shù)據(jù):869327第一輪683279第二輪632789第三輪326789第四輪236789第五輪236789OptionBase1原始數(shù)據(jù):8693394.數(shù)組元素的插入和刪除進(jìn)行數(shù)組元素的插入或刪除時(shí),首先要定位,然后進(jìn)行數(shù)組元素的順序移動(dòng)。(1)插入例5.10將一個(gè)數(shù)k插入到有序數(shù)組a(n)中,使插入后的數(shù)組仍然有序。插入算法:①先確定k在數(shù)組中的位置j②將a(n)~a(j)順序向后移動(dòng)一個(gè)位置③將k置入a(j)中4.數(shù)組元素的插入和刪除①先確定k在數(shù)組中的位置j40
Dimi%,j%ReDimPreserveiA(10)'保留ia()中的原數(shù)據(jù)Forj=1To9Ifk<iA(j)ThenExitFor'插入位置定位NextjFori=9TojStep-1iA(i+1)=iA(i)'數(shù)據(jù)移動(dòng)NextiiA(j)=kFori=1To10Picture2.PrintiA(i);NextiDimi%,j%41
(2)刪除例5.11從例5.10運(yùn)算結(jié)果的10個(gè)元素中刪除元素13。刪除算法:①先確定要?jiǎng)h除的元素k在數(shù)組中的位置j②將a(j+1)~a(n)順序向前移動(dòng)一個(gè)位置③用ReDim將數(shù)組的體積減少1(2)刪除刪除算法:42*(3)矩陣運(yùn)算矩陣相乘:Am,n×Bn,l=Cm,l
nCi,j=ΣAi,k×Bk,j
k=1矩陣轉(zhuǎn)置1234159135678261014910111237111513141516481216矩陣相乘矩陣轉(zhuǎn)置*(3)矩陣運(yùn)算矩陣相乘矩陣轉(zhuǎn)置43例5.14模擬計(jì)算器進(jìn)行正整數(shù)的輸入和四則運(yùn)算,并可進(jìn)行八、十六進(jìn)制數(shù)的轉(zhuǎn)換。設(shè)置3個(gè)控件數(shù)組:運(yùn)算符控件數(shù)組、數(shù)制轉(zhuǎn)換控件數(shù)組和數(shù)字控件數(shù)組。CE控件是清屏按鈕。文本框用于顯示輸入的數(shù)據(jù)和運(yùn)算結(jié)果。假設(shè),運(yùn)算符和數(shù)制轉(zhuǎn)換控件數(shù)組在設(shè)計(jì)時(shí)建立。數(shù)字控件數(shù)組在設(shè)計(jì)時(shí)僅建立“0”元素,運(yùn)行時(shí)添加“1”~“9”共9個(gè)控件數(shù)組元素。例5.14模擬計(jì)算器進(jìn)行正整數(shù)的輸入和四則運(yùn)算,并可進(jìn)行八44本章重點(diǎn)靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組的定義、賦值和輸入/輸出(靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組的區(qū)別,確定類型數(shù)組和變體型數(shù)組的區(qū)別)動(dòng)態(tài)數(shù)組的重定義及其限制控件數(shù)組的使用(設(shè)計(jì)階段建立和程序運(yùn)行階段建立兩種方法)及index屬性的作用數(shù)組的簡(jiǎn)單應(yīng)用:統(tǒng)計(jì)、排序、插入和刪除記錄類型的定義方法和初步使用本章重點(diǎn)靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組的定義、賦值和輸入/輸出(靜態(tài)數(shù)組45第5章數(shù)組和記錄
5.1數(shù)組的概念
5.2數(shù)組的定義
5.3數(shù)組的基本操作
5.4數(shù)組的應(yīng)用
5.5控件數(shù)組
5.6記錄
5.7常用算法(二)第5章數(shù)組和記錄5.1數(shù)組的概念465.1數(shù)組的概念
1.數(shù)組的作用數(shù)組通常和循環(huán)一起使用可以大大減少編程的復(fù)雜性,有些算法不用數(shù)組就無(wú)法實(shí)現(xiàn)。例5.1計(jì)算100個(gè)學(xué)生某門課的平均分,并統(tǒng)計(jì)高于平均分的人數(shù)。不用數(shù)組就很難編程。Dimmark(1To100)AsInteger,aver!,over%,i%aver=0:over=oFori=1To100mark(i)=InputBox("輸入成績(jī)")aver=aver+mark(i)‘計(jì)算總分Nextiaver=aver/100‘over=0Fori=1To100If(mark(i)>aver)Thenover=over+1NextIPrintaver,over5.1數(shù)組的概念1.數(shù)組的作用472.數(shù)組的概念數(shù)組是一批數(shù)據(jù)或控件的集合。
普通數(shù)組存放一批相同類型的數(shù)據(jù)控件數(shù)組存放一批相同名稱的控件例如,定義一個(gè)integer型數(shù)組a(10),它包含11個(gè)同類型的變量:a(0),a(1),……,a(10)Variant型數(shù)組則可以存放不同類型的數(shù)據(jù)又如,在窗體上畫(huà)一個(gè)標(biāo)簽label1,并用復(fù)制和粘貼的方法操作5次,可以得到一個(gè)名稱為label1的控件數(shù)組,含6個(gè)標(biāo)簽,每個(gè)標(biāo)簽的名稱均為label1,但各個(gè)控件的index屬性值分別是0,1,……,5。2.數(shù)組的概念48
3.數(shù)組元素和數(shù)組的維數(shù)數(shù)組的成員稱為數(shù)組元素,其名稱與數(shù)組名相同,其下標(biāo)表示該元素在數(shù)組中的位置。因此,數(shù)組元素也稱下標(biāo)變量。數(shù)組的維數(shù)表示數(shù)組元素需要幾個(gè)下標(biāo)才能正確表示其在數(shù)組中的位置,它代表數(shù)組的邏輯結(jié)構(gòu),最多60維。一維數(shù)組的邏輯結(jié)構(gòu)是線性的,只用一個(gè)下標(biāo)表示各個(gè)元素在數(shù)組中的位置例a(10):含11個(gè)元素的一維數(shù)組
a(0),a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8),a(9),a(10)二維數(shù)組的邏輯結(jié)構(gòu)是一個(gè)二維表,用兩個(gè)下標(biāo)表示各個(gè)元素在數(shù)組中的位置:第一個(gè)下標(biāo)表示行,第二個(gè)下標(biāo)表示列。例b(2,3):含三行四列共12個(gè)元素的二維數(shù)組
b(0,0)b(0,1)b(0,2)b(0,3)b(1,0)b(1,1)b(1,2)b(1,3)b(2,0)b(2,1)b(2,2)b(2,3)3.數(shù)組元素和數(shù)組的維數(shù)49
4.數(shù)組的存儲(chǔ)結(jié)構(gòu)數(shù)組在內(nèi)存中占用一片連續(xù)的存儲(chǔ)單元。
一維數(shù)組的存儲(chǔ)結(jié)構(gòu)與邏輯結(jié)構(gòu)相同,即各個(gè)元素按下標(biāo)順序依次存放;
二維數(shù)組的存儲(chǔ)結(jié)構(gòu)是按行的順序存儲(chǔ)各個(gè)元素。例如,數(shù)組b(2,3)的存儲(chǔ)形式為:b(0,0)b(0,1)b(0,2)b(0,3)b(1,0)b(1,1)b(1,2)b(1,3)b(2,0)b(2,1)b(2,2)b(2,3)
三維數(shù)組是由若干個(gè)二維數(shù)組組成的,其存儲(chǔ)結(jié)構(gòu)是按順序存儲(chǔ)各個(gè)二維數(shù)組。例如,數(shù)組c(1,2,1)的存儲(chǔ)形式為:c(0,0,0)c(0,1,0)c(0,2,0)c(1,0,0)c(1,1,0)c(1,2,0)c(0,0,1)c(0,1,1)c(0,2,1)c(1,0,1)c(1,1,1)c(1,2,1)4.數(shù)組的存儲(chǔ)結(jié)構(gòu)505.2數(shù)組的定義靜態(tài)數(shù)組(定界數(shù)組)動(dòng)態(tài)數(shù)組(可變數(shù)組、可調(diào)數(shù)組)
靜態(tài)數(shù)組:在定義時(shí)明確規(guī)定數(shù)組的大小,且在程序運(yùn)行過(guò)程中,其大小不能再改變
動(dòng)態(tài)數(shù)組:在定義時(shí)不指定數(shù)組的大小,在運(yùn)行過(guò)程中可以根據(jù)需要用ReDim重新規(guī)定其大小數(shù)組5.2數(shù)組的定義數(shù)組51
1.靜態(tài)數(shù)組的定義
形式:Dim數(shù)組名(維界1[,維界2…])[As類型]維界1、維界2等表示各維的大小,形式為:
[下界To]上界
下界和上界為常數(shù)表達(dá)式:
-2147483648到2147483647下界缺省時(shí)默認(rèn)0維界用來(lái)確定數(shù)組的體積。類型缺省時(shí),默認(rèn)變體型
除了用Dim外,還可以用static、private和public來(lái)定義數(shù)組,它們可以在不同的窗體和模塊內(nèi)定義,所定義的數(shù)組的作用范圍也不相同。1.靜態(tài)數(shù)組的定義52下界可以缺省,系統(tǒng)默認(rèn)的下界缺省值為0。例:DimlArray(0To3,0To4)AsLong等價(jià)于:DimlArray(3,4)AsLong
例:Dimmark(1to100)AsInteger下界可以缺省,系統(tǒng)默認(rèn)的下界缺省值為0。例:Dimmark53如果需要默認(rèn)的下界缺省值不是0,則可以在通用聲明段內(nèi)用OptionBase語(yǔ)句確定,例如用
OptionBase1來(lái)定義下界缺省值為1,此后,若定義Dima(2,3)則等價(jià)于Dima(1to2,1to3)注意:(1)在數(shù)組定義中,數(shù)組名后面括號(hào)中數(shù)值表示數(shù)組的維界,即每一維的大小;而在程序其他地方出現(xiàn)的帶擴(kuò)號(hào)的則表示數(shù)組中的某一個(gè)元素,括號(hào)中的數(shù)值表示該元素在數(shù)組中的位置。兩者寫(xiě)法形式相同,但意義不同。Dimx(10)AsInteger‘定義x數(shù)組有11個(gè)元素x(10)=100‘對(duì)x(10)這個(gè)數(shù)組元素賦值(2)靜態(tài)數(shù)組一經(jīng)定義,編譯系統(tǒng)為其安排存儲(chǔ)空間,其維數(shù)和各維大小不能再改變?nèi)绻枰J(rèn)的下界缺省值不是0,則可以在通用聲明段內(nèi)用Opt54
2.動(dòng)態(tài)數(shù)組的定義定義動(dòng)態(tài)數(shù)組時(shí),數(shù)組名后面的括號(hào)內(nèi)不含維界。這時(shí),編譯系統(tǒng)并不為該數(shù)組安排存儲(chǔ)空間。而在程序運(yùn)行時(shí),用ReDim語(yǔ)句指明該數(shù)組的大小,并安排存儲(chǔ)空間DimsArray()AsSingleSubForm_Load() …ReDimsArray(4,8)‘sArray原有值丟失 …ReDimPreservesArray(4,100)‘sArray原有值保留…EndSub2.動(dòng)態(tài)數(shù)組的定義55
(1)重新定義動(dòng)態(tài)數(shù)組的大小時(shí),既可以改變其大小,也可以改變其維數(shù),下標(biāo)可以用常數(shù),也可以用有確定值的變量。例如:Dima()AsInteger‘a(chǎn)為動(dòng)態(tài)數(shù)組PrivateSubCommand1_click()ReDima(4,5)‘重新定義動(dòng)態(tài)數(shù)組……n=InputBox(“請(qǐng)輸入n的值”)ReDima(n)‘重新定義動(dòng)態(tài)數(shù)組……EndSub(1)重新定義動(dòng)態(tài)數(shù)組的大小時(shí),既可以改變其大小,也可56
(2)定義Variant型動(dòng)態(tài)數(shù)組時(shí),可以省略數(shù)組名后面的圓括號(hào)Dima‘a(chǎn)為variant型變量或數(shù)組a=5‘a(chǎn)為簡(jiǎn)單變量PrintaRedima(5)‘a(chǎn)為數(shù)組ForI=0to5a(I)=IPrinta(I);NextI(2)定義Variant型動(dòng)態(tài)數(shù)組時(shí),可以省略數(shù)組名后面57
(3)每次使用ReDim語(yǔ)句都會(huì)使數(shù)組中原有的數(shù)據(jù)丟失,當(dāng)希望改變數(shù)組大小而又要保留數(shù)組中原有的數(shù)據(jù)時(shí),可以在數(shù)組名前面增加Preserve關(guān)鍵字,這時(shí),只能改變多維數(shù)組中最后一維的上界,而不允許改變其它維的大小及最后一維的下界。Dima()AsInteger……ReDima(10,10)……ReDimPreservea(10,Ubound(a)+2)‘正確……ReDimPreservea(Ubound(a)+2,10)‘錯(cuò)誤(3)每次使用ReDim語(yǔ)句都會(huì)使數(shù)組中原有的數(shù)據(jù)丟失,當(dāng)585.3數(shù)組的基本操作1.數(shù)組元素的賦值(1)靜態(tài)數(shù)組只能對(duì)數(shù)組元素逐一賦值,不能用數(shù)組名整體賦值Dima(4)AsIntegerFori=0To4 a(i)=10‘a(chǎn)數(shù)組的每個(gè)元素值為10NextI是允許的。
a=(1,2,3,4,5)是不允許的。
5.3數(shù)組的基本操作1.數(shù)組元素的賦值59
(2)變體型動(dòng)態(tài)數(shù)組可以用Array函數(shù)定界和整體賦值DimaAsVariant,b()Asvariant,i%a=Array(1,2,3,4,5)b=Array(“abc”,”derf”,67,True)Fori=Lbound(a)ToUbound(a)Picture1.Printa(i)NextiFori=Lbound(b)ToUbound(b)Picture1.Printb(i)NextI其中,Lbound()和Ubound()用來(lái)確定數(shù)組的下界和上界(2)變體型動(dòng)態(tài)數(shù)組可以用Array函數(shù)定界和整體賦值60
(3)動(dòng)態(tài)數(shù)組也可以用同類型的靜態(tài)數(shù)組整體賦值Dima(4)AsInteger,b()AsIntegera(0)=1:a(1)=3:a(2)=5:a(3)=-8:a(4)=7
b=a‘將數(shù)組a整體賦給數(shù)組b,b為動(dòng)態(tài)數(shù)組其中,b=a相當(dāng)于Fori=Lbound(a)ToUbound(a)b(i)=a(i)Nexti(3)動(dòng)態(tài)數(shù)組也可以用同類型的靜態(tài)數(shù)組整體賦值612.數(shù)組的輸入
可以用InputBox函數(shù)或文本框?qū)崿F(xiàn)數(shù)組的輸入DimsB(4,5)AsInteger,i%,j%Fori=0To4Forj=0To5
sB(i,j)=InputBox("輸入sB("&i&","&j&)"的值")NextjNextiFori=0To4Forj=0To5PrintFormat$(sB(i,j),"00");spc(2);NextjPrintNexti用inputbox輸入數(shù)組2.數(shù)組的輸入用inputbox輸入數(shù)組623.數(shù)組的輸出數(shù)組的輸出只能對(duì)數(shù)組的各個(gè)元素進(jìn)行。例:輸出方陣sc中的下三角元素
Dimsc(4,4)AsInteger
Fori=0To4Forj=0Toisc(i,j)=i*5+jPrintsc(i,j);““;NextjPrintNexti如何輸出上三角?3.數(shù)組的輸出如何輸出上三角?634.求數(shù)組中最大元素及所在下標(biāo)及各元素之和
OptionBase1
DimMaxAsInteger,iMaxAsIntegerDimSumAsInteger,iA(10)…… Max=iA(1):iMax=1:Sum=iA(1)Fori=2To10IfiA(i)>MaxThen‘求最大值Max=iA(i)iMax=iEndIfSum=Sum+iA(i)‘求各元素之和NextiPicture1.PrintMax,iMax,Sum4.求數(shù)組中最大元素及所在下標(biāo)及各元素之和645.將數(shù)組iA(10)中第一個(gè)元素與最后一個(gè)元素交換,第二個(gè)元素與倒數(shù)第二個(gè)元素交換,直到整個(gè)數(shù)組各元素按逆序存放。
Fori=1To10\2t=iA(i)iA(i)=iA(10-i+1)iA(10-i+1)=tNexti5.將數(shù)組iA(10)中第一個(gè)元素與最后一個(gè)元素交換,第二651.控件數(shù)組的概念一組相同的控件可以組成一個(gè)控件數(shù)組,它們共用一個(gè)控件名,具有相同的屬性,建立時(shí)系統(tǒng)給每個(gè)元素賦一個(gè)唯一的索引號(hào)(Index=0,1,2,...),類似數(shù)組的下標(biāo)。使用控件數(shù)組的最大優(yōu)點(diǎn)是數(shù)組中的各個(gè)控制件可以共享同樣的事件過(guò)程,從而減少編程工作量。例:PrivateSubcmdName_Click(IndexAsInteger)…IfIndex=3then‘處理第四個(gè)命令按鈕的操作EndIf…EndSub5.4控件數(shù)組1.控件數(shù)組的概念5.4控件數(shù)組662.控件數(shù)組的建立(1)在設(shè)計(jì)階段建立第一步先建立第一個(gè)控件,即在窗體上畫(huà)出該控件,設(shè)置其Name屬性,作為控件數(shù)組名。第二步選中該控件,進(jìn)行“復(fù)制”和“粘貼”,當(dāng)彈出的對(duì)話框中出現(xiàn)“已經(jīng)有一個(gè)控件為…...,創(chuàng)建控件數(shù)組嗎”信息時(shí),單擊“是”按鈕,就建立了一個(gè)控件數(shù)組,經(jīng)過(guò)若干次“復(fù)制”和“粘貼”,可以建立該控件數(shù)組的各個(gè)元素。每個(gè)元素都是一個(gè)控件,它們具有相同的Name,各個(gè)控件的index屬性值為該控件在數(shù)組中的位置(索引)號(hào),從0開(kāi)始。第三步編制控件數(shù)組的事件過(guò)程。2.控件數(shù)組的建立67例5.3建立含有四個(gè)命令按鈕的控件數(shù)組,當(dāng)單擊某個(gè)命令按鈕,分別顯示不同的圖形或結(jié)束操作。PrivateSubcommand1_Click(IndexAsInteger)Picture1.ClsPicture1.FillStyle=5'填充右斜線圖案SelectCaseIndexCase0Picture1.Print"畫(huà)直線"Picture1.Line(2,2)-(7,7)Case1Picture1.Print"畫(huà)矩形"Picture1.Line(2,2)-(7,7),,BFCase2Picture1.Print"畫(huà)圓"Picture1.Circle(4.5,4.5),3.5,,,,1CaseElseEndEndSelectEndSub例5.3建立含有四個(gè)命令按鈕的控件數(shù)組,當(dāng)單擊某個(gè)命令按鈕68(2)在程序運(yùn)行階段建立第一步在窗體上畫(huà)出某控件(如Label1),并設(shè)置該控件的Index屬性值為0,表示該控件為數(shù)組,從而建立控件數(shù)組的第一個(gè)元素第二步在編程時(shí)通過(guò)Load方法添加其余的若干個(gè)元素,也可以通過(guò)Unload方法刪除某個(gè)添加的元素。如:Loadlabel1(i)i>=1第三步在程序中為每個(gè)新添加的控件數(shù)組元素設(shè)置Left和Top屬性以確定其在窗體的位置,并將其Visible屬性設(shè)置為True(或-1)。程序運(yùn)行時(shí)會(huì)自動(dòng)按程序中的設(shè)置,將各個(gè)控件顯示在窗體上。(2)在程序運(yùn)行階段建立69例5.4通過(guò)程序建立的方法在窗體上用64個(gè)標(biāo)簽框組成一個(gè)國(guó)際象棋的棋盤。①先在窗體上畫(huà)label1控件,設(shè)置其Index屬性值為0,表示該控件為數(shù)組,從而建立控件數(shù)組的第一個(gè)元素②在Form_load()事件中用兩重循環(huán)由Load方法自動(dòng)生成8行8列l(wèi)abel1(k),k=8(i-1)+j,并確定每個(gè)控件的Left和Top③在label1_click()事件中獲得被單擊的label1控件的index值,并改變所有控件的顏色用程序建立的方法例5.4通過(guò)程序建立的方法在窗體上用64個(gè)標(biāo)簽框組成一個(gè)國(guó)70*VB程序設(shè)置顏色的四種方法①用RGB(x,y,z)函數(shù)—x、y、z在0~255之間取值黑色RGB(0,0,0)蘭色RGB(0,0,255)綠色RGB(0,255,0)青色RGB(0,255,255)紅色RGB(255,0,0)洋紅色RGB(255,0,255)黃色RGB(255,255,0)白色RGB(255,255,255)②用QuickBASIC提供的顏色函數(shù)QBColor(i)0黑色1蘭色2綠色3青色4紅色5洋紅色6黃色7白色8灰色9亮蘭色10亮綠色11亮青色12亮紅色13亮洋紅色14亮黃色15亮白③使用“對(duì)象瀏覽器”中列出的內(nèi)部常數(shù)vbBlack黑vbBlue藍(lán)vbCyan青vbGreen綠vbMagenta洋紅vbRed紅vbWhite白vbYellow黃④直接用十六進(jìn)制長(zhǎng)整數(shù)表示(數(shù)值越小顏色越深)&H0&黑……&HFFFFFF&白*VB程序設(shè)置顏色的四種方法715.5自定義數(shù)據(jù)類型(記錄)記錄的概念記錄是由一組相關(guān)的數(shù)據(jù)項(xiàng)(字段)組成的整體。例如,一個(gè)學(xué)生的記錄包括學(xué)號(hào)、姓名、性別、各門課的分?jǐn)?shù)等,均稱為數(shù)據(jù)項(xiàng)或字段,它們可以是不同的數(shù)據(jù)類型。
在VB中,每個(gè)控件是一個(gè)對(duì)象,一個(gè)對(duì)象的所有屬性組成一個(gè)記錄,屬性名則是記錄的一個(gè)數(shù)據(jù)項(xiàng)(字段)。當(dāng)用戶自己創(chuàng)建類或?qū)ο髸r(shí),就要定義屬性記錄。5.5自定義數(shù)據(jù)類型(記錄)記錄的概念722.記錄的定義
定義記錄時(shí),要先定義記錄類型,然后再定義該記錄類型的變量或數(shù)組。記錄類型的定義
Type自定義類型名元素名[(下標(biāo))]As類型名…………元素名[(下標(biāo))]As類型名EndType例:TypeStudType NoAsInteger'學(xué)號(hào) NameAsString*20'姓名 SexAsString*1 '性別 Mark(1To4)AsSingle'4門課程成績(jī) TotalAsSingle '總分EndType2.記錄的定義定義記錄時(shí),要先定義記錄類型,然后再定義73
定義記錄的語(yǔ)句如果放在標(biāo)準(zhǔn)模塊中,可省略public。如果放在窗體中,則必須用private。如在窗體的通用聲明處PrivateTypeStuType……EndType在模塊的通用聲明處[Public]TypeStuType……EndType(2)記錄變量或數(shù)組的定義可以用已定義的記錄類型定義變量或數(shù)組。DimaAsStuType,b(20)AsStuType3.記錄的引用(1)引用記錄的一般形式是
<記錄變量名>.<字段名>a.IntNo=123a.StrName=“李明”
定義記錄的語(yǔ)句如果放在標(biāo)準(zhǔn)模塊中,可省略public。74(2)用With語(yǔ)句引用形式:With<對(duì)象名>語(yǔ)句塊EndWith其中,對(duì)象名可以是記錄變量、控件名或其他的對(duì)象名作用:對(duì)一個(gè)對(duì)象執(zhí)行多條語(yǔ)句時(shí),可省略對(duì)象名。例如:要給記錄變量a賦值,可以用with語(yǔ)句設(shè)置。Witha.IntNo=123.StrName=“李明”.strSex=“M”.sngMark(1)=87.sngMark(2)=91.sngMark(3)=79.sngMark(4)=95.blnTag=TrueEndWith(2)用With語(yǔ)句引用75例5.5利用記錄類型編程模擬數(shù)據(jù)庫(kù)記錄的輸入、顯示和查詢。標(biāo)簽:Label1~Label5文本框:Text1~Text3命令按鈕:Command1(3)在窗體通用聲明段定義記錄類型:PrivateTypeStudType用Command1_Click(IndexAsInteger)事件編程新增:添加記錄前一個(gè):顯示前一條記錄后一個(gè):顯示下一條記錄最高分:顯示最高分位置:顯示總記錄數(shù)和當(dāng)前記錄號(hào)例5.5利用記錄類型編程模擬數(shù)據(jù)庫(kù)記錄的輸入、顯示和查詢。765.6常用算法(二)
1.分類統(tǒng)計(jì)例5.6輸入一串字符,統(tǒng)計(jì)各字符出現(xiàn)的次數(shù),不區(qū)分字母的大小寫(xiě)。5.6常用算法(二)1.分類統(tǒng)計(jì)77設(shè)計(jì):用一個(gè)文本框輸入字符串,圖形框輸出個(gè)字符的個(gè)數(shù),命令按鈕進(jìn)行統(tǒng)計(jì)。算法:為了計(jì)算各字母的個(gè)數(shù),定義一個(gè)含26個(gè)元素的一維整型數(shù)組a,a(1)存放字母a或A的個(gè)數(shù),a(2)存放字母b或B的個(gè)數(shù),……。為了對(duì)各個(gè)字母計(jì)數(shù),用Mid$()函數(shù)依次取出字符串中的各個(gè)字母并進(jìn)行判斷和計(jì)數(shù)。為了不區(qū)分大小寫(xiě),可用Ucase$()函數(shù)將所取出的字母一律轉(zhuǎn)換成大寫(xiě),也可用Lcase$()將所取出的字母一律轉(zhuǎn)換成小寫(xiě)設(shè)計(jì):用一個(gè)文本框輸入字符串,圖形框輸出個(gè)字符的個(gè)數(shù),命令按782.大量數(shù)據(jù)的輸入和編輯例5.7利用文本框可實(shí)現(xiàn)大量數(shù)字串輸入和編輯的功能。用Text1輸入一批數(shù)字串,Picture1顯示數(shù)字串中的各個(gè)數(shù)字,Text2輸出數(shù)組各元素用a=split(text1,”,”)將text1中的文字按逗號(hào)分割成各個(gè)數(shù)組元素,并顯示在圖形框picture1中用text2=join(a,”“)將數(shù)組a合并成用空格分隔的字符串2.大量數(shù)據(jù)的輸入和編輯用a=split(text1,”,”79設(shè)計(jì):兩個(gè)命令按鈕,一個(gè)用于通知用戶輸入數(shù)字串;另一個(gè)用于合并數(shù)組元素。兩個(gè)文本框,一個(gè)用于輸入和編輯數(shù)據(jù),另一個(gè)用于輸出結(jié)果;圖形框用于輸出數(shù)組a各元素的值。算法:①通過(guò)Text1_keypress事件編程只允許輸入0~9、“,”、“.”和“-”;②通過(guò)Command1_Click事件編程將連續(xù)兩個(gè)逗號(hào)分隔符替換成一個(gè)逗號(hào),并用a=Split(Text1,”,”)將Text1文本框中的字符串以逗號(hào)為分界符分離出各項(xiàng)數(shù)據(jù),依次存入數(shù)組a中,并在圖形框中顯示;③通過(guò)Command2_click事件編程,用Text2=join(a,”“)將數(shù)組a的各元素以空格為分隔符合并成字符串,并在Text2中顯示。設(shè)計(jì):兩個(gè)命令按鈕,一個(gè)用于通知用戶輸入數(shù)字串;另一個(gè)用于
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)海洋工程裝備行業(yè)市場(chǎng)現(xiàn)狀及投資態(tài)勢(shì)分析報(bào)告(智研咨詢)
- 智研咨詢發(fā)布:2024年中國(guó)變壓器行業(yè)市場(chǎng)現(xiàn)狀及投資前景分析報(bào)告
- 二零二五個(gè)人退伙合作協(xié)議(旅游文化產(chǎn)業(yè)特定)2篇
- 重慶市集成電路產(chǎn)業(yè)發(fā)展政策優(yōu)化研究
- RIS輔助的低軌衛(wèi)星通信系統(tǒng)覆蓋性能優(yōu)化策略研究
- 二零二五年度專業(yè)運(yùn)輸個(gè)人承包合同范本2篇
- 二零二五版養(yǎng)老保險(xiǎn)待遇領(lǐng)取資格終止?fàn)幾h處理合同3篇
- 二零二五年度個(gè)人金融衍生品交易合同范本2篇
- 二零二五版?zhèn)€人合伙健身俱樂(lè)部退伙會(huì)員權(quán)益協(xié)議2篇
- 二零二五年度個(gè)人商鋪?zhàn)赓U合同涉及租賃保證金退還細(xì)則2篇
- B區(qū)地下室碳纖維加固施工方案
- 旅行社脫團(tuán)安全協(xié)議書(shū)范文模板
- 期中測(cè)試卷-2024-2025學(xué)年統(tǒng)編版語(yǔ)文五年級(jí)上冊(cè)
- 新教材人教版高中物理選擇性必修第三冊(cè)全冊(cè)各章節(jié)知識(shí)點(diǎn)考點(diǎn)
- CJT 354-2010 城市軌道交通車輛空調(diào)、采暖及通風(fēng)裝置技術(shù)條件
- 暑假作業(yè) 11 高二英語(yǔ)語(yǔ)法填空20篇(原卷版)-【暑假分層作業(yè)】2024年高二英語(yǔ)暑假培優(yōu)練(人教版2019)
- 2024年江西省南昌市南昌縣中考一模數(shù)學(xué)試題(含解析)
- 繪本的分鏡設(shè)計(jì)-分鏡的編排
- 查干淖爾一號(hào)井環(huán)評(píng)
- 體檢中心分析報(bào)告
- 人教版初中英語(yǔ)七八九全部單詞(打印版)
評(píng)論
0/150
提交評(píng)論