失效链接处理 |
Principles of programming languages by Gilles Dowek PDF 下载
本站整理下载:
相关截图:
主要内容:
1.1.4 Test
A test is a construct that allows the creation of a statement composed of a
boolean expression b and two statements p 1 and p 2 . In Java, this statement is
written if (b) p 1 else p 2 .
To execute the statement if (b) p 1 else p 2 in a state s, the value of
expression b is first computed in the state s, and depending on whether or not
its value is true or false, the statement p 1 or p 2 is executed in the state s.
In Caml, this statement is written if b then p 1 else p 2 . In C, it is writ-
ten as it is in Java.
1.1.5 Loop
A loop is a construct that allows the creation of a statement composed of a
boolean expression b and a statement p. In Java, this statement is written
while (b) p.
To execute the statement while (b) p in the state s, the value of b is first
computed in the state s. If this value is false, execution of this statement is
terminated. If the value is true, the statement p is executed, and the value
of b is recomputed in the new state. If this value is false, execution of this
statement is terminated. If the value is true, the statement p is executed, and
the value of b is recomputed in the new state... This process continues until b
evaluates to false.
This construct introduces a new possible behaviour: non-termination. In-
deed, if the boolean value b always evaluates to true, the statement p will
continue to be executed forever, and the statement while (b) p will never
terminate. This is the case with the instruction
int x = 1;
while (x >= 0) {x = 3;}
To understand what is happening, imagine a fictional statement called
skip; that performs no action when executed. You can then define the state-
ment while (b) p as shorthand for the statement
if (b) {p if (b) {p if (b) {p if (b) ...
else skip;}
else skip;}
else skip;}
else skip;
So a loop is one of the ways in which you can express an infinite object using a
1.2 Input and Output 7
finite expression. And the fact that a loop may fail to terminate is a consequence
of the fact that it is an infinite object.
In Caml, this statement is written while b do p. In C, it is written as it
is in Java.
|