=z;
5输出b。
在这个算法中,我们根据最大值赋值为变量b比较不同的结果,以决定后面的操作。
上面算法的程序框图为:
否
是
否
是
注:
在这个问题的算法中两次运用了选择结构。
练习:
1写出求实系数一元二次方程ax2+bx+c=0(a≠0,a,b,c为常数)的根的算法。
2x+3x≤c
2编写出求函数y=(a,b,c为常数去)的值的算法中的选择结构。
x2+1x>c
3循环结构
前面我们学习了算法中的顺序结构,下面我们研究求s=1+2+3+……+100的算法。
分析:
如果按照逐个相加方法计算,需要运算99次和,这样既不方便书写,也不便于阅读,能否找到一种简捷的算法呢?
我们可以给定一个初始值i=1与s=s+i,随i的值每次按1递增,s的值也逐渐增大。
在条件i≤100时,可采取循环方式增加s的值,直到i>100时,终止求和运算,输出s的值,这样只要用一个循环方式就可表示出求和过程。
其算法如下:
否
是
注:
循环结构的框图可概括为:
否
是
上述框图中的虚线所示的结构即为循环结构。
例1.求100个数中的最大数的算法。
解:
记这100个不同的数分别为a1,a2,a3……a100。
其算法步骤为:
1.比较a1与a2,将较大的数记作b;
2.将b与a3进行比较,将较大的数记作b;
3.将b与a4进行比较,将较大的数记作b;
……
99.将b与a100进行比较,将较大的数记作b;
100.输出b(b的值即为所求的最大数)。
这里的第2步至第99步是重复进行的可以用循环的方式表示,此算法的程序框图是:
否
I<=100
否
是
是
你能指出其中的循环结构吗?
在许多程序设计中需要用到循环控制,例如,要输入某个班级所有同学成绩;求若干个数之和等等。
循环结构是算法的三种基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本结构单元。
因此,认识和掌握循环结构是进行程序设计的最基本的需要。
循环结构的算法是根据是否满足所需的条件以决定是否继续执行循环体中的操作。
练习:
1.下面是求方程f(x)=0的近似解的算法框图。
请指出其中的循环结构。
是
否
是否
否
是
注:
其中ε的表示预先约定的精确度为ε=0.01,它可以根据实际问题的需要而设定。
2.当x值由1开始,每次增加0.1,直到2。
试编写求y=ax2+bx+c的值的程序框图。
习题1.2
1.已知三角形的一边a和这条边上的高h,写出求其面积算法的顺序结构,并画出框图。
2.写出作一次函数y=2x+1的图象算法的顺序结构及程序框图。
3.按照历法的规定,如果某一年为闰年,那么或者这一年的年数能被4整除,但不能被100整除,或者能被400整除。
试写出判断某一年份是否为闰年的程序框图,并指出其中的选择结构。
x2,x∈(0,+∞)
4.画出求函数f(x)=1/2,x=0
-x+1,x∈(-∞,0)
的值的程序框图。
5.已知s=1+1/2+1/3+……+1/n+……试编写出用循环结构求前n项s刚好大于100的项数的程序框图。
6.一球从100米的高度自由落下,每次落地后又反跳到原来高度的一半,在落下,求它在第10次落地时,共经过多少米?
第10次反弹多高?
试编写求解过程中的循环结构。
2算法基本语句
在前面的学习中,解决问题的算法和程序框图来体现算法的基本过程,而这些过程是有许多语句组成,归纳起来有输入、输出语句;赋值语句,条件语句和循环语句。
这些语句就是设计算法让计算机可执行操作的基本语句。
当然,也是程序框图中的基本语句。
2.1输入、输出语句和赋值语句
不论多么简单的算法,都有开始和结束。
开始时首先就要有给入一些初始的信息,这就是输入语句。
它可以输入一些字母、n个方程或不等式,…等等。
总之,它是计算机开始工作首先执行的语句(命令)。
如解方程ax+b=0中;首先输入:
方程系数a、b。
又如比较实数x,y,z的大小,首先输入变量x,y,z。
一般地,算法语言开始后首先要输入的一些数据,变量、等信息的语句叫做输入语句。
另外在程序结束前也要有一个输出结果的语句(如打印语句),表示计算机工作将要结束,它也是和输入语句前后呼应的。
一般在程序框图中用来表示输入、输出语句。
在计算机开始工作后,首先完成了输入语句,它只能代表计算机将要执行哪一种程序而无法去完成这一程序,而要完成它。
首先还要对输入语句中的参变量赋值,或者让计算机按要求进行计算、建立某种函数等语句叫赋值语句。
它可以赋一些常量、变量、算术表达式、函数…。
一般框图中用表示赋值语句。
如比较三个实数的大小,开始赋值:
x,y,z的值就必须是常量。
而程序执行过程后又赋值,max=x(或max=y),则是给变量赋值。
又如:
解方程ax+b=0开始对参量变量a,b赋值应是常量赋值(解方程2x+1=0,就赋值a=2,b=1)而赋值:
x=-b/a(a≠0)这一赋值语句就称为算术表达式赋值。
例1指出下面解一元二次方程ax2+bx+c=0(a≠0)的程序框图的输入、输出语句,赋值语句:
是否
是否
解:
输入语句:
输入a,b,c
输出语句:
输出:
x
赋值语句:
(1)△=b2-4ac
(2)x:
无实根
(3)x=-b/2a
(4)x=(-b±√△)/2a。
2.2条件语句
在计算中经常会对某个数量、变量、关系式等作出判断而选择不同的结果执行后续操作时就需要用到条件算法语句。
如在解方程ax+b=0中,输入a,b后,要对“a=0?
”进行判断,而当a=0时,还要对“b=0?
”进行判断。
像这种是否符合某个条件的判断语句叫条件语句。
条件语句用在框图中常用表示。
例如解方程ax+b=0的算法程序框图是:
否是
否是
可以看出条件语句是在出现判断讨论时即分类讨论时才使用。
但是注意判断的结果只有是,否两种。
当然在一个程序框图中可能会出现多个条件语句。
例2:
写出判断某年是不是闰年的算法的程序框图,并写出其中的条件语句。
分析
(1)开始后输入某年:
x;
(2)对x进行判断,若x不是4的倍数,则x年不是闰年,即可输出:
x不是闰年。
(3)若x是4的倍数,还要对x继续判断,若x不是100的倍数,则x是闰年。
输出:
x是闰年。
(4)若x是100的倍数,还要对x进行判断,x是不是400的倍数,若是:
则x是闰年,输出x是闰年,若不是则x不是闰年,输出:
x不是闰年。
(5)结束。
解:
其算法的程序框图如下:
否是
是
否
否
是
在程序语句中三次出现条件语句,分别是:
(1)判断4整除x?
(2)100整除x?
(3)400整除x?
练习:
1.编写某正数是不是5的约数的算法的程序框图,并指出条件语句。
2.编写判断ABC是不是锐角三角形算法的程序框图,并指出其中的那些是条件语句。
3.自己编写一个算法的程序框图,并说明其中使用没使用条件语句。
若使用了,把它指出来。
2.3循环语句
在日常生活中,我们经常需要重复做某些事情,在我们算法语句中,对经常需要重复执行某些程序段,这就要用到循环语句了。
如求输入若干个数(例如5个数)的和的过程框图。
从这个例子可以看出:
1、循环是使指定的程序段重复执行,被重复的程序段称为循环体。
2、循环一般是有条件的,即在满足一定条件下,才能执行循环体,或在满足一定条件下,不再执行循环体。
3、在一个程序中,会出现多重循环,即一个循环内含有另一个循环,我们把这种循环称为循环嵌套。
循环是程序中常用技术,技巧性很强,其关键在于对所计算的问题进行分析,概括出带规律性的东西。
例1求100以内的奇数和。
分析:
此程序是求若干个数的和,因此需要使用累加器。
但由于相加的数是有规律的(100以内的奇数),不要逐一输入,由循环语句产生即可。
解:
练习:
1、求出105的所有约数。
2、鸡免同笼,笼中共有28个头,80只脚。
问鸡免各几只?
3、用一角、二角、五角组成一元,有多少种组成方法?