Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ УПРАВЛЕНИЯ РЕАЛЬНОГО ВРЕМЕНИ

.TXT
Скачиваний:
50
Добавлен:
01.05.2014
Размер:
56.06 Кб
Скачать
ЊЁ­ЁбвҐабвў® ®ЎйҐЈ® Ё Їа®дҐббЁ®­ «м­®Ј® ®Ўа §®ў ­Ёп ђ”
_________________
‘ ­Єв-ЏҐвҐаЎгаЈбЄЁ© Ј®бг¤ аб⢥­­л©
н«ҐЄва®вҐе­ЁзҐбЄЁ© г­ЁўҐабЁвҐв
______________________________________________________













ЊҐв®¤ЁзҐбЄЁҐ гЄ § ­Ёп
Є « Ў®а в®а­л¬ а Ў®в ¬ Ї® ¤ЁбжЁЇ«Ё­Ґ
"Ђ‚’ЋЊЂ’€‡€ђЋ‚ЂЌЌ›… ‘€‘’…Њ› “ЏђЂ‚‹…Ќ€џ
ђ…Ђ‹њЌЋѓЋ ‚ђ…Њ…Ќ€"
















‘ ­Єв-ЏҐвҐаЎгаЈ
1997

ЊЁ­ЁбвҐабвў® ®ЎйҐЈ® Ё Їа®дҐббЁ®­ «м­®Ј® ®Ўа §®ў ­Ёп ђ”
_________________
‘ ­Єв-ЏҐвҐаЎгаЈбЄЁ© Ј®бг¤ аб⢥­­л©
н«ҐЄва®вҐе­ЁзҐбЄЁ© г­ЁўҐабЁвҐв
______________________________________________________













ЊҐв®¤ЁзҐбЄЁҐ гЄ § ­Ёп
Є « Ў®а в®а­л¬ а Ў®в ¬ Ї® ¤ЁбжЁЇ«Ё­Ґ
"Ђ‚’ЋЊЂ’€‡€ђЋ‚ЂЌЌ›… ‘€‘’…Њ› “ЏђЂ‚‹…Ќ€џ
ђ…Ђ‹њЌЋѓЋ ‚ђ…Њ…Ќ€"
















‘ ­Єв-ЏҐвҐаЎгаЈ
1997


“„Љ 681.518.3:681.3.06

ЊҐв®¤ЁзҐбЄЁҐ гЄ § ­Ёп Є « Ў®а в®а­л¬ а Ў®в ¬ Ї® ¤ЁбжЁЇ«Ё­Ґ
"Ђўв®¬ вЁ§Ёа®ў ­­лҐ бЁб⥬л гЇа ў«Ґ­Ёп ॠ«м­®Ј® ўаҐ¬Ґ­Ё" /
‘®бв.: ‚.‚. ‘Ё¤Ґ«м­ЁЄ®ў, ‚.‚. Ёа®Є®ў; ѓќ’“. ‘ЏЎ., 1997. 36 б.





ЏаЁўҐ¤Ґ­л ®ЎйЁҐ ᢥ¤Ґ­Ёп Ё ४®¬Ґ­¤ жЁЁ Ї® ўлЇ®«­Ґ­Ёо « Ў®-
а в®а­ле а Ў®в Ї® ¤ЁбжЁЇ«Ё­Ґ "Ђўв®¬ вЁ§Ёа®ў ­­лҐ бЁб⥬л гЇа ў«Ґ-
­Ёп ॠ«м­®Ј® ўаҐ¬Ґ­Ё".
ЏаҐ¤­ §­ зҐ­л ¤«п бв㤥­в®ў бЇҐжЁ «м­®бвЁ 220200 "Ђўв®¬ вЁ-
§Ёа®ў ­­лҐ бЁбвҐ¬л ®Ўа Ў®вЄЁ Ё­д®а¬ жЁЁ Ё гЇа ў«Ґ­Ёп".






“⢥তҐ­®
। ЄжЁ®­­®-Ё§¤ вҐ«мбЄЁ¬ б®ўҐв®¬ г­ЁўҐабЁвҐв 
ў Є зҐб⢥ ¬Ґв®¤ЁзҐбЄЁе гЄ § ­Ё©










‘ ‘.-ЏЎ. ѓќ’“, 1997





- 3 -
я2ЋЃ™Ђџ •ЂђЂЉ’…ђ€‘’€ЉЂ ‡Ђ„ЂЌ€‰

‚ᥠ§ ¤ ­Ёп, ЇаҐ¤бв ў«Ґ­­лҐ ­Ё¦Ґ, ЇаҐ¤бв ў«пов б®Ў®© § ¤ зЁ
­  ®аЈ ­Ё§ жЁо ¤®бвгЇ  Є ®ЎйҐ¬г (а §¤Ґ«пҐ¬®¬г, ЄаЁвЁзҐбЄ®¬г)
аҐбгабг ­ҐЄ®в®а®Ј® зЁб«  Ї а ««Ґ«м­ле Їа®жҐбб®ў. „«п Їа ЄвЁзҐбЄ®©
ॠ«Ё§ жЁЁ § ¤ ­Ё© б«Ґ¤гҐв ЁбЇ®«м§®ў вм ЎЁЎ«Ё®вҐз­л© ¬®¤г«м
MultiObj, пў«пойЁ©бп п¤а®¬ гЇа ў«Ґ­Ёп Ї а ««Ґ«м­л¬Ё Їа®жҐбб ¬Ё ў
б।Ґ MS DOS.
„«п гЇа ў«Ґ­Ёп ¤®бвгЇ®¬ Є ®ЎйҐ¬г аҐбгабг б«Ґ¤гҐв ᮧ¤ вм
®ЎкҐЄв - ¬®­Ёв®а. Њ®­Ёв®а б®бв®Ёв Ё§ ¬­®¦Ґбвў  ЇҐаҐ¬Ґ­­ле
б®бв®п­Ёп Ё ¬­®¦Ґбвў  Їа®жҐ¤га, Є®в®алҐ ЁбЇ®«м§гов нвЁ
ЇҐаҐ¬Ґ­­лҐ. ЌҐЄ®в®алҐ Ё§ нвЁе Їа®жҐ¤га, ­ §лў Ґ¬лҐ ў­Ґи­Ё¬Ё,
¤®бвгЇ­л Ї®«м§®ў вҐ«о Ё ­ §лў овбп в®зЄ ¬Ё ўе®¤  ў ¬®­Ёв®а.
Џа®жҐббл, Є®в®алҐ ЁбЇ®«м§гов ¬®­Ёв®а ¤«п бЁ­еа®­Ё§ жЁЁ, ­Ґ Ё¬Ґов
ЇаאַЈ® ¤®бвгЇ  Є ЇҐаҐ¬Ґ­­л¬ б®бв®п­Ёп. Ћ­Ё ¬®Јгв ў®бЇ®«м§®ў вмбп
¬®­Ёв®а®¬ в®«мЄ® Їг⥬ ўл§®ў  ў­Ґи­Ёе Їа®жҐ¤га. Џа®жҐ¤гал
¬®­Ёв®а  ўЄ«оз ов ®ЇҐа жЁЁ, Є®в®алҐ Ї®§ў®«пов Ў«®ЄЁа®ў вм Ё
 ЄвЁўЁ§Ёа®ў вм Їа®жҐббл ў ᮮ⢥вбвўЁҐ б® бЇҐжЁдЁЄ жЁҐ© § ¤ зЁ.
“б«®ўЁп гбв ­®ўЄЁ Ё б­пвЁп Ў«®ЄЁа®ўЄЁ § ЇЁблў овбп ў ўЁ¤Ґ дг­ЄжЁ©
ЇҐаҐ¬Ґ­­ле б®бв®п­Ёп Ё ¬Ґе ­Ё§¬ а Ў®вл ¬®­Ёв®а  Ј а ­вЁагҐв, зв®
ўбҐ ЇаҐ®Ўа §®ў ­Ёп нвЁе ЇҐаҐ¬Ґ­­ле Їа®Ёб室пв ЇаЁ ў§ Ё¬­®¬
ЁбЄ«о祭ЁЁ.
Њ®­Ёв®а Ё¬ҐҐв б«Ґ¤го饥 ®ЎйҐҐ ®ЇЁб ­ЁҐ (ў вҐа¬Ё­ е
®ЎкҐЄв­®-®аЁҐ­вЁа®ў ­­®Ј® п§лЄ  Pascal):
Type
TMonitor = Object
{¤ ­­лҐ - ЇҐаҐ¬Ґ­­лҐ б®бв®п­Ёп}
Constructor Init(...);
Destructor Done; Virtual;
Procedure Enter;
Procedure Exit;
End {TMonitor}.
‚ Є зҐб⢥ ¤ ­­ле ўлбвгЇ ов Ї а ¬Ґвал бЇҐжЁдЁЄ жЁЁ § ¤ зЁ Ё
®зҐаҐ¤Ё ®¦Ё¤ ­Ёп Їа®жҐбб®ў.
ЊҐв®¤ TMonitor.Enter,  ­ «Ё§Ёагп ¤ ­­лҐ, ўлЇ®«­пҐв б«Ґ¤гойЁҐ
¤Ґ©бвўЁп:
- Їа®ўҐапҐв гб«®ўЁп ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є; ЇаЁ
ўлЇ®«­Ґ­ЁЁ нвЁе гб«®ўЁ© Їа®жҐбб, ўл§ў ўиЁ© ¬Ґв®¤, Їа®¤®«¦ Ґв
ўлЇ®«­пвмбп, ў®©¤п ў ЄаЁвЁзҐбЄЁ© гз бв®Є; ЇаЁ ­ҐўлЇ®«­Ґ­ЁЁ -

- 4 -
Їа®жҐбб Ў«®ЄЁагҐвбп ў ®зҐаҐ¤Ё ¬®­Ёв®а ;
- гбв ­ ў«Ёў Ґв ­Ґ®Ўе®¤Ё¬лҐ §­ зҐ­Ёп ЇҐаҐ¬Ґ­­ле б®бв®п­Ёп
ЇаЁ Ў«®ЄЁа®ў ­ЁЁ Їа®жҐбб  Ё ЇаЁ Їа®¤®«¦Ґ­ЁЁ ўлЇ®«­Ґ­Ёп ў
ЄаЁвЁзҐбЄ®¬ гз бвЄҐ.
ЊҐв®¤ TMonitor.Exit ўлЇ®«­пҐв б«Ґ¤гойЁҐ ¤Ґ©бвўЁп:
- гбв ­ ў«Ёў Ґв ­Ґ®Ўе®¤Ё¬лҐ §­ зҐ­Ёп ЇҐаҐ¬Ґ­­ле б®бв®п­Ёп
ЇаЁ ўл室Ґ Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ ;
- Їа®ўҐапҐв гб«®ўЁп ў®§¬®¦­®©  ЄвЁўЁ§ жЁЁ ¦¤гйЁе Їа®жҐбб®ў Ё
 ЄвЁўЁ§ агҐв Ёе ЇаЁ ўлЇ®«­Ґ­ЁЁ нвЁе гб«®ўЁ©.
‘вагЄвга  Їа®жҐ¤гал, ॠ«Ё§го饩 Їа®жҐбб, ®бгйҐбвў«пойЁ©
¤®бвгЇ Є ЄаЁвЁзҐбЄ®¬г аҐбгабг б Ї®¬®ймо ¬®­Ёв®а , Ўг¤Ґв ўлЈ«п¤Ґвм
б«Ґ¤гойЁ¬ ®Ўа §®¬:
Procedure Process;
Begin
{¤Ґ©бвўЁп Їа®жҐбб  ¤® ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є}
Monitor.Enter;
{¤Ґ©бвўЁп Їа®жҐбб  ў ЄаЁвЁзҐбЄ®¬ гз бвЄҐ}
Monitor.Exit;
{¤Ґ©бвўЁп Їа®жҐбб  Ї®б«Ґ ўл室  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ }
End {Process};
§¤Ґбм Monitor - нв® ЇҐаҐ¬Ґ­­ п вЁЇ  TMonitor, пў«пой пбп
нЄ§Ґ¬Ї«п஬ гЄ § ­­®Ј® ®ЎкҐЄв .
Љ®«ЁзҐбвў® а §«Ёз ойЁебп ¬Ґв®¤®ў ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є
Ё ¬Ґв®¤®ў ўл室  Ё§ ­ҐЈ® ®ЇаҐ¤Ґ«пҐвбп Є®«ЁзҐбвў®¬ а §­®ўЁ¤­®б⥩
Їа®жҐбб®ў ў Є ¦¤®© ЇаЁЄ« ¤­®© § ¤ зҐ.
‚ Є ¦¤®© Ё§ ЇҐаҐзЁб«Ґ­­ле ­Ё¦Ґ § ¤ з вॡгҐвбп ᮧ¤ вм бў®©
¬®­Ёв®а Ё § Їа®Ја ¬¬Ёа®ў вм ҐЈ®, ЁбЇ®«м§гп п¤а® MultiObj.
ЊҐв®¤ЁЄ  аҐиҐ­Ёп Є ¦¤®© § ¤ зЁ, ЇаЁўҐ¤Ґ­­ п ў а §¤Ґ«Ґ "ЊҐв®¤ЁЄ 
аҐиҐ­Ёп", ®аЁҐ­вЁа®ў ­  ­  ЁбЇ®«м§®ў ­ЁҐ п¤а  MultiObj. Ћб­®ў®©
аҐиҐ­Ёп Є ¦¤®© § ¤ зЁ пў«пҐвбп д®а¬Ёа®ў ­ЁҐ Ё д®а¬ «Ё§ жЁп
гб«®ўЁ© ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё гб«®ўЁ©  ЄвЁўЁ§ жЁЁ ¦¤гйЁе
Їа®жҐбб®ў ЇаЁ ўл室Ґ Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ .
ЊҐв®¤ЁЄ  аҐиҐ­Ёп § ¤ зЁ 1 а бᬮв७  Ў®«ҐҐ Ї®¤а®Ў­®, 祬
®бв «м­ле § ¤ з. ЊҐв®¤ЁЄ  аҐиҐ­Ёп Є ¦¤®© § ¤ зЁ ЇаҐ¤« Ј Ґв ®¤Ё­
ўлаЁ ­в аҐиҐ­Ёп, зв® Є®­Ґз­® ¦Ґ, ­Ґ ЁбЄ«оз Ґв ў®§¬®¦­®бвЁ аҐиҐ­Ёп
§ ¤ зЁ б Ї®¬®ймо ¤агЈЁе  «Ј®аЁв¬®ў. „«п вҐе, Єв® § ваг¤­пҐвбп
ᮧ¤ вм бў®© ¬®­Ёв®а, ४®¬Ґ­¤гҐвбп § Їа®Ја ¬¬Ёа®ў вм гб«®ўЁп,
ЇаҐ¤« Ј Ґ¬лҐ ў ¬Ґв®¤ЁЄҐ аҐиҐ­Ёп Є ¦¤®Ј® § ¤ ­Ёп.
ЏаҐ¤Ї®« Ј Ґвбп, зв® ¤«п аҐиҐ­Ёп § ¤ з ЈагЇЇ  а §ЎЁў Ґвбп ­ 

- 5 -
ЎаЁЈ ¤л Ї® 2 - 3 祫®ўҐЄ  Ё Їа®Ја ¬¬ЁагҐв § ¤ зЁ Ї® вЁЇг
« Ў®а в®а­ле а Ў®в. Џа ЄвЁзҐбЄ®Ґ аҐиҐ­ЁҐ Є ¦¤®© § ¤ зЁ
®д®а¬«пҐвбп ў ўЁ¤Ґ ®взҐв  (®¤­®Ј® ­  ЎаЁЈ ¤г). ЋвзҐв ¤®«¦Ґ­
ᮤҐа¦ вм:
- бЇҐжЁдЁЄ жЁо § ¤ зЁ;
- ®Ў®б­®ў ­ЁҐ гб«®ўЁ© ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё
 ЄвЁўЁ§ жЁЁ ¦¤гйЁе Їа®жҐбб®ў ЇаЁ ўл室Ґ Ё§ ­ҐЈ® ¤«п Є ¦¤®©
