- 357.50 KB
- 2021-05-13 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
2013高中数学精讲精练 第十章 算法初步与框图
【知识图解】
算法
算法的描述
流程图
伪代码
自然语言
条 件 结 构
循 环 结 构
顺 序 结 构
条 件 结 构
循 环 结 构
输入(出)语句
顺 序 结 构
顺 序 结 构
顺 序 结 构
【方法点拨】
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.写出求1+2+3+4+5+6+7的一个算法.
解析:本例主要是培养学生理解概念的程度,了解解决数学问题都需要算法
算法一:按照逐一相加的程序进行.
第一步 计算1+2,得到3;
第二步 将第一步中的运算结果3与3相加,得到6;
第三步 将第二步中的运算结果6与4相加,得到10;
第四步 将第三步中的运算结果10与5相加,得到15;
第五步 将第四步中的运算结果15与6相加,得到21;
第六步 将第五步中的运算结果21与7相加,得到28.
算法二:可以运用公式1+2+3+…+n=直接计算.
第一步 取n=7;第二步 计算;第三步 输出运算结果.
点评:本题主要考查学生对算法的灵活准确应用和自然语言表达一个问题的算法的方法.算法不同,解决问题的繁简程度也不同,我们研究算法,就是要找出解决问题的最好的算法.
【范例解析】
例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,求他的总分和平均成绩的一个算法为:
第一步 取A=89,B=96,C=99;
第二步 ① ;
第三步 ② ;
第四步 输出D,E.
请将空格部分(两个)填上适当的内容
答案:①计算总分D=A+B+C ②计算平均成绩E=
4.写出1×2×3×4×5×6的一个算法.
答案:解析:按照逐一相乘的程序进行.
第一步 计算1×2,得到2;
第二步 将第一步中的运算结果2与3相乘,得到6;
第三步 将第二步中的运算结果6与4相乘,得到24;
第四步 将第三步中的运算结果24与5相乘,得到120;
第五步 将第四步中的运算结果120与6相乘,得到720;
第六步 输出结果.
5.已知一个三角形的三边边长分别为2、3、4,设计一个算法,求出它的面积.
答案:解析:可利用公式
S=求解.
第一步 取a=2,b=3,c=4;
第二步 计算p=;
第三步 计算三角形的面积S=;
第四步 输出S的值.
6. 求1734,816,1343的最大公约数.
分析:三个数的最大公约数分别是每个数的约数,因此也是任意两个数的最大公约数的约数,也就是说三个数的最大公约数是其中任意两个数的最大公约数与第三个数的最大公约数.
解:用“辗转相除法”.
先求1734和816的最大公约数,
1734=816×2+102;
816=102×8;
所以1734与816的最大公约数为102.
再求102与1343的最大公约数,
1343=102×13+17;102=17×6.
所以1343与102的最大公约数为17,即1734,816,1343的最大公约数为17.
7. 写出用二分法求关于x的方程x2-2=0的根(精确到0.005)的算法.
第一步 令f(x)=x2-2,因为f(1)<0,f(2)>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.005是否成立?若是则x1、x2之间的任意值均为满足条件的近似值;否则返回第二步.
点评 .区间二分法是求方程近似解的常用算法,其解法步骤为
S1 取[a,b]的中点x0=(a+b)/2;
S2 若f(x0)=0,则x0就是方程的根,否则
若f(a)f(x0)>0,则a←x0;否则b←x0;
S3 若|a-b|b ;(2) b-a
【范例解析】
例1.已知梯形的上底、下底和高分别为5、8、9,写出求梯形的面积的算法,画出流程图.
(第1题)
解 算法如下
S1 a←5;
S2 b←8;
S3 h←9;
S4 S←(a+b)×h/2;
S5 输出S.
流程图为 :
点评 本题中用的是顺序结构是最简单的算法结构,是任何一个算法都离不开的基本结构.
例(第2题)
开始
a>0
输入a,b
结束
输出x>x0
输出xx0,否则输出x20 .
(第5题)
结束
输出a
开始
a=b
输出a,b,c
a>b
a>c
a=c
Y
Y
N
N
结束
输出s
开始
s=0,n=2,i=1
s=s+1/n
n=n+2
i=i+1
Y
N
(第4题)
5. 给出以下一个算法的程序框图(如图所示).该程序框图的功能是 求出a,b,c三数中的最小数 .
(第6题)
6.根据下面的算法画出相应的流程图.
算法:
S1 T←0;
S2 I←2;
S3 T←T+I;
S4 I←I+2;
S5 如果I不大于200,转S3;
S6 输出T .
答案:解:这是计算2+4+6+…+200的一个算法.
流程图如下:
第3课 算法语句A
【考点导读】
会用伪代码表述四种基本算法语句:输入输出语句,赋值语句,条件语句和循环语句.会用上述基本语句描述简单问题的算法过程.高考要求对算法语句有最基本的认识,并能解决相关的简单问题.
【基础练习】
1 .下列赋值语句中,正确的是 (1) .
2.条件语句表达的算法结构为 ② .
①.顺序结构 ②.选择结构 ③.循环结构 ④.以上都可以
解析:条件语句典型的特点是先判断再执行,对应的是选择结构.
3.关于循环说法错误的是 ④ .
①.在循环中,循环表达式也称为循环体
②.在循环中,步长为1,可以省略不写,若为其它值,则不可省略
③.使用循环时必须知道终值才可以进行
④.循环中控制结束一次循环,开始一次新循环
解析:循环中是指整个循环结束,而不是一次循环结束
【范例解析】
例1.试写出解决求函数y=的函数值这一问题的伪代码.
解: Read x
If x<2 Then
y ← x2-1
Else
y ← -x2+1
End If
Print y
点评 分段函数问题是考查If语句一个重要的载体,因此,我们要注意此类问题可以先根据语言叙说,让学生先列出函数关系式,再写出相应的伪代码.
例2.已知S=5+10+15+…+1500,请用流程图描述求S的算法并用伪代码表示.
解 流程图如下图所示:
从流程图可以看出这是一个循环结构,我们可以运用循环语句来实现.
S←5
For I from 10 to 1500 step 5
S←S+I
End For
Print S
点评 在准确理解算法的基础上,学会循环语句的使用.循环语句包括for循环、While循环.解题时要根据需要灵活运用.
循环语句包括if…then,if…then…else,并且if…then…else可以嵌套,解题时要根据需要灵活运用.
例3. 青年歌手大奖赛有10名选手参加,并请了12名评委.为了减少极端分数的影响,通常去掉一个最高分和一个最低分后再求平均分.请用算法语句表示:输入12名评委所打的分数ai,用函数Max(a1,a2,…,a12)和Min (a1,a2,…,a12) 分别求出中ai(i=1,2,…,12)的最大值和最小值,最后输出该歌手的成绩.
解
S←0
For I from 1 to 12
Read ai
S←S+ai
End For
G←(S - Max(a1,a2,…,a12)- Min (a1,a2,…,a12))/10
Print G
【反馈演练】
1.下图中程序执行后输出的结果是_____7___________.
I1
For n from 1 to 11 step 2
I2I+1
If I>20 Then
II-20
End if
End for
Print I
(第2题)
2.写出下面流程图所表述的算法的功能并用伪代码表示.
(第2题)
答案:解:输出两个不同的数中小的一个数.用伪代码表示为
Read a,b
If a>b then
Print b
Else
Print a
End if
第4课 算法语句B
【考点导读】
1.循环结构的算法用循环语句表示.
2理解“While循环”和“For循环”,前者是前测试的当当型循环,后者是在循环次数已知时使用的循环.
【基础练习】
1.下列伪代码中的循环次数为 9 .
s←0
For I from 1 to 25 step 3
s←s+I
End for
Print s
2.要使以下For循环执行20次,循环变量的初值应该是 14 .(For k From To -5 Step -1)
3.下面这段伪代码的功能 计算其中小于0数的个数 .
n0
Read x1,x2…x10
For i from 1 to10
If xi<0 then
nn+1
End if
End for
Print n
(第3题)
Read x
If x≤5 Then
y←10x
Else
y←2.5x+5
End If
Print y
(第4题)
4.下面是一个算法的伪代码.如果输出的y的值是20,则输入的x的值是 2或6 .
解析:若,由,则;若,由,得.
【范例解析】
例1.设计算法,求的值.
解 伪代码:
s←1
For I from 2 to 100
End for
Print 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.
算法如下:
y←100
t←1.012
For I from 1 to 10
y←y×t
End for
Print y
End
(3)设x年后该城市人口将达到120万人,即100×(1+0.012)x=120.
算法如下:
S←100
I←1.012
T←0
While S<120
S←S×I
T←T+1
End while
Print T
End
【反馈演练】
1.如果执行下面的程序框图,那么输出的 2550 .
N
Y
开始
输入f0(x)
i←0
i←i+1
fi (x)←f’i-1 (x)
i=2008
输出fi(x)
结束
(第4题)
开始
?
是
否
输出
结束
开始
n←1
a←15n
输出a
n←n+1
n>66
结束
Y
N
①
③
②
(第3题)
3.下图是一个循环结构的算法,下列说法中:(1)①是循环变量的初始化,循环将要开始;(2)②为循环体;(3)③是判断是否继续循环的条件;(4)①可以省略不写.其中正确的的是 ① ② ③ .
4.在如下程序框图中,输入f0(x)=cosx,则输出的是 cosx .
5. 当 x=2 时 ,下面程序运行结果是 15 .
While
End while
Print s
End
(第5题)
6.依据不同条件,给出下面的流程图的运行结果:
(1)当箭头a指向①时,输出 6 ;
(2)当箭头a指向②时,输出 20 .
;
7.已知数列中,,且,求这个数列的第m项的值.现给出此算法流程图的一部分,请将空格部分(两个)填上适当的内容① 2
② m+1
Y
输入m
S←T+S
N
Y
T≥ ②
结束
输出m,S
开始
T←T+1
S←2,T← ①
(第7题)
开始
①
②
a
输出S
N
结束
Y
(第6题)