pascal基本语句.docx

上传人:b****7 文档编号:8929492 上传时间:2023-02-02 格式:DOCX 页数:7 大小:19.64KB
下载 相关 举报
pascal基本语句.docx_第1页
第1页 / 共7页
pascal基本语句.docx_第2页
第2页 / 共7页
pascal基本语句.docx_第3页
第3页 / 共7页
pascal基本语句.docx_第4页
第4页 / 共7页
pascal基本语句.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

pascal基本语句.docx

《pascal基本语句.docx》由会员分享,可在线阅读,更多相关《pascal基本语句.docx(7页珍藏版)》请在冰豆网上搜索。

pascal基本语句.docx

pascal基本语句

一、PASCAL中的布尔(逻辑)类型

  布尔型(Boolean)是一种数据的类型,这种类型只有两种值,即"真"与"假"。

  1、布尔常量

  在Pascal语言中"真"用ture表示,"假"用False表示。

所以布尔类型只有TRUE与FALSE两个常量。

  2、布尔变量(BOOLEAN)

  如果我们将某些变量说明成布尔型,那么这些变量就是布尔变量,它们只能用于存放布尔值(ture或false)。

  例如,VARA,B:

BOOLEAN;

  3、布尔类型是顺序类型

  由于这种类型只有两个常量,Pascal语言中规定ture的序号为1,false的序号为0。

若某种类型的常量是有限的,那么这种类型的常量通常都有一个序号,我们称这种类型为顺序类型。

如前面我们学过的整型(integer),以及后面要学到的字符型(char)都是顺序类型。

  4、布尔类型的输入与输出

  a)输出

  VARA,B:

BOOLEAN;

  BEGIN

   A:

=TRUE;B:

=FALSE;

   WRITELN(A,B);

  END.

  TRUEFALSE

  b)布尔类型变量不能直接用读语句输入

    例如,以下程序是错误的:

  vara,b,c:

Boolean;

  begin

   readln(a,b,c);{错误语句}

   writeln(a,b,c);

  end.

 

三、简单的IF语句

  1、格式

  Ⅰ、IF<布尔表达式>THEN语句;

  Ⅱ、IF<布尔表达式>THEN语句1ELSE语句2;

  (注意Ⅱ型IF语句中语句1后无";"号)

  2、功能

  Ⅰ、执行IF语句时,先计算<布尔表达式>的值,若为TRUE则执行语句,否则不执行任何操作。

  Ⅱ、执行IF语句时,先计算<布尔表达式>的值,若为TRUE则执行语句1,否则执行语句2;

  3、示例

  1)例4.2输入一个整数a,判断是否为偶数。

(是输出"yes"否则输出"no")。

  Programex4_2;

   Vara:

integer;

   Begin 

    Write('a=');readln(a);

    If(amod2=0)thenwriteln('yes')

    Elsewriteln('no');

    Readln;

   End.

***IF语句的嵌套

  在if语句中,如果then子句或else子句仍是一个if语句,则称为if语句的嵌套。

  例1 计算下列函数

   

  分析:

根据输入的x值,先分成x>0与x≤0两种情况,然后对于情况x≤0,再区分x是小于0,还是等于0。

  源程序如下:

  programex;

  var

    x:

real;

    y:

integer;

  begin

    wrtie('Inputx:

');readln(x);

    ifx>0 theny:

=1{x>0时,y的值为1}

     else{x≤0时}

      ifx=0 theny:

=0

      elsey:

=-1;

    writeln('x=',x:

6:

2,'y=',y);

  end.

  显然,以上的程序中,在then子句中嵌套了一个Ⅱ型if语句。

当然程序也可以写成如下形式:

    programex;

  var

    x:

real;y:

integer;

  begin

   wrtie('Inputx:

');readln(x);

   ifx>=0 then

    ifx>0 theny:

=1

    elsey:

=0

   elsey=-1;

   writeln('x=',x:

6:

2,'y=',y);

  end.

  但是对于本题,下面的程序是不对的。

  y:

=0;

  ifx>=0 then

    ifx>0theny:

=1

  elsey:

=-1;

  明显,从此人的程序书写格式可以看出,他想让else与第一个if配对,而事实上,这是错的。

因为pascal规定:

else与它上面的距它最近的then配对,因此以上程序段的逻辑意义就与题义不符。

  二、case语句

(一)、情况语句的一般形式:

  case<表达式>of

   <情况标号表1>:

语句1;

   <情况标号表2>:

语句2;

   :

   <情况标号表n>:

语句n

  end;

  其中case、of、end是Pascal的保留字,表达式的值必须是顺序类型,它可以是整型、布尔型及以后学习的字符型、枚举型和子界型。

(二)、case语句的执行过程

  先计算表达式(称为情况表达式)的值,如果它的值等于某一个常量(称为情况常量,也称情况标号),则执行该情况常量后面的语句,在执行完语句后,跳到case语句的末尾end处。

  (三)、说明

  ①情况表达式必须是顺序类型的;

  ②情况常量是情况表达式可能具有的值,因而应与情况表达式具有相同的类型;

  ③情况常量出现的次序可以是任意的;

  ④同一情况常量不能在同一个case语句中出现两次或两次以上;

  ⑤每个分语句前可以有一个或若干个用逗号隔开的情况常量;

  ⑥如果情况表达式的值不落在情况常的范围内,则认为本case语句无效,执行case语句的下一个语句。

turbopascal中增加了一个"否则"的情况,即增加一个else子句,但也是可省的。

  ⑦每个常量后面只能是一个语句或一个复合语句。

一、for语句的一般格式

  for<控制变量>:

=<表达式1>to<表达式2>do<语句>;

  for<控制变量>:

=<表达式1>downto<表达式2>do<语句>;

  其中for、to、downto和do是Pascal保留字。

表达式1与表达式2的值也称为初值和终值。

  二、For语句执行过程

  ①先将初值赋给左边的变量(称为循环控制变量);

  ②判断循环控制变量的值是否已"超过"终值,如已超过,则跳到步骤⑥;

  ③如果末超过终值,则执行do后面的那个语句(称为循环体);

  ④循环变量递增(对to)或递减(对downto)1;

  ⑤返回步骤②;

  ⑥循环结束,执行for循环下面的一个语句。

  三、说明

  ①循环控制变量必须是顺序类型。

例如,可以是整型、字符型等,但不能为实型。

  ②循环控制变量的值递增或递减的规律是:

选用to则为递增;选用downto则递减。

  ③所谓循环控制变量的值"超过"终值,对递增型循环,"超过"指大于,对递减型循环,"超  过"指小于。

  ④循环体可以是一个基本语句,也可以是一个复合语句。

  ⑤循环控制变量的初值和终值一经确定,循环次数就确定了。

但是在循环体内对循环变量的值进行修改,常常会使得循环提前结束或进入死环。

建议不要在循环体中随意修改控制变量的值。

  ⑥for语句中的初值、终值都可以是顺序类型的常量、变量、表达式。

  四、应用举例

  例1.输出1-100之间的所有偶数。

    vari:

integer;

    begin

     fori:

=1to100do

     ifimod2=0thenwrite(i:

5);

    end.

一、WHILE循环

  对于for循环有时也称为计数循环,当循环次数未知,只能根据某一条件来决定是否进行循环时,用while语句或repeat语句实现循环要更方便。

  while语句的形式为:

  while<布尔表达式>do<语句>;

  其意义为:

当布尔表达式的值为true时,执行do后面的语句。

  while语句的执行过程为:

  ①判断布尔表达式的值,如果其值为真,执行步骤2,否则执行步骤4;

  ②执行循环体语句(do后面的语句);

  ③返回步骤1;

  ④结束循环,执行while的下一个语句。

  说明:

这里while和do为保留字,while语句的特点是先判断,后执行。

当布尔表达式成立时,重复执行do后面的语句(循环体)。

  例1、求恰好使s=1+1/2+1/3+…+1/n的值大于10时n的值。

  分析:

"恰好使s的值大于10"意思是当表达式s的前n-1项的和小于或等于10,而加上了第n项后s的值大于10。

从数学角度,我们很难计算这个n的值。

故从第一项开始,当s的值小于或等于10时,就继续将下一项值累加起来。

当s的值超过10时,最后一项的项数即为要求的n。

  程序如下:

  var

    s:

real;

    n:

integer;{n表示项数}

  begin 

   s:

=0.0;n:

=0;

   whiles<=10do{当s的值还未超过10时}

    begin

     n:

=n+1;{项数加1}

     s:

=s+1/n;{将下一项值累加到s}

    end;

   writlen('n=',n);{输出结果}

  end.

二、直到循环(REPEAT-until语句)

  用while语句可以实现"当型循环",用repeat-until语句可以实现"直到型循环"。

repeat-until语句的含义是:

"重复执行循环,直到指定的条件为真时为止"。

  直到循环语句的一般形式:

  Repeat

   <语句1>;

   :

   <语句n>;

  until<布尔表达式>;

  其中Repeat、until是Pascal保留字,repeat与until之间的所有语句称为循环体。

  说明:

  ①repeat语句的特点是:

先执行循环,后判断结束条件,因而至少要执行一次循环体。

  ②repeat-until是一个整体,它是一个(构造型)语句,不要误认为repeat是一个语句, until是另一个语句。

  ③repeat语句在布尔表达式的值为真时不再执行循环体,且循环体可以是若干个语句,不需用begin和end把它们包起来,repeat和until已经起了begin和end的作用。

while循环和repeat循环是可以相互转化的。

  对于例2中求两个正整数的最大公约数,程序可用repeat-until循环实现如下:

  var

    m,n,a,b,r:

integer;

  begin

   write('Inputm,n=');

   readln(m,n);

   a:

=m;b:

=n;

   repeat

    r:

=amodb;

    a:

=b;b:

=r;

   untilr=0;

   writeln('Thegreatestcommondivideis',a);

  end.

  以上我们已介绍了三种循环语句。

一般说来,用for循环比较简明,只要能用for循环,就尽量作用for循环。

只在无法使用for循环时才用while循环和repeat-until循环,而且while循环和repeat-until循环是可以互相替代的。

for循环在大多数场合也能用whiel和repeat-until循环来代替。

一般for循环用于有确定次数循环,而while和repeat-until循环用于未确定循环次数的循环。

  当一个循环的循环体中又包含循环结构程序时,我们就称之为循环嵌套。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1