分析 随着点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 输入一个实数,画出求函数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]内取整数,因此,只要求出函数的自变量对应的每一个函数值,从中找出最大值便可以解决问题.
解 程序框图如图所示.
点评 一般地,对一些有规律的重复计算的算法,如累计求和、累乘求积等问题通常需要用循环结构来执行.同时要注意,循环结构不能是永不休止的“死循环”,必须在某一条件下终止循环,这就需要条件结构来进行判断.所以说,循环结构中一定包括条件结构.
总之,函数与算法虽各自独立,但我们可以从内涵与外延两个方面找到它们的交汇点.因此,我们平时要注意多联系、多思考,以便更好地挖掘算法中的函数思想,更好地把握并灵活应用算法中的函数思想.
5 解读输入、输出、赋值语句
一、输入、输出语句
输入语句的一般格式为
若有多个输入的量,需要一个一个输入,计算机可以给出提示框,这时的输入格式为
“提示内容”一般是提示用户输入什么样的信息.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的值,在数的交换问题中常常要再引入一个变量,否则会造成数值的丢失.
6 条件语句小聚
一、常用的条件语句
条件语句是用来表达算法中的条件结构的,主要有两种形式,一种是“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*x+1”,故y=
答案 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
7 透析循环语句
循环语句是用来实现算法中的循环结构的,主要用于处理一些需要反复执行的运算任务.
一、两种循环语句
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