6.1 For 语句
for 语句用来描述已知重复次数的循环结构。
for 语句有两种形式:
(1) for 控制变量:=初值 to 终值 do 语句;
(2) for 控制变量:=初值 downto 终值 do 语句;
第一种形式的for 语句是递增循环。首先将初值赋给控制变量,接着判断控制变量的值是否小于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值该为它的后继值,并重新判断是否小于或等于终值。当控制变量的值大于终值时,退出for循环,执行for语句之后的语句。
第二种形式的for 语句是递减循环。首先将初值赋给控制变量,接着判断控制变量的值是否大于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值该为它的前趋值,并重新判断是否大于或等于终值。当控制变量的值小于终值时,退出for循环,执行for语句之后的语句。for 语句中的初值、终值、控制变量的数据都必须是顺序类型。当初值和终值确定后,重复的次数就确定不变了,并且控制变量在重复语句内不能施加任何赋值操作。
例:计算1+2+3+……+99+100
program jia;
var n,sum:integer;
begin
sum:=0;
for i:=1 to 100 do
sum:=sum+i;
writeln(sum);
end.
6.2 while语句
while语句用于“当满足某一条件时进行循环”的情况。
while语句的语法格式:
while 布尔表达式 do 语句;
循环结束条件在进入循环体之前测试,若最初的测试值为false,则根本不进入循环体,也就是说while循环是是属于当型循环。为了能使while重复能终止,循环体中一定要有影响布尔表达式的操作,否则该循就是一个死循环。
例:计算从0到某个数之间所有奇数的和。
program jishu;
var odds,limit,sum:integer;
begin
readln(limit);
sum:=0;
odds:=1;
while odds<=limit do
begin
sum:=sum+odds;
odds:=odds+2
end;
writeln(sum:1)
end.
6.3 repeat语句
repeat 语句用于“重复执行循环体,一直到指定的条件为真时为止”。
语法格式为:
repeat
语句1;
……
语句n;
until 布尔表达式;
repeat重复基本上有和while重复一样的描述循环计算的能力,但有一些不同:在repeat语句的结构中,布尔表达式求值在计算操作之后,而while语句中,布尔表达式求值在计算操作之前,也就是说repeat至少执行一次循环体。while语句的成分语句只能是一个语句。因此,当重复动作包含多个语句时,要用begin和end ,使它变成一个复合语句。而repeat语句的保留字repeat和until已经起语句括号作用,可以包含多个语句而无须begin和end。repeat语句中,当布尔表达式为true时结束循环,而while语句中,是当表达式为false时才结束循环。当描述由计算操作后的情况确定重复是否继续进行的计算时,通常用repeat语句描述。
6.4 goto语句
goto语句是一种无条件转向语句,它可以控制直接从程序的一条语句转向另一条语句。goto语句的语法形式为:
goto 标号;
其中标号必须是不超过4位整数的正整数或标识符组成,但标号必须在说明语句中先予以说明。
goto语句会使程序出现一种称为“乱面条”的结构,因此你最好还是不要去用。
【练习】
1、计算1×2×3×…×50的积
2、百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?(要求:用循环结构程序设计计算出各有公鸡、母鸡、小鸡多少只?)