高中信息技术浙教版 (2019)选修1 数据与数据结构第六章 大数据时代数据的组织6.2 POI数据的组织与应用教案及反思
展开课程标准
和
教学目标
数据查找的应用
教材内容:5.4数据查找的应用
适应的课程标准:
1.7 通过实现数据的排序和查找,体验迭代和递归的方法,理解算法与数据结构的关系。
教学目标:
●能针对具体的问题情境,选择合适的数据查找算法。
●能够完整地进行抽象与建模、设计算法与数据结构、程序实现,解决查找算法的应用问题。
指向的核心素养:
●信息意识:学生能够结合生活中的实例描述数据的内涵与外延,有意识地选择恰当的数据结构表达数据的逻辑关系。
●计算思维:能够将有限制条件的、复杂生活情境中的关系进行抽象,能够从数据结构的视角审视基于数组、链表的程序,解释程序中数据的组织形式,描述数据的逻辑结构及其操作,评判其中数据结构运用的合理性;能够针对限定条件的实际问题进行数据抽象,运用数据结构合理组织、存储数据,选择合适的算法(排序、查找、迭代、递归)编程实现、解决问题。
●数字化学习与创新:要使学生较为熟练地运用数据结构解决生活中的真实问题,并在此过程中自主或协作探究;能够评估常见的数字化资源与工具对学习数据结构的价值,根据需要合理选择。
●信息社会责任:能够分析数据与社会各领域间的关系,自觉遵守相应的伦理道德和法律法规。
学习环境:有教学控制软件的多媒体机房,pythn编程环境。
建议课时:1课时
教学环节
教学过程
设计意图
情境导入
导入1:航空公司VIP会员积分查询部分数据(Excel数据)
VIP号
姓名
飞行里程(KM)
积分
600214
韩江辉
16801
519
601278
蒋志来
5321
78
600815
李亚东
28745
436
607854
王庆生
1861
39
605719
李燕
7493
138
603532
王晓燕
6875
102
600101
郑煜明
14253
236
600087
蔡佳宁
112703
958
请学生操作Excel表,要求实现根据VIP号码快速查询会员积分。查找如何实现?
设计意图:通过导入生活中的数据分析案例,体会查找过程中要显示某个会员的积分信息,先得从多条记录中查找到该会员的记录。
新课讲解
●学习任务一:抽象与建模
问题:从表中的数据可以看出,每个会员的信息是一条记录,包括VIP号、姓名、飞行里程、积分等数据项。根据刚才的实践体验,对记录快速查询会员积分,查找应当如何进行?
教师总结:查找过程中要显示某个会员的积分信息,先得从多条记录中查找到该会员的记录,如下所示:
XXXXXX
XXX
XXXXX
XXX
若用a[i]表示该条记录,则该会员的积分可采用以下形式表示:
a[i][3](表示该条记录的第4个数据项的值)
●学习任务二:设计算法与数据结构
对于每个会员,需要记录其一条完整的记录信息,查找之前要将所有会员的信息存储起来,可以选取数组结构来实现。
有两种方案:
一是采用4个一维数组按列存储,即每个数组分别存储每位会员的VIP号、姓名、飞行里程(km)和积分,如定义b数组存储表中8位会员的积分,其对应的值为[519,78,436,39,138,102,236,958];
二是采用1个一维数组按行存储,每个数组元素对应某位会员的一条记录信息,如[600214,韩江辉,16801,519]对应VIP号600214的相关信息。
采用不同的存储方式,排序时数据的交换方式也有不同。根据5.3.3排序算法的应用,采用1个一维数组按行存储处理起来更方便快捷。
要显示某个会员的积分,先要从多条会员信息的数据中找到该会员。查找可采用顺序查找算法或二分查找算法,若从算法的时间复杂度方面考虑,对数据进行一次查找,哪一种查找算法的效率高;对数据重复查找,哪一种查找算法的效率高?学生可以展开小组讨论。
老师总结:
对数据进行一次查找,采用顺序查找算法。对数据重复查找,二分查找算法的效率高于顺序查找算法,但二分查找提前:被查找的数据序列必须是有序,即在查找前要按VIP号为关键字进行排序。
设问:综合考虑应该采用哪一种查找算法?
●学习任务三:程序实现
老师可以提供数据样例,并以csv格式文件分发给学生。读取数据文件时,选择一个一维数组,然后采用二分查找算法进行查找。根据学习情况,读写csv文件的程序代码可以由老师提供给学生。
示例程序:
imprt csv
#数据读入
csvFile = pen("vip.csv", "r")
reader = csv.reader(csvFile)
a = []
fr item in reader:
a.append(item)
csvFile.clse()
#排序
def bubble_srt(d):
fr i in range(1,len(d)):
fr j in range(1,len(d)-i):
if int(d[j][0])>int(d[j+1][0]):
temp=d[j]
d[j]=d[j+1]
d[j+1]=temp
#二分查找
def bsearch(s,array):
i = 1 #查找范围不包含第一行数据
j = len(array)-1
while i <= j:
m = (i+j) //2
if int(array[m][0]) ==s:
return m
if s < int(array[m][0]):
j = m-1
else:
i = m + 1
return -1 #未找到返回-1
bubble_srt(a)
key=int(input('请输入要查询的VIP号:'))
m=bsearch(key,a)
if m !=-1:
print(a[m][1],"先生/女士,',您的积分为:",a[m][3])
else:
print('找不到VIP号对应的用户信息!')
设计意图:引导学生思考复杂数据查找的规律。
设计意图:引导学生比较不同查找算法的效率,考虑每种查找算法的局限性,二分查找算法的前提被查找的数据序列必须是有序。
设计意图:可以在配合讲解程序的情况下,鼓励学生自己动手编写程序。老师可以巡视过程中发现问题,帮助解决问题。
课堂小结
知识梳理
1. 抽象数据类型的数据查找;
2. 不同应用场景下不同查找算法的效率;
3. 抽象与建模、设计算法与数据结构、程序实现的完整经过。
学习评价
对自己和同伴的表现进行客观的评价,并思考后续完善的方向。(5=优秀,4=超出一般水平,3=满意,2=有待改进,1=不太理想)
评分项
自我评价
同学互评
能完成新课导入中的问题并理解记录中积分查找的一般步骤
5 4 3 2 1
5 4 3 2 1
掌握并比较不同应用场景下不同查找算法的效率
5 4 3 2 1
5 4 3 2 1
能够掌握抽象与建模、设计算法与数据结构、程序实现的完整经过
5 4 3 2 1
5 4 3 2 1
设计意图:针对不同学习程度设计对应的任务,以满足不同学生的需求。
作业布置
基础作业(面向所有学生):
思考教材“问题与讨论”:在“航空公司VIP会员积分查询”例子中,将其中的二分查找改成顺序查找,并上机实践。
课后作业是课堂学习的延伸,是巩固和升华知识点的有效途径。
教学设计思路
本条目建议重点关注计算思维的培养与提高。建议从学生熟悉的生活情境出发,由学生已经获得的编程经验自然延伸、生发,针对具体问题展开。可从抽象与建模、设计算法与数据结构、程序实现三个方面进行。即通过合适途径让学生明晰查找算法应用时应当注意的问题,特别是面对较复杂结构的数据时,如果数据以记录的形式呈现,各条记录的查找如何进行,涉及查找的具体操作时,有哪些注意事项。据此再讨论算法的设计,对数据的组织形式展开讨论,并详细剖析不同的查找方法有什么差异。厘清问题是程序实现的关键所在,选择合适的数据结构和合适的查找算法之后,再针对具体实现讲解要点,鼓励学生自主完成。同时可以就不同的查找算法对程序实现的效率进行分析,帮助学生认识到查找算法对解决问题的重要影响。
针对
核心素养培养的
设计考虑
信息意识、信息社会责任:本节课在导入时选择了一个案例,导入“航空公司VIP会员积分查询部分数据(Excel数据)”,由于Excel表格进行查找操作时,直观形象,教师可以引导学生思考查找的一般步骤、抽象数据类型、顺序查找算法和二分查找算法的优劣,从而形成对记录查找相关问题初步的意识。
计算思维:本节中围绕较为复杂形式的数据如何进行查找展开,这是一个由抽象与建模、设计算法与数据结构、程序实现组成的完整经过。
数字化学习与创新:本节的数据可以从真实环境中产生,或者由老师提前安排好并提供数据文件,或者由学生课前自主搜集相关数据。鼓励学生利用多途径方式收集数据,并采用不同的查找算法进行数据查找算法的探索。
高中信息技术浙教版 (2019)选修1 数据与数据结构2.2 链表教案: 这是一份高中信息技术浙教版 (2019)选修1 数据与数据结构2.2 链表教案,共4页。教案主要包含了教学设计等内容,欢迎下载使用。
高中3.1 字符串教学设计: 这是一份高中3.1 字符串教学设计,共2页。
浙教版 (2019)选修1 数据与数据结构5.4 数据查找教学设计: 这是一份浙教版 (2019)选修1 数据与数据结构5.4 数据查找教学设计,共7页。