а §­®ўЁ¤­®бвЁ Їа®жҐбб®ў;
- ⥪бв Їа®Ја ¬¬л б Є®¬¬Ґ­в аЁп¬Ё.
’ॡ®ў ­Ёп Є Їа®Ја ¬¬ ¬, ॠ«Ё§гойЁ¬ § ¤ ­Ёп:
- Їа®Ја ¬¬  ¤®«¦­  ўлЈ«п¤Ґвм Є Є § Є®­зҐ­­л© Їа®¤гЄв - Ё¬Ґвм
¬Ґ­о, Ё¬Ґвм Џ®¬®йм, ®ЇЁблў ойго Їа®Ја ¬¬г Ё Їа ўЁ«  а Ў®вл б ­Ґ©,
Ё дг­ЄжЁ®­Ёагойго е®вп Ўл ў­Ґ ¬г«мвЁ§ ¤ з­®Ј® ०Ё¬ , Ё¬Ґвм
б।бвў , ®в®Ўа ¦ ойЁҐ ­  нЄа ­Ґ ¤Ґ©бвўЁп Ё б®бв®п­Ёп ўбҐе
Їа®жҐбб®ў.
Љ ⥪бвг § ¤ ­Ёп ЇаЁ« Ј Ґвбп ⥪бв®ўл© д ©« ¬г«мвЁ§ ¤ з­®Ј®
®ЎкҐЄв­®®аЁҐ­вЁа®ў ­­®Ј® п¤а  MultiObj.Pas, б Ї®¬®ймо Є®в®а®Ј®
­Ґ®Ўе®¤Ё¬® ॠ«Ё§®ў вм Їа®Ја ¬¬л § ¤ ­Ё©. ЋЎкҐЄвл п¤а  ¤®ЇгбвЁ¬®
ЇҐаҐЄалў вм ЇаЁ ­Ґ®Ўе®¤Ё¬®бвЁ.
ЏаЁ« Ј Ґвбп в Є¦Ґ Їа®б⥩訩 ў аЁ ­в ॠ«Ё§ жЁЁ § ¤ зЁ 1 ў
Є зҐб⢥ ЇаЁ¬Ґа .

я2‡ ¤ з  1. ЊЋ„…‹њ †…‹…‡ЌЋ„ЋђЋ†ЌЋѓЋ Џ…ђ…ѓЋЌЂ

†Ґ«Ґ§­ п ¤®а®Ј , ᮥ¤Ё­пой п ¤ў  Ј®а®¤  Ђ Ё ‚, ўЄ«оз Ґв
гз бв®Є, ­  Є®в®а®¬ Ё¬ҐҐвбп в®«мЄ® Ґ¤Ё­б⢥­­л© Їгвм, б¬. б奬г.
„ўЁ¦Ґ­ЁҐ Ї®Ґ§¤®ў ­  Ґ¤Ё­б⢥­­®¬ ЇгвЁ Ї®¤зЁ­пҐвбп б«Ґ¤гойЁ¬
®Ја ­ЁзҐ­Ёп¬:
- ­  бў®Ў®¤­л© Ґ¤Ё­б⢥­­л© Їгвм ¬®¦Ґв ў®©вЁ Ї®Ґ§¤ «оЎ®Ј®
­ Їа ў«Ґ­Ёп;
- Ї®Є  ­  Ґ¤Ё­б⢥­­®¬ ЇгвЁ ­ е®¤Ёвбп Ї®Ґ§¤ ­ҐЄ®в®а®Ј®
­ Їа ў«Ґ­Ёп, ­  ­ҐЈ® ­Ґ ¬®¦Ґв ў®©вЁ Ї®Ґ§¤ ¤агЈ®Ј® ­ Їа ў«Ґ­Ёп, ­®
¬®¦Ґв ў®©вЁ Ї®Ґ§¤ в®Ј® ¦Ґ ­ Їа ў«Ґ­Ёп.
ДДД>ДДДДДДДДї ЪДДДДД>ДДДД
v ^
Ђ ГДДДДД>ДДДДДД<ДДДДДДґ B
v ^
ДДД<ДДДДДДДДЩ АДДДДД<ДДДД
’ॡгҐвбп § Їа®Ја ¬¬Ёа®ў вм § ¤ зг, ­ ЇЁб ў ¬®­Ёв®а, ¤«п

- 6 -
¤ўге ў аЁ ­в®ў гб«®ўЁ©:
1) ­Ґв ®Ја ­ЁзҐ­Ё© ­  Є®«ЁзҐбвў® Ї®Ґ§¤®ў ®¤­®Ј® ­ Їа ў«Ґ­Ёп,
­ е®¤пйЁебп ­  Ґ¤Ё­б⢥­­®¬ ЇгвЁ;
2) ®Ја ­ЁзЁвм Є®«ЁзҐбвў® Ї®Ґ§¤®ў ®¤­®Ј® ­ Їа ў«Ґ­Ёп,
­ е®¤пйЁебп ­  Ґ¤Ё­б⢥­­®¬ ­ Їа ў«Ґ­ЁЁ §­ зҐ­ЁҐ¬ N Ё аҐиЁвм
Їа®Ў«Ґ¬г "ЎҐбЄ®­Ґз­®Ј® ®¦Ё¤ ­Ёп", бў®©б⢥­­го ЇҐаў®¬г ў аЁ ­вг,
Є®Ј¤  Ї®Ґ§¤  ®¤­®Ј® ­ Їа ў«Ґ­Ёп, § еў вЁў Ґ¤Ё­б⢥­­л© Їгвм, ­Ґ
Ї®§ў®«пов Ї®Ґ§¤ ¬ ¤агЈ®Ј® ­ Їа ў«Ґ­Ёп Їа®©вЁ Ї® н⮬㠯гвЁ. ЏаЁ
н⮬ ­Ґ®Ўе®¤Ё¬® ॠ«Ё§®ў вм а жЁ®­ «м­л© Ї®а冷Є ўл¤Ґ«Ґ­Ёп
Ґ¤Ё­б⢥­­®Ј® ЇгвЁ Ї®Ґ§¤ ¬ ®Ў®Ёе ­ Їа ў«Ґ­Ё©.

я1ЊҐв®¤ЁЄ  аҐиҐ­Ёп

‚ ¤ ­­®© § ¤ зҐ "Ґ¤Ё­б⢥­­л© Їгвм" пў«пҐвбп ®ЎйЁ¬ аҐбгаᮬ
¤«п Ї®Ґ§¤®ў, Є®в®алҐ ¤®«¦­л ¬®¤Ґ«Ёа®ў вмбп Їа®жҐбб ¬Ё.
ђҐЈ« ¬Ґ­в жЁп ¤®бвгЇ  Їа®жҐбб®ў Є н⮬㠮ЎйҐ¬г аҐбгабг
®бгйҐбвў«пҐвбп б।бвў®¬ "¬®­Ёв®а".
Џ®бЄ®«мЄг ў § ¤ зҐ Ё¬ҐҐвбп ¤ў  ўЁ¤  Їа®жҐбб®ў - Ї®Ґ§¤ ,
¤ўЁ¦гйЁҐбп б«Ґў  ­ Їа ў®, Ё Ї®Ґ§¤ , ¤ўЁ¦гйЁҐбп бЇа ў  ­ «Ґў®, в®
¬Ґв®¤®ў ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё ўл室®ў Ё§ ­ҐЈ® Ўг¤Ґв ў
¬®­Ёв®аҐ Ї® ¤ў , ­  Є ¦¤л© ўЁ¤ Їа®жҐбб , в® Ґбвм ў­гваЁ ®ЎкҐЄв 
TMonitor ¤®«¦­л Ўлвм ®Ўкпў«Ґ­л б«Ґ¤гойЁҐ ¬Ґв®¤л:
Procedure Enter_L_R; {ўе®¤ Ї®Ґ§¤ , ¤ўЁ¦г饣®бп б«Ґў 
­ Їа ў®, ў ЄаЁвЁзҐбЄЁ© гз бв®Є}
Procedure Enter_R_L; {ўе®¤ Ї®Ґ§¤ , ¤ўЁ¦г饣®бп бЇа ў 
­ «Ґў®, ў ЄаЁвЁзҐбЄЁ© гз бв®Є}
Procedure Exit_L_R; {ўл室 Ї®Ґ§¤ , ¤ўЁ¦г饣®бп б«Ґў 
­ Їа ў®, Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ }
Procedure Exit_R_L; {ўл室 Ї®Ґ§¤ , ¤ўЁ¦г饣®бп бЇа ў 
­ «Ґў®, Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ }.
ЊҐв®¤л ўе®¤  Їа®ўҐапов гб«®ўЁп ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є.
ЏаЁ ўлЇ®«­Ґ­ЁЁ нвЁе гб«®ўЁ© Їа®жҐбб Їа®¤®«¦ Ґв ўлЇ®«­пвмбп, ўе®¤п
ў ЄаЁвЁзҐбЄЁ© гз бв®Є,   ЇаЁ ­ҐўлЇ®«­Ґ­ЁЁ - Їа®жҐбб
ЇаЁ®бв ­ ў«Ёў Ґвбп ў ®зҐаҐ¤Ё. ЏаЁ н⮬ ў ®Ў®Ёе б«гз пе
гбв ­ ў«Ёў овбп ­Ґ®Ўе®¤Ё¬лҐ ¤ ­­лҐ, ­ ЇаЁ¬Ґа, 㢥«ЁзЁў Ґвбп
Є®«ЁзҐбвў® ¤ўЁ¦гйЁебп ў ЄаЁвЁзҐбЄ®¬ гз бвЄҐ Ї®Ґ§¤®ў ¤ ­­®Ј®
­ Їа ў«Ґ­Ёп Ё«Ё 㢥«ЁзЁў Ґвбп Є®«ЁзҐбвў® ¦¤гйЁе ўе®¤  ў
ЄаЁвЁзҐбЄЁ© гз бв®Є Ї®Ґ§¤®ў ¤ ­­®Ј® ­ Їа ў«Ґ­Ёп.
ЊҐв®¤л ўл室  Їа®ўҐапов гб«®ўЁп ў®§¬®¦­®©  ЄвЁўЁ§ жЁЁ

- 7 -
Ў«®ЄЁа®ў ­­ле Їа®жҐбб®ў,  ЄвЁўЁ§Ёагов Ёе ЇаЁ ўлЇ®«­Ґ­ЁЁ нвЁе
гб«®ўЁ© Ё гбв ­ ў«Ёў о ­Ґ®Ўе®¤Ё¬лҐ ¤ ­­лҐ, ­ ЇаЁ¬Ґа, 㬥­ми ов
Є®«ЁзҐбвў® ¤ўЁ¦гйЁебп ў ЄаЁвЁзҐбЄ®¬ гз бвЄҐ Ї®Ґ§¤®ў ¤ ­­®Ј®
­ Їа ў«Ґ­Ёп Ё 㬥­ми ов Є®«ЁзҐбвў® ¦¤гйЁе Ї®Ґ§¤®ў.
“б«®ўЁп Ў«®ЄЁа®ўЄЁ Ё  ЄвЁўЁ§ жЁЁ Їа®жҐбб®ў-Ї®Ґ§¤®ў Ї®§ў®«пов
®ЇаҐ¤Ґ«Ёвм ⥠¤ ­­лҐ, Є®в®алҐ ­Ґ®Ўе®¤Ё¬®  ­ «Ё§Ёа®ў вм ў
¬®­Ёв®аҐ,   Ё¬Ґ­­®,
- Є®«ЁзҐбвў® Ї®Ґ§¤®ў, ¤ўЁ¦гйЁебп Ї® Ґ¤Ё­б⢥­­®¬г ЇгвЁ б«Ґў 
­ Їа ў®, Nmlr;
- Є®«ЁзҐбвў® Ї®Ґ§¤®ў, ¤ўЁ¦г饥бп Ї® Ґ¤Ё­б⢥­­®¬г ЇгвЁ
бЇа ў  ­ «Ґў®, Nmrl;
- Є®«ЁзҐбвў® Ї®Ґ§¤®ў, ¦¤гйЁе ўе®¤  ­  Ґ¤Ё­б⢥­­л© Їгвм
б«Ґў  ­ Їа ў®, Nwlr;
- Є®«ЁзҐбвў® Ї®Ґ§¤®ў, ¦¤гйЁе ўе®¤  ­  Ґ¤Ё­б⢥­­л© Їгвм
бЇа ў  ­ «Ґў®, Nwrl.
Ља®¬Ґ в®Ј®, ЇаЁ ®¦Ё¤ ­ЁЁ ўлЇ®«­Ґ­Ёп гб«®ўЁ© ўе®¤  ­ 
Ґ¤Ё­б⢥­­л© Їгвм Їа®жҐбб ¤®«¦Ґ­ ­ е®¤Ёвмбп ў бЇҐжЁ «м­®
ᮧ¤ ­­®© ¤«п нв®Ј® ®зҐаҐ¤Ё. Џ®н⮬㠢 Є зҐб⢥ ¤ ­­ле ў ¬®­Ёв®аҐ
¤®«¦­л бгйҐбвў®ў вм б«Ґ¤гойЁҐ ЇҐаҐ¬Ґ­­лҐ:
R_L_List - ®зҐаҐ¤м, ў Є®в®а®© ¦¤гв ®бў®Ў®¦¤Ґ­Ёп
Ґ¤Ё­б⢥­­®Ј® ЇгвЁ Ї®Ґ§¤ , ¤ўЁ¦гйЁҐбп бЇа ў  ­ «Ґў®;
L_R_List - ®зҐаҐ¤м, ў Є®в®а®© ¦¤гв ®бў®Ў®¦¤Ґ­Ёп
Ґ¤Ё­б⢥­­®Ј® ЇгвЁ Ї®Ґ§¤ , ¤ўЁ¦гйЁҐбп б«Ґў  ­ Їа ў®.
C гзҐв®¬ ЇаЁўҐ¤Ґ­­ле ўлиҐ ®ЇЁб ­Ё© ¤ ­­ле Ё ¬Ґв®¤®ў
®ЎкҐЄв  "Њ®­Ёв®а" ¬®¦­® ЇаҐ¤бв ўЁвм б«Ґ¤гойго бвагЄвгаг
Їа®Ја ¬¬л, ॠ«Ё§го饩 § ¤ ­ЁҐ:
Program Lab1;
Uses MultiObj;
Type
PMonitor = ^TMonitor;
TMonitor = Object
Nmlr,
Nmrl,
Nwlr,
Nwrl : Word;
L_R_List,
R_L_List : TList;
Constructor Init;
Destructor Done; Virtual;

