Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування icon

Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування




Скачати 183.27 Kb.
НазваТема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування
Дата конвертації20.02.2013
Розмір183.27 Kb.
ТипДокументи


Дата:

Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування.

Мета:

Тип уроку: засвоєння нових знань.


Хід уроку

  1. Організаційний етап

  2. Вивчення нового матеріалу


Поняття про мови програмування

При підготовці алгоритмів для їх виконання на комп'ютері на перший план виходить необхідність точного запису команд, зрозумілих виконавцю, що не залишає місця для довільного їх трактування.

Мовою програмування називається фіксована система позначень для опису алгоритмів і структур даних.

Мова більшості сучасних комп'ютерів досить «скупа» і складається з команд-наказів типу «виділити пам'ять певного розміру», «прочитати інформацію з певного місця пам'яті», «запам'ятати інформацію у певному місці пам'яті», «додати два числа», «перейти до виконання наступної команди, прочитавши її з певного місця пам'яті», «порівняти два числа» тощо. Як правило, команд всього декілька сотень. Всі вони настільки прості, що можуть бути ефективно реалізовані апаратурою комп'ютера. Набір цих команд, що носить назву мови машинних кодів, з точки зору їх функціональності є повним. Використовуючи команди з цього набору, тобто користуючись заданою системою команд, можна описати будь-який алгоритм. Однак такий запис для складних задач настільки громіздкий, що у людини буде дуже мало шансів зробити його безпомилковим.

Існує два виходи з цієї ситуації. Перший пов'язаний із ство­ренням більш складних комп'ютерних систем, тобто з апаратним забезпеченням, що зможе реалізувати значно ширший і складніший набір команд. Другий шлях - це розробка програмного забезпе­чення, яке б дозволяло використовувати складні з точки зору комп'ютера, але більш зрозумілі з точки зору людини команди, як, наприклад, розгалуження та цикли. Але при цьому виникає необ­хідність створення спеціальних програм-перекладачів, функцією яких є перетворення програм із вхідної мови програмування в еквівалентні програми, що може виконати комп'ютер. Такі про­грами називаються трансляторами, мова про них буде йти далі. Саме другий шлях отримав активний розвиток.

На сьогоднішній день розроблена чимала кількість різних мов програмування. Окрім того ще відомі різні версії одних і тих самих мов програмування. Чим пояснюється така їх кількість? Чому не можна обійтися однією або принаймні декількома? Справа в тому, що на сьогоднішній день сфери використання комп'ютерів такі різноманітні і такі специфічні, що врахувати усі в одній мові просто неможливо. Тому кожна мова програмування орієнтована на пев­ний клас задач. Для програмування економічних задач використо­вуються мови програмування dBase, Paradox, Clipper; для розра­хункових задач досить скористатися можливостями мов Basic, Pascal; для доступу до більш «глибоких» можливостей комп'ютера бажано скористатися можливостями мов Асемблер та Сі.


Класифікація мов програмування

Існують різні класифікації мов програмування. Згідно найпо­ширенішої з них всі мови програмування поділяються на мови низького та високого рівня.

^ Мови машинних команд (кодів) даної моделі комп'ютера, які сприймаються ним безпосередньо, називаються мовами низького рівня або машинними мовами.


До групи мов програмування низького рівня відносяться:

мова мікрокоманд, яка задає найпростіші передачі даних між оперативною пам'яттю та процесором, між самими регістрами (комірками) процесора тощо;

машинна мова, кожна команда якої описується послідовні­стю мікрокоманд;

асемблер - мова символічного кодування.

Перші дві мови погано налаштовані на використання люди­ною, оскільки їх команди задаються послідовністю нулів та одиниць. Оператори асемблера - це ті ж машинні команди, але вони мають символічні (мнемонічні) назви, а в якості операндів використовуються не конкретні адреси комірок оперативної пам'яті, а їх імена.

Всі мови програмування низького рівня орієнтовані на певний тип комп'ютерів і в цьому смислі спеціалізовані саме для них.

^ Мовами програмування високого рівня називаються мови, на яких програми складаються з операторів.

