数组 第 6 章.

Slides:



Advertisements
Similar presentations
Visual Basic 程序设计 第四讲.
Advertisements

計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
課程名稱:程式設計 授課老師:________
第四章 控制结构.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
高中信息技术新课程探讨 算法与程序设计教学实践与探讨 江苏省新海高级中学  张丽.
Access数据库程序设计 总复习.
VB教学中游戏化教学案例设计.
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
高等医药院校药学类第三轮规划教材——大学计算机基础
第五章 数组.
四 VBScript编程基础.
Visual Basic程序设计.
BLANK overview.
Chapter 1 複習.
VB內建函數與應用.
第6章 数 组 6.1 一维数组 6.2 控件数组 6.3 二维数组.
第二章 Visual Basic语言基础.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第5章 数组 Visual Basic程序设计.
Visual Basic程序设计 第七章 数组
1、数组的概念 2、静态数组 3、动态数组 4、数组的基本操作 5、控件数组
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
过程 第 7 章.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
第十一讲 VB常用标准控件(2).
初识Visual Basic.
Visual Basic程序设计基础 计算机科学学院.
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
用计算机模拟闪电形成的尝试 By 金秀儒 物理三班 PB
计算机程序设计强化复习 Visual Basic 6.0.
第12章 VBA模块设计.
RWM600 (13.56MHz) Reader Antenna.
RWM600 (13.56MHz) Reader Antenna.
丙級電腦軟設-VB程式設計 資料來源:林文恭研究室 整理:張福生.
新觀念的 VB6 教本 第 6 章 資料型別.
PCR300 (13.56MHz) Reader RS232/USB.
第 8 章 过程.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
Visual Basic程序设计.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
江西财经大学信息管理学院 《数据库应用》课程组2007
VB语言程序设计教程.
107學年度高一程式設計 上機考試 投影片 加減乘除.
小结 郭清溥.
经典算法之 冒 泡 排 序.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
程序基础 2019/4/25.
第二章、第三章错题分析.
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
第五讲 VB语言基础(3).
计算机应用基础 潍坊学院 计算机工程学院 主讲人:丁素英.
1位选手参加了歌唱比赛,评委们的评分如下:
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
1、过程概述 2、函数过程 3、子过程 4、过程的使用 5、传递参数 6、过程的嵌套
解析算法与枚举算法.
顺序查找与二分查找复习.
算法与Visual Basic程序基础(二)
信息的加工 Word中查找和替换、自动更正、批注、修订 Excel中公式和函数、排序和筛选、图表的建立和编辑 字符识别OCR.
程序调试与错误处理.
Presentation transcript:

数组 第 6 章

例如计算这100个学生成绩的平均分,可用: S=0 For k=0 To 99 S = S + t(k) ‘累加分数 Next k Aver=S/100 ‘求平均分

数组是一组按一定顺序排列的数据的集合 例如,学生成绩T=[t(0), t(1), … t(99)] 是一个数组 三元一次方程组的系数矩阵 a11 a12 a13 A= a21 a22 a23 a31 a31 a33 也是一个数组  数组名(不能与简单变量同名);数组类型

数组下标测试函数 Ubound(数组名[,维]) Lbound(数组名[,维]) Dim y(1 to 12,5 to 20,-3 to 6) Print Lbound(y,1), Ubound(y,1) Print Lbound(y,2), Ubound(y,2) Print Lbound(y,3), Ubound(y,3)

设定下界的方法 Option Base 1 ‘设定下界为1 Dim Data(10) As Single ‘下标号从1~10 6.2.2 Array函数 使用Array函数可以为数组元素赋值 示例 Dim D As Variant ‘定义数组名(变体类型) D = Array(1, 2, 3, 4) 执行结果:1→D(0),2→D(1), 3→D(2), 4→D(3)

Erase 数组名[,数组名],…… 重新对静太数组进行初始化,数值置0,字符为空字符串,而原数组存在。 释放动态数组存储空间,原有数组不再存在。 变体数组,每个元素重新置为空。

数组的引用和赋值: Option Base 1 Dim B1 As Variant B1 = Array(89, 96, 81, 67, 79, 90, 63, 85, 95, 83) y=B1(3) C=B1(5)+B1(7) 数组的引用下标不能越界 数组的赋值: 使用循环语句:

For k=0 To 10 t(k) = 2*k+1  Next k dim k(10) For k=0 To 10 t(k) = 2*k+1  Next k Dim d(5) As Integer For i = 1 To 5 '输入成绩 d(i) = Val(InputBox("请输入第" & Str(i) & _ "个学生的成绩", "输入成绩")) Next i

数组输出 For i = 1 To 5 Print d(i); Next i

声明F为动态数组的示例: Private Sub Command1_Click() Dim F() As Integer ‘声明一个整型动态数组 …… Size=20 ReDim F(Size) End Sub 每次执行ReDim时,系统会清除指定数组的内容 若采用:ReDim Preserve F(Size) 则能保留数组中原有的数据

