第五章数组4学时.ppt

上传人:京东小超市 文档编号:6044984 上传时间:2020-08-28 格式:PPT 页数:18 大小:356KB
返回 下载 相关 举报
第五章数组4学时.ppt_第1页
第1页 / 共18页
第五章数组4学时.ppt_第2页
第2页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第五章数组4学时.ppt》由会员分享,可在线阅读,更多相关《第五章数组4学时.ppt(18页珍藏版)》请在三一文库上搜索。

1、第五章 数组 (4学时) 5.1 数组的概念 5.2 静态数组及声明 5.3 动态数组及声明 5.4 数组的基本操作 5.5 控件数组 5.6 自定义数据类型 5.7 常用算法(二) 5.8 常见错误 烈 顿 痴 捍 达 野 庐 凶 梧 陛 孝 少 直 欺 包 蕴 掸 箍 冲 哪 约 鲍 员 口 棱 逾 鞘 着 诱 慎 宗 樊 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 一、 数组的概念 1.引例 例5.1若我们要求一个班100个学生的平均成绩,然后统计高于平均分 的人数。 按以前简单变量的使用和循环结构相结合,求平均成绩程序段如下: aver = 0 For i = 1

2、To 100 mark = InputBox(输入 + i + 位学生的成绩) aver = aver + mark Next i aver = aver / 100 但若要统计高于平均分的人数,则无法实现。mark是一个简单变量,存放的是最后一 个学生的成绩。 已有知识解决方法:再重复输入成绩,带来两个问题: (1)输入数据的工作量成倍增加; (2)若本次输入的成绩与上次不同,则统计的结果不正确。 解决此问题的根本方法,引入数组,始终保持输入的数据,一次输入,多次使用。 耘 芭 有 盲 掇 脱 紫 穗 销 缚 创 毅 筹 劣 匙 扛 歹 芬 二 迢 葛 霹 宋 撩 绎 单 榴 便 木 姬 阐

3、 兆 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 二、数组的声明 数组并不是一种数据类型,而是一组相同类型的变量的集合。数组必须先声 明后使用。 两类数组: 静态(定长)数组、动态(可变长)数组 1. 静态数组及声明 形式: Dim 数组名(下标1,下标2) As 类型 声明了数组的名、维数、大小、类型 维数:几个下标为几维数组,最多60维。 下标: 下界 To 上界 省略下界为0 ,必须为常数。 每一维大小: 上界下界+1 数组大小: 每一维大小的乘积 例:Dim mark(1 to 100) As Integer 合 括 桨 呻 菇 垂 锁 柏 咖 使 铝 蟹 彝 梆

4、溯 迅 赠 食 猜 便 防 协 完 弊 讳 漱 秽 跌 税 格 蛾 簇 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 Dim lArray( 0 To 3, 0 To 4) As Long 共有 45个元素 等价于: Dim lArray(3, 4) As Long 注意: (1) 下界缺省为0 ,也可在重新定义数组的下界。例如: Option Base 1 (2)错误的声明,下标是变量 n =Inputbox(“输入n”) Dim x(n) As Single (3)在数组声明中的下标说明了数组的整体,即每一维的大小; 而在程序其他地方出现的下标表示数组中的一个元素。 两者

5、写法形式相同,但意义不同。 例如: Dim x(10) As Integer 声明了x数组有11个元素 x(10)=100 对x(10)这个数组元素赋值 买 炬 喉 膜 丙 搏 培 猫 辽 汽 纂 侄 墟 啮 蛋 徘 沟 鼠 良 嘉 杠 挚 娶 俊 虱 冷 巩 熔 袁 昭 悔 域 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 三、动态数组及声明 动态数组指在声明数组时未给出数组的大小(省略括号中的下标),当要使用它时 随时用ReDim语句重新指出数组大小。 形式如下: ReDim 数组名(下标,下标2) As 类型 例: Sub Form_Load( ) Dim sArray

6、( ) As Single ReDim sArray(4,8) End Sub 说明: (1) Dim、Private、Public变量声明语句是说明性语句,可出现在过程内或通用声明段 ReDim语句是执行语句,只能出现在过程内。 (2) 在过程中可多次使用ReDim来改变数组的大小,也可改变数组的维数. (3) 每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve 参数用来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几 维大小不能改变。例5.2,求若干个学生的平均分。 (4) ReDim中的下标可以是常量,也可以是有了确定值的变量。

7、 擂 泳 佰 石 揣 瘟 盂 入 狙 埂 晤 珐 去 志 眷 坟 桐 喳 胆 哎 酶 劝 抗 图 铆 蛾 眶 簇 秒 塌 世 暇 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 四、数组的基本操作 1. 数组元素的赋初值 (1)用循环 For i = 1 To 10 iA(i)=0 Next i (2) Array函数 Dim ib As Variant ib = Array(abc, def, 67) For i = 0 To UBound(ib) Picture1.Print ib(i); ; Next i 注意: (1)利用Array对数组各元素赋值,声明的数组是可调数组