Для всіх мов високого рівня загальним є те, що вони орієнто­вані не на систему команд того чи іншого комп'ютера, а на загальну систему операторів, характерних для запису певного класу алгоритмів. Типовими прикладами операторів таких мов можуть бути оператори присвоювання, умовні оператори, оператори циклів тощо. Перш ніж комп'ютер виконуватиме програму, написану мовою високого рівня, необхідно перекласти її на машинну мову, яка відповідає даному типу комп'ютера. Для цього призначені спеціальні програми - транслятори, про які детальніше розмова йтиметься далі.

Мови програмування Basic, Pascal та Сі називаються мовами програмування високого рівня, тому що їх конструкції максима­льно наближені до звичайних розмовних мов і дуже зручні та зрозумілі людині.

Ми розглянули одну із традиційних класифікацій мов програ­мування, в основі якої лежить виразна потужність мови. Однак існують класифікації і за іншими ознаками. Одна з них - це класифікація, відповідно до якої мови програмування поділяються на обчислювальні та логічні. Практично всі розглянуті вище мови програмування є обчислювальними. Якщо ж говорити про логічні мо^и, то слід згадати про Лісп (List Processing Language), Пролог (Programming of Logic).

Мова Лісп створена в 1965 p. американським професором Джоном Маккарті для дослідження проблем штучного інтелекту і стала основою ряду програмних реалізацій інтелектуальних систем. На відміну від Ліспа Пролог - це європейська мова, яка базується на логічному численні. її розробив А.Колмерауер у 1972 р. в Марсельському університеті.

Існує також і «прикладна» класифікація мов програмування, яка вже була розглянута вище. Згідно з цією класифікацією всі мови програмування поділяють на групи за галузями застосування.

Процедурна мова програмування

Більшість мов програмування високого рівня відноситься до процедурних мов. В основному це мови програмування для розв'я­зування обчислювальних задач, а саме Пейсик, Паскаль, Сі тощо.

^ Мови програмування, в яких реалізована можливість покрокової деталізації алгоритму, низхідного та висхідного програмування, називаються процедурними мовами.

В зазначених вище мовах основним методом є розбиття задачі на окремі кроки та їх послідовний опис. Покрокова деталізація алгоритму відбувається до того моменту, поки ми не отримаємо елементарні дії розв'язування окремих фрагментів задач, які можна буде записати у вигляді команд, допустимих в даній мові.

Ще одна особливість процедурних мов програмування полягає в тому, що команди в програмах, записаних процедурними мовами, виконуються послідовно. Це означає, що результати виконання всіх попередніх операцій вже отримані і зворотної сили вони не мають. Оскільки вміст пам'яті, де зберігається вся проміж­на інформація виконуваних операцій, постійно поновлюється і попередня інформація не зберігається, то відмінити раніше виконані команди неможливо. Мови програмування такого виду ще називаються алгоритмічними.

В основі процедурних мов програмування закладені принципи структурного програмування. Розглянемо відомий вже нам приклад фрагмента алгоритму пошуку найбільшого спільного дільника:

while

х<>у do

if х>у then

х:=х-у

else

у:=у-х;

Наведений запис зовні являє собою одну дію - повторення типу «поки» (while). Але цей зовнішній оператор містить в собі підпорядковані оператори, що міняють значення х або у. Така ієрархія операторів відображає структуру, що лежить в основі алгоритму. її наочно видно завдяки структурі мови програмування, що допускає вкладеність компонентів програми один в один, використання їх послідовно один за одним. Алгоритми, які ми отримуємо в

результаті, мають чітку і ясну структуру. В тексті програми така вкладеність чи підпорядкованість відображається зсувами рядків/

^ Ключовою ідеєю структурного побудови алгоритму відображення структури алгоритму в структурі

тексту програми. Справді, неможливо зрозуміти смисл програми, якщо зникне її структура, як це буває, коли компілятор видає машинний код. Ми повинні розуміти, що програма некорисна, якщо людина не може в ній розібратися і пересвідчитися в її правильності.

Логічне програмування

Ідея використання математичної логіки в якості мови програ­мування була запропонована Р.Ковальським в Англії на початку 70-х років XX століття. Логічне програмування виникло в основному завдяки успіхам в автоматичному доведенні теорем.

