知识讲解高考总复习算法与程序框图 (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高考总复习:算法与程序框图
编稿:孙永钊审稿:张林娟
【考纲要求】
1.算法的含义、程序框图
(1)了解算法的含义,了解算法的思想;
(2)理解程序框图的三种基本逻辑结构:顺序、条件、循环。
2.基本算法语句
理解几种基本算法语句——输入语句、输出语句、赋值语句、条件语句、循环语句的含义。
【知识网络】
【考点梳理】
考点一、算法
1.算法的概念
(1)古代定义:指的是用阿拉伯数字进行算术运算的过程。
(2)现代定义:算法通常是指按照一定规则解决某一类问题的明确和有限的步骤。
(3)应用:算法通常可以编成计算机程序,让计算机执行并解决问题。
2.算法的特征:
①指向性:能解决某一个或某一类问题;
②精确性:每一步操作的内容和顺序必须是明确的;算法的每一步都应当做到准确无误,从开始的“第一步”直到“最后一步”之间做到环环相扣,分工明确.“前一步”是“后一步”的前提,“后一步”是“前一步”的继续.
③有限性:必须在有限步内结束并返回一个结果;算法要有明确的开始和结束,当到达终止步骤时所要解决的问题必须有明确的结果,也就是说必须在有限步内完成任务,不能无限制的持续进行.
④构造性:一个问题可以构造多个算法,算法有优劣之分。
3.算法的表示方法:
(1) 用自然语言表示算法: 优点是使用日常用语, 通俗易懂;缺点是文字冗长, 容易出现歧义;(2) 用程序框图表示算法:用图框表示各种操作,优点是直观形象, 易于理解。
要点诠释:泛泛地谈算法是没有意义的,算法一定以问题为载体。
考点二:程序框图
1. 程序框图的概念:
程序框图又称流程图,是最常用的一种表示法,它是描述计算机一步一步完成任务的图表,直观地描述程序执行的控制流程,最便于初学者掌握。
2.程序框图常用符号:图形符号名称含义
开始/结束
用于表示算法的开始与结束
框
输入/输出
用于表示数据的输入或结果的输出
框
处理框描述基本的操作功能,如“赋值”操作、数
学运算等
判断框判断某一条件是否成立,成立时在出口处标
明“是”或“Y”;不成立时标明“否”或“N”
流程线表示流程的路径和方向
连接点用于连接另一页或另一部分的框图
注释框框中内容是对某部分流程图做的解释说明
3.画程序框图的规则:
(1)使用标准的框图的符号;
(2)框图一般按从上到下、从左到右的方向画;
(3)除判断框图外,大多数框图符号只有一个进入点和一个退出点。
判断框是具有超过一个退出点的唯一符号;
(4)一种判断框是“是”与“不是”两分支的判断,而且有且仅有两个结果;另一种是多分支判断,有几种不同的结果;
(5)在图形符号内描述的语言要非常简练清楚。
4.算法的三种基本逻辑结构:
(1)顺序结构:由若干个按从上到下的顺序依次进行的处理步骤(语句或框)组成。
这是任何一个算法都离不开的基本结构。
(2)条件结构:算法流程中通过对一些条件的判断,根据条件是否成立而取不同的分支
流向的结构。
它是依据指定条件选择执行不同指令的控制结构。
(3)循环结构:根据指定条件,决定是否重复执行一条或多条指令的控制结构称为循环结构。
考点三:基本算法语句
程序设计语言由一些有特定含义的程序语句构成,与算法程序框图的三种基本结构相对应,任何程序设计语言都包含输入输出语句、赋值语句、条件语句和循环语句。
以下均为BASIC语言。
1.输入语句
这个语句的一般格式是:INPUT “提示内容”;变量
其中,“提示内容”一般是提示用户输入什么样的信息。
每次运行程序时,计算机每次都把新输入的值赋给变量“x”,并按“x”新获得的值执行下面的语句。
INPUT语句不但可以给单个变量赋值,还可以给多个变量赋值,其格式为:
INPUT “提示内容1,提示内容2,提示内容3,…”;变量1,变量2,变量3,…
要点诠释:
①“提示内容”与变量之间必须用分号“;”隔开。
②各“提示内容”之间以及各变量之间必须用逗号“,”隔开,但最后的变量的后面不需要。
2.输出语句
它的一般格式是:PRINT “提示内容”;表达式
同输入语句一样,表达式前也可以有“提示内容”。
输出语句的用途:
(1)输出常量,变量的值和系统信息;
(2)输出数值计算的结果。
3.赋值语句
用来表明赋给某一个变量一个具体的确定值的语句。
它的一般格式是:变量=表达式赋值语句中的“=”叫做赋值号。
赋值语句的作用:
先计算出赋值号右边表达式的值,然后把这个值赋给赋值号左边的变量,使该变量的值
等于表达式的值。
要点诠释:
①赋值号左边只能是变量名字,而不能是表达式。
如:2=X是错误的。
②赋值号左右不能对换。
如“A=B”与“B=A”的含义运行结果是不同的。
③不能利用赋值语句进行代数式的演算。
(如化简、因式分解、解方程等)。
④赋值号“=”与数学中的等号意义不同。
4.条件语句
算法中的条件结构是由条件语句来表达的,是处理条件分支逻辑结构的算法语句。
它的一般格式是:(IF-THEN-ELSE格式)
IF 条件 THEN
语句1
ELSE
语句2
END IF
当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN 后的语句1,否则执行ELSE后的语句2。
在某些情况下,也可以只使用IF-THEN语句:(即IF-THEN格式)
IF 条件 THEN
语句
END IF
计算机执行这种形式的条件语句时,也是首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句,如果条件不符合,则直接结束该条件语句,转而执行其他语句。
要点诠释:条件语句的作用:在程序执行过程中,根据判断是否满足约定的条件而决定是否需要转换到何处去。
需要计算机按条件进行分析、比较、判断,并按判断后的不同情况进行不同的处理。
5.循环语句
算法中的循环结构是由循环语句来实现的。
对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构,即WHILE语句和
UNTIL语句。
(1)WHILE语句的一般格式是:
WHILE 条件
循环体
WEND
其中循环体是由计算机反复执行的一组语句构成的。
WHLIE后面的“条件”是用于控制计算机执行循环体或跳出循环体的。
当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止。
这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句。
因此,当型循环有时也称为“前测试型”循环。
(2)UNTIL语句的一般格式是:
DO
循环体
LOOP UNTIL 条件
要点诠释:当型循环在进行循环前对控制条件进行判断,当条件满足时就反复循环,不满足就停止;直到型循环在进行一次循环后,对控制条件进行判断,当条件不满足时就反复循环,满足就停止。
1.算法与框图是新课标教材中新增的内容,但也曾与其它板块知识结合出现在前几年的各类考试中,其思想方法渗透在高中数学课程的其他相关内容中。
考题应考查算法的思想,基本结构为主,多以选择题、填空题的形式呈现。
2.根据本章知识的特点,复习中应加强对算法思想的理解,了解算法的基本逻辑结构,掌握算法基本语句的使用。
3.仔细审题.在画流程图时首先要进行结构的选择,套用公式.若求只含有一个关系的解析式的函数的函数值时,只用顺序结构就能够解决;若是分段函数或执行时需要先判断后才能执行后继步骤的,就必须引入选择结构;如果问题里涉及了许多重复的步骤,且数之间有相同的规律,就可引入变量,应用循环结构.当然应用循环结构里边一定要用到顺序结构与选择结构.循环结构有两种:直到型和当型,两种都能解决问题.
【典型例题】
类型一:算法的含义
【例1】已知球的表面积是16π,要求球的体积,写出解决该问题的一个算法. 【思路点拨】先根据表面积算出球的半径,再根据球的体积公式求出球的体积,将上面步骤分解并分别写出即可得到算法。
【解析】算法如下: 第一步,s =16π. 第二步,计算4S R π
=
第三步,计算3
43
R V π=
第四步,输出V .
【总结升华】给出一个问题,设计算法应该注意:
(1)认真分析问题,联系解决此问题的一般数学方法,此问题涉及到的各种情况; (2)将此问题分成若干个步骤; (3)用简练的语句将各步表述出来. 举一反三:
【变式1】设计一个计算1×3×5×7×9×11×13的算法.图中给出程序的一部分,则在横线①上不能填入的数是( )
A.13
B.13.5
C.14
D.14.5
【解析】当I <13成立时,只能运算 1×3×5×7×9×11.故选A.
【变式2】写出找出1至1 000内7的倍数的一个算法. 解答:算法1: S1 令A=0;
S2 将A 不断增加1,每加一次,就将A 除以7,若余数为0,则找 到了一个7的倍数,将其输出; S3 反复执行第二步,直到A=1 000结束. 算法2:
S =1
I =3
While I < ① S =S ×I I =I +2 End While Print S End
S1 令k=1; S2 输出k ·7的值;
S3 将k 的值增加1,若k ·7的值小于1 000,则返回S2,否则结束. 算法3: S1 令x=7; S2 输出x 的值;
S3 将x 的值增加7,若没有超过1 000,则返回S2,否则结束. 类型二:程序框图
【例2】写出解方程0ax b +=(a b R ∈、)的相应程序及程序框图。
【思路点拨】因为a b R ∈、,解方程0ax b +=时需要先对最高次项的系数a 是否为0进行判断。
若0a ≠,则方程的解为b x a
=-
; 若0a =,则需要再次判断b 是否为0, 若0b =,则方程的解为全体实数, 若0b ≠,则方程无实数解。
据此可以用条件语句来实现。
【解析】程序: INPUT “a,b=”;a,b IF a<>=0 THEN
PRINT “原方程的根为”;x ELSE
IF b<>=0 THEN PRINT “方程无实数根” ELSE
PRINT “方程的根为全体实数” END IF END IF END 程序框图:
【总结升华】在写出算法时,应当对所要解决的问题有深入、全面的了解;条件分支结构的运用与分类讨论的数学思想密切相连;设计算法时,什么地方要进行分类讨论,什么地方就要用条件分支结构。
举一反三:
【变式1】写出用二分法求函数()y f x =在区间[1,2]的零点(精确到0.01)的程序框图及相应程序。
【解析】 程序: a=1 b=2 DO
IF ()02
a b
f += THEN EXIT ELSE IF ()()02
a b
f a f +< THEN
ELSE 2
a b
a +=
输出2
a b +
END IF
LOOP UNTIL 0.01b a -< PRINT
2
a b
+ 程序框图:
【例3高清视频算法与程序框图例题2】执行如图所示的框图,输入N =5,则输出的数等于( )
【思路点拨】 根据程序框图(算法流程图)分析出该程序框图的功能进行求解. 【总结升华】 识别运行算法框图和完善算法框图是高考的热点. 解答这一类问题,
第一,要明确算法框图的顺序结构、选择结构和循环结构; 第二,要识别运行算法框图,理解框图所解决的实际问题; 第三,按照题目的要求完成解答.对算法框图的考查常与数列和 函数等知识相结合,进一步强化框图问题的实际背景. 类型三:条件结构
【例3】已知函数2
23
(0)2
(0)
x x y x x ->⎧=⎨+≤⎩,写出求该函数的函数值的算法并画出程序
框图。
【思路解析】分析算法→写出算法→选择合适的逻辑结构→画出程序框图。
开
结
2
a b a +=
0.01
b a -<1,2
a b ==()0
2
a b f +=是
2
a b +输出
()(
)02
a b
f a f +<否
2
a b b +=
是
否
是
否
【解析】算法如下: 第一步:输入x ;
第二步:如果(0)x >,那么使23y x =-, 否则2
2y x =+; 第三步:输出y 。
程序框图如下:
【总结升华】求分段函数值的算法应用到条件结构,因此在程序框图的画法中需要引入判断框,要根据题目的要求引入判断框的个数,而判断框内的条件不同,对应的框图中的内容或操作就相应地进行变化.
举一反三:
【变式1】阅读如图的程序框图,若输出s 的值为-7,则判断框内可填写( ) A.i <3? B.i <4? C.i <5? D.i <6?
【解析】i =1,s =2-1=1; i =3,s =1-3=-2;
i =5,s =-2-5=-7.所以选D.
【变式2】写出解方程2
0ax x b ++=的一个算法,并画出程序框图。
【解析】 算法步骤:
第一步:判断a 是否等于0 如果0a =,则解得x b =-; 如果0a ≠,则执行第二步; 第二步:计算14ab ∆=-;
第三步:若0∆<,则原方程无实数根;否则,0∆≥,有11x --∆=21x -+∆
=; 第四步:输出方程无实数根的信息或1x 、2x 。
程序框图:
类型四:循环结构
【例4】设计算法求111112233499100
++++⨯⨯⨯⨯的值,并画出程序框图。
【思路点拨】(1)这是一个累加求和问题,共99项相加;
(2)设计一个计数变量,一个累加变量,用循环结构实现这一算法。
【解析】算法如下:
第一步:令S=0,1;i =
第二步:若99i ≤成立,则执行第三步;
否则,输出S ,结束算法;
第三步:1;(1)
S S i i =++ 第四步:1i i =+,返回第二步。
程序框图:
方法一:当型循环程序框图:
方法二:直到型循环程序框图:
【总结升华】利用循环结构表示算法,一定要先确定是利用当型循环结构,还是直到型开
结
是 否
14ab ∆=-0∆<112x a --∆=212x a
-+∆
=a b
输入、0
a =x b
=-是 否 12x x 输出、x
输出输出“无实根”
循环结构;第二要选择准确的表示累计的变量;第三要注意在哪一步开始循环。
举一反三:
【变式】设计一个计算10个数的平均数的算法,并画出程序框图.
【解析】算法步骤如下:
第一步,令S =0.
第二步,令I =1.
第三步,输入一个数G .
第四步,令S =S +G.
第五步,令I =I +1.
第六步,若I >10,转到第七步,
若I ≤10,转到第三步.
第七步,令A =S/10.
第八步,输出A .
据上述算法步骤,程序框图如图.
类型五:输入、输出、赋值语句的应用
【例5】阅读程序框图(如下图),若输入m =4,n =6,
则输出a
= ,i = .
【解析】a =12,i =3.
【点拨】赋值语句是一种重要的基本语句,也是程序必不可少的重要组成部分,使用赋值语句,要注意其格式要求.
【例6】阅读下列程序,并回答问题.
(1)程序 (2)程序
(1)中若输入1,2,则输出的结果为
________; (2)中若输入3,2,5,则输出的结果为________. 【答案】(1)1,―2,―1(2)C=―3 【解析】 分别将输入的值代入程序中逐步计算即可,要注意赋值前后变量值的变化. (1)阅读程序,由a=1,b=2,c=a ―b 可得c=―1;又根据语句b=a+c ―b ,可得b=―2; 所以程序运行后的结果为:1,―2,―1.
(2)阅读程序,由A=3,B=2,C=5,A=A+B ,可得A=5, INPUT a ,b
c=a ―b b=a+c ―b PRINT a ,b ,
c INPUT A ,B ,C A=A+B B=B -A C=C /A*B PRINT “C=”
;C
又根据语句B=B ―A ,可得B=―3,
又C=C /A*B ,所以输出结果为C=―3.
【点评】赋值语句在给变量赋值时,先计算赋值号右边的式子然后赋值给赋值号左边的变量;另外可以给一个变量先后多次赋不同的值,但变量的取值只与最后一次赋值有关.解决此类问题时要时刻把握某个变量在该程序中充当的角色,时刻关注其值的改变情况. 举一反三:
【变式】写出下列语句描述的算法的输出结果.
(1) (2) (3) 【答案】(1)16 (2)a=1 b=2 c=3(3)a=20 b=30 c=20 【解析】 (1)∵a=5,b=3,42a b c +==,∴d=c 2=16. (2)∵a=1,b=2,c=a+b ,∴c=3.又将a+c ―b 赋值给b ,∴b=1+3-2=2. (3)由b=20及a=b 知a=20,由c=30及b=c 知b=30,由a=30及c=a 知c=20. 类型五:循环语句的应用 【例6】设计算法求112⨯+123⨯+134⨯+…+199100
⨯的值.要求画出程序框图,写出用基本语句编写的程序.
【解析】这是一个累加求和问题,共99项相加,可设计一个计数变量,一个累加变量,用循环结构实现这一算法.程序框图如下图所示:
程序如下:
s =0
k =1
DO
s =s +1/(k* (k +1))
k =k +1
LOOP UNTIL k >99
PRINT s
END
语句编写程序解决问题时,一定要注意格式和条件的表述方法,WHILE 语句是当条件满足时执行循环体,UNTIL 语句是当条件不满足时执行循环体.
(2)在解决一些需要反复执行的运算任务,如累加求和、累乘求积等问题中应注意考虑利用循环语句来实现.
(3)在循环语句中,也可以嵌套条件语句,甚至是循环语句,此时需要注意嵌套的这些a=5 b=3 c=(a+b)/2 d=c*c PRINT “d=”;d a=1 b=2 c=a+b b=a+c ―b PRINT “a=,b=,c=”;a ,b ,c a=10 b=20 c=30 a=b b=c c=a
PRINT “a=,b=,c=”;a ,b ,
语句,保证语句的完整性,否则就会造成程序无法执行.
举一反三:
【变式】下图是输出某个有限数列各项的程序框图,则该框图所输出的最后一个数据是.
【解析】由程序框图可知,当N=1时,A=1;N=2时,A=1
3
;N=3时,A=
1
5
,…,
即输出各个A值的分母是以1为首项以2为公差的等差数列,故当N=50时,A=
1
1(501)2 +-⨯=
1
99
,即为框图最后输出的一个数据.故填
1
99
.
类型五:求最大公约数
【例7】(1)用辗转相除法求840与1 764的最大公约数;
(2)用更相减损术求440与556的最大公约数.
【解析】(1)用辗转相除法求840与1 764的最大公约数:
1 764=840×2+84,
840=84×10+0.
所以840与1 764的最大公约数是84.
(2)用更相减损术求440与556的最大公约数:
556-440=116,
440-116=324,
324-116=208,
208-116=92,
116-92=24,
92-24=68,
68-24=44,
44-24=20,
24-20=4,
20-4=16,
16-4=12,
12-4=8,
8-4=4.
所以440与556的最大公约数是4.
【总结升华】(1)辗转相除法与更相减损术是求两个正整数的最大公约数的方法,辗转相除法用较大的数除以较小的数,直到大数被小数除尽结束运算,较小的数就是最大公约数;更相减损术是用两数中较大的数减去较小的数,直到所得的差和较小数相等为止,这个
较小数就是这两个数的最大公约数.一般情况下,辗转相除法步骤较少,而更相减损术步骤较多,但运算简易,解题时要灵活运用.
(2)两个以上的数求最大公约数,先求其中两个数的最大公约数,再用所得的公约数与其他各数求最大公约数即可.
举一反三:
【变1】求147,343,133的最大公约数.
【解析】先求147与343的最大公约数.
343-147=196,
196-147=49,
147-49=98,
98-49=49,
所以147与343的最大公约数为49.
再求49与133的最大公约数.
133-49=84,
84-49=35,
49-35=14,
35-14=21,
21-14=7,
14-7=7.
所以147,343,133的最大公约数为7.
类型六:秦九韶算法
【例8】用秦九韶算法写出求多项式f (x )=1+x +0.5x 2+0.016 67x 3+0.041 67x 4+0.008 33x 5在x =-0.2时的值的过程.
【思路点拨】秦九韶算法是我国南宋的数学家秦九韶首先提出来的.
(1)特点:它通过一次式的反复计算,逐步计算高次多项式的求值问题,即将一个n 次多项式的求值问题,归结为重复计算n 个一次式1()i i a x a -+.即1210()((()))n n n f x a x a x a x a x a --=++++.
(2)具体方法如下:已知一个一元n 次多项式1110()n n n n f x a x a x a x a --=++
++0.当x=x 0,我们可按顺序一项一项地计算,然后相加,求得0()f x .
【解析】先把函数整理成f (x )=((((0.008 33x +0.041 67)x +0.166 67)x +0.5)x +1)x +1, 按照从内向外的顺序依次进行.
x =-0.2,
a 5=0.008 33,
v 0=a 5=0.008 33; a 4=0.041 67,
v 1=v 0x +a 4=0.04; a 3=0.016 67,
v 2=v 1x +a 3=0.008 67; a 2=0.5,
v 3=v 2x +a 2=0.498 27; a 1=1,
v 4=v 3x +a 1=0.900 35; a 0=1, v 5=v 4x +a 0=0.819 93;
所以f (-0.2)=0.819 93.
【总结升华】秦九韶算法是多项式求值的最优算法,特点是:
(1)将高次多项式的求值化为一次多项式求值;
(2)减少运算次数,提高效率;
(3)步骤重复实施,能用计算机操作.
秦九韶算法的原理是
01(1,2,3,,)n
k k n k v a v v x a k n --=⎧⎨=+=⎩.
在运用秦九韶算法进行计算时,应注意每一步的运算结果,像这种一环扣一环的运算,如果错一步,则下一步,一直到最后一步就会全部算错.同学们在计算这种题时应格外小心. 举一反三:
【变式】用秦九韶算法计算多项式65432()654327f x x x x x x x =++++++在x=0.4时的值时,需做加法和乘法的次数和是( )
A .10
B .9
C .12
D .8
【答案】 C
【解析】()(((((65)4)3)2)1)7f x x x x x x x =++++++.
∴加法6次,乘法6次,
∴6+6=12(次),故选C .
类型七:进位制
【例9】(1)试把十进制数136转化为二进制数;
(2)试把十进制数1 234转化为七进制数.
【思路点拨】将k 进制数转换为十进制数,关键是先写成幂的积的形式再求和,将十进制数转换为k 进制数,用“除k 取余法”,余数的书写是由下往上,顺序不能颠倒,k 进制化
为m 进制(k ,m ≠10),可以用十进制过渡
【解析】(1)由于136=2×68+0,
68=2×34+0.
34=2×17+0.
17=2×8+1.
8=2×4+0.
4=2×2+0.
2=2×1+0.
1=2×0+1.
所以136=(2).
(2)1234=7×176+2,
176=7×25+1.
25=7×3+4.
3=7×0+3.
所以1234=3412(7).
【总结升华】(1)应注意搞清每一次除法中的被除数、除数,当商为零时停止除法,把每步所得的余数倒着排成一个数,就是相应的二进制数.
(2)十进制数转化为七进制数与转化为二进制数的方法类似,要认真体会其原理. 举一反三:
【变式1】把十进制数89化为三进制数.
【解析】具体的计算方法如下:
89=3×29+2,
29=3×9+2,
9=3×3+0,
3=3×1+0,
1=3×0+1,
所以89(10)=10 022(3).
【变式2】在十进制中,0123
2004410010010210=⨯+⨯+⨯+⨯,那么在五进制中数码2 004折合成十进制为( )
A .29
B .254
C .602
D .2 004
【答案】B
【解析】0123
200445050525254=⨯+⨯+⨯+⨯=,故选B .。