0

我很难理解LOOP中的以下程序(您也可以阅读原文的德语文章),它应该模拟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;
4

1 回答 1

1

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

1分配给y。如果x大于零,则y赋值为0。如果x为零,则y保留的值1。在下一个循环中,A执行一次 if yis1仅当前一个LOOP语句未执行时才会执行一次,即 ifx等于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零次(即不执行)。

于 2012-07-27T07:37:42.833 回答