Основною метою математичної логіки є забезпечення певної системи формальних позначень для відображення міркувань. Одним з розділів математичної логіки є логіка висловлювань.

Логіка висловлювань - це розділ математичної логіки, який вивчає висловлювання, що розглядаються з боку їх логічних значень - істинності та хибності - і логічних операцій над ними.

Основним елементом логіки висловлювань є висловлювання і операції над ними. В логіці висловлювань є тільки стверджувальні речення, які можуть бути істинні або хибні, а не і те і інше одночасно. Кожне таке стверджувальне речення називається вис­ловлюванням. Наприклад, «Петренко є учень», «Іваненко вивчає інформатику». Із простих висловлювань можна будувати складені. Наприклад, «Петренко є учень і ходить до школи», «Якщо Іваненко ходить до школи, то він вивчає інформатику».

В логіці висловлювань використовується п'ять основних логічних операцій:

«Ні» - заперечення;

«І» - кон'юнкція;

«Або» -диз'юнкція;

«Якщо то ...» - висновок (імплікація);

«Тоді і тільки тоді» - еквівалентність.

Логічне програмування - це запис задачі мовою математичної логіки у вигляді набору висловлювань, відношень між висловлюваннями та правил виведення одних висловлювань з інших.

В результаті задача, записана в термінах логічного програму­вання, перевіряється на справедливість сформульованих висловлювань.

Як зазначалося вище, основні ідеї логічного програмування вперше були успішно реалізовані А. Колмерауером у Франції у формі мови програмування Пролог. Терміни «логічне програмування» та «програмування мовою Пролог» часто використовують як ідентичні.

Пролог був прийнятий в якості базової мови в японській програмі створення комп'ютера п'ятого покоління, що орієнтована на дослідження методів логічного програмування та штучного інтелекту, а також на розробку нового покоління комп'ютерів, спеціально призначених для реалізації даних методів. Назва мови Пролог утворена із слів Програмування ЛОГічного або Програ­мування в термінах ЛОГіки (PROLOG - PROgramming in LOGic).

Логічне програмування мовою Пролог докорінно відрізня­ється від програмування алгоритмічними мовами. Програма мовою Пролог описує не процедуру розв'язування задачі, як це має місце в традиційних алгоритмічних мовах типу Бейсик, Паскаль, Сі і т.п., а логічну модель предметної області, що включає в себе деякі факти відносно властивостей предметної області і відношень між об'єктами в цій області, а також правила виведення нових властивостей і відношень із вже заданих.

^ Програма мовою Пролог складається із множини тверджень, кожне з яких є або фактом, або правилом і одного цільового твердження. Правило вказує, яким чином розв'язок пов'язаний із заданими фактами або як можна із заданих фактів вивести цей розв'язок. Програмування мовою Пролог включає в себе такі етапи:

  • оголошення фактів про об'єкти і відношення між ними;

  • визначення правил взаємодії об'єктів і відношень між ними;

  • формулювання питань про об'єкти і відношення між ними.

Наведемо приклад. Нехай є такі твердження:

«Іваненко - це учень»;

«Сидоренко є однолітком Іваненка»;

«Петренко є однолітком Сидоренка»;

«Об'єкт є учнем за умови, що він є однолітком учня».

Перші три елементи даних є фактами, "Четвертий - правилом. Якщо ввести таке цільове твердження: «Учнями є:»,-то отримаємо відповідь, що Іваненко, Сидоренко, Петренко - учні, причому Іваненко є учнем за визначенням, а Сидоренко та Петренко - внаслідок виведення.

Отже, програма мовою Пролог дуже схожа на гіпотезу про деяку предметну галузь, а питання - на теорему, яку необхідно довести.

Підведемо підсумок. На відміну від процедурного програму­вання, програма мовою Пролог не виконується послідовно по кроках, оскільки не задає ніяких дій. Вміст Пролог-програми - це сукупність фактів та зв'язків між ними. Тому програмування на Пролозі полягає у передачі комп'ютеру сукупності інформації та наступному зверненні до нього з питаннями щодо можливих висновків із цієї інформації. І ще одна можливість: логічну програму можна використовувати для пошуку будь-якої інформації, яка може бути логічно виведена із даної програми. Пошук об'єкта, що знаходиться у заданому відношенні з іншими об'єктами, є дуже важливою властивістю логічних програм.

