为了最大限度地提高学习效果,本文由“练习分析和回答编程原理”组成,“编程原理”部分详细介绍了“习题”中使用的编程原理。
请务必亲自尝试解开习题。习题一
捕手暗号
在棒球运动中,投手向捕手掷球之前,都会事先约定好捕手的手势,以确定应当怎样投出“好球”。假设投手可以投出快速球、曲线球、变速球、滑球这4 种球,那么捕手为了传达暗号至少需要用到两根手指。
如果投手认真练习投球,能投出8 种不同类型的球路,那么捕手为了传达暗号,至少需要使用多少根手指?
分析与解答
用一根手指总共可以表达两种约定:弯曲手指和伸展手指。
如果添加一根手指,即使用两根手指,可以有下列4 种不同的表达方式。因此,使用两根手指可以表达的约定数是使用一根手指时的2 倍。
也就是说,增加一根手指,可表达的约定数会增加1 倍。从而得出,可以用一根手指表达两种约定,用两根手指表达4 种约定,用3 根手指表达8 种约定。
因此,当投手可以掷出8 种不同的投球时,捕手为了传达暗号至少需要使用3 根手指。
习题二
求糖果数量
糖果厂按以下规则包装糖果。
规则:
1.将16块糖果合并在一起,包装成“小份”。
2.将16份“小份”糖果合并包装成“中份”。
3.将16份“中份”糖果合并包装成“大份”。
在保管糖果的仓库中,人们按照“大份数量-中份数量-小份数量-散装”的顺序进行记录和管理。下面的数字和字母代表的意思是,大份的数量是5 份,中份的数量是D(=13)份,小份的数量是0 份,散装的数量是2 块。
5-D-0-2
如果仓库里写有A-0-3-F,那么总共保管了多少块糖果?
A-0-3-F
分析与解答
以份为单位,每份糖果的数量分别为1、16、256、4096 块。每上升一个单位,总量就会以16 为倍数增长。
仓库里写有A-0-3-F 的数字表示,大份的数量是A(=10)份,中份的数量是0 份,小份的数量是3 份,散装的数量是F(=15)块。从而得出,糖果的数量为(10×4096)+(0×256)+(3×16)+(15×1)=41 023 块。
需要注意的是,A03F 是以十六进制表示的数字,将其转换成十进制数的公式如下。
A×16³+3×16+F
最终得出糖果数量为41 023 块。
不明白A为什么等于10?请看编程原理中的解释。
编程原理
计算机中使用的二进制数
进制是一种计数体系,定义了可以使用的数字个数和位值。可以使用的数字个数与相应进制的数字相同,从0 开始,一直到比相应进制小1 的数字。因此,十进制中可以使用的数字有0、1、2、3、4、5、6、7、8、9,而二进制中的数只用0 和1 表示。
在十六进制等大于十进制的计数条件下,除了数字0~9 之外,还需要更多数字,此时通常使用A、B、C、D、E、F。在十六进制中,A 代表十进制数的10,B 代表十进制数的11,C 代表十进制数的12,D 代表十进制数的13,E 代表十进制数的14,F 代表十进制数的15。
让我们来看看计算机存储数据的过程。计算机中,存储数据的最小单位是“位”(bit,binarydigit),表示二进制。“1 位”能够表示0 和1 共两条信息,“2 位”能够表示4 条:00、01、10、11,“3 位”能够表示8 条信息。以此类推,n 位能够表示2n 条信息。
除了数字之外,字母以及汉字都是以二进制式存储的。按照国际标准制定的统一码编码,使用16 位表示一个字符。以汉字“施”为例,其二进制代码被定义为110010110111101。为了简短地表示,将二进制转换为十六进制,即65BD。
通过在文档编辑软件的“插入字符表” 对话框中单击“Unicode ( 十六进制)” 选项卡,并选择任意字符,可以在界面正下方查看“统一码(U)”的数值。
屏幕上显示的颜色也可以利用二进制表示。使用24 位表示颜色,当用二进制表示时,则黑色为000000000000000000000000,白色为111111111111111111111111。当以十六进制表示时,黑色为000000,白色为FFFFFF(人们也使用32 位表示透明度)。
下页图是在中文界面下操作的,使用十六进制指定文字颜色时,可以通过【颜色】对话框的【HTML(T)】查看代码值。
因此,计算机中使用二进制(或者十六进制)存储或表示数据。下表显示了十进制、二进制、八进制和十六进制数之间的关系。
习题三
分组游戏
假设有26 名学生,根据以下规则进行分组。
规则
1.一旦分组成功,彼此不能离开。
2.分组的人数每次增加一倍。
3.如果分组不成功,则坐在原位。
一开始每两人结伴分组,未能分组成功的学生原地不动。共分组成功13 组,没有分组不成功的学生。
根据第二条规则,在下一阶段,每4 个人结伴分组,未能分组成功的学生原地不动。共分组成功6 组,未能分组成功的剩下两名学生构成一组,坐在原位。
以这种方法进行,直到所有学生都被分组。猜猜看,下表所示的学生人数分别可以成功分为多少组?
分析与解答
游戏过程如下所示。
- 总共有26 名学生,将每两名学生分在一起,共构成13 个小组,没有淘汰者。
2.如果将每4 名学生分在一起,就形成6 个小组,多出的两名构成一组,分组不成功而被淘汰出局,就在原位落座。
3. 对于未被淘汰的24 名学生,如果将每8 名学生分在一起,就形成3 个小组,没有被淘汰的组。
4. 如果将每16 名学生分在一起,就形成1 个小组,其余8 名学生构成的小组不能分组成功,从而被淘汰出局,在原位落座。因为所有学生都被分组,所以分组结束。
最终得出的结果是,16 名学生构成一个小组,8 名学生构成一个小组,4 名学生构成的小组数是0 个,2 名学生构成的小组数是1 个,没有落单的学生。如下表所示。
由此可知,随着每一步的进行,分组的人数为2 名、4 名、8 名、16 名,以2 倍递增。利用这个原理可以计算出正确答案。每个阶段中分组的数量除以2 的商数是形成的组数,余数就成为被淘汰的组数。
最终结果如下图所示,26 除以2 后,余数反向排序得出11010,这就是正确答案。
习题四
求自行车大盘转动圈数
自行车通过齿轮和链条将人踩脚蹬的动力传递到后轮。大盘齿数和飞轮齿数不同,那么大盘转动圈数和飞轮转动圈数也不同。
假设大盘齿数是16 个,飞轮齿数是8 个,那么踩脚蹬转两圈时,后轮转动多少圈?如果大盘转动3 圈11 格,那么飞轮转动多少圈多少格?
分析与解答
首先解决第一个问题。
脚蹬每转动一圈,大盘就转动16 格,那么脚蹬每转动两圈,大盘就转动32 格。由于大盘转动32 格,那么飞轮也同样会转动32 格。
由于飞轮每转动8 格就会转动一圈,所以飞轮每转动32 格时,后轮就转动4 圈。
在第二个问题中,由于大盘转动3 圈11 格,因此飞轮就会转动59(3×16 + 11)格。又因为飞轮转动59 格,因此最终结论是,飞轮转动7 圈3 格。
编程原理
进制转换
在计算机内部,文本、图像、音频和视频等所有信息以二进制数表示,统一码编码、RGB 颜色值等以十六进制表示。因此,我们接触编程时,有必要了解进制转换的基本概念。
将二进制、十六进制转换为十进制
首先,将二进制或十六进制转换为十进制。
计数系统中有一个重要的概念是位值。所有数的每一位数字都有一个位值。对于每个数字的位值,相应位置上的数字的幂次都可以应用相应的进制来计算,每一个位置值代表的幂次最右边是0,向左移动一位就递增1。
例如,二进制数1011 经过以下步骤得到十进制数11。
又如,十六进制数AB1 经过以下步骤得到十进制数2737。
将十进制转换为二进制或十六进制
接下来,将十进制转换为二进制或者十六进制。
为了将十进制数转换为其他进制的数,可以将十进制数连续除以要转换的进制基数,直至商为0,然后按反向排序其余数,就可以得到转换后的值。
例如,要将十进制数37 转换为二进制数,可以将37 连续除以2,直至商为0,然后反向排序其余数,就可以得到转换后的值。也就是说,将十进制数37 转换为二进制数,得到值为100101。如下所示。
将十进制数283 转换成十六进制数的过程如下:由于十进制数11以十六进制数B 表示,所以十进制数283 就用十六进制数11B 表示。
怎么样?这样的学习方法让你意犹未尽?那就跟着下面这本书一起接着学吧!书中一共有65道习题哦~~
软件教育的目的在于培养孩子的创造性思维和解题能力,计算思考力的提高则是其实现的途径,而这一系列过程的核心就是书中通过65道习题体现的“编程原理”。
亲自动手动脑解题之后,不仅可以理解与题目有关的编程知识,还可以利用Scratch或App Inventor实际应用所学内容。
1.《023怎么转化为十进制看这里!被圈粉,这样的编程基础知识也太好学了吧!从零开始学编程少年版》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《023怎么转化为十进制看这里!被圈粉,这样的编程基础知识也太好学了吧!从零开始学编程少年版》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2207096.html