, , . . .
, F1 F2. Result:
1, F1 ;
2, F2 ;
0, .
1 [DP 1]
PROCEDURE Length(VAR F1, F2: TEXT; VAR Result: CHAR);
{Result 0, 1, 2 F1 =, <, > F2 .
, F1 F2 }
VAR
Ch1, Ch2: CHAR;
BEGIN {Length}
RESET(F1);
RESET(F2);
WHILE NOT EOF(F1) AND NOT EOF(F2)
DO
BEGIN
READ(F1, Ch1);
READ(F2, Ch2)
END
{ F1, F2 Result
}
END {Length}
1.1 [DP 1.1]
BEGIN { F1, F2 Result
}
IF EOF(F1)
THEN { F1 }
IF EOF (F2)
THEN { F1 F2 }
Result:= 0
ELSE { F1 , F2 }
Result:= 2
ELSE { F1 , F2 ( WHILE)}
Result:= 1
END
, -. , , . , ABC ABCDEF, XYZ YZ.
: , . Lexico 1-, n-.
2 [DP2]
PROCEDURE Lexico(VAR F1, F2: TEXT; VAR Result: CHAR);
{Result 0, 1, 2 F1 =, <, > F2 . , F1 F2, }
VAR
Ch1, Ch2: CHAR;
BEGIN {Lexico}
RESET(F1);
RESET(F2);
Result:= 0;
WHILE (NOT EOF(F1) AND NOT EOF(F2)) AND (Result = 0)
DO
BEGIN
READ(F1, Ch1);
READ(F2, Ch2);
IF (Ch1 < Ch2) OR (EOF (F1))
THEN {Ch1 < Ch2 F1 F2}
Result:= 1
ELSE
IF (Ch1 > Ch2) OR (EOF (F2))
THEN {Ch1 > Ch2 F2 F1}
Result:= 2
END {WHILE}
END {Lexico}
Length Lexico , , . SelectSort SelectReverse, 4.2 . . - . , .
|
|
, . , , .. , . , , . . (include comment). , Lexico, :
{ PROCEDURE Lexico(VAR F1, F2: TEXT; VAR Result: CHAR);
Result 0, 1, 2 F1 =, <, > F2 . , F1 F2, }
, , . . . .
, - , RESET, , REWRITE, .
PROCEDURE InString(VAR F1: TEXT);
{ F1 INPUT }
PROCEDURE OutString(VAR F1: TEXT);
{ F1 OUTPUT, }
PROCEDURE CopyOpen(VAR F1, F2: TEXT);
{ F1 F2 RESET REWRITE, F1 , F2 . }
PROCEDURE Sort(VAR F1, F2: TEXT);
{ F2 F1}
PROCEDURE Reverse(VAR F1, F2: TEXT);
{ F2 F1 }
PROCEDURE Concatenate(VAR F1, F2, F3: TEXT);
{ F3 F1, F2}
. , Concatenate :
PROCEDURE Concatenate(VAR F1, F2, F3: TEXT);
{ F3 F1, F2}
{ PROCEDURE CopyOpen(VAR F1, F2: TEXT);
F1 F2 RESET REWRITE, F1 , F2 . }
BEGIN {Concatenate}
RESET(F1);
RESET(F2);
REWRITE(F3);
CopyOpen(F1, F3);
CopyOpen(F2, F3)
END {Concatenate}
.
, CF Pascal. <>, . - . VAR VAR T , .
|
|
.
PROGRAM NoCon(INPUT, OUTPUT);
VAR
Global: CHAR;
PROCEDURE HasLocal;
VAR
Local: CHAR;
BEGIN {HasLocal}
Local:= L
END; {HasLocal}
BEGIN {NoCon}
Global:= G;
HasLocal
END. {NoCon}
s = {INPUT <x, , R>, OUTPUT <, , W>, GlobalG}
x
HasLocal S:
HasLocal (S) = S(HasLocal) (S) = VAR Local: CHAR; BEGIN Local:= L END (S)
= VAR Local: CHAR;T(Local:= L(VAR Local: CHAR; (S)))
= VAR Local: CHAR;T(Local:= L({INPUT<x, , R>, OUTPUT<, , W>, GlobalG, Local?}))
= VAR Local: CHAR;T({INPUT<x, , R>, OUTPUT<, , W>, GlobalG, LocalL})
= {INPUT<x, , R>, OUTPUT<, , W>, GlobalG }
, .
, , . , :
PROGRAM Confuse(INPUT, OUTPUT);
VAR
MixedUp: CHAR;
PROCEDURE HasLocal;
VAR
MixedUp: CHAR;
BEGIN {HasLocal}
MixedUp:= L
END; {HasLocal}
BEGIN {Confuse}
MixedUp:= G;
HasLocal
END. {Confuse}
. ,
<MixedUpG>
.
<MixedUpL>
.
, .
, , , VAR . : .
, , , , , .
N , . , , , , .
PROCEDURE P (VAR X: CHAR); VAR Z: CHAR; BEGIN END
P (Y) (s) = s (P) X<-Y, Z<-Z (s)
Z Î domain(s), a Z
, N ,
HasLocal(S) = S(HasLocal) (S) = VAR MixedUpN: CHAR; BEGIN MixedUpN:= L END (S)
, .
, , , , N . , , , .
|
|
, W, , .
PROGRAM WhichWhich (INPUT, OUTPUT);
VAR
Which: CHAR;
PROCEDURE Zap
BEGIN {Zap}
Which:= Z { , , ?}
END; {Zap}
PROCEDURE Invoke
VAR
Which: CHAR;
BEGIN {Invoke}
Which:= B;
Zap;
WRITE(Which)
END; {Invoke}
BEGIN {WhichWhich}
Which:= A;
Invoke;
WRITELN (Which)
END. {WhichWhich}
, WRITE: , Invoke, WRITE WRITELN. , WRITE (Zapped). ,
W = <ZA>
,
W = <BZ>
, , . , Which. , OUTPUT BZ. Which, , Zap Which. , Zap Which, .
S = {INPUT <x, , R>, OUTPUT <, , W>, WhichA}, Invoke
Invoke (S) = S(Invoke) (S) = VAR WhichN: CHAR; BEGIN WhichN:= B; END (S)
= VAR WhichN: CHART (BEGIN WhichN:= B; END (VAR WhichN: CHAR (S)))
= VAR WhichN: CHART (BEGIN WhichN:= B; END
({INPUT <x, , R>, OUTPUT <, , W>, WhichA, WhichN?}))
= VAR WhichN: CHART (WhichN:= B; Zap; WRITE(WhichN)
({INPUT <x, , R>, OUTPUT <, , W>, WhichA, WhichN?}))
= VAR WhichN: CHART (Zap; WRITE(WhichN)
({INPUT <x, , R>, OUTPUT <, , W>, WhichA, WhichNB}))
= VAR WhichN: CHART (WRITE(WhichN)
({INPUT <x, , R>, OUTPUT <, , W>, WhichZ, WhichNB}))
= VAR WhichN: CHART ({INPUT <x, , R>, OUTPUT <B, , W>, WhichZ, WhichNB})
={INPUT <x, , R>, OUTPUT <B, , W>, WhichZ}
:
W = <BZ>
, , , , .