📋课程基本信息
| 项目 | 内容 |
|---|---|
| 课程名称 | 第18课 趣谈回文数——小海豚的海底探险 |
| 授课对象 | 小学四年级学生(C++入门阶段,有循环、变量、函数基础) |
| 课程时长 | 120分钟(2课时) |
| 教学方法 | 故事驱动(小海豚小航发现回文石板)+ 趣味互动(回文诗/回文数接龙)+ 代码填空(回文数查找机) |
| 核心知识 | 回文数概念、数字翻转算法(while循环)、bool函数、for循环遍历查找 |
| 教学资源 | 课件PPT、代码填空练习、在线C++编辑器、回文数卡片(可选) |
🎯教学目标
知识与技能
- 理解回文数的定义,能判断一个数是否是回文数
- 掌握数字翻转算法(sum=sum*10+n%10, n/=10)
- 理解bool类型函数的定义和返回值
- 能完成代码填空,实现回文数查找机(for循环+while循环+if判断)
过程与方法
- 通过小海豚故事引入回文概念,体会数学之美
- 通过手动翻转数字,理解算法的每一步
- 通过函数封装,体会模块化编程思想
- 通过代码填空,建立算法与代码的对应关系
情感态度与价值观
- 感受回文的对称美和趣味性
- 培养逻辑思维和问题分解能力
- 在故事和游戏中激发对编程的兴趣
📊4C1E 整体设计
| 环节 | 核心活动 | 学生任务 |
|---|---|---|
| 联系 | 小海豚故事导入 → 回文现象展示(数字/文字/诗句)→ 回文数概念 | 进入情境,识别回文数 |
| 建构 | 循环复习 → 数字翻转原理 → 回文数判断逻辑 → 回文数查找机代码填空 | 掌握翻转算法,完成代码填空 |
| 反思 | 回文数性质讨论 → 代码优化思考 → 常见错误总结 → 代码互评 | 深度思考,互相学习 |
| 延续 | 分层作业布置 → 回文趣味拓展(回文诗/回文对联)→ 下节课预告 | 课后巩固,拓展视野 |
| 评价 | 课堂小测(5选择+3判断)→ 学习反馈 → 知识点回顾 | 检测学习效果 |
🔗C1 联系 Connection(25分钟)
1. 故事导入:小海豚的海底探险(8分钟)
讲述故事:在遥远的海洋世界里,住着一只名叫小航的小海豚。小航聪明活泼,对周围的一切充满好奇。有一天,小航在海底游玩时,无意间发现了一块古老的石板,上面刻满了奇异的符号和文字。
小航好奇地打量着这些文字,突然发现了一种奇妙的现象:这些文字无论从前往后读,还是从后往前读,都是完全一样的!小航惊喜地跳了起来,它意识到自己发现了一种了不起的秘密——这就是"回文"!
2. 回文现象大发现(10分钟)
展示生活中有趣的回文现象:
- 回文数字:121、1331、12321、1001、1111
- 回文文字:"上海自来水来自海上"、"山西运煤车煤运西山"
- 回文诗句:"客上天然居,居然天上客"
- 回文英语:level、deed、racecar、madam
互动游戏:回文数接龙——老师说一个数,学生判断是不是回文数,是就拍手,不是就摇头。
3. 回文数概念明确(7分钟)
举例:121(正读121,反读121)✓;123(正读123,反读321)✗
特点:第一位和最后一位相同,第二位和倒数第二位相同,以此类推。
🏗️C2 建构 Construction(45分钟)
1. 循环与变量复习(5分钟)
- for循环:for(初始化; 条件; 增量) { 循环体 }
- while循环:while(条件) { 循环体 }
- 变量的作用:存储数据,在循环中不断更新
- 计数器变量:初始化为0,每满足一次条件就+1
2. 数字翻转原理(12分钟)
要判断一个数是不是回文数,最常用的方法是:把这个数翻转过来,然后和原数比较,如果相等就是回文数。
翻转算法核心步骤:
- 用 sum 变量存储翻转结果,初始值为 0
- 用 n % 10 获取 n 的最后一位数字
- sum = sum * 10 + 最后一位(把之前的数字左移一位,加上新数字)
- n = n / 10(去掉 n 的最后一位)
- 重复步骤2-4,直到 n 变为 0
示例:翻转 123
3. 回文数判断逻辑(8分钟)
在for循环中,对每个数i进行翻转,然后和原数比较,如果相等就是回文数:
4. 回文数查找机代码填空(20分钟)
场景:小航想知道某个范围内有多少个回文数,编写一个"回文数查找机",输入范围a到b,输出所有回文数并统计个数。
填空答案:①0 ②<= ③0 ④> ⑤10 ⑥% ⑦/ ⑧==
运行示例:输入 1 100 → 输出 1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88,99 → 共有18个回文数
🤔C3 反思 Contemplation(20分钟)
1. 回文数的性质讨论(6分钟)
- 一位数(1-9)都是回文数吗?(是,因为正读反读都一样)
- 两位数的回文数有什么特点?(十位和个位相同:11,22,...,99)
- 三位数的回文数有什么特点?(百位和个位相同,十位任意:121,131,...)
- 回文数乘以2还是回文数吗?(不一定,如11×2=22是,121×2=242是,但111×2=222是,1001×2=2002是... 实际上大部分不是,如13×2=26不是)
2. 代码优化思考(5分钟)
- 翻转整个数字后比较,有没有更高效的方法?(可以只翻转一半,然后比较前半和后半)
- 负数是不是回文数?(不是,因为负号的存在,如-121反读是121-)
- 末尾是0的数(除了0本身)能是回文数吗?(不能,因为第一位不能是0)
3. 常见错误总结(5分钟)
① 忘记保存原数m,循环结束后n变成0,比较结果错误
② sum初始值不是0(如设成1,会导致翻转结果多1)
③ 翻转公式写错(sum=sum+n%10,忘记*10,导致数字不左移)
④ while循环条件写错(如n>=0,会导致死循环或多执行一次)
⑤ for循环条件忘记等号(如i ⑥ 计数器cnt忘记初始化为0
4. 代码互评(4分钟)
随机展示2份学生代码(匿名),引导全班从正确性、可读性、注释三个维度点评,特别关注共性错误。
🚀C4 延续 Continuance(15分钟)
1. 分层课后任务
| 层次 | 任务内容 | 目标 |
|---|---|---|
| 基础题 | ①判断5个数字是否是回文数(1111, 1001, 1212, 1941, 2024);②完成课堂代码填空,输入1-100运行截图提交 | 巩固核心概念和代码 |
| 提高题 | 修改代码,统计1-1000中回文数的个数,并找出最大的回文数 | 灵活运用循环和计数 |
| 挑战题 | 编写程序,找出所有三位数中,既是回文数又是偶数的数 | 综合运用条件判断 |
2. 回文趣味拓展
- 回文诗:苏轼《题金山寺》——"潮随暗浪雪山倾,远浦渔舟钓月明。桥对寺门松径小,槛当泉眼石波清。迢迢绿树江天晓,霭霭红霞海日晴。遥望四边云接水,碧峰千点数鸥轻。" 反读也是一首诗!
- 回文对联:"客上天然居,居然天上客"——乾隆出上联,纪晓岚对下联
- 回文日期:2020年2月2日(20200202)是一个回文日期!下一个回文日期是2021年12月2日(20211202)
- 回文质数:既是质数又是回文数的数,如2,3,5,7,11,101,131,151...
3. 下节课预告
下节课我们将继续探索C++的更多奥秘,敬请期待!
📝E 评价 Evaluation(15分钟)
1. 课堂小测(10分钟)
5道难度递增的选择题 + 3道判断题,限时完成。题目覆盖:回文数概念、数字翻转算法、函数返回值、循环条件。
2. 学习反馈(3分钟)
请学生用一句话总结今天学到的最重要的知识,或提出一个还没弄懂的问题。
3. 知识点回顾(2分钟)
🧠本节课知识点体系总览
本节课共涵盖 3大模块、12个核心知识点,其中 重点 标注的为必须掌握的核心内容。
1. 回文的定义 重点
回文是指从前往后读和从后往前读完全一样的文字、数字或符号。回文体现了对称美。
2. 回文数的定义 重点
一个正整数,如果从左向右读和从右向左读都是一样的,就是回文数。
3. 回文数的特点
第一位和最后一位相同,第二位和倒数第二位相同,以此类推。一位数都是回文数。
4. 生活中的回文现象
回文数字、回文文字、回文诗句、回文英语单词、回文日期(如20200202)。
5. 取余运算 % 重点
n % 10 得到 n 除以10的余数,也就是 n 的最后一位数字。
6. 整除运算 /
n / 10 得到 n 除以10的商(整数部分),也就是去掉 n 的最后一位。
7. 数字翻转核心公式 重点
sum = sum * 10 + n % 10。sum*10让之前的数字左移一位,n%10获取新的最后一位,加在一起完成翻转。
8. while循环实现翻转
while(n > 0) { sum=sum*10+n%10; n=n/10; } 当n变为0时,所有位都已翻转完毕。
9. for循环遍历范围
for(int i=a; i<=b; i++) 遍历范围内每个数,对每个数进行回文数判断。注意条件是i<=b(包含b)。
10. 计数器变量
cnt变量初始化为0,每发现一个回文数就cnt++,循环结束后cnt就是回文数的总个数。
11. 回文数判断逻辑 重点
对每个数i,先用n=i复制一份用于翻转,sum=0存储翻转结果,m=i保存原数。while循环翻转n,最后if(sum==m)判断是否是回文数。
12. 变量跟踪与调试
在循环中用变量跟踪表记录每一步n、sum、m的值变化,帮助理解翻转过程和排查错误。
🎯 本节课5大重点知识
① 回文数的定义(正反读完全一样的数)
② 取余运算%(n%10获取最后一位)
③ 数字翻转核心公式(sum=sum*10+n%10, n/=10)
④ 回文数判断逻辑(翻转后与原数比较,保存原数m)
⑤ for循环遍历查找(遍历范围,逐个判断,计数输出)
📝完整代码参考(回文数查找机)
变量跟踪表(以判断121为例)
| 循环次数 | n(当前数) | n%10(最后一位) | sum(翻转结果) |
|---|---|---|---|
| 初始 | 121 | - | 0 |
| 第1次 | 12 | 1 | 0*10+1=1 |
| 第2次 | 1 | 2 | 1*10+2=12 |
| 第3次 | 0 | 1 | 12*10+1=121 |
| 结束 | 0 | - | 121(与原数m=121相等,是回文数✓) |
💡可拓展授课知识点与思路
拓展A:回文的历史与文化
回文在古今中外都有悠久的历史。中国古代有回文诗、回文词、回文对联;西方有回文句(如"A man, a plan, a canal: Panama")。可以给学生展示有趣的回文作品,感受语言的对称美。
拓展B:只翻转一半的优化方法
判断回文数不一定要翻转整个数字,可以只翻转后半部分,然后和前半部分比较。例如12321,翻转后半部分321得到123,然后和前半部分12比较(注意奇数位要去掉中间位)。这种方法更高效,但逻辑稍复杂,适合学有余力的学生。
拓展C:字符串方法判断回文数
除了数字翻转,还可以把数字转成字符串,然后比较第i位和倒数第i位是否相同。这种方法更直观,但需要字符串知识。可以作为拓展,让学生了解解决同一个问题可以有多种方法。
拓展D:回文质数
既是质数又是回文数的数叫回文质数,如2,3,5,7,11,101,131,151,181,191,313... 可以让学生编写程序找出1000以内的所有回文质数,综合运用质数判断和回文判断。
拓展E:回文日期
有些日期写成8位数是回文数,如2020年2月2日(20200202)、2021年12月2日(20211202)。可以让学生编写程序,找出2000-2100年间所有的回文日期,综合运用日期判断和回文判断。
拓展F:故意写bug让学生debug
可以故意写一段有bug的代码(如忘记保存原数m,导致所有数都判断为非回文数;或sum初始值设为1,导致翻转结果多1),让学生运行后发现结果不对,然后通过变量跟踪表找出问题所在,培养排错能力。
拓展G:函数的模块化思想
通过huiwen函数的封装,引导学生理解模块化编程的好处:①代码可以重复使用 ②主函数更简洁 ③修改功能只需要改函数内部 ④多人协作时可以分工写不同函数。这是编程思维的重要提升。
📐板书设计
例:121 ✓ 123 ✗ 1001 ✓
while(n > 0) {
sum = sum * 10 + n % 10; // 左移+加新位
n = n / 10; // 去最后一位
}
翻转结果 sum,与原数 m 比较
n=i, sum=0, m=i
while(n>0) { 翻转n }
if(sum==m) { 输出i; cnt++; }
}
⚠️教学注意事项与常见问题
时间把控
建构环节的代码填空可能超时,需提前准备好代码框架投影,减少学生输入负担;手动翻转练习控制在2-3题,不宜过多。
概念难度
数字翻转是核心难点,一定要花足够时间讲透,不能急于进入代码。可以用"剥洋葱"的比喻——每次取最后一位(剥一层),然后把剥下来的数字重新拼起来(翻转)。
代码填空设计
填空点控制在8个(GESP2级难度),重点填关键算法步骤(sum初始值、循环条件、翻转公式、返回值、for循环条件),语法细节预先写好。
易错点强调
必须反复强调"保存原数m"——这是学生最容易犯的错误。可以用对比演示:不保存m时,循环结束后n=0,sum==n永远不成立,所有数都判断为非回文数。
硬件准备
确保每台电脑都有C++编译环境,课前测试运行无误;代码填空练习纸提前打印。
差异化教学
对于理解较慢的学生,可以提供"半完成代码",只需要填3-4个空;对于学有余力的学生,布置回文质数、回文日期等拓展任务。
📊评价标准
| 评价维度 | 优秀(A) | 良好(B) | 需努力(C) |
|---|---|---|---|
| 回文数概念 | 能准确说出定义,快速判断任意数是否是回文数 | 能说出基本定义,判断基本正确 | 对回文数概念模糊,判断经常出错 |
| 数字翻转 | 能手算翻转任意数,理解每步sum和n的变化 | 能在提示下完成翻转,偶有计算错误 | 翻转过程不理解,需要大量帮助 |
| 代码实现 | 独立完成所有8个填空,代码运行正确,理解函数封装思想 | 能完成大部分填空,少量错误需提示 | 填空困难,需要大量帮助 |
| 课堂参与 | 积极参与回文游戏、代码互评,主动提问 | 能参与课堂活动,偶尔主动发言 | 参与度低,需要老师提醒 |
🔄教学反思(课后填写)
1. 学生对哪个环节最感兴趣?哪个环节最吃力?
(课后记录:小海豚故事/回文游戏/数字翻转/代码填空...)
2. 数字翻转算法学生理解了吗?"保存原数m"这个易错点强调是否到位?
(课后记录:...)
3. 时间分配是否合理?哪个环节需要调整?
(课后记录:...)
4. 下节课需要复习或补充什么内容?
(课后记录:...)