高等学校计算机基础教育教材 上海中医药大学现代教育技术中心 计算机教学部. 第五章 数 组 ( 4 学时) 5.1 数组的概念 5.2 静态数组及声明 5.3 动态数组及声明 5.4 数组的基本操作 5.5 控件数组 5.6 自定义数据类型 5.7 常用算法(二) 5.8 常见错误.

Slides:



Advertisements
Similar presentations
VB 程序设计语言 主讲教师:王 杨. 西南石油大学计算机科学学院  n=12 Dim a(1 To n) As Integer  Dim a%[3,3]  Dim a(1,1,2) As Integer  Dim a%(10) ReDim a(1 To 12)  Dim a!() ReDim.
Advertisements

計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
Visual Basic 程序设计 第四章 数组.
課程名稱:程式設計 授課老師:________
第四章 控制结构.
Visual Basic 程 序 设 计 山东外贸职业学院 信息管理系 柳淑花
高中信息技术新课程探讨 算法与程序设计教学实践与探讨 江苏省新海高级中学  张丽.
高等医药院校药学类第三轮规划教材——大学计算机基础
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
第五章 数组.
第九章 字符串.
Visual Basic程序设计.
第6章 数 组 6.1 一维数组 6.2 控件数组 6.3 二维数组.
第二章 Visual Basic语言基础.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
VB程序设计语言 主讲教师:王 杨.
数组 第 6 章.
第5章 数组 Visual Basic程序设计.
Visual Basic程序设计 第七章 数组
第五章 数组 5.1 数组的概念 5.2 数组的基本操作 5.3 数组举例 5.4 动态数组 5.5 程序示例及相关算法.
1、数组的概念 2、静态数组 3、动态数组 4、数组的基本操作 5、控件数组
第5章 数组 Visual Basic程序设计.
初识Visual Basic.
第4章 程序控制结构与算法基础.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
第五章 VB中的数组.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
丙級電腦軟設-VB程式設計 資料來源:林文恭研究室 整理:張福生.
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
新觀念的 VB6 教本 第 6 章 資料型別.
第 8 章 过程.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
VB程序设计语言 主讲教师:王 杨.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第七章 数组 一维数组:一个变量每次只能存储一个值。一个包含40个元素的数组变量可以存放40个值,采用循环结构实现计算过程非常方便。
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
小结 郭清溥.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
顺序表的删除.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
程序基础 2019/4/25.
VB与Access数据库的连接.
VB程序设计语言 主讲教师:王 杨.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
ES 索引入门
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
3.16 枚举算法及其程序实现 ——数组的作用.
1位选手参加了歌唱比赛,评委们的评分如下:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
1位选手参加了歌唱比赛,评委们的评分如下:
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
VB与Access数据库的连接.
WEB程序设计技术 数据库操作.
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
顺序结构程序设计 ——关于“字符串”和数值.
Presentation transcript:

高等学校计算机基础教育教材 上海中医药大学现代教育技术中心 计算机教学部

第五章 数 组 ( 4 学时) 5.1 数组的概念 5.2 静态数组及声明 5.3 动态数组及声明 5.4 数组的基本操作 5.5 控件数组 5.6 自定义数据类型 5.7 常用算法(二) 5.8 常见错误

5.1 数组的概念 1. 引例 例 5.1 例 5.1 若我们要求一个班 100 个学生的平均成绩,然后统计高于平均分 的人数。 按以前简单变量的使用和循环结构相结合,求平均成绩程序段如下: aver = 0 For i = 1 To 100 mark = InputBox(" 输入 " + i + " 位学生的成绩 ") aver = aver + mark Next i aver = aver / 100 但若要统计高于平均分的人数,则无法实现。 mark 是一个简单变量,存放的是最后一 个学生的成绩。 已有知识解决方法:再重复输入成绩,带来两个问题: ( 1 )输入数据的工作量成倍增加; ( 2 )若本次输入的成绩与上次不同,则统计的结果不正确。 解决此问题的根本方法,引入数组,始终保持输入的数据,一次输入,多次使用。