Об'єктно-орієнтоване програмування

Об'єктно-орієнтоване програмування (скорочено ООП) - це в наш час природний сучасний підхід до побудови складних програм і систем.

В основі об'єктно-орієнтованого програмування лежить ідея об'єднання в одній структурі даних і дій, які виконуються над ними. В термінології ООП ці дії називаються методами. При такому підході організація даних і програмна реалізація дій над ними виявляються значно сильніше пов'язаними, ніж при традиційному структурному програмуванні.

Об'єктно-орієнтоване програмування базується на трьох основних поняттях: інкапсуляції, наслідуванні, поліморфізмі.

Інкапсуляція - це комбінування даних з процедурами і функціями, які маніпулюють цими даними.

Інкапсуляцію можна уявити собі, як механізм, що об'єднує дані і процедури, які їх обробляють, в єдину структуру. В ООП кажуть, що таким чином створюється «чорний ящик», в якому сховано механізм представлення та обробки даних. Користувач може звертатися до даного об'єкту за заздалегідь визначеним правилом і, не впливаючи на об'єкт, лише користуватися ним.

Схожий механізм використовується і у стандартних бібліоте­ках мов програмування, коли ми звертаємося до функції, користу­ємося нею, не задумуючись над тим, яким саме чином вона працює.

^ Наслідування - це можливість використання вже визначених об'єктів для побудови ієрархії об'єктів, похідних від них.

Наслідування - це механізм, в результаті застосування якого один об'єкт може отримувати у спадковість всі властивості та методи іншого, додаючи до них свої характерні властивості. Кожний з «нащадків» отримує у спадковість опис даних «прабатька» і доступ до методів їх обробки. Таким чином з'являється ієрархія.

В якості прикладу можна навести такий ланцюжок: рослина > овоч> морква. В даному випадку овочу притаманні всі властивості рослини, але додаються і свої особливості, а морква є овочем, але її властивості дещо відмінні від картопляних і т. д.

^ Поліморфізм - це можливість визначення єдиної за іменем дії (процедури або функції), що може бути застосована одночасно до всіх об'єктів ієрархії наслідування.

Поліморфізм представляє собою механізм, що дозволяє одне і те ж ім'я використовувати для розв'язку схожих задач, які все ж таки в окремих деталях відмінні.

В якості прикладу можна звернутися до мови програмування Сі, де для знаходження модуля числа використовуються три різні функції: abs() - для цілих чисел, labs() - для довгих цілих, fabs() - для дробових. У відповідній моделі ООП використовуємо одну функцію з назвою abs(), що, в залежності від типу вхідних даних, сама визначає, який з трьох алгоритмів застосувати. Ще один приклад - це додавання. І 'а'+'х' , і 1+2 - операція додавання, але у двох випадках реально виконуються різні дії, хоча від користувача цей механізм прихований.

Прикладом застосування об'єктно-орієнтованого програму­вання є операційна система Windows. Коли ви відкриєте будь-яку програму Windows, то побачите вікно з великою кількістю кнопок, розділів меню, вікон редагування, списків тощо. Все це об'єкти. Причому самі по собі вони нічого не роблять, а чекають якихось Подій, наприклад, натиснення користувачем клавіш або кнопок миші, переміщення курсора і т. і. Коли відбувається подібна подія, об'єкт отримує повідомлення про це і певним чином на нього реагує: виконує деякі обчислення, розгортає список, заносить символ у вікно редагування.

^ Об'єктно-орієнтоване програмування - це нова ідеологія програмування, що базується на використанні сукупності об'єкта та подій, на які він може реагувати.

Об'єктно-орієнтований підхід може помітно спростити написання складних програм, надати їм гнучкості. Однією з його головних переваг можна назвати можливість розширення області їх застосування, не переробляючи самі програми, а лише додаючи в них нові рівні ієрархії.

