我有点难以理解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;
答案 0 :(得分:1)
我不知道这种语言是什么,但如果假设LOOP cntr DO stmt END;
执行stmt
只要cntr
大于零(并且在每次迭代后它递减),那么这个工作原理如下:
1
已分配给y
。如果x
大于零,则会为y
分配0
。如果x
为零,则y
的值仍为1
。在下一个循环中,如果A
为y
,则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
零次(即不执行)。