- 8 -
Procedure Enter_L_R;
Procedure Enter_R_L;
Procedure Exit_L_R;
Procedure Exit_R_L;
End {TMonitor};
{--ђҐ «Ё§ жЁп ¬Ґв®¤®ў ¬®­Ёв®а  ў®§« Ј Ґвбп ­  гз йҐЈ®бп--}
Var
Monitor : PMonitor;
Procedure L_R_Train;
Begin
{¤ўЁ¦Ґ­ЁҐ ¤® ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є}
Monitor^.Enter_L_R;
{¤ўЁ¦Ґ­ЁҐ ў ЄаЁвЁзҐбЄ®¬ гз бвЄҐ}
Monitor^.Exit_L_R;
{¤ўЁ¦Ґ­ЁҐ Ї®б«Ґ ўл室  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ }
{б ¬®г­Ёз⮦Ґ­ЁҐ}
End {L_R_Train};
Procedure R_L_Train;
Begin
{¤ўЁ¦Ґ­ЁҐ ¤® ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є}
Monitor^.Enter_R_L;
{¤ўЁ¦Ґ­ЁҐ ў ЄаЁвЁзҐбЄ®¬ гз бвЄҐ}
Monitor^.Exit_R_L;
{¤ўЁ¦Ґ­ЁҐ Ї®б«Ґ ўл室  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ }
{б ¬®г­Ёз⮦Ґ­ЁҐ}
End {R_L_Train};
Procedure KeyManager;
Begin
While True Do Begin
If Љ« ўЁи  ­ ¦ в  Then Begin
—⥭ЁҐ Є« ўЁиЁ;
Case Љ« ўЁи  Of
'Esc' : Ћбв ­®ўЁвм а Ў®вг п¤а ;
'L','l' : ‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал L_R_Train;
'R','r' : ‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал R_L_Train;
Else
End {Case};
End {If};
End {While};

- 9 -
End {KeyManager};
Begin
Monitor := New(PMonitor, Init);
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал KeyManager;
Ќ з вм а Ў®вг п¤а ;
Dispose(Monitor, Done);
End {Lab1}.
Ќ ЁЎ®«ҐҐ ў ¦­л¬ нв Ї®¬ аҐиҐ­Ёп § ¤ зЁ пў«пҐвбп ®ЇаҐ¤Ґ«Ґ­ЁҐ
бвагЄвгал ¬Ґв®¤®ў TMonitor.Enter_L_R, TMonitor.Enter_R_L,
TMonitor.Exit_L_R,   в Є¦Ґ гб«®ўЁ© ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё
ўл室  Ё§ ­ҐЈ® ¤«п Їа®жҐбб®ў ўбҐе вЁЇ®ў. ЌЁ¦Ґ ЇаҐ¤« Ј овбп
ў аЁ ­вл ¤ ­­ле ¬Ґв®¤®ў ¤«п б«гз п, Є®Ј¤  ­Ґв ®Ја ­ЁзҐ­Ё© ­ 
Є®«ЁзҐбвў® Ї®Ґ§¤®ў ®¤­®Ј® ­ Їа ў«Ґ­Ёп, ­ е®¤пйЁебп ­ 
Ґ¤Ё­б⢥­­®¬ ЇгвЁ.
‘вагЄвга  ¬Ґв®¤  ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё¬ҐҐв б«Ґ¤гойЁ©
ўЁ¤:
‡ ЇаҐв ЇаҐалў ­Ё©;
If Ќ  Ґ¤Ё­б⢥­­®¬ ЇгвЁ Ґбвм Ї®Ґ§¤  Їа®вЁў®Ї®«¦­®Ј® ­ Їа ў«Ґ­Ёп
Then Begin
“ўҐ«ЁзҐ­ЁҐ зЁб«  Їа®жҐбб®ў, ¦¤гйЁе ў ®зҐаҐ¤Ё, ­  Ґ¤Ё­Ёжг;
‚Є«о祭ЁҐ Їа®жҐбб  ў ®зҐаҐ¤м, ¦¤гйЁе ўе®¤  ­  Ґ¤Ё­б⢥­­л©
Їгвм;
ЏҐаҐ¤ з  гЇа ў«Ґ­Ёп Їа®жҐббг, ЇҐаў®¬г ў ®зҐаҐ¤Ё Ј®в®ўле
Їа®жҐбб®ў;
“¬Ґ­м襭ЁҐ зЁб«  Їа®жҐбб®ў, ¦¤гйЁе ў ®зҐаҐ¤Ё, ­  Ґ¤Ё­Ёжг;
End {If};
“ўҐ«ЁзҐ­ЁҐ зЁб«  Їа®жҐбб®ў, ­ е®¤пйЁебп ­  Ґ¤Ё­б⢥­­®¬ ЇгвЁ, ­ 
Ґ¤Ё­Ёжг;
ђ §аҐиҐ­ЁҐ ЇаҐалў ­Ё©;
‘вагЄвга  ¬Ґв®¤  ўл室  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ  Ё¬ҐҐв
б«Ґ¤гойЁ© ўЁ¤:
‡ ЇаҐв ЇаҐалў ­Ё©;
“¬Ґ­м襭ЁҐ зЁб«  Їа®жҐбб®ў, ­ е®¤пйЁебп ­  Ґ¤Ё­б⢥­­®¬ ЇгвЁ, ­ 
Ґ¤Ё­Ёжг;
If …¤Ё­б⢥­­л© Їгвм бў®Ў®¤Ґ­ Then Begin
While ЋзҐаҐ¤м ­Ґ Їгбв  Do Begin
€бЄ«озЁвм ЇҐаўл© Їа®жҐбб Ё§ ®зҐаҐ¤Ё Їа®жҐбб®ў, ¦¤гйЁе
ўе®¤  ­  Ґ¤Ё­б⢥­­л© Їгвм б Їа®вЁў®Ї®«®¦­®Ј®
­ Їа ў«Ґ­Ёп;

- 10 -
‚Є«озЁвм нв®в Їа®жҐбб ў ®зҐаҐ¤м Ј®в®ўле Їа®жҐбб®ў;
End {While};
End {If};
ђ §аҐиҐ­ЁҐ ЇаҐалў ­Ё©;
‡ ¬Ґз ­Ёп
1) ЊҐв®¤л ¬®­Ёв®а  ¤®«¦­л ўлЇ®«­пвмбп ў ०Ё¬Ґ ў§ Ё¬­®Ј®
ЁбЄ«о祭Ёп, Ї®н⮬㠭  ўе®¤Ґ «оЎ®Ј® ¬Ґв®¤  ўлЇ®«­пҐвбп § ЇаҐв
ЇаҐалў ­Ё©,   ­  ўл室Ґ - а §аҐиҐ­ЁҐ ЇаҐалў ­Ё©.
2) ЊҐв®¤л ўе®¤  ­  ЄаЁвЁзҐбЄЁ© гз бв®Є Ё ўл室  Ё§ ­ҐЈ® ¤«п
Ї®Ґ§¤®ў ®Ў®Ёе ­ Їа ў«Ґ­Ё© Ё¤Ґ­вЁз­л Ї® бвагЄвгॠЁ а §«Ёз овбп
«Ёим Ї а ¬Ґва ¬Ё.
3) ЏаҐ¤бв ў«Ґ­  Ё¬Ґ­­® бвагЄвга  ¬Ґв®¤®ў, Ёе Ї®«­ п
ॠ«Ё§ жЁп ў®§« Ј Ґвбп ­  гз йҐЈ®бп.
4) ЏаҐ¤Ї®« Ј Ґвбп, зв® гз йЁ©бп ®бў®Ё« Єгаб « Ў®а в®а­ле
а Ў®в, бўп§ ­­ле б Ї®бв஥­ЁҐ¬ ¬­®Ј®§ ¤ з­®Ј® п¤а  гЇа ў«Ґ­Ёп
Їа®жҐбб ¬Ё, Ё §­ Є®¬ б ॠ«Ё§ жЁҐ© ¬Ґе ­Ё§¬®ў ЁбЄ«о祭Ёп
Їа®жҐбб®ў Ё§ ®зҐаҐ¤Ґ©, ўЄ«о祭Ёп Їа®жҐбб®ў ў ®зҐаҐ¤Ё, ЇҐаҐ¤ зЁ
гЇа ў«Ґ­Ёп Ё в.Ї.
ЏаҐ¤бв ў«Ґ­­лҐ  «Ј®аЁв¬л ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё
ўл室  Ё§ ­ҐЈ® ®Ў« ¤ ов ⥬ ­Ґ¤®бв вЄ®¬, зв® ЇаЁў®¤пв Є
ЎҐбЄ®­Ґз­®¬г ®¦Ё¤ ­Ёо ўл室  Ї®Ґ§¤®ў ®¤­®Ј® ­ Їа ў«Ґ­Ёп ­ 
Ґ¤Ё­б⢥­­л© Їгвм, Ґб«Ё Ї®б«Ґ¤­Ё© § еў зҐ­ Ї®Ґ§¤ ¬Ё ¤агЈ®Ј®
­ Їа ў«Ґ­Ёп.
“бва ­Ёвм ¤ ­­л© ­Ґ¤®бв в®Є ¬®¦­® а §«Ёз­л¬Ё бЇ®б®Ў ¬Ё,
ЇаЁ¬Ґал Є®в®але ЇҐаҐзЁб«Ґ­л ­Ё¦Ґ.
1) ‡ пўЄЁ ­  Їа®е®¦¤Ґ­ЁҐ Ґ¤Ё­б⢥­­®Ј® ЇгвЁ гбв ­ ў«Ёў вм ў
®¤­г ®зҐаҐ¤м Ё ўлЇгбЄ вм Ї®Ґ§¤  ­  Ґ¤Ё­б⢥­­л© Їгвм б®Ј« б­®
нв®© ®зҐаҐ¤Ё. ЏаЁ н⮬, Ґб«Ё б«Ґ¤гойЁ¬ ў ®зҐаҐ¤Ё §  ўлЇгбЄ Ґ¬л¬
­ е®¤Ёвбп Ї®Ґ§¤ в®Ј® ¦Ґ ­ Їа ў«Ґ­Ёп, в® ¬®¦­® ўлЇгбвЁвм Ё ҐЈ®,
ўЇ«®вм ¤® ­ҐЄ®в®а®Ј® §­ зҐ­Ёп N. ‚ Ї®б«Ґ¤­Ґ¬ б«гз Ґ ­ Їа ў«Ґ­ЁҐ
Ї®Ґ§¤  б«Ґ¤гҐв ЇЁб вм ў ¤ҐбЄаЁЇв®а Їа®жҐбб , ҐЈ® ॠ«Ё§го饣®.
2) ‘®еа ­Ёвм ¤ўҐ ®зҐаҐ¤Ё ў ᮮ⢥вбвўЁҐ б ­ Їа ў«Ґ­Ёп¬Ё
¤ўЁ¦Ґ­Ёп Ї®Ґ§¤®ў, ­® дЁЄбЁа®ў вм ¬®¬Ґ­в ўаҐ¬Ґ­Ё Ї®бв ­®ўЄЁ
Їа®жҐбб  ў ®зҐаҐ¤м Ё ЇҐаўл¬  ЄвЁўЁ§Ёа®ў вм Їа®жҐбб, г Є®в®а®Ј®
¬®¬Ґ­в Ї®бв ­®ўЄЁ ў ®зҐаҐ¤м ¬Ґ­миЁ© ­Ґ § ўЁбЁ¬® ®в ®зҐаҐ¤Ё, ў
Є®в®а®© нв®в Їа®жҐбб ­ е®¤Ёвбп. ‚ н⮬ б«гз Ґ ўаҐ¬п Ї®бв ­®ўЄЁ ў
®зҐаҐ¤м б«Ґ¤гҐв ЇЁб вм ў ¤ҐбЄаЁЇв®а Їа®жҐбб .
3) ЌҐ Їа®ЇгбЄ вм ¤®Ї®«­ЁвҐ«м­лҐ Ї®Ґ§¤  ­  Ґ¤Ё­б⢥­­л© Їгвм,
  бв ўЁвм Ёе ў ®зҐаҐ¤м, Ґб«Ё ў ®зҐаҐ¤Ё Їа®вЁў®Ї®«®¦­®Ј®

- 11 -
­ Їа ў«Ґ­Ёп 㦥 Ґбвм Ї®Ґ§¤ , Ё ­Ґ  ЄвЁўЁ§Ёа®ў вм Ї®Ґ§¤  ⥪г饣®
­ Їа ў«Ґ­Ёп ЇаЁ ўл室Ґ Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ , Ґб«Ё Ґбвм Ї®Ґ§¤ 
Їа®вЁў®Ї®«®¦­®Ј® ­ Їа ў«Ґ­Ёп ў ®зҐаҐ¤Ё,    ЄвЁўЁ§Ёа®ў вм Ёе,
Є®Ј¤  Ґ¤Ё­б⢥­­л© Їгвм ®Є ¦Ґвбп бў®Ў®¤­л¬.
‚ «оЎ®¬ ў аЁ ­вҐ ­Ґ ¬Ґ­повбп бвагЄвгал Їа®жҐ¤га ¬®­Ёв®а ,
ॠ«Ё§гойЁЁе ўе®¤ ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё ўл室 Ё§ ­ҐЈ®,  
¬Ґ­пҐвбп «Ёим ўЁ¤ гб«®ўЁ© If ... Then Ў«®ЄЁа®ўЄЁ Ё  ЄвЁўЁ§ жЁЁ
Їа®жҐбб®ў.
“з йЁ©бп Ї® б®Ј« б®ў ­Ёо б ЇаҐЇ®¤ ў вҐ«Ґ¬ ўлЎЁа Ґв ¤«п
Їа®Ја ¬¬Ёа®ў ­Ёп ў аЁ ­в ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё ўл室  Ё§
­ҐЈ® Ё«Ё ᮧ¤ Ґв б®Ўб⢥­­л©  «Ј®аЁв¬.

я2‡ ¤ з  2. ЊЋ„…‹њ „ЋђЋ†ЌЋѓЋ Џ…ђ…Љђ…‘’ЉЂ

„ўҐ  ўв®¬®ЎЁ«м­лҐ ¤®а®ЈЁ ‚-Ќ Ё ‹-Џ ®Ўа §гов ЇҐаҐЄаҐбв®Є, Є Є
Ї®Є § ­® б奬Ґ.
Ђўв®¬®ЎЁ«Ё ¬®Јгв ¤ўЁЈ вмбп зҐаҐ§ ЇҐаҐЄаҐбв®Є Ї® ¤®а®Ј ¬ ‚-Ќ
Ё ‹-Џ б® б«Ґ¤гойЁ¬Ё ®Ја ­ЁзҐ­Ёп¬Ё:
- ­  бў®Ў®¤­л© ЇҐаҐЄаҐбв®Є ¬®¦Ґв ўлҐе вм  ўв®¬®ЎЁ«м б «оЎ®Ј®
­ Їа ў«Ґ­Ёп;
- Ґб«Ё ­  вҐааЁв®аЁЁ ЇҐаҐЄаҐбвЄ  Ї®пўЁ«бп  ўв®¬®ЎЁ«м
­ Їа ў«Ґ­Ёп ‚-Ќ Ё«Ё Ќ-‚ (‹-Џ Ё«Ё Џ-‹), в® ­  ­Ґ© ­Ґ ¬®¦Ґв
Ї®пўЁвмбп  ўв®¬®ЎЁ«м ­ Їа ў«Ґ­Ёп ‹-Џ Ё«Ё Џ-‹ (‚-Ќ Ё«Ё Ќ-‚).
Џ®б«Ґ¤­Ё© ¤®¦Ґ­ Ўлвм ЇаЁ®бв ­®ў«Ґ­ Ё ¬®¦Ґв ў®§®Ў­®ўЁвм бў®Ґ
¤ўЁ¦Ґ­ЁҐ в®«мЄ® Ї®б«Ґ ®бў®Ў®¦¤Ґ­Ёп ЇҐаҐЄаҐбвЄ ,  ўв®¬®ЎЁ«Ё ¦Ґ
"бў®Ёе" ­ Їа ў«Ґ­Ё© ¬®Јг⠢ꥧ¦ вм ў нв® ўаҐ¬п ­  ЇҐаҐЄаҐбв®Є.

є ^ і є
є і і є
є і і є
НННННННННННј і і ИНННННННННН
ДДДДДДДДДДДДДЕДЕДДДДДДДДДДД> Џ
‹ <ДДДДДДДДДДДДЕДЕДДДДДДДДДДДД
ННННННННННН» і і ЙНННННННННН
є і і є
є і і є
є і v є
Ќ
’ॡгҐвбп § Їа®Ја ¬¬Ёа®ў вм § ¤ зг, ­ ЇЁб ў ¬®­Ёв®а

- 12 -
"ЏҐаҐЄаҐбв®Є" ¤«п б«Ґ¤гойЁе гб«®ўЁ©:
- ®Ја ­ЁзЁвм зЁб«®  ўв®¬®ЎЁ«Ґ© ¤ ­­®Ј® ­ Їа ў«Ґ­Ёп,
¤®ЇгбЄ Ґ¬ле ­  ЇҐаҐЄаҐбв®Є, §­ зҐ­ЁҐ¬ N;
- ЇаҐ®¤®«Ґвм Їа®Ў«Ґ¬г ЎҐбЄ®­Ґз­®Ј® ®¦Ё¤ ­Ёп, Є®Ј¤  § еў вЁў
ЇҐаҐЄаҐбв®Є,  ўв®¬®ЎЁ«Ё "бў®Ёе" ­ Їа ў«Ґ­Ё© ­Ґ ¤ ов ў®§¬®¦­®бвЁ
ўл©вЁ ­  ЇҐаҐЄаҐбв®Є  ўв®¬®ЎЁ«п¬ ¤агЈЁе ­ Їа ў«Ґ­Ё© бЄ®«м гЈ®¤­®
¤®«Ј®.
я1ЊҐв®¤ЁЄ  аҐиҐ­Ёп

ЊҐв®¤ЁЄ  аҐиҐ­Ёп ўЄ«оз Ґв ў бҐЎп ®Ўйго бвагЄвгаг Їа®Ја ¬¬л Ё
б«®ўҐбв­®Ґ ®ЇЁб ­ЁҐ гб«®ўЁ© ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є
(ЇҐаҐЄаҐбв®Є) Ё гб«®ўЁ© ўл室  Ё§ ­ҐЈ®.
ЋЎй п бвагЄвга  Їа®Ја ¬¬л ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬:
Program Lab2;
Uses MultiObj;
Type
PMonitor = ^TMonitor;
TMonitor = Object
{¤ ­­лҐ - Є®«ЁзҐбвў®  ўв®¬®ЎЁ«Ґ©, ¦¤гйЁе Ё
¤ўЁ¦гйЁебп Ї® ЇҐаҐЄаҐбвЄг Ї® Є ¦¤®¬г ­ аЇа ў«Ґ­Ёо}
{¤ ­­лҐ - ®зҐаҐ¤Ё ®¦Ё¤ ­Ёп ўл室  ­  ЇҐаҐЄаҐбв®Є Ї®
Є ¦¤®¬г ­ Їа ў«Ґ­Ёо}
‘onstructor Init(...);
Destructor Done; Virtual;
Procedure Enter_L_R;
Procedure Enter_R_L;
Procedure Enter_U_D;
Procedure Enter_D_U;
Procedure Exit_L_R;
Procedure Exit_R_L;
Procedure Exit_U_D;
Procedure Exit_D_U;
End {TMonitor};
{--ђҐ «Ё§ жЁп ¬Ґв®¤®ў ¬®­Ёв®а  ў®§« Ј Ґвбп ­  гз йҐЈ®бп--}
Var
Monitor : PMonitor;
Procedure Move_L_R;
Begin
{¤ўЁ¦Ґ­ЁҐ ¤® ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є}

- 13 -
Monitor^.Enter_L_R;
{¤ўЁ¦Ґ­ЁҐ ў ЄаЁвЁзҐбЄ®¬ гз бвЄҐ}
Monitor^.Exit_L_R;
{¤ўЁ¦Ґ­ЁҐ Ї®б«Ґ ўл室  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ }
{б ¬®г­Ёз⮦Ґ­ЁҐ}
End {Move_L_R};
Procedure Move_R_L;
Begin
{¤ўЁ¦Ґ­ЁҐ ¤® ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є}
Monitor^.Enter_R_L;
{¤ўЁ¦Ґ­ЁҐ ў ЄаЁвЁзҐбЄ®¬ гз бвЄҐ}
Monitor^.Exit_R_L;
{¤ўЁ¦Ґ­ЁҐ Ї®б«Ґ ўл室  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ }
{б ¬®г­Ёз⮦Ґ­ЁҐ}
End {Move_R_L};
Procedure Move_U_D;
Begin
{¤ўЁ¦Ґ­ЁҐ ¤® ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є}
Monitor^.Enter_U_D;
{¤ўЁ¦Ґ­ЁҐ ў ЄаЁвЁзҐбЄ®¬ гз бвЄҐ}
Monitor^.Exit_U_D;
{¤ўЁ¦Ґ­ЁҐ Ї®б«Ґ ўл室  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ }
{б ¬®г­Ёз⮦Ґ­ЁҐ}
End {Move_U_D};
Procedure Move_D_U;
Begin
{¤ўЁ¦Ґ­ЁҐ ¤® ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є}
Monitor^.Enter_D_U;
{¤ўЁ¦Ґ­ЁҐ ў ЄаЁвЁзҐбЄ®¬ гз бвЄҐ}
Monitor^.Exit_D_U;
{¤ўЁ¦Ґ­ЁҐ Ї®б«Ґ ўл室  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ }
{б ¬®г­Ёз⮦Ґ­ЁҐ}
End {Move_D_U};
Procedure KeyManager;
Begin
While True Do Begin
If Љ« ўЁи  ­ ¦ в  Then Begin
—⥭ЁҐ Є« ўЁиЁ;
Case Љ« ўЁи  Of

- 14 -
'Esc' : Ћбв ­®ўЁвм а Ў®вг п¤а ;
'L','l' : ‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Move_L_R;
'R','r' : ‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Move_R_L;
'U','u' : ‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Move_U_D;
'D','d' : ‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Move_D_U;
Else
End {Case};
End {If};
End {While};
End {KeyManager};
Begin
Monitor := New(PMonitor, Init);
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал KeyManager;
Ќ з вм а Ў®вг п¤а ;
Dispose(Monitor, Done);
End {Lab2}.
“б«®ўЁҐ ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є ­  га®ў­Ґ б«®ўҐбв­®Ј®
®ЇЁб ­Ёп ¬®¦Ґв ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
If Ќ  ЄаЁвЁзҐбЄ®¬ гз бвЄҐ ­ е®¤пвбп  ўв®¬®ЎЁ«Ё ЇҐаҐбҐЄ ойЁе
­ Їа ў«Ґ­Ё© OR
Ђўв®¬®ЎЁ«Ґ© бў®ҐЈ® ­ Їа ў«Ґ­Ёп Ў®«миҐ, 祬 N, OR
…бвм ®зҐаҐ¤м Ё§  ўв®¬®ЎЁ«Ґ© бў®ҐЈ® ­ Їа ў«Ґ­Ёп OR
…бвм ®зҐаҐ¤Ё Ё§  ўв®¬®ЎЁ«Ґ© ЇҐаҐбҐЄ ойЁе ­ Їа ў«Ґ­Ё©
Then Begin
€­ЄаҐ¬Ґ­в зЁб«  бв®пйЁе ў ®зҐаҐ¤Ё  ўв®¬®ЎЁ«Ґ©;
‚Є«о祭ЁҐ  ўв®¬®ЎЁ«п ў ®зҐаҐ¤м;
ЏҐаҐ¤ з  гЇа ў«Ґ­Ёп;
„ҐЄаҐ¬Ґ­в зЁб«  бв®пйЁе ў ®зҐаҐ¤Ё  ўв®¬®ЎЁ«Ґ©;
End {If};
€­ЄаҐ¬Ґ­в зЁб«  ­ е®¤пйЁебп ­  ЇҐаҐЄаҐбвЄҐ  ўв®¬®ЎЁ«Ґ©;
“б«®ўЁҐ ўл室  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ  ­  га®ў­Ґ б«®ўҐбв­®Ј®
®ЇЁб ­Ёп ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬:
„ҐЄаҐ¬Ґ­в зЁб«  ­ е®¤пйЁебп ­  ЇҐаҐЄаҐбвЄҐ  ўв®¬®ЎЁ«Ґ©;
If …бвм ®зҐаҐ¤Ё Ё§  ўв®¬®ЎЁ«Ґ© ЇҐаҐбҐЄ ойЁе ­ Їа ў«Ґ­Ё©
Then Begin
If ЏҐаҐЄаҐбв®Є бў®Ў®¤Ґ­ ®в  ўв®¬®ЎЁ«Ґ© ­ҐЇҐаҐбҐЄ ойЁе
­ Їа ў«Ґ­Ё©
Then Begin
ЂЄвЁўЁ§Ёа®ў вм  ўв®¬®ЎЁ«Ё Ё§ ®зҐаҐ¤Ґ© ЇҐаҐбҐЄ ойЁе

- 15 -
­ Їа ў«Ґ­Ё©, ў Є®«ЁзҐб⢥ ­Ґ Ў®«ҐҐ N ¤«п Є ¦¤®Ј®;
End {If};
End Else Begin {­Ґв ®зҐаҐ¤© Ё§  ўв®¬®ЎЁ«Ґ© ЇҐаҐбҐЄ ойЁе
­ Їа ў«Ґ­Ё©}
‚лЇгбвЁвм ®¤Ё­  ўв®¬®ЎЁ«м бў®ҐЈ® ­ Їа ў«Ґ­Ёп ­  ЇҐаҐЄаҐбв®Є,
Ґб«Ё в Є®ў®© Ґбвм ў ®зҐаҐ¤Ё;
End {If};
“з йҐ¬гбп ­Ґ®Ўе®¤Ё¬® ॠ«Ё§®ў вм  «Ј®аЁв¬л ўе®¤  ў
ЄаЁвЁзҐбЄЁ© гз бв®Є Ё ўл室  Ё§ ­ҐЈ®, ЇаҐ¤бв ў«Ґ­­лҐ ўлиҐ ў д®а¬Ґ
б«®ўҐбв­®Ј® ®ЇЁб ­Ёп, Ё«Ё ॠ«Ё§®ў вм б®Ўб⢥­­лҐ  «Ј®аЁв¬л,
®ЎҐбЇҐзЁў ойЁҐ ®Ја ­ЁзҐ­ЁҐ ­  Є®«ЁзҐбвў®  ўв®¬®ЎЁ«Ґ© ®¤­®Ј®
­ Їа ў«Ґ­Ёп ­  ЇҐаҐЄаҐбвЄҐ ­Ґ Ў®«ҐҐ N Ё ®вбгвбвўЁҐ ЎҐбЄ®­Ґз­®Ј®
®¦Ё¤ ­Ёп.

я2‡ ¤ з  3. ЊЋ„…‹њ —€’Ђ’…‹…‰ € ђ…„ЂЉ’ЋђЋ‚

€¬ҐҐвбп д ©«, гЇа ў«пҐ¬л© Їа®жҐбб ¬Ё ¤ўге вЁЇ®ў:
- зЁв вҐ«п¬Ё, Є®в®алҐ ¬®Јгв Їа®б¬ ваЁў вм д ©« ЎҐ§ Ё§¬Ґ­Ґ­Ёп
ҐЈ® ᮤҐа¦ ­Ёп;
- । Єв®а ¬Ё, Є®в®алҐ ¬®Јгв Ё§¬Ґ­пвм д ©«.
’ॡгҐвбп ॠ«Ё§®ў вм Їа®Ја ¬¬г, Є®в®а п ®ЎҐбЇҐзЁў «  Ўл
б«Ґ¤гойго ¤ЁбжЁЇ«Ё­г ¤®бвгЇ  Є д ©«г:
- ў Їа®Ё§ў®«м­л© ¬®¬Ґ­в ўаҐ¬Ґ­Ё а Ў®в вм б д ©«®¬ ¬®¦Ґв
в®«мЄ® ®¤Ё­ । Єв®а Ё ­Ё ®¤­®Ј® зЁв вҐ«п;
- ®¤­®ўаҐ¬Ґ­­® а Ў®в вм б д ©«®¬ ¬®Јгв ­ҐбЄ®«мЄ® зЁв вҐ«Ґ© Ё
­Ё ®¤­®Ј® । Єв®а ;
- ®вбгвбвўгҐв ЎҐбЄ®­Ґз­®Ґ ®¦Ё¤ ­ЁҐ, Є®Ј¤  । Єв®а ­Ґ ¬®¦Ґв
Ї®«гзЁвм ¤®бвгЇ Є д ©«г Ё§-§  Ї®бв®п­­®Ј® Ї®пў«Ґ­Ёп зЁв вҐ«Ґ©,
®Ўа й ойЁебп Є д ©«г Ё ­ ®Ў®а®в, Є®Ј¤  зЁв вҐ«Ё ­Ґ ¬®Јгв Ї®«гзЁвм
¤®бвгЇ Є аҐбгабг Ё§-§  Ї®бв®п­­®Ј® Ї®пў«Ґ­Ёп § Їа®б®ў । Єв®а®ў.
‡ ¤ зг вॡгҐвбп аҐиЁвм ¤«п дЁЄбЁа®ў ­­®Ј® Є®«ЁзҐбвў 
। Єв®а®ў Ё зЁв вҐ«Ґ©, ­ ЇаЁ¬Ґа, Є®«ЁзҐбвў® । Єв®а®ў - 2,
Є®«ЁзҐбвў® зЁв вҐ«Ґ© - 3, ЇаЁ н⮬ ॠ«м­® б д ©«®¬ ¬®¦­® ­Ґ
а Ў®в вм,   ¤®бв в®з­® ®Ў®§­ зЁвм д Євл ўе®¤  ў ЄаЁвЁзҐбЄЁ©
гз бв®Є Ё ўл室  Ё§ ­ҐЈ® ¤«п Є ¦¤®Ј® Їа®жҐбб .

я1ЊҐв®¤ЁЄ  аҐиҐ­Ёп

ЊҐв®¤ЁЄ  аҐиҐ­Ёп ўЄ«оз Ґв ў бҐЎп ®Ўйго бвагЄвгаг Їа®Ја ¬¬л Ё

- 16 -
б«®ўҐбв­®Ґ ®ЇЁб ­ЁҐ гб«®ўЁ© ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё ўл室 
Ё§ ­ҐЈ® ¤«п Їа®жҐбб -।ҐЄв®а  Ё Їа®жҐбб -зЁв вҐ«п.
ЋЎй п бвагЄвга  Їа®Ја ¬¬л ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬.
Program Lab3;
Uses MultiObj;
Type
PMonitor = ^TMonitor;
TMonitor = Object
Nrf, {зЁб«® зЁв вҐ«Ґ©, а Ў®в ойЁе б д ©«®¬}
Nwf, {зЁб«® । Єв®а®ў, а Ў®в ойЁе б д ©«®¬}
Nrw, {зЁб«® зЁв вҐ«Ґ©, ¦¤гйЁе ¤®ЇгбЄ  Є д ©«г}
Nww : Integer;{зЁб«® । Єв®а®ў, ¦¤гйЁе ¤®ЇгбЄ  Є д ©«г}
R_List, {®зҐаҐ¤м зЁв вҐ«Ґ©}
W_List : List;{®зҐаҐ¤м । Єв®а®ў}
‘onstructor Init;
Destructor Done; Virtual;
Procedure Enter_R;
Procedure Enter_W;
Procedure Exit_R;
Procedure Exit_W;
End {TMonitor};
{--ђҐ «Ё§ жЁп ¬Ґв®¤®ў ¬®­Ёв®а  ў®§« Ј Ґвбп ­  гз йҐЈ®бп--}
Var
Monitor : PMonitor;
Procedure Reader_1;
Begin
While True Do Begin
{‘«гз ©­®Ґ ўаҐ¬п а Ў®вл ЎҐ§ аҐбгаб }
Monitor^.Enter_R;
{‘«гз ©­®Ґ ўаҐ¬п а Ў®вл б аҐбгаᮬ}
Monitor^.Exit_R;
End {While};
End {Reader_1};
Procedure Reader_2;
Begin
While True Do Begin
{‘«гз ©­®Ґ ўаҐ¬п а Ў®вл ЎҐ§ аҐбгаб }
Monitor^.Enter_R;
{‘«гз ©­®Ґ ўаҐ¬п а Ў®вл б аҐбгаᮬ}

- 17 -
Monitor^.Exit_R;
End {While};
End {Reader_2};
Procedure Reader_3;
Begin
While True Do Begin
{‘«гз ©­®Ґ ўаҐ¬п а Ў®вл ЎҐ§ аҐбгаб }
Monitor^.Enter_R;
{‘«гз ©­®Ґ ўаҐ¬п а Ў®вл б аҐбгаᮬ}
Monitor^.Exit_R;
End {While};
End {Reader_3};
{Џа®жҐ¤гал Reader_1, Reader_2 Ё Reader_3 бвагЄвга­® ®¤Ё­ Є®ўл, ­®
а §«Ёз овбп, ­ ЇаЁ¬Ґа, Є®®а¤Ё­ в ¬Ё ўлў®¤  ­  нЄа ­ бў®ҐЈ® бв вгб  -
"а Ў®в Ґв б д ©«®¬", "¦¤Ґв ¤®бвгЇ  Є д ©«г", "­Ґ вॡгҐв ¤®бвгЇ  Є
д ©«г".}
Procedure Writer_1;
Begin
While True Do Begin
{‘«гз ©­®Ґ ўаҐ¬п а Ў®вл ЎҐ§ аҐбгаб }
Monitor^.Enter_W;
{‘«гз ©­®Ґ ўаҐ¬п а Ў®вл б аҐбгаᮬ}
Monitor^.Exit_W;
End {While};
End {Writer_1};
Procedure Writer_2;
Begin
While True Do Begin
{‘«гз ©­®Ґ ўаҐ¬п а Ў®вл ЎҐ§ аҐбгаб }
Monitor^.Enter_W;
{‘«гз ©­®Ґ ўаҐ¬п а Ў®вл б аҐбгаᮬ}
Monitor^.Exit_W;
End {While};
End {Writer_2};
{Џа®жҐ¤гал Writer_1 Ё Writer_2 бвагЄвга­® ®¤Ё­ Є®ўл, ­®
а §«Ёз овбп, ­ ЇаЁ¬Ґа, Є®®а¤Ё­ в ¬Ё ўлў®¤  ­  нЄа ­ бў®ҐЈ® бв вгб  -
"а Ў®в Ґв б д ©«®¬", "¦¤Ґв ¤®бвгЇ  Є д ©«г", "­Ґ вॡгҐв ¤®бвгЇ  Є
д ©«г".}
Procedure KeyManager;

- 18 -
Begin
While True Do Begin
If Љ« ўЁи  ­ ¦ в  Then Begin
—⥭ЁҐ Є« ўЁиЁ;
Case Љ« ўЁи  Of
'Esc' : Ћбв ­®ўЁвм а Ў®вг п¤а ;
Else
End {Case};
End {If};
End {While};
End {KeyManager};
Begin
Monitor := New(PMonitor, Init);
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал KeyManager;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Reader_1;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Reader_2;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Reader_3;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Writer_1;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Writer_2;
Ќ з вм а Ў®вг п¤а ;
Dispose(Monitor, Done);
End {Lab3}.
‚ᥠࠧ­®®Ўа §ЁҐ  «Ј®аЁв¬®ў ¤®бвгЇ  зЁв вҐ«Ґ© Ё । Єв®а®ў Є
д ©«г ॠ«Ё§гҐвбп ў ¬Ґв®¤ е ¬®­Ёв®а . ЌЁ¦Ґ ЇаҐ¤бв ў«Ґ­®
б«®ўҐбв­®Ґ ®ЇЁб ­ЁҐ гб«®ўЁ© ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є Ё ўл室 
Ё§ ­ҐЈ® ¤«п зЁв вҐ«Ґ© Ё । Єв®а®ў, Є®в®алҐ ¬®Јгв Ўлвм
ॠ«Ё§®ў ­л гз йЁ¬Ёбп.
“б«®ўЁҐ ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є зЁв вҐ«п ¬®¦Ґв ўлЈ«п¤Ґвм
б«Ґ¤гойЁ¬ ®Ўа §®¬:
If ” ©« § ­пв । Єв®а®¬ €‹€ …бвм । Єв®ал ў ®зҐаҐ¤Ё Then Begin
€­ЄаҐ¬Ґ­в зЁб«  зЁв вҐ«Ґ© ў ®зҐаҐ¤Ё;
Џ®бв ­®ўЄ  зЁв вҐ«п ў ®зҐаҐ¤м;
ЏҐаҐ¤ з  гЇа ў«Ґ­Ёп;
„ҐЄаҐ¬Ґ­в зЁб«  зЁв вҐ«Ґ© ў ®зҐаҐ¤Ё;
End {If};
€­ЄаҐ¬Ґ­в зЁб«  зЁв вҐ«Ґ©, а Ў®в ойЁе б д ©«®¬;
“б«®ўЁҐ ўе®¤  ў ЄаЁвЁзҐбЄЁ© гз бв®Є । Єв®а  ¬®¦Ґв
ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
If ” ©« § ­пв । Єв®а®¬ €‹€ ” ©« § ­пв зЁв вҐ«п¬Ё Then Begin

- 19 -
€­ЄаҐ¬Ґ­в зЁб«  । Єв®а®ў ў ®зҐаҐ¤Ё;
Џ®бв ­®ўЄ  । Єв®а  ў ®зҐаҐ¤м;
ЏҐаҐ¤ з  гЇа ў«Ґ­Ёп;
„ҐЄаҐ¬Ґ­в зЁб«  । Єв®а®ў ў ®зҐаҐ¤Ё;
End {If};
€­ЄаҐ¬Ґ­в зЁб«  । Єв®а®ў, а Ў®в ойЁе б д ©«®¬;
“б«®ўЁҐ ўл室  зЁв вҐ«п Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ  ¬®¦Ґв
ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
„ҐЄаҐ¬Ґ­в зЁб«  зЁв вҐ«Ґ©, а Ў®в ойЁе б д ©«®¬;
If ЌҐв зЁв вҐ«Ґ©, а Ў®в ойЁе б д ©«®¬ €
…бвм । Єв®а ў ®зҐаҐ¤Ё Then Begin
ЂЄвЁўЁ§ жЁп । Єв®а ;
End {If};
“б«®ўЁҐ ўл室  । Єв®а  Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ  ¬®¦Ґв
ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
„ҐЄаҐ¬Ґ­в зЁб«  । Єв®а®ў, а Ў®в ойЁе б д ©«®¬;
If …бвм зЁв вҐ«Ё ў ®зҐаҐ¤Ё Then Begin
ЂЄвЁўЁ§ жЁп ўбҐе зЁв вҐ«Ґ© Ё§ ®зҐаҐ¤Ё;
End Else Begin {­Ґв зЁв вҐ«Ґ©, ¦¤гйЁе ¤®бвгЇ  Є д ©«г}
ЂЄвЁўЁ§ жЁп ЇҐаў®Ј® । Єв®а  Ё§ ®зҐаҐ¤Ё, Ґб«Ё в Є®ў п
Ё¬ҐҐвбп;
End {If};
“бва ­Ґ­ЁҐ ў®§¬®¦­®Ј® ЎҐбЄ®­Ґз­®Ј® ®¦Ё¤ ­Ёп । Єв®а , Є®Ј¤ 
Ї®бв®п­­® Ї®¤е®¤пв зЁв вҐ«Ё Є ЄаЁвЁзҐбЄ®¬г аҐбгабг, ў ¤ ­­®¬
б«гз Ґ гбва ­пҐвбп б«Ґ¤гойЁ¬ гб«®ўЁҐ¬:
- зЁв вҐ«м ўбв Ґв ў ®зҐаҐ¤м, Ґб«Ё 㦥 Ґбвм ®зҐаҐ¤м Ё§
। Єв®а®ў;
- Ї®б«Ґ¤­Ё© Ё§ зЁв вҐ«Ґ©, а Ў®в ойЁе ў ¤ ­­л© ¬®¬Ґ­в б
аҐбгаᮬ,  ЄвЁўЁ§ЁагҐв । Єв®а ;
  гбва ­Ґ­ЁҐ ў®§¬®¦­®Ј® ЎҐбЄ®­Ґз­®Ј® ®¦Ё¤ ­Ёп зЁв вҐ«Ґ©
гбва ­пҐвбп ⥬, зв® ўл室пйЁ© Ё§ ЄаЁвЁзҐбЄ®Ј® гз бвЄ  । Єв®а ў
ЇҐаўго ®зҐаҐ¤м  ЄвЁўЁ§ЁагҐв зЁв вҐ«Ґ©, ¦¤гйЁе аҐбгаб , Ё Ґб«Ё
в Є®ўле ­Ґв, в® в®«мЄ® в®Ј¤  ¤Ґ« Ґвбп Ї®ЇлвЄ   ЄвЁўЁ§Ёа®ў вм
। Єв®а .
’ ЄЁ¬ ®Ўа §®¬ ®ЎҐбЇҐзЁў Ґвбп ¤®бв в®з­® бЇа ўҐ¤«Ёў®Ґ
ўл¤Ґ«Ґ­ЁҐ аҐбгаб -д ©«  Їа®жҐбб ¬ ¤ўге ўЁ¤®ў:
- Ї®б«Ґ ®ва Ў®вЄЁ । Єв®а  б д ©«®¬, Ї®б«Ґ¤­Ё©
ЇаҐ¤®бв ў«пҐвбп ўбҐ¬ зЁв вҐ«п¬, бв®пйЁ¬ ў ®зҐаҐ¤Ё Є ¬®¬Ґ­вг
®Є®­з ­Ёп а Ў®вл б д ©«®¬ । Єв®а ;   Ї®б«Ґ ®ва Ў®вЄЁ б д ©«®¬

- 20 -
ўбҐе нвЁе зЁв вҐ«Ґ©, д ©« ЇаҐ¤®бв ў«пҐвбп ®¤­®¬г । Єв®аг Ё в.¤.
‚в®ал¬ ў аЁ ­в®¬ бЇа ўҐ¤«Ёў®Ј® а бЇаҐ¤Ґ«Ґ­Ёп аҐбгаб 
пў«пҐвбп § ЇЁбм । Єв®а®ў Ё зЁв вҐ«Ґ© ў ®¤­г ®зҐаҐ¤м Ё
ЇаҐ¤®бв ў«Ґ­ЁҐ аҐбгаб  ў Ї®ап¤ЄҐ ®зҐаҐ¤­®бвЁ, ­® б гзҐв®¬
®б®ЎҐ­­®б⥩ Їа®жҐбб®ў:
- । Єв®а  ЄвЁўЁ§ЁагҐвбп ®¤Ё­,   зЁв вҐ«Ё  ЄвЁўЁ§Ёаговбп
ўбҐ бв®пйЁҐ ў ®зҐаҐ¤Ё ЇҐаҐ¤ । Єв®а®¬.
“з йҐ¬гбп ४®¬Ґ­¤гҐвбп ॠ«Ё§®ў вм ­  ўлЎ®а ®¤Ё­ Ё§
ЇаҐ¤« Ј Ґ¬ле  «Ј®аЁв¬®ў Ё«Ё ॠ«Ё§®ў вм бў®© б®Ўб⢥­­л©.

я2‡ ¤ з  4. ЊЋ„…‹њ ЌЂ‡ЌЂ—…Ќ€џ Ћ„ЌЋђЋ„Ќ›• ђ…‘“ђ‘Ћ‚

€¬ҐҐвбп N Ґ¤Ё­Ёж ®¤­®а®¤­®Ј® аҐбгаб  Ё Њ Їа®жҐбб®ў. Љ ¦¤л©
Їа®жҐбб ¬®¦Ґв § Їа®бЁвм ­г¦­®Ґ Ґ¬г Є®«ЁзҐбвў® аҐбгаб®ў ®в 1 ¤® N
Ґ¤Ё­Ёж. …б«Ё ў бў®Ў®¤­ле аҐбгаб е ­Ґв § Їа иЁў Ґ¬®Ј® Ё¬
Є®«ЁзҐбвў , в® Їа®жҐбб ўл­г¦¤Ґ­ ЇаЁ®бв ­®ўЁвмбп Ё ¦¤ вм Ёе
®бў®Ў®¦¤Ґ­Ёп. ’ॡгҐвбп § Їа®Ја ¬¬Ёа®ў вм § ¤ зг, ­ ЇЁб ў ¬®­Ёв®а
"ђҐбгаб", ॠ«Ё§гойЁ© ўл¤Ґ«Ґ­ЁҐ § Їа иЁў Ґ¬®Ј® Є®«ЁзҐбвў 
аҐбгаб®ў Ё бў®Ў®¤­л© ®в ЎҐбЄ®­Ґз­®Ј® ®¦Ё¤ ­Ёп.

я1ЊҐв®¤ЁЄ  аҐиҐ­Ёп

…б«Ё ®Ў®§­ зЁвм зҐаҐ§ n, Є®«ЁзҐбвў® Ґ¤Ё­Ёж аҐбгаб ,
§ Їа иЁў Ґ¬®Ґ ⥪гйЁ¬ Їа®жҐбᮬ, Ё ®Ў®§­ зЁвм зҐаҐ§ Nбў®Ў
Є®«ЁзҐбвў® бў®Ў®¤­ле ў ¤ ­­л© ¬®¬Ґ­в аҐбгаб®ў, в® гб«®ўЁҐ
ўл¤Ґ«Ґ­Ёп аҐбгаб  Їа®жҐбб㠡㤥⠢룫拉вм б«Ґ¤гойЁ¬ ®Ўа §®¬:
n <= Nбў®Ў.
ЌҐўлЇ®«­Ґ­ЁҐ ¤ ­­®Ј® гб«®ўЁп ¤®«¦­® ЇаЁў®¤Ёвм Є Ў«®ЄЁа®ў ­Ёо
Їа®жҐбб .
ЋЎй п бвагЄвга  Їа®Ја ¬¬л ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬.
Program Lab4;
Uses MultiObj;
Type
PMonitor = ^TMonitor;
TMonitor = Object
N,
Nбў®Ў : Integer;
RList : List;
Constructor Init(...);

- 21 -
Destructor Done;
Procedure Request;
Procedure Free;
End {TMonitor};
{--ђҐ «Ё§ жЁп ¬Ґв®¤®ў ¬®­Ёв®а  ў®§« Ј Ґвбп ­  гз йҐЈ®бп--}
Var
Monitor : PMonitor;
Procedure Process_1;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬л а Ў®вл ЎҐ§ аҐбгаб }
Monitor^.Request;
{б«гз ©­®Ґ ўаҐ¬п а Ў®вл б аҐбгаᮬ}
Monitor^.Free;
End {While}:
End {Process_1};
Procedure Process_2;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬л а Ў®вл ЎҐ§ аҐбгаб }
Monitor^.Request;
{б«гз ©­®Ґ ўаҐ¬п а Ў®вл б аҐбгаᮬ}
Monitor^.Free;
End {While}:
End {Process_2};
Procedure Process_3;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬л а Ў®вл ЎҐ§ аҐбгаб }
Monitor^.Request;
{б«гз ©­®Ґ ўаҐ¬п а Ў®вл б аҐбгаᮬ}
Monitor^.Free;
End {While}:
End {Process_3};
{Џа®жҐ¤гал Process_1, Process_2 Ё Process_3 бвагЄвга­® ®¤Ё­ Є®ўл,
­® а §«Ёз овбп, ­ ЇаЁ¬Ґа, Є®®а¤Ё­ в ¬Ё ўлў®¤  ­  нЄа ­ бў®ҐЈ®
бв вгб  - "­Ґ вॡгҐв аҐбгаб ", "¦¤Ґв ¤ ­­®Ј® Є®«ЁзҐбвў 
аҐбгаб ", "а Ў®в Ґв б ¤ ­­л¬ Є®«ЁзҐбвў®¬ аҐбгаб "}
Procedure KeyManager;

- 22 -
{Џа®жҐ¤га  KeyManager  ­ «®ЈЁз­  б § ¤ зҐ© 3}
End {KeyManager};
Begin
Monitor := New(PMonitor, Init);
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал KeyManager;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Process_1;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Process_2;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Process_3;
Ќ з вм а Ў®вг п¤а ;
Dispose(Monitor, Done);
End {Lab4}.
“Їа ў«Ґ­ЁҐ ¤®бвгЇ®¬ Є аҐбгаб ¬ ®бгйҐбвў«пҐвбп ¬Ґв®¤ ¬Ё
Request Ё Free ®ЎкҐЄв  TMonitor.
€бе®¤п Ё§ гб«®ўЁ© § ¤ зЁ, бвагЄвга  ¬Ґв®¤  Request ¬®¦Ґв
ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
ЋЇаҐ¤Ґ«Ёвм б«гз ©­®Ґ зЁб«® n ў ¤Ё Ї §®­Ґ ®в 1 ¤® N - Є®«ЁзҐбвў®
Ґ¤Ё­Ёж аҐбгаб , § Їа иЁў Ґ¬ле ⥪гйЁ¬ Їа®жҐбᮬ;
‡ ЇЁб вм §­ зҐ­ЁҐ n ў ¤ҐбЄаЁЇв®а Їа®жҐбб ;
If n > Nбў®Ў €‹€ …бвм Їа®жҐббл, бв®пйЁҐ ў ®зҐаҐ¤Ё
’hen Begin
€­ЄаҐ¬Ґ­в зЁб«  Їа®жҐбб®ў, бв®пйЁе ў ®зҐаҐ¤Ё;
‚Є«о祭ЁҐ Їа®жҐбб  ў ®зҐаҐ¤м;
ЏҐаҐ¤ з  гЇа ў«Ґ­Ёп;
„ҐЄаҐ¬Ґ­в зЁб«  Їа®жҐбб®ў, бв®пйЁе ў ®зҐаҐ¤Ё;
End {If};
Ncў®Ў := Nбў®Ў - n;
‘вагЄвга  ¬Ґв®¤  Free ¬®¦Ґв ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
Nбў®Ў := Nбў®Ў + n;
Temp := Nбў®Ў;
While ЋзҐаҐ¤м ­Ґ Їгбв  Do Begin
If „«п ЇҐаў®Ј® ў ®зҐаҐ¤Ё n <= Temp Then Begin
Џа®жҐбб, ЇҐаўл© ў ®зҐаҐ¤Ё, ЇҐаҐўҐбвЁ ў ®зҐаҐ¤м Ј®в®ўле
Їа®жҐбб®ў;
Temp := Temp - n;
End Else Begin
Break;
End {If};
End {While};
‚®§¬®¦­®бвм ЎҐбЄ®­Ґз­®Ј® ®¦Ё¤ ­Ёп Їа®жҐбб , ¦¤г饣® Ў®«ми®Ј®

- 23 -
Є®«ЁзҐбвў  аҐбгаб®ў, Є®Ј¤  ўбҐ ўаҐ¬п Ї®пў«повбп Їа®жҐббл,
§ Їа иЁў ойЁҐ Ё Ї®«гз ойЁҐ ­ҐЎ®«м讥 Є®«ЁзҐбвў® аҐбгаб®ў,
гбва ­пҐвбп ў ¤ ­­®¬ аҐиҐ­ЁЁ б«Ґ¤гойЁ¬ ®Ўа §®¬:
- Їа®жҐбб ўбв Ґв ў ®зҐаҐ¤м, Ґб«Ё Ґбвм 㦥 ў ®зҐаҐ¤Ё ¤агЈЁҐ
Їа®жҐббл;
- ўл¤Ґ«Ґ­ЁҐ аҐбгаб®ў Їа®жҐбб ¬ ЇаЁ Ёе  ЄвЁўЁ§ жЁЁ
®бгйҐбвў«пҐвбп ЁбЄ«озЁвҐ«м­®, ­ зЁ­ п б ЇҐаў®Ј® ў ®зҐаҐ¤Ё, Ґб«Ё
ЇҐаў®¬г ў ®зҐаҐ¤Ё ­Ґ еў в Ґв бў®Ў®¤­ле аҐбгаб®ў, в®  ЄвЁўЁ§ жЁп
Їа®жҐбб®ў ­Ґ Їа®Ё§ў®¤Ёвбп.
‚ ¤ ­­®© § ¤ зҐ гз йЁ¬бп ­Ґ®Ўе®¤Ё¬® ᮧ¤ вм ®ЎкҐЄв-­ б«Ґ¤­ЁЄ
®ЎкҐЄв  Process ¬г«мвЁ§ ¤ з­®Ј® п¤а  MultiObj, ¤®Ў ўЁў ў
¤ҐбЄаЁЇв®а Ї®«Ґ, Ј¤Ґ Ўг¤Ґв еа ­Ёвмбп Є®«ЁзҐбвў® § Їа®иҐ­­ле
Їа®жҐбᮬ аҐбгаб®ў.

я2‡ ¤ з  5. ЊЋ„…‹њ ЋЃ…„Ђћ™€• ”€‹Ћ‘Ћ”Ћ‚

Џпвм дЁ«®б®д®ў бЁ¤пв §  ЄагЈ«л¬ ®ЎҐ¤Ґ­­л¬ бв®«®¬. ЊҐ¦¤г
Є ¦¤л¬Ё ¤ўг¬п дЁ«®б®д ¬Ё Ґбвм ®¤­  ўЁ«Є , Є®в®а п ¬®¦Ґв Ўлвм
®ЎйҐ© ¤«п ­Ёе.
Љ ¦¤л© дЁ«®б®д ¬®¦Ґв «ЁЎ® ¤г¬ вм, ­Ґ вॡгп ўЁ«®Є, «ЁЎ®
Ґбвм, ЁбЇ®«м§гп ¤ўҐ б®бҐ¤­ЁҐ ўЁ«ЄЁ, а бЇ®«®¦Ґ­­лҐ Ї® ®¤­г Ё Ї®
¤агЈго бв®а®­л ®в ­ҐЈ®. ‚аҐ¬п ®ЎҐЁе д § "¤г¬ вм" Ё "Ґбвм" -
Їа®Ё§ў®«м­ п Є®­Ґз­ п ўҐ«ЁзЁ­ . ЏаЁ ®вбгвбвўЁЁ ¤ўге бў®Ў®¤­ле
ўЁ«®Є, ­Ґ®Ўе®¤Ё¬ле дЁ«®б®дг ¤«п Ґ¤л, Ї®б«Ґ¤­Ё© ЇҐаҐе®¤Ёв ў
б®бв®п­ЁҐ ®¦Ё¤ ­Ёп.
’ॡгҐвбп аҐиЁвм § ¤ зг, ­ ЇЁб ў ¬®­Ёв®а "‚Ё«ЄЁ",
ॠ«Ё§гойЁ© ўл¤Ґ«Ґ­ЁҐ ўЁ«®Є дЁ«®б®д ¬ Ё ®ЎҐбЇҐзЁў ойЁ©
ў®§¬®¦­®бвм Ёе ЇҐаҐе®¤  ®в б®бв®п­Ёп "¤г¬ вм" Є б®бв®п­Ёо "Ґбвм"
ЎҐ§ ЎҐбЄ®­Ґз­®Ј® ®¦Ё¤ ­Ёп.

я1ЊҐв®¤ЁЄ  аҐиҐ­Ёп

ЏаЁ¬Ґ¬ б«Ґ¤гойго ­г¬Ґа жЁо дЁ«®б®д®ў Ё ўЁ«®Є:
- Ўг¤Ґ¬ ­г¬Ґа®ў вм дЁ«®б®д®ў ®в 0 ¤® 4;
- Ўг¤Ґ¬ ­г¬Ґа®ў вм ўЁ«ЄЁ ®в 0 ¤® 4;
- Ўг¤Ґ¬ бзЁв вм, зв® г дЁ«®б®д  б ­®¬Ґа®¬ i б«Ґў  «Ґ¦Ёв
ўЁ«Є  б ­®¬Ґа®¬ i,   бЇа ў  - ўЁ«Є  б ­®¬Ґа®¬ (i+1)mod5.
…б«Ё дЁ«®б®д®ў Ё­вҐаЇаҐвЁа®ў вм Є Є Їа®жҐббл,   ўЁ«ЄЁ - Є Є
®ЎйЁҐ аҐбгабл, в® ®Ўйго бвагЄвгаг Їа®Ја ¬¬л ¬®¦­® ЇаҐ¤бв ўЁвм

- 24 -
б«Ґ¤гойЁ¬ ®Ўа §®¬.
Program Lab5;
Uses MultiObj;
Type
PMonitor = ^TMonitor;
TMonitor = Object
V : Array[0..4] Of Boolean; {¤ ­­лҐ, ®ЇЁблў ойЁҐ
б®бв®п­ЁҐ ўЁ«®Є - б®Ў®¤­ /§ ­пв }
PHList : List;
Constructor Init(...);
Destructor Done; Virtual;
Procedure Enter_Eat;
Procedure Exit_Eat;
End {TMonitor};
{--ђҐ «Ё§ жЁп ¬Ґв®¤®ў ¬®­Ёв®а  ў®§« Ј Ґвбп ­  гз йҐЈ®бп--}
Var
Monitor : PMonitor;
Procedure Phil_1;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬п ў д §Ґ "¤г¬ вм"}
Monitor^.Enter_Eat;
{б«гз ©­®Ґ ўаҐ¬п ў д §Ґ "Ґбвм"}
Monitor^.Exit_Eat;
End {While};
End {Phil_1};
Procedure Phil_2;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬п ў д §Ґ "¤г¬ вм"}
Monitor^.Enter_Eat;
{б«гз ©­®Ґ ўаҐ¬п ў д §Ґ "Ґбвм"}
Monitor^.Exit_Eat;
End {While};
End {Phil_2};
Procedure Phil_3;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬п ў д §Ґ "¤г¬ вм"}

