Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 5

Автор А. Π¦Π²Π΅Ρ‚ΠΊΠΎΠ²Π°

15. ΠœΠΎΠ΄ΡƒΠ»ΠΈ. Π’ΠΈΠ΄Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

ΠœΠΎΠ΄ΡƒΠ»ΡŒ(UNIT) Π² Pascal – это особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ оформлСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠœΠΎΠ΄ΡƒΠ»ΡŒ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² построСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π² Pascal прСдставляСт собой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠΌΡƒΡŽ ΠΈ нСзависимо ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

ВсС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ элСмСнты модуля ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ части:

1) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ элСмСнты, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для использования Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΈΠ»ΠΈ модулями, Ρ‚Π°ΠΊΠΈΠ΅ элСмСнты Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ Π²Π½Π΅ модуля;

2) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ элСмСнты, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ самого модуля, ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ (ΠΈΠ»ΠΈ скрытыми).

unit <имя модуля>; {Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ модуля}

interface

{описаниС Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… элСмСнтов модуля}

implementation

{описаниС скрытых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… элСмСнтов модуля}

begin

{ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ элСмСнтов модуля}

end.


Для обращСния ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, описанной Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ составноС имя, состоящСС ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ модуля ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

РСкурсивноС использованиС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Π²ΠΈΠ΄Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

1. ΠœΠΎΠ΄ΡƒΠ»ΡŒ SYSTEM.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ SYSTEM Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня для всСх встроСнных срСдств, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄, Ρ€Π°Π±ΠΎΡ‚Π° со строками, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ динамичСскоС распрСдСлСниС памяти.

2. ΠœΠΎΠ΄ΡƒΠ»ΡŒ DOS.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Dos Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ многочислСнныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Pascal, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ эквивалСнтны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ DOS, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, GetTime, SetTime, DiskSize ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

3. ΠœΠΎΠ΄ΡƒΠ»ΡŒ CRT.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ CRT Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ряд ΠΌΠΎΡ‰Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ управлСния срСдствами ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π Π‘, Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ экрана, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Ρ†Π²Π΅Ρ‚Π°, ΠΎΠΊΠ½Π° ΠΈ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ сигналы.

4. ΠœΠΎΠ΄ΡƒΠ»ΡŒ GRAPH.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, входящих Π² этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ графичСскиС изобраТСния Π½Π° экранС.

5. ΠœΠΎΠ΄ΡƒΠ»ΡŒ OVERLAY.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ OVERLAY позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ трСбования ΠΊ памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ DOS Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°.

16. Π‘сылочный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. ДинамичСская ΠΏΠ°ΠΌΡΡ‚ΡŒ. ДинамичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π Π°Π±ΠΎΡ‚Π° с динамичСской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

БтатичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (статичСски Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ) называСтся описанная явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ пСрСмСнная, ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΉ осущСствляСтся ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. ΠœΠ΅ΡΡ‚ΠΎ Π² памяти для размСщСния статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… опрСдСляСтся ΠΏΡ€ΠΈ компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… статичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, написанных Π½Π° языкС Pascal, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы динамичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. ОсновноС свойство динамичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ, ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ для Π½ΠΈΡ… выдСляСтся Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ динамичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² динамичСской области памяти (heap-области). ДинамичСская пСрСмСнная Π½Π΅ указываСтся явно Π² описаниях ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈ ΠΊ Π½Π΅ΠΉ нСльзя ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. Доступ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ ссылок.

Cсылочный Ρ‚ΠΈΠΏ (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ) опрСдСляСт мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° динамичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ссылочного Ρ‚ΠΈΠΏΠ° содСрТит адрСс динамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² памяти. Если Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ являСтся Π΅Ρ‰Π΅ Π½Π΅ описанным ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ, Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ описан Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ самой части описания Ρ‚ΠΈΠΏΠΎΠ², Ρ‡Ρ‚ΠΎ ΠΈ Ρ‚ΠΈΠΏ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Π—Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ слово nil ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ константу со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ указатСля, которая Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ описания динамичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

var p1, p2: ^real;

p3, p4: ^integer;

…

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с динамичСской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

1. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° New{var p: Pointer).

ВыдСляСт мСсто Π² динамичСской области памяти для размСщСния динамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ p", ΠΈ Π΅Π΅ адрСс присваиваСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ p.

2. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Dispose(var p: Pointer).

ΠžΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ‚ участок памяти, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ для размСщСния динамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ New, ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля p становится Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ.

3. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° GetMem(var p: Pointer; size: Word).

ВыдСляСт участок памяти Π² heap-области, присваиваСт адрСс Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ p, Ρ€Π°Π·ΠΌΠ΅Ρ€ участка Π² Π±Π°ΠΉΡ‚Π°Ρ… задаСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ size.

4. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° FreeMem(varp: Pointer; size: Word).

ΠžΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ‚ участок памяти, адрСс Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ p, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ – ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ size. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля p становится Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ.

5. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Mark{var p: Pointer) записываСт Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p адрСс Π½Π°Ρ‡Π°Π»Π° участка свободной динамичСской памяти Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²Π°.

6. ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Release(var p: Pointer) освобоТдаСт участок динамичСской памяти, начиная с адрСса, записанного Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΎΠΉ Mark, Ρ‚. Π΅. ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Ρ‚Ρƒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ, которая Π±Ρ‹Π»Π° занята послС Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Mark.

7. Π€ΡƒΠ½ΠΊΡ†ΠΈΡ MaxAvail: Longint Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ Π² Π±Π°ΠΉΡ‚Π°Ρ… самого Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ свободного участка динамичСской памяти.

