- 相關(guān)推薦
VB 教案之?dāng)?shù)組
授課對(duì)象:初一興趣班學(xué)生) 教學(xué)過(guò)程: 一、引入: 在學(xué)習(xí)if語(yǔ)句時(shí),我們?cè)鲞^(guò)一個(gè)題,在文本框內(nèi)輸入正整數(shù),判斷這3個(gè)數(shù)的大小然后將他們按從小到大的順序輸出。 if a>b then temp =a:a=b : b =temp end if if a >c then temp =a : a=c :c= temp end if if b>c then temp = b : b=c : c=temp end if print 這三個(gè)數(shù)從小到大的順序是; a;b;c; 這是3個(gè)數(shù)的大小排序,假如多于三個(gè)數(shù)的排序呢? 當(dāng)然我們還可以用IF語(yǔ)句予以解決,但大家可以想象到它的麻煩程度,其實(shí),我們可以用數(shù)組來(lái)解決這個(gè)問(wèn)題。那么何謂數(shù)組呢? 二、1)新課講授:所謂數(shù)組是一群數(shù)據(jù)類(lèi)型相同的變量,在內(nèi)存里能擁有連續(xù)存放空間的集合。數(shù)組在使用之前必須先聲明,聲明的目的是確定內(nèi)存中應(yīng)保留多少連續(xù)空間給此數(shù)組使用,并定出數(shù)組中每一個(gè)元素的數(shù)據(jù)類(lèi)型。 語(yǔ)法:dim 數(shù)組名稱(下標(biāo)1,[下標(biāo)2[……]])[as 數(shù)據(jù)類(lèi)型] 功能:聲明所指定數(shù)據(jù)類(lèi)型為一維(二維……)數(shù)據(jù) eg : dim a(6) as integer 聲明一個(gè)a(6)的數(shù)組,其包含了a(0)---a(6)7個(gè)整型變量。數(shù)組的默認(rèn)下標(biāo)值從0開(kāi)始,假如你覺(jué)得不習(xí)慣的話,可以用用這個(gè)方式聲明: dim 數(shù)組名稱(下界to上界[下界to上界][……])[as 數(shù)據(jù)類(lèi)型] 假若要定義a(1)----a(6)的整型數(shù)組,則可以這樣寫(xiě): dim a(1to 6) as integer 請(qǐng)學(xué)生判斷以下下列數(shù)組說(shuō)明語(yǔ)句是否正確,說(shuō)明原因: (1) Dim a(10) as integer (2) Dim b(-10) as integer /錯(cuò)誤 沒(méi)有用關(guān)鍵之to顯示知名下標(biāo)范圍。 (3)Dim c(5,3)as byte (4)Dim y() /錯(cuò)誤,只有重定義語(yǔ)句才可以不帶下標(biāo) 2)回到我們剛上課講的內(nèi)容,如何利用數(shù)組解決數(shù)字的排序問(wèn)題呢?這里我們先介紹兩個(gè)函數(shù): 隨機(jī)函數(shù)Rnd 產(chǎn)生介于0到1之間的函數(shù) 隨機(jī)數(shù)種子函數(shù) Randomize 在Rnd函數(shù)之前使用,以當(dāng)做隨機(jī)數(shù)產(chǎn)生器的種子。 (注:如果不用語(yǔ)句來(lái)播放隨機(jī)數(shù)的種子,則每次使用Rnd函數(shù)時(shí)將會(huì)得到相同順序的隨機(jī)數(shù)) 下面我們用數(shù)組來(lái)解決數(shù)字的排序問(wèn)題: 1)定義數(shù)組,產(chǎn)生1000內(nèi)的隨機(jī)數(shù) (這里我們以生成6個(gè)數(shù)為例) Dim a(1 to 6) as integer Dim i as integer,j as integer Dim t as integer cls / 清除屏幕 Randomize for i =1 to 6 a(i)=int(Rnd*1000+1) /產(chǎn)生1--1000的隨機(jī)整數(shù) print a(i); next i print ----------------------------------------------- end sub (解釋程序,使學(xué)生讀懂本程序后,關(guān)閉代碼。讓學(xué)生自己編程:由button控制產(chǎn)生出10個(gè)隨機(jī)整數(shù)) 2) 6個(gè)隨機(jī)數(shù)按大小順序排列 for i = 1 to 6 if a(1)<a(i) then t = a(1) a(1)= a(i) a(i) =t end if next i print a(1) / 打印出最大的那個(gè)數(shù) end sub 我們當(dāng)然可以用5個(gè)if語(yǔ)句依次將6個(gè)數(shù)從小到大打印出來(lái),但如果是20個(gè)、100、1000個(gè)數(shù)的排序,那我們就得相應(yīng)的寫(xiě)出無(wú)數(shù)的if語(yǔ)句來(lái)做,但顯然這辦法是不理想的。其實(shí)這里我們可以套用兩個(gè)循環(huán)語(yǔ)句完成此題。 3)將2)改成 for i=1 to 6 for j = i+1 to 6 if a(i) < a(j) then t = a (i) a(i)= a(j) a(j)=t end if next j print a(i); next i / 雙重循環(huán)將6個(gè)數(shù)從大到小打印出來(lái)。 end sub 解釋:1)當(dāng)i =1的時(shí)候, j=2時(shí),比較出a(1) a(2)的大小,將大的數(shù)給a(1) j =2時(shí),比較出a(1) a(3)的大小,將大的數(shù)給a(1) …… j =6時(shí),比較出a(2) a(6)的大小,將大的數(shù)給a(1) 打印出a(1) i變成2 2)當(dāng)i=2時(shí), j =3時(shí),比較出a(2)a(3)的大小,將大的數(shù)給a(2) ………… 打印出a(2) i 變成3 …… 5) 當(dāng)i=5時(shí) j=6時(shí), 比較a(5) a(6)的大小,將大的數(shù)給a(5) 6) 當(dāng)i=6時(shí),j 已經(jīng)超出了循環(huán)范圍。所以這里的循環(huán)我們也可以將i的語(yǔ)句改為 for i =1 to 5 (在學(xué)生讀懂程序的情況下請(qǐng)學(xué)生寫(xiě)出程序:隨機(jī)產(chǎn)生100個(gè)數(shù)并將其排序) const n =100 Dim a(1to n) as integer Dim i as integer,j as integer,t as interger cls Randomize for i=1 to n a(i)=int(Rnd*1000+1) print a(i); if i mod 20 =0 then print end if next i print ———————————————————————————————— for i =1 to n for j =i+1 to n if a(i)<a(j) then t = a(i) a(i)=a(j) a(j)= t end if next j print a(i); if i mod 20 = 0 then print end if next i end sub 三、課堂小結(jié) :(數(shù)組聲明、如何利用數(shù)組和循環(huán)語(yǔ)句給數(shù)字排序等) 四、作業(yè):對(duì)于給定的數(shù)組a(n)as integer(n>=20),設(shè)計(jì)一個(gè)程序,找出在a中出現(xiàn)頻率最高的元素值及出現(xiàn)的次數(shù)。例如(1,5,4,2,5,8,5,4)中,出現(xiàn)頻率最高的是5, 次數(shù)是3次。【VB 教案之?dāng)?shù)組】相關(guān)文章:
vb實(shí)訓(xùn)心得11-25
vb實(shí)訓(xùn)心得7篇11-25
《橋之美》的教案03-07
《黔之驢》教案03-05
《橋之美》教案03-05
旅鼠之迷教案02-17
《橋之美》教案04-30
驚弓之鳥(niǎo)教案08-26
《生命之杯》音樂(lè)教案09-21