两种迭代类型之间的差异

时间:2012-09-25 02:15:42

标签: coding-style logic hoare-logic

这是一个核心问题 请不要说语法或语义, 问题是

之间的实际区别是什么
  

WHILE循环和FOR循环,可以完成写入for循环的所有内容   与while循环然后为什么两个循环?

这是在剑桥大学的研讨会上提出的。 所以我认为我们必须在性能开销和WC复杂性方面进行解释。

我认为我们必须遵循Floyd-Hoare逻辑

6 个答案:

答案 0 :(得分:1)

就性能开销而言,这将取决于您正在使用的编译器和语言。

它们之间的主要区别在于,迭代某些东西时for循环更容易阅读,而在评估特定条件或布尔标志时,循环更容易阅读。

答案 1 :(得分:1)

两个循环结构之间的唯一区别是能够在for循环的标头中进行预循环初始化和循环后更改。

之间没有性能差异
while (condition) {
    ...
}

for ( ; condition ; ) {
    ...
}

构建体。为方便和可读性添加了替代方案,没有其他含义。

答案 2 :(得分:0)

不同之处在于for()循环将多个步骤压缩为一行。最终,所有答案都会以这种方式归结为语法或语义,所以没有一个真正让你满意的答案。

while()循环仅表示循环终止的条件,而for()循环除此之外还可以通过计数器来规定要测量的变量。

(实际上,for()循环是非常通用的,并且在声明中可能会发生很多事情以使它们变得非常奇特,但上面的陈述总结了几乎所有你将看到的for()循环,即使在生产环境中也是如此。)

答案 3 :(得分:0)

两者之间偶尔有一个相关的区别是,while循环可能会比for循环强加一个更复杂的条件

循环遍历可预测大小的集合

时,最好使用FOR循环

我想这会被认为是语法,但我认为它反驳了for循环可以做任何while循环的概念,尽管反过来确实是正确的

答案 4 :(得分:0)

显然不需要两个循环,只需要一个循环。实际上,许多教科书都考虑使用一种语言(通常名为Imp desugars forwhile并使用初始化语句。

话虽如此,如果你尝试计算循环不变量的差异,以及这两个循环的Hoare逻辑中的相关规则,由于init块,它们之间的区别很小。由于这看起来像家庭作业,我会让你弄清楚细节。

所以答案是:“它使事情变得更容易一些,在语法证明方面,但它只是装饰性的,对于所有意图而言,你真的只需要一个......”

到目前为止,没有其他答案指出我认为这个区别的真正重要部分是你的问题:可能是他们用Hoare连接词改变了一些东西......

另外,请注意,根据Hoare逻辑推测性能是愚蠢的。如果你关心语义,你的教授可能不会给出一个该死的或想听听表现: - )

答案 5 :(得分:0)

使用if-goto语句可以完成一切。为什么有任何循环呢?它是一种语法糖,可以使开发人员的生活更轻松,并允许编写更好的结构化(更小和更易读)的代码。它与性能无关