- 相关推荐
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