第2个回答 2019-12-18
当型循环
当型循环结构用在先判断某些条件是否为真,然后重复执行某一段代码的情况下。
当型循环的条件是在循环体执行前进行判断的
当条件不满足是进入循环,否则结束循环
[编辑本段]当(while)语句 当语句的语法格式是:
while
布尔表达式
do
语句
其作用是,当布尔表达式的值为
TRUE时,才会运行语句序列(循环体),否则循环将不会被执行,即从循环头部就退出,而转向执行
END后的语句。
当语句的语法格式是:
while
布尔表达式
do
语句
begin
语句序列;(循环体)
end;
用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循环是可以
相互转化的。
例8、校体操队到操场集合,排成每行2人,最后多出1人;排成每行3人,也多出1人;分别按每行排4,5,6
人,都多出1人;当排成每行7人时,正好不多。求校体操队至少是多少人?
分析:①设校体操队为X人,根据题意X应是7的倍数,因此X的初值为7,以后用inc(x,7)改变X值;
②为了控制循环,
用逻辑变量yes为真(True)
使循环结束;
③如果诸条件中有一个不满足,
yes
的值就会为假(false),就继续循环。
program
Exam311;
var
x:
integer;
yes
:
boolean;
begin
x:=0;
repeat
yes
:=true;
inc(x,7);
if
x
mod
2
<
>
1
then
yes:=false;
if
x
mod
3
<
>
1
then
yes:=false;
if
x
mod
4
<
>
1
then
yes:=false;
if
x
mod
5
<
>
1
then
yes:=false;
if
x
mod
6
<
>
1
then
yes:=false;
until
yes;
{直到yes的值为真
}
writeln(’All
=’,
x)
;
readln
end.
程序中对每个X
值,都先给Yes
赋真值,只有在循环体各句对X
进行判断时,都得到“通过”(此处
不赋假值)才能保持真值。
例9、求1992个1992的乘积的末两位数是多少?
分析:积的个位与十位数只与被乘数与乘数的个位与十位数字有关,所以本题相当于求1992
个92
相
乘,而且本次的乘积主下一次相乘的被乘数,因此也只需取末两位参与运算就可以了。
Pascal程序:
Program
ex313;
var
a,t
:
integer;
Begin
a
:=
1;
t
:=
0;
repeat
t
:=
t+1;
a
:=
(a*92)
mod
100;
until
t=1992;
writeln(a);
Readln;
End.
以上我们已介绍了三种循环语句。一般说来,用for
循环比较简明,只要能用for
循环,就尽量作
用for
循环。只在无法使用for
循环时才用while
循环和repeat-until
循环,
而且
while
循环和
repeat-until循环是可以互相替代的。for
循环在大多数场合也能用whiel和repeat-until循环来代替。
一般for循环用于有确定次数循环,而while和repeat-until循环用于未确定循环次数的循环。