- 25 -
Monitor^.Enter_Eat;
{б«гз ©­®Ґ ўаҐ¬п ў д §Ґ "Ґбвм"}
Monitor^.Exit_Eat;
End {While};
End {Phil_3};
Procedure Phil_4;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬п ў д §Ґ "¤г¬ вм"}
Monitor^.Enter_Eat;
{б«гз ©­®Ґ ўаҐ¬п ў д §Ґ "Ґбвм"}
Monitor^.Exit_Eat;
End {While};
End {Phil_4};
Procedure Phil_5;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬п ў д §Ґ "¤г¬ вм"}
Monitor^.Enter_Eat;
{б«гз ©­®Ґ ўаҐ¬п ў д §Ґ "Ґбвм"}
Monitor^.Exit_Eat;
End {While};
End {Phil_5};
{Џа®жҐ¤гал Phil_1 .. Phil_5 бвагЄвга­® ®¤Ё­ Є®ўл, ­® а §«Ёз овбп,
­ ЇаЁ¬Ґа, Є®®а¤Ё­ в ¬Ё ўлў®¤  б®бв®п­Ёп дЁ«®б®д  ­  нЄа ­}
Procedure KeyManager;
{Џа®жҐ¤га  KeyManager  ­ «®ЈЁз­  б § ¤ з ¬Ё 3 Ё 4}
End {KeyManager};
Begin
Monitor := New(PMonitor, Init);
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал KeyManager;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Phil_1;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Phil_2;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Phil_3;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Phil_4;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Phil_5;
Ќ з вм а Ў®вг п¤а ;
Dispose(Monitor, Done);
End {Lab5}.

- 26 -
ЃҐбЄ®­Ґз­®Ґ ®¦Ё¤ ­ЁҐ Їа®жҐбб®ў ¬®¦Ґв ў®§­ЁЄ­гвм, Ґб«Ё
®аЈ ­Ё§®ў вм ¬®­Ёв®а в ЄЁ¬ ®Ўа §®¬, зв® дЁ«®б®дл ¬®Јгв Ўа вм
ўЁ«ЄЁ Ї® ®¤­®©. ’®Ј¤ , Ґб«Ё Є ¦¤л© дЁ«®б®д § еў вЁв, ­ ЇаЁ¬Ґа,
Їа ўго ®в бҐЎп ўЁ«Єг Ё ЇҐаҐ©¤Ґв ў б®бв®п­ЁҐ ®¦Ё¤ ­Ёп «Ґў®© ўЁ«ЄЁ,
в® ўбп бЁб⥬  ЇҐаҐ©¤Ґв ў б®бв®п­ЁҐ вгЇЁЄ . Џ®н⮬㠢ўҐ¤Ґ¬
®Ја ­ЁзҐ­ЁҐ, б®бв®п饥 ў ⮬, зв® i-© дЁ«®б®д ¬®¦Ґв ЇҐаҐ©вЁ ў
б®бв®п­ЁҐ "Ґбвм" в®«мЄ® ЇаЁ ­ «ЁзЁЁ ¤ўге бў®Ў®¤­ле ўЁ«®Є б
­®¬Ґа ¬Ё i Ё (i+1)mod5. …б«Ё дЁ«®б®д § е®вҐ« "Ґбвм" Ё в®«мЄ® ®¤­ 
Ё§ ­Ґ®Ўе®¤Ё¬ле Ґ¬г ўЁ«®Є бў®Ў®¤­  (Ё«Ё ­Ё ®¤­®©), в® ®­ ЇҐаҐе®¤Ёв
ў б®бв®п­ЁҐ ®¦Ё¤ ­Ёп.
‘вагЄвга  ¬Ґв®¤  ¬®­Ёв®а , ॠ«Ё§го饣® ўе®¤ ў ЄаЁвЁзҐбЄЁ©
гз бв®Є ¬®¦Ґв в®Ј¤  ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
ЋЇаҐ¤Ґ«Ґ­ЁҐ ­®¬Ґа  i дЁ«®б®д , ᮮ⢥вбвўго饣® ⥪г饬г
Їа®жҐббг;
If ‚Ё«Є [i] Ё«Ё ‚Ё«Є [(i+1)mod5] § ­пвл Then Begin
Џ®бв ўЁвм Їа®жҐбб ў ®зҐаҐ¤м;
ЏҐаҐ¤ вм гЇа ў«Ґ­ЁҐ;
End {If};
‚Ё«Є [i] := § ­пв ;
‚Ё«Є [(i+1)mod5] := § ­пв ;
ЏаЁ ®бў®Ў®¦¤Ґ­ЁЁ ўЁ«®Є дЁ«®б®д®¬ б ­®¬Ґа®¬ i ¬®­Ёв®а ¤Ґ« Ґв
Їа®ўҐаЄг, Ґбвм «Ё дЁ«®б®дл, бўп§ ­­лҐ б ¤ ­­л¬Ё ўЁ«Є ¬Ё ў ®зҐаҐ¤Ё
( нв® дЁ«®б®дл б ­®¬Ґа ¬Ё (i+1)mod5 Ё (i+4)mod5 ), Ё бў®Ў®¤­л «Ё
¤®Ї®«­ЁвҐ«м­лҐ ¤«п нвЁе дЁ«®б®д®ў ўЁ«ЄЁ ( нв® ўЁ«ЄЁ б ­®¬Ґа ¬Ё
(i+2)mod5 Ё (i+4)mod5 ). ЏаЁ Ї®«®¦ЁвҐ«м­®¬ ®вўҐвҐ ¤ ­­лҐ дЁ«®б®дл
 ЄвЁўЁ§Ёаговбп.
