基本算法语句的重点剖析

2013-10-23 01:16王华国
高中生学习·高二版 2013年9期
关键词:程序框图赋值表达式

王华国

基本算法语句和大学内容联系得非常紧密,学好了这一节,再进入大学之后学习C语言就会轻松许多.当然我们高中生需要掌握的内容非常少,相对于大学内容来说也比较简单.这一节主要就包含了几个基本语句:输入输出语句、赋值语句、条件语句、循环语句等.

一、输入、输出语句

输入语句 (1)输入语句要求输入的值只能是具体的常数,不能是函数、变量或表达式;(2)提示内容与变量之间用分号“;”隔开,若输入多个变量,变量与变量之间用逗号“,”隔开.

输出语句 (1) “提示内容”提示用户输入什么样的信息,表达式是指程序要输出的数据;(2)输出语句可以输出常量、变量或表达式的值以及字符.

例1 写出已知函数[y=1(x>0),0(x=0),-1(x<0),] 输入[x]的值,求[y]的值的程序.

解析 程序为:

二、赋值语句

(1)赋值语句中的“=”称作赋值号,与数学中的等号的意义是不同的.赋值号的左右两边不能对换,它将赋值号右边的表达式的值赋给赋值号左边的变量;(2)赋值语句左边只能是变量名字,而不是表达式,右边表达式可以是一个数据、常量或算式;(3)对于一个变量可以多次赋值.

例2 (1)①给一个变量重复赋值.

②在此程序的基础上,设计一个程序,要求最后A的输出值是30.

(2)交换两个变量A,B的值,并输出交换前后的值.

分析 引入一个中间变量X,将A的值赋予X,又将B的值赋予A,再将X的值赋予B,从而达到交换A,B的值.(比如交换装满水的两个水桶里的水需要再找一个空桶)

(1)①程序:

②该变式的设计意图是加深对重复赋值的理解.

程序:

三、条件语句

条件语句的一般格式有两种:(1)IF—THEN—ELSE语句;(2)IF—THEN语句.

例3 编写程序,输入一元二次方程[ax2+bx+c=0]的系数,输出它的实数根.

分析 先把解决问题的思路用程序框图表示出来,然后再根据程序框图给出的算法步骤,逐步把算法用对应的程序语句表达出来.

我们知道,若判别式[Δ=b2-4ac>0],原方程有两个不相等的实数根[x1=-b+Δ2a],[x2=-b-Δ2a];若[Δ=0],原方程有两个相等的实数根[x1=x2=-b2a];若[Δ<0],原方程没有实数根.也就是说,在求解方程之前,需要判断判别式的符号.因此,这个过程可以用算法中的条件结构来实现.

又因为方程的两个根有相同的部分,为了避免重复计算,可以在计算[x1]和[x2]之前,先计算[p=-b2a],[q=Δ2a].

解 程序框图:(参照课本[P17])

注:SQR( )和ABS( )是两个函数,分别用来求某个数的平方根和绝对值.

即 [SQR(x)=x],[ABS(x)=x(x≥0),- x(x<0).]

例4 编写程序,使得任意输入的3个整数按从大到小的顺序输出.

分析 用[a,b,c]表示输入的3个整数;为了节约变量,把它们重新排列后,仍用[a,b,c]表示,并使[a≥b≥c].具体操作步骤如下.

第一步:输入3个整数[a,b,c].

第二步:将[a]与[b]比较,并把小者赋给[b],大者赋给[a].

第三步:将[a]与[c]比较,并把小者赋给[c],大者赋给[a],此时[a]已是三者中最大的.

第四步:将[b]与[c]比较,并把小者赋给[c],大者赋给[b],此时[a,b,c]已按从大到小的顺序排列好.

第五步:按顺序输出[a,b,c].

解 程序框图:(参照课本[P19])

点拨 条件语句使程序执行产生的分支,根据不同的条件执行不同的路线,使复杂问题简单化.有些复杂问题可用两层甚至多层循环解决.注意内外层的衔接,可以从循环体内转到循环体外,但不允许从循环体外转入循环体内.条件语句一般用在需要对条件进行判断的算法设计中,如判断一个数的正负,确定两个数的大小等问题,还有求分段函数的函数值等,往往要用条件语句,有时甚至要用到条件语句的嵌套.

四、循环语句

循环语句的一般格式有两种:(1)DO-UNTIL语句;(2)WHILE语句.

例5 编写程序,计算自然数1+2+3+…+99+100的和.

分析 这是一个累加问题.我们可以用WHILE型语句,也可以用UNTIL型语句.由此看来,解决问题的方法不是惟一的,当然程序的设计也是有多种的,只是程序简单与复杂的问题.

解 程序:

WHILE型:

点拨 循环语句主要用来实现算法中的循环结构,在处理一些需要反复执行的运算任务,如常用于累加求和、累乘求积等问题中.编程一般的步骤:先写出算法,再进行编程.

猜你喜欢
程序框图赋值表达式
L-代数上的赋值
“顺势而下”破解程序框图
一个混合核Hilbert型积分不等式及其算子范数表达式
表达式转换及求值探析
算法与程序框图常考类型
浅析C语言运算符及表达式的教学误区
强赋值幺半群上的加权Mealy机与加权Moore机的关系*
程序框图问题的精彩交汇
程序框图题盘点
利用赋值法解决抽象函数相关问题オ