大榕树——让我们共成长!
大榕树 myDrs.org
您的位置:大榕树 \ 编程       |  Logo语言   |  Pascal语言   |  信息学奥赛   |  高考保送    |  HTML版本
|  Pascal语言>>Pascal入门>>选择结构程序设计         本站全文搜索: 友情提示:

选择结构程序设计
http://www.mydrs.org  9/14/2001  大榕树


概述

    通常,计算机按在程序中书写的顺序执行语句。如果一个程序只由赋值语句和输入输出过程组成,那么它们只能顺序地执行一次,而且必然执行一次。但一个程序仅有这类顺序执行的语句显然是不够的,经常需要的是根据某个变量或表达式的值作出判定,以决定执行哪些语句和跳过哪些语句不执行。我们称这种程序结构为选择结构。为了实现选择结构程序设计,在PASCAL中引入了IF语句和CASE语句。它们能从两个或多个语句中按一定的条件有选择的执行其中的一个。

IF语句
CASE 语句


BALL.gif (1653 bytes)IF语句:

    IF语句提供了根据不同条件选择不同通路的能力。简单IF语句可从两路语句中选择其一执行,从而实现
双向分支。IF语句的一般形式为:
IF 布尔表达式
THEN 语句1
ELSE 语句2;

    其执行过程为:若布尔表达式的值为TRUE,执行跟在THEN后面的语句1;反之,则执行ELSE后面的语句2。其流程图如下:
 


   IF语句的另一种常见形式为:
IF 布尔表达式 THEN 语句
    其执行过程为:若布尔表达式的值为TRUE,执行跟在THEN后面的语句;反之,则执行一个空语句,即
什么也不做。其流程图如下:


注意
    <1>在if-then-else结构中,位于else前的语句其最后不能有分号。否则编译器将认为这是if-then结构,下面再遇到else就会指示出错误信息。
    <2>在if语句中,跟在then或else后的语句可能不止一个,这时要用到复合语句。

    下面我们看看复合语句的概念:
BALL.gif (1653 bytes) 复合语句:复合语句是一个以BEGIN开始,以END结束的语句。在BEGIN和END之间可以包括若干个语句,每个语句之间以分号隔开。一般形式为:
BEGIN
语句1;
语句2;
......
语句N;
END;

注意:PASCAL把复合语句视作一个语句。复合语句可用在PASCAL允许使用普通语句的任何地方。下面让我们看几个例子:

STAR2.gif (219 bytes)例一:读入三个整数,找出并输出其中最大数。
program exec1(input,output);
var n1,n2,n3,max:real;
begin
read(n1,n2,n3);
if n1>n2 then max:=n1
else max:=n2;
if n3>max then max:=n3;
writeln('the largest number is ',max:8)
end.

STAR2.gif (219 bytes)例二:给出三角形的三个边长A,B,C,求三角形面积.
program exec2(input,output);
var a,b,c,s,area:real;
begin readln(a,b,c);
if (a+b>c)and(b+c>a)and(c+a>b)
then begin
s:=(a+b+c)/2;
area:=sqrt(s*(s-a)*(s-b)*(s-c));
writeln('area=',area:6:2);
end
else begin
writeln(a:6:2,b:6:2,c:6:2);
writeln('input data error');
end;
end.

BALL.gif (1653 bytes)IF语句的嵌套:

在一个IF语句中可以又出现另一个IF语句,这称为IF语句的嵌套。例如下面形式:
IF 条件1
THEN 语句1
ELSE IF 条件2
THEN 语句2
ELSE 语句3;

注意
<1>除了上面的形式外,还有许多其他形式。如then后面是一个if语句.
<2>pascal规定:为了避免二义性,else总与离它最近的前面的那个尚未匹配的if--then相匹配.

STAR2.gif (219 bytes)例三:计算Y=2*X 当X<0时
           =X/2 当X>0时
           =0   当X=0时
program exec3(input,output);
var x,y:real;
begin readln(x);
if x>0
then y:=x/2
else if x<0
then y:=2*x
else y:=0;
writeln('y=',y);
end.


BALL.gif (1653 bytes)case语句

    IF语句只能从两种方案中选择其中之一,而CASE语句能从多种可能中选择其中之一,因此其又称"情况语句"。它以清晰简洁的形式实现多路分支情况。 
CASE语句的一般形式是:

CASE 表达式 OF
常量表1:语句1;
常量表2:语句2;
...... ......
常量表n:语句n;
END;


    某一个常量,则执行该常量后面的语句。在执行完该语句后,流程跳到CASE语句的末尾END处。
注意:
<1>表达式可以是整型,字符型,布尔型,但不能是实型.
<2>所有情况常量应互不相同,并且每个只允许出现一次,并且应与表达式具有相同类型.
<3>表达式所有可能的值必须在情况常量之内,即若没有一个情况常量等于表达式的值是错误的.
<4>每个语句的前面可附以一个或多个常量,用逗号分开,  语句可以是复合语句.

下面看几个例子:
STAR2.gif (219 bytes)例一:输入年、月,输出该月有几天。

program exec(input,output);
var year,month,days:integer;
begin read(year,month);
case month of
1,3,5,7,8,10,12:days:=31;
4,6,9,11:days:=30;
2:if (year mod 4=0)
and(year mod 100<>0)or(year mod 400=0)
then days:=29
else days:=28;
end;
writeln(year,month,days);
end.

STAR2.gif (219 bytes)例二:若已知X在1到5之间,按下公式计算Y
Y=3*X+10 当1<=X<2
=2*COS(X) 当2<=X<3
=sin(X)/3 当3<=X<5

program exec2(input,output);
var x,y:real;
begin read(x);
case trunc(x) of
1: y:=3*x+10;
2: y:=2*cos(x);
3,4: y:=sin(x)/3;
end;
writeln('y=',y);
end.



共有4147位读者阅读过此文

  • 上篇文章程序设计基本知识
  • 下篇文章:已经没有了

  • 发送邮件
    保存页面 打印文章 HTML版本 发表评论

    □- 近期热门文章 □- 相关文章
    1. NOIP2006竞赛大纲 [8306]
    2. 七类高中生具有保送资格 [5910]
    3. NOI2006获奖选手名单 [4955]
    4. 关于举办NOIP2006模拟赛的通告 [4106]
    5. Turbo Pascal各语句运行速... [3594]
    6. Turbo王者归来新Delphi免费... [3181]
    7. IOI2006我国4名选手全部获得金... [2945]
    8. 关于APIO2007与IOI2007... [2763]
    9. noip倒计时 by 枯叶蝴蝶 [2683]
    10. 朱泽园:思想上的金牌更重要 [2168]
    选择结构程序设计
     

    关于本站 | 合作伙伴 | 联系方式
    大榕树 版权所有 ©1999-2006 www.myDrs.org 闽ICP备05000721号