Scratch与数学的整合27
2023-08-17 07:01:16 来源: 哔哩哔哩
第27课 二进制(一)
一、课程导入
1、我们都知道,Scratch里运算仅支持十进制运算,可它又属于计算机程序,计算机仅支持二进制运算。那么问题来了:要在Scratch里实现二进制运算该怎么办呢?
(相关资料图)
· 2、在此之前,我们还是先了解一下十进制、二进制的规则以及区别和联系,然后再探索一下如何对这两种数值进行相互转换。
二、知识储备
1、十进制逢十进一,即0,1,2,3,……,9;二进制只有0,1。
2、按权展开:按权展开式一种解题方法和形式,指数字按照位权展开相乘,结果转换为十进制就是其真实值。
3、对于十进制转二进制而言,算法要分类讨论:原数为整数时采用短除法;原数为小数时,小数部分按照十进制乘法的算法转换,整数部分还是采用短除法。
4、二进制数只能是整数或小数。
三、探究新知
1、145(2)= (10)。
分析:145里面有1个百、4个十、1个5,那么145的十进制用按权展开式表达就是1×10²+4×10+5×1,其中10²,10,1就是“权”,因此对应的,145的二进制用按权展开式表达就是1×2²+4×2+5×2**0。二进制转换成十进制只需算出二进制的按权展开式即可。1×2²+4×2+5×2**0=17。故填17。
2、32(10)= (2)。
分析:我们采用短除法将原数不断除以2并得到指定的余数,一直除到商为0为止,最后将每个余数倒序排起来。
除法 余数
32÷2=16 0
16÷2=8 0
8÷2=4 0
4÷2=2 0
2÷2=1 0
1÷2=0 1
因此32(10)=100000(2),故100000。
3、(10)= (2)。
分析:解决该问题的第一步就是要把它分成零点几加几的形式,=25+,由于一个数加零点几只需将整数位、小数点、小数位各自直接落下来就可以了,因此其中的25采用短除法,不断乘以2.直到乘积为整数为止。
25÷2=12……1,12÷2=6,5÷2=3,3÷2=1……1,1÷2=0……1。
乘法 整数位
×2= 0
×2= 1
×2= 1
×2= 0
…… ……
整数部分与小数部分连起来为……故填……
四、流程图
1、首先看二进制转十进制的流程图:开始时输入原数,然后分别建立按权展开式的权,程序求得或得知权的结果后,再接下来用每位的权分别对应乘以原数的每一位,再接下来把上一步4组变量值相加后得到转换后的数就可以了。
2、接下来再看看整数的十进制转二进制的流程图:开始时仍然输入原数。然后开始除2取余,下一步判断该式的商是否≠0,如果判断为“是”则将换为原数÷2直接得到转换后的数,否则再接下来回到除2取余那步重复执行,直到判断为“否”时倒序排列余数并作为转换后的数。
3、最后看看小数的十进制转二进制的流程图,首先询问并回答十进制的小数部分并判断回答是否=0,若“是”则下一步执行“二进制数=0”,否则再判断回答是否=5,若“是”则下一步执行“二进制数=5”,否则再下一步执行乘2取整,并判断结果是否包含循环节,若“否”则重复执行乘2取整并对其结果判断到“真”再将变量“二进制的小数部分(不含循环节)”设为整数顺序排列的值。然后要知道十进制数的整数部分并判断十进制的小数部分是否=0,若“是”则接下来执行“新数=十进制的整数部分”,否则判断十进制的小数部分是否等于5,最后根据情况作答。
五、变量信息
1、编二进制转十进制用到的变量:a,b,c,d,千位的权,结果的千位、百位的权、结果的百位、十位的权、结果的十位、个位的权、结果的个位、转换后的值、转换前的值
2、编整数的十进制转二进制用到的变量:十进制数、二进制数
3、编小数的十进制转二进制用到的变量:十进制的小数部分、二进制数、二进制数的小数部分(不含循环节)、新数
六、代码示例
先来看看二进制转十进制怎么编写代码:
当绿旗被点击
我们设十进制数为abcd(2),那么二进制按权展开式就是a×2³+b×2²+c×2+d**0,于是询问并回答a,b,c,d的值并代入按权展开式,进而求得改为十进制数的真实值。
询问请输入a的值
将a设为回答
将千位的权设为1
重复执行3次
将千位的权增加:千位的权×1
等待1秒
将千位的权设为:a×千位的权
∵要询问并回答多个变量,∴需要每回答完一个结果都要等待1秒。
等待1秒
询问请输入b的值
将b设为回答
将百位的权设为1
重复执行3次
将百位的权增加:百位的权×1
等待1秒
将百位的权设为:b×百位的权
2的1次方等于它指数本身,因此求结果的十位不用重复执行。
等待1秒
询问请输入c的值
将c设为回答
将十位的权设为2
将结果的十位设为:c×十位的权
2**0就不能直接用运算模块求值了,∵它的原意显然是0个2相乘,不过重复0次怎么执行啊?2**0=1,只能照抄这个结果。
等待1秒
询问请输入d的值
将d设为回答
将个位的权设为2
将结果的个位设为:d×个位的权
等待1秒
将转换后的值设为:结果的个位+结果的十位+结果的百位+结果的千位
将转换前的值设为:连接a连接b连接c连接d
说:“连接(4个连接)(和转换前的值和)2=(和转换后的值和)10”
再来看看整数的十进制转二进制怎么编写代码:
当绿旗被点击 (0)
(1)——(4):根据整数十进制转二进制的方法可知,是对原数不断除以2,虽然原数(10)=新数(2)是同一个等式内两个变量,但由于进位制规则不同,∴为了避免矛盾,我们必须设二进制数为“空”。它的过程是一个整体,∴要用到重复执行。
重复执行1次 (1)
询问请输入十进制数 (2)
将十进制数设为回答 (3)
将二进制数设为 (4)
(5)——(7):接下来就可以改成二进制数了。∵涉及到余数,而系统内步遇到余数时会用小数代替,这样就“不合法”了,而向下取整只取该数的整数部分,∴要用向下取整模块作出有必要的调整。
重复执行到十进制数<2 (5)
将二进制数设为连接十进制数÷2的余数和二进制数 (6)
将十进制数设为:十进制数÷2向下取整 (7)
(8)——(10):当“重复执行到”模块满足判断条件,即余数为0时商对应为1就要执行下面的程序。把余数看成一个整体和1连接起来就是最后的结果。
如果十进制数=1那么 (8)
将二进制数设为连接1和二进制数 (9)
说:“连接(4个连接)(和回答和)10=(和二进制数和)2” (10)
最后看看小数的十进制转二进制怎么编写代码:
七、课后思考
请用Scratch编写下列程序:(1)已知10c0(2)=10(10),求c的值。(2)把零点几的十进制改编成八进制。
标签:
[责任编辑:]
猜你喜欢
- (2023-08-17)Scratch与数学的整合27
- (2023-08-17)恒星“核燃烧阶段”3D模拟首次完成
- (2023-08-17)大象帮丨乐园里的“烦薪事” 大象帮记者线上助力要回工资
- (2023-08-17)四川工匠故事②丨炼钢工江勇:22年如一日,把自己炼成一块好钢
- (2023-08-17)干群一心 抢通水毁路
- (2023-08-17)一封来自“2023世界人工智能大会”的感谢信 | 盖世汽车
- (2023-08-17)小红书被骂上热搜:被用户质疑偷原画师作品喂自家AI模型