内容正文:
4.3 非数值计算 教学设计
教材版本:教科版(2019)高中信息技术必修1《数据与计算》
课时安排:1课时(45分钟)
授课对象:高一年级
一、教材与学情分析
(一)教材分析
本节是第四章“计算与问题解决”的第三节。4.1节解决了“算法是什么”,4.2节解决了“怎么用程序算数值”,本节开始处理另一类问题:不涉及大量算术运算,而是依靠比较、判断、逻辑推理来解决问题的“非数值计算”。
教材以“猜数字”游戏和二分查找为载体,核心教学价值在于分治思想——把一个大的查找范围通过比较不断“砍半”,用极少的次数定位目标。这个思想不仅在查找中管用,在后续学排序、递归、数据结构时都会反复出现。教材还涉及递归的初步体验(汉诺塔),但递归的完整理解通常放在选择性必修中深化,必修阶段只需要让学生“感受到递归的存在”即可。
(二)学情分析
学生已经学过顺序结构、分支和循环,能看懂简单的查找循环。但存在几个典型问题:
问题
具体表现
对教学的影响
“查找”停留在“从头翻到尾”
认为查找就是逐个比对,没有“范围可以缩小”的意识
需要设计一个“逐个比对很慢”的任务让学生感受到痛点
对“分治”没有直觉
知道“一半一半”这个说法,但说不出为什么要取中间、怎么取中间
需要用猜数字游戏把“取中间”变成身体记忆
递归“脑子里跑不动”
看到函数自己调用自己就懵了
必修阶段不要求写递归代码,只要求“知道它长什么样、能解决什么问题”
二、教学目标(基于学科核心素养)
1. 信息意识:能够识别生活中“在有序范围内快速定位”的问题场景(如字典查字、通讯录找人、图书馆找书),意识到“顺序查找”和“二分查找”是两种不同的效率层级,形成“面对有序数据时主动思考能不能‘砍半’”的意识。
2. 计算思维:能够用自己的语言解释二分查找的基本思想:在有序序列中,每次取中间元素比较,根据比较结果将查找范围缩小一半;能用自然语言或流程图描述二分查找的步骤;能通过“猜数字”任务体会“查找次数与数据规模之间的对数关系”。
3. 数字化学习与创新:能够在Python环境中运行给定的二分查找程序,通过修改目标值观察查找过程的变化;能利用print语句在循环中输出每一轮的low、high、mid值,把“砍半”的过程可视化。
4. 信息社会责任:通过讨论“查找算法在生活中的应用与误用”(如“大数据杀熟”中系统快速定位用户画像),初步认识算法效率提升带来的便利和风险;形成“算法是工具,效率越高越需要关注它被用来做什么”的基本判断。
三、教学重难点
类型
内容
突破策略
重点
二分查找的核心思想(取中间、比大小、砍一半)及适用条件(数据必须有序)
用“猜数字”游戏让学生先用身体“跑”一遍二分策略,再迁移到数组查找
难点
理解“为什么砍半比逐个找快这么多”——即查找次数与数据规模的关系
用表格对比n=1000时顺序查找和二分查找的最多比较次数,用数字说话
四、教学方法与资源
主要方法:任务驱动法、游戏体验法、对比发现法。
教学资源:多媒体课件、学习任务单、Python环境(含二分查找演示程序)、“猜数字”游戏网页或小程序。
五、教学过程
环节一:导入——猜数字游戏(8分钟)
教师活动
学生活动
设计意图
打开“猜数字”游戏:计算机在1—1000中随机生成一个数,学生来猜,计算机提示“大了”“小了”或“对了”。先请一位学生上来“随便猜”,记录猜中用了多少次。
参与游戏,随机猜测。可能猜了十几次才中,也可能运气好几次就中。
让学生先体验“瞎猜”的低效,为后面的“有策略地猜”制造对比。
追问:“刚才你是随便猜的。如果让你制定一个必胜策略,保证最多猜10次一定能猜中,你会怎么猜?”请学生两两讨论1分钟。
讨论后可能提出:“先猜500”“然后猜250或750”“每次猜中间那个数”。
从“瞎猜”到“有策略地猜”,让学生自己“发明”二分策略,而不是教师直接给方法。
猜数字策略对比表(板书生成):
策略
第一次猜
第二次猜
最多需要几次
从1开始逐个猜
1
2
1000次
从500开始砍半猜
500
250或750
最多10次
环节二:从游戏到算法——二分查找的步骤(12分钟)
教师活动
学生活动
设计意图
任务一:用自然语言写出“砍半猜数”的步骤——请学生把刚才的猜数字策略写成“能教给别人的步骤”。
写步骤。示例:①范围是1到1000;②猜中间的数;③如果大了,范围变成左半边;如果小了,范围变成右半边;④重复②③直到猜中。
从游戏体验过渡到算法描述,让学生用自然语言把“怎么做”说清楚。
请两位学生朗读自己的步骤,教师在黑板上记录关键词:“范围”“中间”“砍半”。
对照自己的步骤,补充遗漏的细节(如“如果范围只剩一个数就直接猜它”)。
暴露学生的思维盲点,比如“什么时候停”这个条件容易被忽略。
展示二分查找的流程图,对照学生写出的步骤逐框讲解。
观看流程图,把自己的步骤和流程图对照,找出差异。
流程图把“范围缩小”这个动态过程变成了静态的图形语言。
二分查找流程图:
环节三:上机观察——让程序“砍”给你看(12分钟)
教师活动
学生活动
设计意图
任务二:在程序中“看见”砍半——发放Python程序(二分查找一个有序数组),要求学生在循环中加一句 print("范围:", low, "-", high, " 中间位置:", mid, " 值:", arr[mid]),运行后观察每一轮的范围变化。
运行程序,观察输出。学生会看到范围从“0-9”变成“0-4”或“5-9”,再变成更小的区间。
把“砍半”这个抽象动作变成屏幕上逐行缩小的数字区间。
提问:“数组长度是10的时候,最多输出几行?如果数组长度是1000呢?”
数输出行数。长度10时最多4行;长度1000时大概10行。
从具体输出过渡到“查找次数”的概念。
展示对比表,用数字说明效率差异。
观察表格,感受“1000个数据,顺序查找最多1000次,二分查找最多10次”的差距。
不要求推导对数公式,只用直观数字让学生“被震一下”。
顺序查找 vs 二分查找:最多比较次数对比表:
数据规模
顺序查找最多比较次数
二分查找最多比较次数
10
10次
4次
100
100次
7次
1000
1000次
10次
10000
10000次
14次
关键追问:“二分查找这么好用,有没有什么‘前提条件’是它必须满足的?”引导学生发现:数组必须是有序的。如果数据是乱的,取中间值比较就没有意义,因为“大了”不代表目标一定在左边。
环节四:拓展体验——递归长什么样(8分钟)
教师活动
学生活动
设计意图
展示汉诺塔的3层圆盘移动过程(用动画或实物演示)。提问:“要把3个盘子从A柱搬到C柱,你觉得第一步应该做什么?”
观察并尝试描述步骤。学生会发现“先把上面的盘子搬到B柱,再把最大的搬到C柱,再把B柱的搬回来”。
用汉诺塔让学生感受“一个问题的解决过程里包含了一个同样结构的小问题”。
展示递归函数的“长相”(不要求理解执行细节):
观察代码结构,注意到函数内部有一句 move(n-1, ...) ——函数在调用自己。
必修阶段的目标不是“会写递归”,而是“见过递归、知道它长什么样、能说出它和循环不一样的地方”。
提问:“这个函数和我们刚才写的二分查找有什么不一样的地方?”
回答:二分查找用while循环反复执行;递归函数是函数自己调用自己。
建立“循环迭代”和“递归”的初步区分。
python
环节五:总结与责任(5分钟)
教师活动
学生活动
设计意图
请学生用一句话回答:“今天学的‘砍半’,除了用在查找上,你觉得生活中还有哪里可以用类似的想法?”
自由发言。可能回答:“找一本书先看中间”“猜价格先猜一半”“排查故障先检查中间那段”。
把“分治”从算法概念拓展为一种通用的解决问题策略。
责任讨论:展示一条简短信息——“某平台用算法快速定位‘对价格不敏感’的用户,对同一商品给出更高价格。”提问:“从算法的角度看,平台在做什么?这种‘高效’是好事还是问题?”
简短讨论。可能回答:“平台在用数据快速找到愿意多付钱的人”“算法效率高,但用在了不公平的地方”。
让学生意识到:算法效率本身是中性的,但“高效地做什么”涉及价值选择。
六、板书设计
4.3 非数值计算
一、从“瞎猜”到“砍半” 1-1000,每次猜中间 → 最多10次
二、二分查找的核心步骤
取中间 → 比大小 → 砍一半 → 重复 前提条件:数据必须【有序】
3、 效率对比(学生板书区)
数据量
顺序查找
二分查找
1000
1000次
10次
4、 递归长什么样
函数自己调用自己(汉诺塔)
“大问题里藏着一个同样结构的小问题”
学科网(北京)股份有限公司
$