- INPUT ; OUTPUT . . , , , , , .
, , , .
r s, r ◦ s, <x, z>, , , <x, y> Î r <y, z> Î s. set- :
r ◦ s = {<x, z>,: , <x, y> Î r, <y, z> Î s}
, y, . .
t = {<<x, z>, y>: <x, y> Î r, <y, z> Î s }
<x, z> y t, y , , r ◦ s t.
r ◦ s = domain(t)
, box- . Box- , , .
box- . , .
, , .
box- ( ), , , , .
, . r x, (value-):
r ◦ s = {<x, z>,: , y=r(x), <y, z> Î s}
|
|
s y
r ◦ s = {<x, z>,: , y=r(x), z=s(y)}
y
r ◦ s = {<x, s(r(x))>: r x. s r(x) }
, y, . r s , x.
, .
Value- . (f ◦ g)(x) y=f(x), g(y)
, ,
PROGRAM Any (INPUT, OUTPUT) ◦.
L.
y = PROGRAM Any (INPUT, OUTPUT) (L)
.(y)
, PROGRAM Any (INPUT, OUTPUT) ◦.(L)=.(y),
y = PROGRAM Any (INPUT, OUTPUT) (L)
,eltn:
y= {INPUT <, u, R>, OUTPUT <, , W>},
.(y)= <>
u, L. OUTPUT , , L.
, .. r, s, t
(r ◦ s) ◦ t = r ◦ (s ◦ t)
(r ◦ s) ◦ t = {<x,u>: z, <x, z> Î (r ◦ s), <x, u> Î t}
= {<x, u>: z, y <x, y> Î r, <y, z> Î s, <z, u> Î t }
= {<x, u>: y <x, y> Î r, <y, u> Î (s◦ t}
= r◦ (s ◦ t)
, .
. , (identity function I) , .. s:
domain(s) Í domain(I), s ◦ I = I ◦ s = s
s ◦ {} = {} ◦ s = s
, , .. r s ,
r ◦ s = I
I domain(r)
r, rT , r, .:
rT= {<x, y>: <y, x> Î r}
, . :
r , r.
, , r , , ,
r ◦ rT = {<x, z>: y, <x, y> Î r, <y, z> Î rT}
= {<x, z>: y, <y, x> Î rT, <y, z> Î rT}
rT , , , , x z y .
|
|
r ◦ rT = {<x, x>: y, <x, y> Î r, <y, x> Î rT}
= {<x, x>: y, <x, y> Î r }
= I, domain(r)
rT r.
.
, CFPascal. . : , BEGIN .
, . , . , . CHAR, TEXT PROCEDURE.
, . , , .
N CHAR :
VAR N: CHAR = {<s, t>: t = s È {<N, x>} x}
N <> VAR N: CHAR :
V = VAR & N & CHAR
? N:
VAR N: CHAR = {<s, t>: t = s È {<N,?>} }
, N. , s VAR N: CHAR, s :
s È {ChA},
s È {ChB},
.
VAR N: CHAR , VAR N: CHART , :
<s È {NA}, s>
<s È {NB}, s>
.
. N , :
VAR N: TEXT = {<s, t>: t = s È {N<x, y, z>} x, y z Î {R,W}}
3- <?,?,?> .
, . , 3-.
:
VAR h1, Ch2: CHAR = VAR h1: CHAR ◦ VAR Ch2: CHAR
= {<s, t>: t = s È {Ch1?} È {Ch2?}}
,
<s, s È {Ch1C} È {Ch2F}>
.
,
x = {INPUT <, , R>, OUTPUT <, , W>}
VAR h: CHAR, x
{INPUT <, , R>, OUTPUT <, , W>} È {Ch}
c. :
VAR h: CHAR ({INPUT <, , R>, OUTPUT <, , W>})
= { INPUT <, , R>, OUTPUT <, , W>, Ch?}
, , . , <> . - , . .
N T, :
PROCEDURE N; T = {<s, t>: t = s È {<N, T>}}
|
|
, . , , .
, . , , . , .
.
, BEGIN. BEGIN
BEGIN
END
, I.
BEGIN END = I
, - BEGIN, . , VAR , VAR T .
VAR
Ch: CHAR;
BEGIN
END
:
VAR Ch: CHAR; BEGIN END = VAR Ch: CHAR ◦ BEGIN END ◦ VAR Ch: CHAR T
, , Ch? , , Ch . :
{INPUT <, Ñ /, R>, OUTPUT <, , W>}
:
(VAR Ch: CHAR ◦ BEGIN END ◦ VAR Ch: CHAR T )
({INPUT <, Ñ /, R>, OUTPUT <, , W>})
= (BEGIN END ◦ VAR Ch: CHAR T )
({INPUT <, Ñ /, R>, OUTPUT <, , W>, Ch?})
= (VAR Ch: CHAR T ) ({INPUT <, Ñ /, R>, OUTPUT <, , W>, Ch?})
= {INPUT <, Ñ /, R>, OUTPUT <, , W>}
, VAR Ch: CHAR
<s, s È {Chc}>, c
Ch? .
BEGIN END , VAR Ch: CHAR T Ch?
. , BEGIN. F, BEGIN B,
F; B = F ◦ B ◦ F T
:
VAR ; PROCEDURE ; BEGIN END
= VAR ; ◦ PROCEDURE ; BEGIN END ◦ VAR ; T
= VAR ; ◦ PROCEDURE ; ◦ BEGIN END ◦ VAR ; T
. , , .
CF Pascal, , .
|
|
PROGRAM CopyChar (INPUT, OUTPUT);
VAR
Ch: CHAR;
BEGIN
READ(Ch);
WRITELN(Ch)
END.
Q 1- <ABC>
Q (<ABC>) = PROGRAM END. (<ABC>)
= PROGRAM ◦ VAR END ◦. (<ABC>) (1)
= VAR END ◦. ({INPUT <, ABC/, R>, OUTPUT <, , W>}) (2)
= VAR ◦ BEGIN END ◦ VAR T ◦.
({INPUT <, ABC/, R>, OUTPUT <, , W>}) (3)
= BEGIN END ◦ VAR T ◦.
({INPUT <, ABC/, R>, OUTPUT <, , W>, Ch?}) (4)
= VAR T ◦.({INPUT <A, BC/, R>, OUTPUT <A/, , W>, ChA}) (5)
=.({INPUT <A, BC/, R>, OUTPUT <A/, , W> }) (6)
= <A>
(1) Q . (2) . (3) , BEGIN . (4) . (5) BEGIN. (6) . (7) .
.
BEGIN |