.


:




:

































 

 

 

 


.




 

, , . . .

 

, 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>

, , , , .

 





:


: 2017-03-12; !; : 298 |


:

:

- , 20 40 . - .
==> ...

1470 - | 1435 -


© 2015-2024 lektsii.org - -

: 0.034 .