第5章 数组 Visual Basic程序设计.

Slides:



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

数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
第5章 数组 5.1数组的基本概念 5.2静态数组与动态数组 5.3数组的基本操作 5.4综合应用程序举例.
計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
Visual Basic 程序设计 第四章 数组.
課程名稱:程式設計 授課老師:________
第四章 控制结构.
赋值语句与输入、输出语句.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
高等医药院校药学类第三轮规划教材——大学计算机基础
Visual Basic 期中報告 組長:沈亞臻 組員:蔣佳育 張庭茹
第五章 数组.
Visual Basic程序设计.
BLANK overview.
Chapter 1 複習.
VB內建函數與應用.
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
第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、控件数组
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
过程 第 7 章.
初识Visual Basic.
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
第五章 VB中的数组.
走进编程 程序的顺序结构(二).
辅导课程六.
第12章 VBA模块设计.
第5章 Visual Basic控制结构 之 常用算法举例
第 8 章 过程.
Visual Basic程序设计.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
VB程序设计语言 主讲教师:王 杨.
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
江西财经大学信息管理学院 《数据库应用》课程组2007
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第七章 数组 一维数组:一个变量每次只能存储一个值。一个包含40个元素的数组变量可以存放40个值,采用循环结构实现计算过程非常方便。
小结 郭清溥.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
程序基础 2019/4/25.
第二章、第三章错题分析.
VB程序设计语言 主讲教师:王 杨.
第4章 Excel电子表格制作软件 4.4 函数(一).
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
3.16 枚举算法及其程序实现 ——数组的作用.
1位选手参加了歌唱比赛,评委们的评分如下:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
1位选手参加了歌唱比赛,评委们的评分如下:
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
1、过程概述 2、函数过程 3、子过程 4、过程的使用 5、传递参数 6、过程的嵌套
解析算法与枚举算法.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
算法与Visual Basic程序基础(二)
程序调试与错误处理.
Presentation transcript:

第5章 数组 Visual Basic程序设计

回 顾 三种基本结构: 顺序结构(Inputbox、Msgbox) 选择结构(If、Select) 循环结构(For、While、Do) 回 顾 三种基本结构: 顺序结构(Inputbox、Msgbox) 选择结构(If、Select) 循环结构(For、While、Do) 五个常用控件: 单选按钮(OptionButton) 复选框(CheckBox) 框架(Frame) 滚动条(HScrollBar、VScrollBar) 计时器(Timer)

本章内容 5.1 数组的概念 5.2 数组声明 5.3 数组的操作 5.4 列表框和组合框控件 5.7 自主学习(控件数组)

Dim i%, n%, sum%,, average!, score% 【引例】求全班同学某门课程的平均成绩, 并统计高于平均分的人数。(如何实现?) Dim i%, n%, sum%,, average!, score% sum = 0 : i = 1 : n = val(text1.text) Do While i <= n score = InputBox("输入第" & i & "位同学的成绩", "成绩录入") sum = sum + score i = i + 1 Loop average = sum / n MsgBox "全班" & n & "名同学的平均分为:" & average, , "统计平均分" (1 to 60) (i) (i)

5.1 数组的概念 可以用一批具有相同名字、不同下标的 变量来表示一组数据,能更清楚的表示它们 之间的关系。 5.1 数组的概念 可以用一批具有相同名字、不同下标的 变量来表示一组数据,能更清楚的表示它们 之间的关系。 在VB 中,把一组具有相同名字、不同 下标的变量称为数组。

一、数组的维数 维数:数组中的下标个数。 按数组的维数可分为:一维数组、二维数组、多维 数组。 一维数组:数组中的元素有一个下标 。 二维数组:数组中的元素有两个下标 。 多维数组:数组中的元素有多个下标 。

二、 数组的形式 根据数组元素的个数能否变化可分为: 静态数组和动态数组。 静态数组: 数组元素的个数和下标的上、下界固定不变。 动态数组: 数组元素的个数和下标的上、下界在运行时可以改变。

5.2 数组声明 主要声明数组名、类型、维数、大小,其目的是 一、静态数组 让计算机为该数组分配一定的内存区域。 定义时规定了数组的大小和维数。在程序运行前, 可以确定数组的长度,即数组元素的个数和下标的上、 下界固定不变。 1、数组的定义 格式: Dim 数组名(第一维说明 [,第二维说明]……) [ As 类型名称]

