Loops 如果模拟循环,需要帮助了解

Loops 如果模拟循环,需要帮助了解,loops,if-statement,logic,Loops,If Statement,Logic,我不知怎的很难理解中的以下程序(您也可以阅读文章的原文),该程序应该模拟如果x=0,则为END y:=1; LOOP x DO y:=0 END; LOOP y DO A END; 这究竟是如何模拟IF语句的?为什么我不能这样做: x:=0; LOOP x DO A END; 我不知道这种语言是什么,但如果假设循环cntr不结束执行stmt,只要cntr大于零(并且在每次迭代后递减),则其工作原理如下: 1被分配给y。如果x大于零,则分配y0。如果x为零,y的值保持1。在下一个循环中,如果y

我不知怎的很难理解中的以下程序(您也可以阅读文章的原文),该程序应该模拟
如果x=0,则为END

y:=1;
LOOP x DO y:=0 END;
LOOP y DO A END;
这究竟是如何模拟
IF
语句的?为什么我不能这样做:

x:=0;
LOOP x DO A END;

我不知道这种语言是什么,但如果假设
循环cntr不结束执行
stmt
,只要
cntr
大于零(并且在每次迭代后递减),则其工作原理如下:

1
被分配给
y
。如果
x
大于零,则分配
y
0
。如果
x
为零,
y
的值保持
1
。在下一个循环中,如果
y
1
,则执行一次
A
,只有在前一个
loop
语句没有执行时,也就是说,如果
x
等于
0
。这种构造的主要优点是
A
只执行一次,如果
x
的值大于零,则执行次数不如
x
的值多,而
循环x不结束就可以了

以下是逻辑,一步一步:

  • y
    设置为
    1
  • y
    设置为零
    x
    次。这相当于
    如果x 0那么y:=0 END
  • A
    执行
    y
    次(如果
    x
    为零,则执行一次;如果
    x
    为非零,则执行零次)

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

好的,如果我看对了,它的工作原理如下:如果x>0,则将y=0设置为x的值,然后运行A,如果x=0,则直接运行A。我说得对吗?如果
x0
,那么
y
将被设置为
0
,下一个循环将执行
A
零次。只有当
x=0
时,
y
将保留
1
的值,并且在下一个循环中
A
将执行一次。总之,如果
x=0
,那么
A
只执行一次。否则
A
执行零次(即根本不执行)=>
如果x=0,则结束
我认为,如果
x0
则下一个循环将不会执行
A
,因为
y=0
。仅当
x=0
,然后
y=1
,这使得下一个循环只能运行
1
-次。对吗?这是什么语言?您应该将其添加为标记。这是一种循环语言,非常旧,因此在stackoverflow中没有标记比FORTRAN和COBOL更糟?”因为这些都有标签。无论如何,这个问题需要一个关于语言的注释;如果没有标记,您可以在问题中指定“LOOP”是编程语言的名称,而不仅仅是对循环的引用。由于语言晦涩难懂,它还可以使用指向更多信息的链接。当然,你是对的。我现在就做。。