Pascal 循环
-
循环
在某些情况下,您需要多次执行一个代码块。通常,语句是按顺序执行的:函数中的第一个语句首先执行,然后第二个执行,依此类推。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句使我们可以多次执行一个语句或一组语句,以下是大多数编程语言中循环语句的一般形式-Pascal 编程语言提供以下类型的循环构造来处理循环需求。单击以下链接以查看其详细信息。循环类型 描述 while-do 循环 在给定条件为真时重复一个语句或一组语句。 它在执行循环体之前测试条件。 for-do 循环 多次执行一个语句序列,并简化管理循环变量的代码。 repeat-until 循环 类似于while语句,除了它在循环主体的末尾测试条件。 嵌套循环 您可以同时使用一个或多个循环,循环或重复直到循环。 -
while-do循环
语法:while (condition) do S;
流程图:其中,condition是布尔值或关系表达式,其值将为true或false,S是BEGIN ... END块内的简单语句或一组语句。范例:
尝试一下program whileLoop; var a: integer; begin a := 10; while a < 20 do begin writeln('value of a: ', a); a := a + 1; end; end.
-
for-do循环
语法:for < variable-name > := < initial_value > to [down to] < final_value > do S;
这是“for”循环中的控制流程-- 首先执行初始步骤,并且仅执行一次。此步骤允许您声明和初始化任何循环控制变量。
- 接下来,评估条件。如果为true,则执行循环主体。如果为假,则循环主体不执行,并且控制流仅在for-do循环之后跳转到下一条语句。
- 在for-do循环的主体执行之后,变量的值将增大或减小。
- 现在将再次评估条件。如果为true,则循环将执行,并且过程将重复自身(循环的主体,然后是递增步,然后再次是条件)。条件变为假之后,for-do循环终止。
流程图:范例:
尝试一下program forLoop; var a: integer; begin for a := 10 to 20 do begin writeln('value of a: ', a); end; end.
-
repeat...until 循环
与for和while循环不同,for和while循环在循环的顶部测试循环条件,而C语言中的do ... while循环在循环的底部检查其条件。do...while循环类似于while循环,但事实上,它是保证执行至少一次。语法:repeat S1; S2; ... ... Sn; until condition;
请注意,条件表达式出现在循环的末尾,因此循环中的语句在测试条件之前执行一次。如果条件为假,则控制流将跳回以重复执行,并且循环中的语句将再次执行。 重复此过程,直到给定条件变为真为止。流程图:范例:
尝试一下program repeatUntilLoop; var a: integer; begin a := 10; (* repeat until loop execution *) repeat writeln('value of a: ', a); a := a + 1 until a = 20; end.
-
嵌套循环
C编程允许在另一个循环中使用一个循环。以下部分显示了一些示例来说明这一概念。Pascal 中嵌套的for-do循环语句的语法如下-:for variable1:=initial_value1 to [downto] final_value1 do begin for variable2:=initial_value2 to [downto] final_value2 do begin statement(s); end; end;
Pascal编程语言中的嵌套while-do循环语句的语法如下-:while(condition1)do begin while(condition2) do begin statement(s); end; statement(s); end;
Pascal 编程语言中嵌套 repeat ... until循环语句的语法如下-:repeat statement(s); repeat statement(s); until(condition2); until(condition1);
关于循环嵌套的最后一点是您可以将任何类型的循环放入任何其他类型的循环中。例如,“for-do”循环可以在“while-do”循环内,反之亦然。范例:
尝试一下program nestedPrime; var i, j:integer; begin for i := 2 to 50 do begin for j := 2 to i do if (i mod j)=0 then break; {* if factor found, not prime *} if(j = i) then writeln(i , ' is prime' ); end; end.
-
循环控制语句
循环控制语句从其正常顺序更改执行。当执行离开作用域时,在该作用域中创建的所有自动对象都将被销毁。C支持以下控制语句。控制声明 描述 break声明 终止循环或switch语句,并在循环或switch后立即将执行的语句。 continue声明 使循环跳过其其余部分,并在重新进行迭代之前立即重新测试条件。 goto声明 将控制权转移到带标签的语句。 -
break声明
Pascal 编程语言中的break语句具有以下两种用法-- 当在循环内遇到break语句时,循环立即终止,程序控制在循环后的下一条语句处恢复。
- 它可用于终止case语句中的一个case(在下一章中介绍)。
如果使用嵌套循环(即,另一个循环中的一个循环),则break语句将停止执行最里面的循环,并开始执行该块之后的下一行代码。语法:break;
流程图:范例:
尝试一下program exBreak; var a: integer; begin a := 10; (* while loop execution *) while a < 20 do begin writeln('value of a: ', a); a:=a +1; if( a > 15) then (* terminate the loop using break statement *) break; end; end.
-
continue声明
Pascal中的continue语句的工作原理类似于break语句。但是,continue不会强制终止,而是会强制执行循环的下一次迭代,从而跳过两者之间的任何代码。对于for-do循环,continue语句使条件测试和循环的增量部分执行。对于while-do和repeat ... until循环,continue语句使程序控制传递给条件测试。语法:continue;
流程图:范例:
尝试一下program exContinue; var a: integer; begin a := 10; (* repeat until loop execution *) repeat if( a = 15) then begin (* skip the iteration *) a := a + 1; continue; end; writeln('value of a: ', a); a := a+1; until ( a = 20 ); end.
-
goto声明
Pascal goto 语句提供从“goto”的标记声明相同功能的无条件跳转。注 – 在任何编程语言中都强烈建议不要使用goto语句,因为它会使跟踪程序的控制流变得困难,从而使程序难以理解和修改。可以重写任何使用goto的程序来避免使用它们。
语法:goto label; ... ... label: statement;
在这里,label必须是一个无符号整数标签,其值可以从1到9999。流程图:范例:
尝试一下program exGoto; label 1; var a : integer; begin a := 10; (* repeat until loop execution *) 1: repeat if( a = 15) then begin (* skip the iteration *) a := a + 1; goto 1; end; writeln('value of a: ', a); a:= a +1; until a = 20; end.
请注意-
- 在Pascal中,必须在常量和变量声明之前声明所有标签。
- 在如果和跳转语句可以在复合语句用来传输控制了复合语句,但它是非法的传递控制到一个复合语句。