Dim 数组名(下标1,下标2) [As 类型名称] 一维数组形式: 1) Dim 数组名([下标下界 to] 下标上界) [As <数据类型>] 例如:Dim score(1 to 5) As Integer 定义了一个一维数组,数组名是score;类型是整型; 有5个元素,下标的范围是1~5; 占据5个整型变量的空间(2*5=10个字节)。 2) Dim 数组名[数据类型符]([下界 to] 上界) 与上面声明等价形式: Dim score%(1 to 5) 二维数组形式: Dim 数组名(下标1,下标2) [As 类型名称] 例如:Dim a(3,4) As Integer

× 说明: 1) 数组必须先定义后使用。 2) 数组名和变量名的命名规则相同。在同一过程中, 数组名不能与其他数组名或变量名相同。 3) 定义数组时省略[As 类型名称],则数组的类型为 变体类型。 4) 定义数组时,下标必须是常量。 × Dim s(n) As Single 5) 数组的元素个数:上界-下界+1 Dim s(0 to 5) As Integer 6个元素 Dim s(-2 to 3) As Integer 6个元素 Dim a(3,4) As Integer 20个元素

Private Sub Command1_Click() Dim score(5) As Integer ....... End Sub 下标下界的默认值为0,[下标下界 to]可以省略。若改变下界,则在通用声明段使用Option Base语句。 格式:Option Base 0或1 通用声明段 Option Base 1 Private Sub Command1_Click() Dim score(5) As Integer ....... End Sub 等价于 Dim score(1 to 5) As Integer 定义了名为score的一维数组,有5个整型元素。 等价于:Dim score(0 to 5) As Integer 定义了名为score的一维数组,有6个整型元素。

2、数组的引用 对定义过的数组,可直接引用该数组的元素。 引用数组元素的格式:数组名(下标) 举例: Dim s(5) As Integer 数组s的数组元素分别为: s(0)、 s(1) 、 s(2) 、 s(3) 、 s(4) 、 s(5) Dim a(1 To 3, 1 To 3) As Single 数组a的数组元素分别为: a(1,1)、 a(1,2) 、 a(1,3) a(2,1) 、a(2,2) 、 a(2,3) a(3,1) 、a(3,2) 、 a(3,3)

说明: (1)数组元素的下标可以是变量、常量或表达式。不管是哪种形式,都要在定义的范围之内。 (2)数组元素与简单变量一样,可以被赋值和引用。 Dim A(5) As Integer, B(5) As Integer A(1)=B(1)+5 '下标使用常量 A(i)=B(i) '下标使用变量 B(i+1)=A(i+2) '下标使用表达式 (3)在程序中,能用变量的地方,都可以用数组元素替换。

例1 阅读程序 25 Dim a(1 to 5) As Integer, sum As Integer For i=1 to 5 例1 阅读程序 Dim a(1 to 5) As Integer, sum As Integer For i=1 to 5 a(i)=2 * i - 1 '数组元素的一种输入方式 Next i sum=a(1)+a(2)+a(3)+a(4)+a(5) print sum 分析: a(1)=1 a(2)=3 a(3)=5 a(4)=7 a(5)=9 25

数组下标的下界可以由LBound函数得到 3、数组下标的界值 LBound 和 UBound函数 数组下标的下界可以由LBound函数得到 数组下标的上界可以由UBound函数得到 格式: LBound(数组名[,维]) UBound(数组名[,维])

说明:一维数组可省略[,维],二维数组必须指定。 举例1:Dim s(1 to 5) LBound(s)表示s数组的下界,其值:1 UBound(s)表示s数组的上界,其值:5 举例2:Dim a(-1 to 1,-2 to 1) LBound(a,2)表示a数组的第二维下界,其值:-2 UBound(a,1)表示a数组的第一维上界,其值:1

Dim a(1 to 5) As Integer, i As Integer For i = LBound(a) To UBound(a) 例2 阅读程序 Dim a(1 to 5) As Integer, i As Integer For i = LBound(a) To UBound(a) a(i) = 2 * i - 1 '数组元素的一种输入方式 Next i Print a(i); '数组元素的一种输出方式 演示

