VB 教案之数组

时间:2021-12-17 20:49:24 教案 我要投稿

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 教案之数组】相关文章:

PHP之数组遍历 -电脑资料01-01

Swift之数组使用 -电脑资料01-01

VFP:模拟VB控件数组操作标签控件 -电脑资料01-01

在VB中使用API函数 (之五)VB -电脑资料01-01

在VB中使用API函数 (之四)VB -电脑资料01-01

GO语言基础之数组 -电脑资料01-01

计算机等级考试二级VB考点:数组的概念02-10

计算机等级考试二级VB考点:控件数组02-10

拨开迷雾找出真相-记VB控件数组的一次教学12-01