分析 随着点P的位置不同,△APB的面积与路程x有不同的对应关系,所以需要先判断点P的位置,这就需要用到条件结构.先根据题意写出算法,再根据算法画出程序框图.即
第一步,按照题意,y与x的关系满足分段函数:
y=
第二步,用合适的含条件结构的程序框图表示该分段函数.
解 程序框图如图所示.
点评 该题中的分段函数是分三段的函数,需引入两个判断框.至于判断框的内容是没有顺序的,但与下一图形的内容或操作必须相互对应.同时,在画程序框图时,要特别注意图形符号的规范性.
3.循环结构
如果问题中进行了重复的运算,且有相同的规律,就可根据需要引入相关变量,利用这些规律组成一个循环体,用循环结构来解决.
例2某机械厂为增加产值进行了技术革新.据统计2009年的生产总值为500万元,技术革新后预计每年的生产总值比上一年增加5%,问最早要到哪一年生产总值才能超过600万元,试用程序框图表示.
分析 用变量n,a分别表示所经过的年数和生产总值的数量,注意变量的初始值以及递加的值是多少.由题意知第n年后的生产总值为a=500(1+0.05)n,此时为(2009+n)年.由于题中进行了重复的运算,故应引入循环结构.
解 程序框图如图所示.
点评 在本例中,给出了当型循环结构的框图,同学们可以自行完成直到型循环结构.
4 循环结构的应用
在循环结构中,经常会出现两个变量:
计数变量和累计变量.计数变量往往出现在循环结构中,起到循环计数的作用,这个变量一般出现在执行或终止循环体的条件中;而累计变量用于输出结果,往往与计数变量同步执行,一般有累加与累乘两种.下面举例说明循环结构的应用.
一、求和或求积问题
例1 设计两个求1+3+5+…+2011的值的算法的程序框图.
分析 本题是一个累加问题,由于加数较多,采用逐一相加的思路不可取,引入变量,应用循环结构解决:
(1)设一个循环变量为i,初始值为1;再设一个累加变量为S,初始值为0.
(2)循环体为S=S+i,i=i+2.(3)终止条件为i>2011.
解 用直到型循环结构设计的程序框图如图1所示,用当型循环结构设计的程序框图如图2所示.
点评 涉及求多项的和与积的程序框图要用到循环结构和条件结构.画图时要注意循环变量的初始值、终值以及循环变量的增量在程序中的作用.本题代表了一类相邻两个数的差为常数的求和问题的解法,在设计程序框图时要注意前后两个加数相差2,此时计数变量不是i=i+1,而是i=i+2,要根据题意灵活地改变算法中的相应部分.
二、叠加求值
例2 画出求式子
(共9个3)的值的一个程序框图.
分析 本题是一个叠加问题,由于前后重复了多次相同的运算,所以应采用循环结构来设计算法,但利用循环结构实现算法需搞清初始值是什么.本题中初始值可设定为a1=
,第一次循环得到a2=
,第二次循环得到a3=
,…,a9=
,共循环了8次.
解 程序框图如图所示.
点评 如果算法问题里涉及的运算有许多重复的步骤,且数之间有相同的规律,那么可引入变量,应用循环结构.在循环结构中,要注意根据条件,设计合理的计数变量、累计变量,特别要注意条件的表述要恰当、精确,以免出现多一次循环或少一次循环的情况.
5 三种逻辑结构辨与析
算法中有三种逻辑结构,即顺序结构、条件结构、循环结构,同学们初学这三种结构,容易混淆.本文将这三种结构进行比较,希望同学们能深刻体会这三种结构的差异与共同点.
一、三种基本逻辑结构
顺序结构
按照语句的先后顺序,从上而下依次执行这些语句,该结构不具备控制流程的作用,是任何一个算法都离不开的基本结构.
条件结构
根据是否满足某种条件来选择程序的走向.当条件满足时,运行一个分支,不满足时,运行另一个分支.
循环结构
从某处开始,按照一定的条件,反复执行某一处理步骤的情况.用来处理一些进行反复操作的问题.
二、三种基本逻辑结构的共同特点
1.只有一个入口.
2.只有一个出口,注意一个菱形判断框有两个出口,而一个条件结构只有一个出口,不要将菱形框的出口和条件结构的出口混为一谈.
3.结构内的每一部分都有机会被执行到,即对每一个框来说都应当有一条从入口到出口的路径通过它,如图1中的A,没有一条从入口到出口的路径通过它,是不符合要求的程序框图.
4.结构内不存在死循环,即无终止的循环,如图2就是一个死循环,在程序框图中是不允许有死循环出现的.
三种基本结构的这些共同特点,也是检查一个程序框图或算法是否正确、合理的方法和试金石.
6 算法与函数的交汇
一、顺序结构与函数的交汇
例1 输入一个实数,画出求函数y=x3+3x-7的值的一个程序框图.
解 程序框图如图所示.
点评 一般的,对于一次函数、二次函数、高次函数等的求值问题,通常采用顺序结构.
二、条件结构与函数的交汇
例2 假设到银行办理个人异地汇款时,银行要收取一定的手续费,汇款不超过100元,收取1元手续费;超过100元但不超过5000元,按汇款额的1%收取手续费;超过5000元,一律收取50元手续费.试写出汇款额为x元时,银行收取手续费y元的计算方法,并画出程序框图.
解 本题是一个实际问题,应先建立数学模型:
y=
由此可知,求手续费,需先判断x的取值范围.故应用条件结构描述,程序框图如图所示.
点评 对于三段或以上的分段函数,可以写成嵌套式条件结构,也可以用顺序结构一段一段地讨论.
三、循环结构与函数的交汇
例3 已知函数y=x2+2x-5,x∈[-20,20],且x∈Z,画出求该函数最大值的程序框图.
分析 因为所给函数是二次函数,其定义域是{x|-20≤x≤20,x∈Z},即函数只能在[-20,20]内取整数,因此,只要求出函数的自变量对应的每一个函数值,从中找出最大值便可以解决问题.
解 程序框图如图所示.
点评 一般地,对一些有规律的重复计算的算法,如累计求和、累乘求积等问题通常需要用循环结构来执行.同时要注意,循环结构不能是永不休止的“死循环”,必须在某一条件下终止循环,这就需要条件结构来进行判断.所以说,循环结构中一定包括条件结构.
总之,函数与算法虽各自独立,但我们可以从内涵与外延两个方面找到它们的交汇点.因此,我们平时要注意多联系、多思考,以便更好地挖掘算法中的函数思想,更好地把握并灵活应用算法中的函数思想.
7 解读输入、输出、赋值语句
一、输入、输出语句
输入语句的一般格式为
若有多个输入的量,需要一个一个输入,计算机可以给出提示框,这时的输入格式为
“提示内容”一般是提示用户输入什么样的信息.INPUT语句可以给多个变量赋值,如INPUT “三角形的三条边长为”;a,b,c.
输出语句的一般格式为
上述输出的只是一个值,若要连同式子一起输出,则格式为
输入、输出语句的提示内容要放到“”内,提示内容和表达式之间用“;”隔开,变量之间用“,”隔开.
例1 已知正四棱柱的底边长a和高h,试编写程序,计算该四棱柱的体积.
解
INPUT a
INPUT h
PRINT “四棱柱的体积为”;h*a^2
END
或
INPUT“四棱柱的底边长是”;a
INPUT“四棱柱的高是”;h
PRINT“四棱柱的体积为”;h*a^2
END
点评 本题给出了两个程序,区别是有没有提示内容.其本质是一样的,只是程序二更好些,便于使用者操作.另外,语句是面向计算机的,格式不对就出错或者拒绝执行,所以使用语句时特别讲究格式规范,哪怕一个标点也要注意.
二、赋值语句
赋值语句的一般格式为
赋值语句中的“=”叫做赋值号,计算机执行赋值语句时,先计算“=”右边的表达式,然后将结果赋给左边的变量,它和数学中的等号不同.
赋值号“=”左边只能是变量,不能是表达式等;赋值号的右侧可以是常数,也可以是表达式,对于数学表达式,程序会先将表达式的值求出,再赋给左边的变量.
例2 在一次数学考试中,小明、小亮、小强的成绩分别为a、b、c.后来发现统计错了,a应为小亮的成绩,b为小强的成绩,c为小明的成绩,试编写一个程序,更正成绩单,并输出.
分析 本题实际上是交换三个数的值,将a的值给b,b的值给c,c的值给a.
解
INPUT “三位同学的成绩分别为”;a,b,c
x=a
a=c
c=b
b=x
PRINT “三位同学的真正成绩分别为”;a,b,c
END
点评 引入的第四个变量x的作用是存放变量a的值,在数的交换问题中常常要再引入一个变量,否则会造成数值的丢失.
8 条件语句小聚
一、常用的条件语句
条件语句是用来表达算法中的条件结构的,主要有两种形式,一种是“IF-THEN-ENDIF”语句,一种是“IF-THEN-ELSE-ENDIF”语句.其中,“ENDIF”是条件语句的结束标志.
当判断条件成立与否都需要执行某操作时,使用“IF-THEN-ELSE-ENDIF”语句;当条件判断后只需执行一种操作时,使用“IF-THEN-ENDIF”语句.
例1 运行如图所示的程序,输出的y与输入的x满足的关系式为____________________.
INPUT x
IF x<1 OR x>8 THEN
y=2^x
ELSE
y=3*x+1
ENDIF
PRINTy
END
分析 本题中使用的是“IF-THEN-ELSE-ENDIF”语句.当条件成立时,执行语句“y=2^x”,不成立时,执行语句“y=3]2x,x<1或x>8,
3x+1,1≤x≤8.
答案 y=
点评 求分段函数的值是条件语句的重要应用之一.
二、条件语句的复合
当问题比较复杂,需要执行的分支较多时,可多次使用条件语句,并列或嵌套使用.
并列形式如图:
IF 条件1 THEN
语句体1
ENDIF
IF 条件2 THEN
语句体2
ENDIF
嵌套形式如图:
IF 条件1 THEN
语句体1
ELSE
IF 条件2 THEN
语句体2
ELSE
语句体3
ENDIF
ENDIF
注意:
①一般要求一个“IF”都要有一个“ENDIF”与其对应;②在用条件语句的嵌套书写程序时,要弄清哪个“IF”对应哪个“ENDIF”;③书写时,注意每一层要对齐.
例2 已知a,b,c三个实数中,有且只有一个是负数,设计一个程序,筛选出这个负数.
分析 需要对这三个数逐一进行判断,故用条件语句的并列形式或嵌套形式.
解 程序如图.
INPUT “a,b,c=”;a,b,c
IF a<0 THEN
PRINT a
ELSE
IF b<0 THEN
PRINT b
ELSE
PRINT c
ENDIF
ENDIF
END
9 透析循环语句
循环语句是用来实现算法中的循环结构的,主要用于处理一些需要反复执行的运算任务.
一、两种循环语句
1.WHILE语句
(1)格式:
如图.
WHILE 条件
循环体
WEND
(2)功能:
用于实现当型循环.
(3)工作原理:
先判断条件是否成立,如果成立,则执行循环体;然后返回到WHILE语句再判断条件是否成立,如果成立,再执行循环体,这个过程反复执行,直到返回后条件不成立为止,这时不再执行循环体,直接跳出循环,执行“WEND”后面的语句.循环体可能一次也不执行.
2.UNTIL语句
(1)格式:
如图.
DO
循环体
LOOPUNTIL 条件
(2)功能:
用于实现直到型循环.
(3)工作原理:
先执行一次循环体,然后判断“LOOPUNTIL”后面的条件是否成立,如果条件不成立,返回重新执行循环体,这个过程反复执行,直到“LOOPUNTIL”后面的条件成立为止.这时跳出循环体,执行“LOOPUNTIL”后面的语句.循环体至少执行一次.
3.两种语句间的联系
(1)都是反复执行某种操作的语句;
(2)二者之间可以相互转化.同一问题的算法,可由两种语句来书写,但要注意“条件”的正确表述.
二、学习循环语句四注意
1.循环语句中的变量一般需要进行一定的初始化操作
累加变量的初始值通常取0,累乘变量的初始值通常取1.
2.在循环体中要有改变计数变量值的语句
每执行一次循环体,循环体中涉及到的变量一般都应发生改变,从而步步逼近满足跳出循环体的条件.
3.循环体中各语句的顺序
循环体中语句均相同,顺序不同时,运行后输出的结果一般不同.
4.循环体中,计数变量的取值范围
计数变量的初始值和终值是决定循环次数的重要因素,不容轻视.
三、数学应用
1.累加求和,累乘求积.
2.求含参不等式成立的参数的最大(小)值.
3.数字检索,即在某些数中搜索满足条件的数.
4.根据递推公式求项.
例 编写程序,计算2+23+25+…+299的值.
分析 这是一个累加问题,可以用WHILE语句,也可以用UNTIL语句来编写程序.
解 程序如图.
i=1
S=0
WHILE i<=50
S=S+2^(2*i-1)
i=i+1
WEND
PRINTS
END
点评 解决具体的构造循环语句的算法问题,要尽可能地少引入变量,因为较多的变量会使得程序设计比较麻烦.同一问题的程序并不唯一.本题也可用如图所示的程序表示.注意两程序中循环体部分的区别.当然了,变量的初值不同,程序也会有所改变.
i=1
S=0
WHILE i<=99
S=S+2^i
i=i+2
WEND
PRINT S
END