引入
韩信,中国历史上杰出军事家,与萧何、张良并列为汉初三杰。有一句众所皆知的话,叫做“韩信点兵,多多益善”,说的是韩信很会打仗,用兵如神。

“韩信点兵” 这个故事包含一个非常著名的数学问题。“韩信点兵”在数学上又被称作中国利余定理或是孙子定理。那么韩信点兵有什么特别之处呢?又是如何快速点出人数的呢?
韩信带兵1500人去打仗,战死四五百人。战后清点人数时,韩信命令士兵每3人站一排,多出2人;每5人站一排,多出3人;每7人站一排,多出2人。韩信由此马上算出了部队人数。请你也算一算,这支部队在战后还有多少人?
学习目标
[编程实现]:使用Scratch编程来计算韩信的部队人数。
[知识与技能]:
- 熟练使用变量,包括创建变量、变量赋值
- 列表写入数据、读取数据的技能
- 认识运算分类积木中的取余运算积木
[过程与方法]:通过小组讨论交流合作,培养解决问题能力
[情感与价值观]:培养对信息技术的兴趣,培养想象力,逻辑思维能力
分析过程
通过题目的描述,这里涉及到余数的概念,那么什么是余数呢?
我们先来看一个大家熟悉的场景–教室排座位,如图:

规定每一排坐两个人,如果班级人数是偶数(双数),那么学生刚好成对坐在一起,如果班级人数是(奇数)单数,那么就会有一个同学落单了。
我们使用数学语言来描述一下,如果班级人数是偶数,能被2整除,余数为0,刚好成对。如果班级人数是奇数,不能被2整除,余数为1,就必定有一个同学落单了。
所谓,余数指整数除法中被除数未被除尽部分,如果余数为0,说明刚好能整除。我们再来看一个生活中的场景:

在大部分语言中,用“%”来表示取余运算。a% b表示a除以b所得的余数,也叫做a对b取余;比如,100 % 3结果为1, 14 % 3结果为2,在Scratch编程中,专门提供了一个取余运算指令,如图:

在我们的韩信点兵问题中,如果士兵每3人站一排,多出2人,每5人站一排,多出3人,每7人站一排,多出2人,这都是求余数运算。根据这3个条件还是不能直接计算出总人数,不过我们可以使用枚举法,战前是1500人,战死四五百人,那么战后的人数在1000~1100之间,因此,我们完全可以从1000开始,挨个的进行计算,直到1100为止,看有没有满足条件的数字。
我们将整个过程使用流程图表示如下:

程序设计
1.建立变量和列表
分别建立变量“人数”和列表“解”,如图:

2.初始化变量和列表
根据前面的分析,我们从1000开始枚举,所以需要把变量“人数”的初始值设为1000,而列表需要清空,编写代码如下:

3.使用循环实现枚举
根据前面的分析,人数在1000到1100之间,这可以借助循环来进行枚举,如图所示:

4.筛选值
如果同时满足被3除余2、被5除余3、被7除余2这三个条件,就将整个数字放到列表中,对应的代码如下:
![图片[9]-韩信点兵_Scratch优秀教学案例设计第1篇-51scratch](https://www.51scratch.com/wp-content/uploads/2021/10/image-93-1024x168.png)
完整的代码如下:

执行代码,结果如下所示:

从执行结果可以看出,韩信的部队人数是1073。
课堂反思
让学生编程程序,并填写程序测试单,如图所示:
![图片[12]-韩信点兵_Scratch优秀教学案例设计第1篇-51scratch](https://www.51scratch.com/wp-content/uploads/2021/10/image-96-1024x222.png)
提问,让学生进行小组讨论,然后回答问题:
- 第1个问题:什么是枚举法?
- 第2个问题:什么是余数?
- 第3个问题:描述下韩信是怎么计算士兵数量的?
延续拓展
请设计一个程序,让用户在键盘上输入今天的星期数和今后的天数,就可以计算出那一天的星期数。

[提示]:让我们先来想一想,假设今天是星期天,我们怎么推算一天后,两天后……六天后是星期几?
课后练习
舞蹈队有24个同学跳孔雀舞。

- 如果排成5行,平均每行几个同学,还余几个?
- 如果排成7行,平均每行几个同学,还余几个?
- 你能设计出几个排队方案,把同学正好排完(没有余数) ?
暂无评论内容