高考第一轮复习教案03算法初步框图Word文档下载推荐.docx
《高考第一轮复习教案03算法初步框图Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《高考第一轮复习教案03算法初步框图Word文档下载推荐.docx(37页珍藏版)》请在冰豆网上搜索。
不成立时在出口处标明则标明“否”或“N”。
流程线
算法进行的前进方向以及先后顺序
连结点
连接另一页或另一部分的框图
注释框
帮助编者或阅读者理解框图
(3)程序框图的构成
一个程序框图包括以下几部分:
实现不同算法功能的相对应的程序框;
带箭头的流程线;
程序框内必要的说明文字。
3.几种重要的结构
(1)顺序结构
顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的。
它是由若干个依次执行的步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
见示意图和实例:
顺序结构在程序框图中的体现就是用流程线将程序框自上而下地连接起来,按顺序执行算法步骤。
如在示意图中,A框和B框是依次执行的,只有在执行完A框指定的操作后,才能接着执行B框所指定的操作。
(2)条件结构
如下面图示中虚线框内是一个条件结构,此结构中含有一个判断框,算法执行到此判断给定的条件P是否成立,选择不同的执行框(A框、B框)。
无论P条件是否成立,只能执行A框或B框之一,不可能既执行A框又执行B框,也不可能A框、B框都不执行。
A框或B框中可以有一个是空的,即不执行任何操作。
见示意图
(3)循环结构
在一些算法中要求重复执行同一操作的结构称为循环结构。
即从算法某处开始,按照一定条件重复执行某一处理过程。
重复执行的处理步骤称为循环体。
循环结构有两种形式:
当型循环结构和直到型循环结构。
①当型循环结构,如左下图所示,它的功能是当给定的条件P成立时,执行A框,A框执行完毕后,返回来再判断条件P是否成立,如果仍然成立,返回来再执行A框,如此反复执行A框,直到某一次返回来判断条件P不成立时为止,此时不再执行A框,离开循环结构。
继续执行下面的框图。
②直到型循环结构,如右下图所示,它的功能是先执行重复执行的A框,然后判断给定的条件P是否成立,如果P仍然不成立,则返回来继续执行A框,再判断条件P是否成立。
以次重复操作,直到某一次给定的判断条件P时成立为止,此时不再返回来执行A框,离开循环结构。
4.几种重要的语句
1).输入语句
输入语句的格式:
INPUT“提示内容”;
变量
例如:
INPUT“x=”;
x功能:
实现算法的输入变量信息(数值或字符)的功能。
要求:
(1)输入语句要求输入的值是具体的常量;
(2)提示内容提示用户输入的是什么信息,必须加双引号,提示内容“原原本本”的在计算机屏幕上显示,提示内容与变量之间要用分号隔开;
(3)一个输入语句可以给多个变量赋值,中间用“,”分隔;
输入语句还可以是““提示内容1”;
变量1,“提示内容2”;
变量2,“提示内容3”;
变量3,……”的形式。
INPUT“a=,b=,c=,”;
a,b,c。
2).输出语句
输出语句的一般格式:
PRINT“提示内容”;
表达式
PRINT“S=”;
S
功能:
实现算法输出信息(表达式)
(1)表达式是指算法和程序要求输出的信息;
(2)提示内容提示用户要输出的是什么信息,提示内容必须加双引号,提示内容要用分号和表达式分开。
(3)如同输入语句一样,输出语句可以一次完成输出多个表达式的功能,不同的表达式之间可用“,”分隔;
输出语句还可以是“提示内容1”;
表达式1,“提示内容2”;
表达式2,“提示内容3”;
表达式3,……”的形式;
PRINT“a,b,c:
”;
a,b,c。
3).赋值语句
赋值语句的一般格式:
变量=表达式
赋值语句中的“=”称作赋值号
作用:
赋值语句的作用是将表达式所代表的值赋给变量;
(1)赋值语句左边只能是变量名字,而不是表达式,右边表达式可以是一个常量、变量或含变量的运算式。
如:
2=x是错误的;
(2)赋值号的左右两边不能对换。
赋值语句是将赋值号右边的表达式的值赋给赋值号左边的变量。
如“A=B”“B=A”的含义运行结果是不同的,如x=5是对的,5=x是错的,A+B=C是错的,C=A+B是对的。
(3)不能利用赋值语句进行代数式的演算。
(如化简、因式分解、解方程等),如
这是实现不了的。
在赋值号右边表达式中每一个变量的值必须事先赋给确定的值。
在一个赋值语句中只能给一个变量赋值。
不能出现两个或以上的“=”。
但对于同一个变量可以多次赋值。
4).条件语句
(1)“IF—THEN—ELSE”语句
格式:
IF条件THEN
语句1
ELSE
语句2
ENDIF
说明:
在“IF—THEN—ELSE”语句中,“条件”表示判断的条件,“语句1”表示满足条件时执行的操作内容;
“语句2”表示不满足条件时执行的操作内容;
ENDIF表示条件语句的结束。
计算机在执行“IF—THEN—ELSE”语句时,首先对IF后的条件进行判断,如果符合条件,则执行THEN后面的“语句1”;
若不符合条件,则执行ELSE后面的“语句2”。
(2)“IF—THEN”语句
语句
“条件”表示判断的条件;
“语句”表示满足条件时执行的操作内容,条件不满足时,直接结束判断过程;
计算机在执行“IF—THEN”语句时,首先对IF后的条件进行判断,如果符合条件就执行THEN后边的语句,若不符合条件则直接结束该条件语句,转而执行其它后面的语句。
5).循环语句
(1)当型循环语句
当型(WHILE型)语句的一般格式为:
WHILE条件
循环体
WEND
计算机执行此程序时,遇到WHILE语句,先判断条件是否成立,如果成立,则执行WHILE和WEND之间的循环体,然后返回到WHILE语句再判断上述条件是否成立,如果成立,再执行循环体,这个过程反复执行,直到一次返回到WHILE语句判断上述条件不成立为止,这时不再执行循环体,而是跳到WEND语句后,执行WEND后面的语句。
因此当型循环又称“前测试型”循环,也就是我们经常讲的“先测试后执行”、“先判断后循环”。
(2)直到型循环语句
直到型(UNTIL型)语句的一般格式为:
DO
LOOPUNTIL条件
计算机执行UNTIL语句时,先执行DO和LOOPUNTIL之间的循环体,然后判断“LOOPUNTIL”后面的条件是否成立,如果条件成立,返回DO语句处重新执行循环体。
这个过程反复执行,直到一次判断“LOOPUNTIL”后面的条件条件不成立为止,这时不再返回执行循环体,而是跳出循环体执行“LOOPUNTIL条件”下面的语句。
因此直到型循环又称“后测试型”循环,也就是我们经常讲的“先执行后测试”、“先循环后判断”。
5.几个重要的算法案例
1.求最大公约数
(1)短除法
求两个正整数的最大公约数的步骤:
先用两个数公有的质因数连续去除,一直除到所得的商是两个互质数为止,然后把所有的除数连乘起来。
(2)穷举法(也叫枚举法)
穷举法求两个正整数的最大公约数的解题步骤:
从两个数中较小数开始由大到小列举,直到找到公约数立即中断列举,得到的公约数便是最大公约数。
(3)辗转相除法
辗转相除法求两个数的最大公约数,其算法可以描述如下:
①输入两个正整数m和n;
②求余数r:
计算m除以n,将所得余数存放到变量r中;
③更新被除数和余数:
m=n,n=r;
④判断余数r是否为0。
若余数为0,则输出结果;
否则转向第②步继续循环执行。
如此循环,直到得到结果为止。
(4)更相减损术
我国早期也有解决求最大公约数问题的算法,就是更相减损术。
在《九章算术》中记载了更相减损术求最大公约数的步骤:
可半者半之,不可半者,副置分母•子之数,以少减多,更相减损,求其等也,以等数约之。
步骤:
Ⅰ.任意给出两个正数;
判断它们是否都是偶数。
若是,用2约简;
若不是,执行第二步。
Ⅱ.以较大的数减去较小的数,接着把较小的数与所得的差比较,并以大数减小数。
继续这操作,直到所得的数相等为止,则这个数(等数)就是所求的最大公约数。
2.秦九韶算法
秦九韶算法的一般规则:
秦九韶算法适用一般的多项式f(x)=anxn+an-1xn-1+….+a1x+a0的求值问题。
用秦九韶算法求一般多项式f(x)=anxn+an-1xn-1+….+a1x+a0当x=x0时的函数值,可把n次多项式的求值问题转化成求n个一次多项式的值的问题,即求
v0=an
v1=anx+an-1
v2=v1x+an-2
v3=v2x+an-3
……..
vn=vn-1x+a0
观察秦九韶算法的数学模型,计算vk时要用到vk-1的值,若令v0=an。
我们可以得到下面的递推公式:
vk=vk-1+an-k(k=1,2,…n)
这是一个在秦九韶算法中反复执行的步骤,可以用循环结构来实现。
四.典例解析
题型1:
算法概念
例1.下列说法正确的是()
A.算法就是某个问题的解题过程;
B.算法执行后可以产生不同的结果;
C.解决某一个具体问题算法不同结果不同;
D.算法执行步骤的次数不可以为很大,否则无法实施。
解析:
答案为选项B;
选项B,例如:
判断一个整数是否为偶数,结果为“是偶数”和“不是偶数”两种;
选项A,算法不能等同于解法;
选项C,解决某一个具体问题算法不同结果应该相同,否则算法构造的有问题;
选项D,算法可以为很多次,但不可以无限次。
点评:
算法一般是机械的,有时需要进行大量的重复计算。
只要按部就班去做,总能算出结果。
通常把算法过程称为“数学机械化”。
数学机械化的最大优点是它可以借助计算机来完成;
实际上处理任何问题都需要算法。
中国象棋有中国象棋的棋谱、走法、胜负的评判准则;
而国际象棋有国际象棋的棋谱、走法、胜负的评判准则;
再比如申请出国有一系列的先后手续,购买物品也有相关的手续……。
例2.下列语句中是算法的个数为()
①从济南到巴黎:
先从济南坐火车到北京,再坐飞机到巴黎;
②统筹法中“烧水泡茶”的故事;
③测量某棵树的高度,判断其是否是大树;
④已知三角形的一部分边长和角,借助正余弦定理求得剩余的边角,再利用三角形的面积公式求出该三角形的面积。
A.1B.2C.3D.4
正确选项为C,③中我们对“树的大小”没有明确的标准,无法完成任务,不是有效的算法构造。
①中,勾画了从济南到巴黎的行程安排,完成了任务;
②中,节约时间,烧水泡茶完成了任务;
④中,纯数学问题,借助正、余弦定理解三角形,进而求出三角形的面积。
算法过程要做到能一步一步的执行,每一步执行的操作,必须确切,不能含混不清,且在有限步后的必须得到问题的结果。
题型2:
经典算法
例3.一个人带着三只狼和三只羚羊过河,只有一条船,同船可容纳一个人和两只动物,没有人在的时候,如果狼的数量不少于羚羊的数量就会吃羚羊。
该人如何将动物转移过河?
请设计算法?
任何动物同船不用考虑动物的争斗但需考虑承载的数量,还应考虑到两岸的动物都得保证狼的数量要小于羚羊的数量,故在算法的构造过程中尽可能保证船里面有狼,这样才能使得两岸的羚羊数量占到优势,具体算法如下:
算法步骤:
第一步:
人带两只狼过河,并自己返回;
第二步:
人带一只狼过河,自己返回;
第三步:
人带两只羚羊过河,并带两只狼返回;
第四步:
人带一只羊过河,自己返回;
第五步:
人带两只狼过河。
算法是解决某一类问题的精确描述,有些问题使用形式化、程序化的刻画是最恰当的。
这就要求我们在写算法时应精练、简练、清晰地表达,要善于分析任何可能出现的情况,体现思维的严密性和完整性。
本题型解决问题的算法中某些步骤重复进行多次才能解决,在现实生活中,很多较复杂的问题经常遇到这样的问题,设计算法的时候,如果能够合适地利用某些步骤的重复,不但可以使得问题变得简单,而且可以提高工作效率。
例4.这是中国古代的一个著名算法案例:
一群小兔一群鸡,两群合到一群里,要数腿48,要数脑袋17,多少小兔多少鸡?
求解鸡兔的问题简单直观,却包含着深刻的算法思想。
应用解二元一次方程组的方法来求解鸡兔同笼问题。
设有小鸡x只,小兔y只,则有
将方程组中的第一个方程两变乘-2加到第二个方程中去,得到
,得到y=7;
将y=7代入
(1)得x=10。
解决这些问题的基本思想并不复杂,很清晰,但叙述起来很烦琐,有的步骤非常多,有的计算量很大,有时候完全依靠人力完成这些工作很困难。
但是这些恰恰是计算机的长处,它能不厌其烦的枯燥的、重复的、繁琐的工作。
但算法也有优劣,我们要追求高效。
题型3:
顺序结构
例5.写出通过尺轨作图确定线段AB一个5等分点的算法。
我们借助于平行线定理,把位置的比例关系变成已知的比例关系,只要按照规则一步一步去做就能完成任务。
算法分析:
从已知线段的左端点A出发,任意作一条与AB不平行的射线AP;
在射线上任取一个不同于端点A的点C,得到线段AC;
在射线上延AC的方向截取线段CE=AC;
在射线上延AC的方向截取线段EF=AC;
在射线上延AC的方向截取线段FG=AC;
第六步:
在射线上延AC的方向截取线段GD=AC,那么线段AD=5AB;
第七步:
连接DB;
第八步:
过C作BD的平行线,交线段AB于M,这样点M就是线段AB的一个5等分点。
程序框图:
这个算法步骤具有一般性,对于任意自然数n,都可以按照这个算法的思想,设计出确定线段的n等分点的步骤,解决问题。
例6.有关专家建议,在未来几年内,中国的通货膨胀率保持在3%左右,这将对我国经济的稳定有利无害。
所谓通货膨胀率为3%,指的是每年消费品的价格增长率为3%。
在这种情况下,某种品牌的钢琴2004年的价格是10000元,请用流程图描述这种钢琴今后四年的价格变化情况,并输出四年后的价格。
用P表示钢琴的价格,不难看出如下算法步骤:
2005年P=10000×
(1+3%)=10300;
2006年P=10300×
(1+3%)=10609;
2007年P=10609×
(1+3%)=10927.27;
2008年P=10927.27×
(1+3%)=11255.09;
因此,价格的变化情况表为:
年份
2004
2005
2006
2007
2008
钢琴的价格
10000
10300
10609
10927.27
11255.09
程序框图为:
顺序结构只须严格按照传统的解决数学问题的解题思路,
将问题解决掉。
最后将解题步骤“细化”就可以。
“细化”指的
是写出算法步骤、画出程序框图。
题型4:
条件结构
例7.设计算法判断一元二次方程
是否有实数根,并画出相应的程序框图。
算法步骤如下:
输入一元二次方程的系数:
a,b,c;
计算△
的值;
判断△≥0是否成立。
若△≥0成立,输出“方程有实根”;
否则输出“方程无实根”。
结束算法。
相应的程序框图如下:
根据一元二次方程的意义,需要计算判别式△
的值。
再分成两种情况处理:
(1)当△≥0时,一元二次方程有实数根;
(2)当△<0时,一元二次方程无实数根。
该问题实际上是一个分类讨论问题,根据一元二次方程系数的不同情况,最后结果就不同。
因而当给出一个一元二次方程时,必须先确定判别式的值,然后再用判别式的值的取值情况确定方程是否有解。
该例仅用顺序结构是办不到的,要对判别式的值进行判断,需要用到条件结构。
例8.
(1)设计算法,求
的解,并画出流程图。
对于方程
来讲,应该分情况讨论方程的解。
我们要对一次项系数a和常数项b的取值情况进行分类,分类如下:
(1)当a≠0时,方程有唯一的实数解是
;
(2)当a=0,b=0时,全体实数都是方程的解;
(3)当a=0,b≠0时,方程无解。
联想数学中的分类讨论的处理方式。
可得如下算法步骤:
判断a是否不为零。
若成立,输出结果“解为
判断a=0,b=0是否同时成立。
若成立,输出结果“解集为R”;
判断a=0,b≠0是否同时成立。
若成立,输出结果“方程无解”,结束。
Y
(2)。
设计算法,找出输入的三个不相等实数a、b、c中的最大值,并画出流程图。
输入a,b,c的值;
判断a>
b是否成立,若成立,则执行第三步;
否则执行第四步;
c是否成立,若成立,则输出a,并结束;
否则输出c,并结束;
判断b>
c是否成立,若成立,则输出b,并结束;
否则输出c,并结束。
条件结构嵌套与条件结构叠加的区别是:
(1)条件结构叠加,程序执行时需依次对“条件1”、“条件2”、“条件3”……都进行判断只有遇到能满足的条件才执行该条件对应的操作。
(2)条件结构的嵌套中,“条件2”是“条件1”的一个分支,“条件3”是“条件2”的一个分支,……依此类推,这些条件中很多在算法执行过程中根据所处的分支位置不同可能不被执行。
(3)条件结构嵌套所涉及的“条件2”、“条件3”……是在前面的所有
条件依次一个一个的满足“分支条件成立”的情况下才能执行的此操作,是
多个条件同时成立的叠加和复合。
题型5:
循环结构
例9.设计一个算法,求
的值,并划出程序框图。
sum=0;
i=0;
sum=sum+2i;
i=i+1;
判断i是否大于49,若成立,则输出sum,结束;
否则返回第三步重新执行。
1.如果算法问题里涉及的运算进行了许多次重复的操作,且先后参与运算的数之间有相同的规律,就可引入变量循环参与运算(我们称之为循环变量),应用于循环结构。
在循环结构中,要注意根据条件设计合理的计数变量、累加和累乘变量及其个数等,特别要求条件的表述要恰当、精确。
2.累加变量的值初始值一般取成0,而累乘变量的初始值一般取成1。
例10.相传古代的印度国王要奖赏国际象棋的发明者,问他需要什么。
发明者说:
陛下,在国际象棋的第一个格子里面放1粒麦子,在第二个格子里面放2粒麦子,第三个格子放4粒麦子,以后每个格子中的麦粒数都是他前一个格子中麦粒数的二倍,依此类推(国际象棋棋盘共有64个格子)。
请将这些麦子赏给我,我将感激不尽。
国王想这还不容易,就让人扛了一袋小麦,但不到一会儿就没了,最后一算结果,全印度一年生产的粮食也不够。
国王很奇怪,小小的“棋盘”,不足100个格子,如此计算怎么能放这么多麦子?
试用程序框图表示一下算法过程。
将实际问题转化为数学模型,该问题就是来求
的和
对于开放探究问题,我们可以建立数学模型(上面的题目要与等比数列的定义、性质和公式联系起来)和过程模型来分析好算法,通过设计算法以及语言的描述选择一些成熟的办法进行处理。
像上面应用到了等比数列的通项公式和前n项和公式。
输入、输出和赋值语句
例10.判断下列给出的输入语句、输出语句和赋值语句是否正确?
为什么?
(1)输入语句INPUTa;
b;
c
(2)输出语句A=4
(3)赋值语句3=B
(4)赋值语句A=B=-2
(1)错,变量之间应用“,”号隔开;
(2)错,PRINT语句不能用赋值号“=”;
(3)错,赋值语句中“=”号左右不能互换;
(4)错,一个赋值语句只能给一个变量赋值。
输入语句、输出语句和赋值语句基本上对应于算法中的顺序结构。
输入语句、输出语句和赋值语句都不包括“控制转移”,由它们组成的程序段必然是顺序结构。
例11.请写出下面运算输出的结果。
(1)
(2)
(3)
(1)16;
是将a,b和的一半赋值给变量c,语句
是将c的平方赋值给d,最后输出d的值。
(2)1,2,3;
是将a,b的和赋值给c,语句
是将
的值赋值给了b。
(3)20,30,20;
经过语句
后a,b,c的值是20,20,30。
后a,b,c的值是20,30,30。
后a,b,c的值是20,30,20。
语句的识别问题是一个逆向性思维,一般我们认为我们的学习是从算法步骤(自然语言)至程序框图,再到算法语言(程序)。
如果将程序摆在我们的面前时,我们要从识别逐个语句,整体把握,概括程序的功能。
题型6:
赋值语句的应用
例12.写出求三个数a,b,c的方差的程序。
方差是在初中统计内容中学习过的知识,计算所有数的方差首先计算所有数的平均数
,通过公式
来计算。
计算平均数
计算方差
得到的结果即为所求。
程序如下:
INPUTa,b,c
y=(a+b+c)/3
S=((a-y)2+(b-y)2+(c-y)2)/3
PRINTS
END
套用公式求值问题是传统数学求值问题的一种,它是一种典型的顺序结构,也就