8、或连圆括号都可省,并且 其类型只能是Variant。 (2)数组的下阶为零,上界由Array函数括号内的参数个数可决定,也可通过函数 Ubound获得。 影 入 踢 屎 牟 男 涪 塘 歼 蟹 善 格 拙 昧 喀 慨 陆 旱 竖 秋 迈 怀 举 咎 沉 绳 耪 讼 甄 心 房 铀 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 2数组的赋值 在VB6.0中,提供了数组直接对数组的赋值。例如: Dim a() As Variant, b() As Variant, i% a = Array(1, 2, 3, 4, 5) ReDim b(UBound(a) b = a 3. 数组的

9、输出 输出方阵sC中的下三角元素 For i = 0 To 4 For j = 0 To i sc(i, j) = i * 5 + j Print sc(i, j); ; Next j Print 换行 Next I For i = 0 To UBound(a) b(i) = a(i) Next i 注意:赋值号左边的数组只能声明为Variant的可调数组或简单变量。 厦 宾 拖 嗣 除 五 矗 妹 郑 氦 琅 弱 汝 忽 党 十 邦 俊 扑 特 驶 栽 销 诀 菏 腊 拆 鼻 萎 机 龟 刽 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 4. 求数组中最大元素及所在下标 D

10、im Max As Integer,iMax As Integer Max=iA(1):iMax=1 For i = 2 To 10 If iA(i)Max Then Max=iA(i) iMax=i End If Next I 5. 将数组中各元素交换 For i =1 To 102 t=iA(i) iA(i)=iA(10-i+1) iA(10-i+1)=t Next I 桔 碳 晌 行 歼 慨 猫 催 懒 舍 舷 嘲 淆 谷 惰 掘 雹 副 龚 浑 肾 移 迈 脏 臂 朋 对 达 旁 妮 古 接 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 五. 控件数组 一组相同类型的

11、控件组成。 它们共用一个控件名,具有相同的属性,建立时系统 给每个元素赋一个唯一的索引号(Index)。 控件数组共享同样的事件过程,通过返回的下标值区分控件数组中的各个元素。 例: Private Sub cmdName _Click(Index As Integer) If Index=3 then 处理第四个命令按钮的操作 End If End Sub 1.在设计时建立控件数组 l在窗体上画出控件,进行属性设置,这是建立的第一个元素 l选中该控件,进行“Copy”进行若干次和“Paste”操作建立了所需 个数的控件数组元 素。 l进行事件过程的编程。 佳 程 银 晾 诧 豺 舍 条 沧

12、坑 肝 绦 阅 舍 禽 品 瓶 锄 兴 歇 反 丫 枚 葛 奄 寝 绊 碱 县 莆 绘 吻 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 例5. 3 建立含有四个命令按钮的控件数组,当单击某个命令按钮,分别显示 不同的图形或结束操作。 Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 画直线 Case 1 画矩形 Case 2 “画圆” Case Else End End Select End Sub 豁 季 晴 迟 渭 舰 是 搬 鹅 腰 馋 硅 肮 兜 钥 兴 寥 贬 挣 躬 凝 愉

13、 陆 杜 球 枷 与 矫 怯 祭 求 耸 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 2.运行时添加控件数组 建立的步骤如下: l在窗体上画出某控件,设置该控件的Index值为0,表示该控件为数组,这是建立的 第一个元素 l在编程时通过Load方法添加其余的若干个元素,也可以通过Unload方法删除某个添 加的元素。 l每个新添加的控件数组通过Left和Top属性确定其在窗体的位置,并将Visible 属性 设置为True。 例5.4 利用在运行时产生控件数组,构成一个国际象棋棋盘。 当单击棋格,显示对应的序号,并且将所有棋格颜色变反。 皿 贫 究 魏 歧 篓 把 烩 酬

14、嗓 熬 七 尺 磁 泅 能 凰 关 旺 案 触 债 焦 涧 黑 轨 惯 帘 减 点 嘎 溯 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 六、自定义数据类型 一组不同类型变量的集合。相当于C语言中的结构类型;Pascal中的记录类型。 1.自定义类型的定义 形式如下: Type 自定义类型名 元素名(下标) As 类型名 元素名(下标) As 类型名 End Type 例如以下定义了一个有关学生信息的自定义类型: Type StudType No As Integer 学号 Name As String * 20 姓名 Sex As String * 1 性别 Mark(1

15、To 4) As Single 4门课程成绩 Total As Single 总分 End Type 元素名:表示自定义类型中的一个成员。 下标:表示是数组。 类型名:为标准类型。 诡 兄 衡 债 闻 喳 壳 筋 激 蝶 抒 口 哀 吼 薪 拌 净 孕 玛 显 湿 瘪 瓮 霄 凭 坎 镐 仔 敛 糯 联 教 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 注意: (1)自定义类型一般在标准模块(.BAS)中定义,默认是Public;在窗体必须是Private。 (2)自定义类型中的元素类型可以是字符串,但应是定长字符串。 (3)不要将自定义类型名和该类型的变量名混淆,前者表示了

16、如同Integer、Single等的 类型名,后者VB根据变量的类型分配所需的内存空间,存贮数据。 (4)自定义类型一般和数组结合使用,简化程序的编写。 2自定义类型变量的声明和使用 (1) 声明形式: Dim 变量名 As 自定义类型名 例: Dim Student As StudType (2) 引用 形式:变量名.元素名 例: 表示Student变量中的姓名,第4门课程的成绩,则表示如下: Student.Name,Student.Mark(4) 3自定义类型数组的应用 例5.5 利用自定义类型数组,编一类似数据管理(输入、显示、查询)的程序 。 警 醛 庙 居 贺 恢 视 艺 宦 何

17、责 跑 寂 澈 棺 粗 沃 觅 意 犁 震 哲 狼 阴 烬 乍 疡 埔 赛 汐 酮 秽 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 七、常用算法(二) 1. 统计 例5.6输入一串字符,统计各字母出现的次数,大小写字母不区分。 分析: 1.统计26个字母出现的个数,先声明一个具有26个元素的数组,每个元素的下标表 示对应的字母,元素的值表示对应字母出现的次数。 2.从输入的字符串中逐一取出字符,转换成大写字符(使得大小写不区分),进行 判断。 3.运行界面: For I = 1 To le c = UCase(Mid(Text1, I, 1) If c = A And c

18、= Z Then j = Asc(c) - 65 + 1 a(j) = a(j) + 1 End If Next I 骆 些 惫 俗 昭 脓 增 铬 牟 展 圣 亡 胞 罪 约 梆 乒 夺 情 学 宦 稻 嘉 肉 昔 钦 叮 吧 蚌 敞 喉 兽 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 2.大量数据的输入 例5.7输入一系列的数据,并将它们分离后存放在数组中。对输入的数据允 许修改和自动识别非数字数据。 分析: (1)利用文本框输入和编辑数据,输入时去除非法数字。 (2)输入结束利用Rplace函数去除重复输入的分隔符; (3)对利用Split函数按分隔符分离,放到数组中

19、; (4)还可利用Join函数将数组中各元素合并成一个字符串。 拟 霓 窝 肩 襟 旨 郧 怯 炯 矗 趟 艘 瑰 酸 碎 贤 送 雄 做 崭 丘 够 插 呢 荚 妄 塑 榨 褒 坤 眼 仓 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 3.数组排序 例5.8 对已知存放在数组中的n个数,用选择法按递增顺序排序。 (1) 从n个数的序列中选出最小的数(递增),与第1个数交换位置; (2)除第1个数外,其余n-1个数再按(1)的方法选出次小的数,与第2个数交换位置; (3)重复(1)n-1遍,最后构成递增序列。 For i = 1 To n - 1 iMin= i For j

20、= i+1 To n If iA(j) iA(iMin) Then iMin = j Next j t= iA(i): iA(i) = iA(iMin) : iA(iMin) = t Next I 诚 仁 屈 破 掘 埋 蛊 卵 俯 井 表 夕 砰 叁 碰 利 线 氛 揣 卓 拙 深 珐 汹 孽 墟 滚 暮 逃 灶 局 宜 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 4.数组元素的插入与删除 (1) 插入 例5.10 在有序数组a(1 to n)(原有n-1个元素)插入一个值Key元素,算法: 查找要插入的位置k(1=k=n-1) 腾出位置,把最后一个元素开始到第K个元素往

21、后移动一个位置 第k个元素的位置腾出,就可将数据Key插入 (2) 删除 首先也是要找到欲删除的元素的位置k;然后从k+1到n个位置开始向前移动; 最后将数组元素减1。 挛 仓 孵 凯 搐 朵 符 由 筑 幂 赤 腆 跌 易 栋 灼 卤 锯 狈 磊 尼 纱 挽 崇 饰 颐 车 娟 尾 梁 膘 佐 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时 八、数组中常见错误和注意事项 1.静态数组声明下标出现变量 n = InputBox(输入数组的上界) Dim a(1 To n) As Integer 2数组下标越界 引用的下标比数组声明时的下标范围大或小。 Dim a(1 To 30

22、) As Long, i% a(1) = 1: a(2) = 1 For i = 3 To 30 a(i) = a(i - 2) + a(i - 1) Next I 3数组维数错 数组声明时的维数与引用数组元素时的维数不一致。 Dim a(3, 5) As Long a(I)=10 4Aarry函数使用问题 只能对Variant 的变量或动态数组赋值。 5获得数组的上界、下界 UBound 、Lbound函数 叉 埂 遣 楞 球 灯 毙 道 血 脏 悔 焦 凶 责 挟 沏 题 丁 屁 锻 嘲 隙 雏 喂 勃 六 咏 仕 例 发 赫 邮 第 五 章 数 组 4 学 时 第 五 章 数 组 4 学 时

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1