【引例】 求全班同学某门课程的平均成绩 average = sum / n Dim i%, n%, sum%, average! Dim score(1 to 60) As Integer '存放输入的成绩 sum = 0: i = 1: n = Val(Text1.Text) Do While i <= n '数组元素的一种输入方式 ——— = val(InputBox("输入第" & i & "位同学的成绩", "成绩录入")) —————— i = i + 1 Loop ———— MsgBox "全班" & n & "名同学的平均分为:" & average, , "统计平均分" score (i) sum = sum + score(i) average = sum / n

【引例】 求全班同学某门课程的平均成绩, 并统计高于平均分的人数。 …… Dim num As Integer num = 0 For i = 1 To n if score(i) > average Then num = num + 1 End If Next i MsgBox "高于平均分的人数是:" & num, , "统计人数"

使用数组解决实际问题时,有时无法确定数组大小,数组太大占用大量存储空间,太小则不能满足需要。如果事先无法确定数组的大小,或在程序运行时需要对数组的大小进行调整,可以使用动态数组。 声明动态数组时未给出数组的大小和维数。当要使用它时,随时用ReDim语句重新声明数组大小。

二、动态数组 声明 首先,声明一个没有维数定义和上下界的数组。 格式:Dim 数组名( ) [As 类型] 然后,需要时用Redim语句重新定义数组的大小。 格式:ReDim[Preserve]数组名(下标)[As 类型] 演示

说明 (1)可多次用ReDim语句来改变数组的大小,也可 改变数组的维数,但不能改变数组的类型。 (2)若不指定Preserve关键字,在执行ReDim语句 时,数组中原来所存放的值将全部丢失。 (3)指定[Preserve]关键字,在执行ReDim语句 时,数组中原来所存放的值将不会丢失。

例1:求全班同学某门课程的平均成绩。 Dim i%, n%, sum%, average! Dim score(60) As Integer sum = 0 : i = 1 : n = val(text1.text) Do While i <= n score(i) = InputBox(“输入第” & i & “位同学的成绩”, “成绩录入") sum = sum + score(i) i = i + 1 Loop average = sum / n MsgBox "全班" & n & "名同学的平均分为" & average, , "求平均分" ReDim score(n)

例2 阅读程序 6 6 Dim a() As Integer ReDim a(1 To 5) For i = 1 To 5 例2 阅读程序 Dim a() As Integer ReDim a(1 To 5) For i = 1 To 5 a(i) = i + 2 Next i Print a(4) ReDim a(1 To 6) ReDim Preserve a(1 To 6) 6 6

应用 例3 完善程序

Option Base 1 Private Sub Command1_Click() Picture1.cls : Randomize Dim s() As Integer, n%, i%, sum! n = Val(Text1.Text) ReDim s(n) For i = 1 To n s(i) = Int(Rnd * 101) '数组元素的一种输入方式 Picture1.Print s(i) ; ave = ave + s(i) Next i Text2.Text = ave / n End Sub ReDim s(n) sum = sum + s(i) Text2.Text = sum / n

Option Base 1 Private Sub Command1_Click() Label4.Caption = "" : Randomize Dim s() As Integer, n%, i%, sum! n = Val(Text1.Text) ReDim s(n) For i = 1 To n s(i) = Int(Rnd * 101) '数组元素的一种输出方式 Label4.Caption = Label4.Caption & s(i) & " " sum = sum + s(i) Next i Text2.Text = Format(sum / n, "0.00") End Sub

思考:为了调查某班学生学习VB课程的兴趣程度, 编写程序统计各程度的人数。

小结 数组:一组具有相同名字、不同下标变量的集合 静态数组的定义:Dim s(5) As Integer n = Val(Text1.Text) ReDim s(n) 数组元素的引用:s(1)、s(2)、s(3)、……

数组元素的输入: For i = 1 To 5 s(i) = 2 * i – 1 s(i) = InputBox("请输入数据:") s(i) = Int(Rnd * 101) Next i 数组元素的输出: [Picture1.]Print s(i); Label1.Caption = Label1.Caption & s(i) & “ " Text1.text=Text1.text & s(i) & " "

下次课内容: 5.3 数组的操作 实验作业: 实验十