Візуальне програмування

Логічною реалізацією об'єктно-орієнтованого програмування є візуальне програмування.

Включати об'єкти в свою програму можна двома способами:

  • вручну, використовуючи в програмі відповідні оператори, що насправді відбувається досить рідко;

  • шляхом візуального програмування, використовуючи заго­товки середовища - компоненти.

Ще недавно розробка графічного інтерфейса користувача була пов'язана з великими зусиллями. Програмування вручну різних звичних користувачу вікон, кнопок, меню, обробка натиснення клавіш на клавіатурі та миші, включення в програми зображень і звуку вимагало все більше і більше часу програміста. В багатьох випадках весь цей сервіс займав до 80-90% об'єму програмних кодів.

При зміні стилю графічного інтерфейса вся ця праця ставала марною, все доводилось починати спочатку.

Вихід з цієї ситуації було знайдено завдяки двом підходам. По-перше, було стандартизовано багато функцій інтерфейса, зав­дяки чому з'явилась можливість використовувати готові бібліотеки, які є, наприклад, у Windows. По-друге, з'явилося візуальне програму­вання, що дозволило звести проектування користувацького інтерфейса до простих і наочних процедур, які дають можливість за хвилини або години зробити те, на що раніше йшли місяці роботи.

В інтегрованому середовищі розробки Delphi це виглядає дуже просто. Середовище надає користувачу форми, на яких він може розміщувати компоненти, наприклад, кнопки. Форма частіше за все візуалізується на екрані монітора у вигляді вікна, яке потім і буде бачити користувач програми. На форму за допомогою миші переносяться і розміщуються піктограми компонентів, що є в наявності в бібліотеці Delphi.

За допомогою простих маніпуляцій можна змінити розміри, розташування та властивості цих компонентів. Весь цей процес . проектування візуалізується на екрані. Головне полягає в тому, що Delphi під час проектування форми і розміщення на ній компо­нентів автоматично формує коди програми, що описують даний компонент. До використаних компонентів можна приєднати оброб­ників подій, тобто власні програмні коди, що передбачають реакцію програми на роботу з вказаним компонентом.

^ Візуальне програмування - це практичне застосування ООП при використанні готових бібліотек компонен­тів, передбачених середовищем програмування.

Поняття про системи програмування

Всі розглянуті ідеологічні аспекти програмування реалізовані в конкретних мовах програмування. Але кожна мова розробляється для її подальшої реалізації на комп'ютері. Саме для такої реалізації конкретних мов з їх алфавітом, правилами запису окремих дій і розробляються системи програмування. Системи програмування входять до складу математичного забезпечення комп'ютера.

^ Система програмування - це реалізація конкретної мови програмування для певних комп'ютерних систем. Кожна мова програмування підтримана своєю системою програмування з урахуванням можливостей конкретної операційної системи. В комп'ютерах перших поколінь системи програмування мали дуже обмежені можливості, які надавали програмісту лише змогу перевести програму з алгоритмічної мови в машинний код і визначити синтаксичні помилки. Вони не містили навіть текстового редактора, тому доводилось текст програми набивати на перфо­карти за допомогою окремих пристроїв - перфораторів.

З часом системи програмування потужнішали, і зараз ми користуємося можливостями редактора текстів при наборі самої програми, збереження як тексту програми, так і її машинного коду, можливостями покрокового виконання програми для визначення логічних помилок та запуску програми на виконання.

Сучасні системи програмування доповнені розвиненим корис­тувацьким інтерфейсом, який реалізований у вигляді інтегрованих інтерактивних середовищ (ПС) або інтегрованих інструментальних оболонок (110). Такі середовища переважно забезпечують користувачу багатовіконний та багатофайловий режим роботи, використання миші, дозволяють застосовувати об'єктно-орієнтоване програмування, використовувати фрагменти програм, написаних на асемблері.

З інтегрованим інтерактивним середовищем Turbo Pascal 7.0 ми детальніше будемо знайомитись пізніше.

Поняття про інтерпретацію та компіляцію

