分析 由题意分析,当x≤200时,应缴纳资费2元,当x≥5000时,应缴纳资费50元,所以引入条件分支结构,200和5000是两个分段点.
解 程序框图如图.
点评 在一些需要判断的实际问题中,一般都会用到条件分支结构,在设计程序框图时,可先根据题意,设计算法,再根据算法画出程序框图.
5 循环结构的应用
在循环结构中,经常会出现两个变量:
计数变量和累计变量.计数变量往往出现在循环结构中,起到循环计数的作用,这个变量一般出现在执行或终止循环体的条件中;而累计变量用于输出结果,往往与计数变量同步执行,一般有累加与累乘两种.下面举例说明循环结构的应用.
一、求和或求积问题
例1 设计两个求1+3+5+…+2015的值的算法的程序框图.
分析 本题是一个累加问题,由于加数较多,采用逐一相加的思路不可取,引入变量,应用循环结构解决:
(1)设一个循环变量为i,初始值为1;再设一个累加变量为S,初始值为0.
(2)循环体为S=S+i,i=i+2.(3)终止条件为i>2015.
解 方法一 程序框图如图1所示,
方法二 程序框图如图2所示.
评注 涉及求多项的和与积的程序框图要用到循环结构和条件分支结构.画图时要注意循环变量的初始值、终值以及循环变量的增量在程序中的作用.本题代表了一类相邻两个数的差为常数的求和问题的解法,在设计程序框图时要注意前后两个加数相差2,此时计数变量不是i=i+1,而是i=i+2,要根据题意灵活地改变算法中的相应部分.
二、叠加求值
例2 画出求式子
(共9个3)的值的一个程序框图.
分析 本题是一个叠加问题,由于前后重复了多次相同的运算,所以应采用循环结构来设计算法,但利用循环结构实现算法需搞清初始值是什么.本题中初始值可设定为a1=
,第一次循环得到a2=
,第二次循环得到a3=
,…,a9=
,共循环了8次.
解 程序框图如图所示.
评注 如果算法问题里涉及的运算有许多重复的步骤,且数之间有相同的规律,那么可引入变量,应用循环结构.在循环结构中,要注意根据条件,设计合理的计数变量、累计变量,特别要注意条件的表述要恰当、精确,以免出现多一次循环或少一次循环的情况.
6 三种逻辑结构辨析
算法中有三种逻辑结构,即顺序结构、条件分支结构、循环结构,同学们初学这三种结构,容易混淆.本文将这三种结构进行比较,希望同学们能深刻体会这三种结构的差异与共同点.
一、三种基本逻辑结构
顺序结构
按照语句的先后顺序,从上而下依次执行这些语句,该结构不具备控制流程的作用,是任何一个算法都离不开的基本结构.
条件分支结构
根据某种条件是否满足来选择程序的走向.当条件满足时,运行一个分支,不满足时,运行另一个分支.
循环结构
从某处开始,按照一定的条件,反复执行某一处理步骤的情况.用来处理一些反复进行操作的问题.
二、三种基本逻辑结构的共同特点
1.只有一个入口.
2.只有一个出口,注意一个菱形判断框有两个出口,而一个条件分支结构只有一个出口,不要将菱形框的出口和条件分支结构的出口混为一谈.
3.结构内的每一部分都有机会被执行到,即对每一个框来说都应当有一条从入口到出口的路径通过它,如图1中的A,没有一条从入口到出口的路径通过它,是不符合要求的程序框图.
4.结构内不存在死循环,即无终止的循环,如图2就是一个死循环,在程序框图中是不允许有死循环出现的.
三种基本结构的这些共同特点,也是检查一个程序框图或算法是否正确、合理的方法和试金石.
三、典例剖析
1.顺序结构
例1 已知点P(x0,y0)和直线l:
Ax+By+C=0,画出求点P(x0,y0)到直线l的距离d的算法的程序框图.
分析 利用点到直线的距离公式可画出其程序框图.
解 程序框图如图所示.
评注 顺序结构是由若干个依次执行的处理步骤组成的,这是任何一个算法都离不开的基本结构,它是最简单的算法结构,在程序框图中的体现就是用流程线自上而下地连接起来,按顺序执行算法的步骤.
2.条件分支结构
例2 画出解方程ax+b=0(a,b为常数)的一个算法的程序框图.
分析 在求解方程时,需要在方程两边同时除以a,这时对a是否为0的情况要加以讨论,当a=0时,又要对b是否为0分情况讨论.
解 程序框图如图所示.
评注 条件分支结构中要先根据指定条件进行判断,再由判断的结果决定选择执行哪一条路径.
3.循环结构
例3 某校高一
(1)班共有60人,市青少年保护中心来抽样检测同学们的身体素质,要求学号被3整除的同学参加体检,已知同学们的学号是从1到60号,请画出一个算法的程序框图,使其能够输出参加体检的同学的学号.
解 程序框图如图所示.
评注 循环结构按照一定的条件,反复执行某一处理步骤.循环结构要在某个条件下终止循环,这就需要条件分支结构来判断,在循环结构中都有一个计数变量和一个累加变量,计数变量用于记录循环次数,累加变量用于输出结果,计数变量和累加变量一般是同步执行的,累加一次,计数一次.
7 算法在生活实际中的应用
数学来源于生活,服务于社会,数学与生活息息相关,数学是有用的,在生活中做一件事情的方法和步骤有多种,生活中的许多问题都可以用算法描述,用程序框图表达.下面请欣赏三例算法问题.
一、第29届奥林匹克运动会的申办
例1 北京成功举办了2008年第29届夏季奥林匹克运动会.你知道在申办奥运会的最后阶段,国际奥委会是如何通过投票决定主办权归属的吗?
对选出的5个申办城市进行表决的操作程序是首先进行第一轮投票,如果有一个城市得票数超过总票数的一半,那么该城市将获得举办权;如果所有申办城市的得票数都不超过总票数的一半,则将得票数最少的城市淘汰,然后重复上述过程,直到选出一个申办城市为止.请设计一个算法表述上面过程,并画出程序框图.
解 算法步骤如下:
S1 投票.
S2 统计票数,如果有一个城市得票数超过总票数的一半,那么该城市就获得主办权;否则淘汰得票数最少的城市,转S1.
S3 宣布主办城市.
程序框图如下:
点评 算法本身就是用计算机解决一些实际问题的方法,一定要充分理解算法的特点.
二、奖金的发放
例2 某科研所决定拿出一定量的资金对科研人员进行奖励,按照科研成果价值的大小决定奖励前10名.第1名得全部奖金的一半多1万元,第2名得剩余的奖金的一半多1万元,第3名再得剩余奖金的一半多1万元,以此类推,到第10名恰得奖金1万元,请设计一个算法的程序求科研所最初拿出多少奖金进行奖励.
解 第10名的奖金额S1=1万元,第9名和第10名的总奖金额S2=(1+1)×2=4万元,第8名、第9名和第10名的总奖金额S3=(4+1)×2=10万元……总奖金额S10=(S9+1)×2,得递推公式S1=1,Sn+1=(Sn+1)×2,n=1,2,…,9.
程序:
程序框图:
S=1;
i=1;
while i<10
S=(S+1)*2;
i=i+1;
end
S
三、李白酒壶中的酒
例3 李白是我国唐代的一位伟大诗人,平时很喜欢喝酒,有一首打油诗讲了李白买酒的一件趣事,“无事街上走,提壶去买酒,遇店加一倍,见花喝一斗,三遇店和花,喝光壶中酒.”问:
李白的酒壶中原来有多少酒?
请用算法解释,画出程序框图.
解 通过逆向思考,李白遇到第三枝花时,壶中有1斗酒,遇到第三个店时,壶中有
斗酒;遇到第二枝花时,壶中有1+
=
斗酒,遇到第二个店时,壶中有
×
=
斗酒;遇到第一枝花时,壶中有1+
=
斗酒,遇到第一个店时,壶中有
×
=
斗酒.
根据以上分析可得算法步骤如下:
S1 S=0;
S2 I=1;
S3 S=
;
S4 I=I+1;
S5 如果I>3,则输出S;否则,转S3.
程序框图如图所示.