‘вагЄвга  ¬Ґв®¤  ¬®­Ёв®а , ॠ«Ё§го饣® ўл室 Ё§
ЄаЁвЁзҐбЄ®Ј® гз бвЄ  ¬®¦Ґв в®Ј¤  ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
ЋЇаҐ¤Ґ«Ґ­ЁҐ ­®¬Ґа  i дЁ«®б®д , ᮮ⢥вбвўго饣® ⥪г饬г
Їа®жҐббг;
‚Ё«Є [i] := бў®Ў®¤­ ;
‚Ё«Є [(i+1)mod5] := бў®Ў®¤­ ;
If Џа®жҐбб б ­®¬Ґа®¬ (i+1)mod5 ў ®зҐаҐ¤Ё

‚Ё«Є [(i+2)mod5] бў®Ў®¤­ 
Then Begin
‚Ё«Є [(i+1)mod5] := § ­пв ;
‚Ё«Є [(i+2)mod5] := § ­пв ;
ЂЄвЁўЁ§Ёа®ў вм Їа®жҐбб б ­®¬Ґа®¬ (i+1)mod5;

- 27 -
End {If};
If Џа®жҐбб б ­®¬Ґа®¬ (i+4)mod5 ў ®зҐаҐ¤Ё

‚Ё«Є [(i+4)mod5] бў®Ў®¤­ 
Then Begin
‚Ё«Є [(i+4)mod5] := § ­пв ;
‚Ё«Є [i] := § ­пв ;
ЂЄвЁўЁ§Ёа®ў вм Їа®жҐбб б ­®¬Ґа®¬ (i+4)mod5;
End {If};
‚ ¤ ­­®© § ¤ зҐ гз йЁ¬бп ­Ґ®Ўе®¤Ё¬® ᮧ¤ вм ®ЎкҐЄв-­ б«Ґ¤­ЁЄ
®ЎкҐЄв  Process ¬г«мвЁ§ ¤ з­®Ј® п¤а  MultiObj, ¤®Ў ўЁў ў
¤ҐбЄаЁЇв®а Ї®«Ґ, Ј¤Ґ Ўг¤Ґв еа ­Ёвмбп ­®¬Ґа Їа®жҐбб -дЁ«®б®д .

я2‡ ¤ з  6. ЊЋ„…‹њ Љ‹€…Ќ’-‘…ђ‚…ђ

€¬ҐҐвбп N Їа®жҐбб®ў-Є«ЁҐ­в®ў Ё ®¤Ё­ Їа®жҐбб-бҐаўҐа.
Џа®жҐббл-Є«ЁҐ­вл ў б«гз ©­лҐ ¬®¬Ґ­вл ўаҐ¬Ґ­Ё § Їа иЁў ов
®Ўб«г¦Ёў ­ЁҐ г Їа®жҐбб -бҐаўҐа . …б«Ё Їа®жҐбб-бҐаўҐа бў®Ў®¤Ґ­, в®
®­ ўлЇ®«­пҐв ®Ўб«г¦Ёў ­ЁҐ Є«ЁҐ­в  Ё ЇҐаҐе®¤Ёв ў б®бв®п­ЁҐ
®¦Ё¤ ­Ёп § Їа®б .
…б«Ё Їа®жҐбб-Є«ЁҐ­в § Їа иЁў Ґв ®Ўб«г¦Ёў ­ЁҐ, Є®Ј¤ 
Їа®жҐбб-бҐаўҐа § ­пв, в® Є«ЁҐ­в ЇаЁ®бв ­ ў«Ёў Ґв бў®Ґ ўлЇ®«­Ґ­ЁҐ
Ё ¦¤Ґв ®Ўб«г¦Ёў ­Ёп ў ®зҐаҐ¤Ё.
’ॡгҐвбп § Їа®Ја ¬¬Ёа®ў вм § ¤ зг, ­ ЇЁб ў ¬®­Ёв®а
"‘ҐаўҐа", ॠ«Ё§гойЁ© ®Ўб«г¦Ёў ­ЁҐ Є«ЁҐ­в®ў ў Ї®ап¤ЄҐ ®зҐаҐ¤­®бвЁ
Ёе § Їа®б®ў.
я1ЊҐв®¤ЁЄ  аҐиҐ­Ёп

‚Ґ¤Ґ¬ ¤®Ї®«­ЁвҐ«м­лҐ гб«®ўЁп:
- Їа®жҐбб-бҐаўҐа § ЇгбЄ Ґвбп ЇҐаўл¬ Ё ¦¤Ґв § Їа®б®ў ­ 
®Ўб«г¦Ёў ­ЁҐ;
- Їа®жҐбб-Є«ЁҐ­в Ў«®ЄЁагҐвбп ­Ґ в®«мЄ® ЇаЁ ®¦Ё¤ ­ЁЁ
®Ўб«г¦Ёў ­Ёп, ­® Ё ­  ўаҐ¬п б ¬®Ј® ®Ўб«г¦Ёў ­Ёп.
‘вагЄвга  Їа®Ја ¬¬л ¤«п ®ЇЁб ­­ле гб«®ўЁ© ¬®¦Ґв ўлЈ«п¤Ґвм
б«Ґ¤гойЁ¬ ®Ўа §®¬.
Program Lab6;
Uses MultiObj;
Type
PMonitor = ^TMonitor;

- 28 -
TMonitor = Object
Cl_List, {®зҐаҐ¤м Є«ЁҐ­в®ў, ¦¤гйЁе ®Ўб«г¦Ёў ­Ёп}
Cl_s_List, {®зҐаҐ¤м Ё§ ®¤­®Ј® Є«ЁҐ­в , ®Ўб«г¦Ёў Ґ¬®Ј®
ў ¤ ­­л© ¬®¬Ґ­в}
Sr_List : List; {®зҐаҐ¤м, ў Є®в®а®© бҐаўҐа ¦¤Ґв
§ Їа®б®ў ­  ®Ўб«г¦Ёў ­ЁҐ}
Constructor Init;
Destructor Done;
Procedure Request; {§ Їа®б Є«ЁҐ­в  ­  ®Ўб«г¦Ёў ­ЁҐ}
Procedure Waiting; {®¦Ё¤ ­ЁҐ бҐаўҐа®¬ § Їа®б®ў}
End {TMonitor};
{--ЊҐв®¤л ¬®­Ёв®а  а §а Ў влў овбп гз йЁ¬Ёбп--}
Var
Monitor : PMonitor;
Procedure Client_1;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬п ¤® § Їа®б  ­  ®Ўб«г¦Ёў ­Ёп}
Monitor^.Request;
End {While};
End {Client_1};
Procedure Client_2;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬п ¤® § Їа®б  ­  ®Ўб«г¦Ёў ­Ёп}
Monitor^.Request;
End {While};
End {Client_2};
Procedure Client_3;
Begin
While True Do Begin
{б«гз ©­®Ґ ўаҐ¬п ¤® § Їа®б  ­  ®Ўб«г¦Ёў ­Ёп}
Monitor^.Request;
End {While};
End {Client_3};
{Џа®жҐббл-Є«ЁҐ­вл ®в«Ёз овбп ¤агЈ ®в ¤агЈ  в®«мЄ® Є®®а¤Ё­ в ¬Ё
ўлў®¤  ­  нЄа ­ бў®Ёе б®бв®п­Ё© - "а Ў®в  ў­Ґ ®Ўб«г¦Ёў ­Ёп",
"®¦Ё¤ ­ЁҐ ®Ўб«г¦Ёў ­Ёп", "®Ўб«г¦Ёў ­ЁҐ"}
Procedure Server;

- 29 -
Begin
While True Do Begin
Monitor^.Waiting;
{б«гз ©­®Ґ ўаҐ¬п ®Ўб«г¦Ёў ­Ёп Є«ЁҐ­в }
End {While};
End {Server};
Procedure KeyManager;
{Џа®жҐ¤га  KeyManager  ­ «®ЈЁз­  б § ¤ з ¬Ё 3, 4 Ё 5}
End {KeyManager};
Begin
Monitor := New(PMonitor, Init);
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Server;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал KeyManager;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Client_1;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Client_2;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Client_3;
Ќ з вм а Ў®вг п¤а ;
Dispose(Monitor, Done);
End {Lab6}.

‘вагЄвга  ¬Ґв®¤  TMonitor.Request, Є®в®ал© ўлЇ®«­пҐвбп
Є«ЁҐ­в®¬, ¬®¦Ґв Ўлвм ЇаҐ¤бв ў«Ґ­  б«Ґ¤гойЁ¬ ®Ўа §®¬.
If ‘ҐаўҐа бў®Ў®¤Ґ­ Then Begin
ЂЄвЁўЁ§ жЁп бҐаўҐа ;
End {If};
‚бв вм ў ®зҐаҐ¤м ®¦Ё¤ ­Ёп ®Ўб«г¦Ёў ­Ёп;
ЏҐаҐ¤ з  гЇа ў«Ґ­Ёп;
‘вагЄвга  ¬Ґв®¤  TMonitor.Waiting, Є®в®ал© ўлЇ®«­пҐвбп
бҐаўҐа®¬, ¬®¦Ґв ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
If ЋЎб«г¦Ґ­ Їа®жҐбб Then Begin
ЂЄвЁўЁ§Ёа®ў вм ®Ўб«г¦Ґ­­л© Їа®жҐбб;
End {If};
If ЌҐв Є«ЁҐ­в®ў, § Їа иЁў ойЁе ®Ўб«г¦Ёў ­ЁҐ Then Begin
Ѓ«®ЄЁа®ў ­ЁҐ Їа®жҐбб -бҐаўҐа ;
ЏҐаҐ¤ з  гЇа ў«Ґ­Ёп;
End {If};
ЏҐаҐў®¤ Їа®жҐбб , ЇҐаў®Ј® ў ®зҐаҐ¤Ё ®¦Ё¤ ­Ёп ®Ўб«г¦Ёў ­Ёп, ў
®зҐаҐ¤м ®Ўб«г¦Ёў Ґ¬ле Їа®жҐбб®ў;
“з йҐ¬гбп ЇаҐ¤бв®Ёв ॠ«Ё§®ў вм Їа®Ја ¬¬г, ўлў®¤п ­  нЄа ­

- 30 -
б®бв®п­Ёп ўбҐе Їа®жҐбб®ў Ё ўаҐ¬п, ®б⠢襥бп ¤® ЇҐаҐе®¤  ў ¤агЈ®Ґ
б®бв®п­ЁҐ. Ђ в Є¦Ґ аҐиЁвм § ¤ зг б гзҐв®¬ ­ҐбЄ®«мЄЁе
®Ўб«г¦Ёў ойЁе Їа®жҐбб®ў.

я2‡ ¤ з  7. ЊЋ„…‹њ ”“ЌЉ–€ЋЌ€ђЋ‚ЂЌ€џ ‹€”’Ђ

‚ ¤ўгенв ¦­®¬ ¤®¬Ґ Ё¬ҐҐвбп «Ёдв. Џ бб ¦Ёал, Ї®пў«пойЁҐбп ­ 
ЇҐаў®¬ нв ¦Ґ, ¦Ґ« ов Ї®¤­пвмбп ­  ўв®а®© нв ¦,   Ї бб ¦Ёал,
Ї®пў«пойЁҐбп ­  ўв®а®¬ нв ¦Ґ, ¦Ґ« ов бЇгбвЁвмбп ­  ЇҐаўл© нв ¦.
Џ бб ¦Ёал, Ї®пў«пойЁҐбп ў® ўаҐ¬п ¤ўЁ¦Ґ­Ёп «Ёдв , ¤®«¦­л ®¦Ё¤ вм
ҐЈ® ®бў®Ў®¦¤Ґ­Ёп ў ®зҐаҐ¤Ё. ‹Ёдв ¬®Јгв § ­Ё¬ вм N Ї бб ¦Ёа®ў.
’ॡгҐвбп § Їа®Ја ¬¬Ёа®ў вм § ¤ зг, ­ ЇЁб ў ¬®­Ёв®а "‹Ёдв" Ё
®ЎҐбЇҐзЁў бЇа ўҐ¤«Ёў®Ґ ўл¤Ґ«Ґ­Ёп «Ёдв  Ї бб ¦Ёа ¬ ў § ўЁбЁ¬®бвЁ
®в Ёе Ї®пў«Ґ­Ёп ў бЁб⥬Ґ. ‹Ёдв б«Ґ¤гҐв а бб¬ ваЁў вм Є Є
Їа®жҐбб-бҐаўҐа.
я1ЊҐв®¤ЁЄ  аҐиҐ­Ёп

ЊҐв®¤ЁЄ  аҐиҐ­Ёп ўЄ«оз Ґв ў бҐЎп ®Ўйго бвагЄвгаг Їа®Ја ¬¬л Ё
б«®ўҐбв­®Ґ ®ЇЁб ­ЁҐ гб«®ўЁ© Ў«®ЄЁа®ўЄЁ Ё  ЄвЁўЁ§ жЁЁ
Їа®жҐбб®ў-Ї бб ¦Ёа®ў Ё Їа®жҐбб -«Ёдв .
‘вагЄвга  Їа®Ја ¬¬л ўлЈ«п¤Ёв б«Ґ¤гойЁ¬ ®Ўа §®¬.
Program Lab7;
Uses MultiObj;
Type
PMonitor = ^TMonitor;
TMonitor = Object
D_U_List, {ЋзҐаҐ¤м, ¦¤гйЁе ў­Ё§г}
U_D_List, {ЋзҐаҐ¤м, ¦¤гйЁе ўўҐаег}
MoveList, {ЋзҐаҐ¤м ЇҐаҐў®§Ё¬ле}
LiftList : TList; {ЋзҐаҐ¤м «Ёдв }
Constructor Init(...);
Destructor Done; Virtual;
Procedure Request_D_U;
Procedure Request_U_D;
Procedure Waiting;
End {TMonitor};
{--ЊҐв®¤л ¬®­Ёв®а  а §а Ў влў овбп гз йЁ¬Ёбп--}
Var
Monitor : PMonitor;

- 31 -
Procedure Client_D_U;
Begin
{„ўЁ¦Ґ­ЁҐ ­  ­Ё¦­Ґ¬ нв ¦Ґ}
Monitor^.Request_D_U;
{„ўЁ¦Ґ­ЁҐ ­  ўҐае­Ґ¬ нв ¦Ґ}
{‘ ¬®г­Ёз⮦Ґ­ЁҐ}
End {Client_D_U};
Procedure Client_U_D;
Begin
{„ўЁ¦Ґ­ЁҐ ­  ўҐае­Ґ¬ нв ¦Ґ}
Monitor^.Request_U_D;
{„ўЁ¦Ґ­ЁҐ ­  ­Ё¦­Ґ¬ нв ¦Ґ}
{‘ ¬®г­Ёз⮦Ґ­ЁҐ}
End {Client_U_D};
Procedure Lift;
Begin
While True Do Begin
Monitor^.Waiting;
{„ўЁ¦Ґ­ЁҐ}
End {While};
End {Lift};
Procedure KeyManager;
Begin
While True Do Begin
If Љ« ўЁи  ­ ¦ в  Then Begin
—⥭ЁҐ Є« ўЁиЁ;
Case Љ« ўЁи  Of
'Esc' : Ћбв ­®ўЁвм а Ў®вг п¤а ;
'U','u' : ‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Client_U_D;
'D','d' : ‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Client_D_U;
Else
End {Case};
End {If};
End {While};
End {KeyManager};
Begin
Monitor := New(PMonitor, Init);
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал KeyManager;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Lift;

