7. .
6 , , .
, , , . IF, , . IF , .
.
IF <>, . <> - , . IF : <> , .
- ( ) . , . , .
.
, box-, . , (boolean expression) g - . {TRUE, FALSE}.
TRUE FALSE T F . OR, AND, NOT , , .
<> - < > EOLN EOF.
f , x y . :
EOF(f) = {<s, T>: s(f) = <x, , R>} U {<s, F>: s(f) = <x, y, R>, y ¹ }
EOLN(f) = {<s, T>: s(f) = <x, y, R>, Θ y = /} U {<s, F>: s(f) = <x, y, R>, y ¹ , Θ y ¹ /}
f , INPUT f INPUT:
EOF(f) = EOF(INPUT)
EOLN(f) = EOLN(INPUT)
, EOF T, EOLN .
, EOF(f) (s) s, F1<A2,345/,R>, , EOF(f). , y = 345/ ¹ , .. F c s.
|
|
EOF(f) (s) = F
:
c = d = {<s, T>: c (s) , d (s)}
U {<s, F>: c (s) , d (s)}
c < d = {<s, T>: c (s) d (s)}
U {<s, F>: c (s) d (s)}
c > d = d < c
, s ChA, Ch (s) = A, :
Ch = A (s) = T
Ch = X (s) = F
Ch < A (s) = F
Ch > A (s) = F
c < d , . -, . , , , , , :
A B C Z
a b c z
0 1 2 9
-. .
, <>. b , , :
NOT (b) = {<s, T>: b(s) = F} U {<s, F>: b(s) = T}
b c, :
b AND c = {<s, T>: b(s) = T, c(s) = T}
U {<s, F>: b(s) = T, c(s) = F}
U {<s, F>: b(s) = F, c(s) = T}
U {<s, F>: b(s) = F, c(s) = F}
b OR c = {<s, T>: b(s) = T, c(s) = T}
U {<s, T>: b(s) = T, c(s) = T}
U {<s, T>: b(s) = T, c(s) = T}
U {<s, F>: b(s) = F, c(s) = F}
, NOT, AND, OR, 3, TRUE T FALSE F. , .
NOT b (s) = NOT b (s)
b AND c (s) = b (s) AND c (s)
b OR c (s) = b (s) OR c (s)
NOT, AND OR , () , b . , () .
:
NOT(Ch = A) ({ChA, })= F
(Ch1 = A) AND (Ch2 <> Ch1) = ({Ch1A, C2F }) = T
(Ch1 = A) OR (Ch2 <> Ch1) = ({Ch1B, C2F }) = T
:
c <> d = NOT (c = d)
c <= d = NOT (c > d)
c >= d = NOT (c < d)
, , . , :
|
|
s= {ChF, INPUT<Line□, 34/ R>, }
Ch <> # AND (NOT(EOLN)) (s)
= Ch <> # (s) AND (NOT(EOLN)) (s)
= NOT Ch = # (s) AND (NOT(EOLN)) (s)
= NOT(Ch = # (s)) AND (NOT(EOLN)) (s)
= NOT(F) AND (NOT(F)) = T AND T = T
, , , .
:
IF
IF . , . b T E . :
IF b THEN T ELSE E = {<s, T (s)>: b (s) = T} È {<s, E (s)>: b (s) = F}
, b s, , b s. b T F, , .
, , . , , b(s) , s , IF . b(s) s, , b(s) = T , s T b(s) = F E.
, u :
IF V1 < V2
THEN
V1:= V2
ELSE
V2:= V1
:
u = {<s, V1:= V2(s)>: V1 < V2 (s) = T} È {<s, V2:= V1(s)>: V1 < V2 (s) = F}
s = {V1A, V2B, }
V1 < V2 ({V1A, V2B, }) = T
u V1:= V2:
u({V1A, V2B, }) = V1:= V2({V1A, V2B, }) = {V1B, V2B, }
IF , . : V1 < V2, V1:= V2 .. .
IF ELSE b T:
IF b THEN T = {<s, T (s)>: b (s) = T} È {<s, s>: b (s) = F}
:
IF EOF THEN WRITELN(Ooops) ({INPUT <XXX, XX/, R>, OUTPUT <, , W>, })
= {INPUT <XXX, XX/, R>, OUTPUT <, , W>, }
EOF({INPUT <XXX, XX/, R>, OUTPUT <, , W>, }) = F
.. IF b THEN T .
.
IF , (concurrent assignment). , .
.
, IF , BEGIN. IF , <>. , . , .
|
|
:
- .
- b b , (b -> c) .
- b b d , (b -> c) | d .
, C (T > ) [T = TRUE].
(b1 -> c1) | (b2 -> c2)| | (bn -> cn)
(b1, b2, ,bn) (c1, c2, , cn)
, c1, :
i. bi . (b1,b2,. , bi-1) F s,
ii. bi T
s, :
i. b1,b2,. , bn T s;
ii. , F s.
iii. , , s.
, IF
IF V1 <= V2
THEN
V1:=2
ELSE
BEGIN
V1:= V2;
V2:= A
END
:
(V1 <= V2 - > V1:= 2) | (T -> V1, V2:= V2, A)
, s V1 <= V2 (s) = T, :
V1:= 2
V1 <= V2 (s) = F,
V1, V2:= V2, A
, T.
,
(NOT (EOLN) -> Ch:= Z) | (EOF -> Ch:= A)
,
{INPUT<All□gone/, , R>, }
EOLN , .
, .
, , , :
((V1 = V3) OR (V1 <>V3) -> Ch1, V3:= A,V1,)
, :
(Ch1, V3:= A, V1)
, .
, IF, :
{(V1 <= V2 - > V1:= 2) | (V1, V2:= V2, A)}
IF V1 <= V2
THEN
V1:=2
ELSE
BEGIN
V1:= V2;
V2:= A
END
. :
(V1 <= V2 - > V1:= 2) | (V1 > V2 -> V1, V2:= V2, A)
F, T.
< >:= < >
, T
(T -> < >:= < >)
()
, .
, . F, I .
|
|
IF ELSE , :
{(V1 < V2 -> V1:= V2) | ()}
IF V1 < V2
THEN
V1:= V2
, , , F, IF .
(V1 < V2 -> V1:= V2)
IF, , V1 V2, IF , .