LOOP if-simulation,需要帮助才能理解

时间:2012-07-27 07:29:58

标签: loops if-statement logic

我有点难以理解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;

1 个答案:

答案 0 :(得分:1)

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

1已分配给y。如果x大于零,则会为y分配0。如果x为零,则y的值仍为1。在下一个循环中,如果Ay,则1执行一次,只有在前一个LOOP语句未执行的情况下才会执行,即{{1}等于x。这个结构的主要优点是0只执行一次而不是A的值,如果它大于零x那么。{/ p} >

这是逻辑再次,一步一步:

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

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