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

循环是您将在编程中学习的第一种控制类型之一。你可能知道while和for循环,但是while循环能完成什么呢?...

当你学习编程时,理解基本的构建块是早期成功的关键。稍后您将学习困难的主题,但如果您不了解变量类型、循环和函数,则很难深入了解。

do-while-loops-explained-featured

大多数新程序员不久就学会了if-else语句、while循环和for循环。但是您可能不了解的循环类型之一是do while循环。让我们讨论一下这个循环是如何工作的,当您想使用它时,我们来看几个例子。

基础知识

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

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

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

如果循环开始时x等于1,它将重复,直到x不满足while旁边的条件。因此,它将总共运行5次。当x不小于5时,循环结束并继续到后面的代码。此输出如下所示:

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等于20,它只运行一次。因此您将看到一个输出语句,x递增到21,循环将结束,因为21不小于5。其输出为:

The variable x equals 20 The loop has ended.

与while和for循环对比

do 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++;}

然而,这是笨重的,没有理由这样做时,做,而循环存在。

for循环

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部分运行时,您不知道它的值是多少——而且它至少会运行一次。如果这个循环运行时我是500,这里的输出就不准确了。

总而言之:

  • 当您希望至少执行一次命令并持续执行直到条件为false时,do while循环非常有用。
  • while循环允许您在条件为true时重复代码块,并在条件不再为true时立即停止。
  • for循环允许您通过设置自己的参数来指定循环应该运行多少次。

留下do while循环

当然,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,序列就会跳出循环并转到后面的内容。

如果你不想,你不必使用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循环适用于需要至少运行一次的情况,但在启动循环之前不知道需要它的次数。

在你的程序中考虑这样的情况,你会很容易找到适合do while循环的地方。几乎所有最好的初学者语言都支持do while循环,因此实现它们应该不会有问题。

如果您正在学习基础知识,请务必复习我们掌握新编程语言的主要技巧。

你还能想到什么情况下做一段时间是有意义的?如果您在程序中使用do while循环,请在评论部分进行讨论并告知我们!

图片来源:Aaban viaShutterstock.com网站

  • 发表于 2021-03-14 11:34
  • 阅读 ( 246 )
  • 分类:编程

你可能感兴趣的文章

函数式程序设计(functional programming)和命令式程序设计(imperative programming)的区别

...计使用改变程序状态的语句。 编程范例提供了一种构建计算机程序的结构和元素的风格。编程范例有助于根据编程语言的特征对其进行分类。编程语言可能会影响更多的范例。在面向对象的范例中,程序是用对象构造的,而对...

  • 发布于 2020-10-19 02:12
  • 阅读 ( 478 )

虽然(while)和执行while循环(do while loop)的区别

关键区别–while与do while循环 在编程中,可能会有需要反复执行语句块的情况。大多数编程语言支持不同的控制结构,如for循环、while循环和do while循环来重复代码。循环允许多次执行一组语句,直到给定条件变为false。属于循...

  • 发布于 2020-10-19 10:58
  • 阅读 ( 618 )

递归(recursion)和迭代(iteration)的区别

...次又一次地重复,直到给定的条件为真。迭代可以用“for循环”、“do while循环”或“while循环”来实现。“for loop”语法如下。 for(初始化;条件;修改){ //声明; } 图02:“回路流程图” 初始化步骤首先执行。这一步是声明...

  • 发布于 2020-10-19 23:58
  • 阅读 ( 275 )

对于(for)和while循环(while loop)的区别

对于(for)和while循环(while loop)的区别 程序是用编程语言编写的执行某项任务的指令集。它可以是逻辑运算,也可以是数学运算。通常,程序中的语句一个接一个地执行。有时需要反复执行一组语句。控制结构用于实现这一任务...

  • 发布于 2020-10-24 02:28
  • 阅读 ( 171 )

powershell foreach、while和其他循环的工作原理

...本简单一点。首先,使用Restart Computer命令重新启动远程计算机。(我们在这里为重新启动命令使用了一个虚拟IP,请确保用您的计算机的DNS/IP覆盖它)。然后创建计数器变量i并将其设置为0。接下来,使用Start Sleep的Do循环将脚本...

  • 发布于 2021-03-11 23:17
  • 阅读 ( 443 )

迄今为止程序员更有趣的10个原因

...垃圾回收指的是在程序不再需要时清理它所使用的内存。计算机的内存有限,因此将未使用的内存返回到堆(一个等待使用的池)非常重要。否则,草率的编程可能会导致未优化的代码和内存泄漏(这是一个大问题)。 ...

  • 发布于 2021-03-12 19:23
  • 阅读 ( 217 )

帮助您快速学习的10个基本python示例

... 循环 ...

  • 发布于 2021-03-16 13:29
  • 阅读 ( 198 )

关于在excel中编写vba宏的初学者教程(以及学习的原因)

... 启动for循环 ...

  • 发布于 2021-03-24 10:07
  • 阅读 ( 240 )

为什么编程语言离不开函数

...到屏幕以及类似任务的函数。你能想象如果你被要求告诉计算机如何执行这些基本操作会是多么浪费时间吗? ...

  • 发布于 2021-03-26 09:26
  • 阅读 ( 173 )

如何在python中使用for循环

像任何其他编程语言一样,在Python中循环是避免编写重复代码的好方法。但是,与Python的while循环不同,for循环是一个确定的控制流语句,它为您提供了对一系列中的每个项的更多权限。 ...

  • 发布于 2021-03-29 00:57
  • 阅读 ( 264 )
msmw3951
msmw3951

0 篇文章

相关推荐