教科版高中信息技术选修1-算法与程序设计:在数组中查找数据_课件1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果处理的不是一位同学的成绩,而是65位同学或更 多人的成绩时,如采用定义单个变量的方法将非常烦 琐,有没有更好的办法呢?
借助数组来处理
1 、数组的基本概念
数组:是一组相同类型的变量 的集合,集合中的每个元素都
是独立的变量,它们能够通过 数组序号被引用。
2 a
12 34
14 W
数组的声明
格式一:Dim 数组名(常量) As 数据类型
和一般变量的赋值类似; 例如: 给数组内第一个元素赋值:
aryChinese(0)=80 给数组内多个元素赋值:
for i=0 to 49 aryChinese(i)=0
next
1. 有一组元素包括大、小写字母及空格共 53 个,定义一个数组表示(数组 名称为 zifu ) ____Dim zifu(52) As String
二、静态数组声明
⑴一维数组 形式:Dim 数组名(下标) [AS类型] ①数组声明时的下标必须为常数,不可以是表达式或变量。 ②一维数组的大小:上界-下界+1 例:Dim A(12) as integer 声明A是数组名、整型、一维数组、有13个元素、下标的范围 是0~12。
⑵多维数组 格式:Dim 数组名(下标1[,下标2……]) [AS 类型] 每一维的大小=上界-下界+1 数组大小=每一维大小的乘积 例:Dim C(-1 to 5,3) As Long 声明C是数组名、长整型、二维数组,第一维下标范围为-1~5, 第二维下标范围为0~3,占据7×4个长整型变量的空间。
2. 定义一个数组 dat,含7个元素,把1到7这7个数值,分别赋值给数组 的各个元素。
Dim dat(6) As Integer Dim i As Integer For i=0 To6 ( dat(i)=i+1)
Next i 3. 写出下列程序执行后的结果(含义) Dim i As Integer Dim zifu(25) As String For i=1To 26 zifu(i)=chr(64+i) Next i 程序执行结果 __________________________________
静态数组是在定义时把数组大小已确定 了。数组声明时的下标必须为常数,不可以是表达式或变量。
例:Dim A(12) as integer A是数组名、整型、一维数组、有13个元素、下 标的范围是0~12。
动态数组可在任何时刻改变大小,动态分配存 贮空间
例:Dim B()as Single 定义一个单精度浮 点动态数组
数组的声明
Dim aryChinese(49) As Single 这个数组共有50个元素,分别为
aryChinese(0) 、aryChinese(1)…aryChinese(49),
数据类型为单精度型。
Dim aryChinese(1 to 50) As single
这个数组共有50个元素,分别为 aryChinese(1) 、aryChinese(2)…aryChinese(50),
如:二维数组定义: dim 数组名(行最大下标,列最大下标) as 数据类型
二维数组行列意义
Dim sum(2,3) as integer
第0列 第1列 第2列 第3列
* * * * 第0行 * * * * 第1行 * * * * 第2行
Dim sum(1-3,1-4) as integer
3、数组的赋值
哈希查找*
速度最快
耗费空间,难 以获得位置
根据不同的问题选择合适的查找算法
课后思考
百度一下,你就知道,我们遇到什 么不懂的问题,一般都会到百度去 搜索,此搜索与我们本节课所讨论 的查找有什么区别和联系?
谢 谢!
格式二: Dim 数组名(下界 to 上界) As 数据类型
例如:用数组aryChinese来表示50名同学的 语文成绩,可以定义为: (1) Dim aryChinese(49) As Single (2) Dim aryChinese(1 to 50) As single
它们都表示一个包含50个元素的名为aryChinese的数组。
值”) Next j Next i
⑶数组的赋值说明 ①赋值号两边的类型必须一致。 ②若赋值号左边是一个动态数组,则赋值时,自动将ReDim赋
给右边相同大小的数组。 ③若赋值号左边是一个大小固定的数组,赋值有误
拓展练习:输出26个大写字母
练习:斐波那契数列 1,1,2,3,5,8,13,21,34,55…… Fn=fn-2+fn-1 (ห้องสมุดไป่ตู้>2) Dim f(20) As Integer
游戏回顾
所采取的策略
先猜500,根据老师的反馈是高还是 低决定下次是猜750还是250,如此反 复,直到猜中为止。
模型提炼
问题模型:在从1到n范围内寻找目标数 算法描述:每次都拿区间的一半的数字
来与目标数比较,如果相等,则查找成 功;如果该数比目标数大,新区间就是 原区间的左半部分,否则就是右半部分, 然后对新区间如此反复操作,直到找到 目标的数为止。 这就是二分查找
练习:判断下列数组的取值范围:
A(10),B(-3 to 5)
11
9
数组的维数
数组维数:(由数组元素中下标的个数 决定)一个下标表示一维数组 VB中有一维数组、二维数组、……,最
多有60维数组。
例如:数组ary(3);
一维数组
数组ary(64,5);
二维数组

