资源描述
2019-2020年高中数学复习讲义 第十章 算法初步与框图【知识图解】算法算法的描述流程图伪代码自然语言条 件 结 构循 环 结 构顺 序 结 构条 件 结 构循 环 结 构输入(出)语句顺 序 结 构顺 序 结 构顺 序 结 构【方法点拨】1.学习算法要理解算法的含义.明确建立算法就是设计完成一件事的操作步骤.一般地说,这样的操作步骤应该具有通用性,能处理一类问题.2.掌握算法的三种基本结构.顺序结构、条件结构和循环结构是算法的三种基本结构.要通.具体实例了解三种基本结构的使用范围,通过流程图认识它们的基本特征.3.掌握流程图的画法.用流程图表示算法具有、清晰的特点,也是高考重点考查的内容,要予以重视.特别是循环结构的流程图,对判断框中的条件与前测试还是后测试之间的关系一定要弄清楚.4.熟悉建立算法的基本操作程序.建立算法的操作程序一般为:先探寻解决问题的方法,并用通俗的语言进行表述,再将通俗的算法语言用流程图直观表示,最后根据流程图选择适当的算法语句用伪代码表示算法过程.第1课 算法的含义【考点导读】正确理解算法的含义.掌握用自然语言分步骤表达算法的方法. 高考要求对算法的含义有最基本的认识,并能解决相关的简单问题.【基础练习】1下列语句中是算法的个数为 3个 从济南到巴黎:先从济南坐火车到北京,再坐飞机到巴黎;统筹法中“烧水泡茶”的故事;测量某棵树的高度,判断其是否是大树;已知三角形的一部分边长和角,借助正余弦定理求得剩余的边角,再利用三角形的面积公式求出该三角形的面积.2早上从起床到出门需要洗脸刷牙(5 min)、刷水壶(2 min)、烧水(8 min)、泡面(3 min)、吃饭(10 min)、听广播(8 min)几个步骤.从下列选项中选最好的一种算法 .S1洗脸刷牙、S2刷水壶、S3烧水、S4泡面、S5吃饭、S6听广播S1刷水壶、S2烧水同时洗脸刷牙、S3泡面、S4吃饭、S5听广播S1刷水壶、S2烧水同时洗脸刷牙、S3泡面、S4吃饭同时听广播S1吃饭同时听广播、S2泡面、S3烧水同时洗脸刷牙、S4刷水壶3写出交换两个大小相同的杯子中的液体(A水、B酒)的两个算法.答案:解析:算法1:S1.再找一个大小与A相同的空杯子C;S2.将A中的水倒入C中;S3.将B中的酒倒入A中;S4.将C中的水倒入B中,结束.算法2:S1.再找两个空杯子C和D;S2.将A中的水倒入C中,将B中的酒倒入D中;S3.将C中的水倒入B中,将D中的酒倒入A中,结束.注意:一个算法往往具有代表性,能解决一类问题,如,可以引申为:交换两个变量的值.4写出求1234567的一个算法.解析:本例主要是培养学生理解概念的程度,了解解决数学问题都需要算法算法一:按照逐一相加的程序进行.第一步计算12,得到3;第二步将第一步中的运算结果3与3相加,得到6;第三步将第二步中的运算结果6与4相加,得到10;第四步将第三步中的运算结果10与5相加,得到15;第五步将第四步中的运算结果15与6相加,得到21;第六步将第五步中的运算结果21与7相加,得到28.算法二:可以运用公式123n直接计算.第一步取n7;第二步计算;第三步输出运算结果.点评:本题主要考查学生对算法的灵活准确应用和自然语言表达一个问题的算法的方法.算法不同,解决问题的繁简程度也不同,我们研究算法,就是要找出解决问题的最好的算法.【范例解析】例1 下列关于算法的说法,正确的有 .(1)求解某一类问题的算法是惟一的 (2)算法必须在有限步骤操作之后停止(3)算法的每一操作必须是明确的,不能有歧义或模糊(4)算法执行后一定产生确定的结果解 由于算法具有可终止性,明确性和确定性,因而(2)(3)(4)正确,而解决某类问题的算法不一定是惟一的,从而(1)错.例2.写出解方程x2-2x-3=0的一个算法.分析 本题是求一元二次方程的解的问题,方法很多,下面利用配方法,求根公式法写出这个问题的两个算法算法一:(1)移项,得x2-2x=3; (2)两边同加1并配方,得(x-1)2=4 (3)式两边开方,得x-1=2; (4)解,得x=3或x=-1.算法二:(1)计算方程的判别式,判断其符号:(2)将a=1,b=-2,c= -3,代入求根公式,得点评 比较两种算法,算法二更简单,步骤最少,由此可知,我们只要有公式可以利用,利用公式解决问题是最理想,合理的算法.因此在寻求算法的过程中,首先是利用公式.下面我们设计一个求一般的一元二次方程的ax2+bx+c=0根的算法如下:(1)计算(2)若(3)方程无实根;(4)若(5)方程根例3:一个人带三只狼和三只羚羊过河.只有一条船,同船可以容一个人和两只动物.没有人在的时候,如果狼的数量不少于羚羊的数量,狼就会吃掉羚羊.(1)设计安全渡河的算法;(2)思考每一步算法所遵循的相同原则是什么.解析:(1)S1人带两只狼过河.S2人自己返回.S3人带两只羚羊过河.S4人带一只狼返回.S5人带一只羚羊过河.S6人自己返回.S7人带两只狼过河.(2)在人运送动物过河的过程中,人离开岸边时必须保证每个岸边的羚羊数目要大于狼的数目.点评 这是一个实际问题,生活中解决任何问题都需要算法,我们要在处理实际问题的过程中理解算法的含义,体会算法设计的思想方法.【反馈演练】:1下面对算法描述正确的一项是 C .A算法只能用伪代码来描述 B算法只能用流程图来表示C同一问题可以有不同的算法 D同一问题不同的算法会得到不同的结果解析:自然语言、图形和伪代码都可以表示算法,只要是同一问题,不同的算法也应该有相同的结果.2计算下列各式中的S的值,能设计算法求解的是.;解析:因为算法步骤具有“有限性”特点,故不可用算法求解.3已知一个学生的语文成绩为89,数学成绩为96,外语成绩为99,求他的总分和平均成绩的一个算法为:第一步取A89,B96,C99;第二步;第三步;第四步输出D,E.请将空格部分(两个)填上适当的内容答案:计算总分DA+B+C计算平均成绩E4写出123456的一个算法.答案:解析:按照逐一相乘的程序进行.第一步计算12,得到2;第二步将第一步中的运算结果2与3相乘,得到6;第三步将第二步中的运算结果6与4相乘,得到24;第四步将第三步中的运算结果24与5相乘,得到120;第五步将第四步中的运算结果120与6相乘,得到720;第六步输出结果.5已知一个三角形的三边边长分别为2、3、4,设计一个算法,求出它的面积.答案:解析:可利用公式S求解.第一步取a2,b3,c4;第二步计算p;第三步计算三角形的面积S;第四步输出S的值.6. 求1734,816,1343的最大公约数.分析:三个数的最大公约数分别是每个数的约数,因此也是任意两个数的最大公约数的约数,也就是说三个数的最大公约数是其中任意两个数的最大公约数与第三个数的最大公约数.解:用“辗转相除法”.先求1734和816的最大公约数,1734=8162+102;816=1028;所以1734与816的最大公约数为102.再求102与1343的最大公约数,1343=10213+17;102=176.所以1343与102的最大公约数为17,即1734,816,1343的最大公约数为17.7. 写出用二分法求关于x的方程x220的根(精确到0.005)的算法.第一步 令f(x)=x2-2,因为f(1)0,所以设x1=1,x2=2第二步 令m=(x1+x2)/2,判断f(m)是否为0,若是,则m为所求,否则,则继续判断f(x1)f(m)大于0还是小于0.第三步 若f(x1)f(m) 0则令x1=m,否则x2=m.第四步 判断|x1-x2|0,则ax0;否则bx0;S3若|ab|b ;(2)b-a 【范例解析】例1.已知梯形的上底、下底和高分别为5、8、9,写出求梯形的面积的算法,画出流程图.(第1题)解 算法如下S1 a5; S2b8;S3h9;S4S(a+b)h/2; S5输出S. 流程图为 :点评 本题中用的是顺序结构是最简单的算法结构,是任何一个算法都离不开的基本结构.例(第2题)开始a0输入a,b结束输出xx0输出xx0,否则输出xx0流程图为:点评 解决此类不等式问题时,因涉及到对一次项系数的讨论一般采用条件结构设计算法.【反馈演练】1如图表示的算法结构是 顺序 结构2下面的程序执行后的结果是 4,1 .解析:由题意得,故执行到第三步时,把的值给,这时,第四步,把的值给,这时. (第3题)3 输入x的值,通过函数y=求出y的值,现给出此算法流程图的一部分,请将空格部分填上适当的内容 x1x20 .(第5题)结束输出a开始a=b输出a,b,cabaca=cYYNN结束输出s开始s=0,n=2,i=1s=s+1/nn=n+2i=i+1YN(第4题)5. 给出以下一个算法的程序框图(如图所示).该程序框图的功能是 求出a,b,c三数中的最小数 . (第6题)6.根据下面的算法画出相应的流程图.算法:S1T0;S2I2;S3TT+I;S4II+2;S5如果I不大于200,转S3;S6输出T .答案:解:这是计算2+4+6+200的一个算法.流程图如下:第3课 算法语句A【考点导读】会用伪代码表述四种基本算法语句:输入输出语句,赋值语句,条件语句和循环语句.会用上述基本语句描述简单问题的算法过程.高考要求对算法语句有最基本的认识,并能解决相关的简单问题.【基础练习】1 .下列赋值语句中,正确的是 (1) . 2条件语句表达的算法结构为 . 顺序结构 选择结构 循环结构以上都可以解析:条件语句典型的特点是先判断再执行,对应的是选择结构.3关于循环说法错误的是 .在循环中,循环表达式也称为循环体在循环中,步长为1,可以省略不写,若为其它值,则不可省略使用循环时必须知道终值才可以进行循环中控制结束一次循环,开始一次新循环解析:循环中是指整个循环结束,而不是一次循环结束【范例解析】例1试写出解决求函数y=的函数值这一问题的伪代码解:Read xIf x20 Then II20End ifEnd forPrint I(第2题)2.写出下面流程图所表述的算法的功能并用伪代码表示.(第2题)答案:解:输出两个不同的数中小的一个数.用伪代码表示为Read a,bIf ab thenPrint bElsePrint aEnd if第4课 算法语句B【考点导读】1.循环结构的算法用循环语句表示.2理解“While循环”和“For循环”,前者是前测试的当当型循环,后者是在循环次数已知时使用的循环.【基础练习】1下列伪代码中的循环次数为 9 s0For I from 1 to 25 step 3ss+IEnd forPrint s2.要使以下For循环执行20次,循环变量的初值应该是 14 .(For k From To -5 Step -1) 3.下面这段伪代码的功能 计算其中小于0数的个数 .n 0Read x1,x2x10For i from 1 to10If xi0 then n n+1End ifEnd forPrint n (第3题)Read xIf x5 Theny10xElse y2.5x+5End IfPrint y(第4题)4下面是一个算法的伪代码如果输出的y的值是20,则输入的x的值是 2或6 .解析:若,由,则;若,由,得.【范例解析】例1.设计算法,求的值.解 伪代码:s1For I from 2 to 100 End forPrint s点评 本题是连乘求积的问题,自然想到用循环语句设计算法,算法的设计又带有灵活性和通用性,熟练地掌握这一类题的解法,对于解决与此相关的问题有很大帮助.例3.某城市现有人口总数为100万人,如果年自然增长率为1.2%,试解答下面的问题:(1)写出该城市人口数y(万人)与年份x(年)的函数关系式;(2)用伪代码写出计算10年以后该城市人口总数的算法;(3)用伪代码写出计算大约多少年以后该城市人口将达到120万人.解:(1)y=100(1+0.012)x.(2)10年后该城市人口总数为y=100(1+0.012)10.算法如下:y100t1.012For I from 1 to 10yytEnd forPrint yEnd(3)设x年后该城市人口将达到120万人,即100(1+0.012)x=120.算法如下:S100I1.012T0While S66结束YN(第3题)3下图是一个循环结构的算法,下列说法中:(1)是循环变量的初始化,循环将要开始;(2)为循环体;(3)是判断是否继续循环的条件;(4)可以省略不写其中正确的的是 4在如下程序框图中,输入f0(x)=cosx,则输出的是 cosx 5. 当 x=2 时 ,下面程序运行结果是 15 . While End while Print sEnd(第5题)6依据不同条件,给出下面的流程图的运行结果:(1)当箭头a指向时,输出 6 ;(2)当箭头a指向时,输出 20 .;7.已知数列中,且,求这个数列的第m项的值.现给出此算法流程图的一部分,请将空格部分(两个)填上适当的内容 2 m+1 Y输入mST+SNYT 结束输出m,S开始 TT+1S2,T (第7题)开始a输出SN结束Y(第6题)
展开阅读全文