.


:




:

































 

 

 

 





 

. , . .

 

 

 

CF Pascal, TEXT, . .

 

: TEXT, , REWRITE, RESET.

 

.

 

INPUT OUTPUT ; .

CF Pascal , TEXT. TEXT FILE OF CHAR. , , , , CHAR. VAR c TEXT. :

 

VAR

Ch: CHAR;

Chars: TEXT;

TEXT , REWRITE, :

REWRITE(Chars)

, , RESET.

RESET(Chars)

REWRITE RESET, WRITE , :

WRITE(Chars, Ch, #);

WRITELN(Chars, Ch, Ch)

RESET, REWRITE, READ , :

READ(Chars, Ch);

TEXT, , INPUT OUTPUT. . REWRITE , , OUTPUT . RESET , , INPUT .

OUTPUT WRITE.

WRITE(Ch)

WRITE(OUTPUT, Ch)

. , INPUT :

READ(Input, Ch)

 

.

 

CFPascal, 7, 12 13 29.

 

SR7.

<>::= VAR < >: <>

| <>;< >:<>

SR12.

< READ>::= READ(< >)

| RESET(<>)

SR13.

< WRITE>::= WRITE(< >)

| WRITELN(< >)

| WRITELN

| REWRITE(<>)

SR29.

<>::= CHAR | TEXT

 

:

CR6.

TEXT <> <> TEXT. TEXT < WRITE> < READ>, < > < >. TEXT, INPUT OUTPUT <>. TEXT, INPUT OUTPUT, RESET REWRITE.

 

TEXT READ WRITE. REWRITE, . REWRITE , CHAR. REWRITE , . WRITELN, RESET, . , REWRITE, RESET. - , . , WRITELN, . READ . RESET .

 

 

. CopyTwice INPUT OUTPUT Chars. INPUT Chars, Chars OUTPUT.

 

 

DP 1

PROGRAM CopyTwice (INPUT, OUTPUT);

{ , # INPUT OUTPUT

, INPUT #}

VAR

Ch: CHAR;

Chars: TEXT; { }

BEGIN {CopyTwice}

{ INPUT Chars}

{ Chars OUTPUT}

END. {CopyTwice}

 

DP 1.1

BEGIN { INPUT Chars}

REWRITE(Chars); { Chars }

READ(INPUT, Ch);

WHILE Ch <> #

DO

BEGIN

WRITE(Chars, Ch);

READ(INPUT, Ch)

END;

WRITELN(Chars, #) { Chars }

END

 

DP 1.2

BEGIN { Chars OUTPUT}

RESET(Chars); { Chars }

READ(Chars, Ch);

WHILE Ch <> #

DO

BEGIN

WRITE(OUTPUT, Ch);

READ(Chars, Ch)

END;

WRITELN(OUTPUT)

END

 

, DP 1.1 , DP 1.2 .

 

.

 

DP 1A

PROGRAM CopyTwice (INPUT, OUTPUT);

{ , # INPUT OUTPUT}

VAR

Ch: CHAR;

Chars: TEXT; { }

BEGIN {CopyTwice}

BEGIN { INPUT Chars}

REWRITE(Chars); { Chars }

READ(INPUT, Ch);

WHILE Ch <> '#'

DO

BEGIN

WRITE(Chars, Ch);

READ(INPUT, Ch)

END;

WRITELN(Chars, '#') { Chars }

END

BEGIN { Chars OUTPUT}

RESET(Chars); { Chars }

READ(Chars, Ch);

WHILE Ch <> '#'

DO

BEGIN

WRITE(OUTPUT, Ch);

READ(Chars, Ch)

END;

WRITELN(OUTPUT)

END

END. {CopyTwice}

 

:

INPUT: ABCD#

OUTPUT: ABCD

 

INPUT: 1#ABCD

OUTPUT: 1

 

INPUT: Four score and seven years ago#

OUTPUT: Four score and seven years ago

 

[ ]

 

, CopyTwice

{ , # INPUT OUTPUT

, INPUT #}

CHAR. , , . . :

 

.

 

, .

 

.

 

 

INPUT OUTPUT Chars Ch
REWRITE(Chars) READ(INPUT, Ch) WHILE Ch <> # BEGIN WRITE(Chars, Ch) READ(INPUT, Ch) END WHILE Ch <> # BEGIN WRITE(Chars, Ch) READ(INPUT, Ch) END WHILE Ch <> # WRITELN(Chars, '#') RESET(Chars) READ(Chars, Ch); WHILE Ch <> # DO BEGIN WRITE(OUTPUT, Ch) READ(Chars, Ch) END WHILE Ch <> # DO BEGIN WRITE(OUTPUT, Ch) READ(Chars, Ch) END WHILE Ch <> # WRITELN(OUTPUT) END.     TRUE     TRUE     FALSE   TRUE   TRUE   FALSE A B# A B # A B # A B # A B # AB # AB # AB # AB # AB # AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB#_ AB# _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ A_ A_ A_ A_ A_ A_ AB_ AB_ AB_ AB_ AB/_ AB _ _ _ _ A_ A_ A_ A_ A_ AB_ AB_ AB_ AB_ AB#/_ A B#/ A B #/ A B #/ A B #/ A B #/ A B #/ AB # / AB # / AB # / AB # / AB # / AB # / AB# / AB# / AB# / AB# /   ? A A A A B B B B B # # # # # A A A A A B B B B B B # # # #  

 

.

 

INPUT . , Odds Evens . OUTPUT. Split .

 

DP 2

PROGRAM Split (INPUT, OUTPUT);

{ INPUT OUTPUT, , .

, INPUT #}

VAR

Ch: CHAR;

Odds, Evens: TEXT;

BEGIN {Split}

{ INPUT Odds Evens}

{ Odds OUTPUT}

{ Evens OUTPUT}

END. {Split}

, .

 

DP 2.1

BEGIN { INPUT Odds Evens}

REWRITE(Odds);

REWRITE(Evens);

Next:= O;

READ(INPUT, Ch);

WHILE Ch <> #

DO

{ Ch Next,

Next, Ch}

WRITELN(Odds, #);

WRITELN(Evens, #);

END

 

DP 2.1.1

BEGIN { Ch Next,

Next, Ch}

IF Next = O

THEN

BEGIN

WRITE(Odds, Ch);

Next:= E;

END

ELSE

BEGIN

WRITE(Evens, Ch);

Next:= O;

END;

READ(INPUT, Ch);

END

 

DP 2.2 { Odds OUTPUT} DP 2.3 { Evens OUTPUT} DP 1.2 CopyTwice Chars Odds Evens.

 

.

 

.

 

: , , .

 

 

SelectSort

 

IF, , , . . . MinSort , .. . , .

, . , , , . , , , , .

N? N , . , .

 

{ INPUT F1 }

WHILE { F1 }

DO

BEGIN

{ F1}

{ F1 F2}

{ F2 F1}

END

 

F1 , OUTPUT .

, :

 

DP 3

PROGRAM SelectSort (INPUT, OUTPUT);

{ , # INPUT OUTPUT.

, INPUT #}

VAR

Ch, Min: CHAR;

F1, F2: TEXT;

BEGIN {SelectSort}

{ INPUT F1 OUTPUT}

{ F1 OUTPUT SelectSort}

END. {SelectSort}

 

DP 3.1

BEGIN { INPUT F1 OUTPUT}

REWRITE(F1);

WRITE(OUTPUT, INPUT DATA:);

READ(INPUT, Ch);

WHILE Ch <> #

DO

BEGIN

WRITE(F1, Ch);

WRITE(OUTPUT, Ch);

READ(INPUT, Ch)

END;

WRITELN(OUTPUT);

WRITELN(F1, #)

END

 

DP 3.2

BEGIN { F1 OUTPUT SelectSort}

WRITE(OUTPUT, SORTED DATA:);

RESET(F1);

READ(F1, Ch);

WHILE Ch <> #

DO { Ch <> # Ch1 F1}

BEGIN

{ F1 b F1 F2}

WRITE(OUTPUT, Min);

{ F2 F1}

RESET(F1);

READ(F1, Ch)

END;

WRITELN(OUTPUT);

END

 

() DO

{ Ch <> # Ch1 F1}

DP 3.2 DP 3.2.1, BEGIN DO. DO TRUE, Ch <> # DO. TRUE, , , :

RESET(F1);

READ(F1, Ch)

, Ch F1. , Min 3.2.1.

 

DP 3.2.1

BEGIN { F1 b F1 F2}

REWRITE(F2);

Min:= Ch;

READ(F1, Ch);

WHILE Ch <> #

DO { Ch <> # Ch1 F1}

BEGIN

{ (Ch, Min)

F2}

READ(F1, Ch)

END;

WRITELN(F2, #);

END

 

DP 3.2.2

BEGIN { F2 F1}

RESET(F2);

REWRITE(F1);

READ(F2, Ch);

WHILE Ch <> #

DO

BEGIN

WRITE(F1, Ch);

READ(F2, Ch)

END;

WRITELN(F1, #);

END

 

DP 3.2.1.1

BEGIN { (Ch, Min)

F2}

IF Ch < Min

THEN {Ch (Ch, Min)}

BEGIN

WRITE(F2, Min);

Min:= Ch;

END

ELSE {Min (Ch, Min)}

WRITE(F2, Ch);

END

 

, DP 3.2 4 ( WRITE ). , F1 #, F1 F1 . Min F1 F2.

 

DP 3.2, F1

OUTPUT F1 F2 Ch Min
  RESET(F1) READ(F1, Ch) WHILE Ch <> # WRITELN(OUTPUT) _   /_ # / # / # / ?   # ?     ?

 

DP 3.2, F1

OUTPUT F1 F2 Ch Min
  RESET(F1) READ(F1, Ch) WHILE Ch <> # BEGIN BEGIN {3.2.1} REWRITE(F2) Min:= Ch; READ(F1, Ch); WHILE Ch <> # WRITELN(F2, #) END {3.2.1} WRITE (OUTPUT, Min) BEGIN {3.2.2} RESET(F2) REWRITE(F1) READ(F2, Ch) WHILE Ch <> # WRITELN(F1, #) END {3.2.2} RESET(F1) READ(F1, Ch) END WHILE Ch <> # WRITELN(OUTPUT) _   A_   A/_ A# / A #/ A # /   A# / _     #/_   # / # / ?   _   #/_   # /   # /   ?   A   #   #     #     ?     A  

 

, ,

 

OUTPUT F1 F2 Ch Min
RESET(F1) _ A #/ ? ? ?

 

 

OUTPUT F1 F2 Ch Min
WRITELN(OUTPUT) A/_ # / # / # A

 

 

, F1 Min OUTPUT F2, Ch Min.

 

 

DP 3.2, F1

OUTPUT F1 F2 Ch Min
  RESET(F1) READ(F1, Ch) WHILE Ch <> # BEGIN BEGIN {3.2.1} REWRITE(F2) Min:= Ch; READ(F1, Ch); WHILE Ch <> # BEGIN BEGIN {3.2.1.1} IF Ch < Min THEN BEGIN WRITE(F2,Min) Min:= Ch END END READ(F1, Ch) END WHILE Ch <> # WRITELN(F2, #) END {3.2.1} WRITE (OUTPUT, Min) { F2 F1} RESET(F1) READ(F1, Ch) END WHILE Ch <> # BEGIN BEGIN {3.2.1} REWRITE(F2) Min:= Ch; READ(F1, Ch); WHILE Ch <> # WRITELN(F2, #) END {3.2.1} WRITE (OUTPUT, Min) { F2 F1} RESET(F1) READ(F1, Ch) END WHILE Ch <> # WRITELN(OUTPUT) _   A_   A_   AC_   AC/_ CA# / C A#/ C A #/   CA # /     CA# /   C#/_ C #/ C # /     C# / #/ _ # / # /     ?   _     C_     C#/_     C_   _   #/_     ?   C   A     #   # # C     #     #   #   ?     C     A   A     C  

 

DP 3.2.2 .

 

RESET(F1) F1 OUTPUT . F2, Ch Min , F1 ( C) Min OUTPUT. , :

 

OUTPUT F1 F2 Ch Min
WRITELN(OUTPUT) A/_ # / # / #

 

.

 

, .

 

DP 3.2, F1

OUTPUT F1 F2 Ch Min
  RESET(F1) READ(F1, Ch) WHILE Ch <> # BEGIN BEGIN {3.2.1} REWRITE(F2) Min:= Ch; READ(F1, Ch); WHILE Ch <> # BEGIN BEGIN {3.2.1.1} IF Ch < Min THEN BEGIN WRITE(F2,Min) Min:= Ch END END READ(F1, Ch) END WHILE Ch <> # WRITELN(F2, #) END {3.2.1} WRITE (OUTPUT, Min) { F2 F1} RESET(F1) { } _   A_   A_ AC/_ CA# / C A#/ C A #/   CA # /     CA# /   C#/_ C #/ # / ?   _     C_     C#/_     C_ #/_ ?   C   A     #   # # # ?     C     A   A C

 

, , , F1 2 . F1 Min, F2. F2 , Min. F2 .

 

SelectSort . , , 3, 3.1, 3.2, 3.2.1 . 3.2.2 , # F1, .

 

DP 3A

PROGRAM SelectSort (INPUT, OUTPUT);

{ , # INPUT OUTPUT.

, INPUT #}

VAR

Ch, Min: CHAR;

F1, F2: TEXT;

BEGIN {SelectSort}

BEGIN { INPUT F1 OUTPUT}

REWRITE(F1);

WRITE(OUTPUT, 'INPUT DATA:');

READ(INPUT, Ch);

WHILE Ch <> '#'

DO

BEGIN

WRITE(F1, Ch);

WRITE(OUTPUT, Ch);

READ(INPUT, Ch)

END;

WRITELN(OUTPUT);

WRITELN(F1, '#')

END

BEGIN { F1 OUTPUT SelectSort}

WRITE(OUTPUT, 'SORTED DATA:');

RESET(F1);

READ(F1, Ch);

WHILE Ch <> '#'

DO { Ch <> '#' Ch1 - F1}

BEGIN

BEGIN { F1, F1 F2}

REWRITE(F2);

Min:= Ch;

READ(F1, Ch);

WHILE Ch <> '#'

DO { Ch <> '#' Ch1 - F1}

BEGIN

{ (Ch, Min)

F2}

READ(F1, Ch)

END;

WRITELN(F2, '#');

END

WRITE(OUTPUT, Min);

{ F1}

REWRITE(F1);

WRITELN(F1, #);

{ }

{ F2 F1}

RESET(F1);

READ(F1, Ch)

END;

WRITELN(OUTPUT);

END

END. {SelectSort}

 

:

 

INPUT: XBZA#

OUTPUT: INPUT DATA:XBZA#

SORTED DATA:X

 

: INPUT OUTPUT, .

, . , OUTPUT.

, .

 

DP 3B

PROGRAM SelectSort (INPUT, OUTPUT);

{ , # INPUT OUTPUT.

, INPUT #}

VAR

Ch, Min: CHAR;

F1, F2: TEXT;

BEGIN {SelectSort}

BEGIN { INPUT F1 OUTPUT}

REWRITE(F1);

WRITE(OUTPUT, 'INPUT DATA:');

READ(INPUT, Ch);

WHILE Ch <> '#'

DO

BEGIN

WRITE(F1, Ch);

WRITE(OUTPUT, Ch);

READ(INPUT, Ch)

END;

WRITELN(OUTPUT);

WRITELN(F1, '#')

END

BEGIN { F1 OUTPUT SelectSort}

WRITE(OUTPUT, 'SORTED DATA:');

RESET(F1);

READ(F1, Ch);

WHILE Ch <> '#'

DO { Ch <> '#' Ch1 - F1}

BEGIN

BEGIN { F1, F1 F2}

REWRITE(F2);

Min:= Ch;

READ(F1, Ch);

WHILE Ch <> '#'

DO { Ch <> '#' Ch1 - F1}

BEGIN

BEGIN { (Ch, Min)

F2}

IF Ch < Min

THEN {Ch - (Ch, Min)}

BEGIN

WRITE(F2, Min);

Min:= Ch;

END

ELSE {Min - (Ch, Min)}

WRITE(F2, Ch);

END;

READ(F1, Ch)

END;

WRITELN(F2, '#');

END

WRITE(OUTPUT, Min);

BEGIN { F2 F1}

RESET(F2);

REWRITE(F1);

READ(F2, Ch);

WHILE Ch <> '#'

DO

BEGIN

WRITE(Ch) {}

WRITE(F1, Ch);

READ(F2, Ch)

END;

WRITELN('#(F1)'); {}

WRITELN(F1, '#');

END

 

RESET(F1);

READ(F1, Ch)

END;

WRITELN(OUTPUT);

END

END. {SelectSort}

 

:

 

INPUT: CEDAR#

OUTPUT: INPUT DATA: CEDAR #

SORTED DATA: A(Min) EDCR#(F1)

C(Min) EDR#(F1)

D(Min) ER#(F1)

E(Min) R#(F1)

R(Min) #(F1)

 

. , A, C ..

SelectSort WRITE DP 3B.

, , BEGIN, , .

 

 

, , , . , , , - , .. , .

, Edsger Dijkstra , .

, , .

. , . : , , , . , , , .

, . , , , , . , .

DP 3A XBZA. , , WHILE, FALSE.

3B CEDAR# . WHILE DO, THEN ELSE DP 3.2.1.1 F2, , IF.

THEN , CEDAR#, A 3.2.1.1. , ELSE , C E. , CEDAR . , XHB# , ELSE 3.2.1.1 .

 

SelectSort

 

IFSort MinSort, , SelectSort . , IFSort4 MinSort6, SelectSort . , SelectSort . . , WHILE, DP 3.1, 3.2, 3.2.1, 3.2.2. , WHILE SelectSort .

 

WHILE
                BEGIN WHILE { INPUT F1} WHILE {, F1 } BEGIN WHILE { . F1 F2} WHILE { F2 F1} END END

 

, N . WHILE 1 N . WHILE N , F1 1 . WHILE WHILE 2.

 

WHILE 2, WHILE 3 N , WHILE 4 N-1 . WHILE 2, WHILE 3 N-1 , WHILE 4 N-2 .. , :

 

WHILE
  N N N + N-1+ + 1 N-1 + N-2 + + 1 + 0

 

, READ WRITE WHILE

 

WHILE READ/WRITE
   

 

, READ/WRITE SelectSort, :

Nrw = 2N + N + 2(N + (N-1) + + 1) + 2((N-1) + (N-2) + + 0)

= 5N + 4((N-1) + + 1)

= 5N + 4N(N-1)/2

= 5N + 2N2 2N

= 2N2+3N

READ/WRITE

 

N Nrw 2N2
  20 300 2 003 000 20 000 2 000 000

 

, Nrw 2N2. , - 2N2. .. 1000- 100 , 100-, .. .

 





:


: 2015-11-23; !; : 462 |


:

:

, .
==> ...

1713 - | 1600 -


© 2015-2024 lektsii.org - -

: 0.268 .