算法案例学习

来源 :高中生学习·高二理综版 | 被引量 : 0次 | 上传用户:ufo747
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  日常生活中,我们最熟悉、最常用的是十进制,据说这与古人曾以手指计数有关,爱好天文学的古人也曾经采用七进制、十二进制、六十进制,至今我们仍然使用一周七天、一年十二个月、一小时六十分的历法.今天我们来学习一下进位制.
  【探究】
  1. 你都了解哪些进位制?
  2. 举出常见的进位制.
  3. 思考非十进制数转换为十进制数的转化方法.
  4. 思考十进制数转换成非十进制数及非十进制之间的转换方法.
  【结论】
  1. 进位制是人们为了计数和运算方便而约定的计数系统,约定满二进一,就是二进制;满十进一,就是十进制;满十二进一,就是十二进制;满六十进一,就是六十进制等等.也就是说:“满几进一”就是几进制,几进制的基数(都是大于1的整数)就是几.
  2. 在日常生活中,我们最熟悉、最常用的是十进制,至今我们仍然使用一周七天、一年十二个月、一小时六十分的历法.
  3. 十进制使用0~9十个数字.计数时,几个数字排成一行,从右起,第一位是个位,个位上的数字是几,就表示几个一;第二位是十位,十位上的数字是几,就表示几个十;接着依次是百位、千位、万位……
  例如:十进制数4528中的4表示4个千,5表示5个百,2表示2个十,8表示8个一. 于是,我们得到下面的式子:
  与十进制类似,其他的进位制也可以按照位置原则计数.由于每一种进位制的基数不同,所用的数字个数也不同.如二进制用0和1两个数字,七进制用0~6七个数字.
  一般地,若[k]是一个大于1的整数,那么以[k]为基数的[k]进制数可以表示为一串数字连写在一起的形式.
  其他进位制的数也可以表示成不同位上数字与基数的幂的乘积之和的形式,如:
  非十进制数转换为十进制数比较简单,只要计算下面的式子值即可:
  第一步:从左到右依次取出[k]进制数各位上的数字,乘以相应的[k]的幂,[k]的幂从[n]开始取值,每次递减1,递减到0,即;
  第二步:把所得到的乘积加起来,所得的结果就是相应的十进制数.
  4. 关于进位制的转换,教科书上以十进制和二进制之间的转换为例讲解,并推广到十进制和其他进制之间的转换.这样做的原因是,计算机是以二进制的形式进行存储和计算数据的,而一般我们传输给计算机的数据是十进制数据,因此计算机必须先将十进制数转换为二进制数,再处理,显然运算后首次得到的结果为二进制数,同时计算机又把运算结果由二进制数转换成十进制数输出.
  (1)十进制数转换成非十进制数
  把十进制数转换为二进制数,教科书上提供了“除2取余法”,我们可以类比得到十进制数转换成[k]进制数的算法“除[k]取余法”.
  (2)非十进制之间的转换
  一个自然的想法是利用十进制作为桥梁. 教科书上提供了一个二进制数据与16进制数据之间的互化的方法,也就是先由二进制数转化为十进制数,再由十进制数转化成为16进制数.
  【应用示例】
  例1 将8进制数[314706(8)]化为十进制数.
  点拨 利用把[k]进制数转化为十进制数的一般方法就可以把8进制数[314706(8)]化为十进制数.
  变式 设计一个算法,把[k]进制数[a](共有[n]位)化为十进制数[b].
  分析 从例1的计算过程可以看出,计算[k]进制数[a]的右数第[i]位数字[ai]与[ki-1]的乘积[ai?ki-1],再将其累加,这是一个重复操作的步骤.所以,可以用循环结构来构造算法.
  算法步骤如下:
  第一步,输入[a],[k]和[n]的值.
  第二步,将[b]的值初始化为0,[i]的值初始化为1.
  第四步,判断[i>n]是否成立.若是,则执行第五步;否则,返回第三步.
  第五步,输出[b]的值.
  解 程序框图如下图:
  [开始] [输出[b]] [ 结束 ] [是][否] [输入[a,k,n]] [把[a]的右数第[i]位数字赋给[t]]
  [INPUT “a,k,n=”; a,k,n
  b=0
  i=1
  t=a MOD 10
  DO
  b=b+t*k^(i-1)
  a=a\10
  t=a MOD 10
  i=i+1
  LOOP UNTIL i>n
  PRINT b
  END]
  例2 把89化为二进制数.
  解析 根据二进制数“满二进一”的原则,可以用2连续去除89或所得商,然后取余数.具体计算如下:
  因为89=2×44+1,
  44=2×22+0,
  22=2×11+0,
  11=2×5+1,
  5=2×2+1,
  2=2×1+0,
  1=2×0+1,
  这种算法叫做除2取余法,还可以用下面的除法算式表示:
  将上式中各步所得的余数从下到上排列,得到89=1011001(2).
  上述方法也可以推广为把十进制数化为[k]进制数的算法,称为除[k]取余法.
  变式 设计一个程序,实现“除[k]取余法”.
  分析 从例2的计算过程可以看出如下的规律:
  若十制数[a]除以[k]所得商是[q0],余数是[r0],即[a=k?q0+r0],则[r0]是[a]的[k]进制数的右数第1位数.
  若[q0]除以[k]所得的商是[q1],余数是[r1],即[q0=k?q1+r1],则[r1]是[a]的[k]进制数的右数第2位数.
  …
  若[qn-1]除以[k]所得的商是0,余数是[rn],即[qn-1=rn],则[rn]是[a]的[k]进制数的左数第1位数.
  这样,我们可以得到算法步骤如下:
  第一步,给定十进制正整数[a]和转化后的数的基数[k].
  第二步,求出[a]除以[k]所得的商[q],余数[r].
  第三步,把得到的余数依次从右到左排列.
  第四步,若[q≠0],则[a=q],返回第二步;
  否则,输出全部余数[r]排列得到的[k]进制数.
  解 程序框图如下图:
  [开始] [输出全部余数[r]排列得到的[k]进制数] [ 结束 ] [是][否] [输入[a,k]] [求[a]除以[k]的商[q]] [求[a]除以[k]的余数[r]] [把得到的余数依次从右到左排列]
  程序:
  [INPUT “a,k=”; a,k []
  b=0
  i=0
  DO
  q=a\k
  r=a MOD k
  b=b+r*k^i
  i=i+1
  LOOP UNTIL q=0
  PRINT b
  END]
  计算机是以二进制的形式进行存储和计算数据的,而一般我们传输给计算机的数据是十进制数据,因此计算机必须先将十进制数转换为二进制数,再处理,显然运算后首次得到的结果为二进制数,同时,计算机又把运算结果由二进制数转换成十进制数输出.因此学好进位制是非常必要的.
其他文献
在电磁感应问题中,由于安培力的大小与电流[I]有关,[I]与感应电动势[E]有关,动生电动势[E]又与速度[v]有关. 因此安培力与速度相互关联、相互影响. 这就导致电磁感应中的非匀变速运动问题用常规动力学方法很难解决,此时微元法就发挥着不可替代的作用. 所谓微元法就是利用微分思想去分析解决问题的一种方法. 它将研究的对象或过程进行无限细分(化变为恒、化曲为直,等等),从中抽取某一微小单元进行讨论
期刊
从高考实际看,考查现代汉语字形时,命题者所设置的干扰字全是别字,因此,辨识别字应成为高考备考的主攻目标。而辨识别字要注意三点。  一、注意形近字和同音字  形近字、同音字很容易造成别字,特别是声旁相同的形声字,往往既是形近字,又是同音字,更容易造成别字。这类字要特别注意形旁,因为形旁既是字形差异之所在,又与字义密切相关。  例1 下列各组词语中,没有错别字的一组是( )  A. 平添 骁勇 秣马厉
期刊
现代汉语虚词的数量虽不如实词多,但其作用不容小觑。现代汉语虚词在高考语文考卷中出现不多,但一出现就比较麻烦。如何解答这类题目呢?下面,我们按其在试卷上出现的形式分述如下。  一、关联词语的搭配  关联词语搭配分两个方面,一是关联词语自身相互的搭配,二是关联词语与所在语句的搭配。方法如下。  1. 记住一些最常用且容易搭错的关联词语的配对组合。  ①不是……而是……:“不是”表否定,“而是”表肯定,
期刊
那一年,我去北京参加一次夏令营,不巧赶上了甲型流感病毒的暴发。那天我随团去参观故宫博物院,手机却忘在了酒店里。  “嘀嘀嘀……对不起,您拨打的电话暂时无人接听,现在为您转入语音信箱,请在‘嘀’的一声后留言。”  “喂,小安啊,我是你妈。你是不是出门又忘带手机啦?我都说过多少次了,你什么时候才能改掉这丢三落四的坏毛病啊?”  “你唠唠叨叨地尽说些不沾边的事儿,电话给我,我来说。小安,我是你爸,我和你
期刊
一、程序框图中箭头位置错误  例1 画出求[S=1+22+32+…+102]的程序框图.  错解  正解 若将判断框左上方箭头上移就正确了(图中标注①).  错因分析 这样的结果是,由于没有了判断框,故程序执行时没有终止,即程序框将[S=1+22+32+…]一直进行下去,循环始终运行,程序为死循环.  二、程序框图中变量的初始值出现错误  例2 设计流程图求1+2+…+100的值.  错解  正解
期刊
如果我能看得见  就能轻易地分辨白天黑夜  就能准确地在人群中牵住你的手  如果我能看得见  就能驾车带你到处遨游  就能惊喜地从背后给你一个拥抱  如果我能看得见  生命也许完全不同  可能我想要的我喜欢的我爱的  都不一样  眼前的黑不是黑  你说的白是什么白  人们说的天空蓝  是我记忆中那团白云背后的蓝天  我望向你的脸  却只能看见一片虚无  是不是上帝在我眼前遮住了帘  忘了掀开  你
期刊
现在分词(动词-ing形式)和过去分词的主要差别在于:现在分词表示“主动和进行”,过去分词表示“被动和完成”(不及物动词的过去分词不表示被动,只表示完成)。  一、现在分词和过去分词作定语的用法  单个的分词放在所修饰的名词前(少数动词除外),分词短语放在所修饰的名词后。作定语的现在分词和过去分词的区别在于:现在分词与被修饰的名词在逻辑上是主动关系,现在分词表示动作正在发生或与谓语同时发生;过去分
期刊
高考实词的考查核心是“使用”,它极大地体现出词语的“动态”,即命题的选材,注重语言材料的生活化。所以,所谓正确使用实词就是:①根据语境辨析多义词的意义; ②根据语境,恰当地使用同义词、近义词和反义词;③根据语境,准确理解词语的特定意义或临时意义。  如何解答这类题目呢?  把握语境含义。语境就是词语所处的语言环境,也就是上下文。要确定词语的意思,必须把它放在语境中考虑。汉语词语有许多是多义的,但是
期刊
做完型填空题是有诀窍的,正如人们常说的:上下求索,左顾右盼。通俗点说,就是在做题过程中,找寻正确选项的蛛丝马迹来帮助自己理解文章,确定答案。怎样找寻?寻找什么?下面听我一一道来。  一、找自己  在完型填空的上下文中有些词汇会重复出现,有时,这些词就是正确选项。此处的找“自己”,就是寻找这些也可以称之为“重现词”的词汇,此类词常常在文章的开头与结尾与主题有关的句子中,或是紧接着前一句陈述过的事实之
期刊
基本算法语句和大学内容联系得非常紧密,学好了这一节,再进入大学之后学习C语言就会轻松许多.当然我们高中生需要掌握的内容非常少,相对于大学内容来说也比较简单.这一节主要就包含了几个基本语句:输入输出语句、赋值语句、条件语句、循环语句等.  一、输入、输出语句  输入语句 (1)输入语句要求输入的值只能是具体的常数,不能是函数、变量或表达式;(2)提示内容与变量之间用分号“;”隔开,若输入多个变量,变
期刊