📋课程基本信息
| 项目 | 内容 |
|---|---|
| 课程名称 | 第13课 二进制的秘密——小航的水果店与小白鼠测毒瓶 |
| 授课对象 | 小学四年级学生(C++入门阶段,有循环、变量基础,数组知识较薄弱) |
| 课程时长 | 120分钟(2课时) |
| 教学方法 | 故事驱动(小白鼠测毒瓶)+ 实物类比(水果店苹果/香蕉)+ 身体互动(手指二进制)+ 场景化代码填空(水果店标签打印机) |
| 核心知识 | 二进制概念(0和1)、位权、除2取余法、while循环、权重累积法(不使用数组) |
| 教学资源 | 课件PPT、课前动画、代码填空练习、在线C++编辑器、小白鼠测毒瓶道具(可选)、水果卡片 |
🎯教学目标
知识与技能
- 理解二进制"逢二进一"的规则,知道二进制只有0和1两个数字
- 理解位权的含义(1, 2, 4, 8, 16...),能进行简单的二进制→十进制转换
- 掌握除2取余法,能手算将十进制数转换成二进制
- 能完成代码填空,用C++实现十进制转二进制(while循环+权重累积法,不使用数组)
过程与方法
- 通过小白鼠测毒瓶故事,体会二进制编码的思想
- 通过水果店苹果/香蕉类比,理解位权的概念
- 通过手指游戏,身体记忆二进制的位权
- 通过代码填空,建立手动算法与程序代码的对应关系
情感态度与价值观
- 感受二进制的简洁美和计算机世界的奥秘
- 培养逻辑思维和问题分解能力
- 在故事和游戏中激发对编程的兴趣
📊4C1E 整体设计
| 环节 | 核心活动 | 学生任务 |
|---|---|---|
| 联系 | 课前动画导入 → 小白鼠测毒瓶故事 → 水果店苹果香蕉类比 → 手指二进制游戏 | 进入情境,初步感知二进制 |
| 建构 | 二进制规则讲解 → 位权理解 → 除2取余法手动练习 → 代码思路讲解 → 代码填空实操 | 掌握转换方法,完成代码填空 |
| 反思 | 计算机为什么用二进制? → 二进制在生活中的应用 → 代码互评 → 常见错误总结 | 深度思考,互相学习 |
| 延续 | 课后任务布置(分层作业) → 二进制趣味拓展(秘密信息、IP地址) → 下节课预告 | 课后巩固,拓展视野 |
| 评价 | 课堂小测(5选择+3判断) → 学习反馈 → 知识点回顾总结 | 检测学习效果 |
🔗C1 联系 Connection(25分钟)
1. 课前动画导入(5分钟)
播放课前动画《小航的水果店与二进制的秘密》,通过动画故事引入本节课主题。
2. 小白鼠测毒瓶故事(8分钟)
讲述经典故事:有8瓶药水,其中1瓶有毒,小白鼠喝了有毒的药水会死亡。最少需要几只小白鼠才能一次找出毒瓶?
- 引导学生思考:1只老鼠只能区分2种状态(活/死),2只老鼠能区分4种,3只老鼠能区分8种
- 给每瓶药水编号0-7,用二进制表示:000, 001, 010, 011, 100, 101, 110, 111
- 第1只老鼠喝所有第1位是1的瓶子,第2只喝第2位是1的,第3只喝第3位是1的
- 根据哪些老鼠死亡,就能反推出毒瓶的编号!
3. 水果店苹果香蕉类比(7分钟)
小航的水果店里,苹果代表1,香蕉代表0。用水果的摆放来表示二进制数:
- 位权表格:从右到左,每个位置的"价值"是1, 2, 4, 8, 16...
- 示例:苹果(1)在第1位=1个,苹果在第2位=2个,苹果在第3位=4个
- 练习:5个苹果怎么用二进制表示?(101 = 4+0+1 = 5)
4. 手指二进制游戏(5分钟)
伸出右手,从拇指到小指分别代表1, 2, 4, 8, 16。手指伸出=1,弯曲=0。
- 老师说数字,学生用手指表示二进制
- 如:3 → 拇指+食指伸出(1+2=3)
- 如:7 → 前三指伸出(1+2+4=7)
🏗️C2 建构 Construction(45分钟)
1. 二进制规则讲解(5分钟)
- 二进制只有两个数字:0 和 1
- 计数规则:逢二进一
- 十进制:0,1,2,3,4,5,6,7,8,9,10(逢十进一)
- 二进制:0,1,10,11,100,101,110,111,1000(逢二进一)
2. 位权理解(8分钟)
二进制数的每一位都有不同的"权重",从右往左依次是 1, 2, 4, 8, 16, 32...(即2的n次方)
3. 除2取余法手动练习(10分钟)
将十进制数不断除以2,记录余数,直到商为0,最后将余数从下往上(逆序)排列。
- 用十进制数除以2,得到商和余数
- 用商继续除以2,记录新的余数
- 重复直到商为0
- 把所有余数从最后一个到第一个排列,就是二进制结果
示例(27转二进制):
课堂练习:将 13、25、42 转换成二进制(学生手动计算,老师巡视指导)
4. 代码思路讲解(7分钟)
因为同学们数组知识还比较薄弱,我们用一种更巧妙的方法——权重累积法,完全不需要数组!
5. 代码填空实操(15分钟)
场景:小航的水果店标签打印机——输入苹果的数量(十进制),程序自动打印出对应的二进制标签。
填空答案:①填2(除2取余) ②填10(权重×10升级) ③填2(更新商)
运行示例:输入27 → 输出11011;输入13 → 输出1101
🤔C3 反思 Contemplation(20分钟)
1. 深度思考:计算机为什么用二进制?(7分钟)
- 计算机的核心是电子元件,电子元件只有两种稳定状态:通电/断电、高电平/低电平
- 用1表示通电,0表示断电,正好对应二进制的两个数字
- 二进制运算规则简单,电路实现容易,可靠性高
- 如果用十进制,需要10种稳定状态,电路设计会非常复杂且容易出错
2. 二进制在生活中的应用(5分钟)
- 计算机内部所有数据(文字、图片、视频、音乐)最终都是二进制
- 条形码、二维码:黑白条纹对应0和1
- IP地址:如192.168.1.1,每个数字都是8位二进制
- 盲文:凸点=1,平点=0
- 灯泡开关:开=1,关=0
3. 代码互评与常见错误总结(8分钟)
随机展示2份学生代码(匿名),引导全班从正确性、可读性、注释三个维度点评。
① 忘记 weight = weight * 10(所有余数都累加到个位,结果错误)
② 混淆 % 和 /(取余和整除搞反)
③ weight 初始值设错(应从1开始,不是0)
④ n=0 时没有处理(输出为0,可引导学生思考是否合理)
🚀C4 延续 Continuance(15分钟)
1. 分层课后任务
| 层次 | 任务内容 | 目标 |
|---|---|---|
| 基础题 | ①手动转换:将13、25、42转成二进制,写出除2取余过程;②完成课堂代码填空,输入27截图提交 | 巩固核心算法 |
| 提高题 | 修改代码,让输出变成"苹果/香蕉"图案(1输出苹果,0输出香蕉),不使用数组 | 灵活运用 |
| 挑战题 | 编写一个程序,将二进制数转成十进制数(位权展开法) | 逆向思维拓展 |
2. 二进制趣味拓展
- 二进制秘密信息:用5位二进制给字母编码(A=00001, B=00010...),写一段只有你和朋友懂的秘密信息
- 二进制生日:把你的出生年份转换成二进制,看看是什么样子
- 二进制手指魔术:用手指二进制快速计算1-31以内的加法
3. 下节课预告
下节课我们将学习第14课的内容,继续探索C++的奥秘,敬请期待!
📝E 评价 Evaluation(15分钟)
1. 课堂小测(10分钟)
5道难度递增的选择题 + 3道判断题,限时完成。题目覆盖:二进制规则、位权、除2取余法、代码关键填空。
2. 学习反馈(3分钟)
请学生用一句话总结今天学到的最重要的知识,或提出一个还没弄懂的问题。
3. 知识点回顾(2分钟)
🧠本节课知识点体系总览
本节课共涵盖 3大模块、12个核心知识点,其中 重点 标注的为必须掌握的核心内容。
1. 二进制的定义 重点
二进制是一种以2为基数的计数系统,只有两个数字:0 和 1。每一位的计数规则是"逢二进一"。
2. 十进制与二进制对比
十进制有0-9共10个数字,逢十进一;二进制只有0和1,逢二进一。两者只是表示方式不同,数值大小可以互相转换。
3. 位权的概念 重点
二进制数的每一位都有不同的"权重",从右往左依次是 1, 2, 4, 8, 16, 32... 即第n位(从0开始)的位权是2的n次方。
4. 二进制转十进制(位权展开法)
将二进制数的每一位乘以对应的位权,然后相加,得到十进制数。
5. 除2取余法原理 重点
将十进制数不断除以2,每次记录余数(0或1),直到商为0。最后将所有余数从下往上(逆序)排列,就是二进制结果。
6. 为什么余数要逆序排列?
第一次除以2得到的余数是二进制的最低位(最右边),最后一次得到的余数是最高位(最左边)。所以要从下往上读,才能得到正确的顺序。
7. 手动转换练习要点 重点
①每一步都要写清楚商和余数;②余数只能是0或1;③商为0时停止;④最后从最后一个余数往前读;⑤可以用位权展开法验证结果是否正确。
8. while循环 重点
while循环在条件为真时重复执行代码块。本题中 while(n > 0) 表示当商n大于0时继续循环,n变为0时停止。
9. 取余运算 % 和整除 /
% 是取余运算,n % 2 得到n除以2的余数(0或1);/ 是整除运算,n / 2 得到n除以2的商(整数部分)。两者配合实现除2取余法。
10. 权重累积法原理 重点
用一个十进制整数result的每一位来存储二进制的每一位。weight变量记录当前位权重(1,10,100...),每次循环把余数×weight累加到result中,然后weight×10升级。
11. 为什么不需要数组和逆序?
因为weight从1开始递增,先得到的余数乘以1放在个位(二进制最低位),后得到的余数乘以10放在十位,乘以100放在百位... 余数自然按从低位到高位的顺序排列,所以不需要数组存储,也不需要逆序输出!
12. 变量跟踪与调试方法
调试循环程序时,可以用"变量跟踪表"记录每次循环后各变量的值。本题跟踪 n(商)、remainder(余数)、weight(权重)、result(结果)四个变量,能清晰看到程序的执行过程。
🔗知识点关联图谱
二进制定义 · 位权 · 逢二进一
除2取余法 · 位权展开法 · 逆序排列
while循环 · 取余整除 · 权重累积法
📝完整代码参考(水果店标签打印机)
变量跟踪表(以输入27为例)
| 循环次数 | n(商) | 余数 | weight | result(结果) |
|---|---|---|---|---|
| 初始 | 27 | - | 1 | 0 |
| 第1次 | 13 | 1 | 10 | 1(1×1) |
| 第2次 | 6 | 1 | 100 | 11(1×10+1) |
| 第3次 | 3 | 0 | 1000 | 11(0×100+11) |
| 第4次 | 1 | 1 | 10000 | 1011(1×1000+11) |
| 第5次 | 0 | 1 | - | 11011(1×10000+1011) |
💡可拓展授课知识点与思路
拓展A:二进制的历史与莱布尼茨
二进制由德国数学家莱布尼茨在17世纪完善。他受到中国《易经》八卦的启发,认为阴阳两仪与二进制的0和1有异曲同工之妙。可以给学生展示八卦图,让学生发现八卦的阴阳组合与二进制的对应关系。
拓展B:更多进制的探索
除了二进制和十进制,生活中还有其他进制:十二进制(一年12个月、一打12个)、六十进制(一分钟60秒、一小时60分)、十六进制(计算机中常用,0-9加A-F)。可以引导学生思考:为什么不同场景用不同进制?
拓展C:权重累积法的原理深化
为什么用 weight = weight * 10?因为我们用一个十进制整数的每一位来存储二进制的每一位。十进制的"个位"对应二进制的最低位,"十位"对应次低位,以此类推。引导学生理解"用一种进制的数位存储另一种进制的数位"这个巧妙的编程思想。
拓展D:二进制转十进制的代码实现(反向转换)
作为学有余力学生的拓展,用位权展开法实现二进制转十进制。输入一个二进制数(如1011),逐位取出数字,乘以对应的位权并累加。可以引导学生思考:如何逐位取出二进制数的每一位?(用 %10 取最后一位,/10 去掉最后一位)
拓展E:变量的生命周期与调试思维
result 和 weight 两个变量在循环中如何变化?每次循环后各变量的值分别是什么?引导学生用"变量跟踪表"来追踪变量变化,培养调试思维。这是编程中非常重要的能力——能在脑中"运行"程序,预测每一步的结果。
拓展F:故意写bug让学生debug
可以故意写一段有bug的代码(如忘记 weight = weight * 10,导致所有余数都累加到个位上),让学生运行后发现结果不对,然后通过变量跟踪表找出问题所在。培养学生的排错能力和批判性思维。
拓展G:n=0的边界情况处理
当输入n=0时,while(n>0)不执行,result保持为0,输出0。这在数学上是正确的(十进制0对应二进制0),但可以引导学生思考:如果要求输出"0000"这样的固定位数怎么办?需要加什么处理?(可以用if判断n==0时输出特定格式)
📐板书设计
位权:1, 2, 4, 8, 16...(2的n次方)
13÷2=6 余1
6÷2=3 余0
3÷2=1 余1
1÷2=0 余1 → 最高位
结果:11011(从下往上读)
r = n % 2; // 取余
result += r * weight; // 累加
width *= 10; // 权重升级
n /= 2; // 更新商
}
⚠️教学注意事项与常见问题
时间把控
建构环节的代码填空可能超时,需提前准备好代码框架投影,减少学生输入负担;手动转换练习控制在2-3题,不宜过多。
概念难度
位权是核心难点,一定要花足够时间讲透,不能急于进入代码。可以用"水果店的苹果数目"(512,256,128...)作为直观的位权参考。
代码填空设计
填空点控制在3个(%2、×10、/2),重点理解权重累积法原理,语法细节预先写好,降低数组薄弱学生的认知负担。
硬件准备
确保每台电脑都有C++编译环境,课前测试运行无误;代码填空练习纸提前打印。
差异化教学
对于理解较慢的学生,可以提供"半完成代码",只需要填1-2个空;对于学有余力的学生,布置二进制转十进制的拓展任务。
📊评价标准
| 评价维度 | 优秀(A) | 良好(B) | 需努力(C) |
|---|---|---|---|
| 二进制概念 | 能准确说出二进制规则和位权含义,能举例说明 | 能说出基本规则,位权理解基本正确 | 对二进制规则模糊,位权概念不清 |
| 手动转换 | 除2取余过程完整正确,逆序无误,能自我验证 | 转换过程基本正确,偶有计算错误 | 转换过程不完整,逆序经常出错 |
| 代码实现 | 独立完成所有3个填空,代码运行正确,理解权重累积法原理 | 能完成大部分填空,少量错误需提示 | 填空困难,需要大量帮助 |
| 课堂参与 | 积极参与故事讨论、手指游戏、代码互评 | 能参与课堂活动,偶尔主动发言 | 参与度低,需要老师提醒 |
🔄教学反思(课后填写)
1. 学生对哪个环节最感兴趣?哪个环节最吃力?
(课后记录:小白鼠故事/手指游戏/代码填空...)
2. 权重累积法学生理解了吗?需不需要补充数组方法作为对比?
(课后记录:...)
3. 时间分配是否合理?哪个环节需要调整?
(课后记录:...)
4. 下节课需要复习或补充什么内容?
(课后记录:...)