4.1算法及其特征学案
知识:
1.算法具有哪些特征?
输入项、输出项、确定性、有穷性、可行性等。
2.算法的常见表达方式有哪些?
自然语言、流程图、程序。
3.我们把所有可能性列举出来,和给出的条件进行判断,符合的保留。这种解决问题方式——叫枚举法或穷举法。
4特点。
1、确定穷举范围
问题所涉及的情况有哪些,情况的种数可不可以确定。
2、确定验证条件
分析出来的这些情况,需要满足什么条件,才成为问题的答案。
经常使用循环+判断的格式
循环结构
For和while循环语句格式
for 循环变量 in 列表:
语句或语句组
While 关系表达式:
语句或与语句组
运算符与表达式
课本【活动1】:任选一种方法表达一道IQ题的解决方法:“房间里有三盏灯,房间外有三个开关,在房外看不见房内的情况下,进门一次确定开关与灯的控制关系。”
【思考】:找出三位正整数中能被3整除的整数。
编写程序完成。
1.找出三位正整数中能被3整除的整数?
2.□3×6528=3□×8256,在两个□内填入相同的数字使得等式成立。求这个数。
T
E//b<<
0'z
Z/h<<
保烈
8
乙*<<<
凿彤遂腳‘粤
Y臀少一一‘马(<<)业9 ays uouAd母M世[维
制舞
别
岂
¥
单
哗
聘收
%
一
+
比基
∥
米*
米
比意
↓乙乙¥
业IZZ
址黄明了鼻°:实用号系组源制海似面43‘台秘说
L性+,以意买甲见课题: 4.1算法及其特征
执教班级:高一(1)(2)(3)(4)(5) 课时安排: 2
教学目标 信息意识: 1.遇到问题能对问题进行描述,并能清晰把解决问题过程形式化。 2.完成项目学习的三个活动的过程中运用恰当的方式描述算法。 数字化学习与创新: 1.能运用数字化工具表达思想、构建知识,养成数字化学习与创新的习惯。 2.能够将部分简单算法转换为程序,利用Python语言描述,调试运行得到结果。 计算思维: 1.在实践过程中体验利用数字化工具处理数据和发现信息的过程,提高使用计算机解决实际问题的能力。 2.能够把问题抽象成数学描述,建立数学模型。 3.通过解决冠军的问题,了解枚举法的含义,并能运用解决相关问题。 在游戏的过程中体验思维碰撞,感受解决问题的乐趣。
教学重难点 教学重点: 能够分析问题,设计解决问题的算法。 能恰当的描述算法。 算法的特征。 了解枚举法的含义,并能使用枚举法解决相关问题。 教学难点: 使用枚举法解决实际问题,编程实现算法。
第二课时
教学环节 教学内容 媒体或技术应用
一、回顾 师:回顾上一节课的内容,回答算法具有哪些特征? 生:输入项、输出项、确定性、有穷性、可行性等。 师:算法的常见表达方式有哪些? 生:自然语言、流程图、程序。 课本【活动1】:任选一种方法表达一道IQ题的解决方法:“房间里有三盏灯,房间外有三个开关,在房外看不见房内的情况下,进门一次确定开关与灯的控制关系。” 生:打开1和2号开关片刻; 关闭2号开关; 进入房间。发现亮的灯对应1号开关;暗且热的灯对应2号开关,剩余的灯对应3号开关。 或者: 师:为什么同学们不用程序来表示呢? 生:不方便。 师:算法的表达方式各有特点。如自然语言表述比较贴近自然方式,表述方便;但容易有二义性,流程图表示比较清晰,但绘制起来比较麻烦;程序功能强大,编写有一定难度。三种方式可以根据实际问题进行选择。只要恰当准确即可。除了已经介绍的三种,其实表达方式还有很多,例如拓展知识中介绍的PAD表示方法,有兴趣的同学可以课后阅读。
二、新知新授 【思考】:找出三位正整数中能被3整除的整数。 枚举法(穷举法) 师: 上题中我们把所有可能性列举出来,和给出的条件进行判断,符合的保留。这种解决问题方式——叫枚举法或穷举法。 枚举法是编程解决问题的常用算法,它利用了计算机运算速度快、精确度高的特点。 1、确定穷举范围 问题所涉及的情况有哪些,情况的种数可不可以确定。 2、确定验证条件 分析出来的这些情况,需要满足什么条件,才成为问题的答案。 经常使用循环+判断的格式 课本【任务二】:叶达班上有好几位志同道合的软件开发爱好者。听说这次面试的冠军就在叶达班的A、B、C、D四位同学中。消息很快传到了班上,当A、B、C、D四人回到班上,叶达迫不及待地问他们中谁得了冠军。四人相对一笑,A说:“不是我。”B说:“是C。”C说:“是D。”D说:“C说的不对。”原来他们想让叶达猜出答案,而且有一人说了假话。叶达很快就知道了答案,大家都想知道他的方法。你能判断到底谁是冠军吗? 生:逐一假设A、B、C、D是冠军,判断是否正确。 冠军A说:“不是我。”B说:“是C。”C说:“是D。”D说:“C说的不对。”A×××√B√××√C√√×√D√×√×
师:下面将这个问题用计算机程序来解决。 提示:我们需要把每个人说的话转化成计算机能够执行的表达式。如A说:“不是我。”可以表示为“i!='A'”,其中i为枚举的冠军选手编号。 请写出表达式。 生:A说:“不是我。” 表达式: i!='A' B说:“是C。” 表达式: 。 C说:“是D。” 表达式: 。 D说:“C说的不对。”表达式: 。 解读下面的程序,尤其理解标注横线的语句含义,并尝试用画程绘制出流程图。 champion=['A','B','C','D'] #设置选手列表 for i in champion: #______________________________ cond=(i!='A')+(i=='C') + (i=='D')+(i!='D') #___________________ if cond==3: print("冠军是:",i) 生:1.枚举每一个选手是冠军。 判断每个人说的话是否是真的,如果是真的表达式为1。cond等于几,就表示就几个人说的是真话。 绘制流程图
三、实践与巩固 编写程序完成。 1.找出三位正整数中能被3整除的整数? 2.□3×6528=3□×8256,在两个□内填入相同的数字使得等式成立。求这个数。 参考答案: 1. for i in range(10): if ((i*10+3)*6528)==((30+i)*8256): print("结果是:",i) 2. for i in range(100,1000): if i%3==0: print(i)
三、总结 一、枚举法:在一堆数据中查找某个数 1、确定穷举范围 问题所涉及的情况有哪些,情况的种数可不可以确定。 2、确定验证条件 分析出来的这些情况,需要满足什么条件,才成为问题的答案。 经常使用循环+判断的格式
四、课后作业 师问:上节课【活动3】学校历届校友的海量数据存储在校网络中心服务器中(共10000条,无重复数据),某管理员因为误操作删除了一位校友的ID号(8位整数)信息,恰好在备份数据库中保存了一份所有人员ID号的文件(无重复数据,无序)。是否可以用枚举法实现?尝试绘制流程图。
板书设计:
备注:实验等实践课的教学设计样式可参照新授课教学设计模板编制。