您现在的位置:小学生自学网>> 信息>> pascal语言>> 基础教程

PASCAL第十讲:REPEAT循环

作者: 来源: 发布时间:2009年05月12日 点击数:
 

直到循环(REPEAT-UNTIL)类型

直到循环语句的语法格式是:

repeat语句序列;
  (循环体) 
until 布尔表达式; 
其作用是:重复执行语句序列(循环体),直到布尔表达式的值为 TRUE为止。即,当执行完一次语句序列后,布尔表达式的值已经为 TRUE了,这时循环将不会再被执行,而转向执行 UNTIL语句以下的语句。

例:计算 M=1+2+3+4+……,直到 M的值大于 5050为止。 [例: 5、 1]

var m,I:integer;
begin
    m:=0;
    I:=0;
    Repeat
        I:=I+1;
        M:=m+I;
    Until m>5050;
    Writeln(I,’   ’,m);
End.

在上述程序中,我们使用了 PASCAL中的两个作用强大的概念:累加和循环。
累加:我们在上述程序中没定了两个累加器: I, M。累加器初值我们在第一句中设定了为 0,之后每次运行一次 I: =I+1后, I的值就比原来大 1。每运行一次 M: =M+I后, M的值就被 M+I所替代。

循环:这里我们使用的是直到循环,即重复执行循环体中的两个语句,直到 M>5050这个条件满足为止(即这个布尔表达式的值为 TRUE为止)。

上述程序运行后,会在输出屏幕上显示两个值: 101 5151。即当 I的值为 101时,这时所算得的 M的值为 5151。亦即, 1+2+3+…… 101=5151。

象上述这种 X=1+2+3+……这种加法,我们就把它叫累加,这里的 X就是累加器,一般初值为 0。

而 N=1*2*3*4*5*6*……这种乘法我们把它叫累乘,这里 N就是累乘器,一般初值为 1(为什么?)。

一般的: 1*2*3*…… N,我们把这个式子的结果叫做 N的阶乘( N!)。如: 4! =1*2*3*4。

例:计算 18! [例 5、 2]

var I:integer;
   x:longint;
begin
   I:=0;
   X:=1;
   Repeat
      I:=I+1;
      X:=x*I;
   Until I=18;
   Writeln(x);
End.

        
当程序开始时, I的初值被定为 0, X的初值被定为 1(累乘器)。然而开始进入循环,每次 I的值比原来增加 1,然后再乘进 X中去,直到 I等于 20时,最后一次把 I乘进 X后,这时 I=20这个条件已经满足( I=20的值已经为 TRUE),所以循环就被退出,而程序转向执行 UBTIL以后的语句: WRITELN( X);。

请大家想一想,为什么 X要定义为 LONGINT型。

练习

1、输入一个正整数N,把它分解成质因子相乘的形式。
   如:36=1 X 2 X 2 X 3 X 3; 19=1 X 19
   (提示:设因子为I,从2开始到N,让N重复被I除,如果能整除,则用商取代N,I为一个因子;如果不能整除,再将I增大,继续以上操作,直到I等于N。)