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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ОписаниС языка PascalABC.NETΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 19

Автор W Cat

write(2);

end;

end.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ 21, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° p ΠΈΠ· модуля un1.

Поиск ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° осущСствляСтся Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ: Π²Π½Π°Ρ‡Π°Π»Π΅ осущСствляСтся просмотр Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ класса, Π·Π°Ρ‚Π΅ΠΌ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса ΠΈ Ρ‚.Π΄. Π΄ΠΎ класса Object, Π»ΠΈΠ±ΠΎ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ встрСчСн ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ (имя поля ΠΈΠ»ΠΈ свойства). Из всСх Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² выбираСтся Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ. ΠŸΡ€ΠΈ этом Π² Ρ€Π°Π·Π½Ρ‹Ρ… классах ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ; Π² этом случаС вызываСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ встрСчСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса ΠΊ классу Object.

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ числом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π°Π΄ Π½ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚. НапримСр, Π² ситуации

procedure p(i: integer);

begin

write(1);

end;

procedure p(params a: array of integer);

begin

write(2);

end;

begin

p(1)

end.

Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° пСрвая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°.

Π’Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ· нСуправляСмой dll

Для Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· нСуправляСмой dll (содСрТащСй ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ, Π° Π½Π΅ .NET-ΠΊΠΎΠ΄) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция Π²ΠΈΠ΄Π°:

Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ external 'имя dll' name 'имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² dll';

НапримСр:

function MessageBox(h: integer; m,c: string; t: integer): integer;

external 'User32.dll' name 'MessageBox';

...

MessageBox(0,'Hello!','Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅',0);

ΠœΠΎΠ΄ΡƒΠ»ΠΈ

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° модуля

ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для разбиСния тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ². Π’ модулях ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, константы, Ρ‚ΠΈΠΏΡ‹, классы, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ основная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°), слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ„Π°ΠΉΠ»Π° модуля (Π±Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ .pas) Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ uses Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ модуля. Π€Π°ΠΉΠ» модуля (.pas) ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» модуля (.pcu) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ‡Ρ‚ΠΎ ΠΈ основная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π»ΠΈΠ±ΠΎ Π² ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Lib систСмного ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ PascalABC.NET.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру:

unit имя модуля;

interface

Ρ€Π°Π·Π΄Π΅Π» интСрфСйса

implementation

Ρ€Π°Π·Π΄Π΅Π» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

initialization

Ρ€Π°Π·Π΄Π΅Π» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

finalization

Ρ€Π°Π·Π΄Π΅Π» Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

end.

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ синтаксис ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π±Π΅Π· Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² интСрфСйса ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΠ΅Ρ€Π²Π°Ρ строка ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° ΠΈ называСтся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ модуля. Имя модуля Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°.

Π Π°Π·Π΄Π΅Π» интСрфСйса ΠΈ Ρ€Π°Π·Π΄Π΅Π» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ модуля ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с Ρ€Π°Π·Π΄Π΅Π»Π° uses ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ пространств ΠΈΠΌΠ΅Π½ .NET. ИмСна Π² Π΄Π²ΡƒΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… uses Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Ρ‚ΡŒΡΡ.

Π Π°Π·Π΄Π΅Π» интСрфСйса Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ объявлСниС всСх ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ uses). Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ константы, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классы, интСрфСйсы. РСализация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² классов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Π°Π½Π° прямо Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ интСрфСйса, Π½ΠΎ это Π½Π΅ рСкомСндуСтся.

Π Π°Π·Π΄Π΅Π» Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ содСрТит Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ всСх ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ интСрфСйса. ΠšΡ€ΠΎΠΌΠ΅ этого, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ описания Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΈΠΌΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π²ΠΈΠ΄Π½Ρ‹ Π²Π½Π΅ модуля ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ лишь ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅.

Π Π°Π·Π΄Π΅Π» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π·Π΄Π΅Π» Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², раздСляСмых символом ;. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ модуля Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ модуля - послС окончания основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ выполнСния Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ нСпрСдсказуСм. Как Ρ€Π°Π·Π΄Π΅Π» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΈ Ρ€Π°Π·Π΄Π΅Π» Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

ВмСсто Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π΄Π΅Π» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅

begin

ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

end.

НапримСр:

unit Lib;

interface

uses GraphABC;

const Dim = 5;

var Colors: array [1..Dim] of integer;

function RandomColor: integer;

procedure FillByRandomColor;

implementation

function RandomColor: integer;

begin

Result := RGB(Random(255),Random(255),Random(255));

end;

procedure FillByRandomColor;

begin

for i: integer := 1 to Dim do

Colors[i] := RandomColor;

end;

initialization

FillByRandomColor;

end.

ЦикличСскиС ссылки ΠΌΠ΅ΠΆΠ΄Ρƒ модулями Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ограничСниях.

Π Π°Π·Π΄Π΅Π» uses

Π Π°Π·Π΄Π΅Π» uses ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

uses список имСн;

ИмСна Π² спискС ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ PascalABC.NET, Π»ΠΈΠ±ΠΎ пространствами ΠΈΠΌΠ΅Π½ .NET. НапримСр:

uses System, System.Collections.Generic, MyUnit;

Π—Π΄Π΅ΡΡŒ MyUnit - ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PascalABC.NET, прСдставлСнный Π² Π²ΠΈΠ΄Π΅ исходного тСкста ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ .pcu-модуля, System ΠΈ System.Collections.Generic - пространства ΠΈΠΌΠ΅Π½ .NET.

Π’ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΈΠ»ΠΈ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, которая содСрТит Ρ€Π°Π·Π΄Π΅Π» uses, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΈΠΌΠ΅Π½Π° ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ PascalABC.NET ΠΈ пространств ΠΈΠΌΠ΅Π½ .NET. ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ модулями ΠΈ пространствами ΠΈΠΌΠ΅Π½ .NET состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ содСрТит ΠΊΠΎΠ΄, Π° пространства ΠΈΠΌΠ΅Π½ .NET содСрТат лишь ΠΈΠΌΠ΅Π½Π° - для использования ΠΊΠΎΠ΄Π° Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ компилятора {$reference Π˜ΠΌΡΠ‘Π±ΠΎΡ€ΠΊΠΈ}, Π³Π΄Π΅ Π˜ΠΌΡΠ‘Π±ΠΎΡ€ΠΊΠΈ - имя dll-Ρ„Π°ΠΉΠ»Π°, содСрТащСго .NET-ΠΊΠΎΠ΄. Π”Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΈΠ»ΠΈ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅, Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ этого модуля Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ uses. Напротив, Ссли сборка .NET ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ $reference, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΈΠΌΠ΅Π½Π°, явно уточняя ΠΈΡ… пространством ΠΈΠΌΠ΅Π½, Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ это пространство ΠΈΠΌΠ΅Π½ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ uses. НапримСр:

begin

System.Console.WriteLine('PascalABC.NET');

end.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСкции uses нСявно ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ систСмный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PABCSystem, содСрТащий стандартныС константы, Ρ‚ΠΈΠΏΡ‹, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π”Π°ΠΆΠ΅ Ссли сСкция uses отсутствуСт, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PABCSystem ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ нСявно. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСявной Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ $reference ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ сборки System.dll, System.Core.dll ΠΈ mscorlib.dll, содСрТащиС основныС .NET-Ρ‚ΠΈΠΏΡ‹.

Поиск Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ осущСствляСтся Π²Π½Π°Ρ‡Π°Π»Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ ΠΈΠ»ΠΈ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎ всСх ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… модулях ΠΈ пространствах ΠΈΠΌΠ΅Π½, начиная с самого ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ Π² сСкции uses ΠΈ заканчивая самым Π»Π΅Π²Ρ‹ΠΌ. ΠŸΡ€ΠΈ этом считаСтся, Ρ‡Ρ‚ΠΎ пространство ΠΈΠΌΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ модуля Π²Π»ΠΎΠΆΠ΅Π½ΠΎ Π² пространство ΠΈΠΌΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π²ΠΎΠ³ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΈΠΌΠ΅Π½ Π½Π΅ происходит. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя ΠΈΠ· ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ модуля ΠΈΠ»ΠΈ пространства ΠΈΠΌΠ΅Π½, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ запись

Π˜ΠΌΡΠœΠΎΠ΄ΡƒΠ»Ρ.Имя

ΠΈΠ»ΠΈ

Π˜ΠΌΡΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π°Π˜ΠΌΠ΅Π½NET.Имя

Π’ качСствС ΠΈΠΌΠ΅Π½ΠΈ модуля ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ имя основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ссли Ρƒ Π½Π΅Π΅ присутствуСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ program.

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ синтаксис модуля

Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ синтаксис ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π±Π΅Π· Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² интСрфСйса ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

unit имя модуля;

Ρ€Π°Π·Π΄Π΅Π» описаний

end.

ΠΈΠ»ΠΈ

unit имя модуля;

Ρ€Π°Π·Π΄Π΅Π» описаний

begin

Ρ€Π°Π·Π΄Π΅Π» ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

end.

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ описаний ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ константы, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классы, интСрфСйсы. ВсС ΠΈΠΌΠ΅Π½Π° ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ синтаксис ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ - ΠΌΠΎΠ΄ΡƒΠ»ΡŒ отличаСтся ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, отсутствиСм Ρ€Π°Π·Π΄Π΅Π»Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

ЦикличСскиС ссылки ΠΌΠ΅ΠΆΠ΄Ρƒ модулями

ЦикличСскиС ссылки ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² интСрфСйсных частях Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ситуация ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Π°:

unit A;

interface

uses B;

implementation

end.

unit B;

interface

uses A;

implementation

end.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π²Π° общСдоступных класса Π² Ρ€Π°Π·Π½Ρ‹Ρ… модулях с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ полями, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°.

Однако, Ссли ΠΎΠ΄Π½Π° ссылка находится Π² интСрфСйсной части, Π° вторая - Π² части Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΠ»ΠΈ ΠΎΠ±Π΅ - Π² частях Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ цикличСскиС ссылки Π² этом случаС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹:

unit A;

interface

implementation

uses B;

end.

unit B;

interface

uses A;

implementation

end.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ dll