循环在计算机编程中如何工作

在学习编程时,了解基本构建模块是早期成功的关键。稍后您将学习一些棘手的主题,但是如果您不了解变量类型,循环和函数,就很难走远。

大多数新程序员都了解 if-else语句 while循环 for循环。但是您可能不了解的一种循环类型是 do-while循环。让我们讨论一下该循环的工作原理,以及何时使用它的示例。

基础知识

do-while循环执行一个块至少检查一次代码,检查条件是否为真,然后根据条件继续在内部运行代码。让我们看一个简单的伪代码示例(因为它们可以帮助您学习!):

do {  output "The variable x equals " + x;  x++;} while (x < 5);output "The loop has ended.";

在这段代码中, do 括号内的行始终至少运行一次。这意味着 x 在循环开始时可以是任何值。

如果在循环开始时 x 等于1,它将重复直到< strong> x 不满足同时旁边的条件。因此,它将总共运行5次。当 x 不小于5时,循环结束,并在其后继续执行代码。相反,此循环开始时,如果 x 等于20,则它将只运行一次。

The variable x equals 1 The variable x equals 2 The variable x equals 3 The variable x equals 4 The variable x equals 5 The loop has ended.

因此,您将看到一条输出语句, x 递增至21,并且循环将结束,因为21不小于5。其输出为:

The variable x equals 20 The loop has ended.

与While和对于循环

同时执行循环与其他循环有何不同?最重要的区别是do-while循环在执行代码块后测试条件,而其他循环在内部运行代码前检查条件

请考虑以下基本伪代码 while 循环以进行比较:

x = 10;while (x < 5) {  output "The loop has run!";  x++;}

此处, x 设置为10, while 循环检查 x 在运行之前是否小于5。因此,内部代码永远不会运行。将相同的逻辑应用于do-while循环将为我们提供以下内容:

x = 10;do {  output "The loop has run!";  x++;} while (x < 5)

此循环将输出文本一次,递增 x ,然后继续。

请注意,您可以在 while 循环前面添加一条额外的语句来重新创建do-while功能,如下所示:

output "Hello!";x++;while (x < 5) {  output "Hello!";  x++;}

但是,这很笨重,当do-while循环存在时,没有理由这样做。

Do-while循环与 for 循环具有相似的区别。 for 循环定义了一个变量,指定了循环应运行多长时间,并为每次迭代的结束设置行为。

这是一个简单的 for 比较循环:

for (int i = 0; i < 5; i++) {  output "The loop has run " + i + " times.";}

这突显了 do-while for 循环之间的良好对比-您确切知道 > for 循环将运行,因为您一开始就设置了条件。如果将上述代码修改为如下所示的do-while循环:

do {  output "The loop has run " + i + " times.";  i++;} while (i < 5);

在循环运行时可能会遇到问题。如果您未在其他地方初始化 i ,则您不知道在 do 部分运行时它将具有什么价值,并且它将至少运行一次。如果运行此循环时 i 为500,则此处的输出将不准确。

总结:

  • 一个 do-while循环很有用。
  • while循环允许您重复执行一段代码条件为真,并在条件不再为真时立即停止。
  • for循环可让您通过设置自己的参数来确切指定循环应运行多少次
  • 离开循环进行循环

    当然,就像其他循环一样,do-while循环必须具有退出条件。如果没有,您可能会陷入无限循环。请考虑以下代码段:

    x = 5;do {   output "This never ends!";} while (x < 10);

    如果您未在代码中的任何其他位置增加 x ,则此循环将永远运行。现在,有时无限循环很有用,因为程序员设置了代码以打破其他地方的循环。但是,新手程序员经常会偶然遇到无限循环。

    下面是一个合适的无限循环示例。假设您正在设计一款游戏,其中用户掷骰子且必须获得6才能离开本垒。您想继续滚动模具直到其落在6上,显然您至少必须滚动一次。因此,您可以使用以下代码:

    do {  int roll = random(1, 2, 3, 4, 5, 6);  if (roll == 6)    break;} while (true);

    while(true)条件意味着该循环将永远运行,这是我们想要的,因为用户必须滚动直到获得6如果没有 break 语句,它将被卡住。但是,一旦用户输入6, if 语句就变为true,该序列就会跳出循环并移至后续内容。

    您不必使用a如果不想,可以使用break语句。实际上,如果可能的话,最好避免使用break语句。它们使您的代码难以维护,并且以条件结尾更易于跟踪。因此,下面经过修改的代码可以达到相同的目的:

    do {  int roll = random(1, 2, 3, 4, 5, 6);} while (roll != 6);

    坏的无限循环

    您有计划退出的无限循环是可以的。但是有时候您会意外地创建一个无限循环,如下例所示:

    int x = 7;do {  x = 1;  x = x + 2;  output "x equals " + x;} while (x < 10);

    这看起来像是它使每个循环将 x 递增2,并重复直到x不小于大于10,但看起来更近。因为循环每次运行都会将 x 设置为等于 1 ,所以这是一个无限循环。请注意, x = 1 x = x + 2 意味着 x 在块末总是3,无论运行,这意味着 x 永远不会小于10。

    请注意循环中的语句,该语句每次运行时都会无意更改变量,以免发生这种情况。

    我们已经在上面讨论了一些假设示例,但让我们快速看一下一些有用的do-while循环示例。

    如果您创建了一个循环以从文件中读取数据直到结束,您将使用do-while循环。显然,如果您打算从文件中读取文件,则至少需要捕获一个字符,因此可以使用类似do-while的循环(感谢Stack Exchange用户Steven Burnap的示例):

    do {  result = readData(buffer);} while (result != EOF);

    没有时间,您将不得不使用稍微难看的解决方案:

    while (true) {  result = readData(buffer);  if (result == EOF)    break;}

    另一个示例涉及从用户那里获取输入。假设您正在编写一个程序,要求用户输入一个正数。使用do-while,可以确保他们的输入正确:

    do {  output "Please enter a positive number:";  int input = getInput();} while (input < 0);

    使用此循环,用户会看到提示输入数字并输入一次值的提示。如果他们输入一个负数,则循环将再次运行,并提示他们输入一个正数,直到遵守为止。其他循环对于这种类型的动作根本没有意义。

    准备使用“同时循环"吗?

    我们已经对“同时循环"进行了调查,包括它们的循环。基本原理,如何最好地使用它们以及如何将它们与其他循环进行比较。如果您不记得本文中的其他内容,请知道do-while循环适用于何时需要至少运行一次,但不知道启动该菜单之前需要多少次。循环

    在程序中考虑这种情况,您将轻松找到适合do-while循环的位置。几乎所有最好的初学者语言都支持do-while循环,因此您应该毫无困难地实现它们。

    如果您正在学习基础知识,请确保您复习了掌握一种新编程语言的主要技巧。

    标签: