信息学奥赛--程序的三种基本结构.ppt
程序的三种根本结构;一、顺序结构;例:输入三角形的三条边a,b,c,输出三角形的面积。〔a,b,c是正整数100,满足三角形条件〕;var
a,b,c:integer;
p,s:real;
begin
readln(a,b,c);
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln(s:0:2);
end.;Readln(a,b,c)
读入边长;改进:
输入三角形的三条边a,b,c,如果能构成三角形那么输出三角形的面积;如果不能构成三角形那么输出〞Noanswer〞.;Readln(a,b,c)
读入边长;var
a,b,c:integer;
p,s:real;
begin
readln(a,b,c);
if(a+bc)and(a+cb)and(b+ca)
then
begin
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln(s:0:2);
end
elsewriteln(‘Noanswer’);
end.;二、选择结构;如:a:=1;b:=2;
那么表达式:a=b的值是TRUE;ab的值是FALSE;
a+1=b的值是TRUE;
Varf:boolean;
f:=ab;Write〔f〕;输出:FALSE;2、逻辑运算(布尔运算)
运算符运算运算对象结果类型
not逻辑非〔取反〕布尔型布尔型
and逻辑与〔并且〕布尔型布尔型
or逻辑或〔或者〕布尔型布尔型
xor逻辑异或布尔型布尔型;〔二〕、选择结构:if语句
有两种形式的IF语句:
(1)if布尔表达式then语句;
(2)if布尔表达式then语句1else?语句2;
IF语句是由一个布尔表达式和一个或两个供选择的操作序列组成。运行时根据布尔表达式的求值结果,选取其中之一的操作序列执行。
当布尔表达式的值为TRUE,那么执行then后面的语句,值为FALSE时有两种情况:
〔1〕什么也不做;〔2〕执行else后面的语句。
注意:
1、else前面的语句不能有分号;2:如果语句局部是复合语句〔多于一条语句〕,那么必须用begin与end括起来。;例1:输入一个整数a,判断他的奇偶性。
〔是偶数输出“yes〞,奇数输出“no〞〕。;例2、计算以下函数,输入x,输出y的值
(精??到小数点后两位小数)。;分析:根据输入的x值,先分成x0与x=0两种情况,然后对于情况x=0,再区分x=0,还是x0。;例3:方程:
ax2+bx+c=0
输入系数a,b,c,a0,输出方程的解(考虑各种情况)。保存两位小数。
(1):如果无实数解输出:’noanswer’;
(2):相同的实数解:输出一个即可。
(3):两个不同的实数解:分别输出。
如:;var
a,b,c:integer;
d,x1,x2:real;
begin
readln(a,b,c);
d:=b*b-4*a*c;
ifd0thenwriteln(noanswer);
ifd=0thenwriteln(x=,-b/(2*a):0:2);
ifd0then
begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln(x1=,x1:0:2);
writeln(x2=,x2:0:2);
end;
end.;三、case语句:分情况语句〔多分支语句〕;;引例:
键入一个自然数N〔10000〕,求这个自然数的所有约数之和S〔不包含1和n〕。
如:
输入:
6
输出:
5;var
n,i:integer;
s:longint;
begin
readln(n);
s:=0;
fori:=2ton-1do