На прикладі двох мов програмування Basic та Pascal цікаво розглянути питання про перетворення програм, написаних цими мовами, у виконуваний вигляд, тобто набір машинних кодів. Для цього існують спеціальні системні програми - транслятори (у перекладі з англійської мови translate - «перекладати»). Будь-який транслятор виконує дві основні задачі. Перша - аналіз програми, що транслюється, в результаті чого визначається її коректність. При виявленні помилок транслятор вказує на ті місця тексту програми, де порушені правила її написання.

Друга - генерація вихідної програми мовою команд комп'ютера. Транслятори є двох типів - інтерпретатори та компілятори.

Інтерпретатори перекладають по одній команді або оператору вхідної програми на машинну мову і відразу ж виконують їх. Інтерпретатор мови програмування Basic здійснює послідов­ний синтаксичний контроль операторів початкового тексту про­грами і виконання її команд (операторів).

Компілятори перекладають всю програму, написану мовою програмування високого рівня, на машинну мову, після чого програма записується в оперативну пам'ять і виконується

Компілятор мови програмування Pascal здійснює переклад всього початкового тексту програми в машинний код.

Отже, Basic - програма на етапі виконання буде виконуватися по одній команді. Тому навіть при наявності синтаксичних поми­лок в тексті та частина програми, яка передує їм, все одно буде виконана. Pascal-програма буде виконуватися лише після виправ­лення всіх синтаксичних помилок в початковому тексті.

Результат компіляції програми, тобто її машинний код, можна зберегти на зовнішньому носієві у вигляді окремого файла. Таку відкомпільовану програму можна експлуатувати без використання середовища програмування. На жаль, не всі інтерпретатори надають таку можливість. Для повторного виконання програми, написаної мовою програмування високого рівня, необхідно знову запускати інтерпретатор.





Схожі:

Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування iconЛекція №1 Тема: Програмування на object pascal в Delphi: введення План Історія розвитку Delphi 1 1 Об\'єктно-орієнтоване програмування 1
С. Яка з мов краще відповісти достатньо складно. Проте з упевненістю можна вважати, що Pascal краще за інші мови підходить для навчання...
Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування iconУроку з предмету «технологія програмування та створення програмних продуктів» Тем Програмування в об’єктно орієнтованих середовищах
Тема уроку: Програмування діалогових вікон засобами об'єктно – орієнтованого середовища Visual Basic for Applications
Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування iconЛекція №2 Тема: Програмування на Object Delphi: програмування простих обчислювальних процесів План 1 Палітру компонентів Standart 1
Тема: Програмування на Object Delphi: програмування простих обчислювальних процесів
Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування iconТема: Поняття програмування та алгоритм. Властивості алгоритмів
Програмування — процес створення комп'ютерних програм або програмного забезпечення. Програмування поєднує в собі елементи інженерії...
Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування iconСистемне програмування Питання до теоретичного екзамену
Додаткові можливості систем програмування. Приклади сучасних систем програмування
Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування iconАлгоритмічні мови та програмування Опис дисципліни
Програмування засобами мови Сі” “Системне програмування” “Об’єктно-орієнтоване програмування” “Числові методи”. В кінці 4 семестру...
Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування iconІнтерактивні технології на уроках інформатики на тему: I. Мотивація навчальної діяльності учнів
Він повідомляє учням, що на доданок до існуючих способів створення комп'ютерних об'єктів існує можливість програмувати комп'ю­терне...
Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування iconЛабораторна №7 Основи програмування
Присвоювання – найпростіше поняття програмування, але навіть і йому властиві певні тонкощі. Розглянемо приклад
Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування iconОднією з найпоширеніших мов програмування серед сучасних мов високого рівня що використовуються в пк є мова Visual basic
Ами не пишуть а проектують. Програмістів які використовують його доцільніше називати інженерами – проектувальниками програмних засобів...
Тема: Мова програмування як один із способів представлення алгоритму, класифікація мов програмування iconВступ у програмування мовою Паскаль. Загальні відомо мості про мову Паскаль
Мова паскаль є універсальною мовою програмування високого рівня. Його основи розробив Ніклаус Вірт, професор технічного університету...
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©te.zavantag.com 2000-2017
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи