Computer Programming 简明教程

Computer Programming - Loops

我们考虑一下一个你想打印 Hello, World! 五次的情况。这里有一个简单的 C 程序来实现 -

#include <stdio.h>

int main() {
   printf( "Hello, World!\n");
   printf( "Hello, World!\n");
   printf( "Hello, World!\n");
   printf( "Hello, World!\n");
   printf( "Hello, World!\n");
}

当执行上述程序时,它将生成以下结果 −

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

这很简单,但再考虑一下你想写 Hello, World! 一千次的情况。我们肯定无法写一千次 printf() 语句。几乎所有编程语言都提供了一个称为 loop 的概念,它有助于执行一条或多条语句直至达到所需次数。所有高级编程语言都提供各种形式的循环,可用于重复执行一条或多条语句。

让我们借助一个 while loop 来编写上述 C 程序,稍后我们将讨论这个循环如何工作

#include <stdio.h>

int main() {
   int i = 0;

   while ( i < 5 ) {
      printf( "Hello, World!\n");
      i = i + 1;
   }
}

当执行上述程序时,它将生成以下结果 −

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

上述程序使用了一个 while loop ,该 while loop 用于执行用 {…​.} 括起来的一组编程语句。在这里,计算机首先检查给定的条件(即,变量 “a” 是否小于 5),如果发现条件为真,则进入循环体来执行给定的语句。这里,我们在循环体中使用以下两个语句 -

  1. 第一条语句是 printf() 函数,它打印 Hello World!

  2. 第二条语句是 i = i + 1,它用于增加变量 i 的值

在执行了循环体中给出的所有语句之后,计算机会返回 while( i < 5) ,并再次检查给定的条件 (i < 5),如果该条件为真,则再次执行循环。此过程一直重复,直到给定的条件仍然为真,这意味着变量 “a” 的值小于 5。

总之,循环语句允许我们多次执行一条或多条语句。下面给出的是大多数编程语言中循环语句的一般形式 -

loop architecture

本教程旨在向非程序员介绍编程的基本概念,因此,让我们讨论 C 编程语言中可用的两个最重要的循环。一旦你清楚了这两个循环,那么你可以选用 C 编程教程或参考书,并查看 C 中可用的其他循环以及它们的工作方式。

The while Loop

C 编程语言中可用的 while loop 具有以下语法 -

while ( condition ) {
   /*....while loop body ....*/
}

上面的代码可以用流程图的形式表示,如下所示 -

cpp while loop

关于 while 循环需要了解以下重点 -

  1. while 循环以关键字 while 开头,后面跟着用 ( ) 括起来的一个 condition

  2. 在 while() 语句之后,你将用大括号 {&#8230;&#8203;} 括出循环体。

  3. while 循环体中可以包含一行或多行要重复执行的源代码。

  4. 如果 while 循环体只有一行,则可以使用花括号 {&#8230;&#8203;} 也是可选的。

  5. while 循环会一直执行该主体,直到给定的 condition 成立。只要条件变为 false,while 循环就会结束,并从紧跟 while 循环体后的紧接语句继续执行。

  6. 一个条件通常是一个关系语句,其结果为 true 或 false。值为零被视为 false,对于任何非零值都像 true。

The do…​while Loop

while 循环在执行主体部分的任何语句之前都会检查给定的条件。C 编程提供另一种称为 do…​while 的循环形式,它允许在检查给定条件之前先执行一次循环体。其语法如下:

do {
   /*....do...while loop body ....*/
}
while ( condition );

上面的代码可以用流程图的形式表示,如下所示 -

cpp do while loop

如果使用 do…​while 循环编写上述示例,则 Hello, World 将生成相同的结果:

#include <stdio.h>

int main() {
   int i = 0;

   do {
      printf( "Hello, World!\n");
      i = i + 1;
   }
   while ( i < 5 );
}

当执行上述程序时,它将生成以下结果 −

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

The break statement

当在循环内部遇到 break 语句时,循环将立即终止,程序控制将从紧接循环后的下一条语句恢复。C 中 break 语句的语法如下:

break;

break 语句可以用流程图的形式表示,如下所示:

cpp break statement

以下是上述程序的一个变体,但它只打印三次 Hello World!就会退出:

#include <stdio.h>

int main() {
   int i = 0;
   do {
      printf( "Hello, World!\n");
      i = i + 1;

      if( i == 3 ) {
         break;
      }
   }
   while ( i < 5 );
}

当执行上述程序时,它将生成以下结果 −

Hello, World!
Hello, World!
Hello, World!

The continue statement

C 编程语言中的 continue 语句在某种程度上类似于 break 语句。 continue 不是强制终止,而是强制执行循环的下一次迭代,跳过其间的任何代码。C 中 continue 语句的语法如下:

continue;

continue 语句可以用流程图的形式表示,如下所示:

cpp continue statement

以下是上述程序的一个变体,但当变量的值等于 3 时,它会跳过打印:

#include <stdio.h>

int main() {
   int i = 0;
   do {
      if( i == 3 ) {
         i = i + 1;
         continue;
      }
      printf( "Hello, World!\n");
      i = i + 1;
   }
   while ( i < 5 );
}

当执行上述程序时,它将生成以下结果 −

Hello, World!
Hello, World!
Hello, World!
Hello, World!

Loops in Java

以下是用 Java 编写的等效程序,它也支持 whiledo…​while 循环。以下程序像我们在 C 编程中的情况一样打印 Hello, World! 五次:

您可以尝试执行以下程序以查看输出,其必须与上述示例生成的结果相同。

public class DemoJava {
   public static void main(String []args) {
      int i = 0;

      while ( i < 5 ) {
         System.out.println("Hello, World!");
         i = i + 1;
      }
   }
}

Java 编程中的 breakcontinue 语句的工作方式与它们在 C 编程中的工作方式完全相同。

Loops in Python

以下是用 Python 编写的等效程序。Python 也支持 whiledo…​while 循环。以下程序像我们在 C 编程中的情况一样打印 Hello, World! 五次。这里必须注意,Python 不使用花括号作为循环体,而是简单地使用语句缩进识别循环体。

你可以尝试执行以下程序查看输出。为了显示差异,我们使用了一条额外的 print 语句,当循环结束时它将被执行。

i = 0

while (i < 5):
   print "Hello, World!"
   i = i + 1
print "Loop ends"

当执行上述程序时,它将生成以下结果 −

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Loop ends

Python 中的 breakcontinue 语句的工作方式与它们在 C 编程中的工作方式完全相同。