5.2 静态数组及声明 数组不是一种数据类型,而是一组相同类型的变量的集合,数组必须先声明后使用。 两类数组: 静态 ( 定长 ) 数组、动态 ( 可变长 ) 数组 1. 静态数组及声明 形式: Dim 数组名 ( 下标 1[, 下标 2…]) [As 类型 ] 声明了数组的名、维数、大小、类型 维数:几个下标为几维数组,最多 60 维。 下标: [ 下界 To ] 上界 省略下界为 0, 必须为常数。 每一维大小:上界-下界 +1 数组大小: 每一维大小的乘积 例: Dim mark(1 to 100) As Integer

Dim lArray( 0 To 3 , 0 To 4) As Long 共有 4×5 个元素 等价于 : Dim lArray(3 , 4) As Long 注意: (1) 下界缺省为 0 ,也可在重新定义数组的下界。例如: Option Base 1 (2) 错误的声明,下标是变量 n =Inputbox( " 输入 n " ): Dim x(n) As Single (3) 在数组声明中的下标说明了数组的整体,即每维的大小; 而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式 相同,但意义不同。 例如: Dim x(10) As Integer ' 声明了 x 数组有 11 个元素 x(10)=100 ' 对 x(10) 这个数组元素赋值

5.3 动态数组及声明 动态数组指在声明数组时未给出数组的大小 ( 省略括号中的下标 ) ,当要使用 它时,随时用 ReDim 语句重新指出数组大小。形式如下: ReDim 数组名 ( 下标 [ ,下标 2…]) [As 类型 ] 例 Sub Form_Load( ) Dim x( ) As Single 例 5.2 求若干个学生的平均分。 例 5.2 … n =Inputbox(“ 输入 n” ) ReDim x( n ) … End Sub 说明: Dim 、 Private 、 Public 变量声明语句是说明性语句,可出现在过程内或通用 声明段; ReDim 语句是执行语句,只能出现在过程内。 在过程中可多次使用 ReDim 来改变数组的大小和维数。 使用 ReDim 语句会使原来数组中的值丢失,可以在 ReDim 语句后加 Preserve 参数来保留数组中的数据。使用 Preserve 只能改变最后一维的大小,前面几维 大小不能改变。 ReDim 中的下标可以是常量,也可以是有了确定值的变量。 静态数组在程序编译时分配存储单元,动态数组在运行时分配存储单元。

5.4 数组的基本操作 1. 数组元素的赋初值 (1) 用循环 For i = 1 To 10 iA(i)=0 Next i 注意: 利用 Array 对数组各元素赋值,声明的数组是可调数组或连圆括号 都可省,并且其类型只能是 Variant 。 数组的下阶为零,上界由 Array 函数括号内的参数个数可决定,也 可通过函数 Ubound 获得。 (2) Array 函数 Dim ib As Variant ib = Array("abc", "def", "67") For i = 0 To UBound(ib) Picture1.Print ib(i); " "; Next i

2 .数组的赋值 在 VB6.0 中,提供了数组直接对数组的赋值。例如: Dim a() As Variant, b() As Variant, i% a = Array(1, 2, 3, 4, 5) ReDim b(UBound(a)) b = a For i = 0 To UBound(a) b(i) = a(i) Next i 注意:赋值号左边的数组只能声明为 Variant 的 可调数组或简单变量。

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

例 5. 3 例 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 控件名 IndexCaption Command1 0 直线 Command1 1 矩形 Command12 圆 3 结束 Picture1 空白 ——

2 运行时添加控件数组 建立的步骤如下: 在窗体上画出某控件,设置该控件的 Index 值为 0 ,表示该控件为数 组,这是建立的第一个元素。 在编程时通过 Load 方法添加其余的若干个元素,也可以通过 Unload 方法删除某个添加的元素 每个新添加的控件数组通过 Left 和 Top 属性确定其在窗体的位置, 并将 Visible 属性设置为 True 。 例 5.4 利用在运行时产生控件数组,构成一个国际象棋棋盘。 例 5.4 当单击棋格,显示对应的序号, 并且将所有棋格颜色变反。