8. Π€ΡƒΠ½ΠΊΡ†ΠΈΡ MemAvail: Longint Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ объСм свободной динамичСской памяти Π² Π±Π°ΠΉΡ‚Π°Ρ….

9. Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ функция SizeOf(X):Word Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ объСм Π² Π±Π°ΠΉΡ‚Π°Ρ…, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ X, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ X ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ любого Ρ‚ΠΈΠΏΠ°, Π»ΠΈΠ±ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ°.

17. ΠΠ±ΡΡ‚Ρ€Π°ΠΊΡ‚Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ массивы, мноТСства, записи, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой статичСскиС структуры, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Часто трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ структуры Π΄Π°Π½Π½Ρ‹Ρ… мСняли свои Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’Π°ΠΊΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ динамичСскими. К Π½ΠΈΠΌ относятся стСки, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, списки, Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΈ Π΄Ρ€.

ОписаниС динамичСских структур с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массивов, записСй ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСэкономному использованию памяти Π­Π’Πœ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡.

КаТдая ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° любой динамичСской структуры прСдставляСт собой запись, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π΄Π²Π° поля: ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° Β«ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΒ», Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ – для размСщСния Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС запись ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ ΠΎΠ΄ΠΈΠ½, Π° нСсколько ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ нСсколько ΠΏΠΎΠ»Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. ПолС Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, массивом, мноТСством ΠΈΠ»ΠΈ записью.

Если Π² ΡƒΠΊΠ°Π·ΡƒΡŽΡ‰Π΅ΠΉ части содСрТится адрСс ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта списка, Ρ‚ΠΎ список называСтся ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ (ΠΈΠ»ΠΈ односвязным). Если ΠΆΠ΅ ΠΎΠ½ содСрТит Π΄Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ‚ΠΎ двусвязным. Над списками ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

1) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΊ списку;

2) ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· списка с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ;

3) ΠΏΠΎΠΈΡΠΊ элСмСнта с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ поля;

4) ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° элСмСнтов списка;

5) Π΄Π΅Π»Π΅Π½ΠΈΠ΅ списка Π½Π° Π΄Π²Π° ΠΈ Π±ΠΎΠ»Π΅Π΅ списков;

6) ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ списков Π² ΠΎΠ΄ΠΈΠ½;

7) Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Однако, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, нСобходимости Π²ΠΎ всСх опСрациях ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ списков. НаиболСС популярныС ΠΈΠ· Π½ΠΈΡ… – это стСк ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

18. Π‘Ρ‚Π΅ΠΊΠΈ

Π‘Ρ‚Π΅ΠΊΠΎΠΌ называСтся динамичСская структура Π΄Π°Π½Π½Ρ‹Ρ…, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ производится ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ†Π°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ стСка. Π‘Ρ‚Π΅ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ LIFO(Last-In, First-Out) – Β«ΠŸΠΎΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠΈΠΉ послСдним, обслуТиваСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΒ».

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π΄ стСками выполняСтся Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

1) Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ стСка (запись ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹);

2) Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² стСк;

3) Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅).

Для формирования стСка ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° Β«ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΒ», пСрвая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… опрСдСляСт Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ стСка, Π° вторая – Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ стСк, добавляСт Π² Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

Program STACK;

uses Crt;

type

Alfa = String[10];

PComp = ^Comp;

Comp = Record

sD: Alfa;

pNext: PComp

end;

var

pTop: PComp;

sC: Alfa;

Procedure CreateStack(var pTop: PComp; var sC: Alfa);

begin

New(pTop);

pTop^.pNext:= NIL;

pTop^.sD:= sC;

end;

Procedure AddComp(var pTop: PComp; var sC: Alfa);

var pAux: PComp;

begin

NEW(pAux);

pAux^.pNext:= pTop;

pTop:= pAux;

pTop^.sD:= sC;

end;

Procedure DelComp(var pTop: PComp; var sC: ALFA);

begin

sC:= pTop^.sD;

pTop:= pTop^.pNext;

end;

begin

Clrscr;

writeln( Π’Π’Π•Π”Π˜ БВРОКУ );

readln(sC);

CreateStack(pTop, sC);

repeat

writeln( Π’Π’Π•Π”Π˜ БВРОКУ );

readln(sC);

AddComp(pTop, sC);

until sC = 'END';

19. ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒΡŽ называСтся динамичСская структура Π΄Π°Π½Π½Ρ‹Ρ…, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ производится Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Π΅Ρ†, Π° Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° осущСствляСтся с Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ†Π°. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ FIFO (First-In, First-Out) – Β«ΠŸΠΎΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠΈΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, обслуТиваСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΒ».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, добавляСт Π² Π½Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

Program QUEUE;

uses Crt;

type

Alfa = String[10];

PComp = ^Comp;

Comp = record

sD: Alfa;

pNext: PComp;

end;

var

pBegin, pEnd: PComp;

sC: Alfa;

Procedure CreateQueue(var pBegin,pEnd: PComp; var

sC: Alfa);

begin

New(pBegin);

pBegin^.pNext:= NIL;

pBegin^.sD:= sC;

pEnd:= pBegin;

end;

Procedure AddQueue(var pEnd: PComp; var sC:

Alfa);

var pAux: PComp;

begin

New(pAux);

pAux^.pNext:= NIL;

pEnd^.pNext:= pAux;

pEnd:= pAux;

pEnd^.sD:= sC;

end;

Procedure DelQueue(var pBegin: PComp; var sC: