(共25张PPT)
1.2.2
条件语句
一个算法中,经常会遇到一些条件的判断,算法的
流程根据条件是否成立有不同的流向.这就是条件结
构。用程序框图表示条件结构如下图(常见两种)
条件语句
IF—THEN—ELSE语句
IF—THEN语句
条件语句:
算法中的条件结构是由条件语句来表达的,是处理条件分支逻辑结构的算法语句。
1、条件语句的一般格式有两种:
(1)
IF—THEN语句
:
IF
条件
THEN
语句体
END
IF
计算机执行这种形式的条件语句时,也是首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体,否则执行END
IF
之后的语句。
步骤A
满足条件?
是
否
(2)
IF—THEN—ELSE语句:
IF
条件
THEN
语句体1
ELSE
语句体2
END
IF
步骤A
满足条件?
步骤B
是
否
当计算机执行上述语句时,首先对IF后的条件进行判断,如果条件符合,就执行THEN后的语句体1,否则执行ELSE后的语句体2。
(4)程序中的条件语句与程序框图中的条件结构存在一一对应关系如下图:
(3)相同点:首先对IF后的条件进行判断,如果符合条件就执行THEN
后边的语句.
不同点:对于“IF—THEN—ELSE”语句,若不符合条件,则执行ELSE后面的“语句体2”.
对于“IF—THEN”语句,若不符合条件则直接结束该条件语句,转而执行其他后面的语句.
例1、编写程序,输入一个x的值,要求输出它的绝对值.
是
程序框图:
开
始
输入x
x≥0?
输出x
否
输出-x
结
束
INPUT
x
IF
x>=
0
THEN
PRINT
x
ELSE
PRINT
-x
END
IF
END
程序
INPUT
x
IF
x<0
THEN
PRINT
-x
END
IF
PRINT
x
END
IF—THEN型
IF—THEN—ELSE型
开
始
输入a,b,c
△=b2-4ac
p=
-b/2a
△
≥0?
△=0?
输出P
原方程无实数根
结
束
否
否
输出x1,x2
是
是
程序
INPUT
“a,b,c=”;a,b,c
d=b^2-4
a
c
IF
d>=0
THEN
P=
-b/(2
a)
q=SQR(d)/(2
a)
IF
d=0
THEN
PRINT
“x1=x2=”;p
ELSE
PRINT
“x1,x2=”;p+q,p-q
END
IF
ELSE
PRINT
“No
real
room.”
END
IF
END
设计一个求一元二次方程
的算法
〖例2变式〗:有三个数
a,b,c由键盘输入,输出其中最大的数,写出该问题的算法,画出程序框图,并写出相应的程序。
算法:
第一步:输入三个整数a,b,c
第二步:判断a>b且a>c是否成立,若成立,则输出a,若不成立,则转入第三步;
第三步:判断b>c是否成立,若成立,则输出b,若不成立,则输出c;
第四步:输出最大数
开始
输入a,b,c
a>b,a>c?
输出a
b>c?
输出b
输出c
结束
INPUT
a,b,c
IF
a>b
AND
a>c
THEN
PRINT
a
ELSE
IF
b>c
THEN
PRINT
b
ELSE
PRINT
c
END
IF
END
IF
E
ND
开始
输入a,b,c
a>b,a>c?
输出a
b>c?
输出b
输出c
结束
,
〖例3〗:编写程序,使得任意输入的3个整数按从大到小的顺序输出。(
IF—THEN
型)
算法分析:
用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.
开始
输入a,b,c
b>a?
c>a?
c>b?
输出a,b,c
结束
t=a
a=b
b=t
t=a
a=c
c=t
c=t
b=c
t=b
Y
N
Y
N
N
Y
INPUT
“a,b,c=”;a,b,c
IF
b>a
THEN
t=a
a=b
b=t
END
IF
IF
c>a
THEN
t=a
a=c
c=t
END
IF
IF
c>b
THEN
t=b
b=c
c=t
END
IF
PRINT
a,b,c
END
程序:
(1)下面程序运行后输出的结果为____
a=33
b=99
IF
aTHEN
t=a
a=b
b=t
a=a-b
PRINT
“a=”;a
END
IF
END
(2)下面程序运行后输出的结果为____
x=5
y=-20
IF
x<0
THEN
x=y-3
ELSE
y=y+3
END
IF
PRINT
x-y,y-x
END
66
22;-22
2.下面程序的意义是_____________
INPUT
x
IF
x>0
THEN
y=1
ELSE
IF
x=0
THEN
y=0
ELSE
y=-1
END
IF
ELSE
IF
PRINT
y
END
3.将程序补充完整
输入两个数,输出其中较大的数,程序如下:
INPUT
a,b
IF
a>b
THEN
PRINT
a
ELSE
________
END
IF
END
PRINT
b
4.判断任意输入的两个数x是否是正数,若是,输出它的平方值,若不是,输出它的相反数。
INPUT
x
IF_____THEN
y=-1
x
ELSE
y=x
x
END
IF
PRINT
y
END
X<=0
5.
运行下列程序,如果输入
x=π/6,则输出的结果y为_________
INPUT
x
IF
x>π
THEN
y=4
cos(x)+1
ELSE
y=4
sin(x)+1
END
IF
PRINT
y
END
3
6.以下程序运行后输出的数是___________
X=4
y=-8
IF
x<0
THEN
x=y-7
ELSE
y=y+3
END
IF
PRINT
x+2
y,y-2
x
END
-6,-13
7.写出下列程序运行后输出的结果。
INPUT
a
IF
a>=0
THEN
m=a
a-1
PRINT
m
ELSE
PRINT
“a
negative
number”
END
IF
END
若输入-3,输出结果为_____
若输入2,输出结果为_____
“a
negative
number”
3
8.写出下列程序运行后输出的结果。
INPUT
x
IF
a<=10
THEN
P=0.35
x
ELSE
p=10
0.35+(x-10)
0.7
END
IF
PRINT
P
END
若输入x=6,输出结果为_____
若输入x=18,输出结果为_____
2.1
9.1
开始
输入a,b,c
a+b>c,b+c>a,c+a>b是否
同时成立?
存在这样的
三角形
结束
是
否
不存在这样
的三角形
INPUT
“a=,b=,c=”;a,b,c
IF
a+b>c
AND
b+c>a
AND
a+c>b
THEN
PRINT
“存在这样的三角形”
ELES
PRINT
“不存在这样的三角形”
END
IF
END
P29练习1
:教材P11例4程序框图转化为程序
INPUR
“Please
input
an
integer:”;x
IF
x>9
AND
<100
THEN
a=x\10
b=x
MOD
10
x=10
b+a
PRINT
x
END
IF
END
P29:(2)
开始
输入一整数a
M=0?
M=a
MOD
2
输出a为偶数
输出a为奇数
结束
Y
N
程序:
INPUT
“a=”
;
a
M=
a
MOD
2
IF
M=0
THEN
PRINT
“a为偶数”
ELSE
PRINT
“a为奇数”
END
IF
END
P29:(3)
P29:(4)
INPUT
“x=”;x
a=x
MOD
4
b=x
MOD
100
c=x
MOD
400
IF
a=0
AND
b<>0
THEN
PRINT
“x是闰年”
ELES
IF
c=0
THEN
PRINT
“x是闰年”
ELES
PRINT
“x不是闰年”
END
IF
ENDIF
END