直到循环(REPEAT-UNTIL)类型
直到循环语句的语法格式是:
repeat语句序列;(循环体)
until 布尔表达式;
其作用是:重复执行语句序列(循环体),直到布尔表达式的值为 TRUE为止。即,当执行完一次语句序列后,布尔表达式的值已经为 TRUE了,这时循环将不会再被执行,而转向执行 UNTIL语句以下的语句。一句话:先执行一次循环体,然后判断条件是否满足,若满足则退出.否则继续执行循环体.但至少要执行循环体一次.
例:计算 M=1+2+3+4+……,直到 M的值大于 5050为止。
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!
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等于 18时,最后一次把 I乘进 X后,这时 I=18这个条件已经满足( I=18的值已经为 TRUE),所以循环就被退出,而程序转向执行 UBTIL以后的语句: WRITELN( X);。
请大家想一想,为什么 X要定义为 LONGINT型。
浙公网安备 33010602011771号