【问题标题】:LOOP if-simulation, need help to understandLOOP if-simulation,需要帮助理解
【发布时间】:2012-07-27 07:29:58
【问题描述】:

我有点难以理解LOOP 中的以下程序(您也可以阅读原文German 中的文章),它应该模拟IF x=0 THEN A END

y:=1;
LOOP x DO y:=0 END;
LOOP y DO A END;

这究竟是如何模拟IF 语句的?为什么我不能这样做:

x:=0;
LOOP x DO A END;

【问题讨论】:

  • 这是什么语言的?您应该将其添加为标签。
  • 这是一种 LOOP 语言,非常古老的语言,如此古老的语言,以至于在 stackoverflow 中没有标记它.. :D
  • 比 FORTRAN 和 COBOL 更老?因为 SO 有这些标签。无论如何,问题需要关于语言的注释;如果没有标签,您可以在问题中指定“LOOP”是编程语言的名称,而不仅仅是对循环的引用。由于语言晦涩难懂,因此还可以使用指向更多信息的链接。
  • 当然,你是对的。我现在就去做..

标签: loops if-statement logic


【解决方案1】:

我不知道这种语言是什么,但如果假设LOOP cntr DO stmt END; 执行stmt,只要cntr 大于零(并且在每次迭代后递减),那么它的工作原理如下:

1 分配给y。如果x 大于零,则将y 分配给0。如果x 为零,则y 的值仍为1。在下一个循环中,如果y1,则执行一次A,只有当前面的LOOP 语句没有执行时才会出现这种情况,即如果x 等于0。这种构造的主要优点是A 只执行一次,并且没有x 的值执行的次数多,如果它大于零,LOOP x DO A END; 会这样做。

这里又是逻辑,一步一步来:

  • y 设置为 1
  • y 设置为零 x 次。这相当于IF x <> 0 THEN y:=0 END
  • A 被执行y 次(如果x 为零,则执行一次,如果x 不为零,则执行零次)

这三个步骤转换为:如果x 为零,则执行A 一次,否则执行A 零次(即不执行)。

【讨论】:

  • 好的,如果我没看错的话,它会这样工作:如果 x>0 然后设置 y=0 多次作为 x 的值,然后运行 ​​A,如果 x=0,然后直接运行A。我说的对吗?
  • 如果x <> 0y 将设置为0 并且下一个循环将执行A 零次。只有当x = 0y 才会保留1 的值,并且在下一个循环中A只执行一次。所以总而言之,如果x = 0,那么A 只执行一次。否则A 执行零次(即根本不执行)=> IF x=0 THEN A END
  • 我认为,如果x<>0 那么下一个循环将不会执行A,因为y=0。仅当x=0,然后y=1 使下一个循环仅运行1 - 时间。对吗?
猜你喜欢
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 2022-01-15
  • 1970-01-01
相关资源
最近更新 更多