行数 列数
2.静态数组和动态数组
数据类型为单精度型。
关于数组下标的说明
对于数组aryChinese(49)和aryChinese(1 to 50):
①数组中每个元素有一个唯一的顺序号,起始 序号为0;Dim aryChinese(下界 to 上界) ②下标不能超过数组声明时的上、下界范围; ③下标可以是整型的常量、变量、表达式及一 个数元素; ④取值范围:下界to 上界,缺省下界,默认 为0。下界最小为-32768,上界最大为32767。
任务:请从下列句子中找出一个错别字 “夏”所在的位置,注意,标点符号占 用一个位置。
• 句子:听说,夏雨天音乐和巧克力更 配哦。
• 方法:从第一个位置开始逐个比较, 直到找到目标文字。
模型提炼
问题模型:在一个数据序列中寻找目标元素
• 算法:从第一个元素开始按数据的顺序逐个对比 目标元素,如果被查数据和目标元素匹配,则表 示找到,如果所有数据都不匹配,则表示被查数 据不存在该目标元素,查找失败。
在数组中查找数据
第一节 什么是数组
教学内容:
1.理解数组的基本概念 2.静态数组和动态数组的声明及 使用 3.数组的赋值
数组的应用
如果要在程序中表示一位同学的语文、数学、英语、 物理、化学五门课程的成绩,该如何做?
定义5个变量表示5门课程
Dim sngChinese as Single Dim sngMath as Single Dim sngEnglish as Single Dim sngPhysics as Single Dim sngChemistry as Single
2、问题分析:
我们分别用两个数组来存储源码字符 表和密码字符表。
第三节 二分法查找
一份WORD文档,我想统计某个词在这篇文 档中出现的次数,用什么功能比较合适?
• 一份成绩单,我想在全年级的数据中快速地 找到我的名字。用什么功能比较合适?
• 这些都是查找!那么这些功能背后的原理是什 么?如果是人工操作,该如何实现呢?
适用条件是什么呢?
数据有序!
拓展思考
小明最近在做研究性学习的数据处理, 他要将原始数据录入计算机中,并且 需要经常查询某个数字是否出现过。
比如某一份最简单的原始数据是 8,2,4,9,5,你会采取什么办法能够快 速地得到查询结果?
查找类型 顺序查找 二分查找
小结
优点 实现简单 速度快
不足 速度慢 必须有序
补充:数组概念
变量:用于存储数据的容器
变量相当于单个容器
• 数组:一连串用于存储数据的容器,每个 容器都有编号标记
0 1 2 3 4 5 6 7 8 ……
数组就是一连串的容器
猜价格游戏
商品价格是1000以内的整数 每一次说出一个价格 我会告诉你价格是高了还是低了 最多猜10次 如果猜中了商品归你
顺序查找PK二分查找
为什么二分查找要比顺序查找快?
顺序查找最多要找多少次? 二分查找最多要找多少次?
二分查找最多需要log2N次,而顺序查找 最多要N次,只要位置在log2N之后的目标元素, 都是二分查找快。
二分查找的前提
既然二分查找这么快,是不是所有的查找 都采用二分查找?
• 在12,6,8,7,16中查找7所在的位置。 • 显然不能用二分查找了,那么二分查找的
把大写字母 A~Z 赋值给数组 zifu 的各个元素。
四、数组的基本操作(赋值,输出)
(1) 数组元素赋初值(利用循环语句实现)
Dim a(10) as integer For i=1 to 5
A(i)=4
一维数组:赋值都为4
Next i
变换代码:分别赋值1至5
⑵二维数组的输入(用双循环实现) 用InputBox函数实现 Dim S(3,4) AS Single For i=0 to 3 For j=0 to 4 S(i,j)=InputBox(“输入” & I & j “的
Dim i As Integer f(1) = 1: f(2) = 1 For i = 3 To 10 f(i) = f(i - 2) + f(i - 1) Next i For i = 1 To 10 Print f(i); Next i
第二节 顺序查找
教学内容:
1.问题描述 2.问题分析 3.编程实现
什么是顺序查找?

顺序查找是查找算法中简单易行的算法。
进行查找是,一般从数据的第一个元素开始,
按照数据的顺序查找指定的关健值;如果被查
数据和该关键值相匹配,则表示找到;如果所
有数据与关健值都不匹配,则表示被查数据中
不存在改关健值,查找失败。
1、问题描述:简单替换密码就是把字符 串中的每个字符对应地替换成另一个字 符,重新进行编码,从而形成密文;揭 秘是再按对应关系将加密字符还原。
相关文档
最新文档