例6.7 按图6.4设计窗体,其中一组(共5个)单选按钮构成控件数组,要求当单击某个单选按钮时,能够改变文本框中文字的大小 例6.7 按图6.4设计窗体,其中一组(共5个)单选按钮构成控件数组,要求当单击某个单选按钮时,能够改变文本框中文字的大小 控件数组

(1)设计控件数组Option1,其中包含5个单选按钮对象 设计步骤: (1)设计控件数组Option1,其中包含5个单选按钮对象 具体操作方法: ① 画出第一个单选按钮控件,名称采用默认的Option1。此时该控件处于选定状态。 ② 单击工具栏上的“复制”按钮(或按Ctrl+C)。 ③ 单击工具栏上的“粘贴”按钮(或按Ctrl+V),此时系统弹出一个如图6.5所示的对话框 单击“是”,就建立一个控件数组元素,其Index属性为1,而已画出的第一个控件的Index属性值为0。 通过鼠标拖放可以调整新控件的位置

④ 继续单击“粘贴”按钮(或按Ctrl+V)和调整控件位置,可得到控件数组中的其他三个控件,其Index属性值分别为2,3和4(即从上而下为0,1,2,3,4) ⑤ 设置控件数组各元素(从上而下)的Caption属性分别为10,14,18,24和28  (2)建立一个文本框Text1,其Text属性设置为“控件数组的使用”。再建立一个标签,其Caption属性为“字号控制”  (3)编写程序代码

Private Sub Form_Load() Option1(0).Value = True '选定第一个单选按钮 Text1.FontSize = 10 '设定文本框中的字号 End Sub Private Sub Option1_Click(Index As Integer) Select Case Index '系统自动返回Index值 Case 0 Text1.FontSize = 10 Case 1 Text1.FontSize = 14 Case 2 Text1.FontSize = 18 Case 3 Text1.FontSize = 24 Case 4 Text1.FontSize = 28 End Select

Private Sub Form_Load() Dim d(5) As Integer Dim i As Integer, total As Single, average As Single Show For i = 1 To 5 '输入成绩 d(i) = Val(InputBox("请输入第" & Str(i) & _ "个学生的成绩", "输入成绩")) Next i total = 0 For i = 1 To 5 '计算总分和平均分 total = total + d(i) average = total / 5 Print "总分:" & total Print "平均分:" & Format(average, "##.0") End Sub

程序中,先通过Dim语句为数组d定义维数及下标范围,也即为数组安排一块连续的内存存储区,但这并不意味着内存里该数组已建立了应有的内容 本例中输入数组中的数据是由InputBox函数来实现的,共循环了五次,输入的五个数依次赋值给下标变量d(1)~d(5) 建立了数组中的数据后,就可以按要求进行处理

Private Sub Command1_Click() Dim max As Integer, min As Integer max = score(1) '设定初值 min = score(1) For i = 2 To 10 If max < score(i) Then '找最高分 max = score(i) End If If min > score(i) Then '找最低分 min = score(i) Next i 'Chr(13)起换行作用 Label1.Caption = "最高分:" + Str(max) + _ Chr(13) + "最低分:" + Str(min) End Sub

Print k(c), Format(s / 5, "##.0") Next c End Sub Show Print "学生", "平均分“ '输出20个减号“-” Print String(20, "-") For r = 1 To 5 s = 0 '累加前清0 For c = 1 To 3 '累加同一行数据 s = s + a(r, c) Next c Print r, Format(s / 3, "##.0") Next r Print Print "课程", "平均分" Print String(20, "-") For c = 1 To 3 s = 0 For r = 1 To 5 '累加同一列数据 s = s + a(r, c) Next r Print k(c), Format(s / 5, "##.0") Next c End Sub

程序运行结果

1. a(1)与a(2) ~a(4)比较,选出最小值,结果 59 90 65 64 排列要求 小 大 示例: a(1) a(2) a(3) a(4) 90 64 65 59 1. a(1)与a(2) ~a(4)比较,选出最小值,结果 59 90 65 64 2. a(2)与a(3) ~a(4)比较,选出次小值,结果 59 64 90 65 3. a(3)与a(4)比较,选出较小值,结果 59 64 65 90 i=1 j=2, 3, 4 i=2 j=3, 4 i=3 j=4 For i=1 to 3 For j=i+1 to 4 …… Next j Next i 程 序 结 构

t = a(i): a(i) = a(j): a(j) = t '交换位置 End If Next j Next i Print: Print For i = 1 To 9 For j = i + 1 To 10 If a(i) > a(j) Then t = a(i): a(i) = a(j): a(j) = t '交换位置 End If Next j Next i Print "排序结果:" For i = 1 To 10 Print a(i); End Sub

改写中间程序段“For i=1 To 9”~“Next i”(共7个程序行) For i = 1 To 9 k = i ‘k用来记录每次选择的最小值的下标 For j = i + 1 To 10 If a(k) > a(j) Then k = j End If Next j t = a(k): a(k) = a(i): a(i) = t '交换位置 Next i 变量k记录每一次选出的最小值的下标,在本次比较结束后,使a(i)与a(k)一次换位即可

