Pascal 循环

  • 循环

    在某些情况下,您需要多次执行一个代码块。通常,语句是按顺序执行的:函数中的第一个语句首先执行,然后第二个执行,依此类推。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句使我们可以多次执行一个语句或一组语句,以下是大多数编程语言中循环语句的一般形式-
    c loop_architecture
    Pascal 编程语言提供以下类型的循环构造来处理循环需求。单击以下链接以查看其详细信息。
    循环类型 描述
    while-do 循环 在给定条件为真时重复一个语句或一组语句。 它在执行循环体之前测试条件。
    for-do 循环 多次执行一个语句序列,并简化管理循环变量的代码。
    repeat-until 循环 类似于while语句,除了它在循环主体的末尾测试条件。
    嵌套循环 您可以同时使用一个或多个循环,循环或重复直到循环。
  • while-do循环

    语法
    
    while (condition) do S;
    
    流程图
    c loop
    其中,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循环终止。
    流程图
    c loop
    范例
    
    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;
    
    请注意,条件表达式出现在循环的末尾,因此循环中的语句在测试条件之前执行一次。如果条件为假,则控制流将跳回以重复执行,并且循环中的语句将再次执行。 重复此过程,直到给定条件变为真为止。
    流程图
    c loop
    范例
    
    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;
    
    流程图
    c loop
    范例
    
    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;
    
    流程图
    c loop
    范例
    
    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。
    流程图
    c loop
    范例
    
    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中,必须在常量和变量声明之前声明所有标签。
    • 在如果和跳转语句可以在复合语句用来传输控制了复合语句,但它是非法的传递控制到一个复合语句。