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