我在某種程度上很難理解LOOP中的以下程序(您也可以閱讀其原文German中的文章),它應該模擬IF x=0 THEN A END
。LOOP if-simulation,需要幫助瞭解
y:=1;
LOOP x DO y:=0 END;
LOOP y DO A END;
這究竟如何模擬IF
陳述?爲什麼我能做到這一點並不:
x:=0;
LOOP x DO A END;
我在某種程度上很難理解LOOP中的以下程序(您也可以閱讀其原文German中的文章),它應該模擬IF x=0 THEN A END
。LOOP if-simulation,需要幫助瞭解
y:=1;
LOOP x DO y:=0 END;
LOOP y DO A END;
這究竟如何模擬IF
陳述?爲什麼我能做到這一點並不:
x:=0;
LOOP x DO A END;
我不知道這是什麼語言,但如果假設LOOP cntr DO stmt END;
只要cntr
大於零執行stmt
(和它的每次迭代之後遞減),那麼這工作原理如下:
1
被分配到y
。如果x
大於零,則y
分配爲0
。如果x
爲零,則y
的值仍爲1
。在下一個循環中,如果y
爲1
,那麼A
將被執行一次,只有當前一個LOOP
聲明未執行時,即x
等於0
時,情況纔是如此。這個結構的主要優點是是x
值如果大於零,這LOOP x DO A END;
會做大於A
只執行一次,並沒有那麼多時間。
這裏是邏輯再次,一步一步:
y
設置爲1
y
被設置爲零x
倍。這相當於IF x <> 0 THEN y:=0 END
A
執行y
倍(一次如果x
是零本零次如果x
是非零)這三個步驟轉換爲:如果x
是零,則執行A
一次,否則執行A
零次(即不執行)。
好,所以如果我看到它,它的工作是這樣的: 如果x> 0,則設置y = 0的這麼多次x的值,那麼如果X上運行A, = 0,然後直接運行A.我對嗎? – doniyor 2012-07-27 07:46:15
如果'x <> 0',那麼'y'將被設置爲'0',並且下一個循環將執行'A'零次。只有當'x = 0'時,'y'纔會保留'1'的值,並且在下一個循環中'A'將會被一次執行_exactly。所以總之,如果'x = 0',那麼'A'只執行一次。否則'A'執行零次(即根本不執行)=>'IF x = 0 THEN A END' – 2012-07-27 07:50:49
我認爲,如果''x <> 0''那麼下一個循環將不會執行''A'',因爲''y = 0''。只有''x = 0'',然後''y = 1''使下一個循環只運行''1'' - 時間。對? – doniyor 2012-07-27 07:54:59
這是什麼語言?您應該將其添加爲標籤。 – outis 2012-07-27 07:46:23
這是一個LOOP語言,非常陳舊,語言如此老,以至於在stackoverflow中沒有標籤..:D – doniyor 2012-07-27 07:48:20
比FORTRAN和COBOL更老嗎?因爲SO有這些標籤。無論如何,這個問題需要關於語言的說明;如果沒有標籤,則可以在問題中指定「LOOP」是編程語言的名稱,而不僅僅是對循環的引用。由於語言晦澀難懂,它也可以使用鏈接獲取更多信息。 – outis 2012-07-27 07:57:26