(3)编写程序代码 功能要求:用户在文本框Text1中输入准考证号码,单击“查找”按钮(Command1)后,则查找出对应的教室,并将教室号码输出在文本框Text2中 Dim rm(6, 3) As Integer Private Sub Form_Load() ‘输入数组数据 rm(1, 1) = 2101: rm(1, 2) = 2147: rm(1, 3) = 102 rm(2, 1) = 1741: rm(2, 2) = 1802: rm(2, 3) = 103 rm(3, 1) = 1201: rm(3, 2) = 1287: rm(3, 3) = 114 rm(4, 1) = 3333: rm(4, 2) = 3387: rm(4, 3) = 209 rm(5, 1) = 1803: rm(5, 2) = 1829: rm(5, 3) = 305 rm(6, 1) = 2511: rm(6, 2) = 2576: rm(6, 3) = 306 End Sub

Private Sub Command1_Click() Dim no As Integer, flag As Integer flag = 0 '查找标记,0表示未找到 no = Val(Text1.Text) For i = 1 To 6 If no >= rm(i, 1) And no <= rm(i, 2) Then Text2.Text = rm(i, 3) '显示教室号码 flag = 1 '1表示找到 Exit For End If Next i If flag = 0 Then Text2.Text = "无此准考证号码" Text1.SetFocus ‘设置焦点 End Sub

(2) 创建应用程序的用户界面和设置对象属性 (3)编写程序代码

Dim h(10) As Integer, d(10, 2) As Integer Private Sub Form_Load() h(1) = 1201: h(2) = 1202: h(3) = 1203 h(4) = 1205: h(5) = 1206: h(6) = 1207 h(7) = 1209: h(8) = 1210: h(9) = 1211: h(10) = 1215 '成绩存放在数组d(,)中 d(1, 1) = 92: d(1, 2) = 86 d(2, 1) = 78: d(2, 2) = 71 d(3, 1) = 83: d(3, 2) = 74 d(4, 1) = 67: d(4, 2) = 75 d(5, 1) = 71: d(5, 2) = 55 d(6, 1) = 62: d(6, 2) = 80 d(7, 1) = 98: d(7, 2) = 83 d(8, 1) = 99: d(8, 2) = 80 d(9, 1) = 57: d(9, 2) = 67 d(10, 1) = 80: d(10, 2) = 78 End Sub

Private Sub Command1_Click() Dim no As Integer, flag As Integer Dim m As Integer, top As Integer, bott As Integer flag = -1 '置未找到标志 top = 1: bott = 10 '设定范围 no = Val(Text1.Text) '取学号 If no < h(top) Or no > h(bott) Then flag = -2 '若超出学号范围, 置特殊标志-2 End If

Text5.Text = (d(m, 1) + d(m, 2)) / 2 Case no < h(m) '小于中间数据 Do While flag = -1 And top <= bott m = (top + bott) / 2 '取中点 Select Case True Case no = h(m) '找到 flag = m '置找到标志 Text2.Text = h(m) Text3.Text = d(m, 1) Text4.Text = d(m, 2) Text5.Text = (d(m, 1) + d(m, 2)) / 2 Case no < h(m) '小于中间数据 bott = m - 1 '上半部 Case no > h(m) '大于中间数据 top = m + 1 '下半部 End Select Loop

If flag < 0 Then '判是否找不到 Text2.Text = "" Text3.Text = "" Text4.Text = "" Text5.Text = "" MsgBox "无此学生!" End If Text1.SetFocus End Sub

(1) 创建应用程序的用户界面和设置对象属性

(2)创建应用程序的用户界面和设置对象属性 窗体上含有一个文本框控件数组和一个命令按钮 文本框控件数组(Text1(1)~Text1(8))用来显示演示的8个数 (3)编写程序代码 功能要求: 程序运行后自动产生8个两位随机整数 单击“排序”按钮(Command1)时,即启动排序过程 通过MsgBox函数来暂停程序运行

Private Sub Form_Load() Randomize For i = 1 To n '产生n 个随机数  Const n = 8 '声明符号常量 Option Base 1 Private Sub Form_Load() Randomize For i = 1 To n '产生n 个随机数 Text1(i).ForeColor = RGB(0, 0, 0) '用黑色显示 Text1(i).Text = Int(90 * Rnd + 10) Next i End Sub

Private Sub Command1_Click() For j = 1 To n - 1 '外循环 MsgBox "准备进行第" + Str(j) + "次比较,按回车键继续" For i = 1 To n - j '内循环 If Val(Text1(i).Text) > Val(Text1(i + 1).Text) Then t = Text1(i).Text Text1(i) . Text = Text1(i + 1).Text Text1(i + 1).Text = t End If Next i '沉底数用红色表示 Text1(n - j + 1).ForeColor = RGB(255, 0, 0) Next j MsgBox "排序完毕“ End Sub