5.6 自定义数据类型 一组不同类型变量的集合。相当于 C 语言中的结构类型; Pascal 中 的记录类型。 1. 自定义类型的定义 形式如下: Type 自定义类型名 元素名 [( 下标 )] As 类型名 … [ 元素名 [( 下标 )] As 类型名 ] End Type 例如,以下定义了一个有关学生信息的自定义类型: Type StudType No As Integer' 学号 Name As String * 20' 姓名 Sex As String * 1' 性别 Mark(1 To 4) As Single' 4 门课程成绩 Total As Single' 总分 End Type 元素名:表示自定义类型中的一个成员 下标:表示是数组 类型名:为标准类型

注意: (1) 自定义类型一般在标准模块 (.BAS) 中定义,默认是 Public ;在窗体必须是 Private 。 (2) 自定义类型中的元素类型可以是字符串,但应是定长字符串。 (3) 不要将自定义类型名和该类型的变量名混淆,前者表示了如同 Integer 、 Single 等的类型名,后者 VB 根据变量的类型分配所需的内存空间,存储数据。 (4) 自定义类型一般和数组结合使用,简化程序的编写。 2 .自定义类型变量的声明和使用 (1) 声明形式: Dim 变量名 As 自定义类型名 例 Dim Student As StudType (2) 引用 形式:变量名. 元素名 例 表示 Student 变量中的姓名,第 4 门课程的成绩,则表示如下: Student.Name , Student.Mark(4) 3 .自定义类型数组的应用 例 5.5 例 5.5 利用自定义类型数组,编写一个输入、显示、查询程序。

5.7 常用算法(二) 1. 统计 例 5.6 输入一串字符,统计各字母出现的次数,不区分字母大小写。 例 5.6 分析:  统计 26 个字母出现的个数,先声明一个具有 26 个元素的数组,每个元素的 下标表示对应的字母,元素的值表示对应字母出现的次数。  从输入的字符串中逐一取出字符,转换成大写字符(不区分大小写 ) ,进 行判断。 运行界面: For I = 1 To le c = UCase(Mid(Text1, I, 1)) If c >= "A" And c <= "Z" Then j = Asc(c) a(j) = a(j) + 1 End If Next I

2. 大量数据的输入 例 5.7 例 5.7 输入一系列的数据,并将它们分离后存放在数组中。对 输入的数据允许修改和自动识别非数字数据。 分析: ( 1 )利用文本框输入和编辑数据,输入时去除非法数字。 ( 2 )输入结束利用 Rplace 函数去除重复输入的分隔符; ( 3 )对利用 Split 函数按分隔符分离,放到数组中; ( 4 )还可利用 Join 函数将数组中各元素合并成一个字符串。

3. 数组元素的插入与删除 (1) 插入 在有序数组 a(1 to n)( 原有 n - 1 个元素 ) 插入一个值 Key 元素,算法: 查找要插入的位置 k ( 1<=k<=n - 1 ) 腾出位置,把最后一个元素开始到第 k 个元素往后移动一个位置 第 k 个元素的位置腾出,就可将数据 Key 插入 (2) 删除 要找到欲删除的元素的位置 k ;然后从 k+1 到 n 个位置开始向前移动; 最后将数组元素减 1 。

补充习题 随机产生 15 个不重复的 A ~ Z (包括 A 、 Z )的大写字母,存放在字符 数组中。 提示: ( 1 )产生字母 A ~ Z 可以通过调用函数 Chr() 、 Int ()、 Rnd ()找出 字母对应的 ASCII 码值。 ( 2 )每产生一个字母,在数组中查找已产生的字母,若找到,刚产 生的字母作废,找不到则产生的字母放入数组中,下标加 1 。 运行界面如下: 课后习题: pg105 页: 第 1 题 第 4 题 第 5 题 第 6 题