- 32 -
Ќ з вм а Ў®вг п¤а ;
Dispose(Monitor, Done);
End {Lab7}.
‘«®ўҐбв­®Ґ ®ЇЁб ­ЁҐ § Їа®б  Ї бб ¦Ёа  ­  Ї®«м§®ў ­ЁҐ «Ёд⮬
¬®¦Ґв ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
If ‹Ёдв бў®Ў®¤Ґ­ Then Begin
ЂЄвЁўЁ§Ёа®ў вм «Ёдв;
End {If};
‚бв вм ў ®зҐаҐ¤м ®¦Ё¤ ­Ёп;
ЏҐаҐ¤ вм гЇа ў«Ґ­ЁҐ;
“б«®ўЁп дг­ЄжЁ®­Ёа®ў ­Ёп «Ёдв  Є Є Їа®жҐбб -бҐаўҐа  ¬®Јгв
ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬ ®Ўа §®¬:
If ЏҐаҐўҐ§ Ї бб ¦Ёа®ў Then Begin
ЏҐаҐў®¤ ЇҐаҐўҐ§Ґ­­ле Ї бб ¦Ёа®ў Ё§ ®зҐаҐ¤Ё ЇҐаҐў®§Ё¬ле ў
®зҐаҐ¤м Ј®в®ўле Їа®жҐбб®ў;
End {If};
If ЌҐв § пў®Є ­  ®Ўб«г¦Ёў ­ЁҐ ­Ё ­  ⥪г饬 нв ¦Ґ ­Ё ­  ¤агЈ®¬
Then Begin
Ѓ«®ЄЁа®ў ­ЁҐ;
ЏҐаҐ¤ з  гЇа ў«Ґ­Ёп;
End {If};
If ‡ пўЄ  б ⥪г饣® нв ¦  Then Begin
ЏҐаҐў®¤ ­Ґ Ў®«ҐҐ, 祬 N Їа®жҐбб®ў, Ё§ ®зҐаҐ¤Ё ¦¤гйЁе ў
®зҐаҐ¤м ЇҐаҐў®§Ё¬ле Їа®жҐбб®ў;
End {If};
“з йҐ¬гбп ЇаҐ¤бв®Ёв д®а¬ «Ё§®ў вм гб«®ўЁп Ў«®ЄЁа®ўЄЁ Ё
 ЄвЁўЁ§ жЁЁ «Ёдв  Ё Ї бб ¦Ёа®ў ¤«п ॠ«Ё§ жЁЁ Їа®Ја ¬¬л.

я2‡ ¤ з  8. ЊЋ„…‹њ ЏЂђ€ЉЊЂ•…ђ‘ЉЋ‰

Џ« ­ Ї аЁЄ¬ еҐабЄ®© ¬®¦Ґв Ўлвм ЇаҐ¤бв ў«Ґ­ б«Ґ¤го饩 б奬®©:
‡ « ®¦Ё¤ ­Ёп ‘ «®­
ЪДДДДДДДДДДДДДВДДДДДДДДї
ДД> ДД> ДД>
АДДДДДДДДДДДДДБДДДДДДДДЩ
Љ«ЁҐ­вл Їа®е®¤пв зҐаҐ§ § « ®¦Ё¤ ­Ёп ў б «®­, бваЁЈгвбп в ¬ Ё
ўл室пв. …б«Ё Ї аЁЄ¬ еҐа § ­пв ®Ўб«г¦Ёў ­ЁҐ¬ Є«ЁҐ­в , в® ¤агЈЁҐ
Є«ЁҐ­вл бв ­®ўпвбп ў ®зҐаҐ¤м ў § «Ґ ®¦Ё¤ ­Ёп, ­® а §¬Ґа ®зҐаҐ¤Ё
®¦Ё¤ ­Ёп ­Ґ ¤®«¦Ґ­ ЇаҐў®б室Ёвм N. …б«Ё ў § «Ґ ®¦Ё¤ ­Ёп N

- 33 -
Є«ЁҐ­в®ў бв®пв ў ®зҐаҐ¤Ё, ⮠ᮧ¤ Ґвбп ®зҐаҐ¤м ­  г«ЁжҐ. …б«Ё
а §¬Ґа ®зҐаҐ¤Ё ­  г«ЁжҐ а ўҐ­ M, в® ­®ўл© ¦Ґ« ойЁ© Ї®бваЁзмбп
®Ўе®¤Ёв Ї аЁЄ¬ еҐабЄго Ё ®бв Ґвбп ­Ґ®Ўб«г¦Ґ­­л¬.
Љ ¦¤л© ўл室пйЁ© Ё§ б «®­  Є«ЁҐ­в Ї®§ў®«пҐв ў®©вЁ Є
Ї аЁЄ¬ еҐаг ®¤­®¬г Є«ЁҐ­вг, ¦¤г饬㠢 § «Ґ ®¦Ё¤ ­Ёп,   в®в, ў
бў®о ®зҐаҐ¤м, Ї®§ў®«пҐв ў®©вЁ ў § « ®¦Ё¤ ­Ёп ®¤­®¬г Є«ЁҐ­вг,
¦¤г饬㠭  г«ЁжҐ.
’ॡгҐвбп § Їа®Ја ¬¬Ёа®ў вм § ¤ зг, ­ ЇЁб ў ¬®­Ёв®а
"Џ аЁЄ¬ еҐа", ॣ« ¬Ґ­вЁагойЁ© ¤®бвгЇ Є«ЁҐ­в®ў ў § « ®¦Ё¤ ­Ёп Ё ў
б «®­. Џ аЁЄ¬ еҐа ЇаҐ¤бв ў«пҐв б®Ў®© Їа®жҐбб-бҐаўҐа.

я1ЊҐв®¤ЁЄ  аҐиҐ­Ёп

‘вагЄвга  Їа®Ја ¬¬л, ॠ«Ё§го饩 § ¤ зг, ¬®¦Ґв Ё¬Ґвм
б«Ґ¤гойЁ© ўЁ¤.
Program Lab8;
Uses MultiObj;
Type
PMonitor = ^TMonitor;
TMonitor = Object
ServList, {ЋзҐаҐ¤м, ў Є®в®а®© Ї аЁЄ¬ еҐа ¦¤Ґв
 ЄвЁўЁ§ жЁЁ}
HallList, {ЋзҐаҐ¤м Є«ЁҐ­в®ў ў § «Ґ ®¦Ё¤ ­Ёп}
StrList, {ЋзҐаҐ¤м Є«ЁҐ­в®ў ­  г«ЁжҐ}
ClList : TList; {ЋзҐаҐ¤м, ў Є®в®а®© Є«ЁҐ­в ­ е®¤Ёвбп,
Ї®Є  ҐЈ® бваЁЈгв}
Nh, {Љ®«ЁзҐбвў® Є«ЁҐ­в®ў ў ®зҐаҐ¤Ё § «  ®¦Ё¤ ­Ёп}
Ns : Integer; {Љ®«ЁзҐбвў® Є«ЁҐ­в®ў ў ®зҐаҐ¤Ё ­  г«ЁжҐ}
Constructor Init(...);
Destructor Done; Virtual;
Function InStreet : Boolean;
Procedure InHall;
Procedure Waiting;
End {TMonitor};
{--ЊҐв®¤л ¬®­Ёв®а  а §а Ў влў овбп гз йЁ¬Ёбп--}
Var
Monitor : PMonitor;
Procedure Client;
Begin

- 34 -
{„ўЁ¦Ґ­ЁҐ Є § «г ®¦Ё¤ ­Ёп}
If Monitor^.InStreet Then Begin
{„ўЁ¦Ґ­ЁҐ Є б «®­г}
Monitor^.InHall;
{„ўЁ¦Ґ­ЁҐ Ё§ б «®­ }
End Else Begin
{„ўЁ¦Ґ­ЁҐ Ї® ®Ўе®¤г Ї аЁЄ¬ еҐабЄ®©}
End {If};
{‘ ¬®г­Ёз⮦Ґ­ЁҐ}
End {Client};
Procedure Server;
Begin
While True Do Begin
Monitor^.Waiting;
{‘«гз ©­®Ґ ўаҐ¬п ®Ўб«г¦Ёў ­Ёп Є«ЁҐ­в }
End {While};
End {Server};
Procedure KeyManager;
Begin
While True Do Begin
If Љ« ўЁи  ­ ¦ в  Then Begin
—⥭ЁҐ Є« ўЁиЁ;
Case Љ« ўЁи  Of
'Esc' : Ћбв ­®ўЁвм а Ў®вг п¤а ;
'C','c' : ‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Client;
Else
End {Case};
End {If};
End {While};
End {KeyManager};
Begin
Monitor := New(PMonitor, Init);
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал KeyManager;
‘®§¤ вм Їа®жҐбб Ё§ Їа®жҐ¤гал Server;
Ќ з вм а Ў®вг п¤а ;
Dispose(Monitor, Done);
End {Lab8}.
‘«®ўҐбв­®Ґ ®ЇЁб ­ЁҐ ¬Ґв®¤  ¬®­Ёв®а , ¬®¤Ґ«Ёаго饣® ¤Ґ©бвўЁп
Ї аЁЄ¬ҐеҐа  (Їа®жҐбб -бҐаўҐа ), ¬®¦Ґв ўлЈ«п¤Ґвм б«Ґ¤гойЁ¬

- 35 -
®Ўа §®¬:
If ЋЎб«г¦Ё« Є«ЁҐ­в  Then Begin
ЂЄвЁўЁ§ жЁп нв®Ј® Є«ЁҐ­в ;
End {If};
If ЌҐв Є«ЁҐ­в®ў Then Begin
Ѓ«®ЄЁа®ў ­ЁҐ ў ®зҐаҐ¤Ё Ї аЁЄ¬ еҐа ;
ЏҐаҐ¤ з  гЇа ў«Ґ­Ёп;
End {If};
ЏҐаҐў®¤ Є«ЁҐ­в  Ё§ ®зҐаҐ¤Ё ®¦Ё¤ ­Ёп ў б «®­Ґ ў ®зҐаҐ¤м
®Ўб«г¦Ёў Ґ¬ле;
‘«®ўҐбв­®Ґ ®ЇЁб ­ЁҐ ¬Ґв®¤  TMonitor.InStreet ўлЈ«п¤Ёв
б«Ґ¤гойЁ¬ ®Ўа §®¬:
If Љ®«ЁзҐбвў® Є«ЁҐ­в®ў, ¦¤гйЁе ў ®зҐаҐ¤Ґ ­  г«ЁжҐ, Ў®«миҐ, 祬 Њ
Then Begin
InStreet := False;
End Else Begin
If Љ®«ЁзҐбвў® Є«ЁҐ­в®ў, ¦¤гйЁе ­  г«ЁжҐ, Ў®«миҐ, 祬 0 €‹€
Љ®«ЁзҐбвў® Є«ЁҐ­в®ў, ¦¤гйЁе ў § «Ґ ®¦Ё¤ ­Ёп, а ў­® N
Then Begin
Ѓ«®ЄЁа®ў ­ЁҐ ў ®зҐаҐ¤Ё Є«ЁҐ­в®ў ­  г«ЁжҐ;
ЏҐаҐ¤ з  гЇа ў«Ґ­Ёп;
End {If};
InStreet := True;
End {If};
‘«®ўҐбв­®Ґ ®ЇЁб ­ЁҐ ¬Ґв®¤  TMonitor.InHall ўлЈ«п¤Ёв
б«Ґ¤гойЁ¬ ®Ўа §®¬:
If Џ аЁЄ¬ еҐа бў®Ў®¤Ґ­ Then Begin
ЂЄвЁўЁ§ жЁп Ї аЁЄ¬ еҐа ;
End {If};
Ѓ«®ЄЁа®ў ­ЁҐ ў ®зҐаҐ¤Ё Є«ЁҐ­в®ў ў § «Ґ ®¦Ё¤ ­Ёп;
ЂЄвЁўЁ§ жЁп Є«ЁҐ­в , ЇҐаў®Ј® ў ®зҐаҐ¤Ё ­  г«ЁжҐ;
“з йҐ¬гбп ­Ґ®Ўе®¤Ё¬® ॠ«Ё§®ў вм ЇаҐ¤бв ў«Ґ­­лҐ ®ЇЁб вҐ«м­лҐ
гб«®ўЁп ў Їа®Ја ¬¬Ґ,   § вҐ¬ ¤®Ї®«­Ёвм Їа®Ја ¬¬г ўв®ал¬
Їа®жҐбᮬ-Ї аЁЄ¬ еҐа®¬ Ё гЎҐ¤Ёвмбп ў Ї®ўл襭ЁЁ бЄ®а®бвЁ
®Ўб«г¦Ёў ­Ёп Є«ЁҐ­в®ў.







я2‘®¤Ґа¦ ­ЁҐ

ЋЃ™Ђџ •ЂђЂЉ’…ђ€‘’€ЉЂ ‡Ђ„ЂЌ€‰...............................3

‡ ¤ з  1. ЊЋ„…‹њ †…‹…‡ЌЋ„ЋђЋ†ЌЋѓЋ Џ…ђ…ѓЋЌЂ.................5

‡ ¤ з  2. ЊЋ„…‹њ „ЋђЋ†ЌЋѓЋ Џ…ђ…Љђ…‘’ЉЂ ...................11

‡ ¤ з  3. ЊЋ„…‹њ —€’Ђ’…‹…‰ € ђ…„ЂЉ’ЋђЋ‚...................15

‡ ¤ з  4. ЊЋ„…‹њ ЌЂ‡ЌЂ—…Ќ€џ Ћ„ЌЋђЋ„Ќ›• ђ…‘“ђ‘Ћ‚...........20

‡ ¤ з  5. ЊЋ„…‹њ ЋЃ…„Ђћ™€• ”€‹Ћ‘Ћ”Ћ‚......................23

‡ ¤ з  6. ЊЋ„…‹њ Љ‹€…Ќ’-‘…ђ‚…ђ............................27

‡ ¤ з  7. ЊЋ„…‹њ ”“ЌЉ–€ЋЌ€ђЋ‚ЂЌ€џ ‹€”’Ђ...................30

‡ ¤ з  8. ЊЋ„…‹њ ЏЂђ€ЉЊЂ•…ђ‘ЉЋ‰...........................32










ђҐ¤ Єв®а ќ.Љ.„®«Ј в®ў
‹ЁжҐ­§Ёп ‹ђ N 020617 ®в 10.08.92
_____________________________________________________________
Џ®¤ЇЁб ­® ў ЇҐз вм . .97. ”®а¬ в 60е84 1/16. Ѓг¬ Ј  вЁЇ.N2.
ЏҐз вм ®дбҐв­ п. “б«.ЇҐз.«. 2,09. “з.-Ё§¤.«. 2,25.
’Ёа ¦ 65 нЄ§. ‡ Є.
€§¤ вҐ«мбЄ®-Ї®«ЁЈа дЁзҐбЄЁ© 業ва ѓќ’“
_____________________________________________________________
197376, ‘.-ЏҐвҐаЎгаЈ, г«.Џа®д.Џ®Ї®ў , 5

- 37 -