DOUG LLOYD:好吧,所以 让我们来谈谈循环。 因此,循环是一种很酷 因为它们可以让你的程序 要执行的代码行 一遍又一遍又一遍。 反复,而不需要复制 和粘贴或以其他方式重复。 有三个主要 种类的循环,你会看到的。 你可能有机会使用 每一个你通过CS50进步。 其中一些循环是相当 熟悉你从头开始, 如此反复,当我们用条件语句一样, 我们把他们并排 如果有一个比喻,我们可以借鉴。 首先是永远的从无到有, 与之相比,而(真)。 这就是我们所说的无限循环。 代码卷曲之间的界线 牙套,就像拼图 那放不下的C 永远阻断, 将从顶部反复执行 到下,一遍又一遍又一遍, 永远。 毕竟,如果你还记得我们的 布尔表达式的讨论, 真正的总是正确的。 因此,如果我们正在做 东西只要真 是true--似乎有点silly--真 永远是真实的,所以它会始终运行。 它会永远运行和 永永远远,直到我们 找到一种方法来摆脱它 break语句,这再次, 我们看到前一阵我们 谈论开关。 或只是杀死我们 节目,顺便说一句, 如果你发现自己在一个 有一个无限循环的情况 你不知道如何停止 你的程序运行。 只要按下控制和C 这会杀了你的计划,你。 但是,这又是 所谓无限循环。 它是一个将永远运行一个循环。 现在,while循环不 总是无限的,因为还 我们可以代替布尔 的东西表达 比多一点有用的只是真实的。 因此,这里是另一个例子。 虽然有些布尔 表达式,然后大括号。 这几乎是类似的 重复,直到从头开始。 虽然在第二,我会 解释这种差异。 因此,在C,如果布尔表达式 while循环内 计算结果为真,行 大括号之间的代码 会一遍又一遍地重复执行 又一遍,直到布尔表达式 计算结果为false。 因此,例如,你可能 有某种形式的计数器。 所以说,你在开始 这个循环说INT x等于为零。 当x小于100,做一对夫妇 里面那个大括号的事情, 然后在循环结束时,你说 X加再加,你递增x。 最终x将得到 100,你会 停止,因为条件 x小于100 将不再是真实的作为 一旦x等于100。 100是不小于100。 现在有点混乱,行为 划痕块的反转。 所以要非常小心,如果这是 您的第一个进军使用循环。 基本上,重复 直到块划痕 将重复的东西 一遍又一遍又一遍, 直到表达,布尔 在六边形表达式为true。 因此,它会继续做 它,直到它是真实的。 同时,while循环 继续做它,直到它是假的。 所以他们是非常相似的,但 有那么一点区别只是 要特别为您做出谨慎 你从过渡首次尝试 刮成C。 接下来的循环方式是 其实很相似。 这就是所谓的do while循环。 这个循环将执行所有的行 曾经的大括号之间的代码, 然后它会检查 布尔表达式。 如果布尔表达式 计算结果为true, 它会回去重复 这一过程一遍又一遍 又一遍,直到布尔 表达式的值为false。 所以这个循环,不像while循环,是 保证运行的至少一个时间。 这可能是非常有用的。 最后,我们有一个for循环。 For循环是一种 语法上没有吸引力 这里面的很多事情 在这里,所以我承担 当我们尝试和突破这些作品分开。 通常,用例 for循环是你 要重复东西 的时间的特定次数。 在这里本实施例中, 我有重复块 从无到有,这是 类似于for循环 在C,重复的东西10倍。 而for循环的 左边有,这 是一个四循环 会做同样的事情。 这将去10次。 从零算起,我们 递增循环的每个通行证。 我们继续这样做, 直到i小于10。 所以会发生什么? 有一大堆的代码中有。 让我们打破它 发生了什么步骤 一步,因为我们通过一个挖掘循环。 发生的第一件事是 计数器变量为中心。 一切到第一左侧 分号括号内 被执行。 在这种情况下,我们 他说INT I等于0。 声明一个叫我新的变量, 该变量是一个整数类型 和我们说里面的值 该变量将是零。 我们做的第二件事是 我们然后立即评估 布尔表达式。 布尔表达式是在 中间的两个分号。 余小于10。 这是真的在这里,对不对? 我们只是说,我等于 零,所以0小于10, 并使得条件 是真实的,现在我们将 继续执行该循环体。 如果是假的。 如果,例如,我说,而不是 我等于0那里,我说我等于15, INT I等于15。 阱15不小于10,所以我们 会不会进入循环体 因为布尔表达式 将有评价是假的。 之后我们通过自上而下, 我们遇到右大括号, 第三个事情发生。 计数器变量 递增,或者说,该线 的语句代码之后 的内侧第二分号 for循环的括号被执行。 因此,我们开始通过 他说INT I等于0。 然后我们检查是否不 布尔表达式为true。 0小于10所以这是真的。 因此,我们将继续 入体循环。 事情会发生在循环里面, 当我们遇到右大 梅开二度,接下来的事情我们 做的是我们说我加分,加分。 我是零,现在我是其中之一。 然后,我们再检查的价值 布尔表达式在中间。 一小于10。 因此,我们将通过这种 一次又一次的处理。 我们会得到闭幕 大括号了。 我们会增加我的 1至2,从2至3。 等等等等等等,直到 最后,我的价值变成10。 比10小10? 第 从0开始计数,我们已经走了 经过10次迭代循环。 我们已经重复10次,只是 就像我们在划痕块。 所以这基本上是 过程中产生的四环路。 现在收走了 实际的代码,并把它 在短短的一些基本的一般性发言。 这里会发生什么。 所有的发言 先开始执行。 你可能有不止一个。 然后,布尔表达式进行检查。 如果表达式的值为true, 执行主体的循环一次。 如果表达式的计算 为假,我们就大功告成了。 我们不执行 体循环可言。 我们已经执行后, 体循环一次, 然后,我们做的是什么 增量部分出现。 这通常将是 像我加分,加 或者类似的东西,那 修改计数器变量。 然后,当我们增加,我们 再次检查表达 并且一遍又一遍地重复这些步骤 又一遍,直到表达式 不再是真实的。 那么,什么是用例为一个循环? 使用您使用whil​​e循环时, 你想有一个循环重复 一个未知的次数,但 它可能可能无法运行所有。 一个真正常见的例子 正在使用,而循环 是运行一个游戏的控制流程。 你可能不知道多久 用户将被播放, 但你要保持 做同样的事情。 更新的位置 各种精灵在黑板上。 你要保持事物 在任何时候移动, 但你不知道什么时候 用户要停止播放 或者当他们要去 用完的生命。 因此,while循环是真的 良好的类似的东西。 这是一个很好的用例。 对于一个do while循环, 这是非常相似的。 你想要一个循环重复未知 次数,但至少一次。 您可以使用它来游戏 太多,但一个真正的常见用例 是提示用户输入。 通常情况下,你可能会说些什么 喜欢,给我一个正整数, 你可能把那个 里面的do while循环。 因此,它总是会问他们在 至少一次为一个正整数。 如果他们给你一个正整数, 你可能会打破循环。 你可能会做。 布尔表达式 在做,而可能是假的。 你会不会再问问他们。 如果他们给你一个负数,其中 他们键入一些文字或东西是 不是真的有用 你,你可能会使用 do while循环回去做 一遍又一遍。 你肯定要问 他们给你一个数字一次, 但你不知道多少倍 在那之后他们可能是害虫。 所以,一个做,而这是一个伟大的使用 情况下,用于提示用户输入。 而一个for循环使用 通常情况是,当 要重复循环 离散的次数, 虽然你可能不 知道的次数 此刻程序编译。 因此,例如,也许你有一个程序 在那里你提示输入数字的用户。 他们进入100。 然后,你的循环将 在这种情况下,运行100次。 或者,也许他们进入 1000在你的程序 然后运行循环1000次。 它的特定次数。 他们不一定 知道这是什么号码 是编译时刻程序。 它不象while循环 它可能是无限的。 这是相当一些 你只是不知道。 现在,即使我 列出所有这些用例, 你应该知道,在相当 每很多情况下, 你可以交换所有 这三个循环。 您可以使用一个for循环,你 否则将使用whil​​e循环。 您可以使用一个for循环的地方 你会使用一个do while循环等。 它可以是一个有点棘手,有时, 所以一般这是一个很好的做法 坚持一个典型的用例。 使用do while循环,如果你 想要的东西一次,至少。 如果你想要做的使用for循环 东西的特定次数。 毕竟,这就是为什么有 三种不同类型的循环。 因此,他们可以使用 在正确的范围内。 但是你可以互换 他们,如果你想要的。 如果你觉得舒服,而循环 而你总是想使用whil​​e循环。 这是一些 你可以这样做,但它 可能有点语法 棘手的,其中一个for循环 将是一个简单得多。 我的名字是道格·劳埃德,这是CS50。