第5章:循环


计算机特别擅长的一件事是重复。我们如何说服Karel多次执行代码块?若要查看如何使用重复,请考虑放置42 锥体 s的任务:

之前:
后:

基本的循环

由于您知道确切要放置42 锥体 s,因此您需要的控制语句是 for循环 ,它指定您要重复执行固定次数的操作。的结构 for 声明看起来很复杂,主要是因为它实际上比Karel所需的功能强大得多。的唯一版本 for 卡雷尔使用的语法是:

for i in range( 计数 ):
要重复的陈述

我们将详细介绍 for 在课程的后面循环。现在,您应该阅读此行,以表示“重复函数主体中的语句”。计数次。”我们可以使用这个新 for循环 通过替换放置42 锥体 s计数用42并输入命令 放锥体() 在里面 for 循环代码块。我们在代码块中调用命令 身体

上面的代码是可编辑的 。尝试更改它,使其仅放置15 锥体 s。

匹配后置条件与前提条件

前面的示例给人的印象是 for 循环重复一行代码。但是身体 for 循环(被重复的语句)可以是多行。这是一个将锥体放入世界各个角落的程序示例:

密切注意程序在这些控制语句中的流动方式。程序run通过以下命令中的命令集 for 一次循环一个身体。它重复身体四次。

编写循环的最复杂的部分也许就是您需要在循环结束时了解世界的状态( 后置条件 )作为循环开始的世界的有效状态( 前提 )。在上面的示例中,假设匹配。美好的时光。在循环开始时,Karel始终位于一个正方形,没有锥体面向下一个空角。如果您删除了 turn_left() 在循环结束时?第一次迭代结束时的后置条件将不再满足有关Karel面对下一个空角的假设。该代码是可编辑的。尝试删除 turn_left() 命令看看会发生什么!

嵌套循环

从技术上讲, for 循环可以包含任何控制流代码,甚至可以包含其他循环。这是一个例子 for 循环,重复调用也有一个 for 循环。我们将其称为“嵌套”循环。在run之前,请尝试通读该程序,并了解它的作用:


下一章