SlideShare a Scribd company logo
11 in rud_2019
УДК 004:37.016 (075.3)
Р83
	 	 	 Руденко В. Д.
Р83			 Інформатика (профільний рівень) : підруч. для 11 кл. закл. загал. серед. освіти / 
В. Д. Руденко, Н. В. Речич, В. О. Потієнко. — Харків : Вид-во «Ранок», 2019. — 256 c. : іл.
			
ISBN 978-617-09-5237-0
УДК  004:37.016 (075.3)
©

Руденко В. Д., Речич Н. В.,
Потієнко В. О., 2019
© ТОВ Видавництво «Ранок», 2019ISBN 978-617-09-5237-0
Рекомендовано Міністерством освіти і науки України
(наказ Міністерства освіти і науки України від 12.04.2019 № 472)
Інтернет-підтримка	
Електронні матеріали
до підручника розміщено на сайті
interactive.ranok.com.ua
Видано за рахунок державних коштів. Продаж заборонено
Шановні	 учні	 та	 учениці!
В 11 класі завершується вивчення основ шкільного курсу інформатики. Ви
досягли певного рівня інформаційної культури і здатні самостійно оволодівати
сучасними інформаційними технологіями. Та інформатика — дуже динамічна
наука. Її подальші напрямки й темпи розвитку значною мірою визначати-
муться рівнем підготовки людей, які мають ґрунтовні знання в цій галузі.
Цього року ви будете працювати з новими програмними засобами, освої-
те розробку найпростішої бази даних навчального призначення в середовищі
Access, навчитеся створювати веб-сайти з використанням систем керування
вмістом, реалізовувати базові алгоритми засобами мови програмування Python
і середовища програмування IDLE та створювати й налаштовувати програми за
розробленими алгоритмами, опануєте основні етапи та методологію розробки
програмного забезпечення тощо.
Бажаємо вам успіхів, авторський колектив
Підручник, який ви тримаєте в руках, — ваш надійний помічник. У ньо-
му ви знайдете завдання для самостійного виконання — виконуйте їх на
комп’ютері з натхненням, повторюйте теоретичний матеріал і викладайте ос-
новні положення на папері.
Матеріали на підтримку практичних робіт ви знайдете на сайті interactive.
ranok.com.ua, де також маєте змогу пройти комп’ютерне тестування з автома-
тичною перевіркою результату.
Різнорівневі питання для перевірки знань і завдання для самостійного ви-
конання відповідають рівням навчальних досягнень:
— початковий і середній рівні
— достатній рівень
— високий рівень
У тексті також використано позначення:
— питання на повторення
— означення, висновок
— зверніть увагу
— цікаво знати
— завдання для виконання й обговорення в парах або групах
— вправи для домашнього виконання
РозділРозділРозділРозділРозділРозділРозділРозділРозділРозділ 1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ
Приклад 1. Об’єкт УЧЕНЬ може
мати такі атрибути: прізвище,
ім’я, рік народження, домашня
адреса, школа, клас, зріст, а  об’єкт
АВТОМОБІЛЬ — такі: модель,
потужність двигуна, максимальна
швидкість, вантажопідйомність.
Уперше термін database (база
даних) з’явився на початку
60­х років ХХ ст. і був уведений
у вжиток на симпозіумах,
організованих фірмою System
Development Corporation (США)
у 1964  і  1965  роках. Широкого
розповсюдження в сучасному
розумінні цей термін набув
у  1970­ті роки з  розвитком ЕОМ.
1. Загальні відомості про бази даних
1.1. Поняття бази даних і системи управління базами даних
Згадайте, з якими базами даних вам доводилося працювати
раніше. Наведіть приклади баз даних.
Нині важко уявити роботу великого супермаркету, систе-
ми резервування й продажу авіаквитків, банку, морського
порту, готельного комплексу тощо без використання інфор-
маційних систем, основою яких є бази даних (БД).
База даних  — це сховище організованої сукупності да­
них різного типу, які відображують стан об’єктів певної
предметної галузі та зв’язки між ними.
Предметною галуззю називають сферу застосування кон-
кретної БД, наприклад школа, будівельна організація, аеро-
порт, банк, поліклініка, супермаркет тощо.
Об’єктом предметної галузі є те, про кого або про що збері-
гаються дані в БД. Якщо предметною галуззю є, наприклад,
школа, то її об’єктами можуть бути учні, вчителі, директор
школи, кабінети.
Кожен об’єкт характеризується сукупністю атрибутів, або
властивостей (приклад 1). Далі об’єкти БД будемо позначати
так: великими літерами — назва об’єкта, у круглих дуж-
ках — перелік його атрибутів, які відокремлюються один
від одного комою. Наприклад, об’єкт ПОТЯГ можна позначити
так: ПОТЯГ (номер потягу, станція відправлення, час відправ-
лення, кінцева станція, час прибуття на кінцеву станцію).
За структурою даних БД поділяють на дві основні групи:
документальні й фактографічні (рис. 1.1).
У фактографічних БД кожен атрибут об’єкта має певну су-
купність значень, тобто елементів даних, які є найменшими
неподільними одиницями даних. Наприклад, атрибут Центр
(див. рис. 1.1) має значення Полтава і Хмельницький, атрибут
Площа — значення 28748 і 20600, а атрибут Районів — значен-
ня 25 і 13.
БД є однією з найважливіших складових сучасної інфор-
маційної системи, побудованих на основі комп’ютерних сис-
тем і мереж. Робота з БД у таких системах здійснюється за
допомогою спеціальної мови БД або програмного забезпечен-
ня — системи управління базами даних (СУБД).
51.1. Поняття бази даних...
Зберігають звичайні документи
(закони, інструкції до ліків, юридич-
ні документи, статті, рецепти
тощо). Найчастіше з таких БД мож­
на отримати перелік документів
або тексти документів, у  яких слід
відшукати відповідь на поставлене
запитання. Пошук може здійснюва­
тися за назвою, ключовими слова­
ми або фрагментом тексту
Документальні
Зберігають дані про об’єкти предметної галузі у  вигляді фактів
за чітко встановленою формою. Наприклад, основні дані про дві
області України можуть зберігатися за такою формою:
Область Центр
Площа,
км2 Населення Районів
Полтавська Полтава 28 748 1 466 768 25
Хмельни
­
цька
Хмельни­
цький
20 600 1 303 776 13
Фактографічні
Бази даних
Рис. 1.1. Класифікація баз даних за структурою даних
Система управління базами даних  — це інструмент,
призначений насамперед для створення структури БД,
уведення й  оновлення даних, пошуку необхідних даних
та їх опрацювання за певним алгоритмом.
Оскільки до БД може звертатися велика кількість користу-
вачів, то важливою функцією СУБД є забезпечення цілісності
й безпечності даних. Окрім функцій, безпосередньо пов’яза-
них зі створенням і підтримкою БД, окремі СУБД виконують
також функцію підтримки спеціалізованих мов програмуван-
ня, що мають загальну назву «мови баз даних». Наприклад,
СУБД Access 2016 підтримує мову запитів SQL. Отже, для ство-
рення якісних БД і кваліфікованої роботи з ними необхідно
добре опанувати СУБД.
СУБД класифікують за багатьма ознаками. До найголовні-
ших можна віднести призначення, модель даних, спосіб досту-
пу. Спрощену схему класифікації СУБД подано на рис. 1.2.
Нині фактичним стандартом мови БД є мова SQL. Однак
у деяких випадках доводиться користуватися й іншими мо-
вами програмування, наприклад мовою VBA. Розробники БД
засобами СУБД та іншими мовами програмування можуть
розробляти прикладні програми, за допомогою яких користу-
вач натисканням однієї кнопки може отримати з БД необхід-
ні дані або опрацювати їх за певним алгоритмом. Наприклад,
обчислити суму реалізованих у супермаркеті певних товарів
за добу, нарахувати заробітну платню працівникам фірми або
отримати інформацію про наявність вільних місць у готелях
міста Відня, що не дорожчі ніж 200 євро за добу.
Рис. 1.2. Класифікація систем
управління базами даних
Модель даних
Призна­чення
повнофунк
­
ціональні
серверні
мережеві
багатокористувацькі
реляційні
персональні
клієнтські
ієрархічні
СУБД
Спосіб доступу
6 Розділ 1
Отже, взаємодія користувача з БД може здійснюватися як
засобами СУБД, так і за допомогою прикладних програм, що
пояснюється схемою (рис. 1.3).
Користувач
Інтерфейс
користувача
Прикладна
програма
СУБД
База
даних
Рис. 1.3. Варіанти взаємодії користувача з базою даних
Сучасні БД мають величезні обсяги даних і зберігаються
в комп’ютерних системах на жорстких магнітних дисках. Ко-
ристувач позбавлений необхідності знати тонкощі фізичного
розміщення даних на них. Ця функція повністю реалізується
СУБД разом з операційною системою.
Важливою функцією СУБД є також керування транзакція-
ми. Транзакція — це послідовність операцій над даними, яка
сприймається СУБД як єдине ціле.
Якщо всі операції з послідовності виконано успішно, то
вважається, що й транзакцію завершено успішно. Усі зміни
даних, виконані за цією транзакцією, вносяться в зовнішню
пам’ять. Та якщо хоча б одну операцію послідовності завер-
шено невдало, транзакція вважається невиконаною і здій-
снюється відкат — скасування змін у всіх даних, виконаних
у процесі транзакції, та повернення БД до початкового стану
виконання транзакції (приклад 2).
Ще однією важливою функцією СУБД є так звана журна-
лізація, під якою розуміють облік уведених у БД змін. Перед
виконанням потрібних змін їх вносять до спеціального жур-
налу. У разі апаратного або програмного збою БД можна пов-
ністю відновити за допомогою архівної копії БД і журналу.
Одним із засобів моделювання предметної галузі на етапі
проектування БД є модель сутність — зв’язок. Основними по-
няттями такої моделі є сутність, атрибут і зв’язок.
Сутність — це деякий об’єкт реального світу. Вона має
екземпляри, які відрізняються один від одного значеннями
атрибутів. Атрибут — це властивість сутності. Зв’язок фак-
тично встановлює взаємодію між сутностями (приклад 3).
У  реляційних БД сутності відповідає таблиця, а  екзем­
пляру  — запис.
Приклад 2. Якщо в  системі
продажу квитків на потяг
замовлення на квиток із будь­
яких причин не виконано, у  БД
жодних змін щодо наявності
квитків внесено не буде, тобто
відбудеться відкат.
Приклад 3. Сутність
ХОЛОДИЛЬНИК характеризується
такими атрибутами, як назва,
маса, ціна, потужність. Конкретний
холодильник є  екземпляром
сутності ХОЛОДИЛЬНИК.
Атрибут, що є  унікальним, тобто
однозначно визначає екземпляр
сутності, називають ключем.
Запитання для перевірки знань
Що називають предметною областю БД?
Наведіть приклади властивостей об’єкта
смартфон.
Як позначають об’єкти БД?
Як поділяються БД за структурою?
Які БД називають фактографічними?
Наведіть означення БД.
Назвіть основні функції СУБД.
Поясніть сутність транзакції.
1
2
3
4
5
6
7
8
7
1.2. Поняття моделі даних
Пригадайте означення моделі та моделювання. Що, на вашу
думку, означає термін «модель даних»?
Як вже зазначалося, об’єкти предметної галузі характе-
ризуються сукупністю атрибутів (властивостей) та їх зна-
ченнями. Одне значення атрибута називають елементарною
­
одиницею даних. Наприклад, для об’єкта АВТОМОБІЛЬ його
елементарними одиницями можуть бути марка — Volkswagen
і двигун — дизельний.
Таким чином, об’єкти БД характеризуються сукупністю
елементарних одиниць даних, між якими повинні бути вста-
новлені однозначні зв’язки. Це означає, що основою будь-якої
структури даних є відображення елементарної одиниці даних
у вигляді трійки: об’єкт, атрибут об’єкта, значення атрибута, на-
приклад: учень, прізвище, Костирко; учень, клас, 11.
Дані, що зберігаються в  БД, мають певну логічну струк­
туру, тобто описуються деякою моделлю даних, яка
підтримується відповідною СУБД.
Існують різні способи відображення зв’язків між даними,
тобто різні моделі даних. Нині є три класичні моделі даних:
ієрархічна, мережева і реляційна. Розвиваються й інші моделі
даних, засновані на класичних, наприклад об’єктно-реляційна.
Таким чином, модель даних визначає, як відбувається
об’єднання даних у структури. Вона також визначає можливі
операції над даними й обмеження на їх значення.
Ієрархічна і мережева моделі засновані на таких поняттях,
як рівень, вузол, зв’язок. Приклад структури і стислий опис
сутності цих моделей подано на рис. 1.4.
Університет → факультети →
→ викладачі → студенти
Об’єкт, розміщений на вершині схе­
ми, є  головним, решта  — підлеглі.
Між головним і  підлеглим об’єктами
існує зв’язок один до багатьох. Для
кожного підлеглого об’єкта існує
тільки один головний.
Вершина
І рівень
Вузол
Ієрархічна
Економічні зв’язки між регіонами України,
між цехами машинобудівного заводу
Кожний об’єкт може мати
зв’язок з  усіма іншими. Між
об’єктами існує зв’язок багато
до багатьох. Один об’єкт може
бути як головним, так і  підлег­
лим.
Мережева
Модель даних
Рис. 1.4. Структури ієрархічної і мережевої моделей даних
У  1970-х роках американський
математик Е.  Кодд розробив
тео­ретичні основи реляційної
моделі даних. У  1981 році
за вагомий внесок у  теорію
і  практику створення реляцій­
них БД учений отримав премію
Тюрінґа.
8 Розділ 1
Із рис. 1.4 видно, що в цьому випадку ієрархічна модель
містить три рівні об’єктів. На верхньому рівні міститься
головний об’єкт, на другому рівні розташовано два вузли,
на третьому — три вузли. Зв’язки між вузлами зображено
стрілками. Як бачимо, вузли верхнього рівня мають зв’язки
з вузлами найближчого нижнього рівня. Мережева модель
містить два рівні (їх може бути скільки завгодно), на кожно-
му з яких є два вузли. Звернемо увагу на те, що в цій моделі
кожний вузол може мати зв’язок із будь-яким іншим вузлом.
Основним недоліком ієрархічних і мережевих БД є склад-
ність їх розроблення, тому нині поширення набула реляційна
модель даних — фактографічна база даних, що є набором вза-
ємопов’язаних таблиць. Основна перевага цієї моделі полягає
у простоті розроблення БД і систем управління ними.
Найпростіша БД містить одну таблицю, а складні — де-
сятки й навіть сотні таблиць. Розглянемо приклад найпро-
стішої реляційної БД, яка містить тільки одну таблицю УЧНІ
(табл. 1.1).
Таблиця 1.1. УЧНІ
Но-
мер
Прізвище
Дата
народження
Адреса Клас
Зріст,
см
1 Колот А. І. 07.02.2002 Зоряна, 2, кв. 7 10 172
2 Таранов С. О. 02.06.2003 Поштова, 3, кв. 9 9 174
3 Федорчук Ю. А. 30.05.2003 Лісова, 5 9 165
Не кожна таблиця може бути об’єктом БД. Для того щоб
таблиця стала об’єктом БД, потрібно виконати її нормаліза-
цію. Сутність нормалізації полягає в тому, що таблиця по-
винна бути перетворена відповідно до основних вимог.
Основні вимоги до таблиці як об’єкта БД такі:
• кожне поле повинно мати унікальне ім’я;
• усі поля мають бути однорідними, тобто значення еле-
ментів одного поля можуть бути лише одного типу (на-
приклад, тільки числовими, тільки рядковими);
• у таблиці не може бути однакових записів, вони мають
відрізнятися значеннями хоча б одного поля;
• таблиця повинна мати ключове поле, або ключ.
Зазвичай таблиця має унікальне поле або кілька полів,
які ідентифікують записи. Таке поле називають ключовим
(ключем). Воно використовується для швидкого пошуку да-
них, а також для зв’язування даних із різних таблиць.
Ключ, який містить тільки одне поле, називають простим,
а який містить кілька полів — складним. У таблиці УЧНІ
складним ключем можна вважати поля Прізвище і Дата наро­
дження, оскільки вони однозначно ідентифікують записи.
У таблиці може бути кілька ключів, але тільки один із них
можна визнати як первинний. Найкраще первинним ключем
вибрати простий ключ і бажано, щоб він мав цілочисловий
тип. У цьому випадку операції опрацювання даних викону-
ватимуться швидше. У таблиці УЧНІ простим є поле з іменем
Номер.
У  реляційних моделях об’єкти
і  взаємозв’язки між даними
подаються за допомогою
відношень. Порядок розміщення
рядків і  стовпців у  таблиці
є  довільним. Таблиці в  теорії
БД називають відношеннями,
рядки  — записами, а  стовпці  —
полями.
У 1973 році американський
вчений Чарльз Бахман отримав
премію Тюрінґа за керування
роботою Data Base Task
Group (робоча група по базах
даних, США), яка розробила
стандартну мову опису даних
і маніпулювання даними.
91.2. Поняття моделі даних...
У таблиці часто використовують поле — воно називаєть-
ся лічильником, яке використовується для того, щоб зробити
кожний запис унікальним. Крім того, лічильник забезпечує
нумерацію записів. У таблиці УЧНІ лічильником є поле з іме-
нем Номер.
Важливо усвідомити, що на основі однієї таблиці можна
створити БД будь-якої складності. Таблиця може містити сот-
ні полів і тисячі записів, і працювати з нею досить складно.
Щоб не сталося значного дублювання даних, для кожного
об’єкта розробляється власна таблиця. А щоб можна було
одночасно отримувати дані з кількох таблиць, потрібно вста-
новлювати зв’язки між ними (приклад 1).
В основній таблиці вибирають первинний ключ, а в допо-
міжній — зовнішній ключ. Зовнішній ключ повинен одно-
значно визначати поле основної таблиці. У ньому не може
бути даних, відсутніх у первинному ключі, інакше зв’язок
буде некоректним. Часто для забезпечення зв’язку між табли-
цями в допоміжну таблицю спеціально вводять поле з таким
самим іменем, що й ім’я первинного ключа основної таблиці.
У такому випадку деякі СУБД автоматично встановлюють
зв’язок між таблицями. Якщо імена зазначених полів різні,
то користувач повинен сам встановити зв’язок між ними. По-
яснимо сутність зв’язків між двома таблицями на прикладі 2.
Приклад 2. Нехай у БД будівельної компанії є дві таблиці:
табл. 1.2 ПОСТАЧАЛЬНИКИ і табл. 1.3 ТОВАРИ.
Таблиця 1.2. ПОСТАЧАЛЬНИКИ
Фірма Директор Телефон
РПЗ­1 Сопко А. І. 345­23­51
БУТ­5 Маслов В. М. 295­44­87
ДМК­2 Бондаренко К. О. 454­98­56
Таблиця 1.3. ТОВАРИ
Матеріал Маса, кг Фірма
Бетон 100 РПЗ­1
Бетон 120 БУТ­5
Бетон 200 ДМК­2
Цемент 50 БУТ­5
У табл. 1.2 ПОСТАЧАЛЬНИКИ первинним
ключем є поле з іменем Фірма. У табл. 1.3 ТО-
ВАРИ поле з цим іменем не може бути пер-
винним ключем, оскільки в ньому повторю-
ються назви фірм. Воно може бути зовнішнім
ключем, тому що його значення збігаються зі
значеннями однойменного поля табл. 1.2 ПО-
СТАЧАЛЬНИКИ. Більше того, вони мають
однакове ім’я. За даними цього поля можна
встановити зв’язок між двома таблицями.
Щоб дізнатися телефон і прізвище дирек-
тора фірми, яка постачає 120 тонн бетону
і 50 тонн цементу, із табл. 1.3 ТОВАРИ слід
вибрати назву фірми БУТ-5 і за її назвою
у табл. 1.2 ПОСТАЧАЛЬНИКИ знайти прі-
звище Маслов В. М., телефон 295-44-87.
Таким чином, зв’язки між таблицями дозволяють отрима-
ти дані з кількох таблиць. Окрім того, вони забезпечують ці-
лісність даних у пов’язаних таблицях, якщо з деяких причин
сталися зміни в одній таблиці.
Пояснимо сутність цілісності даних на прикладі 3 вже
розглянутих таблиць.
Приклад 1. Для БД фірми в  одній
таблиці можуть зберігатися дані
про співробітників, у  другій  —
дані про їхню заробітну платню,
у  третій  — відомості про
постачальників продукції.
Такий підхід спрощує подальшу
модифікацію БД.
Зв’язки можуть встановлюватися
між двома, трьома й  більшою
кількістю таблиць. Для вста­
новлення зв’язків між двома
таблицями одну з  них вибирають
основною (батьківською),
а  іншу  — допоміжною
(дочірньою).
10 Розділ 1
Приклад 3. Припустимо, що зв’язок між
табл. 1.2 ПОСТАЧАЛЬНИКИ і табл. 1.3 ТО-
ВАРИ не встановлено. Із табл. 1.2 випадковим
чином вилучено запис про те, що директором
фірми є Маслов В. М., а в табл. 1.3 всі дані
збереглися, тобто є цілісними. Ця ситуація
відображена у табл. 1.4 ПОСТАЧАЛЬНИКИ.
Тепер прізвище директора фірми БУТ-5
і його телефон невідомі. Вважається, що
у цьому випадку трапилося порушення ціліс-
ності даних, і ситуація має бути автоматично
виявлена.
Таблиця 1.4. ПОСТАЧАЛЬНИКИ
Фірма Директор Телефон
РПЗ­1 Сопко А. І. 345­23­51
ДМК­2 Бондаренко К. О. 454­98­56
Між таблицями можуть існувати 4 види зв’язку (рис. 1.5).
Учень може мати з  предмета «Інформатика»
багато оцінок, і кожна з цих оцінок належить
тільки одному учневі
Будь­якому запису першої таблиці відпо­
відає кілька записів другої таблиці, але
будь­якому запису другої таблиці відповідає
тільки один запис першої таблиці.
Один-до-багатьох
Учень Рябко навчається у  кількох вчителів,
і  кожний учитель працює з  кількома учнями
Будь­якому запису першої таблиці
відповідає кілька записів другої таблиці,
і  будь­якому запису другої таблиці
відповідає кілька записів першої таблиці.
Багато-до-багатьох
Водій працює тільки на одному
тролейбусі, але цим тролейбусом можуть
керувати кілька водіїв
Будь­якому запису першої таблиці відпові­
дає тільки один запис другої таблиці, але
будь­якому запису другої таблиці відповідає
кілька записів першої таблиці.
Багато-до-одного
Одним автомобілем може керувати лише
один водій, і  керувати цим автомобілем
може тільки один водій
Будь­якому запису першої таблиці відповідає
тільки один запис другої таблиці, і  навпаки.
Один-до-одного
Види зв’язку
між двома
таблицями
Рис.1.5. Види зв’язку між двома таблицями
Найчастіше між таблицями реляційної БД існує зв’язок
один­до­багатьох.
Запитання для перевірки знань
Що називають елементарною одиницею да­
них у  БД?
Назвіть основні моделі даних у  БД.
Поясніть сутність ієрархічної моделі даних.
Які існують види зв’язку між таблицями?
Поясніть сутність реляційної моделі даних.
Які поля таблиць називають ключем?
Які існують ключі в  таблицях БД?
Наведіть означення моделі даних.
Назвіть основні вимоги до таблиць БД.
У чому полягає сутність забезпечення ціліс­
ності даних БД?
1
2
3
4
5
6
7
8
9
10
11
1.3.

Основні відомості про систему управління
базами даних Access
СУБД призначені для створення й  супроводу БД. Спробуйте
конкретизувати їхні основні функції.
Історія розвитку БД і систем управління ними налічує
кілька етапів. За цей час розроблено багато СУБД, напри-
клад dBase, FoxPro, Оracle 8.4, MS SQL Server 7.0, SQL Base, MS
Access 7 та ін. Усі вони по-різному працюють із об’єкта-
ми і мають різні функціональні можливості. Та попри це
більшість із них спирається на єдиний комплекс основних
понять, що дає нам можливість розглянути одну систему
та узагальнити її поняття, прийоми й методи на весь клас
СУБД. Далі розглядатимемо одну з найпоширеніших сьогод-
ні СУБД — Access 2016.
СУБД Access 2016 входить до складу пакета Microsoft Office
і призначена для створення й підтримки роботи з реляцій-
ними БД. Розглянемо її основні об’єкти та їх призначення
(рис. 1.6).
Пошук необхідних
даних у  таблицях
та  їх опрацювання
Запити
Виведення на екран
або папір даних у зруч­
ному для користувача
вигляді
Звіти
Надання користувачеві
зручних засобів для уве­
дення даних до таблиці
Форми
Збереження даних
Таблиці
Основні об’єкти
СУБД
Access 2016
Рис.1.6. Об’єкти системи управління базами даних та їх призначення
Запуск системи Access 2016 можна здійснити стандартними
способами, що передбачені в ОС Windows.
Після запуску системи на екрані монітора з’явиться її
стартове вікно (рис. 1.7).
На ділянці вікна зліва відображено імена БД, з якими
користувач працював останнім часом, на ділянці справа —
піктограми шаблонів і піктограма порожньої БД.
У середовищі Access 2016 БД можна створити «з нуля»,
тобто повністю самостійно, або скористатися шаблонами, які
має система. Якщо наявних шаблонів не вистачає, їх мож-
на знайти в Інтернеті, скориставшись полем пошуку. Для
якісного оволодіння способами створення й супроводу БД
СУБД Access 2016 функціонує
під керуванням ОС Windows.
Системні вимоги: бажано, щоб
процесор мав частоту не менше
за 800 МГц, обсяг оперативної
пам’яті  — не менше за 512  Мб,
вільний обсяг пам’яті на жорст­
кому диску  — не менше за 2  Гб.
Рис. 1.7. Стартове вікно Access 2016
12 Розділ 1
користувачу-початківцю доцільно спочатку навчитися ство-
рювати нову БД.
Серед шаблонів в Access є Пуста база даних, яка слугує для
створення нової БД. У подальшому ми будемо використовува-
ти саме цей спосіб.
Розглянемо порядок дій для створення нової БД.
Крок 1
Клацнути піктограму Пуста база даних.
Відкриється вікно, зображене на рис. 1.8.
Рис. 1.8. Вікно для створення нової бази даних
Крок 2
У рядок Ім’я файлу ввести ім’я файла майбутньої БД, наприклад atb, нати­с­
нути кнопку Знайти розташування для бази даних, що розташована право­
руч від цього рядка.
Крок 3
У  вікні Створення бази даних, що відкриється, вибрати місце збереження
файла БД, наприклад диск F:, і  натиснути кнопку ОК, а  потім  — кнопку
Створити.
У результаті цих дій файл БД буде зареєстровано в ко-
реневому каталозі диска F:, а на екрані з’явиться вікно для
створення таблиці 1 (рис. 1.9).
Рис. 1.9. Вікно для створення таблиці
131.3. Основні відомості про...
Основним об’єктом вікна є горизонтальна стрічка, на якій
розташовано команди й інструменти Access 2016. Їх призна-
чення будемо розглядати поступово під час безпосереднього
використання. Розглянемо ті, які потрібні на цьому етапі.
У верхній частині стрічки розміщено вкладки Файл, Основ­
не, Створення та ін. Зміст команд та елементів керування, які
відображені на стрічці, залежить від того, яку на цей момент
вкладку відкрито.
На рис. 1.9 відкрито вкладку Поля, і в цьому випадку всі
команди й елементи керування згруповані у розділи Подання,
Додавання й  видалення, Форматування. Якщо відкрити іншу
вкладку, наприклад Основне, з’являться нові елементи й ко-
манди, які буде згруповано в нові розділи.
Стисло ознайомимося з призначенням вкладок вікна.
Вкладка Основне містить команди й елементи керування,
які найчастіше використовуються в процесі роботи з БД. Зо-
крема тут містяться команди для роботи з буфером обміну,
форматування тексту, сортування й фільтрування даних та ін.
Вкладка Створення містить команди для створення таб-
лиць, запитів, форм та інших об’єктів БД, вкладка Зовнішні
дані — команди для експортування й імпортування даних,
вкладка Знаряддя бази даних — команди встановлення зв’яз-
ків між таблицями, аналізування й переміщення даних між
програмами та ін.
У лівій частині екрана вміщено Усі об’єкти Access — панель
переходів, на якій можуть відображатися назви всіх створе-
них об’єктів, між якими можна здійснювати перехід простим
натисненням відповідних назв. Праворуч від панелі перехо-
дів міститься область редагування, у якій можуть одночасно
відображатися таблиці, запити та інші об’єкти БД.
Відкрити вже створену БД можна за допомогою кнопки
Відкрити на панелі швидкого доступу, а щоб закрити, потрібно
скористатися командою Закрити, що розташована на вкладці
Файл.
Запитання для перевірки знань
Назвіть основні об’єкти Access 2016 та їх
призначення.
Що розміщено в  області Усі об’єкти Access?
Як можна відкрити вже створену БД?
Поясніть сутність створення БД «з нуля».
Які основні дії можна виконувати на вклад­
ці Створення?
Які основні системні вимоги для Access 2016?
1
2
3
4
5
6
Завдання для самостійного виконання
1 Запустіть систему Access 2016. Створіть на
жорсткому диску файл БД з іменем Mybasa.
Переконайтеся, що файл зареєстровано.
2 Проаналізуйте призначення об’єктів почат­
кового вікна БД, відкриваючи різні вкладки.
3 Відкрийте та проаналізуйте призначення
команд кнопки Настроїти панель швидко-
го доступу.
4 Відкрийте і проаналізуйте вміст вкладки
Основне.
У кожний момент часу Access
2016 підтримує роботу тільки
з  однією БД. Число користувачів,
які одночасно працюють із БД,
може досягати 255. Імена об’єктів
можуть включати до 64 символів,
максимальний обсяг файла БД
становить 2  Гб.
Щоб згорнути й розгорнути
cтрічку, слід скористатися
відповідними командами кнопки
Настроїти панель швидкого
доступу, яка міститься на панелі
швидкого доступу, або натиснути
праву кнопку миші в  будь­якому
місці та виконати команду
Згорнути стрічку в  контекстному
меню, що з’явиться.
1 Запустіть систему Access 2016. Створіть на
2 Проаналізуйте призначення об’єктів почат­
3 Відкрийте та проаналізуйте призначення
4 Відкрийте і проаналізуйте вміст вкладки
14
2. Таблиці Створюючи БД Access, користувачі зберігають дані в таб-
лицях. Об’єкти БД залежать від структури таблиць, тому
розробку БД потрібно починати зі створення власне таблиць
і лише після цього можна переходити до будь-яких інших
об’єктів.
2.1. Створення й уведення структури таблиць
Поміркуйте, з  якою метою застосовуються таблиці в  БД.
Якою є основна функція таблиць?
Таблиці в середовищі Access 2016 можна створювати різ-
ними способами. Та найчастіше їх створюють розробники
БД — починаючи від проектування на папері й закінчуючи
створенням електронних працездатних таблиць. Саме такий
варіант ми розглянемо далі.
Розробці таблиць передує детальний аналіз предметної об-
ласті, визначення вимог, змісту та структури документів, які
необхідно отримати. У процесі розроблення слід визначити
кількість таблиць, а також назву, структуру і вміст кожної
таблиці. Далі порядок розроблення й опрацювання таблиць
розглянемо на прикладі предметної галузі Магазини.
Приклад 1. Припустимо, що БД деякої мережі магазинів
містить дві таблиці: табл. 2.1 МАГАЗИНИ і табл. 2.2 КАДРИ.
Визначимо їх структуру і вміст.
Таблиця 2.1. МАГАЗИНИ
Номер магазину Адреса Директор Телефон Працівників
21 вул. Паркова, 33 Коцюба П. М. 234­54­63 20
31 вул. Печерська, 21 Борзов А. С. 234­22­98 13
6 вул. Річкова, 24 Середа К. М. 234­67­92 15
Таблиця 2.2. КАДРИ
Номер
справи
Прізвище Посада
Рік
народження
Освіта Стаж Оклад
Номер
магазину
105 Сокіл Т. Л. Касир 1960 Середня 27 3500 6
132 Таран В. Д. Диспетчер 1973 Вища 15 4000 31
120 Рябко Р. П. Експерт 1981 Вища 8 4200 21
111 Семко М. М. Диспетчер 1970 Середня 16 4000 21
115 Горошко Ф. Р. Диспетчер 1975
Середня
спеціальна
17 4000 31
116 Раков Г. П. Аналітик 1965 Вища 19 4500 21
109 Шрамко Т. Л. Диспетчер 1961 Середня 24 4000 6
Головною таблицею вважатимемо табл. 2.1 МАГАЗИНИ,
а допоміжною — табл. 2.2 КАДРИ.
У  середовищі Access 2016
існують такі інструменти
створення таблиць, як
Конструктор таблиць, Майстер
таблиць, Режим таблиць.
152.1. Створення й уведення...
Найпотужнішим і універсальним інструментом створення
таблиць є Конструктор таблиць. Далі розглянемо цей спосіб,
інші способи простіші, ними можна оволодіти самостійно.
Після визначення структури таблиць слід визначити типи
полів з урахуванням тих типів, із якими може працювати
Access. У середовищі Access 2016 використовуються типи да-
них, перелік яких наведено на рис. 2.1.
Кожен із наведених типів даних має власний набір власти-
востей. Деякі властивості є унікальними, тобто містяться
тільки в одному конкретному типі даних, а деякі є загаль-
ними, тобто містяться в різних типах даних. Далі будемо ви-
користовувати в основному такі типи даних: Короткий текст,
Довгий текст, Число, Дата й  час.
Тип Короткий текст — це послідовність символів завдов-
жки від 0 до 255, а тип Довгий текст — послідовність сим-
волів до 65 536. У полі Число зберігаються числа, їх розмір
і конкретний тип визначаються значенням властивості Розмір
поля. У полях типу Дата й  час зберігаються дата й час різних
форматів.
Приклад 2. Для більш зручної роботи під час уведення
структури табл. 2.1 і табл. 2.2 доцільно створити на папері
додаткові таблиці (табл. 2.3 і табл. 2.4) з іменами полів, за-
значенням типу даних та описом.
Таблиця 2.3. Структура таблиці МАГАЗИНИ
Ім’я поля Тип даних Опис Властивості
Номер магазину Число Первинний ключ
Адреса Короткий текст 50
Директор Короткий текст 40
Телефон Короткий текст 20
Працівників Число Станом на 1 липня
Таблиця 2.4. Структура таблиці КАДРИ
Ім’я поля Тип даних Опис Властивості
Справа Число Первинний ключ
Прізвище Короткий текст 40
Посада Короткий текст 30
Рік народження Число
Освіта Короткий текст 30
Стаж Число Станом на 1 січня
Оклад Число
Номер магазину Число
На цьому підготовку таблиць для введення в комп’ютер
завершено. Перейдемо безпосередньо до створення структур
таблиць у режимі конструктора і розглянемо приклад 3.
Рис. 2.1. Типи даних Access 2016
16 Розділ 1
Приклад 3.
1. Запустимо систему Access 2016 і відкри-
ємо вже створену БД з іменем atb. Для
цього в стартовому вікні системи в об-
ласті Останні натиснемо кнопку миші на
імені atb.
2. У вікні, що відкриється, активуємо вклад-
ку Створення. Відкриється вікно зі стріч-
кою (рис. 2.2).
3. На стрічці натиснемо кнопку Конструктор
таблиць. У результаті до БД додасться
порожня таблиця (рис. 2.3).
Зверніть увагу на те, що вміст стрічки
змінився, і тепер на екрані відкрито вкладку
Конструктор (рис. 2.4).
4. Введемо ім’я поля в порожню таблицю
(див. рис. 2.3) стандартним способом.
Рис. 2.2. Вікно Access з активованою вкладкою Створення
Рис. 2.3. Порожня таблиця в режимі конструктора
Рис. 2.4. Стрічка з активованою вкладкою Конструктор
5. Введемо типи полів. Їх краще не вводити
з клавіатури, а вибрати зі списку типів
(див. рис. 2.1). Щоб відкрити цей список,
необхідно у певній клітинці поля Тип да­
них клацнути кнопку Прапорець, вибрати
потрібний тип даних і встановити його
властивість. Перелік властивостей наве-
дено нижче від імен полів (рис. 2.5).
Описувати поля не обов’язково. Опис потрі-
бен для уточнення призначення поля та його
допустимих значень.
6. Уведемо у відкриту на екрані порожню
таблицю (див. рис. 2.3) дані з табл. 2.3
Структура таблиці МАГАЗИНИ. Вміст
таблиці набуде вигляду, як наведено на
рис. 2.6.
172.1. Створення й уведення...
Рис. 2.5. Властивості полів
		
Рис. 2.6. Структура таблиці в режимі конструктора Рис. 2.7. Віконце для збереження таблиці
7. Збережемо таблицю з іменем МАГА-
ЗИНИ. Для цього на панелі швидкого
доступу натиснемо кнопку Зберегти (або
скористаємося сполученням клавіш
Ctrl+S) — відкриється віконце (рис. 2.7).
Уведемо в нього ім’я МАГАЗИНИ і клац-
немо кнопку ОК.
На екран буде виведено попередження
(рис. 2.8).
Рис. 2.8. Вікно попередження про невизначений первинний ключ
8. Клацнувши кнопку Так, ми зумовимо ство-
рення первинного ключа типу Лічильник.
Але на цьому кроці встановлювати пер-
винний ключ не обов’язково, тому клац-
немо кнопку Ні. Таблицю буде збережено,
а її ім’я з’явиться в області переходів.
9. Закриємо таблицю МАГАЗИНИ, для чо-
го відкриємо її контекстне меню і вико-
наємо команду Закрити.
10. Аналогічно введемо і збережемо структу-
ру таблиці КАДРИ. Після цього закриє-
мо таблицю.
18 Розділ 1
Зазначимо, що властивості таблиць установлюються у вікні
Аркуш властивостей, яке для відкритої таблиці доступне на
вкладці Конструктор. У цьому вікні містяться десятки назв
властивостей таблиць. Аналогічне вікно властивостей мають
і інші об’єкти БД (запити, форми, звіти). Та на цьому етапі
вивчення БД ми будемо використовувати властивості, пропо-
новані за замовчуванням.
Таблицю можна модифікувати на будь-якому кроці ство-
рення БД. Але краще це робити до встановлення зв’язків між
таблицями і введення в них даних.
Запитання для перевірки знань
Опишіть способи створення таблиць.
Чому таблиці бажано спочатку створювати
на папері?
Які дії слід виконати для збереження струк­
тури таблиці?
Що розуміють під терміном «структура таб­
лиці»?
Чому для створення таблиці найчастіше ко­
ристуються конструктором таблиць?
Назвіть основні типи даних таблиць Access.
Поясніть порядок уведення структури таб­
лиць Access.
Поясніть порядок уведення типу даних
поля та його властивостей.
1
2
3
4
5
6
7
8
Завдання для самостійного виконання
Запустіть СУБД Access 2016 і  cтворіть БД
skola з  таблицями КЛАСИ (табл. 2.5) й  УЧНІ
(табл. 2.6).
Таблиця 2.5. КЛАСИ
Клас Учнів
Класний
керівник
Займаються
спортом
9 27 Зотов А. М. 5
10 24 Дерев’янко Н. С. 11
11 25 Терещенко Б. В. 14
Розробіть на папері структуру табл. 2.5
КЛАСИ і  табл. 2.6 УЧНІ. Типи даних полів
і  їхні властивості виберіть самостійно.
Уведіть і  збережіть структуру табл. 2.5
КЛАСИ і  табл. 2.6 УЧНІ.
Зі створеними БД ви працюватимете про­
тягом періоду їх вивчення, тому працюй­
те акуратно, не забувайте зберігати дані,
не порушуйте структуру таблиць.
Таблиця 2.6. УЧНІ
Прізвище Адреса
Дата
народження
Зріст
Улюблений
предмет
Інформатика Історія Клас
Ларін Л. К. Лугова, 5 5.06.2002 163 Математика 11 8 9
Лобов С. П. Сонячна, 7 9.08.2002 168 Географія 9 9 9
Костенко В. С. Річкова, 4 13.09.2001 170 Фізика 10 10 10
Рамко Б. В. Лугова, 9 15.11.2001 169 Інформатика 11 8 10
Пека П. О. Сонячна, 7 20.12.2001 167 Інформатика 12 9 10
Сергіна В. В. Лісна, 5 3.03.2002 171 Історія 8 11 10
Хижа Р. А. Лугова, 2 4.04.2002 172 Історія 9 12 11
Собко О. К. Вишнева, 5 9.10.2001 175 Інформатика 11 8 11
Настін К. Б. Лісна, 10 6.11.2001 171 Географія 10 10 11
1 2
3
19
2.2. Ключові поля, індекси, зв’язування таблиць
Одне з  полів таблиці може мати унікальні значення. Для
чого, на вашу думку, може використовуватися таке поле?
Згадаємо, що кожна таблиця повинна мати ключове поле
(ключ) — поле, значення якого не повторюється в жодному
іншому записі. Таблиця може мати кілька ключових полів,
але використовується тільки одне з них, яке називають пер-
винним ключем.
Найчастіше первинний ключ складається з одного поля,
а як первинний ключ використовується поле типу Лічильник.
Якщо в ролі первинного ключа використовуються два і біль-
ше полів, його називають складним. Наприклад, у таблиці
КАДРИ поле Прізвище не може бути первинним ключем, тому
що в мережі магазинів може бути працівник із таким самим
прізвищем. А поля Прізвище і Рік народження разом можна
вважати таким ключем, оскільки вони, ймовірно, не дублю-
ються.
Для створення первинного ключа потрібно відкрити табли-
цю в режимі конструктора, виділити поле, що використову-
ється як первинний ключ, і натиснути кнопку Ключове поле,
що знаходиться в розділі Знаряддя вкладки Конструктор.
Створити первинний ключ можна також за допомогою
контекстного меню певного поля, у якому необхідно викона-
ти команду Ключове поле. Для цього слід відкрити таблицю
в режимі конструктора. Скористаємося цим способом, і в таб-
лиці МАГАЗИНИ визначимо як первинний ключ поле Номер
магазину. Поряд із назвою цього поля з’явиться зображення
ключа (рис. 2.9). Далі збережемо таблицю.
Рис. 2.9. Структура таблиці МАГАЗИНИ з ключовим полем
Якщо деяке поле в процесі створення структури табли-
ці оголошено типу Автонумерація (див. рис. 2.1), тобто типу
Лічильник, то воно стає ключовим за замовчуванням. Його
можна також додати в таблицю навіть у тому випадку, якщо
явної потреби в цьому немає.
Поле типу Лічильник обов’язково встановлюється в тому
разі, якщо ключ у  таблиці взагалі визначити неможливо.
Розглянемо тепер сутність і порядок індексування таблиць.
Складні ключі бажано не
використовувати як первинний
ключ, оскільки в  цьому випадку
ускладнюється процес роботи
з БД.
Ключі у БД відіграють важливу
роль — за їх допомогою СУБД
ідентифікує об’єкти.
20 Розділ 1
Індексування — це процес створення додаткових таблиць
для певного поля. Ці таблиці (їх ще називають простими
індексними таблицями) зазвичай містять лише одне поле,
у якому зберігаються вказівники на певні записи таблиці.
За допомогою вказівників визначають порядок розміщення
записів, упорядкованих за значенням цього поля (приклад 1).
Приклад 1. Індексна таблиця для поля
Директор таблиці МАГАЗИНИ матиме такі
значення:
Цифра 2 в першому рядку означає, що пер-
шим за алфавітом у таблиці є друге прізвище
(Борзов А. С.), цифра 1 — що другим за ал-
фавітом є перше прізвище (Коцюба П. М.),
а цифра 3 — що третім за алфавітом є третє
прізвище (Середа К. М.).
Індексних таблиць для певної таблиці БД
може бути кілька, наприклад за кількістю
працівників, за номерами магазинів тощо.
2
1
3
Головним призначенням індексних таблиць є підвищення
швидкості пошуку необхідних даних (інколи вона зростає до
5 разів). Щоб знайти деякий запис у таблиці, в Access спочат-
ку потрібно знайти його положення в індексі, потім вибрати
з нього місце запису в таблиці, що використовується для по-
шуку даних.
Зазначимо, що первинний ключ завжди індексований. За
замовчуванням записи таблиці виводяться відсортованими за
його значеннями. У процесі введення даних у таблицю обов’яз-
ково перевіряється значення первинного ключа на дублюван-
ня. Якщо значення дублюється, введення запису блокується.
Значення первинного ключа типу Лічильник у процесі введення
даних формується автоматично (приклад 2).
Приклад 2. Створимо просту індексну таб-
лицю для полів Директор і Працівників таблиці
МАГАЗИНИ. Для цього відкриємо таблицю
в режимі конструктора, виберемо поле Дирек­
тор і в розділі Властивості поля в рядку Індексо­
вано ввімкнемо перемикач Так (Без  повторень),
оскільки малоймовірно, що в цій мережі
магазинів буде два директори з однаковими
прізвищами. Для поля Працівників увімкнемо
перемикач Так (Повторення дозволені), тому що
в магазинах може бути однакова кількість
працівників.
Основна вимога до ключів така: значення зовнішнього
ключа мають збігатися зі значеннями первинного ключа
головної таблиці. Імена цих ключів можуть бути різними,
але якщо імена однакові, то процес зв’язування таблиць буде
простішим.
Часто первинний ключ таблиці штучно вводять у другу
таблицю саме з метою їх зв’язування. Цей ключ не є первин-
ним ключем другої таблиці, тому що його значення можуть
повторюватися. Наприклад, поле Магазин є первинним ключем
таблиці МАГАЗИНИ, а в таблиці КАДРИ це поле є зовніш-
нім ключем, тому що в ній значення цього поля дублюються.
Поля, значення яких змінюються
часто, індексувати недоцільно.
Для однієї таблиці бажано мати
не більш ніж 5 або 6 індексних
таблиць.
Під час зв’язування двох
таблиць одна з  них вважається
головною, а  інша  —
допоміжною. Первинний ключ
головної таблиці зв’язується із
зовнішнім ключем допоміжної.
212.2. Ключові поля, індекси...
Приклад 3. Розглянемо порядок створення
зв’язку на прикладі таблиць МАГАЗИНИ
і КАДРИ (табл. 2.1 і 2.2 відповідно).
1. Завантажимо БД atb й у вікні, що від-
криється, активуємо вкладку Знаряддя
бази даних. Далі натиснемо кнопку Зв’яз­
ки. Відкриється вікно Відображення табли­
ці (рис. 2.10).
2. У вікні Відображення таблиці виберемо
таблиці, які потрібно зв’язати (у нашо-
му випадку обидві таблиці), і натиснемо
кнопку Додати. На екрані з’являться ці
таблиці з іменами їх полів.
3. Установимо курсор на первинному ключі
таблиці МАГАЗИНИ, натиснемо кнопку
миші і, не відпускаючи її, перемістимо
курсор у поле зовнішнього ключа й від-
пустимо кнопку. У результаті відкриєть-
ся вікно Редагування зв’язків (рис. 2.11).
4. Увімкнемо прапорець Забезпечення ціліс­
ності даних. Після цього стануть доступ-
ними прапорці Каскадне оновлення пов’я­
заних полів і Каскадне видалення пов’язаних
полів. Увімкнемо останній прапорець.
Увімкнення прапорця Забезпечення цілісно­
сті даних дає змогу зберегти цілісність даних.
Якщо цей прапорець вимкнутий, то в таблиці
можна додавати нові записи, змінювати клю-
чові поля й вилучати пов’язані записи без
попередження про порушення цілісності.
Сутність каскадного оновлення пов’язаних
полів полягає в тому, що за будь-якої зміни
первинного ключа в головній таблиці автома-
тично оновиться значення відповідного поля
у всіх зв’язаних таблицях.
Сутність каскадного вилучення пов’язаних
полів полягає в тому, що під час вилучення
будь-якого запису з головної таблиці авто-
матично вилучаються зв’язані записи у зв’я-
заній таблиці. Отже, каскадне оновлення
й каскадне вилучення прискорюють роботу
з БД і сприяють підвищенню надійності її
функціонування.
5. У вікні Редагування зв’язків натисне-
мо кнопку Створити, у результаті чого
у вікні Звяз’ки з’явиться лінія зв’язку
між певними полями таблиць (рис. 2.12).
Збережемо БД.
У вікні Редагування зв’язків можна ви-
лучити встановлений зв’язок за допомогою
кнопки Скасувати. За допомогою кноп-
ки Створити… можна відкрити нове вікно
й установити зв’язок заново.
Рис. 2.10. Вікно з переліком таблиць бази даних abс
Рис. 2.11. Вікно Редагування зв’язків
Рис. 2.12. Зв’язок типу один-до-багатьох між таблицями
22 Розділ 1
6. Повернемося до вікна Редагування зв’язків
(якщо в цей момент його немає на екра-
ні, слід виконати команду Змінити зв’язки
в області Знаряддя — і вікно відкриєть-
ся). Далі натиснемо кнопку Тип об’єднан­
ня… З’явиться вікно Параметри об’єднання
(рис. 2.13).
7. За замовчуванням установлюється пер-
ший тип об’єднання, який називають
об’єднанням за еквівалентністю. Зазви-
чай розробники БД установлюють від-
ношення за еквівалентністю. Натиснемо
в цьому вікні кнопку ОК і закриємо
вікно Редагування зв’язків.
Рис. 2.13. Вікно для встановлення параметрів
об’єднання таблиць
Щоб переглянути зв’язки між таблицями БД, необхідно
на відкритій вкладці Знаряддя бази даних натиснути кнопку
Зв’язки, активувати вкладку Конструктор і в розділі Зв’язок
натиснути кнопку Усі зв’язки.
Якщо схема складна, можна приховати частину таблиць
і зв’язків, вилучивши їх із вікна Зв’язки. Для цього потріб-
но виділити певну таблицю й натиснути кнопку Delete. При
цьому зв’язки й таблиці вилучаються лише з вікна, фізич-
но ж вони залишаються, тому в будь-який час їх можна від-
новити.
Щоб скасувати зв’язки між таблицями БД, необхідно
встановити курсор на лінії зв’язку, натиснути кнопку миші,
а потім — клавішу Delete. Можна також відкрити контекстне
меню лінії зв’язку й виконати команду Видалити.
Запитання для перевірки знань
Що називають первинним ключем таблиці?
Які первинні ключі називають простими;
складними?
Для чого використовується ключове поле
типу Лічильник?
Який порядок створення ключового поля?
Що називають індексуванням таблиць?
Як можна скасувати зв’язок між таблицями?
З  якою метою індексуються таблиці?
Для чого потрібно зв’язувати таблиці?
Опишіть порядок зв’язування таблиць.
1
2
3
4
5
6
7
8
9
Завдання для самостійного виконання
Створіть просту індексну таблицю для поля
Учнів таблиці КЛАСИ й  індексну таблицю
для поля Адреса таблиці УЧНІ.
Створіть у  таблиці КЛАСИ БД skola первин­
ний ключ і  збережіть таблицю. Переконай­
теся, що ключ встановлено правильно.
Виконайте зв’язування таблиці КЛАСИ
і  таблиці УЧНІ. Доведіть, що зв’язок дійсно
встановлений. Вилучіть зв’язок між табли­
цями й  установіть його ще раз.
1
2
3
23
2.3. Введення, пошук і редагування даних у таблиці
Поясніть, у який спосіб можна здійснити пошук необхідних
даних у таблиці.
Дані в таблиці можна вводити після створення їх струк-
тур. Існує два способи введення даних у таблиці: за допомо-
гою форм і безпосереднє введення даних у таблиці.
Розглянемо алгоритм уведення даних на прикладі 1.
Приклад 1.
1. Відкриємо таблицю МАГАЗИНИ в ре-
жимі таблиці. Для цього двічі клацнемо
кнопкою миші ім’я в області Усі об’єкти.
Можна також скористатися контекстним
меню цієї таблиці.
2. Уведемо дані першого запису таблиці
МАГАЗИНИ, який позначено зірочкою.
Щойно дані будуть уведені, курсор авто-
матично переміститься на наступний за-
пис, що означає готовність до уведення
даних у другий рядок. Слід пам’ятати,
що вводити в поля можна лише ті типи
даних, які збігаються з оголошеним ти-
пом поля.
3. У такому самому порядку введемо дані
всіх інших записів таблиці й збереже-
мо таблицю. Після введення останнього
запису вміст таблиці набуде вигляду, як
наведено на рис. 2.14.
Зверніть увагу на те, що записи виведені
в іншому порядку, ніж уводилися (записи
вводили в порядку, який подано у табл. 2.1).
На рис. 2.14 записи впорядковано в поряд-
ку значень ключового поля.
Рис. 2.14. Вміст таблиці МАГАЗИНИ
Під час уведення даних автоматично перевіряються такі
типи даних: числові, грошові, дата і час, логічні. На вкладці
Основне в групі Форматування тексту містяться елементи, за
допомогою яких можна змінити розмір і накреслення симво-
лів та інші параметри.
Якщо на екрані не поміщаються всі записи, слід скори-
статися вертикальною смугою прокручування, а якщо не по-
міщаються всі поля — горизонтальною. Окремі поля можна
розширити або звузити звичайним порядком.
У нижній частині вікна таблиці розміщено кнопки навіга-
ції для переміщення курсора в перший, сусідній або останній
запис.
Для додавання нового запису в таблицю необхідно натисну-
ти кнопку Створити запис на панелі навігації та ввести дані.
Навігацію в  таблиці можна
здійснювати за допомогою
миші, смуг прокручування,
сполучення деяких клавіш.
24 Розділ 1
У такому самому порядку введемо дані в таблицю КАДРИ.
Її вміст подано на рис. 2.15.
Рис. 2.15. Вміст таблиці КАДРИ
Потрібний запис у таблиці можна знайти за значенням
будь-якого її поля або за фрагментом його значення. Розгля-
немо пошук запису в таблиці на прикладі 2.
Приклад 2.
1. У таблиці КАДРИ в режимі таблиці
встановимо курсор на поле, за значенням
якого потрібно шукати запис (наприклад,
на поле Прізвище), і натиснемо кнопку
Знайти у розділі Пошук — відкриється
вікно Пошук і  заміна (рис. 2.16).
2. У вікно Пошук і  заміна в поле Знайти вве-
демо потрібне значення, наприклад Со-
кіл Т. Л., і натиснемо кнопку Знайти далі.
Курсор встановиться на записі з прізви-
щем Сокіл Т. Л.
У полі Зіставити можна вибрати одне зі зна-
чень, що зменшує необхідність використання
метасимволів:
• будь-яку частину поля (зразок може міс-
титися всередині значення поля);
• усе поле (зразок без метасимволів має
збігатися з усім значенням поля);
• початок поля (будуть знайдені тільки ті
поля, які починаються зі зразка).
Рис. 2.16. Вікно для пошуку й заміни даних
У процесі введення даних у  поле
Знайти можна використовувати
такі метасимволи:
*  — довільна кількість будь­яких
символів;
?  — один довільний символ;
≠  — одна довільна фраза.
Якщо прапорець З урахуванням регістра встановлено, то зра-
зок повинен точно відповідати шуканому фрагменту; якщо
знято, то зразок можна вводити великими і малими буквами.
Якщо прапорець З  урахуванням формату полів встановлено,
то зразок повинен бути таким, як і шуканий фрагмент, на-
приклад $345; якщо знято, то форматування не враховуєть-
ся, наприклад значення $345 буде знайдено і для зразка 345.
252.3. Введення, пошук...
Після завершення пошуку на знайдений запис встанов-
люється курсор, і поле цього рядка висвітлюється іншим
кольором. Оскільки в таблиці може бути кілька значень, що
відшукуються, то для продовження пошуку необхідно ще раз
натиснути кнопку Знайти далі. Для пошуку першого входжен-
ня зразка можна використовувати поле Пошук. Пошук завер-
шується після першого визначення рядка.
Знайдене значення можна змінювати, вводити нове. Поле
типу Лічильник, заблоковані поля та поля, що обчислюються,
змінювати не можна (приклад 3).
Записи з таблиці можна вирізати й копіювати до буфера
обміну, за допомогою кнопки Вставити вставляти в іншу таб-
лицю, а також у документи Word і Excel.
Розглянемо алгоритм вилучення запису з таблиці.
1. Виділити потрібний запис і натиснути кнопку Видалити на
вкладці Основне. Відкриється меню цієї кнопки (рис. 2.17),
у якому слід виконати команду Видалити запис.
2. У вікні, що відкриється (рис. 2.18), необхідно підтвердити
або відмінити вилучення. Якщо потрібно вилучити весь
запис, його слід виділити й натиснути кнопку Видалити,
у меню (див. рис. 2.17) виконати команду Видалити запис.
Рис. 2.18. Вікно підтвердження/відміни видалення запису
Слід пам’ятати, що у зв’язаних таблицях зі встановленим
прапорцем Забезпечення цілісності даних вилучити запис не
завжди вдається.
Запитання для перевірки знань
Поясніть порядок уведення записів у  таб­
лицю.
За значенням якого поля впорядковуються
записи за замовчуванням?
Як можна здійснити навігацію в  таблиці?
Як здійснюється пошук запису в  таблиці?
Як вилучити запис із таблиці?
Які дії слід виконати для додавання нового
запису в  таблицю?
З  якою метою і  як приховують поля?
1
2
3
4
5
6
7
Завдання для самостійного виконання
Уведіть у  таблиці КЛАСИ й  УЧНІ БД skola
наведені в  них дані.
Виконайте навігацію по таблиці УЧНІ за до­
помогою кнопок навігації.
Додайте в таблицю УЧНІ новий запис, а по­
тім вилучте його. Збережіть таблицю.
Знайдіть у таблиці УЧНІ запис за прізвищем
Пека П. О.
Використайте метасимволи для пошуку запи­
сів у таблиці УЧНІ за значенням поля Адреса.
Вилучте з таблиці УЧНІ будь­який запис,
а  потім відновіть його. Збережіть таблицю.
1
2
3
4
5
6
Рис. 2.17. Меню кнопки Видалити
Приклад 3. Знайдемо в  таблиці
КАДРИ запис, у  полі Рік наро-
дження якого є  значення 1981.
Буде виділено запис із прізвищем
Рябко Р. П.
Коли потрібно приховати деякі
поля, їх слід виділити й  у  групі
Записи виконати команду
Додатково → Приховати
поля. Щоб відновити приховані
поля, слід виконати команду
Додатково → Відобразити
поля та у  вікні, що відкриється,
увімкнути прапорець
відповідного поля.
26
2.4. Сортування і фільтрування записів.
Операції над таблицями
Сортування записів у  таблиці можна реалізувати за
значенням будь-якого поля. А  що ви розумієте під терміном
«фільтрація записів»?
Згадаємо, що за замовчуванням записи таблиці виводяться
впорядкованими за значенням первинного ключа. Проте ча-
сто виникає необхідність отримати записи, упорядковані за
значенням інших полів.
Сортування записів  — це впорядкування записів за зна­
ченнями одного поля або кількох полів.
Сортування записів виконується спочатку за значенням
лівого виділеного поля. Якщо в ньому є поля, значення яких
збігаються, то певні записи впорядковуються за значенням на-
ступного поля. Наприклад, у результаті сортування записів За
зростанням за значеннями полів Освіта і Стаж таблиці КАДРИ
отримаємо розміщення записів, як наведено на рис. 2.19.
Рис. 2.19. Таблиця КАДРИ, упорядкована за значенням полів Освіта і Стаж
Як бачимо з рис. 2.19, основне сортування виконано за зрос-
танням значення поля Освіта. Записи з однаковим значенням
упорядковано за зростанням значення поля Стаж (приклад 1).
Фільтрування записів  — це відбір із таблиці записів, які
містять задане значення у  вибраних полях.
Фільтрування можна виконати за виділенням і формою.
Фільтрування за виділенням — це відбір записів на основі
значень поточного поля. Для його реалізації спочатку треба
впорядкувати записи за значенням поля, яке використовуєть-
ся у фільтрації; встановити курсор на тому значенні поля, за
яким буде виконуватися фільтрування; натиснути на кнопку
Виділення в групі Сортування й  фільтр та вибрати необхідну
умову в меню, що відкриється (приклад 2).
Для сортування за значенням
одного поля треба його
виділити й  натиснути кнопку
За  зростанням (А → Я) або
За  спаданням (Я → А). Можна
також скористатися контекстним
меню поля.
Для сортування за значеннями
кількох полів необхідно ці поля
виділити й  скористатися одним
із наведених далі способів.
Приклад 1. Якщо здійснити
фільтрацію записів таблиці
КАДРИ за значенням більше або
дорівнює 24 в  полі Стаж, то
отримаємо записи з  прізвищами
Сокіл Т. Л. і  Шрамко Т. Л.
272.4. Сортування ...
Приклад 2. Відфільтруємо записи таблиці КАДРИ за зна-
ченням середня поля Освіта.
1. Упорядкуємо записи таблиці КАДРИ за значенням поля
Освіта.
2. Встановимо курсор на назві середня цього поля і натис-
немо кнопку Виділення в групі Сортування й  фільтр. Від-
криється меню з умовами (рис. 2.20).
3. Виберемо першу умову Дорівнює «середня». Відкриється
таблиця, вміст якої наведено на рис. 2.21.
У нижній частині таблиці висвітлиться кнопка з написом
Відфільтровано (або Не відфільтровано). Це означає, що запи-
си відфільтровано (або не відфільтровано). Натискаючи цю
кнопку, можна вмикати й вимикати фільтрування записів.
До відфільтрованих записів можна застосовувати ще кілька
фільтрів, наприклад за значеннями полів Посада, Оклад та ін.
Рис. 2.21. Таблиця з відфільтрованими записами
Використовуючи фільтрування за формою, можна вводити
критерії в поля таблиці умов. Розглянемо алгоритм відкриття
таблиці умов на прикладі 3.
Рис. 2.20. Меню умов для фільтрації
записів
Приклад 3.
1. У розділі Сортування й  фільтр відкриє-
мо меню кнопки Параметри розширеного
фільтра й виконаємо команду Розширений
фільтр/сортування. Відкриється перелік
полів таблиці, а в нижній частині вік-
на — таблиця конструктора.
2. У таблицю конструктора, наприклад, із
відфільтрованої таблиці КАДРИ (див.
рис. 2.21) перенесемо ім’я поля, у яке
вводитиметься критерій. Для цього до-
статньо двічі клацнути його в таблиці.
Перенесемо, наприклад, ім’я поля Стаж.
3. У таблиці конструктора в запис Критерії
цього поля введемо умову, наприклад,
16. Далі відкриємо меню кнопки Пара­
метри розширеного фільтра, у якому ви-
конаємо команду Застосувати фільтр/сорту­
вання. Отримаємо записи (рис. 2.22).
Рис. 2.22. Відфільтровані записи відібрано за критерієм поля Стаж 16
28 Розділ 1
У таблиці умов можна задати довільну кількість критеріїв
фільтрування, які об’єднуються операторами І/АБО.
Над таблицями в середовищі Access можна виконувати опе-
рації перейменування, вилучення, копіювання та ін.
Перейменувати таблицю можна за допомогою її контекст-
ного меню, яке відкривається шляхом клацання імені табли-
ці в області Усі об’єкти. Вміст меню наведено на рис. 2.23.
Для перейменування таблиці слід виконати такі дії:
Крок 1 Виконати команду Перейменувати
Крок 2
В  області Усі об’єкти в  текстове поле цієї
таблиці ввести нове ім’я
Крок 3
Натиснути клавішу Enter.
Слід пам’ятати, що після цього потрібно
змінити це ім’я в  усіх об’єктах БД (запитах,
звітах та ін.)
Для вилучення таблиці можна також скористатися її кон-
текстним меню й виконати в ньому команду Видалити.
Для копіювання таблиці в контекстному меню слід вико-
нати команду Копіювати, ще раз викликати контекстне меню
й виконати команду Вставити. Відкриється вікно Вставлення
таблиці (рис. 2.24). Далі в поле Ім’я таблиці потрібно ввести нове
ім’я та ввімкнути один із розташованих нижче перемикачів.
Якщо таблиця копіюється повністю, то слід увімкнути пе-
ремикач Структура та дані й натиснути кнопку ОК.
Запитання для перевірки знань
Які існують способи сортування записів?
Як упорядкувати записи за значенням од­
ного поля?
Що називають фільтрацією записів?
Як упорядкувати записи за значеннями
двох полів?
Які операції виконують над таблицями?
Як перейменувати таблицю?
Як здійснити фільтрування записів за виді­
ленням?
Поясніть сутність фільтрації записів за фор­
мою.
Як  скопіювати таблиці?
Як  вилучити таблиці?
1
2
3
4
5
6
7
8
9
10
Завдання для самостійного виконання
Упорядкуйте записи таблиці УЧНІ БД skola
за значенням поля Зріст.
Упорядкуйте записи таблиці УЧНІ за зна­
ченнями полів Прізвище й  Історія.
Виконайте фільтрування записів таблиці
УЧНІ за одним зі значень поля Улюблений
предмет.
Використайте фільтр за формою для філь­
трування записів таблиці УЧНІ за одним зі
значень поля Дата народження.
Надайте таблиці КЛАСИ нове ім’я. Відновіть
ім’я КЛАСИ.
Виконайте копіювання таблиці УЧНІ й створіть
на її основі нову таблицю з іменем ПЕРША.
1
2
3
4
5
6
Рис. 2.23. Контекстне меню таблиці,
відкрите в області Усі об’єкти
Рис. 2.24. Вікно для копіювання таблиці
29
3. Запити
3.1. Загальні відомості про запити
Пригадайте основне призначення запитів.
Запит — один із основних об’єктів БД Access. Головне його
призначення полягає у відборі потрібних даних із таблиць, їх
опрацюванні та поданні користувачеві у зручній формі.
Запит застосовується також для змінення даних у БД.
Створений запит можна зберігати з певним іменем і потім
неодноразово виконувати. Якщо між першим і другим за-
пусками запиту дані в таблицях змінилися, то в процесі дру-
гого його виконання будуть використовуватися оновлені дані.
Запити класифікують за багатьма ознаками. Розподіл за-
питів за основними ознаками наведено на рис. 3.1.
Однотабличні
Багатотабличні
Вибірки
даних
Прості
Запити SQL
З полями, що обчислюються
З умовами і виразами
Оновлення
даних
Складні
Запити
Access
З функціями
Перехресні запити
За кількістю таблиць,
що використовуються
За складністю функцій,
що виконуються
За можливістю
підтримки зв’язку
із серверними БД
За способами
вибірки та опрацю­
вання даних
За призначенням
ЗАПИТИ
Рис. 3.1. Класифікація запитів
Запити, за допомогою яких вибирають дані з однієї табли-
ці, називають однотабличними.
Запити, за допомогою яких вибирають дані з кількох таб-
лиць, називають багатотабличними.
Простими називають запити, за якими вибирають дані за
критерієм одного поля однієї таблиці (приклад 1).
Складними називають запити, за якими вибирають дані за
критеріями кількох полів із кількох таблиць (приклад 2).
Запити не містять даних. Під
час кожного нового виконання
запиту формуються необхідні
дані з  тих таблиць, на основі
яких його створено.
Приклад 1. Приклади простих
запитів: вибрати з  таблиці
МАГАЗИНИ ті номери магазинів, де
кількість працівників більша за 13;
вибрати з  таблиці КАДРИ прізвища
тих працівників, які народилися
після 1979 року.
30 Розділ 1
Приклад 2. Складний запит для таб-
лиць МАГАЗИНИ і КАДРИ, за яким
формуються дані, наведено в табл. 3.1.
Тут із таблиць МАГАЗИНИ і КАДРИ
відібрано прізвища осіб, які працюють
диспетчерами в магазинах 21 і 31.
Таблиця 3.1. Результат виконання складного запиту
Мага-
зин
Адреса Прізвище Посада
21 вул. Паркова, 33 Семко М. М. диспетчер
31 вул. Печерська, 21 Таран В. Д. диспетчер
31 вул. Печерська, 21 Горошко Ф. Р. диспетчер
До однієї БД Access може бути розроблено кілька запитів.
Кожен із них можна виконати в будь-який час, і кожен із
них виконує чітко визначені функції. Запити можуть вико-
нуватися самостійно, але найчастіше їх використовують як
складові форм і звітів.
Як вам відомо, запити не містять даних, лише формують
потрібні дані з таблиць. Наприклад, дані, наведені в табл. 3.1,
не зберігаються, а формуються під час виконання запиту. Щоб
зберегти дані, необхідно створити таблицю та скопіювати до
неї ці дані. Описаний тип називають запитом на вибірку.
Запити на вибірку даних — запити, які забезпечують до-
бір потрібних даних із таблиць. Такий тип запитів є одним із
найбільш розповсюджених.
Разом із тим у Access використовуються й запити на змінення
(оновлення даних) — запити, за допомогою яких здійснюється
модифікування структури таблиць і змінення в них даних.
Найчастіше дані за допомогою запитів вибираються на
основі критеріїв. Окрім того, система Access має набір убудо-
ваних функції, за допомогою яких дані можна вибрати з та-
блиць, а також опрацювати й узагальнити.
З опрацьованих даних можна створювати нові поля. Такий
тип запитів називають запитами з полями, що обчислюються.
У запитах різних типів найчастіше реалізуються такі опе-
рації:
• вибір даних із вказаних полів на основі заданих крите-
ріїв;
• упорядкування даних із таблиць за значеннями вказа-
них полів;
• побудова нової таблиці або діаграми з отриманих даних;
• опрацювання вибраних із таблиць даних за допомогою
вбудованих функцій;
• використання отриманих за допомогою запиту даних як
джерела для інших запитів;
• додавання даних, отриманих за допомогою запитів, до
інших таблиць;
• обмін даними з іншими БД, а також текстовим редакто-
ром Word і таблицями Excel.
У запитах можуть використовуватися специфічні оператори.
• Рядкові оператори:
Like (які збігаються/відповідність);
Not Like (які не збігаються/невідповідність);
об’єднання рядків ().
Вирази в  критеріях, що
застосовуються в  запитах,
будуються на основі звичайних
арифметичних операцій,
операцій порівняння й  логічних
операцій (And, Or, Xor, Not).
Компанія Oracle є абсолютним
лідером на ринку систем
управління БД. Їй належить
45 % ринку.
313.1. Загальні відомості про...
Оператори Like і Not Like використовуються для порівняння
двох рядкових виразів. При цьому перевіряється, чи збіга-
ються ці вирази, і залежно від результату повертаються зна-
чення Так, Ні або Null.
Оператор Like має таку структуру: ім’я поля Like зразок
(приклад 3).
• Оператори списку й діапазону:
In (входження в список);
Is (наявність значення);
Between…And (входження в діапазон).
За допомогою оператора In перевіряється, чи збігається
значення поля з одним зі значень списку. Якщо збігається,
повертається значення Так, інакше — Ні (приклад 4).
Оператор Is використовується тільки з ключовим словом
Null для з’ясування, чи містить об’єкт будь-яке значення. По-
вертається значення Так, якщо вираз порожній (не містить
жодного значення).
Оператор Between…And має таку структуру: ім’я поля
Between нижня межа And верхня межа. Повертається зна-
чення Так, якщо значення поля знаходяться між значеннями
нижня межа і верхня межа (приклад 5).
Критерії поділяються на прості й складні.
Прості критерії зазвичай містяться лише в одному полі,
складні критерії — у кількох полях. Наприклад, вибрати
з таблиць МАГАЗИНИ і КАДРИ прізвища працівників мага-
зинів, які народилися у період з 1961 до 1975 років і працю-
ють диспетчерами або аналітиками.
Далі буде стисло описано методику створення усіх типів
запитів (див. рис. 3.1), крім запитів SQL, для розроблення
яких потрібно володіти мовою SQL.
Запитання для перевірки знань
Назвіть основне призначення запитів.
Які запити називають простими?
Опишіть, як класифікують запити за призна­
ченням.
Назвіть основні класифікаційні ознаки запитів.
Наведіть приклад простого запиту.
Які функції виконують запити на вибірку?
Назвіть операції, які найчастіше реалізують­
ся в  запитах.
Які існують оператори списку й  діапазону?
Наведіть приклад використання операторів
Like і  Not Like.
1
2
3
4
5
6
7
8
9
Завдання для самостійного виконання
Накресліть класифікацію запитів за призна­
ченням.
Наведіть приклад простого запиту для та­
блиці КАДРИ.
Наведіть приклад простого запиту для та­
блиці МАГАЗИНИ.
Наведіть приклад використання оператора
In для таблиці МАГАЗИНИ.
Наведіть приклад складного запиту для та­
блиць МАГАЗИНИ і КАДРИ.
Накресліть класифікацію запитів за ос­
новними ознаками.
1
2
3
4
5
6
Приклад 3. Для таблиці КАДРИ
вираз Прізвище Like Раков
Г. П. повертає значення Так,
оскільки поле Прізвище містить
значення Раков Г. П.
Приклад 4. Для таблиці КАДРИ
оператор Прізвище In ('Семко
Н. Н.', 'Горошко Ф.  Р') повертає
значення Так, тому що в  цьому
полі є  зазначені прізвища.
Приклад 5. Для таблиці КАДРИ
за допомогою оператора [Рік
народження] Between 1965 And
1973 повертається значення Так,
оскільки в  цьому полі є  зазначені
діапазони.
32
3.2. Запити на вибірку даних
Поміркуйте, що необхідно зробити для одночасного
отримання потрібних даних із кількох таблиць БД.
Запити на вибірку даних  — це запити, які забезпечують
вибір необхідних даних із однієї або кількох таблиць.
Розглянемо загальний порядок створення простого запиту
на вибірку (запиту для однієї таблиці) та приклад 1.
Крок 1
Відкрити БД, активувати вкладку Створення й  у розділі Запити клацнути
кнопку Макет запиту, який фактично є  конструктором запиту. У  результаті
відкриються вікно конструктора запиту (вікно Запит1) і  вікно Відображення
таблиці, у  якому містяться імена всіх таблиць цієї БД.
На панелі інструментів вкладки Конструктор з’явилася група кнопок Тип
запиту, у  якій виділено кнопку Вибір. Це означає, що запит на вибірку ство­
рюється за замовчуванням. Якщо створюватимуться інші типи запитів, то
потрібно вмикати відповідну кнопку в  цій групі.
Крок 2
Вибрати у  вікні Відображення таблиці необхідну таблицю  — відкриється
перелік її полів.
Крок 3 Створити запит на основі вмісту таблиці.
Приклад 1. Створити простий запит з іменем
Запит_1, за допомогою якого з таблиці КАДРИ
виводяться дані про співробітників зі стажем
понад 16 років. Результуючий набір записів
повинен містити такі поля: Справа, Прізвище,
Рік народження, Стаж, Номер магазину.
1. Для створення запиту відкриємо БД atb
і виконаємо команду Створення → Макет
запиту. Відкриються вікно конструкто-
ра запитів і вікно Відображення таблиці,
у якому виберемо таблицю КАДРИ. Для
цього встановимо курсор на імені цієї
таблиці й клацнемо кнопку Додати. Піс-
ля цього вікно Відображення таблиці мож-
на буде закрити.
2. У записі Поле таблиці конструктора за-
питів послідовно розмістимо зазначені
імена полів (Справа, Прізвище, Рік на­
родження, Стаж, Номер магазину) таблиці
КАДРИ (рис. 3.2). Для цього достатньо
двічі клацнути кнопкою миші на імені
певного поля цієї таблиці.
Запис Сортування використовується для сор-
тування даних у таблиці, яку буде отримано
після виконання запиту. Сортувати дані мож-
на за значенням кількох полів. Прапорець,
установлений на перетині запису Відображен­
ня й певного поля, означає, що це поле буде
виведено на екран, інакше воно виводитися
не буде. Запис Критерії призначено для запису
виразу, на основі якого відбираються записи.
Запис Або слугує для визначення додаткової
умови відбору записів.
3. У запис Критерії поля Стаж уведемо вираз
16. Збережемо запит, для чого на пане-
лі швидкого доступу натиснемо кнопку
Зберегти й у вікні, що відкриється, уве-
демо ім’я Запит_1 і натиснемо кнопку ОК.
У результаті ім’я цього запиту з’явиться
в області переходів.
4. Виконаємо запит. Для цього на стрічці
в групі Результати натиснемо кнопку За­
пуск!. Отримаємо результат, як подано на
рис. 3.3.
333.2. Запити на вибірку...
5. Для закриття запиту відкриємо його контекстне меню
і виконаємо команду Закрити.
Методика створення запиту для
кількох таблиць багато в  чому
схожа на  методику створення
запиту для однієї таблиці. Лише
слід ураховувати, що таблиці
обов’язково повинні мати між
собою зв’язок.
Рис. 3.2. Вікно конструктора запитів
Рис. 3.3. Дані про працівників магазинів зі стажем роботи понад 16 років
Створений запит можна перейменовувати й редагувати.
Щоб перейменувати запит, слід відкрити його контекстне
меню й виконати команду Перейменувати. Ім’я цього запиту
в області переходів буде виділено прямокутником іншого ко-
льору. У поле слід увести нове ім’я й натиснути клавішу Enter.
У процесі редагування запиту можна виконувати такі дії:
• додавати поля в запит із таблиці;
• вилучати поля;
• додавати нові поля;
• змінювати розміри полів;
• змінювати порядок розміщення полів;
• змінювати критерії відбору записів, порядок їх сорту-
вання й порядок виведення (невиведення) полів;
• перейменовувати поля запиту;
• вилучати таблиці із запиту (для багатотабличних запитів).
Для виконання цих операцій запит потрібно відкрити
в режимі конструктора. Їх виконують так само, як і анало-
гічні операції в таблицях (приклад 2).
34 Розділ 1
Приклад 2. Створити Запит_2, за допомо-
гою якого в результуючу таблицю виводять-
ся прізвища диспетчерів із полями Номер
магазину і Телефон із таблиці МАГАЗИНИ,
а з таблиці КАДРИ — поля Прізвище, Посада
й Освіта. Упорядкувати записи за прізвищами
працівників в алфавітному порядку.
1. У відкритій БД atb активуємо вкладку
Створення й виконаємо команду Макет
запиту. Додамо у вікно конструктора за-
питу обидві таблиці й закриємо вікно
Відображення таблиць.
2. У запис Поле таблиці конструктора запи-
ту перенесемо поля Номер магазину й Те­
лефон таблиці МАГАЗИНИ і поля Прізви­
ще, Посада й Освіта таблиці КАДРИ.
3. У запис Критерії поля Посада введемо
назву професії диспетчер, а в записі Сор­
тування поля Прізвище встановимо зна-
чення За зростанням.
4. Збережемо запит з іменем Запит_2 і вико-
наємо його. На екрані повинні з’явитися
записи, як наведено на рис. 3.4.
Рис. 3.4. Дані про диспетчерів, вибрані з двох таблиць
Запитання для перевірки знань
Які запити називають запитами на вибірку
даних?
Як зберігається запит?
Опишіть режими, у  яких можна відкрити
запит.
Для чого призначено запис Критерії табли­
ці конструктора запиту?
Як можна змінити порядок розміщення по­
лів у  запиті?
Поясніть різницю між створенням запиту
для однієї таблиці та кількох таблиць.
Як створити запит на вибірку даних?
Які дії можна виконувати під час редагуван­
ня запиту?
1
2
3
4
5
6
7
8
Завдання для самостійного виконання
Створіть Запит41 на основі таблиці УЧНІ,
за допомогою якого вибираються прізвища
учнів, улюбленим предметом яких є історія.
Записи повинні мати поля Прізвище, Клас,
Улюблений предмет.
Створіть Запит42 на основі таблиці УЧНІ,
за допомогою якого вибираються прізвища
учнів, зріст яких більший від 170.
Створіть Запит43 на основі таблиці УЧНІ,
за допомогою якого вибираються прізвища
учнів, улюбленими предметами яких є  ма­
тематика та інформатика.
Створіть Запит44 на основі таблиць КЛАСИ
й  УЧНІ, за допомогою якого вибираються прі­
звища класних керівників учнів, які з інформа­
тики та історії мають бали, більші від 10.
Створіть Запит45 на основі таблиці УЧНІ,
за допомогою якого вибираються прізвища
учнів, які народилися у  2002 році.
Створіть Запит46 на основі таблиць КЛА­
СИ й УЧНІ, за допомогою якого для класів,
у  яких учнів більше ніж 24, вибираються
прізвища учнів, які з  історії мають більше
від 9 балів.
1
2
3
4
5
6
35
3.3. Запити з функціями і з полями, що обчислюються
Назвіть переваги використання стандартних функцій
у  запитах.
Ми вже розглянули запити, за допомогою яких із таблиць
можна вибрати необхідні дані за певними критеріями. Отри-
мані дані можна також опрацьовувати (наприклад, обчисли-
ти середнє значення поля, знайти серед знайдених запис із
мінімальним значенням певного поля тощо). Так, для таблиці
КАДРИ можна обчислити середній стаж роботи працівників
із вищою освітою.
У системі Access є вбудовані функції, що дають змогу уза-
гальнити дані деяких полів і полегшити опрацювання даних.
Запити, у яких використовуються такі функції, називають
по-різному, наприклад підсумковими запитами. Але найчас-
тіше їх називають запитами з функціями.
У системі Access 2.16 існує два способи використання пере-
лічених функцій:
• до запиту, відкритого в режимі таблиці, додається запис
підсумків, у якому для кожного поля може використову-
ватись одна з функцій;
• у режимі конструктора створюється підсумковий запит,
у якому обчислюються проміжні підсумки за групами
записів.
Розглянемо на прикладі 1 перший спосіб.
Деякі функції системи Access:
• Sum (Сума)  — обчислює суму
значень елементів поля;
• Avg (Середнє)  — обчислює
середнє значення поля;
• Max/Min (Максимум/
Мінімум)  — повертає елемент
із максимальним/мінімальним
значенням поля;
• Count (Кількість)  —
підраховує кількість записів
за значенням поля.
Приклад 1. Створити Запит_4, за допомогою
якого з таблиці КАДРИ вибираються запи-
си про співробітників, які народилися після
1961 року і мають стаж понад 15 років. Ре-
зультуючі записи повинні містити поля: Прі­
звище, Посада, Рік народження, Стаж і Оклад.
Підрахувати кількість результуючих записів
за значенням поля Прізвище й обчислити за-
гальну суму окладів цих осіб.
1. Створимо в режимі конструктора зви-
чайний запит на вибірку (рис. 3.5).
2. Збережемо запит з іменем Запит_4 і вико-
наємо його. Результат виконання запиту
наведено на рис. 3.6.
3. На вкладці Основне в групі Записи на-
тиснемо кнопку Підсумки (∑). Під остан-
нім записом таблиці (рис. 3.6) з’явиться
новий запис Підсумок. У цьому записі
клацнемо поле Прізвище та в списку,
що відкриється, виберемо функцію Кіль­
кість.
4. Аналогічно в цьому самому записі поля
Оклад виберемо функцію Сума.
У результаті отримаємо результат, як на-
ведено на рис. 3.7.
5. Для збереження внесених змін ще раз
клацнемо кнопку Зберегти.
Рис. 3.5. Приклад запиту на вибірку даних у режимі конструктора
36 Розділ 1
Рис. 3.6. Результат виконання запиту на вибірку даних
Рис. 3.7. Запит у режимі таблиці з підсумковим записом
Приклад 2.
1. Створимо звичайний запит на вибірку
в режимі конструктора, наприклад за-
пит, за допомогою якого з таблиці КА-
ДРИ вибираються прізвища працівників
з окладом понад 4000 грн і підрахову-
ється їх кількість. Результуючий перелік
записів має містити поля Справа, Прізви­
ще, Стаж, Оклад.
2. Уведемо в рядок Критерії поля Оклад ви-
раз 4000.
3. На вкладці Конструктор відкриємо меню
кнопки Відображення або приховання
й виконаємо команду Підсумки (∑).
У конструкторі запиту з’явиться рядок
Підсумок, а в кожному полі цього запису
буде зазначено Групування за.
4. У записі Підсумок клацнемо те поле,
за яким потрібно виконати підраху-
нок кількості записів (наприклад, поле
Справа).
У списку, що відкриється, виберемо
функцію Кількість (рис. 3.8).
5. Збережемо запит та виконаємо.
Рис. 3.8. Приклад підсумкового запиту в режимі конструктора
Розглянемо на прикладі 2 другий спосіб.
373.3. Запити з функціями...
Система Access 2016 дозволяє створювати запити з полями,
що обчислюються. Таких полів у запиті може бути кілька.
Запити з полями, що обчислюються, — це запити, які
дозволяють виводити в результуючий набір записів не лише
поля таблиць, а й нові поля, які створює сам користувач.
У запитах із полями, що обчислюються, містяться дані,
отримані під час обчислення даних полів таблиць. Напри-
клад, на основі даних таблиці КАДРИ в результуючий набір
записів можна ввести поле Доплата, у якому обчислюється до-
плата до окладу залежно від стажу працівника (приклад 3).
Приклад 3.
Припустимо, що за кожен рік стажу понад 5 років пра-
цівники отримують надбавку у розмірі 1% від посадового
окладу. Тоді надбавку можна обчислити за формулою:
Доплата  =  Оклад*(Стаж–5)/100.
На основі таблиці КАДРИ створимо запит з іменем Запит_5,
за допомогою якого виводяться всі записи таблиці з полями
Прізвище, Стаж, Оклад і Доплата, значення якого обчислюється
за наведеною формулою. Порядок створення запиту такого
типу несуттєво відрізняється від порядку звичайних запитів
(приклад 4).
Приклад 4.
1. Відкриємо БД atb, активуємо вкладку
Створення й клацнемо кнопку Макет
запиту. Із таблиці КАДРИ перенесемо
в конструктор запиту поля Прізвище,
Стаж, Оклад, а в наступне поле введе-
мо вираз: Доплата:[Оклад]*([Стаж]–5)/100.
Зверніть увагу на те, що імена полів,
які входять у вираз, беруться у ква-
дратні дужки.
2. Установимо в записі Сортування поля
Прізвище значення За зростанням для того,
щоб прізвища виводилися в алфавітному
порядку. Створений запит зображено на
рис. 3.9.
3. Збережемо запит з іменем Запит_5 (зга-
даємо, що для цього потрібно натиснути
кнопку Зберегти, у вікні, що відкриєть-
ся, ввести ім’я запиту й клацнути кноп-
ку ОК). У результаті виконання запиту
має з’явитися результат, як наведено на
рис. 3.10.
4. Закриємо Запит_5.
Рис. 3.9. Запит із полем, що обчислюється
Френсіс Елізабет Аллен — аме­
риканська вчена, піонерка в га­
лузі оптимізації компіляторів,
стала перша жінка, яка отрима­
ла премію Тюрінга.
38 Розділ 1
Рис. 3.10. Результат виконання запиту з полем, що обчислюється
Запитання для перевірки знань
Назвіть основні вбудовані функції для опра­
цювання даних у  запиті.
Які запити називають запитами з  полями,
що обчислюються?
Яке призначення має функція Caunt (Кіль­
кість)?
Назвіть способи використання вбудованих
функцій у  запитах.
Опишіть порядок створення запитів із функ­
ціями.
Як додати до запиту підсумковий запис
у  режимі таблиці?
Поясніть порядок створення підсумкового
запиту.
Поясніть порядок створення запиту з поля­
ми, що обчислюються.
1
2
3
4
5
6
7
8
Завдання для самостійного виконання
Створіть Запит51 на основі таблиці УЧНІ, за
допомогою якого підраховується кількість
учнів, улюбленими предметами яких є  гео­
графія та фізика.
Записи повинні містити поля Прізвище,
Клас, Улюблений предмет.
Створіть Запит52 на основі таблиці УЧНІ,
за допомогою якого обчислюється серед­
ній бал успішності учнів 11 класів окремо
з  інформатики й  окремо з  історії.
Створіть Запит53 на основі таблиці УЧНІ,
за допомогою якого обчислюється кількість
учнів, які мешкають на вул. Лугова.
Створіть Запит54 на основі таблиць КЛАСИ
й  УЧНІ, за допомогою якого обчислюється
спільний середній бал успішності з  інфор­
матики та історії учнів класу, яким керує
Дерев’янко Н. С.
Створіть Запит55 на основі таблиці УЧНІ,
за допомогою якого обчислюється середній
зріст учнів кожного класу.
Створіть Запит56 на основі таблиць КЛА-
СИ й  УЧНІ, за допомогою якого для учнів
10  класу, улюбленим предметом яких є  ін­
форматика, обчислюється різниця середньо­
го бала успішності з  інформатики та історії.
1
2
3
4
5
6
39
3.4. Запити з параметрами. Перехресні запити
Ви вже знайомі з  деякими типами запитів. Які ще функції
доцільно використовувати для виконання запитів?
Ми вже розглядали запити з постійними критеріями, тобто
запити, під час повторного виконання яких критерій відбору
записів не змінювався. На практиці ж часто виникає потреба
у зміненні цих критеріїв. Наприклад, під час першого вико-
нання запиту слід вибрати із таблиці КАДРИ прізвища дис-
петчерів зі стажем роботи понад 10 років, а під час другого —
прізвища диспетчерів зі стажем роботи понад 15 років. Такі дії
можна виконувати за допомогою запитів із параметрами.
Запит із параметрами — це запит, у процесі виконання
якого пропонується ввести деякі дані, наприклад умову, яку
потрібно вставити в поле. Його ще називають запитом зі
змінними критеріями.
За запитами з параметрами на початку їх виконання на
екран виводяться повідомлення про необхідність уведення
нового критерію (виразу). Методика створення запиту такого
типу несуттєво відрізняється від методики створення звичай-
ного запиту.
Розглянемо порядок створення такого запиту на прикладі 1.
Приклад 1.
Розробити запит з іменем Запит_6, за допо-
могою якого з БД atb вибиратимуться прізвища
працівників за посадами диспетчер і експерт із
магазинів, номери яких уводяться при вико-
нанні запиту. Результуючі записи мають місти-
ти поля Номер магазину й Адреса таблиці МАГА-
ЗИНИ і поля Прізвище й Посада таблиці КАДРИ.
Порядок створення запиту може бути таким.
1. Відкриємо БД atb і виконаємо коман-
ду Створення → Макет запиту. Виділимо
обидві таблиці, клацнемо кнопку Додати
й закриємо вікно Відображення таблиці.
2. Із таблиці МАГАЗИНИ перенесемо в таб-
лицю конструктора поля Номер магазину
й Адреса, а з таблиці КАДРИ — поля
Прізвище й Посада.
3. В умові завдання визначено, що за допо-
могою запиту мають відбиратися записи
тільки за посадами диспетчер і експерт,
тобто ця умова є незмінною. Тому в клі-
тинку на перетині запису Критерії і поля
Посада уводимо вираз диспетчер Or екс­
перт.
Щоразу після запуску при виконанні за-
питу користувач може вводити будь-який
номер магазину. Тому на перетині запи-
су Критерії та поля Номер магазину можна
увести, наприклад, текст [У якому магазині?].
Головне, щоб текст містився у квадратних
дужках.
У результаті отримаємо запит у режимі
конструктора, як наведено на рис. 3.11.
Рис. 3.11. Запит із параметром
Пошукова система Google
була створена у 1998 році.
За  перші два роки її існування
у БД цієї пошукової системи
було зібрано дані про мільярд
веб­сторінок, а у 2008 році —
близько трильйона.
40 Розділ 1
4. Збережемо й виконаємо Запит_6. На екра-
ні висвітлиться вікно Введення значення
параметра із запитанням У якому магазині?
(рис. 3.12).
Уведемо, наприклад, номер магазину 21,
клацнемо кнопку ОК. Отримаємо результат,
як наведено на рис. 3.13.
Рис. 3.12. Вікно введення значення параметра
Рис. 3.13. Результат виконання запиту з параметром
Проаналізуємо вміст таблиці КАДРИ й переконаємося, що
дійсно в магазині з номером 21 на посадах диспетчера й екс-
перта працюють відповідно Семко М. М. і Рябко Р. П.
Якщо потрібно здійснити пошук прізвищ диспетчерів
і експертів у кількох магазинах, то в запис Критерії поля Но­
мер магазину необхідно ввести іншу умову, а саме — діапазон
номерів магазинів, наприклад:
[Більше якого?] And [Менше якого?].
У процесі виконання запиту спочатку з’явиться повідом-
лення Більше якого?, а потім — Менше якого?, на які потрібно
дати певну відповідь.
Один запит може містити декілька параметрів у  різних
полях.
Перехресний запит — це запит на вибірку даних із мож-
ливостями групування записів.
Групування можна виконувати як за значеннями полів,
так і за значеннями записів. Наприклад, із таблиці КА-
ДРИ можна отримати кількість працівників на всіх посадах
у кожному магазині. Як заголовки полів можуть бути вико-
ристані й деякі вирази.
У режимі конструктора перехресний запит спочатку ство-
рюється як звичайний запит на вибірку даних, а потім уста-
новлюється режим перехресного запиту.
Розглянемо порядок створення перехресного запиту на
прикладі 2.
Для створення перехресного
запиту потрібно використати
щонайменше три поля:
• поле для визначення
заголовка записів;
• поле для визначення
заголовка полів;
• поле для вибору значень, над
якими будуть виконуватися
обчислення.
413.4. Запити з параметрами...
Приклад 2. Створити перехресний запит, за
допомогою якого підраховуються працівники
на кожній посаді в кожному магазині.
1. Створимо звичайний запит на вибірку
даних у режимі конструктора. Для цього
виконаємо команди Створити → Макет запи­
ту → Додати → Закрити. Перенесемо в таб-
лицю конструктора запиту поля Посада
й Номер магазину. Виконаємо запит і пере-
конаємося, що він функціонує правильно.
2. Перемкнемо запит у режим конструктора
і перетворимо в тип перехресний. У групі
Тип запиту клацнемо кнопку Перехресний.
У таблиці конструктора запиту з’являть-
ся записи Підсумок і Перехресний.
У записі Підсумок обох полів не змінюємо
значення Групування за. Клацнемо клітинку
на перетині поля Посада й запису Перехресний
і виберемо зі списку, що розкриється, Заголо­
вок рядка, а в полі Номер магазину цього само-
го запису — Заголовок стовпця.
3. У третє поле таблиці конструктора запи-
ту перенесемо поле Номер магазину, у за-
писі Підсумок якого встановимо функцію
Кількість, а в записі Перехресний — Зна­
чення.
У записі Сортування першого поля можна
встановити потрібне сортування записів. Таб-
лиця конструктора запиту матиме вміст, як
наведено на рис. 3.14.
Рис. 3.14. Таблиця конструктора перехресного запиту
Запитання для перевірки знань
Які запити називають запитами з  параме­
трами?
Які поля обов’язково використовують у  пе­
рехресних запитах?
Наведіть приклад запиту з  параметрами.
Поясніть сутність перехресного запиту.
Поясніть порядок створення запиту з  пара­
метрами.
Опишіть порядок створення перехресного
запиту.
1
2
3
4
5
6
Завдання для самостійного виконання
Створіть Запит61 із параметрами на основі
таблиці УЧНІ, за допомогою якого виво­
дяться прізвища учнів із різними улюбле­
ними шкільними предметами, назви яких
уводяться в  процесі виконання запиту.
Створіть Запит62 із параметрами на основі
таблиці УЧНІ, за допомогою якого виводять­
ся прізвища учнів різного зросту, значення
яких уводяться в  процесі виконання запиту.
Створіть перехресний Запит63, за допо­
могою якого підраховується кількість уч­
нів, які мають певний улюблений предмет,
у  всіх класах.
Створіть перехресний Запит64, за допомо­
гою якого обчислюється кількість учнів ок­
ремо в  кожному класі, зріст яких більший
за 163 см.
Створіть Запит65 із параметрами на основі
таблиці УЧНІ, за допомогою якого виво­
дяться прізвища учнів, їхній улюблений
предмет і  номер класу, що вводяться під
час виконання запиту.
Створіть перехресний Запит66, за допомо­
гою якого обчислюється кількість учнів, які
мають певний улюблений предмет, у  кож­
ному класі.
1
2
3
4
5
6
42
3.5. Запити на змінення даних
Дані можна змінювати безпосередньо в  таблицях. Чи
доцільно, на вашу думку, застосовувати запити для
виконання аналогічних операцій? Чому?
Запит на змінення даних — це запит, за допомогою якого
в таблицю вносяться зміни. Можна не лише вибирати необ-
хідні дані з таблиць, а й створювати з вибраних даних нову
таблицю, змінювати дані в уже створених таблицях, додавати
нові записи в створені таблиці, вилучати з таблиць записи.
В Access існують різні типи запитів на змінення (рис. 3.15).
Порядок створення запитів на змінення в режимі конструк-
тора такий самий, як і порядок створення звичайних запитів
на вибірку даних. Потім створений запит перетворюється на
запит одного з перелічених типів.
Далі розглянемо особливості розроблення запитів для ство-
рення нової таблиці та додавання записів у таблицю.
За допомогою запитів для створення нової таблиці вибира-
ються дані з однієї або кількох таблиць і з них формується
нова таблиця. Вона може бути розміщена як у поточній БД,
так і в іншій, ім’я якої вказується під час створення запиту
цього типу. Нова таблиця не має зв’язку з тими таблицями,
з яких вона створена. Отже, якщо в таблицях-джерелах від-
булися зміни, то дані в ній автоматично не оновлюються.
Розглянемо створення запиту на прикладі 1.
оновлення даних
вилучення даних
додавання 
нових записів
створення таблиць
Запит
Рис. 3.15. Типи запитів даних
Приклад 1. Розробити запит, за допомогою
якого на основі даних таблиць МАГАЗИНИ
й КАДРИ створюється нова таблиця з іменем
ДОДАТКОВА, у якій містяться поля Справа,
Прізвище, Рік народження і Працівників тих мага-
зинів, де кількість працюючих перевищує 14.
1. У відкритій БД atb виконаємо команду
Створити → Макет запиту, виділимо обидві
таблиці й перенесемо з таблиці КАДРИ
поля Справа, Прізвище й Рік народження,
а з таблиці МАГАЗИНИ — поле Праців­
ників. Закриємо вікно Відображення таб-
лиці. У запис Критерії поля Працівників
уведемо вираз 14. Виконаємо запит і пе-
реконаємося, що отримано правильний
результат.
2. Перемкнемо запит у режим конструктора
й перетворимо запит на вибірку в запит
на створення таблиці. Для цього на вклад-
ці Конструктор у групі Тип запиту клацнемо
кнопку Створення таблиці. Відкриється ві-
кно Створити таблицю (рис. 3.16).
Рис. 3.16. Вікно для створення таблиці
3. У поле Ім’я таблиці введемо ім’я но-
вої таблиці, наприклад ДОДАТКОВА,
і ввімкнемо перемикач Поточна база да­
них, оскільки цю таблицю зберігатимемо
у відкритій (поточній) БД atb. Після цьо-
го клацнемо кнопку ОК.
4. На панелі швидкого доступу клацнемо
кнопку Зберегти й збережемо запит із
іменем Запит_7.
5. Виконаємо Запит_7 — відкриється вікно
(рис. 3.17).
433.5. Запити на змінення...
Рис. 3.17. Вікно для підтвердження збереження таблиці
Запити на додавання даних призначено для додавання
нових записів у таблицю на основі опрацювання за певними
критеріями даних, які вже є в раніше створених таблицях.
Інколи для додавання всіх записів усіх полів із наявної
таблиці в нову доцільніше скористатися командами Копіювати
і Вставити. Записи можна додавати як у відкриту, так і в за-
криту таблицю. Якщо записи додаються в таблицю іншої БД,
то слід вказати ім’я та маршрут файла цієї БД.
Загальний порядок розроблення запитів такий:
1) створюється запит на вибірку, за допомогою якого фор-
муються необхідні записи для додавання;
2) перетворюється запит на вибірку в запит на додавання;
3) вибирається таблиця, у яку додаватимуться записи;
4) зберігається й виконується запит.
Розглянемо порядок дій на прикладі 2.
Якщо у  записі Поле таблиці
конструктора запиту є  символ
«зірочка» (*), то це означає,
що використовувати в  запиті
окремі поля цієї самої таблиці
неможливо.
6. Для збереження таблиці в поточній БД
клацнемо кнопку Так. В області перехо-
дів з’явиться ім’я таблиці ДОДАТКОВА.
Після цього закриємо запит і відкриємо
створену таблицю, вміст якої наведено
на рис. 3.18.
7. Проаналізуємо вміст таблиці й перекона-
ємося, що вона сформована правильно.
Рис. 3.18. Вміст таблиці ДОДАТКОВА
Приклад 2. Створити Запит_8, за допомогою
якого до таблиці ДОДАТКОВА додаються
з таблиць МАГАЗИНИ й КАДРИ прізвища
працівників магазинів, у яких працює 13 ро-
бітників, народжених у 1975 році.
1. Створимо запит на вибірку. Із таблиці
МАГАЗИНИ перенесемо в таблицю кон-
структора запитів поля Справа, Прізвище
й Рік народження, а з таблиці КАДРИ —
поле Працівників. Після виконання цього
запиту має з’явитися результат, як наве-
дено на рис. 3.19.
Рис. 3.19. Запит на вибірку даних із таблиць
МАГАЗИНИ й КАДРИ
2. Перетворимо створений запит на ви-
бірку в запит на додавання. Для цьо-
го перейдемо в режим конструктора
і в групі Тип запиту виконаємо команду
Додавання.
44 Розділ 1
3. У вікні Додавання, що відкрилося, введе-
мо ім’я таблиці — ДОДАТКОВА, вибере-
мо варіант Поточна база даних і клацнемо
кнопку ОК.
4. Збережемо запит з ім’ям Запит_8 і ви-
конаємо його.
У результаті відкриється вікно, як наве-
дено на рис. 3.20.
Рис. 3.20. Вікно для підтвердження додавання запису
Рис. 3.21. Таблиця після додавання запису
5. Підтвердимо додавання запису, для чого
клацнемо кнопку Так. Закриємо Запит_8
і відкриємо таблицю ДОДАТКОВА.
У результаті повинна з’явитися таблиця,
як наведено на рис. 3.21.
Запитання для перевірки знань
Назвіть типи запитів на змінення.
Як перетворити запит на вибірку в запит на
створення таблиці?
Як перетворити запит на вибірку в запит на
додавання?
Як створити запит для створення таблиці?
Яка сутність запитів на додавання записів?
Опишіть загальний порядок створення за­
питу на додавання.
Наведіть приклад запиту для створення но­
вої таблиці.
Наведіть приклад запиту на додавання.
1
2
3
4
5
6
7
8
Завдання для самостійного виконання
Розробіть Запит71, за допомогою якого на
основі таблиці УЧНІ створюється таблиця
ПЕРША1. Таблиця повинна містити дані про
учнів 10 класу з полями Прізвище, Дата на-
родження, Зріст, Улюблений предмет, Клас.
Створіть Запит72, за допомогою якого до
таблиці ПЕРША1 додаються записи про учнів
9 класу з тими самими полями, що й у завдан­
ні 1. Збережіть таблицю з іменем ПЕРША2.
Створіть Запит73, за допомогою якого
на основі даних таблиць КЛАСИ й  УЧНІ
створюється таблиця з  іменем ПЕРША3
з  полями Прізвище, Дата народження,
Улюблений предмет, Клас для класів,
у  яких кількість учнів менша за 27.
Розробіть Запит74, за допомогою якого до
таблиці ПЕРША3 додається поле Інформа-
тика. Дані збережіть у таблиці ПЕРША4.
Розробіть Запит75, за допомогою якого
до таблиці ПЕРША4 додаються записи про
класи, у яких кількість учнів дорівнює 27
і  які мають з історії успішність 9 балів.
1
2
3
4
5
45
Рис. 4.1. Засоби створення форм
4. Інтерфейс користувача. Основи мови SQL.
Імпорт та експорт даних
4.1. Створення інтерфейсу користувача для введення даних
у базу даних
Спробуйте самостійно визначити основні недоліки таблиць
і  запитів для роботи з  даними з  точки зору кінцевого
користувача.
Як ви знаєте, дані БД зберігаються у таблицях, і в них
можна безпосередньо вводити дані, редагувати їх і вилучати.
Не кожен користувач має право це робити. Задля забезпечен-
ня цілісності даних і безпеки БД для більшості користувачів
доступ до структури і власне таблиць БД має бути обмеже-
ний. Наприклад, продавець супермаркету має право внести
дані про реалізацію конкретного товару, але не може змінити
ціну товару, це право належить адміністрації.
У середовищі Access для введення даних використовується
форма.
З одного боку, форми забезпечують безпеку даних від не-
санкціонованого доступу, а з іншого — спрощують сам про-
цес уведення даних — користувачу не потрібно переглядати
таблицю з десятками полів і відшукувати потрібні дані. Ко-
ристувачу пропонується бланк, наприклад, із двома-трьома
полями, у які він має право внести необхідні дані. Важливо
й те, що за допомогою форми дані можуть оновлюватися од-
ночасно у кількох пов’язаних таблицях.
Система Access 2016 має різні засоби створення форм, які
містяться на вкладці Створення у групі Форми (рис. 4.1). Найпо-
тужнішим інструментарієм створення форм є Конструктор форм.
Із таблицею як об’єктом працює
в  основному адміністратор
БД. Для роботи з  даними
користувачам потрібен більш
простий і  зручний інтерфейс.
Для кожної категорії працівників
бажано розробити свої правила
й  засоби роботи з  БД.
Форма — це фактично
електронний бланк, який для
кожної групи користувачів
має свою структуру. У  цій
структурі містяться імена
полів, доступні саме для цієї
групи. Після заповнення полів
дані потрапляють у  відповідні
поля таблиць для подальшого
збереження.
Розглянемо порядок використання Конструктора форм для
введення даних у БД на прикладі 1.
Приклад 1. Створити для БД atb на ос-
нові таблиці МАГАЗИНИ форму з іменем
Форма_6 і з полями Номер магазину, Адреса,
Директор, Телефон. Перед першими двома
полями ввести текст Координати, а ще перед
двома — Контакти.
1. Виділимо в області переходів таблицю
МАГАЗИНИ, активуємо вкладку Створи­
ти й у групі Форми виконаємо команду
Конструктор форм. На екрані з’явиться
порожня форма з розділом Подробиці
й буде активовано вкладку Конструктор.
46 Розділ 1
2. У групі Колонтитули клацнемо кнопку
Назва. У результаті відкриється вікно
(рис. 4.2), у якому містяться підрозділи
Верхній колонтитул форми, Нижній колонти­
тул форми і текстове поле з іменем Форма1.
3. Установимо курсор у поле Форма1, введе-
мо текст заголовка, наприклад Магазини
нашого району, і клацнемо кнопку Enter.
4. У верхню частину області Подробиці уве-
демо текст Координати, який відповідно
до умови має міститися перед першими
двома полями. Для цього клацнемо кноп-
ку Напис, установимо курсор у потрібну
позицію області Подробиці, уведемо текст
Координати й клацнемо кнопку Enter.
5. У правій частині вікна має розташовува-
тися поле Список полів (якщо воно відсут-
нє, клацнемо кнопку Додавання наявних
полів, і воно з’явиться). У цьому полі
клацнемо кнопку Відображати всі таблиці.
Ліворуч від назви таблиці МАГАЗИНИ
встановимо перемикач у положення (–) —
під назвою таблиці відкриється список її
полів. Перемістимо поле Номер магазину
в те місце розділу Подробиці, куди слід
помістити це поле. У результаті на формі
буде розташовано два пов’язані елементи:
власне поле введення і підпис для нього
(підпис співпадає з іменем цього поля).
6. Аналогічно перемістимо до бланку фор-
ми поле Адреса.
7. Після двох перших полів розмістимо на-
зву ще двох полів. Для цього за аналогі-
єю у групі Елементи керування клацнемо
кнопку Напис, установимо курсор у по-
трібну позицію області Подробиці, уведемо
назву Контакти й натиснемо клавішу Enter.
Перемістимо поля Директор і Телефон
у розділ Подробиці. Розмістимо елементи
форми більш зручно (рис. 4.3).
Рис. 4.2. Порожня форма в режимі конструктора
Рис. 4.3. Форма, створена в режимі конструктора
474.1. Створення інтерфейсу...
Після цього можна закрити вікно Список
полів. Якщо у форму необхідно додати поля
з кількох таблиць, то їх потрібно розкрити
так само, як і поля таблиці МАГАЗИНИ.
8. Збережемо форму з іменем Форма_6. Те-
пер форму можна переглянути в таких
режимах: Режим форм, Подання таблиці,
Режим розмітки.
На рис. 4.4 створену форму відкрито
в режимі форми.
Рис. 4.4. Форму відкрито в режимі форми
Зовнішній вигляд форми можна налаштувати з урахуван-
ням потреб користувача. Для цього слід відкрити контекстне
меню форми: установити курсор на вільному місці форми,
відкритої в режимі конструктора, і клацнути праву кнопку
миші.
Вміст контекстного меню форми зображено на рис. 4.5.
Щоб змінити колір фону форми, вказівник миші слід уста-
новити на команді Колір заливки/фону та в наборі кольорів, що
відкриється, вибрати потрібний колір.
Або вибрати інший спосіб: відкрити контекстне меню за-
головка форми чи інших її компонентів і встановити потрібні
кольори. На формі можна також установити або зняти ліній-
ку, сітку чи виконати інші налаштування.
Один із варіантів налаштування зовнішнього вигляду фор-
ми наведено на рис. 4.6.
Рис. 4.5. Контекстне меню форми Рис. 4.6. Варіант оформлення
зовнішнього вигляду форми
За допомогою кнопок навігації
можна перейти до будь­якого
запису.
48 Розділ 1
Порядок додавання записів на основі створеної форми роз-
глянемо на прикладі 2.
Рис. 4.7. Запис, доданий у таблицю
Рис. 4.8. Вміст таблиці МАГАЗИНИ після додавання запису
Приклад 2.
1. Відкриємо Форму_6 у режимі форми.
Перейдемо на порожній запис, для чого
клацнемо, наприклад, кнопку Створити
запис, розташовану на панелі навігації.
2. Уведемо в порожній рядок форми дані,
наприклад такі: Номер магазину — 6;
Адреса  — вул. Річкова, 24; Директор —
Середа К. М.; Телефон — 234­67­92
(рис. 4.7).
3. Збережемо й закриємо форму. Таблиця
МАГАЗИНИ, відкрита в режимі подан-
ня таблиці, набуде вмісту, як наведено
на рис. 4.8.
Зверніть увагу на те, що поле Працівників для введеного за-
пису містить нуль, оскільки у Формі_6 такого поля створено
не було і дані в нього не вводилися.
Запитання для перевірки знань
Яке призначення Конструктора форм?
Поясніть порядок створення форм за допо­
могою Конструктора форм.
Як перейти до будь­якого запису?
Поясніть порядок оформлення загального
вигляду форми.
1
2
3
4
Завдання для самостійного виконання
Створіть за допомогою Конструктора форм
для таблиці КЛАСИ форму з  полями Клас,
Учнів, Класний керівник. Здійсніть навіга­
цію по записах форми.
Створіть за допомогою Конструктора форм
для таблиці УЧНІ форму з  полями Прізви-
ще, Клас, Інформатика.
Створіть за допомогою Конструктора
форм для таблиці КЛАСИ та  таблиці УЧНІ
форму з  полями Клас, Класний керівник,
Прізвище, Адреса, Дата народження. Пе­
регляньте форму в  різних режимах. Само­
стійно виберіть колір кожного компонента
форми.
1
2
3
49
4.2. Основи мови запитів SQL
Поміркуйте, як мова запитів SQL розширює функціональні
можливості СУБД для роботи з  даними.
Сучасні системи управління реляційними БД, у тому чис-
лі Access 2016, містять потужні візуальні засоби, зрозумілий
і зручний графічний інтерфейс, що забезпечує ефективну ро-
боту з БД. Водночас існують спеціальні мови для створення
й супроводу БД. Однією з таких мов є SQL (Structured Query
Language — структурована мова запитів).
У системі Access 2016 реалізовано частину SQL, що забезпе-
чує формування запитів і роботу з ними. Далі стисло розгля-
немо основні відомості саме про мову запитів SQL.
Як і інші мови програмування, SQL має власний синтаксис.
У синтаксичних конструкціях використовуються такі понят-
тя, як ключові слова, оператори, інструкції, речення та ін.
У мові запитів SQL найчастіше використовуються такі опе-
ратори:
• SELECT — визначає поля, із яких необхідно вибрати дані;
• FROM — визначає таблицю, поля якої вказано в реченні
SELECT; ключові слова SELECT і FROM завжди використо-
вуються разом;
• WHERE — визначає умову відбору полів, за якою вибира-
ються дані;
• ORDER BY — визначає порядок сортування отриманих
результатів;
• GROUP BY — визначає порядок групування записів.
Інструкція  — це логічно завершена конструкція, яка може
інтерпретуватися самостійно. Вона складається із речень
і  закінчується крапкою з  комою.
Речення — це частина інструкції, що обов’язково містить
ключове слово, яке визначає його назву.
Наприклад, SELECT Прізвище називають реченням SELECT,
а WHERE Посада = ’вчитель’ — реченням WHERE.
У мові SQL структура найуживаніших речень така:
SELECT список полів ­­ речення SELECT
FROM ім’я таблиці ­­ речення FROM
WHERE ім’я поля = умова; ­­ речення WHERE
SQL фактично стала стандартом
мови реляційних БД. Вона
постійно розвивається
й  удосконалюється, змінюються
її міжнародні стандарти.
Наприклад, за допомогою інструкції:
SELECT Прізвище, Адреса, Телефон
FROM Школа
WHERE Посада = 'вчитель';
із таблиці Школа вибираються всі записи,
у полі Посада яких є значення вчитель.
Результуючий набір записів містить поля
Прізвище, Адреса, Телефон.
Інструкції можуть містити
коментарі, які не впливають
на їх виконання. Найчастіше
застосовуються однорядкові
коментарі, які починаються
двома символами «­­».
50 Розділ 1
Конструкції у  фігурних дужках є  обов’язковими,
у  квадратних дужках  — необов’язковими.
Багато термінів, понять, синтаксичних правил і властивос-
тей мови SQL збігаються з відповідними назвами класичних
мов програмування. Усі конструкції мови (ключові слова,
оператори тощо) однаково сприймаються і великими, і мали-
ми літерами.
За стандартом мови SQL для імен об’єктів (таблиць, полів та
ін.) використовується латинський алфавіт, але в багатьох ви-
падках допускається використання й національного алфавіту.
Розглянемо порядок створення найпростішого запиту за
допомогою мови SQL на прикладі.
Приклад. Створити найпростіший запит на
основі таблиці КАДРИ за допомогою мови за-
питів SQL.
1. У системі Access 2016 виконаємо команду
Створити → Макет запиту.
2. Закриємо вікно Відображення таблиці.
3. На вкладці Конструктор у групі Результати
клацнемо кнопку SQL. Відкриється вікно
Запит1, у робочому полі якого висвітлить-
ся оператор SELECT. Він обов’язково ви-
користовується з оператором FROM і має
таку мінімальну загальну структуру:
SELECT список імен полів
FROM ім’я таблиці;
Наприклад, інструкція:
SELECT*
FROM ім’я таблиці;
забезпечує виведення всіх полів таблиці.
Після виконання інструкції:
SELECT Справа, Прізвище, Освіта, Стаж
FROM КАДРИ;
отримаємо результат, як наведено на
рис. 4.9.
Рис. 4.9. Записи таблиці КАДРИ
з  окремими полями
Як бачимо, виводяться записи з полями, зазначені в опе-
раторі SELECT.
Зауважимо, що порядок розміщення полів у реченні SELECT
може бути довільним і не збігатися з порядком їх розміщен-
ня в початковій таблиці.
Поля виводяться в порядку їх розміщення у реченні SELECT.
Запитання для перевірки знань
Які оператори містить найпростіша інструк­
ція мовою SQL?
Поясніть загальний формат найпростішої
інструкції мовою SQL.
Наведіть приклад найпростішої інструкції
мовою SQL.
Які дужки використовують для обов’язко­
вих конструкцій?
1
2
3
4
51
4.3. Імпорт і експорт об’єктів баз даних
Чому, на вашу думку, виникає потреба імпортувати
й  експортувати дані із БД в  інші об’єкти?
На практиці досить часто доводиться одночасно працювати
не з одним файлом БД, а з кількома, у тому числі розміще-
ними в Інтернеті. У таких випадках виникає потреба в обмі-
ні даними (об’єктами) між БД, створеними за допомогою од-
нієї СУБД (наприклад, Access 2016), різних СУБД (наприклад,
Access і Paradox).
Окрім того, інколи буває потрібно обмінятися даними між
Access та іншими програмами пакета Windows, наприклад
Word-, Excel-, Outlook-, HTML- і XML-документами.
Найпростішим способом обміну об’єктами між Windows-про-
грамами є копіювання об’єктів і вставлення за допомогою бу-
фера обміну. Наприклад, у документ, створений у текстовому
процесорі Word, можна додати рисунок, створений у графічно-
му редакторі Paint.
У системі Access 2016 для обміну об’єктами здійснюють
спеціальні операції, що отримали назву імпорту й експорту.
Крім того, для отримання даних із інших зовнішніх джерел
системою Access підтримується технологія зв’язування, яка
тут не розглядається.
У процесі імпортування об’єкти перетворюються у формат
Access 2016 і розміщуються в новому об’єкті, а в об’єкті-дже-
релі залишаються без змін. Наприклад, нова і початкова таб-
лиці існують незалежно одна від одної. Технології імпорту
з різних систем (Word, Excel та ін.) відрізняються одна від
одної. Але загальний порядок імпортування однаковий для
всіх систем.
Етап 1
Відкриття БД­приймача і  вибір системи,
з  якої здійснюватиметься імпортування
(наприклад, Access, Excel).
Етап 2
Вибір об’єктів, які необхідно імпортувати,
і  налаштування параметрів їх імпортування
(у разі необхідності).
Етап 3 Виконання імпортування.
За своїм змістом експорт є операцією, зворотною до імпор-
ту. У процесі експортування здійснюється перенесення даних
із об’єктів системи Access в іншу БД цієї системи, а також
у зовнішні файли різних форматів. Під час експортування
дані перетворюються у новий формат, а об’єкти-джерела за-
лишаються незмінними.
Оскільки загальні принципи імпортування й експорту-
вання всіх типів об’єктів БД ідентичні, далі розглядатимемо
лише технологію та правила імпортування об’єктів із однієї
БД Access 2016 в іншу БД Access 2016.
Для отримання об’єктів у  БД із
зовнішніх джерел в  Access 2016
використовується технологія
імпорту, а  для передавання
об’єктів в  інші застосунки  —
технологія експорту.
Імпортувати можна будь­які
об’єкти БД. Одночасно можна
імпортувати як кілька об’єктів
одного типу (наприклад, кілька
запитів), так і  кілька об’єктів
різного типу (наприклад, кілька
таблиць і  запитів).
52 Розділ 1
Приклад. Здійснити імпорт таблиці КАДРИ
і запиту Запит_1 із БД atb у БД skola.
Отже, джерелом є база atb, а приймачем —
база skola.
1. Відкриємо БД-приймач skola, активуємо
вкладку Зовнішні дані. Панель інстру-
ментів набуде вигляду, як зображено на
рис. 4.10.
Рис. 4.10. Панель інструментів вкладки Зовнішні дані
2. У групі Імпорт і  зв’язування відкриємо
меню кнопки Нове джерело даних, уста-
новимо в ньому курсор на назві Із бази
даних. Відкриється перелік джерел, як
наведено на рис. 4.11.
3. Оскільки виконується імпорт об’єктів із
однієї БД Access в іншу БД Access, клац-
немо кнопку Access. Відкриється перше
вікно Майстра імпорту, як наведено на
рис. 4.12.
Рис. 4.11. Перелік джерел даних для імпортування
Рис. 4.12. Перше вікно Майстра імпорту
Розглянемо технологію імпортування на прикладі.
534.3. Імпорт і експорт об’єктів...
У поле Ім’я файла цього вікна можна
ввести повне ім’я файла БД-джерела. Мож-
на також скористатися кнопкою Огляд…
і вибрати файл atb. Клацнемо кнопку Огляд
та знайдемо ім’я atb, увімкнемо перемикач
Імпортувати таблиці, запити… і клацнемо
кнопку ОК. Відкриється вікно Імпортувати
об’єкти (рис. 4.13).
Рис. 4.13. Вікно для імпортування об’єктів
У цьому вікні містяться вкладки об’єктів
БД-джерела atb. На вкладці Таблиці виберемо
таблицю КАДРИ, для чого встановимо курсор
на її імені й клацнемо праву кнопку миші.
Потім на вкладці Запити виберемо Запит_1.
4. Можна налаштувати деякі параметри ім-
портування вибраних об’єктів. Для цього
клацнемо кнопку Параметри. У резуль-
таті у вікні відобразиться область нала-
штування параметрів імпорту (рис. 4.14).
Рис. 4.14. Вікно з областю налаштування параметрів імпорту
Розглянемо призначення параметрів групи
Імпорт таблиць.
Перемикач Визначення та дані встановлю-
ється в тому випадку, коли з БД-джерела не-
обхідно імпортувати і структури, і дані всіх
таблиць, вибраних користувачем у допоміж-
ному вікні.
Якщо вибрати перемикач Лише визначення, то
імпортуватимуться тільки структури таблиць,
а не дані. Увімкнемо перший перемикач.
Запит_1 створено на основі таблиці КАДРИ,
яку вже імпортовано. Отже, для його запуску
в БД skola жодних операцій виконувати не
треба, увімкнемо перемикач Як запити.
54 Розділ 1
5. Для збереження всіх налаштувань
клацнемо кнопку ОК. Одразу почнеться
імпортування вибраних об’єктів у БД
skola. Після завершення імпортування на
екран буде виведено повідомлення про
результат виконання операції, як наве-
дено на рис. 4.15.
6. Усі кроки, що виконувалися під час ім-
портування, можна зберегти для того,
щоб за потреби можна було повторити
їх без використання Майстра імпорту (за
замовчуванням ці кроки не зберігають-
ся). Для збереження виконаних кроків
у вікні, що відкрито, необхідно ввімкну-
ти прапорець Зберегти етапи імпортування.
Але тут виконувати цю операцію немає
потреби, тому просто клацнемо кнопку
Закрити. Якщо тепер відкрити БД skola,
то в ній побачимо таблицю КАДРИ і За-
пит_1. Їх вміст такий самий, як у БД atb.
Рис. 4.15. Вікно для збереження етапів імпортування
Щоб імпортувати текстовий файл, його необхідно попе-
редньо структурувати так, щоб кожний рядок файла був за-
писом, а кожний запис поділявся на окремі поля.
Для розмежування полів часто використовується крапка
з комою. Приклад структурованого текстового файла:
Микола; 050-400-22-33; 21 січня
Олена; 063-333-11-55; 5 травня
Запитання для перевірки знань
Опишіть найпростіший спосіб обміну дани-
ми між програмами Windows.
Між якими програмами можна здійснювати
обмін даними з  БД Access 2016?
Яка сутність імпорту даних у  БД Access?
З  якою метою здійснюється налаштування
параметрів імпортування?
Поясніть загальний порядок імпортування
даних у  БД Access.
Що використовують для розмежування полів?
1
2
3
4
5
6
Завдання для самостійного виконання
Для виконання завдання створіть на жор-
сткому диску БД persha. Імпортуйте в  БД
persha форму з  іменем Форма_1 із БД atb.
Перевірте правильність імпортування.
Для імпортування таблиці
із  книги Excel потрібно відкрити
БД-приймач, на вкладці
Зовнішні дані клацнути
кнопку Excel і вибрати команду
Майстра імпорту.
Тест 1 Тест 2 Тест 3 Тест 4
Тестові завдання
з  автоматичною перевіркою
результату на  сайті
interactive.ranok.com.ua
555.1. Методи проектування...
Розділ 2. АЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИ
5. Алгоритми і числа
5.1. Методи проектування і подання алгоритмів
Пригадайте, у  якій формі ви подавали алгоритми, яких
правил дотримувались у  процесі розроблення програм.
Проектування алгоритмів і програм є виключно творчим
процесом. Не існує універсального методу розроблення ал-
горитму розв’язування для будь-якого завдання. Для кож-
ного завдання необхідно знайти свій, найбільш раціональ-
ний метод.
У процесі проектування алгоритму намагаються:
• забезпечити мінімальний час розв’язування задачі;
• використати мінімальний обсяг пам’яті;
• досягти потрібної точності й надійності обчислення;
• забезпечити ефективне використання можливостей наяв-
них бібліотек, зокрема мінімізувати вартість розроблен-
ня алгоритму.
Методи проектування алгоритмів класифікуються за ба-
гатьма ознаками. Основними з них є ступінь автоматизації
проектування алгоритмів і програм та методологія проекту-
вання програмних продуктів (рис. 5.1).
Неавтоматизовані методи використовуються у процесі
розроблення невеликих і нескладних програмних продуктів
за участю невеликої кількості розробників. Такі методи за-
стосовуються, зокрема, у процесі розроблення програмних
продуктів навчального призначення.
Автоматизовані методи застосовуються у великих компа-
ніях і потребують додаткового апаратно-програмного забезпе-
чення і високої кваліфікації працівників.
В основі структурного проектування програмних про-
дуктів лежать послідовна декомпозиція і структурування
програмного продукту на окремі складові. Структурне про-
ектування програмних продуктів засноване на створенні ал-
горитмів із базових структурних алгоритмічних одиниць. До-
ведено, що такими одиницями є: слідування, розгалуження
і повторення (цикли). Ці алгоритмічні структури послідовно
з’єднуються або укладаються одна в одну з дотриманням пев-
них правил. Алгоритм виконується послідовно зверху вниз.
Правильність виконання алгоритму можна відслідкову-
вати на кожному етапі його побудови і виконання. Будь-
який алгоритм може бути еквівалентно поданий структу-
рованим алгоритмом, що складається з базових алгоритміч-
них структур.
За методологією
проектування
програмних продуктів
За ступенем автомати-
зації проектування
алгоритмів і  програм
Неавтоматизовані
(традиційні)
Автоматизовані
(CASE-технологія)
Структурне
програмування
Об’єктно-
орієнтоване
програмування
Методи проектування
алгоритмів
Рис. 5.1. Класифікація методів
проектування алгоритмів
56 Розділ 2
Розглянемо типові методи структурного проектування про-
грамних продуктів:
Метод Опис
Спадний
(згори вниз)
Його сутність полягає в  тому, що задача поступово (за кроками) ділиться на ряд
допоміжних підзадач (підалгоритмів), кожна з  яких може бути реалізована сукупні-
стю простих і  елементарних операцій (процедур).
Висхідний
(знизу догори)
Вже наявні й  заздалегідь розроблені допоміжні алгоритми розв’язування окремих
підзадач поступово об’єднуються в  загальну структуру доти, доки не буде досягну-
то розв’язання поставленого завдання.
Модульний
Модуль  — це окрема самостійна частина алгоритму (деякий блок), що має свою
назву, функціональну цілісність і  завершеність. Посилання на модуль здійснюється
за допомогою його імені. Виклик і  актуалізація модуля можливі лише через його
заголовок.
Перевага модульного методу полягає в  тому, що різні модулі одночасно можуть
розробляти різні фахівці. Кожний модуль може тестуватися і  налагоджуватися ок-
ремо від інших.
Згадаемо способи подання алгоритмів:
Спосіб Опис
Словесний
Передбачає опис алгоритму природною мовою, широко застосовується у  повсяк-
денному житті (наприклад, у  вигляді інструкцій з  експлуатації приладів, рецептів
виготовлення ліків тощо). Інструкція складається з  указівок, форма запису яких
довільна.
Головне, щоб указівки були точними й  зрозумілими всім користувачам.
Словесний спосіб є  досить простим і  доступним, проте опис алгоритмів часто
є  громіздким, а  їхні вказівки можуть сприйматися різними виконавцями неодно-
значно.
Словесно-
формульний
Використовує природну мову, а  також спеціальні символи, що застосовуються
в  певній науковій галузі (наприклад, хімічні формули, математичні вирази та ін.).
Наприклад, широко застосовується оператор присвоювання (:=). У  мові Python, що
застосовується в певній науковій галузі (наприклад, хімічні формули, математичні
вирази та ін.), цей оператор позначається символом «=» (дорівнює).
Наприклад, розв’яжемо квадратне рівняння ax2 
+ bx + c = 0.
1.	 Уведемо значення змінних a, b, c.
2.	 Обчислимо дискримінант
2
: 4d b ac= −=
2
: 4d b ac= − .
3.	Якщо d  0, то виконаємо пункт 6, інакше  — пункт 4.
4.	 Знайдемо корені рівняння: 1
2
b d
a
x
− −
= ; x
b d
a
2
2
=
− +
.
5.	 Перейдемо до пункту 7.
6.	 Дискримінант від’ємний. Рівняння не має розв’язків.
7.	Кінець.
Графічний
Передбачає подання алгоритму у  вигляді геометричних фігур (блоків), з’єднаних
стрілками (лініями зв’язку).
Подання алгоритмів за допомогою блоків називають блок-схемами, вони мають
високу наочність.
575.1. Методи проектування...
Завершення таблиці
На рис. 5.2 зображено основні блоки, за допомогою яких створюються блок-схеми
алгоритмів.
Початок
Кінець
Введення
Виведення
Дія (процес)
а б в г
Так Умова Ні
Рис. 5.2. Основні графічні позначення на блок-схемах:
термінатори (а); дані (б); процес (в); перевірка умови (г)
Комбінований
Поєднує в  собі подання алгоритмів, засноване на словесному, словесно-формуль-
ному і  графічному методах.
Об’єктно-орієнтоване проектування програмних продуктів
засноване на тому, що кожний об’єкт об’єднує дані й програ-
ми (методи) їх опрацювання в єдину конструкцію. Кожний
об’єкт належить до відповідного класу. При цьому створюєть-
ся ієрархія класів, визначаються властивості об’єктів і роз-
робляються методи їх опрацювання, а також дотримуються
специфічні принципи об’єктно-орієнтованого програмування.
Запитання для перевірки знань
Які існують методи подання алгоритмів?
За якими ознаками класифікують методи
проектування програмних продуктів?
Назвіть методи структурного проектування
програмних продуктів.
Поясніть сутність структурного проектування.
У чому полягає сутність об’єктно-орієнтова-
ного програмування?
Які критерії слід ураховувати під час проек-
тування алгоритму?
Назвіть переваги й  недоліки кожного мето-
ду проектування алгоритмів.
1
2
3
4
5
6
7
Завдання для самостійного виконання
Користуючись словесним способом подан-
ня, опишіть алгоритм виправлення помилок
у  слові алгарітм у текстовому процесорі
Word, щоб отримати слово алгоритм.
Відомо, які оцінки з усіх предметів отримали
за І півріччя учні Ніна та Антон. Розробіть ал-
горитм визначення, у  кого з  учнів середній
бал успішності вищий, у графічний спосіб.
Знайдіть в  Інтернеті відомості про відстані
від Києва до трьох районних центрів вашої
області. Користуючись словесно-формульним
способом, розробіть алгоритм визначення,
який із них розташований ближче до Києва.
Знайдіть в  Інтернеті назви п’яти найбільших
за кількістю населення міст вашої області.
Користуючись словесно-формульним спосо-
бом, розробіть алгоритм визначення назви
міста, в  якому мешкає людей найбільше.
Розробіть блок-схему алгоритму обчислен-
ня виразу y
a b c a
a b a
=
+( )⋅ − =
+ ≠




3 2
3 2
1 0
0
, ,
, .
якщо
якщо
Розробіть блок-схему алгоритму обчислен-
ня виразу y
a bx x
a c x
x
b
=
− 
− +









2
2
0
0
, ,
, .
якщо
якщо
У банк покладено S1 грн під k  відсотків
річних. Розробіть блок-схему алгоритму ви-
значення, через скільки років сума вкладу
перевищуватиме S2 грн.
1
2
3
4
5
6
7
58
5.2. Поняття про кодування і складність алгоритмів
З якими мовами програмування ви вже знайомі? Чи можна один
і  той самий алгоритм реалізувати мовою програмування
різними способами?
Для того самого алгоритму можна розробити різні варіан-
ти програм, які відрізняються наочністю, обсягом потрібної
пам’яті, швидкістю виконання, формою подання отриманих
результатів та ін.
Кодування алгоритму  — це запис алгоритму мовою
програмування.
Структурне програмування в Python виконується за допо-
могою обов’язкових відступів. Складені оператори об’єднують
у блоки. Це означає, що відступи інструкцій кожного блоку
встановлюються автоматично, але після останньої інструкції
блоку програміст має самостійно змінити відступ.
За наданим програмним кодом легко встановити умову
задачі. Приклад програмного коду мовою Python зображено
на рис. 5.3.
Рис. 5.3. Приклад структурованого тексту програми
Така програма є досить наочною, її легко читати, розуміти
та здійснювати пошук помилок. Простим і водночас потуж-
ним засобом забезпечення наочності програми є використан-
ня коментарів.
У програмному коді доцільно використовувати не однобук-
вені ідентифікатори, а смислові назви, так, масив краще по-
значити не буквою m, а ідентифікатором masyv або іншим.
У програмі слід використовувати
раціональну довжину рядків,
щоб її можна було легко
модифікувати. Не бажано
застосовувати довгі рядки.
595.2. Поняття про кодування...
Наведемо деякі рекомендації для підвищення ефективності
програм.
1. Фрагменти коду, що багаторазово повто-
рюються, бажано оформляти у вигляді
функції. Це дозволяє скоротити довжи-
ну програми, а відповідно й обсяг по-
трібної пам’яті. Використання функцій
не тільки скорочує довжину програми,
а й спрощує процес її розроблення і на-
лагодження, підвищує структурованість
і надійність програм.
2. З метою скорочення кількості операцій
у складному математичному виразі до-
цільно виділяти та окремо обчислювати
прості вирази.
Пояснимо сутність прийому на прикла-
ді. Припустимо, що потрібно обчислити
вираз: y := (a+c+b–d)/(2/(a+c)–3)*(b–d)*(a+c).
Щоб обчислити вираз, потрібно виконати
4 операції додавання, 3 операції відні-
мання, 2 операції множення, 2 операції
ділення. Обчислимо вираз за схемою:
x1 := a+c; x2 := b–d;
y  := (x1+x2)/(2/x1–3)*x2*x1.
Щоб обчислити вираз, потрібно вико-
нати: 2 операції додавання, 2 операції
віднімання, 2 операції множення і 2
операції ділення.
Як бачимо, кількість арифметичних опе-
рацій скоротилася на три.
3. Вирази, які не змінюються в тілі циклу,
доцільно для наочності програми вико-
нувати до початку тіла циклу.
Складність алгоритму — це функція, що дозволяє визна-
чити, як швидко збільшується час роботи алгоритму зі збіль-
шенням обсягу даних.
Складність алгоритму оцінюється людськими ресурсами,
потрібними для розробки та тестування алгоритму, й обчис-
лювальними ресурсами.
Із практичної точки зору обчислювальні ресурси оціню-
ються нині двома основними критеріями: обсягом пам’яті,
потрібної для реалізації алгоритму, та кількістю часу, необ-
хідного для виконання алгоритму.
Кількість необхідного часу для виконання програми нази-
вають обчислювальною складністю.
Відзначимо, що ця кількість є неоднозначною оцінкою,
оскільки залежить від параметрів апаратних засобів комп’юте-
ра. На одному комп’ютері алгоритм може бути виконаний за
один проміжок часу, а на іншому — за інший.
Запитання для перевірки знань
Як досягається наочність програмного про-
дукту?
Що слід розуміти під складністю алгоритму?
Як реалізується структуризація програмно-
го коду в  мові Python?
За якими основними критеріями оцінюють-
ся обчислювальні ресурси?
Як краще позначати масив?
Назвіть основні рекомендації для підви-
щення ефективності програми.
1
2
3
4
5
6
Час виконання алгоритму
безпосередньо залежить
від  вхідних даних: їх якості
та  кількості.
60
5.3. Основні поняття теорії чисел
` 5.3.1. Системи числення
Якими системами числення ви користувалися? Чому, на вашу
думку, дані в  комп’ютері подаються у двійковій системі
числення?
Система числення  —  сукупність правил запису (зобра-
ження) чисел за допомогою символів (цифрових знаків)
і  виконання операцій над ними.
Розрізняють непозиційні й позиційні системи числення.
У непозиційних системах числення кількісне значення
цифри не залежить від її місця розташування в зображенні
числа. Такі системи складні для запису чисел і виконання
над ними арифметичних операцій, тому вони сьогодні майже
не застосовуються (приклад 1).
У позиційних системах числення кількісне значення циф-
ри залежить не лише від значення самої цифри, а й від її
місця (позиції) у записі числа (приклад 2).
Кожну позицію цифри в числі називають розрядом. Зазви-
чай для цілих чисел використовується така нумерація розря-
дів: молодший розряд цілого числа має номер нуль, а кожний
наступний номер збільшується на одиницю. Для дійсних чисел
старший розряд у дробовій частині має номер –1, а кожний
наступний номер дробового разряду зменшується на одиницю.
Таким чином, якщо ціла частина числа має n розрядів,
а дробова — m розрядів, то старший розряд цілої частини
має номер n – 1, а молодший розряд дробової частини — но-
мер –m.
Основними характеристиками позиційних систем числення
є основа системи числення, вага розрядів, значення цифр, які
використовуються в системі числення.
Основою системи числення (q) зазвичай називають кіль-
кість цифр, які можуть використовуватися в записі числа.
Найчастіше для цього використовуються числа натурального
ряду, включаючи нуль (приклад 3).
Вага розрядів у позиційних системах числення найчастіше
дорівнює основі системи числення у степені номера розряду
(приклад 4).
Десяткова система є прикладом системи з природною ва-
гою розрядів, тобто такою, у якій у цілому числі вага кож-
ного наступного розряду більша від ваги попереднього розря-
ду в кількість разів, що дорівнює основі системи числення,
а в дробовій — менше на таке саме значення.
На практиці застосовуються і системи числення з вагою
розрядів, відмінною від природної ваги. Таку вагу розрядів
називають штучною. Системи числення зі штучною вагою
розрядів застосовують у спеціальних цілях, наприклад для
захисту від перешкод.
Приклад 1. У наші дні з не-
позиційних систем числення
збереглася римська система,
у якій числа записуються
за допомогою цифр: I (один),
V (п’ять), X (десять), L (п’ят-
десят), C (сто) і т. д.
Приклад 2. У числі 64
кількісне значення цифри
6 дорівнює 60, а у числі
40,6 — тільки 0,6.
Приклад 3. У десятковій
системі застосовують числа
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
у вісімковій — 0, 1, 2, 3, 4,
5, 6, 7.
Приклад 4. У десятково-
му числі 725 вага другого
розряду дорівнює 10 1002
= ,
а у числі 0,4563 вага розряду
–3 дорівнює 10 0 0013−
= , .
615.3. Основні поняття...
Дані в комп’ютерних системах подаються символами 0 і 1.
Це обумовлено тим, що у двійковій системі числення порівня-
но з іншими найпростіше виконуються арифметичні операції,
і вона надійніше реалізується технічно.
Двійкова система (як і десяткова) є позиційною. Нагадає-
мо, що в таких системах кількісне значення цифри (кількіс-
ний еквівалент) залежить як від значення самої цифри, так
і від її місця (позиції, розряду) у записі числа.
З урахуванням номера розряду й основи системи числення
визначається кількісний еквівалент кожної цифри в числі
(приклади 5, 6).
Приклад 5. У десятковому числі 326,75
цифра 3 розміщена у другому розряді і має
3 10 3002
* = одиниць, цифра 2 розміщена
у першому розряді і має 2 10 201
* = одиниць,
цифра 6 розміщена у нульовому розряді і має
6 10 60
* = одиниць, цифра 7 розміщена в мінус
першому розряді і має 7 10 0 71
* ,−
= одиниць,
цифра 5 розміщена в мінус другому розряді
і має 5 10 0 052
* ,−
= одиниць.
Десяткове число 326,75 можна записати
у вигляді суми:
326 75 3 10 2 10 6 10 7 10 5 102 1 0 1 2
, * * * * *= + + + +− −
Приклад 6. Двійкове число 1011,01 можна записати у вигля-
ді многочлена: 1 2 0 2 1 2 1 2 0 2 1 2 11 253 2 1 0 1 2
* * * * * * ,+ + + + + =− −
.
Еквівалентом двійкового числа 1011,01 є десяткове число
11,25.
Крім перелічених систем числення, використовуються та-
кож інші системи, наприклад двійково-десяткова.
Двійково-десятковий код (англ. binary-coded decimal), BCD,
8421-BCD — форма запису раціональних чисел, коли кожний
десятковий розряд числа записується у вигляді його чотири-
бітового двійкового коду. Наприклад, десяткове число 31110
буде записано у двійковій системі.
У двійково-десятковій системі кожна десяткова цифра по-
дається чотирма двійковими розрядами (приклад 7).
Приклад 7. Десяткове число 618,74 має такий запис у двій-
ково-десятковій системі:
0110 0001 1000, 0111 0100 — двійково-десяткове значення
6 1 8 , 7 4
Крайні ліві нулі в цілій частині і крайні праві нулі
у дробовій частині можна на папері не писати, тобто те саме
десяткове число у двійково-десятковій системі можна записа-
ти так: 11000011000,011101.
В  обчислювальній техніці
основною системою числення
є  двійкова система із
символами 0  і 1. Застосовують
також десяткову, вісімкову
і  шістнадцяткову системи
числення.
Щоб визначити кількісне значення
цифри в  позиційній системі
числення, необхідно помножити
цю цифру на основу системи
в  степені того номера розряду,
в  якому розміщена ця цифра.
62 Розділ 2
Чотири двійкові розряди називають тетрадою. Щоб знайти
десятковий еквівалент двійково-десяткового числа, необхідно
в цілій частині ліворуч від коми й у дробовій частині пра-
воруч від коми відокремити тетради і знайти їхні десятко-
ві значення. Неповні тетради умовно доповнюються нулями
(приклад 8).
Щоб розрізняти, у якій системі задано на папері число,
праворуч від нього в дужках інколи записують систему чис-
лення (приклад 9).
У шістнадцятковій системі значення її перших десяти сим-
волів збігаються з цифрами десяткової системи, а інші симво-
ли мають значення A, B, C, D, E, F. У табл. 5.1 наведено ці
символи та відповідні їм двійкові та десяткові значення.
Таблиця 5.1. Кодування шістнадцяткових символів
Шістнадцяткові
символи
Двійкові
значення
Десяткові
значення
A 1010 10
B 1011 11
C 1100 12
D 1101 13
E 1110 14
F 1111 15
Ми розглянули подання (кодування) десяткових та шістнад-
цяткових символів двійковими значеннями, у яких розряди
мають значення (вагу) 8, 4, 2, 1. Такий код (8421) називають
кодом прямого заміщення. Саме цей код є найрозповсюджені-
шим. Проте на практиці інколи використовують код із вагою
розрядів 2421, а також код із залишком 3 8421 3+( ) та ін.
Запитання для перевірки знань
Який вигляд мають десяткові цифри у  двій-
ковій системі числення?
Як нумеруються розряди чисел?
Як записуються шістнадцяткові символи
у  двійковій системі числення?
Як записуються десяткові числа у  вісімко-
вій системі числення?
Чому двійкова система є основною в техніці?
Доведіть, чому не може бути двійково-де-
сятковим число 10 1111 0111,  0111 1000.
1
2
3
4
5
6
Завдання для самостійного виконання
Запишіть десяткове число 93,64 у  вигляді
многочлена.
Запишіть двійкове число 110  111,011 у  ви-
гляді суми.
Запишіть десяткове число 170,25 у  шістнад-
цятковій системі числення.
Шістнадцяткове число A0E,B запишіть
у  двійковій системі числення.
Чому число 1  011  101  101,001  001  01 не
може бути двійково-десятковим значенням.
Замініть розгорнутий запис двійкового числа
1 2 0 2 1 2 0 2 1 2 0 2 1 24 3 2 1 0 1 2
* * * * * * *+ + + + + +− −
 
1 2 0 2 1 2 0 2 1 2 0 2 1 24 3 2 1 0 1 2
* * * * * * *+ + + + + +− −
на скорочений.
Запишіть двійково-десяткове число
1  011  000,001  001  01 у  десятковій системі
числення, а потім у  вигляді суми.
1
2
3
4
5
6
7
Приклад 8
100 1000 1001, 0101 001 —
4 8 9 , 5 2
двійково-десяткове значення
Задане двійково-десяткове
число дорівнює десятковому
числу 489,52.
Приклад 9. 101001 2( ) ;
10 011001 011001 2 10, −( ) .
Перше число записане
у  двійковій системі числення,
а  друге  —  у  двійково-десятковій
системі.
63
` 5.3.2. Робота з великими числами
З  якими великими числами вам доводилося зустрічатися
у  житті? Які, на вашу думку, проблеми можуть виникати
в  комп’ютері у  процесі оброблення великих чисел?
У науці, техніці, побуті зустрічаються великі числа, тобто
числа, що містять велику кількість розрядів, наприклад 20,
100 і більше (приклад 1). У математиці великі числа (а також
досить малі) часто записують в експоненціальній формі, тоб-
то з використанням мантиси і порядку (приклад 2).
Нормалізованими називають числа, у яких кома розміщу-
ється праворуч після першої значущої цифри.
У мові Python числа в експоненціальній формі записують
так: замість числа 10 вказується велика буква E або мала
буква e, а після букви — степінь. Знак множення не вказу-
ється, а замість коми ставиться крапка. Наприклад, 1.496E11
або 1.496e11.
У сучасних мовах програмування суттєвих проблем ро-
боти з досить великими або досить малими числами майже
не існує. Але слід враховувати, що математичні операції над
великими або досить малими числами виконуються повіль-
ніше, ніж операції над невеликими числами. У мові Python
фактично не існує обмежень на довжину цілих (тип int)
і дійсних (тип float) чисел (приклад 3).
Приклад 3. Розглянемо подання двох
15-розрядних десяткових цілих чисел у мові
Python і результат виконання над ними опе-
рації множення:
Подання двох дійсних чисел і результат
виконання над ними операції множення по-
яснюється таким прикладом:
Якщо перевірити точність обчислення цих
чисел, то побачимо, що отриманий результат
відрізняється від абсолютно точного на одну
десятитисячну.
Якщо числа цілого або дійсного типу до-
сить великі, то результат виконання операції
над ними подається в експоненціальній формі:
Проте навіть у тому випадку, якщо почат-
кові числа подано в експоненціальній формі,
результат виконання операції над ними може
бути отриманий цілого або дійсного типу.
Така ситуація виникає тоді, коли початкові
числа мають невеликі значення.
Далі наведено такий варіант:
Приклад 1. До великих
можна віднести такі
назви чисел: мільярд
1000 000 000 109
=( ),
трильйон
1000 000 000 000 1012
=( ),
квадрильйон
1000 000 000 000 000 1015
=( ),
квінтильйон
1000 000 000 000 000 000 1018
=( )
та ін.
Приклад 2. Десяткове число
149 600 000 000 може бути
записано так: 1 496 1011
, ⋅ , або
0 001496 1014
, ⋅ , або 14 96 1010
, ⋅ .
Перший запис означає, що
число нормалізоване.
64 Розділ 2
Отже, результат операції над цілими або дійсними числа-
ми подається в експоненціальній формі, якщо результат має
досить велике або досить мале значення, і навпаки — у зви-
чайній формі, якщо результат операції має не досить велике
або не досить мале значення.
Нагадаємо, що для використання функцій необхідно на
початку програмного коду підключити цю бібліотеку за допо-
могою команди import math.
Функція викликається за допомогою команди math.ім’я
функції(x), де х — це будь-яке число, змінна або вираз.
Функція повертає значення, яке можна вивести на екран,
присвоїти іншій змінній або використати у виразі.
Приклад 4. Відомі максимальна і міні-
мальна відстані від Землі до Марса і швид-
кість польоту сучасного космічного корабля.
Розробимо проект визначення кількості діб
польоту до Марса. Варіант проекту зображено
на рис. 5.4.
Рис. 5.4. Програма визначення часу польоту до Марса
Результат виконання проекту:
Запитання для перевірки знань
Які назви великих чисел вам відомі?
Як записуються числа мовою Python в  екс-
поненціальному вигляді?
У яких випадках результат виконання мате-
матичних операцій подається в експоненці-
альному вигляді?
1
2
3
Завдання для самостійного виконання
Число 4.375 помножте на 10 у  степені 20.
Результат виведіть на екран.
Розробіть програму перетворення градусів
Фаренгейта у  градуси Цельсія за допомо-
гою формули C  = 5/9*(F–32).
Перетворіть за допомогою функції float()
рядок ‘234.25’ у  число. Доведіть, що отри-
маний результат є правильним.
Краща врожайність пшениці в  Україні до-
сягається при нормі висіву зерна 3–4 млн
насінин, або 120–200 кг, на гектар. При цьо-
му з  кожного гектара збирають 3–3,5 тон-
ни зерна. Розробіть програму визначення
мінімального і  максимального посіву зерна
в  насінинах і  кілограмах на площі 100 га,
а  також мінімальний і  максимальний вро-
жай у  насінинах і  кілограмах.
1
2
3
4
Для виконання обчислень із
дійсними числами мова Python
має значну кількість функцій
у  бібліотеці (модулі) math, які
вивчаються в  курсі 10 класу.
65
` 5.3.3. Факторизація чисел
Які числа називають простими? На які прості множники
можна розкласти числа 625 і  2100?
Факторизацією натурального числа називають його
розкладання на добуток простих множників.
Наприклад, число 525 може бути розкладене на такі про-
сті множники: 3 5 5 7 525* * * = . Доведено, що кожне натураль-
не число має єдине розкладання на прості множники.
Тривіальним алгоритмом факторизації чисел є повний
перебір можливих простих дільників, починаючи з числа 2.
Його сутність така.
Крок 1
Задане натуральне число аналізується, чи не
є  воно простим. Якщо воно просте, факториза-
ція завершується, а  його множником є  саме це
число.
Крок 2
Якщо число складене, відшукується перший за
величиною простий дільник, на який без залиш-
ку ділиться число (спочатку число 3, потім 5,
далі 7, 11 і  так далі).
Крок 3
Далі перевіряється простота отриманої частки.
Якщо частка не є  простим числом, факториза-
ція продовжується у  порядку, описаному вище,
інакше  —  вона завершується.
Пояснимо сутність факторизації методом повного перебору
на прикладі 1.
Приклад 1. Розглянемо сутність методу пов-
ного перебору на прикладі числа 84.
1. Визначаємо, що число 84 непросте, тому
ділимо це число на 2. Отримаємо частку
42 і перший дільник 2.
2. Визначаємо, що число 42 непросте, тому
ділимо його на 2. Отримаємо частку 21
і другий дільник 2.
3. Визначаємо, що число 21 непросте,
тому робимо спробу поділити його на
найменший дільник 2. Але число 21 не
ділиться на 2. Тому переходимо до на-
ступного простого числа.
4. Ділимо число 21 на 3. Отримаємо частку
7 і третій дільник 3.
5. Визначаємо, що число 7 просте. Тому
четвертим простим дільником є 7. На
цьому процес факторизації завершений.
Отже, число 84 можна розкласти на такі
прості множники: 2 2 3 7 84* * * = .
З описаного алгоритму можна зробити висновок, що для
факторизації чисел натурального ряду методом повного пере-
бору треба:
• уміти визначати, чи є частка на кожному кроці факто-
ризації простим числом;
• уміти визначати черговий за величиною простий дільник.
RSA (абревіатура від прізвищ
Rivest (Рівест), Shamir (Шамір)
та Adleman (Адлеман)) —
алгоритм криптографічної
системи з  відкритим ключем.
Його надійність основана на
складності задач факторизації
натуральних чисел. RSA став
першим алгоритмом такого типу,
придатним і для шифрування,
і  для цифрового підпису.
Алгоритм RSA запропонували
вчені Массачусетського
технологічного інституту в  1977  р.
Він має практичне значення
у  галузі шифрування і  дозволяє
факторизувати 100-розрядні числа.
66 Розділ 2
На практиці прості числа деякого діапазону інколи збері-
гаються в таблиці (масиві, списку).
Сутність алгоритму розкладання цілого числа на прості
множники з використанням масиву простих чисел шляхом
повного перебору така:
Крок 1
Задане ціле число порівнюється зі значенням першого елемента масиву. Якщо вони
рівні, то це означає, що саме число є  простим. Інакше  — робиться спроба поділити
число на значення цього елемента масиву.
Крок 2
Якщо залишок дорівнює нулю, то множником є  цей дільник, а  частка ділиться на зна-
чення цього самого елемента масиву. Цей процес продовжується доти, поки залишок
від ділення чергової частки на значення елемента масиву не буде дорівнювати нулю.
Крок 3
Якщо залишок не дорівнює нулю, вибирається черговий елемент масиву і  далі
продовжуються аналогічні процеси доти, поки остання частка не буде дорівнювати
значенню елемента масиву.
Алгоритм факторизації натурального числа і його реаліза-
цію на прикладі факторизації числа 90 наведено в табл. 5.2.
Таблиця 5.2. Послідовність виконання алгоритму факторизації
№ Алгоритм
Цикл
1-й 2-й 3-й 4-й 5-й 6-й
1
Створити
mas1 =  [2, 3, 5, 7]
mas1 = 
[2, 3, 5, 7]
2
k1  —  довжина
масиву mas1
k1 := 4
3
Створити порожній
масив mas2
mas2[]
4 Увести n n := 90
5
I := 0 
(лічильник циклів)
I := 0
6
Якщо n  = mas1[i],
то п. 7, інакше  —  п. 9
90 =  2,
ні, п. 9
45 =  3, ні,
п. 9
5 =  5, так,
п. 7
7
Додати елемент mas1[i]
до масиву mas2
mas2 [3] := 5
8
Перервати цикл
(до п. 15)
до п. 15
9
Якщо n%mas1[i] == 0,
то п. 10, інакше  — 
п.  13
90%2 ==
0,
так, п. 10
45%2 ==
0,
ні, до п.
13
45%3 ==
0, так, до
п. 10
15%3 ==
0, так, до
п. 10
5%3 ==
0, ні, до
п. 13
10
Додати mas1[i]
до масиву mas2
mas2[0]
:= 2
mas2[1] := 3 mas2[2] := 3
11 n := n//mas1[i] n := 45 n := 15 n := 5
12 Перейти до п. 9 до п. 9 до п. 9 до п. 9
13 i := i+1 i := 1 i := 2
14
Якщо i = k1, то п. 6,
інакше  —  п. 15
i =
 
4, так,
до п. 6
i
 
=
 
4, так
до п. 6
15
Виведення масиву
mas2
Виведення
2  3 3  5
675.3. Основні поняття...
Програму реалізації алгоритму зображено на рис. 5.5.
Рис. 5.5. Програма факторизації з використанням масиву простих чисел
Результат виконання програми:
На рис. 5.6 наведено більш удосконалену програму факто-
ризації натуральних чисел методом повного перебору, але без
використання масиву простих чисел. У програмі використано
ключове слово yield, яке виконує фактично ту ж функцію,
що й return (повертає результат обчислення). У цьому випадку
значення d  передається у чергову позицію списку.
Рис. 5.6. Програма факторизації натуральних чисел із ключовим словом yield
Далі наведено один із варіантів виконання програми:
Наведений алгоритм є  досить
простим, але мало придатним
для великих чисел, тому що він
потребує збереження досить
великих масивів простих чисел.
68 Розділ 2
Зробимо пояснення щодо функції виведення. У програмі
реалізовано форматоване виведення результату. У процесі
форматування створюється рядок шляхом підстановки в ньо-
го даних, які отримуються у процесі виконання програми.
Підстановка виконана за допомогою методу format. Якщо за
допомогою цього методу потрібно підставити тільки один ар-
гумент, то значенням є сам аргумент (приклад 1).
Приклад 1.
Якщо для підстановки потрібні декілька аргументів, то
значеннями є всі аргументи з рядками підстановки (звичай-
ними або іменованими) (приклад 2).
Приклад 2.
У функції виведення використаний метод join, який до-
зволяє вивести список за допомогою однорядкової команди.
Тут один параметр — список рядків. У результаті отриму-
ється рядок з’єднанням елементів списку (які передані як
параметри) в один рядок. При цьому між елементами списку
вставляється розмежувач, рівний тому рядку, в якому вико-
ристовується метод. Розглянемо приклад 3.
Якщо список складається з чисел, то необхідно використа-
ти функцію map (приклад 4).
Приклад 4.
Швейцарець Ніклаус
Вірт  — жива легенда в світі
програмування. Це блискучий
інженер і глибокий дослідник,
який у 1984 році був
удостоєний премії Тюрінга.
Приклад 3.
695.3. Основні поняття...
Порядок виконання програми, яку подано на рис. 5.6 на
прикладі факторизації числа 60 наведено в табл. 5.3.
Таблиця 5.3. Аналіз порядку виконання програми, зображеної на рис. 5.6
Інструкції Пуск
Цикл
1-й 2-й 3-й 4-й 5-й 6-й 7-й 8-й
def func1 (x, d  = 2)
x = 60,
d = 2
while x  1 True True True True True True True False
q, r  = divmod(x, d)
q = 30,
r = 0
q = 15,
r = 0
q = 7,
r = 1
q = 5,
r = 0
q = 1,
r = 2
q = 1,
r = 1
q = 1,
r = 0
if r False False True False True True False
d += 1 d = 3 d = 4 d = 5
Else
yield d
2 у  кор-
теж
2 у  кор-
теж
3 у  кор-
теж
5 у  кор-
теж
x = q x = 30 x = 15 x = 5 x = 1
n =  int(input(«увести»)) n = 60
print(‘ () = ()’.format(n’*’.
join(map(str, func1(n)))))
Звернення
до func1
60=2*2 *
*3*5
Запитання для перевірки знань
Що називають факторизацією натурального
числа?
Яке призначення має ключове слово yield?
Скільки різних варіантів простих множників
може мати натуральне число?
Розкладіть на прості множники число 624.
Поясніть сутність факторизації цілих чисел
методом повного перебору.
Сформулюйте алгоритм факторизації чисел
з  використанням масиву простих чисел.
1
2
3
4
5
6
Завдання для самостійного виконання
Проаналізуйте програму (рис. 5.5). Доведіть,
для якого максимального числа вона гаран-
товано правильно реалізує факторизацію.
Виконайте кілька разів програму (рис.  5.5)
для різних натуральних чисел. Для яких
чисел програма надасть правильний ре-
зультат? Обґрунтуйте, від чого це залежить.
Який необхідно мати мінімальний за довжи-
ною масив простих чисел для факторизації
числа 489? Обґрунтуйте свою відповідь.
Внесіть у програму (рис. 5.6) такі зміни, щоб
прості множники виводилися не в  рядок,
а  в один стовпець. Чи вдалося за рахунок
цього спростити програму?
Розробіть таблицю виконання алгоритму
факторизації числа 40 на основі методу
повного перебору.
Розробіть таблицю виконання програми,
зображеної на рис.  5.6, на прикладі факто-
ризації числа 30.
1
2
3
4
5
6
70
6. Алгоритми сортування і  пошуку даних
Сортуванням називають процес упорядкування множини
об’єктів за деякою ознакою, наприклад за збільшенням або
зменшенням їх значень. Мета сортування — полегшити по-
дальший пошук в упорядкованій множині.
6.1. Алгоритми сортування даних
Не існує універсального алгоритму сортування. Проте, ма-
ючи приблизні характеристики вхідних даних, можна дібра-
ти метод, який працює оптимальним чином у даній ситуації
(задачі).
Нині є десятки різних методів сортування, які відрізня-
ються кількісними характеристиками показників. Для того
щоб обґрунтовано зробити свій вибір, існують параметри, за
якими проводиться оцінка алгоритмів.
Квадратичними називають алгоритми, у яких для повного
сортування максимальна кількість операцій, які виконують-
ся, дорівнює квадрату кількості його елементів. Тобто якщо
масив містить n елементів, то для виконання алгоритму сорту-
вання потрібно виконати до n2
 
операцій.
Розглянемо алгоритми сортування масиву вибором та об-
міном.
`
` 6.1.1. Алгоритм сортування вибором
Припустимо, що в  довільному порядку розташовані гирі
вагою 20, 5, 100, 500 і 200 грамів. Як розмістити їх у порядку
збільшення ваги шляхом поступового вибору найважчої
з  тих, що залишилися?
Нехай дано масив: mas[0], mas[1], ... , mas[n], який необхідно
упорядкувати в порядку зростання значень його елементів.
Розглянемо сутність алгоритму сортування вибором.
Крок 1
Знаходять елемент із максимальним значенням і міняють його місцем з останнім
елементом масиву.
Крок 2
Останній елемент із подальшого розгляду виключають, а для перших n – 1 елемен-
тів процедуру повторюють. Тобто аналізується масив mas[0], mas[1], ..., mas[n – 1],
у якому також відшукують максимальний елемент. Цей елемент міняють місцями
з  елементом mas[n – 1].
Крок 3
Подібні дії виконують у  масиві mas[0], mas[1], ..., mas[n – 2], потім у  масиві
mas[0], mas[1], ..., mas[n – 3] і  т. д.
Процес упорядкування масиву чисел розглянемо на при-
кладі 1.
Класифікація квадратичних
алгоритмів сортування:
•
• сортування підрахунком;
•
•

сортування вставленням
(включенням);
•
• сортування вибором;
•
• сортування обміном.
716.1. Алгоритми сортування ...
Приклад 1. Упорядкуємо масив чисел: 8, 4, 9, 7, 2.
Крок 1 8 4 9 7 2
Крок 2 8 4 2 7 9
Крок 3 7 4 2 8 9
Крок 4 2 4 7 8 9
Отже, на кожному кроці виконання алгоритму значення
правої межі невпорядкованої частини масиву зменшується на
одиницю (поточне максимальне значення елемента показано
жирним шрифтом).
У програмі поточне значення правої межі будемо зберігати
у змінній p.
Ознайомимося з алгоритмом упорядкування масиву мето-
дом обміну, який можна подати так.
Крок 1 Створення масиву mas.
Крок 2 Визначення довжини масиву n.
Крок 3 p = n – 1 #  Початкове значення правої межі
Крок 4 Виконувати п. 5–11 доти, доки p  0, інакше  —  п. 12.
Крок 5
m = 0 # Початковий номер максимального елемента (номер першого елемента
масиву)
Крок 6 i = 1 # Номер другого елемента масиву
Крок 7 Якщо mas[i]   mas[m], то m = i, інакше  —  п. 8.
Крок 8 i = i + 1 #  Перехід до чергового елемента
Крок 9 Якщо i  = p, то п. 7, інакше  —  п. 10.
Крок 10 Поміняти місцями максимальний елемент із поточним правим крайнім.
Крок 11 p = p – 1 #  Зменшення значення правої межі
Крок 12 Виведення упорядкованого масиву mas.
Крок 13 Кінець.
72 Розділ 2
Програму реалізації алгоритму зображено на рис. 6.1.
Рис. 6.1. Програма упорядкування масиву методом вибору
У результаті виконання програми отримаємо:
Перевага описаного методу сортування полягає в його про-
стоті. Проте він є найповільнішим (не враховується те, що
в заданому масиві деякі елементи можуть бути впорядкова-
ні). Навіть якщо певний масив буде повністю впорядкованим,
кількість операцій порівняння в алгоритмі не зменшиться.
` 6.1.2. Алгоритм сортування методом обміну
У шеренгу стали 5 учнів. Порівняйте зріст перших двох. Якщо
перший вищий за другого, поміняйте їх місцями, за потре-
би  — другого і  третього і  т. д. Як розмістяться учні?
Розглянемо сутність алгоритму сортування масиву в по-
рядку зростання значень його елементів методом обміну.
Крок 1
Масив mas[0], mas[1], ... , mas[n] переглядається зліва направо. Спочатку порівнюють-
ся елементи mas[0] і  mas[1], потім  —  mas[1] і  mas[2], mas[2] і  mas[3], mas[3] і  mas[4]
і  так далі аж до елементів mas[n–1] і  mas[n]. Щоразу, коли попередній елемент
більший від наступного, елементи міняються місцями. Зрозуміло, що після повного
завершення першого перегляду всього масиву на останній позиції перебуватиме
елемент із максимальним значенням.
Крок 2
Після цього елемент mas[n] із подальшого розгляду виключається, переглядається
масив mas[0], mas[1], …, mas[n–1] і  над його елементами виконуються аналогічні дії.
У  результаті на позицію n–1 буде переміщено другий за величиною елемент.
Крок 3
Процедура повторюється для масиву mas[0], mas[1], …, mas[n–2], потім — для масиву
mas[0], mas[1], …, mas[n–3] і  т. д.
З описаного випливає, що ознакою упорядкованості масиву
є те, що після завершення його перегляду жодної перестанов-
ки елементів не було.
736.1. Алгоритми сортування ...
У прикладі 2 наведено порядок переміщення максимально-
го числа на крайню праву позицію у масиві [4, 2, 5, 7, 6, 1].
Жирним шрифтом виділено елементи, які порівнюються.
Приклад 2. Перемістимо на крайню праву позицію максимальний елемент у масиві [4, 2, 5,
7, 6, 1].
Крок 1 4 2 5 7 6 1
Крок 2 2 4 5 7 6 1
Крок 3 2 4 5 7 6 1
Крок 4 2 4 5 7 6 1
Крок 5 2 4 5 6 7 1
Крок 6 2 4 5 6 1 7
Отже, після першого перегляду масиву елемент із макси-
мальним значенням буде розташований на останній позиції.
Розробимо алгоритм сортування методом обміну.
В алгоритмі використано такі позначення: p — індекс пра-
вої межі поточної ділянки масиву; y — ознака наявності пе-
рестановки: на початку кожного зовнішнього циклу y набуває
значення True.
Якщо після завершення зовнішнього циклу вона має зна-
чення True, це означає, що перестановок під час останнього
перегляду не було; якщо y = False, то відбулася принаймні
одна перестановка; i — індекс поточного елемента масиву;
z — змінна, призначена для тимчасового зберігання значення
елемента масиву під час перестановки елементів.
Розглянемо алгоритм сортування масиву методом обміну,
який може бути таким.
Крок 1 Створення масиву mas. Крок 7
Якщо mas[i]   mas[i+1],
то поміняти елементи місцями
і  y =  False.
Крок 2 Визначення довжини масиву n. Крок 8 i = i + 1.
Крок 3
p = n–1 (початкове значення
правої межі).
Крок 9
Якщо i   p, то п. 7, інакше  — 
п. 10.
Крок 4
Виконувати п. 5–10 доти, доки
p  0, інакше  —  п. 11.
Крок 10 p = p – 1.
Крок 5
y=True (ознака відсутності пе-
реміщення елементів).
Крок 11
Виведення упорядкованого
масиву mas.
Крок 6 i =1 . Крок 12 Кінець.
74 Розділ 2
Програму реалізації алгоритму зображено на рис. 6.2.
Рис. 6.2. Програма упорядкування масиву методом обміну
Результат виконання програми:
Запитання для перевірки знань
Як здійснюється обмін значеннями між дво-
ма змінними?
Які існують найпростіші методи сортування
масиву?
Поясніть сутність алгоритму сортування ма-
сиву методом вибору.
Поясніть сутність алгоритму сортування ма-
сиву методом обміну.
Наведіть приклад алгоритму сортування
масиву методом вибору.
Наведіть приклад алгоритму сортування
масиву методом обміну.
1
2
3
4
5
6
Завдання для самостійного виконання
Проаналізуйте порядок виконання алгорит-
му сортування вибором на прикладі масиву
31, 20, 30, 35.
Визначте кількість операцій порівняння
в  алгоритмі сортування методом обміну
в процесі впорядкування масиву 100, 20, 41,
30, 35.
Дано масив чисел: 34, 12, 8, 5, 20, 17. Вико-
найте його сортування за допомогою мето-
ду обміну в  порядку зменшення чисел.
Дано масив: ‘процесор’, ‘команда’, ‘флешка’,
‘брелок’, ‘клавіатура’. Виконайте сортування
його елементів в  алфавітному порядку за
допомогою методу вибору.
Розробіть програму створення масиву
з  10  випадкових чисел у  діапазоні від 1  до
8  та його сортування за допомогою методу
обміну.
Розробіть програму створення масиву
з  12  випадкових чисел у  діапазоні від 4 
до  11 і  його сортування за допомогою ме-
тоду вибору.
1
2
3
4
5
6
75
` 6.1.3. Сортування вставленням
Як у  впорядкований одновимірний масив чисел можна
вставити нове число, не порушуючи впорядкування масиву?
Метод сортування вставленням використовується для впо-
рядкованих масивів. Розглянемо сутність алгоритму сорту-
вання вставленням на прикладі.
Крок 1
Нехай дано впорядкований у порядку зростання значень елементів масив чисел:
3 5 6 8 9 12
Крок 2
У масив потрібно вставити новий елемент зі значенням 7. Відшукуємо позицію,
у  яку слід уставити число 7, не порушуючи впорядкованості елементів масиву.
Зрозуміло, що це позиція між числами 6  і 8. Зсуваємо усі елементи, починаючи
з  елемента 8, на одну позицію праворуч:
3 5 6 8 9 12
Крок 3
Уставляємо у  вільну позицію число 7:
3 5 6 7 8 9 12
На рис. 6.3 наведено програму, яка реалізує вставлення
нового елемента в початковий масив.
Рис. 6.3. Програма сортування масиву методом вставлення
Зверніть увагу, що в програмі використано початковий ма-
сив [3, 5, 6, 8, 9, 12], хоча оголошено масив [3, 5, 6, 8, 9, 12,
99]. Довжина оголошеного масиву збільшена на одиницю, й ос-
танній елемент містить число 99. Це обумовлено тим, що після
вставлення масив за довжиною буде більшим на одиницю, чим
забезпечується правильна індексація елементів масиву.
Результат виконання програми:
76
Відомий фахівець у галузі
інформатики Д. Кнут писав,
що, навіть якби сортування
було марним, знайшлася б
маса причин зайнятися ним.
Винахідливі методи сортування
свідчать про те, що воно
саме по собі цікаве як об’єкт
дослідження.
` 6.1.4. Сортування злиттям
Припустимо, що є  одновимірний масив цілих чисел завдовж-
ки  20. Чи можна, на вашу думку, виконати його сортування,
якщо спочатку виконати сортування перших 10 чисел,
потім останніх 10 чисел? Як це можна зробити?
Сортування злиттям належить до зовнішніх методів
сортування. Він був створенний Джоном фон Нейманом у
1945 році та вважається одним із найпростіших алгоритмів
серед швидких алгоритмів сортування.
Розглянемо сутність алгоритму сортування масиву злит-
тям.
Крок 1
Заданий масив ділиться приблизно на дві рівні частини. Виконується сортування
кожної частини окремо, наприклад у  порядку збільшення значень її елементів.
Крок 2
Потім вибираються елементи першої і  другої частин масиву, розташовані на лі-
вих крайніх позиціях.
Менший із цих елементів записується у  першу позицію буфера. А  частина маси-
ву, з  якої вибрано менший елемент, зсувається на одну позицію ліворуч.
Крок 3
На наступному кроці теж порівнюються елементи обох частин, розташованих на
лівій крайній позиції. Також вибирається менший із  них і  заноситься у  чергову
позицію буфера.
Цей процес продовжується доти, поки одна із частин масиву стане порожньою.
Після цього в буфер без змін у порядку розташування переносяться всі значення
елементів тієї частини, у  якій залишилися елементи.
Розглянемо алгоритм сортування масиву злиттям на при-
кладі.
Приклад. Нехай дано масив цілих чисел: 12, 7, 15, 4, 11, 1, 9.
1. Ділимо масив на дві частини, наприклад, так: перша
частина 12, 7, 15, 4; друга частина 11, 1, 9.
2. Упорядковуємо частини в порядку збільшення значень
елементів: перша частина 4, 7, 12, 15; друга — 1, 9, 11.
3. Вибираємо і порівнюємо елементи, розташовані на край-
ніх лівих позиціях (числа 4 і 1).
Менше значення записуємо у ліву крайню позицію бу-
фера.
4 7 12 15
1 9 11
1
776.1. Алгоритми сортування ...
4. Зсуваємо другу частину масиву на одну позицію ліворуч.
Порівнюємо числа 4 і 9. Число 4 записуємо у чергову по-
зицію буфера.
4 7 12 15
9 11
1 4
5. Зсуваємо першу частину на одну позицію ліворуч. Порів-
нюємо числа 7 і 9. Число 7 записуємо у чергову позицію
буфера.
7 12 15
9 11
1 4 7
6. Зсуваємо першу частину на одну позицію ліворуч. По-
рівнюємо числа 12 і 9. Число 9 записуємо у буфер.
12 15
9 11
1 4 7 9
7. Зсуваємо другу частину на одну позицію ліворуч. Порів-
нюємо числа 12 і 11. Число 11 записуємо у буфер.
12 15
11
1 4 7 9 11
8. Зсуваємо другу частину на одну позицію ліворуч.
Оскільки друга частина стала порожньою, записуємо всі
елементи, що залишилися у першій частині, у буфер без
змін.
12 15
1 4 7 9 11 12 15
На цьому процес сортування завершено.
Відзначимо, що алгоритм сортування злиттям для великих
масивів є одним із найбільш швидкісних. Але він потребує
додаткової пам’яті для збереження буферу, який за обсягом
рівний обсягу початкового масиву.
В основу сортування вибором
покладено вибір відповідного
елемента для певної позиції
в  масиві.
Сортування підрахунком  —
це алгоритм, у якому
використовується діапазон
чисел сортованого масиву
для підрахунку співпадаючих
елементів. Метод є доцільним
лише тоді, коли сортовані числа
мають діапазон можливих
значень, який досить малий
у  порівнянні з множиною, яка
сортується.
Сортування обміном
базується на повторенні етапів
порівняння сусідніх ключів
при русі вздовж масиву. Якщо
наступний елемент виявиться
меншим від попереднього,
то відбувається обмін (звідси
і  назва методу).
В основі сортування
вставленням лежить пошук
для чергового елемента
масиву відповідного місця
у відсортованій частині із
наступним включенням його
в  знайдену позицію.
78 Розділ 2
Програму сортування масиву злиттям зображено на рис. 6.4.
Рис. 6.4. Програма сортування масиву злиттям
Результат виконання програми:
2 4 7 9 11 17 20 44 44 50
` 6.1.5. Сортування підрахунком
Нехай є  масив цілих чисел завдовжки 18, елементи якого
мають значення 0, 1, 2. Які особливості слід врахувати
в  процесі впорядкування такого масиву?
Метод сортування підрахунком застосовується тільки для
масивів цілих чисел. Із точки зору швидкодії й необхідності
використання додаткової пам’яті цей метод є ефективним для
масивів, у яких зберігаються числа невеликого діапазону,
особливо для чисел у діапазоні від 0 до 9.
Розглянемо сутність алгоритму сортування підрахунком на
прикладі.
796.1. Алгоритми сортування ...
Приклад
Дано початковий масив чисел, який по-
трібно відсортувати в порядку зростання
значень його елементів:
2 0 0 1 5 3 1 2 0 3 0 1 2 1 0
1. Створимо додатковий порожній масив,
довжина якого на одиницю більша від
максимального значення елемента в по-
чатковому масиві (у наведеному масиві
максимальним є число 5):
0 0 0 0 0 0
2. Значення елементів початкового масиву
аналізуються зліва направо. Після аналі-
зу кожного елемента відповідний елемент
додаткового масиву збільшується на оди-
ницю. Значення числа елемента почат-
кового масиву визначає номер елемента
додаткового масиву, який повинен збіль-
шуватися на одиницю. Наприклад, якщо
значення елемента початкового масиву
дорівнює 3, то третій елемент додаткового
масиву повинен збільшитися на одиницю
(нумерація елементів масиву починається
з нуля). Після завершення аналізу всіх
елементів початкового масиву додатковий
масив набуде такого змісту:
5 4 3 2 0 1
3. Початковий масив заповнюється новими
значеннями, починаючи з нульової пози-
ції. Оскільки перший елемент додатко-
вого масиву має значення 5, то підряд
записуються п’ять нулів, далі чотири
одиниці і т. д. Якщо значення елемента
додаткового масиву дорівнює 0, то відпо-
відне число в масив не записується.
Один із найпростіших варіантів реалізації алгоритму сор-
тування підрахунком зображено на рис. 6.5. Програма вико-
нує сортування масиву цілих невід’ємних чисел (від 0 до 9)
з максимальним значенням елемента не більше 9. Для сорту-
вання чисел із більшим діапазоном необхідно збільшити на
потрібну величину розмір додаткового масиву, тобто внести
зміни до третьої зверху інструкції: mas1 =  [0, 0, …, 0].
Рис. 6.5. Програма сортування масиву підрахунком
У результаті виконання програми отримаємо:
0 0   0 0   0 1   1 1   1 2   2 2   3 3   5
80 Розділ 2
Зверніть увагу на те, що в  початковому масиві відсутнє
число 4. Але в  додатковому масиві для нього відведено
позицію, значення елемента якої дорівнює нулю.
У  програмі така ситуація врахована. Позиції додаткового
масиву з  нульовим значенням ігноруються, тому
і  число  4  у  відсортований масив не виводиться.
Методи сортування найчастіше аналізуються за такими
характеристиками:
• кількість порівнянь в ітерації;
• загальна кількість порівнянь;
• кількість ітерацій (переглядів).
Конкретні значення цих характеристик дозволяють вибра-
ти оптимальний метод сортування для певного завдання.
Значна кількість дослідників надають перевагу сортуван-
ню методом обміну, оскільки він вимагає найменшої кілько-
сті обмінів.
Запитання для перевірки знань
Для яких масивів можна виконувати сорту-
вання вставками?
Для яких масивів доцільно використовува-
ти сортування підрахунком?
Як можна поділити масив на дві приблизно
рівні частини?
Наведіть приклад сортування масиву злит-
тям.
Поясніть сутність алгоритму сортування ма-
сиву вставленням.
Поясніть сутність алгоритму сортування ма-
сиву злиттям.
Поясніть сутність алгоритму сортування ма-
сиву підрахунком.
За якими характеристиками зазвичай аналі-
зуються методи сортування?
1
2
3
4
5
6
7
8
Завдання для самостійного виконання
Проаналізуйте порядок виконання програ-
ми сортування масиву методом вставлення
(рис.  6.3) на прикладі вставлення числа 13
у  масив [7, 10, 15, 21, 29, 39].
Проаналізуйте порядок виконання про-
грами сортування масиву методом злиття
(рис.  6.4) на прикладі масиву
[11, 75, 82, 40, 5, 15].
Проаналізуйте порядок виконання програ-
ми сортування масиву методом підрахунку
(рис.  6.5) на прикладі масиву
[3, 0, 0, 1, 0, 1, 3, 3, 3].
Обґрунтуйте, який алгоритм сортування
масиву [6, 2, 5, 8, 20, 27, 30, 41] у  порядку
збільшення значень його елементів доціль-
но вибрати, щоб забезпечити мінімальний
час його виконання.
На основі аналізу програми (рис.  6.5) по-
дайте у  словесно-формульній формі алго-
ритм сортування масиву підрахунком.
На основі здійснення аналізу програми
(рис.  6.4) подайте у  словесно-формульній
формі алгоритм сортування масиву злит-
тям.
1
2
3
4
5
6
Один із засновників кібернетики
Н. Вірт, автор відомої книги
«Алгоритми і структури даних»,
писав: «Складається враження,
що можна побудувати цілий
курс програмування, вибираючи
приклади тільки із завдань
сортування».
81
6.2. Алгоритми пошуку даних
Завдання пошуку даних можна сформулювати так: знай-
ти у множині даних один або декілька елементів, які відпо-
відають заданим властивостям. Пошук даних виконується
в різних структурах даних, наприклад у словниках, списках,
базах даних, масивах та інших.
Вибір того чи іншого алгоритму пошуку безпосередньо
залежить від структури даних, для якої він реалізований.
Далі описано алгоритми і приклади програм пошуку даних
у масивах.
Пошук потрібної інформації може здійснюватись в упоряд-
кованому наборі та в неупорядкованому. Існують алгоритми
пошуку даних, які класифікують на основі механізму пошу-
ку.
` 6.2.1. Послідовний пошук
Припустимо, що в  коробці лежать кулі з  номерами від
1  до 21. Який алгоритм пошуку кулі з  номером 13 можна
запропонувати?
Послідовний пошук базується на прямому переборі еле-
ментів у невпорядкованому масиві, наприклад зліва направо,
і порівнянні кожного з них із заданим значенням.
Нехай дано масив a[0], a[1], ..., a[n] і потрібно визначити, чи
є у цьому масиві елемент, значення якого збігається зі зна-
ченням с. Зрозуміло, що в масиві може бути декілька зна-
чень, які збігаються зі значенням с. Але будемо вважати,
що потрібно визначити лише сам факт наявності елемента с
в масиві, тобто пошук припиняється одразу після знаходжен-
ня першого такого елемента.
Сутність алгоритму послідовного пошуку така.
Крок 1
Спочатку значення с  порівнюється зі значенням a[0]. Якщо вони збігаються, робиться
висновок, що елемент знайдено на нульовій позиції масиву і  на цьому пошук завер-
шується.
Крок 2 Інакше — значення с порівнюється зі значенням a[1] і робиться аналогічний висновок.
Крок 3 Далі аналогічний процес може повторюватися над елементом a[2] і  так далі до a[n].
Розглянемо сутність алгоритму послідовного пошуку на
прикладах 1, 2.
Приклад 1. У міжнародному марафоні бе-
руть участь представники 8 країн. Кількість
учасників не обмежена. Учасники від кожної
країни мають власний номер і номер країни.
Потрібно розробити алгоритм та програму
визначення, чи є серед 12 учасників, які фі-
нішували першими, представник команди за
номером 5.
Класифікація алгоритмів
пошуку даних:
• послідовний (лінійний)
пошук;
• бінарний (двійковий) пошук;
• пошук із поверненням;
• тернарний пошук.
82 Розділ 2
Цю задачу можна формалізувати таким
чином.
Результати масових змагань учасників
можна вважати випадковими. Тому сформує-
мо одновимірний масив цілими випадковими
числами в діапазоні від 1 до 8 завдовжки 12
і визначимо першу позицію елемента, на якій
розташоване число 5.
Розглянемо один із варіантів алгоритму,
його подано в словесно-формульній формі.
Крок 1
Сформувати масив mas із
12 випадковими числами
у  діапазоні від 1  до 8.
Крок 6 Перехід на п. 9.
Крок 2
p =  Учасника цієї країни не-
має
Крок 7 i = i + 1.
Крок 3 i = 0. Крок 8
Якщо i  = 12, то п. 4,
інакше  —  п. 9.
Крок 4
Якщо mas[i] =  5, то п. 5, інак-
ше  —  п. 7.
Крок 9 Виведення p.
Крок 5
p =  Учасник цієї країни
фінішував, i+1.
Крок 10 Кінець.
Програму реалізації алгоритму зображено на рис. 6.6.
Рис. 6.6. Послідовний пошук елемента в одновимірному масиві
Один із можливих результатів виконання програми може бути таким:
Інколи необхідно визначити не тільки наявність заданого
елемента в масиві, а й знайти усі ці елементи, наприклад для
обчислення їх суми, кількості таких елементів тощо. У тако-
му разі аналізуються всі елементи масиву.
836.2. Алгоритми пошуку...
Приклад 2. Розробимо програму для
завдання, що сформульовано у прикладі 1,
але визначимо кількість учасників країни,
зареєстрованої під номером 5, які фінішували
в числі перших 12.
Алгоритм розв’язування цього завдання
несуттєво відрізняється від попереднього,
а програму його реалізації зображено на
рис. 6.7.
Рис. 6.7. Обчислення кількості елементів в одновимірному масиві
Один із можливих результатів виконання програми може бути таким:
` 6.2.2. Бінарний пошук
Які, на вашу думку, особливості пошуку елементів в  упо-
рядкованому масиві слід враховувати з  метою прискорення
процесу пошуку?
Бінарний пошук можна застосовувати лише до впорядко-
ваних масивів.
Нехай дано масив mas[1], ..., mas[n], елементи якого впоряд-
ковані за зростанням їхніх значень, і ключове значення c, яке
потрібно знайти в масиві. Пошук будемо здійснювати методом
половинного ділення.
Сутність алгоритму бінарного пошуку така.
Крок 1
Позначимо поточне значення лівої межі масиву змінною l, а  значення правої
межі  —  змінною p  (початкові значення змінних: i = 1 і p = n).
Крок 2
Спочатку в  масиві обирають елемент, розташований усередині масиву,  —  mas[i]. Зна-
чення індексу середнього елемента можна визначити за формулою i  = [(l+p)/2] (ква-
дратними дужками позначено цілу частину числа).
Крок 3
Значення середнього елемента порівнюють із ключовим значенням c. Якщо c = mas[i],
елемент знайдено. Якщо c   mas[i], то далі для пошуку вибирають частину масиву,
розташовану ліворуч від mas[i], у  протилежному випадку  —  частину масиву, розташо-
вану праворуч від mas[i]. Для вибраної частини процес повторюють.
84 Розділ 2
Розглянемо алгоритм бінарного пошуку на прикладі 3.
Приклад 3. Нехай дано масив комп’ютер-
них термінів: алгоритмізація, біт, змінна,
масив, миша, файл. Розробимо програму
визначення, чи є в цьому масиві термін, який
після запуску програми вводиться з клавіатури.
Далі наведено алгоритм розв’язування.
Крок 1
Сформувати масив mas
комп’ютерних термінів.
Крок 7
Виконувати пункти 8–10 доти,
доки l  = p  and not per, інак-
ше  —  п. 11.
Крок 2 Визначити довжину n  масиву. Крок 8
i = [l+p]/2 # Номер середнього
елемента
Крок 3
Увести у  змінну с  — термін
для пошуку.
Крок 9
Якщо mas[i] =  c, то per =  True
(ознака наявності термінa),
інакше  —  п. 10.
Крок 4
per =  False #  Ознака
відсутності терміна
Крок 10
Якщо cmas[i], то l = i+1 (зміна
лівої межі), інакше  —  p =  i–1.
Крок 5
l =  0 #  Початкове значення
лівої межі.
Крок 11
Якщо per =  True, то виведен-
ня  —  «Термін на позиції», i;
інакше  —  виведення «Термін
відсутній».Крок 6
p =  n–1 #  Початкове значення
правої межі
Програму реалізації алгоритму зображено на рис. 6.8.
Рис. 6.8. Програма бінарного пошуку елемента в одновимірному масиві
Далі наведено один із варіантів виконання програми:
Проблема оперативного пошуку даних набула особливої
актуальності з появою Всесвітньої павутини.
85
` 6.2.3.Пошук максимального і мінімального
елементів у масиві
Поміркуйте, як можна в  одновимірному неупорядкованому
масиві цілих чисел знайти максимальний або мінімальний
елемент.
Пошук мінімального або максимального значення у масиві
можна реалізувати різними способами.
Сутність одного з алгоритмів пошуку елемента з мінімаль-
ним значенням (пошук елемента з максимальним значенням
принципово не відрізняється від алгоритму пошуку елемента
з мінімальним значенням) така.
Крок 1
Спочатку мінімальним вважається елемент, розташований на першій позиції. Його
значення порівнюється зі значенням другого елемента. Якщо значення другого еле-
мента менше за значення першого, то далі меншим вважається другий елемент.
Крок 2
Потім значення меншого елемента порівнюється зi значенням третього елемента
і  так далі до останнього елемента. У  результаті буде знайдено найменший елемент.
Розглянемо реалізацію алгоритму пошуку мінімального
числа в масиві на прикладі 4.
Приклад 4. Виконаємо алгоритм пошуку мі-
німального числа в масиві: 42, 12, 55, 5, 37.
1-й цикл: min := 42; 1242? Так  —  min := 12.
2-й цикл: 5512? Ні.
3-й цикл: 512? Так  —  min := 5.
4-й цикл: 537? Так  —  результат: min =  5.
Програму реалізації алгоритму пошу-
ку максимального і мінімального елементів
у масиві зображено на рис. 6.9.
Рис. 6.9. Програма пошуку максимального і мінімального елементів у масиві
Результат виконання програми:
86
` 6.2.4. Поняття про пошук із поверненням і тернарний пошук
Чи доводилося вам виконувати пошук варіантів виходу
з  лабіринту від його входу? Як у  таких випадках ви діяли?
Пошук із поверненням (від англ. backtracking) — це за-
гальний метод (або стратегія пошуку) розв’язування задачі,
коли доводиться неодноразово повертатися до стану об’єкта
(об’єктів), зафіксованого на попередньому кроці.
Класичним прикладом пошуку із поверненням є пошук
у лабіринті всіх шляхів від входу до виходу з нього. Перелік
усіх шляхів у лабіринті називають множиною всіх можливих
рішень.
Прикладом пошуку з поверненням є також гра в шахи,
коли для пошуку оптимального чергового ходу доводиться
неодноразово повертатися до поточного стану білих і чорних
фігур.
Пошук із поверненням може використовуватися для різ-
них структур даних для розв’язування задач, у яких потріб-
но перерахувати всі можливі варіанти, наприклад, доставки
вантажу з одної країни в іншу, або знайти способи отриман-
ня кредиту для будівництва готелю, або дати відповідь, чи
існує такий спосіб вкладу, який задовольняє власні потреби
клієнта тощо.
Алгоритм розв’язування задач методом пошуку з  повер-
ненням зводиться до послідовного розширення частко-
вого рішення. Якщо на черговому кроці таке розширен-
ня виконати не вдається, то здійснюється повернення на
попередній крок і  продовжується пошук.
Алгоритм розв’язування задач методом пошуку з повернен-
ням дозволяє знайти всі розв’язки для поставленого завдання,
якщо вони існують.
Для прискорення методу намагаються так організувати
обчислення, щоб якомога швидше можна було виявити варі-
анти, які не задовольняють умову (приклад 5).
Приклад 5.
У багатьох джерелах як класичний при-
клад алгоритму пошуку з поверненням опи-
сується задача про 8 ферзів, яку можна сфор-
мулювати так.
Необхідно на шаховій дошці розмістити
8 ферзів так, щоб жодний із них не був під
боєм іншого.
1. Спочатку ставиться на дошку один
ферзь.
2. Далі ставляться інші так, щоб його не
били вже поставлені ферзі.
3. Якщо на черговому кроці так поставити
фігуру не можна, повертаються на крок
назад і намагаються поставити раніше
встановленого ферзя на інше місце.
За допомогою методу з поверненням можна
отримати всі перестановки і комбінації даної
множини.
Метод пошуку з поверненням
можна зрозуміти на прикладі
класичної задачі: на шахівниці
n*n стоїть у клітинці (x, y)
шаховий кінь. Слід знайти такий
маршрут коня (який ходить
згідно шахових правил), коли
він обходить усю шахівницю,
побувавши у кожній клітинці
рівно один раз.
876.2. Алгоритми пошуку...
Тернарний пошук в інформатиці застосовується для по-
шуку максимумів або мінімумів функції, яка на деякому
відрізку спочатку постійно зростає, потім постійно спадає або
спочатку спадає потім зростає.
Алгоритм тернарного пошуку можна реалізувати для
пошуку заданого елемента в  упорядкованому масиві,
поділивши його на три приблизно рівні частини.
Елемент із заданим значенням можна порівняти з остан-
нім елементом першої частини.
Якщо значення збігаються, то пошук завершується, якщо
менше, то пошук продовжується в першій частині, інак-
ше — він порівнюється з останнім елементом другої частини.
Далі виконуються дії, аналогічні описаним.
Запитання для перевірки знань
Які існують найпростіші методи пошуку да-
них у  масиві?
Поясніть сутність алгоритму пошуку макси-
мального числа в  масиві.
Поясніть сутність послідовного методу по-
шуку даних у  масиві.
Сформулюйте алгоритм обчислення кілько-
сті заданих чисел у  масиві.
Поясніть сутність алгоритму бінарного по-
шуку даних у  масиві.
Наведіть приклад послідовного пошуку да-
них у  масиві.
Наведіть приклад бінарного пошуку даних
у  масиві.
Наведіть приклад тернарного пошуку да-
них у  масиві.
1
2
3
4
5
6
7
8
Завдання для самостійного виконання
Дано масив рядків: ‘байт’, ‘принтер’, ‘проце-
сор’, ‘монітор’. Розробіть програму визна-
чення позиції слова, що уводиться з  клаві-
атури.
Дано масив цілих чисел: 13, 7, 6, 7, 9, 7, 6,  5.
Розробіть програму обчислення кількості
числа, значення якого вводиться з  клавіа-
тури.
Дано масив цілих чисел: 6, 8, 13, 17, 19, 30,
13, 8. Розробіть програму визначення всіх
позицій, на яких знаходиться число, зна-
чення якого вводиться з  клавіатури.
Дано масив рядків: ‘блок’, ‘файл’, ‘біт’, ‘ко-
лонка’, ‘миша’. Розробіть програму пошуку
максимального і  мінімального значень еле-
ментів.
Розробіть програму створення масиву, що
містить 10 випадкових чисел у діапазоні від
3  до 9  і визначення, чи є  у ньому число 6.
Знайдіть в  Інтернеті відомості про 5  найви-
щих вершин в  Україні. Розробіть програму
визначення наявності у  цьому переліку
назви вершини, яка вводиться з клавіатури.
1
2
3
4
5
6
88
7. Обробка рядків
Рядок є одним з основних типів убудованих у мову Python
об’єктів, які мають загальну назву послідовність. Рядки мо-
жуть застосовуватися для подання символів, слів, фрагментів
тексту. Вони можуть також використовуватися для збережен-
ня двійкових значень байтів.
7.1. Основні відомості про рядки й операції над ними
З  рядковим типом даних ви зустрічалися багаторазово. Які
операції доводилося вам виконувати над рядками?
Рядок у мові Python є незмінним типом даних. Це означає,
що змінювати символи в рядку не можна. Наприклад, спроба
замінити в рядку принтер букву «и» на букву «о» призведе
до появи повідомлення про синтаксичну помилку.
Для змінення вмісту рядка застосовуються спеціальні за-
соби. Основним типом рядків є str, який застосовується для
роботи з текстовими даними у коді ASCII. Саме цей тип роз-
глядатимемо далі. Мова Python містить значну кількість спе-
ціальних символів. Найчастіше застосовуються символи n
(переведення рядка) і r (повернення каретки).
Щоб символ виводився в тому самому вигляді, його слід
екранувати: поставити перед ним слеш () (приклад 1).
Приклад 1
print (файлnмиша) # Буде виведено два рядки
файл
миша
print (файлnмиша) # Буде виведено один рядок
файлnмиша
Для роботи з рядками у мові Python є потужний набір засо-
бів: операції, функції, методи й модулі, які в повному обсязі
не завжди використовують і професійні програмісти. Розгля-
немо ті з них, що є основними та застосовуються найчастіше.
Для об’єднання двох рядків в один слід між ним розмісти-
ти слеш, або взяти їх у лапки, або використати конкатенацію
всередині дужок (приклад 2).
Приклад 2
файл # Об’єднання рядків за допомогою слеш миша
‘файлмиша’
(файл» # Об’єднання рядків за допомогою круглих дужок миша)
‘файлмиша’
(файл+ # Об’єднання рядків за допомогою операції
конкатенації  миша)
‘файл миша’
Основні операції над рядками:
• звернення до символу рядка;
• виділення фрагмента рядка;
• об’єднання двох рядків.
Екранування символів — заміна
в тексті керуючих символів на
відповідні текстові підстановки.
Ми уникаємо спеціальних
символів, коли не хочемо,
щоб вони мали своє особливе
значення. Екранування
відповідає на питання «Якщо
ці символи такі особливі, то
як мені їх використовувати
у  своєму тексті?»
У мові Python немає різниці між
рядком в  апострофах і  рядком
у  лапках. Якщо сам рядок містить
лапки, то його краще взяти
в  апострофи, а  якщо містить
апострофи — то в  лапки.
897.1. Основні відомості про ...
Якщо після слеша немає символа, який разом з ним ін-
терпретується як спеціальний, то слеш зберігається в рядку:
print (Наведемо перелік спеціальних символів)
Наведемо перелік спеціальних символів
Розглянемо основні операції над рядками.
• Звернення до символу рядка потребує зазначення імені
рядка та у квадратних дужках його індекса (нумерація
починається з нуля):
slp =  вінчестер
print(slp[2], slp[8]) #Виведення 2-го і  8-го символів
(‘н’, ‘р’)
• Виділення фрагмента рядка виконується за допомогою
операції:
ім’я рядка [початок: кінець: крок]
Як бачимо, усі параметри тут є необов’язковими. За за-
мовчуванням вони мають такі значення: початок — 0, кі-
нець — номер індекса останнього символу, крок, що дорівнює
одиниці:
a_1 =  процесор
a_1 [:] # Виділяється увесь рядок
процесор
a_1 [3:6] # Виділяється фрагмент цес
цес
• Об’єднання двох рядків реалізується за допомогою опе-
ратора конкатенації (+):
print (клавіа+тура)
клавіатура
a =  Системний
print (a+ блок)
Системний блок
Запитання для перевірки знань
Який основний тип мають рядки?
Як можна звернутися до символу рядка?
Наведіть приклад об’єднання двох рядків
в  один.
Яке призначення мають символи n?
Для чого в  рядках використовують слеш
()?
Як у  рядку можна виділити фрагмент?
1
2
3
4
5
6
Завдання для самостійного виконання
Об’єднайте рядки Створення анімації мето-
дом і  трансформації руху в  один рядок.
Визначте символ, розташований на 13-й по-
зиції рядка Операція конкатенації.
У рядку Змінити символ за індексом не-
можливо виділіть фрагмент із 9-ї до 26-ї
позиції.
Об’єднайте рядки Як у  рядку можна
і  виділити його фрагмент в  один рядок,
а  потім перетворіть його у  рядок у рядку
можна виділити його фрагмент.
Перетворіть рядок Усі параметри тут
є  необов’язковими у  рядок Параметри
є  обов’язковими.
1
Визначте символ, розташований на 13-й по-2
3
4
5
Екрановані послідовності, так
звані escape-послідовності,
можуть складатися з одного
або декількох символів після
зворотної скісної риски.
Якщо в  рядку не існує символа
з  указаним індексом, буде видано
повідомлення про помилку.
Як  відомо, рядки є  незмінними
типами даних, тому змінити
символ за індексом неможливо.
90
7.2. Функції і  методи опрацювання рядків
Яка, на вашу думку, потреба у  використанні функцій
і  методів опрацювання рядків? Чому не можна обійтися
тільки операціями над рядками?
Ви вже ознайомилися з операціями для роботи з рядками.
Для опрацювання рядків у мові Python існує значна кіль-
кість функцій, основні з яких наведено в табл. 7.1.
Таблиця 7.1. Основні функції опрацювання рядків
Функція Призначення
len()
Визначення кількості символів у  рядку:
len(монітор)
7
str()
Перетворення послідовності у  рядок.
Якщо необхідно з’єднати рядок з  іншим типом даних (числом, списком та іншими), то його
слід перетворити в рядок за допомогою функції str().
Найпростіша структура функції така: str(об’єкт):
str(), str([5, 6, 7]), str((8, 9)), str({a :  2}) #  Перетворення послідовностей
(, ‘[5, 6, 7]’, ‘(8, 9)’, {‘a’ :  2})
Рядки також можна повторювати, виконувати перевірку на входження і  невходження од-
ного рядка в  інший. Рядки можна форматувати багатьма способами за допомогою значної
кількості операцій форматування і  методу format ()
chr(код
символу)
Повертає символ зазначеного коду:
print (chr (1065))
Щ
ord(символ)
Повертає символ:
print (ord (Щ))
1065
До основних методів роботи з рядками можна віднести ме-
тоди, які наведено в табл. 7.2.
Таблиця 7.2. Основні методи роботи з рядками
Метод Опис
join ()
Перетворює рядкові елементи послідовності в  один рядок. Він має таку структуру:
відокремлювач.join (послідовність):
 .join ((Рядкові, елементи, послідовності))
‘Рядкові елементи послідовності’
upper ()
Замінює у  рядку всі малі букви великими:
print (комп’ютер.upper ())
КОМП’ЮТЕР
lower ()
Замінює у  рядку великі букви малими:
 print (КОМП’ЮТЕР.lower ())
комп’ютер
capitalize ()
Замінює першу букву рядка великою:
 print (комп’ютер.capitalize ())
Комп’ютер
917.2. Функції і методи...
Для пошуку і заміни в рядку застосовують понад десять
методів, основні з яких наведено в табл. 7.3.
Таблиця 7.3. Основні методи пошуку і заміни в рядку
Метод Опис
find ()
Здійснює пошук підрядка в  рядку. Якщо підрядок знайдено, повертається номер позиції,
після якої починається підрядок. Інакше  —  повертається значення –1. Формат методу:
рядок.find (підрядок, [початок [, кінець]])
Якщо параметри початок і  кінець не вказані, здійснюється пошук від самого початку рядка
до його кінця:
sl =  пошук підрядка в  рядку
sl.find (шук), sl.find (підряд), sl.find (кут)
(2, 6, –1)
index ()
Відрізняється від методу find () лише тим, що у  випадку, коли підрядок у  рядку відсутній,
генерується виняток ValueError
rfind ()
Відрізняється від методу find () лише тим, що повертається номер позиції рядка, на якій
закінчується підрядок
count ()
Визначає кількість входжень підрядка в  рядок:
sl =  пошук підрядка в  рядку
sl.count (ряд), sl.count (шук), sl.count (мас)
(2, 1, 0)
replace ()
Виконує заміну всіх входжень заданого підрядка в  рядку на новий підрядок і  повертає но-
вий рядок. Формат методу:
рядок.replace (підрядок заміни, новий підрядок)
print (старий комп’ютер.replace (старий, новий))
новий комп’ютер
Мова Python реалізує також складний пошук і заміну.
Для цього існує низка методів, які містяться у модулі re (тут
не розглядається).
Запитання для перевірки знань
Для чого призначена функція len()?
Яке призначення має функція chr()?
Для чого призначений метод find ()?
Поясніть сутність методу replace ().
Для чого призначений метод count ()?
Поясніть сутність методу upper ().
Для чого призначений метод join ()?
Порівняйте методи find () і rfind ().
1
2
3
4
5
6
7
8
Завдання для самостійного виконання
Дано рядки: Операційна і  система. Ви-
значте довжину кожного рядка, об’єднайте
їх в  один рядок і  визначте його загальну
довжину.
Дано чотири рядки: Великі річки України:,
Дніпро, Дністер, Десна. Визначте дов-
жину кожного рядка, об’єднайте їх в  один
і  визначте довжину нового рядка.
Дано рядок Рим  —  столиця Італії, Київ  —
столиця України. Визначте код букви м
і кількість входжень підрядка столиця в ря-
док.
Дано рядок microsoft Word. Замініть пер-
шу букву великою буквою М, визначте кіль-
кість букв о  в рядку і  код букви на п’ятій
позиції.
Дано рядок Інструкція для користувача.
Замініть слово користувача словом учня
і  визначте позицію, з  якої починається під-
рядок для.
1
2
3
4
5
92
7.3. Приклади програм обробки рядків
Наведіть приклади опрацювання рядків, з  якими вам
доводилося зустрічатися в  процесі вивчення інших
предметів, наприклад географії, фізики.
Приклад 1. Дано два рядки: Рядок є  незмін-
ним і типом даних. На рис. 7.1 зображено
програму об’єднання цих рядків, визначення
довжини створеного рядка, виділення підряд-
ка і заміни одного підрядка іншим.
Рис. 7.1. Програма об’єднання рядків
Останню інструкцію print (c) спеціально
додано до програми для того, щоб звернути
увагу на те, що метод replace не змінює сам
рядок, а лише повертає внесені зміни. Ре-
зультат виконання програми є таким:
Приклад 2. Дано рядки: (кількість, вхо-
джень) і (підрядка, в рядок). Розробити
програму об’єднання їх в один рядок і пере-
творення рядкових елементів в один рядок,
визначення кількості входжень у рядок слова
підрядка і коду букви к.
Програму реалізації цього завдання зобра-
жено на рис. 7.2.
Рис. 7.2. Програма перетворення рядкових елементів в один рядок
937.3. Приклади програм...
Оскільки початкові рядки складаються
з рядкових елементів, то підрядком у методі
count може бути повністю один із них. У цьо-
му випадку не можна розглядати як підрядок
частину рядкового елемента, інакше буде ви-
дано повідомлення про синтаксичну помилку.
Результат виконання програми:
Приклад 3. Дано рядок: рядок є  незмінним
типом даних. Замінити першу букву рядка на
велику, визначити код букви на 8-й позиції,
кількість букв м у рядку, позицію, з якої
починається слово «типом», і кількість букв
у слові «незмінним».
Програму реалізації завдання зображено
на рис. 7.3.
Рис. 7.3. Програма опрацювання одного рядка
Результат виконання програми:
Завдання для самостійного виконання
Складіть програму, за допомогою якої ря-
док Львів  —  гарне місто для екскурсій
перетворіть на рядок Львів  —  гарне місто
для екскурсій та подорожей.
Складіть програму, за допомогою якої
рядки Річка Сіверський Донець і  впадає
у  річку Дон об’єднуються в  один рядок
і  визначається його довжина.
Складіть програму, за допомогою якої ряд-
ки Найвища вершина, України Говерла
і  належить до, Карпатських гір об’єд-
нуються в  один рядок і  рядкові елементи
перетворюються в  один рядок.
Складіть програму об’єднання рядків Фай-
лова система та  операційної системи
Windows. Визначте довжину нового рядка
і  кількість входжень слова система в  цей
рядок.
Складіть програму, за допомогою якої
у рядку програма медіапрогравач Windows
поєднує багато функцій перша буква за-
мінюється великою буквою, визначаєть-
ся код букви на 10-й позиції і  кількість
букв  «о»  в  рядку.
Складіть програму, за допомогою якої
у  рядку Київський ботанічний сад визна-
чається довжина слова ботанічний, пози-
ція, з якої починається слово сад, кількість
букв н  у слові ботанічний і  код букви на
5-й позиції.
1
Складіть програму, за допомогою якої2
3
4
5
6
94
8. Графи
8.1. Основні поняття і терміни теорії графів
Чи доводилося вам розв’язувати задачі, в яких розглядається
деяка сукупність об’єктів, між якими заданий певний зв’язок?
З графами нам неодноразово доводилося зустрічатися в по-
всякденному житті. Існує багато задач, які можна розв’язати
за допомогою графів. Це задачі пошуку найкоротшого шляху
від одного населеного пункту до іншого, якщо відома карта
доріг, задача маршрутизації трафіку, якщо відомий час про-
ходження інформації від одного сервера до іншого, та багато
інших. Розглянемо приклад.
Приклад. В 11 класі проводиться шаховий
турнір, у якому беруть участь Катерина, Марія,
Володимир, Олександр і Петро. На даний мо-
мент грали: Катерина з Володимиром і Марією,
Володимир з Катериною, Марією і Петром,
Марія з Володимиром, Катериною і Петром,
Катерина з Олександром, Олександр з Марією
і Петром, Петро з Володимиром і Олександром.
Стан гри учасників відображений на схемі
(рис. 8.1).
На схемі кожний учасник позначений пер-
шою буквою свого імені, а суцільними лініями
показано ігри, що вже відбулися між учасни-
ками турніру, пунктирними — ігри, які ще не
відбулися.
З рис. 8.1 видно, що відбулося 6 ігор і 3
мають відбутися.
К
П
О
М
В
Рис. 8.1. Схематичне зображення стану гри в шахи
Сукупність елементів, а також весь набір зв’язків між еле-
ментами називають графом. У цьому випадку об’єкти назива-
ють вершинами графу, а зв’язкі між ним — ребрами графу.
Графи зазвичай зображуються у вигляді геометричних
фігур так, що вершини графу зображуються точками, а ре-
бра — лініями, що з’єднують ці точки.
Напрям позначається стрілкою. Наприклад, вулиці міста
з одностороннім рухом можна позначати дугою.
Якщо напрям не вказано, то такі лінії називають ребрами,
а граф — неорієнтованим.
На рис. 8.2 наведено приклад найпростішого графу з ре-
брами і дугами. Тут A, B, C — вершини графу, AB — дуга, AC
і BC — ребра. Вершина C з’єднана ребром сама із собою. Такі
ребра називають петлею.
Дві вершини, з’єднані ребром або дугою, називають суміж-
ними. Суміжними на рис. 8.2 є вершини A і B, A і C, B і C.
Наприклад, графом можна
назвати схеми метрополітену,
автошляхів між містами регіону,
схему комп’ютерної мережі.
Вершина може мати
ідентифікатор — цифру або
велику букву.
958.1. Основні поняття і ...
Граф, у якому будь-які дві вершини з’єднані ребрами, на-
зивають повним. Приклад повного графу наведено на рис. 8.3.
Степенем вершини називають число ребер, яким нале-
жить ця вершина. Наприклад, на рис. 8.3 кожне ребро має
степінь 3.
Шляхом у графі називають послідовність його ребер, які
зустрічаються при переміщенні з однієї вершини в іншу. Пер-
шу вершину називають стартовою (початком шляху), а ос-
танню — кінцем шляху. Наприклад, на рис. 8.4 із вершини
1 у вершину 4 є такі шляхи: 1–4, 1–5–4 і 1–2–3–4.
Довжиною шляху називають кількість ребер, що входять
у цей шлях. У розглянутому прикладі довжина другого шля-
ху дорівнює 2, а третього — 3. Жодне ребро на шляху не
повинно зустрічатися більше одного разу.
Неорієнтований граф називається зв’язаним, якщо з будь-
якої його вершини можна потрапити в будь-яку іншу вершину.
Тобто між будь-якою парою вершин цього графу існує як
мінімум один шлях.
Повний граф завжди є зв’язаним. Але не кожний зв’язаний
граф є повним. Наприклад, граф, зображений на рис. 8.4,
є зв’язаним, але не є повним.
дуга
ребро
петля
C
A
B
Рис. 8.2. Найпростіший граф із ребрами та дугами
1
2
3
4
Рис. 8.3. Приклад повного графу
Вершина графу, яка належить лише одному ребру, назива-
ється висячою. На рис. 8.5 висячою є вершина 1.
Вершина 0 не з’єднана із жодною іншою. Такі вершини
називають
­
ізольованими.
1
4 3
5 2
Рис. 8.4. Приклад зв’язаного, але не повного графу
1 3
3
5
0
2
2
висяча
ізольована
Рис. 8.5. Граф із висячою й ізольованою
вершинами та петлею
Родоначальником теорії графів
вважається Леонард Ейлер.
У  1736 році Ейлер запропонував
схему семи Кенігсберзьких
мостів, яка пізніше стала однією
з  класичних задач теорії графів.
96 Розділ 2
Циклом називають шлях з однієї вершини графу в ту саму
вершину. Циклів у графі для кожної вершини може бути де-
кілька.
Розглянемо приклади циклів для графу, зображеного на
рис. 8.6. Для вершини 2 у цьому графі є такі цикли:
2–1–5–2;
2–5–1–2;
2–3–4–5–2;
2–5–4–3–2;
2–1–5–4–3–2;
2–3–4–5–1–2.
Довжиною циклу називають кількість ребер у циклі.
Графи, які можна намалювати, не відриваючи олівця від
паперу, називають ейлеровими. Щоб визначити, чи є граф
ейлеровим, треба визначити степені 5 кожної вершини.
Якщо в графі більше двох непарних вершин, то намалю-
вати фігуру неможливо. Такі завдання можна виконати за
допомогою графу.
Якщо всі вершини графу парні, то намалювати фігуру
можливо, і починати можна з будь-якої вершини.
Якщо в  графі дві непарні вершини, то намалювати фігу-
ру можна, але тільки починати необхідно в одній з цих
двох непарних вершин, а закінчувати в іншій непарній
вершині.
Граф, який не має жодного циклу, називають деревом.
Приклад такого графу зображено на рис. 8.7.
Ребро називають мостом, якщо воно є єдиним шляхом, що
зв’язує дві вершини. Прикладом моста на графі, зображеному
на рис. 8.7, є ребро 1–2.
6 5
4
2
1
3
Рис. 8.6. Граф із циклами
84 5 6 7
1
2 3
Рис. 8.7. Приклад графу-дерева
Ребра графу можуть мати вагу, яка позначається числами
на ребрах самого графу.
Граф (неорієнтований і орієнтований), усі ребра якого ма-
ють вагу, називають зважений.
Класична задача теорії графів
має таку історію. У  1736 році
в місті Кенігсберзі було два
острови, з’єднані 7 мостами
з берегами річки Преголь
і  один з одним. Сутність задачі:
здійснити прогулянку містом
таким чином, щоб, пройшовши
один раз по кожному мосту,
повернутися в те саме місце,
звідки починалася прогулянка.
978.1. Основні поняття і ...
Приклад неорієнтованого зваженого графу зображено на
рис. 8.9. Тут вага ребра A–B дорівнює 3, а ребра B–C — 7.
B
F
C
E
А D
1
8
2
4
5
3
Рис. 8.8. Орієнтований зважений граф
A
C
B
D
2
3
7
5
8
Рис. 8.9. Неорієнтований зважений граф
Запитання для перевірки знань
Наведіть визначення графу.
Як позначають вершини графу?
Яка різниця між дугами і  ребрами графу?
Які графи називають повними?
Наведіть приклад найпростішого графу
з  ребрами і  дугами.
Які вершини графу називають суміжними?
Які графи називають орієнтованими; неорі-
єнтованими; змішаними?
Поясніть сутність степеня вершини.
Які графи називають зв’язаними?
Поясніть сутність циклу в  графі.
1
2
3
4
5
6
7
8
9
10
Завдання для самостійного виконання
Накресліть повний граф із п’ятьма верши-
нами.
На графі, зображеному на рис. 8.9, визначте
всі можливі довжини шляхів із вершини  C
у  вершину A.
У неділю учні 11 класу домовилися відві-
дати ботанічний сад. Час і  місце зустрічі
доручили визначити Вові, який мав пові-
домити  їх Юлі й  Миколі. Юля повинна по-
відомити їх Тані й  Віті, Вітя  —  Наталі й  Іго-
рю, Микола — Олі й Петру, Петро — Олені
й  Івану. Оформте схему оповіщення у  ви-
гляді графа.
Розробіть граф зв’язків основних пристроїв
вашого домашнього або шкільного комп’ю-
тера.
Накресліть зважений граф доріг держав-
ного значення між чотирма обласними
центрами України, вибраними за вказівкою
вчителя. На ребрах вкажіть довжину доріг.
Розробіть граф для станцій метро Києва: По-
штова площа, Майдан Незалежності, площа
Льва Толстого, Університетська, Театральна,
Хрещатик, Арсенальна з  усіма можливими
переходами між цими станціями користую-
чись рисунком.
Академмістечко
Житомірська
Святошино
Нивки
Берестейська
Шулявська
Политехнічний
Інститут
Вокзальна
Університетська
Театральна
Хрещатик
Арсенальна
Дніпро
Гідропарк
Лів
Сирець
Дорогожичи
Лук’янівська
Золоті
Ворота
Палац
Спорту Кловська
Печерська
Дружби
Народів
Видубичи
Славутич
Осокорки
Либідська
Палац
«Україна»
Республіканський
Стадіон
Площа
Льва Толстого
Майдан
Незалежності
Поштова
Площа
Контрактова
Площа
Тараса
Шевченка
Петрівка
Оболонь
Мінська
Героїв
Дніпра
Деміївська
Голосіївська
Васильківська
1
На графі, зображеному на рис. 8.9, визначте2
3
4
5
6
98
8.2. Способи подання графів у  комп’ютері
Пригадайте, як ви подавали графи під час вивчення
математики та інших навчальних дисциплін.
Існують декілька способів подання графів у комп’ютері,
розглянемо два з них: за допомогою матриць суміжності; за
допомогою списку суміжних вершин.
Подання графів за допомогою матриць суміжності. Матри-
ця суміжності для графу з n вершинами подається двовимір-
ним масивом розмірністю n*n.
Якщо вершина i  неорієнтованого незваженого графу має
ребро з вершиною j, то елемент масиву mas[i, j] набуває зна-
чення 1, інакше — 0.
Розробимо матрицю суміжності для неорієнтованого графу,
зображеного на рис. 8.10.
Матрицю суміжності для неорієнтованого незваженого гра-
фу наведено на рис. 8.11.
Вершини
Вершини
1 2 3 4 5 6
1 1 1 0 0 1 0
2 1 0 1 0 1 0
3 0 1 0 1 0 0
4 0 0 1 0 1 1
5 1 1 0 1 0 0
6 0 0 0 1 0 0
Рис. 8.11. Матриця суміжності для неорієнтованого
незваженого графу з петлею
Для орієнтованого незваженого графу елементи матриці
суміжності набувають значення 1, якщо відповідне ребро ви-
ходить з вершини, інакше — значення 0.
На рис. 8.12 ребро виходить із вершини 1 у вершини 2 і
3, тому елементи mas[1, 2] і mas[1, 3] набувають значення 1,
а елемент mas[2, 1] — значення 0.
Матрицю суміжності для орієнтованого незваженого графу
(див. рис. 8.12) наведено на рис. 8.13.
Вершини
Вершини
1 2 3 4 5
1 0 1 1 0 0
2 0 0 0 1 0
3 0 1 0 0 0
4 0 0 1 0 0
5 0 1 0 1 0
Рис. 8.13. Матриця суміжності для орієнтованого
незваженого графу
6
5
4
2
1
3
Рис. 8.10. Неорієнтований
незважений граф (із петлею)
4
3 5
1 2
Рис. 8.12. Орієнтований
незважений граф
998.2. Способи подання...
Розглянемо подання орієнтованого зваженого графу
(рис. 8.14). Матрицю суміжності для цього графу наведено
в таблиці на рис. 8.15. Як бачимо, елементи матриці набува-
ють значень ваги відповідних ребер.
Верши-
ни
Вершини
1 2 3 4 5
1 0 8 0 15 3
2 0 0 5 0 0
3 0 0 0 0 17
4 0 0 13 0 9
5 0 0 0 0 0
Рис. 8.15. Матриця суміжності орієнтованого зваженого графу
Подання графів за допомогою списку суміжних вершин.
Для кожної вершини складається список суміжних вершин.
Наприклад, для графу (див. рис. 8.12) список суміжних вер-
шин можна записати так:
1 –  2 –  3
2 –  4
3 –  2
4 –  3
5 –  2 –  4
Для зваженого графу біля суміжної вершини вказується
вага ребра. Наприклад, для графу (див. рис. 8.14) список
можна записати так:
1 –  2(8)
–  4(15)
–  5(3)
2 –  3(5)
3 –  5(17)
4 –  3(13)
–  5(9)
5 – 
Запитання для перевірки знань
Які способи подання графів у  комп’ютері?
Яка структура даних використовується
в  матриці суміжності?
Поясніть порядок створення матриці су-
міжності для неорієнтованого незваженого
графу.
Поясніть порядок подання графу списком
суміжних вершин.
Як створюється матриця суміжності для
орієнтованого зваженого графу?
Наведіть приклад подання зваженого графу
списком суміжних вершин.
1
2
3
4
5
6
Завдання для самостійного виконання
Складіть матрицю суміжності для графу,
зображеного на: а) рис.  8.4; б) рис.  8.6;
в) рис.  8.8.; г) рис.  8.9.
Знайдіть в  Інтернеті відомості про насе-
лені пункти, розташовані у вашій області,
з  кількістю населення понад 50000 осіб
і  довжину автомобільних шляхів між ними.
Розробіть граф автомобільних шляхів між
цими населеними пунктами та список су-
міжних вершин.
1
2
1
3 4
2
5
8 3
15
9
17
13
5
Рис. 8.14. Орієнтований зважений
граф
Графи, які можна намалювати,
не відриваючи олівця від
паперу, називають ейлеровими.
100
8.3. Пошук у глибину та ширину
Знайдіть в  Інтернеті схему метрополітену Києва, яка є  різ-
новидом графу. Сформулюйте алгоритм пошуку маршруту
з  однієї станції метро до іншої.
У процесі опрацювання графів часто доводиться викону-
вати обхід усіх його вершин. Існують декілька алгоритмів
перегляду вершин графу, розглянемо два з них: алгоритми
пошуку у глибину та пошуку в ширину.
Алгоритм пошуку в глибину. Для реалізації алгоритму
пошуку в глибину використовують дві структури даних: стек
для запам’ятовування ще не опрацьованих вершин і список
для запам’ятовування вже опрацьованих вершин.
Розглянемо сутність алгоритму пошуку в глибину.
Крок 1 Вибирають стартову вершину, наприклад V.
Крок 2 Стартову вершину включають у  список опрацьованих (переглянутих) вершин.
Крок 3 У стек включають усі вершини, суміжні зі стартовою.
Крок 4
Створюють цикл за умовою появи порожнього стека, усередині якого:
1) вибирають зі стека чергову вершину;
2) перевіряють у  списку, чи опрацьована ця вершина. Якщо опрацьована, то зі сте-
ка вибирають чергову вершину. Якщо вершина ще не опрацьована, то вибирають
її і  розміщують у  список опрацьованих вершин;
3) переглядають весь список суміжних із нею вершин і  розміщують у  стек ще не
опрацьовані вершини.
Наведемо пояснення до цього алгоритму.
Якщо стартовою є вершина V, то вибирає-
мо вершину U, що суміжна з вершиною V.
На наступному кроці для вершини U виби-
раємо суміжну з нею вершину.
Якщо на черговому кроці розглядається
вершина Q і немає вершин, суміжних із нею,
і таких, що не переглядалися раніше, то по-
вертаємося з вершини Q до тієї вершини,
з якої потрапили у вершину Q і т. д. Якщо
це вершина, з якої починався перегляд, тобто
вершина V, і непеглянутих суміжних з нею
вершин немає, то процес перегляду заверше-
ний.
Розглянемо порядок перегляду вершин графу в глибину на
прикладі 1 неорієнтованого незваженого графу (рис. 8.16, а).
Приклад 1. Перегляд вершин можна розпо-
чати з будь-якої вершини, наприклад із вер-
шини 3. Із неї можна рухатися і у вершину 2,
і у вершину 7.
Потім перейдемо до вершини 2, з якої ру-
хаємося до вершини 1. Але у вершини 1 від-
сутня суміжна для неї вершина, яка ще не
розглядалася.
1018.3. Пошук у глибину...
Повертаємося у вершину 2 і рухаємося до вершини 4.
У вершини 4 також відсутні суміжні вершини, які ще не
розглядалися.
Повертаємося ще раз у вершину 2 і рухаємося у верши-
ну 5. З неї рухаємося у вершину 6, потім у вершину 7.
Для реалізації алгоритму пошуку мовою Python нумерацію
вершин графу доцільно починати з 0. Суміжні вершини гра-
фу можна подавати списками (приклад 2).
Приклад 2. Список [[1,  2], [0, 2], [0, 1]] вказує, що вершина
0 має зв’язок із вершинами 1 і 2, вершина 1 — з вершинами
0 і 2, а вершина 2 — з вершинами 0 і 1.
Приклад 3. Нехай дано граф із шістьма
вершинами, які мають між собою такі зв’яз-
ки: [[4, 5], [5], [3, 4], [2, 4], [0, 2, 3], [0, 1]].
Програму обходу вершин графу в глибину,
починаючи з нульової вершини, зображено на
рис. 8.17.
Рис. 8.17. Програма обходу вершин графу в глибину
Результат виконання програми:
5
7
3
1 2
6
4
3
2
5
4
1
6
7
8
Рис. 8.16, а. Неорієнтований
незважений граф, стрілкою
позначено напрям руху,
цифрою — номер кроку
102 Розділ 2
Алгоритм пошуку в ширину. Спочатку опрацьовуються всі
вершини, суміжні з поточною, а потім — «нащадки». Замість
стека для збереження ще не опрацьованих вершин використо-
вується черга. Сутність алгоритму пошуку в ширину така.
Крок 1 Обирається стартова вершина, включається у  список опрацьованих вершин.
Крок 2 У черзі запам’ятовуються всі вершини, суміжні зі стартовою.
Крок 3
Створюється цикл за умови порожньої черги, усередині якого:
1) із черги вибирається чергова вершина;
2) у списку перевіряється, чи опрацьована ця вершина. Якщо вона вже опрацьова-
на, то із черги вибирається наступна вершина. Якщо вершина не опрацьована,
то необхідно опрацювати її і  помістити у  список опрацьованих;
3) переглядається весь список суміжних із нею вершин і  поміщаються в  чергу ще
не опрацьовані вершини.
Наведемо пояснення до цього алгоритму.
Наприклад, якщо стартовою є вершина А0,
то опрацьовуються всі суміжні з нею верши-
ни А1, А2, …, АK, далі — суміжні вершини для
кожної із вершин А1, А2, …, АK і т. д. Будуть
перебрані всі вершини, і пошук завершиться.
Розглянемо процес пошуку в ширину на
прикладі графу (рис. 8.16, б). Порядок обходу
вершин із вершини 3: з вершини 3 перегля-
даються вершини 2 і 7; з вершини 2 — вер-
шини 1, 4, 5, 6, а з вершини 7 — вершина 6.
Приклад 4. Нехай дано граф із шістьма вер-
шинами, які мають такі зв’язки між собою:
[[1, 3], [0, 3, 4, 5], [4, 5], [0, 1, 5], [1, 2], [1, 2, 3]].
На рис. 8.18 зображено програму обходу
вершин графу в ширину, починаючи з нульо-
вої вершини.
Рис. 8.18. Програма пошуку в ширину
1038.3. Пошук у глибину...
5
7
3
1 2
6
4
Рис. 8.16, б. Неорієнтований незважений граф,
кольором позначено кроки руху
Запитання для перевірки знань
Чому для реалізації алгоритмів пошуку
в  ширину і  довжину мовою Python доціль-
но позначати вершини графу цифрами, по-
чинаючи з  0?
Поясніть послідовність перегляду в  глиби-
ну вершин графу на рис.  4.16, починаючи
з  вершини 5.
Поясніть послідовність перегляду в  шири-
ну вершин графу на рис.  4.16, починаючи
з  вершини 7.
Сформулюйте сутність алгоритму пошуку
в  глибину.
Сформулюйте сутність алгоритму пошуку
в  ширину.
1
Поясніть послідовність перегляду в  глиби-2
Поясніть послідовність перегляду в  шири-3
Сформулюйте сутність алгоритму пошуку4 Сформулюйте сутність алгоритму пошуку4 Сформулюйте сутність алгоритму пошуку
Сформулюйте сутність алгоритму пошуку5
Завдання для самостійного виконання
Список суміжних вершин графу має такий
зміст: [[1, 3], [0, 2, 3], [1, 3], [0, 1, 2]]. Розро-
біть граф, який відповідає цьому списку.
Модифікуйте програму, зображену на
рис.  8.18, так, щоб обхід починався з  вер-
шини 2. Виконайте програму і доведіть пра-
вильність отриманих результатів.
Для списку суміжності вершин, який вико-
ристовується в  програмі (рис.  8.17), розро-
біть відповідний граф.
Модифікуйте програму (рис.  8.17) так, щоб
обхід починався з  вершини 3.
Виконайте програму, зображену на рис. 8.18,
для нового списку суміжних вершин, роз-
робленого самостійно. Доведіть правиль-
ність отриманих результатів.
Розробіть граф залізничних шляхів між
шістьма населеними пунктами України, які
виберіть на власний розсуд або за вказів-
кою вчителя. Створіть для цього графа спи-
сок суміжних вершин і  використайте його
у  програмі, зображеній на рис.  8.17. Вико-
найте програму і  доведіть правильність
отриманих результатів.
1
Модифікуйте програму, зображену на2
3
4
5
6
Результат виконання програми наведено
до прикладу 4:
104
8.4. Визначення найкоротшого шляху в  графі
З однієї станції метро можна потрапити до іншої станції
різними шляхами. Наведіть приклад пошуку найкоротшого
шляху у  відомому вам метро.
У процесі пошуку найкоротшого шляху у графі між двома
вершинами відшукується шлях, для якого сума ваг його ребер
є мінімальною серед усіх інших шляхів. Така задача може ви-
конуватися для неорієнтованого й орієнтованого графів.
Задача пошуку найкоротшого шляху у графі має важливе
практичне значення. Наприклад, у GPS-навігаторах здійс-
нюється пошук найкоротшого шляху між двома об’єктами.
Перехрестя вулиць є аналогом вершин, а вулиці (дороги) з їх-
німи довжинами — ребрами. Якщо сума довжин доріг між
об’єктами мінімальна, то вважається, що знайдено найкорот-
ший шлях.
Якщо вага ребер не вказана, то найкоротшим шляхом вва-
жається той, що містить найменшу кількість ребер. На графі,
зображеному на рис. 8.19, найкоротшим шляхом із верши­
ни 3 у вершину 6 є шлях 3–4–5–6, сума ваг ребер якого до-
рівнює 9.
Є різні варіанти задач про найкоротший шлях у графі:
•
• пошук найкоротшого шляху в задану вершину з усіх
інших вершин графу;
•
• пошук найкоротшого шляху між двома заданими вер-
шинами;
•
• пошук найкоротшого шляху з кожної вершини в усі
інші вершини графу;
•
• пошук найкоротшого шляху, який проходить через зада-
ну множину вершин, та ін.
Нині для кожного типу задач пошуку найкоротшого шля-
ху розроблено значну кількість алгоритмів. Розглянемо два
з них: алгоритм Дейкстри й алгоритм Флойда — Уоршелла.
`
` 8.4.1. Алгоритм Дейкстри
Кур’єр доставляє кореспонденцію абонентам, користуючись
схемою руху міського транспорту. Він майже щоденно
відшукує найкоротший шлях від станції отримання
кореспонденції до решти абонентів. Як він це робить?.
За допомогою алгоритму Дейкстри здійснюється пошук
найкоротшого шляху від однієї вершини графу (стартової) до
всіх його інших вершин.
Для полегшення опису алгоритму Дейкстри будемо нази-
вати вершину відвідуваною, якщо вона вже була включена
в будь-який шлях і її не можна більше включати в новий
шлях, а вершину, яка ще не використовувалася на шляху
і яка є суміжною з поточною, — видимою.
Роль ваги ребра можуть
виконувати не тільки самі їхні
довжини, а  й час переміщення,
витрачені фінансові, паливо-
енергетичні ресурси, вартість
та час виконання робіт тощо.
1 4
2 3
6 5
5
5
8
2
3
3
4
2
Рис. 8.19. Неорієнтований
зважений граф
Алгоритм Дейкстри  — алгоритм
на графах, винайдений
нідерландським ученим
Едсгером Дейкстрою в 1959
році, знаходить найкоротший
шлях від однієї вершини графу
до всіх інших вершин.
1058.4. Визначення ...
Наприклад, якщо вершина 0 (рис. 8.20) вже була включе-
на в маршрут, то вона є відвідуваною, а якщо вершина 2 не
включена в маршрут, то для неї видимими є вершини 3, 4 і 5.
Ви знаєте, що вершини графу можуть позначатися різни-
ми ідентифікаторами. Але якщо передбачається реалізувати
алгоритм мовою Python, то доцільніше вершини позначати
цілими числами в діапазоні від 0 до n −1. У цьому випадку
можна використовувати номери вершин як індекси.
Сутність алгоритму Дейкстри така.
Крок 1
На кожному поточному кроці аналізуються всі
видимі вершини і  вибирається та, до якої від-
стань є  найменшою. Ця вершина вважається
поточною.
Крок 2
Далі перераховуються всі відстані до всіх ви-
димих і  відвідуваних вершин. У  випадку якщо
знайдеться менша відстань, попереднє значен-
ня замінюється меншим.
На прикладі графу, зображеного на рис. 8.20, за допомо-
гою алгоритму Дейкстри знайдемо мінімальні відстані від
вершини 0 до всіх інших вершин цього графу.
Приклад
1. Будемо вважати стартовою вершину 0,
а фінішною — вершину 5. Із вершини 0
видимими є вершини 1 і 4, відстані до
яких відповідно дорівнюють 9 і 6. Інші
вершини є невидимими, відстань до них
невідома, що позначається великим чис-
лом, яке гарантовано буде більше чисел,
які використовуються у процесі розв’я-
зання цієї задачі (ми використали число
9999). Цей стан зафіксовано у табл. 8.1.
Таблиця 8.1. Відстані з  вершини 0
Номер
вершини
графу
0 1 2 3 4 5
Поточна від-
стань від стар-
тової вершини
0 9 9999 9999 6 9999
Вершина, з  якої
було зробле-
но останній
перерахунок
найменшої
відстані
0 0 0 0 0 0
Отже, у результаті реалізації першого кро-
ку відвідуваною є вершина 0 і визначено най-
менші відстані до видимих вершин.
2. Визначимо вершину, до якої можна пе-
рейти з вершини 0. Такими є вершини
1 і 4. Відстань до вершини 4 менша,
тому переходимо у вершину 4. Із верши-
ни 4 можна потрапити у вершини 2 і 3
(вершина 0 є відвідуваною, тому вона не
аналізується), відстані до яких відповід-
но дорівнюють 15 і 11. Перераховуємо
відстані до вершин 2 і 3 з вершини 4.
Отримані дані відображено в табл. 8.2.
Таблиця 8.2. Відстані з  вершини 4
Номер
вершини
графу
0 1 2 3 4 5
Відстань від
стартової
вершини
0 9 21 17 6 9999
Вершина, з  якої
було зроблено
останній
перерахунок
0 0 4 4 0 0
Таким чином, після цього кроку відві-
дуваними є вершини 0 і 4. Найближчою
до вершини 4 є вершина 3, тому перейдемо
у вершину 3.
14
9
6
2
9
11
1510
7 2
4
1 0
5
3
Рис. 8.20. Зважений
неорієнтований граф
106 Розділ 2
3. Із вершини 3 видимими є вершини 1,
2, 5. Почнемо аналіз із вершини 1. Від-
стань до неї дорівнює 19 17 2+( ) . Але до
цієї вершини зареєстрована відстань, що
дорівнює 9. Тому відстань із вершини 1
до вершини 3 дорівнює 11. Цю відстань
занесено в табл. 8.3.
Таблиця 8.3. Відстані з  вершини 3
Номер
вершини
графу
0 1 2 3 4 5
Відстань від
стартової
вершини
0 9 21 11 6 9999
Вершина, з  якої
було зроблено
останній
перерахунок
0 0 4 1 0 0
Відстань до вершини 2 з вершини 3 дорів-
нює 27, тобто більше, ніж зареєстрована від-
стань до неї з вершини 4. Тому значення 21
не змінюємо. Таким чином, після цього кроку
вибраними є вершини 0, 1, 2, 3, 4. Поточна
довжина до них зареєстрована у табл. 8.3.
4. Із вершини 1 у вершину 3 відстань на
поточний момент дорівнює 11. Із верши-
ни 3 у вершину 5 відстань дорівнює 20,
а з вершини 1 у цю ж вершину — 23.
Тому обираємо перший варіант і запису-
ємо у табл. 8.4.
Таблиця 8.4. Відстані від вершини 0
до всіх інших вершин
Номер верши-
ни графу
0 1 2 3 4 5
Відстань від
стартової
вершини
0 9 21 11 6 20
Вершина, з  якої
було зроблено
останній
перерахунок
0 0 4 1 0 3
Відповідь: мінімальні відстані з верши-
ни 0 у всі інші вершини (в порядку їх номе-
рів) є такими: 9, 21, 11, 6, 20.
Загальний вигляд алгоритму Дейкстри можна подати так.
Крок 1 Початок. Крок 6
Надати поточній вершині
статус відвідуваної.
Крок 2
Вибрати стартову вершину і  визна-
чити її поточною з  номером i.
Крок 7 Перейти до п. 3.
Крок 3
Перевірити, чи всі вершини графу
відвідані. Якщо всі, то перейти до
п.  8, інакше  —  до п. 4.
Крок 8
Вивести шлях від фінішної
вершини до стартової.
Обчислити найкоротшу
відстань між цими верши-
нами і  вивести її.Крок 4
Вибрати серед усіх видимих вершин
ту, до якої найменша відстань, і  ви-
значити її поточною.
Крок 5
Перерахувати відстані до всіх ви-
димих і  відвіданих вершин через
вершину i. Якщо знайдеться менша
відстань, замінити нею попереднє
значення, а  також присвоїти но-
мер  i  цій вершині.
Крок 9 Кінець.
Для реалізації алгоритму Дейкстри мовою Python зважений
неорієнтований граф можна реалізувати словником суміжно-
сті. У такому разі як ключ можна вибрати номер вершини,
як значення — вагу ребра.
1078.4. Визначення ...
Опис графу (рис. 8.20) має такий вигляд:
N =  [
	
{1:  9, 4: 6},
			
# Для нульової вершини
	
{0:  9, 3: 2, 5: 14},
		
# Для першої вершини
	
{3:  10, 4: 15, 5: 7},
		
# Для другої вершини
	
{1:  2, 2: 10, 4: 11, 5  : 9},		 #  Для третьої вершині
	
{0:  6, 2: 15, 3: 11},
		
# Для четвертої вершини
	
{1:  14, 2: 7, 3: 9},
		
#  Для п’ятої вершини
[
Отже, вершина 0 суміжна з вершиною 1, вага їхнього ре-
бра дорівнює 9, а також суміжна з вершиною 4, вага ребра 6.
Вершина 1 суміжна з нульовою, вага ребра дорівнює 9, з вер-
шиною 3 з вагою ребра 2 і з п’ятою з вагою ребра 14 і т. д.
Розробимо програму реалізації алгоритму Дейкстри, у якій
використано дані графу (рис. 8.20). Стартовою є вершина 0.
У програмі (рис. 8.21) використані такі змінні: p  — слов-
ник поточної відстані до видимих вершин; u — список від-
віданих вершин; min_x — номер вершини, до якої відстань
є мінімальною від останньої відвіданої вершини; min_v — мі-
німальна відстань до поточної відвіданої вершини.
Рис. 8.21. Програма реалізації алгоритму Дейкстри
Результат виконання програми:
Уперше теорію графів як
окрему математичну дисципліну
представив угорський
математик Кенінг у  1930-ті роки.
108
` 8.4.2. Алгоритм Флойда — Уоршелла
Інкасатор щоденно відвідує магазини atb і може потрапляти
від будь-якого магазину до всіх інших найкоротшим шляхом.
У  такому випадку найкоротшу відстань можна знайти за
допомогою алгоритму Флойда  —  Уоршелла.
Ви знаєте, що для визначення найкоротшого шляху графу
можна скористатися алгоритмом Дейкстри і в циклі обійти
всі вершини. Розглянемо алгоритм Флойда — Уоршелла, який
відрізняється від нього тим, що дозволяє знайти найкоротшу
відстань не тільки від однієї вершини графу до всіх інших,
а й від кожної вершини до всіх інших.
Згадаємо, що графи, які можуть одночасно використовува-
тися і дуги, і ребра, називають змішаними. Розглянемо сут-
ність алгоритму Флойда — Уоршелла на прикладі змішаного
зваженого графу (рис. 8.22), сформулюємо алгоритм у загаль-
ному вигляді.
Приклад
1. Створимо для цього графу матрицю су-
міжності D[][].
Номер
вершини
0 1 2
Вершина 0 0 13 3
Вершина 1 2 0 6
Вершина 2 3 6 0
У кожному елементі D[i][j] матриці зберіга-
ється вага ребра між вершинами i та j. У про-
цесі реалізації алгоритму Флойда — Уоршел-
ла будуть аналізуватися всі можливі варіанти
довжин між вершинами i та j. Якщо виявля-
тиметься, що довжина менша, ніж зафіксо-
вана у поточний момент в елементі D[i][j], то
менше значення замінить поточне.
Отже, у результаті повної реалізації алго-
ритму ми повинні отримати таку матрицю
суміжності, у якій будуть зберігатися міні-
мальні довжини між усіма вершинами графу.
2. Зрозуміло, що довжина шляху з кожної
вершини в ту саму вершину дорівнює 0
(навіть коли вершина має петлю). Напри-
клад, довжина шляху з вершини 2 у вер-
шину 2 дорівнює 0. Це означає, що всі
елементи D[i][i] дорівнюють нулю.
3. Якщо у графі є вершини, які між собою
безпосередньо не мають ребер, то відпо-
відним елементам матриці суміжності
надамо нескінченне значення або макси-
мально можливе, яке гарантовано буде
більше від найдовшого шляху в графі.
Наприклад, якщо вершини i та j безпо-
середньо не пов’язані ребром, то елемен-
ту D[i][j] надамо значення 9999. У графі,
зображеному на рис. 8.22, таких вершин
немає.
4. Найкоротший шлях із вершини i у вер-
шину j може бути як безпосередньо між
цими вершинами, так і через k інших
вершин. Наприклад, довжина ребра
безпосередньо між вершинами 1 і 2 до-
рівнює 6, а довжина ребер з вершини 1
у вершину 2 через вершину 0 — 5.
У цьому випадку D[1][0]+D[0][2]D[1][2].
Тому значення елемента D[1][2], яке на
даний момент дорівнює 6, замінюється
значенням довжини D[1][0]+D[0][2], яке
дорівнює 5.
У загальному випадку реалізується таке
правило:
якщо D[i][k]+D[k][j]D[i][j], то значення елемен-
та D[i][j] замінюється значенням D[i][k]+D[k][j].
10
2
2
13
63
Рис. 8.22. Змішаний зважений граф
1098.4. Визначення ...
5. Далі наведено детальний аналіз обчис-
лення довжини шляху між усіма верши-
нами i та j через усі вершини k.
Вершини Між якими вершинами
обчислюється довжина шляху
і  через які вершини
к i j
0 0 0 D[0][0] Не змінюється
0 0 1 D[0][1] Не змінюється
0 0 2 D[0][2] Не змінюється
0 1 0 D[1][0] Не змінюється
0 1 1 D[1][1] Не змінюється
0 1 2
З 1  → 2  через 0;
D[1][2] змінюється на 5
0 2 0 D[2][0] Не змінюється
0 2 1 D[2][1] Не змінюється
0 2 2 D[2][2] Не змінюється
1 0 0 D[0][0] Не змінюється
1 0 1 D[0][1] Не змінюється
1 0 2 D[0][2] Не змінюється
1 1 0 D[1][0] Не змінюється
1 1 1 D[1][1] Не змінюється
1 1 2 D[1][2] Не змінюється
1 2 0 D[2][0] Не змінюється
1 2 1 D[2][1] Не змінюється
1 2 2 D[2][2] Не змінюється
2 0 0 D[0][0] Не змінюється
2 0 1
З 0  → 1 через 2;
D[0][1] змінюється на 9
2 0 2 D[0][2] Не змінюється
2 1 0 D[1][0] Не змінюється
2 1 1 D[1][1] Не змінюється
2 1 2 D[1][2] Не змінюється
2 2 0 D[2][0] Не змінюється
2 2 1 D[2][1] Не змінюється
2 2 2 D[2][2] Не змінюється
6. Таким чином, після заміни значень еле-
ментів D[1][2] і  D[0][1] матриця суміжності
матиме такий зміст:
Номер
вершини
0 1 2
Вершина 0 0 9 3
Вершина 1 2 0 5
Вершина 2 3 6 0
Розглянемо загальний зміст алгоритму Флойда — Уоршел-
ла для графу з кількістю вершин n.
Крок 1
Вибрати вершину k = 0, через яку здійснюється перерахунок довжини між
вершинами i  та j.
Крок 2 Вибрати вершину i = 0.
Крок 3 Вибрати вершину j = 0.
Алгоритм Флойда — Уоршелла  —
динамічний алгоритм для
знаходження найкоротших шляхів
між усіма вершинами зваженого
орієнтованого графу.
Розроблений в 1962 году
Робертом Флойдом і Стівеном
Уоршеллом.
Уперше алгоритм розробив
і  опублікував Бернард Рой у 1959
році.
110 Розділ 2
Крок 4
Якщо значення D[i][k]+D[k][j]D[i][j], то D[i][j] =  D[i][k]+D[k][j], інакше D[i][j] не
змінюється.
Крок 5 Якщо j  = n, то j = j + 1  і перейти до п. 4, інакше  —  перейти до п. 6.
Крок 6 Якщо i  = n, то i = i + 1  і перейти до п. 3, інакше  —  перейти до п. 7.
Крок 7 Якщо k  = n, то k = k + 1  і перейти до п. 2, інакше  —  перейти до п. 8.
Крок 8 Кінець.
Програму реалізації алгоритму зображено на рис. 8.23.
Рис. 8.23. Програма реалізації алгоритму Флойда — Уоршелла
Запустимо програму і перевіримо її роботу на прикладі
такої матриці суміжності:
Номер
вершини
0 1 2 3
0 0 15 9999 2
1 4 0 10 3
2 9999 10 0 6
3 2 3 5 0
1118.4. Визначення ...
Динаміку і результат виконання програми наведено на
рис. 8.24 (с. 111).
Запитання для перевірки знань
Назвіть основні варіанти задач пошуку найкоротшого шляху
в  графі.
Яка основна різниця між алгоритмами Дейкстри і  Флой-
да  —  Уоршелла?
Поясніть порядок виконання алгоритму Дейкстри на прикла-
ді найпростішого графу.
Поясніть порядок виконання алгоритму Флойда  —  Уоршел-
ла на прикладі найпростішого графу.
Сформулюйте алгоритм Дейкстри.
Сформулюйте алгоритм Флойда  —  Уоршелла.
1
2
3
4
5
6
Завдання для самостійного виконання
Для графу на рис.  8.19 визначте найкоротші шляхи від вер-
шини 2  до всіх інших.
Для графу на рис.  8.19 визначте найкоротші шляхи від кож-
ної вершини до всіх інших.
Визначте найкоротший шлях з  вершини  А у вершину H
у  графі, зображеному на рис.  8.25.
Модифікуйте програму на рис.  8.21 для того, щоб вона ви-
значала найкоротший шлях від вершини 0 до інших вершин
для графу, зображеного на рис.  8.19. Виконайте програму
і  доведіть, що отримано правильні результати.
Модифікуйте програму на рис.  8.23 для того, щоб вона
визначала найкоротший шлях від кожної вершини до всіх
інших для графу, зображеного на рис.  8.19. Виконайте про-
граму і  доведіть, що отримано правильні результати.
Знайдіть в  Інтернеті схему Київського метрополітену. Визна-
чте мінімальну кількість станцій на шляху від станції «Вок-
зальна» до станції «Олімпійська».
Виконайте програму на рис. 8.23 для графу, зображеного на
рис.  8.26.
1
Для графу на рис.  8.19 визначте найкоротші шляхи від кож-2
Визначте найкоротший шлях з  вершини  А у вершину H3
4
5
A
H G
F
ED
C
B
Рис. 8.25. Неорієнтований незважений граф
1
5
2
6 3
1
2
0
3
Рис.  8.26. Орієнтований зважений граф
6
7
Рис. 8.24. Динаміка та  результат
виконання програми до рис.  8.23
112
9. Динамічне програмування і жадібні алгоритми
9.1. Динамічне програмування
Чи доводилося вам раніше у  процесі вивчення математики
або фізики розбивати складну задачу на декілька дрібніших
однотипних задач?
Динамічне програмування — це метод розв’язування задач,
що мають певні властивості, шляхом їх розбиття на декілька
однотипних підзадач, пов’язаних між собою.
Динамічне програмування — розділ математичного
програмування, що вивчає багатокрокові процеси пошу-
ку оптимального вирішення складних завдань.
Застосовується при складанні програм рішення таких
задач оптимізації, для яких процес пошуку рішення мож-
на представити у вигляді деякої послідовності кроків, тобто
знаходять оптимальне рішення на кожному кроці процесу
і таким чином зводять рішення однієї складної задачі до ви-
рішення великого числа значно менш складних.
До задач оптимізації відносять задачі пошуку максимальних
або мінімальних значень певних функцій. Наприклад, пошуку
максимального значення прибутку від інвестування у відпо-
відну галузь за багаторічний період зводиться до послідовного
визначення оптимальних капіталовкладень на кожен рік.
Загальним для задач динамічного програмування є те, що
змінні в моделі розглядаються не разом, а послідовно, одна за
одною, тобто будується така обчислювальна схема, коли замість
одного завдання з багатьма змінними використовують багато
завдань з малим числом (зазвичай навіть однієї) змінних у кож-
ній. Це значно скорочує обсяг обчислень. Пояснимо сутність ди-
намічного програмування на найпростішому прикладі 1.
Приклад 1. Нехай потрібно обчислити суму n чисел:
1 2 3 4+ + + +…+ n. Складність цієї задачі полягає в тому, що
необхідно одразу взяти велику кількість чисел і додати їх.
Можна спочатку визначити суму першого елемента, тобто
просто взяти перший елемент: f 1 1( )= . Потім до суми можна
додати другий елемент: f f2 1 2 3( )= ( )+ = .
Аналогічно отримуємо: f f3 2 3 6( )= ( )+ = , f n f n n( )= −( )+1 .
Часто більшість виділених підзадач однакові. Але дина-
мічне програмування дозволяє розв’язувати не всі типи задач,
а лише певний клас задач, який використовується у таких
галузях, як математика, програмування, статистика, еконо-
міка, лінгвістика, теорія ігор тощо, і які мають властивість
співоптимальності.
Основними типами задач дина-
мічного програмування є  задачі
оптимізації, комбінаторики,
задачі з  використанням графів.
Зазвичай задачі комбінаторики
пов’язані з  пошуком кількості
об’єктів, які мають задані
властивості, а  задачі з  викорис-
танням графів  —  із пошуком,
наприклад, мінімальної відстані
між пунктами A і  B  на карті
доріг, поданій у  вигляді графу.
Поняття «динамічне
програмування» було використано
на початку 1940-х років
американським математиком
Річардом Беллманом. Він
використав його для опису
процесу пошуку розв’язку задач,
для яких відповідь на одну
задачу можна отримати лише
після розв’язання попередньої
задачі. У  1953 році вчений зробив
уточнення терміна. Його стали
використовувати для назви задач,
безпосередньо пов’язаних із
розв’язуванням вкладених підзадач
для пошуку розв’язку всієї задачі.
Нині термін розглядається як
підрозділ системного аналізу та
програмної інженерії.
1139.1. Динамічне...
Приклад 2. Припустимо, що компанія виготовляє процесори
(позначимо їх змінною х1), системні плати (х2), монітори (х3)
та інші пристрої. Для визначення максимального прибутку
потрібно визначити, яку кількість пристроїв слід виготовити,
скільки потрібно мати персоналу тощо.
Знайти розв’язок цієї задачі за великої кількості змінних
досить складно. Але можна відокремити задачу із змінною x1.
Після того як знайдено оптимальний розв’язок для першої
підзадачі, виділяється підзадача з двома змінними x1 і x2,
і вона розв’язується за допомогою вже знайденого розв’язку
для першої задачі.
Потім виділяється підзадача з трьома змінними x1, x2 і x3
і розв’язується за допомогою раніше використаного методу.
Важливо те, що у процесі розв’язування складної задачі
не розв’язується заново чергова підзадача, а використовується
вже отриманий розв’язок попередньої підзадачі.
Наведемо типові задачі, які можна розв’язувати за допомо-
гою динамічного програмування:
• розроблено граф доріг між населеними пунктами певно-
го регіону; потрібно знайти мінімальний маршрут між
двома населеними пунктами або маршрут, на який ви-
трачається мінімальна кількість пального;
• корпорація виготовляє процесори, смартфони, монітори
та інше обладнання; потрібно визначити оптимальну
кількість виготовлення кожного виду пристроїв для
отримання максимального прибутку.
Розглянемо розв’язування задачі обчислення чисел Фібо-
наччі на прикладі 3.
Приклад 3. Нехай є сходи, по яких можна
ступати по кожній сходинці або через одну
(рис. 9.1). Скількома способами можна потра-
пити на i сходинку?
На першу сходинку можна потрапити
одним способом, на другу — двома, на тре-
тю — трьома способами.
Кількість способів потрапити на сходин-
ку i дорівнює сумі способів потрапляння на
сходинки i −1 і i −2, тобто обчислюється за
допомогою формули f a f a f ai i1 1 2( )= ( )+ ( )− − ,
яка фактично є формулою обчислення чисел
Фібоначчі. Нагадаємо, що числа Фібоначчі,
починаючи з третього, отримують шляхом
складання двох попередніх чисел, а перше
і друге число дорівнюють одиниці:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,…
Рис.  9.1. Сходи
Щоб обчислити деяке число в цій послі-
довності, спочатку потрібно обчислити третє
число, склавши перших два числа, потім
четверте, склавши друге і третє числа, і т. д.
Сутність співоптимальності
полягає в  тому, що велика
складна задача поділяється
на окремі невеликі підзадачі.
Схематично цю сутність можна
пояснити на прикладі логістики
(розроблення оптимального
плану виробництва).
В  основу динамічного
програмування покладено
ідею розв’язання однієї
складної задачі шляхом
ділення її на окремі частини
(підзадачі, етапи), розв’язування
цих підзадач і  об’єднання
отриманих результатів в  одне
загальне розв’язання.
114 Розділ 2
Здається, що задачу обчислення чисел Фібоначчі можна
розв’язати методом перебору. Але цей метод не є ефективним.
Проста рекурсивна функція вимагатиме суттєвих ресурсів
вже на 30-му числі Фібоначчі. Під час застосування цього
методу ті самі значення аргументів функції будуть обчислю-
ватися багаторазово.
Програму мовою Python обчислення чисел Фібоначчі на ос-
нові рекурентного підходу наведено на рис. 9.2.
Рис. 9.2. Перший варіант програми обчислення чисел Фібоначчі
Ще один варіант програми обчислення чисел Фібоначчі
наведено на рис. 9.3.
Рис. 9.3. Другий варіант програми обчислення чисел Фібоначчі
1159.1. Динамічне...
Числа Фібоначчі можна обчислити в іншій спосіб: позба-
витися обчислень, що повторюються. Це можна зробити за
допомогою динамічного програмування — задача поділяється
на підзадачі, що повторюються, кожна з яких розв’язується
тільки один раз. Найпростіший варіант реалізації задачі —
це запам’ятовувати обчисленні значення в додатковому масиві
та використовувати їх для подальших обчислень.
Розглянемо ще один приклад динамічного програмуван-
ня — задачу про повернення здачі.
Є два варіанти цієї задачі.
Задачу повернення здачі можна cформулювати так: ви-
значити, скількома способами F(n) можна повернути здачу
суми n монетами заданого номіналу.
1-й варіант: з урахуванням порядку видачі монет (купюр).
Наприклад, здача у такому порядку видачі монет: 1, 2, 5 та
5, 2, 1 вважається різними варіантами.
Опишемо сутність застосування 1-го варіанта розв’язуван-
ня на прикладі 4.
Приклад 4. Нехай потрібно повернути здачу
10 копійок монетами номіналом 1, 2 і 5 ко-
пійок. Позначимо F(10) кількість способів по-
вернення здачі.
Спочатку розглянемо окремі випадки.
Очевидно, що здачу в одну копійку можна
повернути одним способом, тобто повернути
1 копійку. Дві копійки можна повернути дво-
ма способами, а саме: 1 1+ і 2 копійки. Три
копійки можна повернути трьома способами:
1 2+ , 2 1+ і 1 1 1+ + . Здачу в чотири копійки
можна повернути п’ятьма способами: 2 2+ ,
2 1 1+ + , 1 2 1+ + , 1 1 2+ + і 1 1 1 1+ + + .
Отже, ми визначили початкові значення:
F 1 1( )= , F 2 2( )= , F 3 3( )= і F 4 5( )= .
Спробуємо тепер узагальнити процес по-
вернення здачі. Кількість способів, якими
можна повернути 10 копійок, залежить від
того, яку монету повернуто першою. Якщо
першою повернуто 1 копійку, то необхідно
повернути ще 9 копійок; якщо першою повер-
нуто 2 копійки, то слід повернути ще 8 ко-
пійок; якщо першою повернуто 5 копійок,
то слід повернути ще 5 копійок. Кількість
способів повернення 10 копійок дорівнює:
F F F F10 9 8 5( )= ( )+ ( )+ ( ).
Отже, для визначення F 10( ) необхід-
но знайти F 9( ). Зрозуміло, що у випадку
повернення першої монети номіналом 1 ко-
пійка необхідно повернути ще 8 копійок;
якщо першою повертають 2 копійки, то необ-
хідно повернути 7 копійок; якщо повернуто
5 копійок, то слід повернути ще 4 копійки.
Таким чином, кількість способів повернен-
ня здачі в 9 копійок дорівнює:
F F F F9 8 7 4( )= ( )+ ( )+ ( ).
Звідси випливає, що повернення суми роз-
міром k копійок монетами номіналом 1, 2
і 5 копійок обчислюється за формулою:
F k F k F k F k( )= −( )+ −( )+ −( )1 2 5 за умови, що
k 5 і F 0 1( )= , F 1 1( )= , F 2 2( )= , F 3 3( )=
і F 4 5( )= .
Продемонструємо порядок реалізації цієї
формули:
F F F F F F F5 0 3 4 0 3 4 1 3 5 9( )= ( )+ ( )+ ( )= ( )+ ( )+ ( )= + + =
F F F F F F F5 0 3 4 0 3 4 1 3 5 9( )= ( )+ ( )+ ( )= ( )+ ( )+ ( )= + + = .
F F F F6 1 4 5 1 5 9 15( )= ( )+ ( )+ ( )= + + = .
F F F F7 2 5 6 2 9 15 26( )= ( )+ ( )+ ( )= + + = .
F F F F8 3 6 7 3 15 26 44( )= ( )+ ( )+ ( )= + + = .
F F F F9 4 7 8 5 26 44 75( )= ( )+ ( )+ ( )= + + = .
F F F F10 5 8 9 9 44 75 128( )= ( )+ ( )+ ( )= + + = .
Програму реалізації цього алгоритму по-
вернення здачі подано на рис. 9.4.
Річард Ернст Беллман —
американський математик,
один з найвидатніших фахівців
в області математики та
обчислювальної техніки.
Зокрема його вважають батьком
динамічного програмування.
116 Розділ 2
Рис. 9.4. Програма обчислення кількості варіантів повернення здачі
Результат виконання програми:
2-й варіант: без урахування порядку видачі монет (купюр).
Головне полягає не в тому, в якому порядку клієнт отримує
монети, а які саме монети отримує. Наприклад, видача здачі
монетами 1, 2, 5 і монетами 2, 5, 1 вважається одним варі-
антом.
Опишемо сутність застосування 2-го варіанта на прикладі 5.
Приклад 5. Нехай у касі є монети 1, 2 і 5
копійок, якими слід повернути здачу 7 копі-
йок. Можливі такі варіанти:
1 1 1 1 1 1 1 7+ + + + + + =
1 1 1 1 1 2 7+ + + + + =
1 1 1 2 2 7+ + + + =
1 2 2 2 7+ + + =
1 1 5 7+ + =
2 5 7+ =
Усього шість варіантів.
Аналіз виконаних дій дозволяє зробити
висновок, що процес пошуку кількості варі-
антів повернення здачі є циклічним і скла-
дається із множини вкладених циклів. Кіль-
кість таких циклів визначається кількістю
типів монет. Кількість виконання кожного
вкладеного циклу залежить від суми здачі
й номіналу самої монети.
Програму визначення кількості варіантів
повернення здачі й кількості монет кожного
з номіналів 1, 2, 5 і 10 зображено на рис. 9.5.
Рис. 9.5. Програма обчислення повернення здачі
1179.1. Динамічне...
Результат виконання програми:
Принцип оптимальності дина-
мічного програмування сформу-
лював Р. Беллман: «Оптимальна
поведінка має таку властивість:
якими б не були первісний стан
і рішення в початковий момент,
наступні рішення повинні бути
оптимальними щодо стану,
отриманого в результаті первіс-
ного рішення».
Внесок Беллмана в динамічне
програмування був увічнений
у назві «рівняння Беллмана»,
центрального результату теорії
динамічного програмування.
Запитання для перевірки знань
Які задачі можна розв’язувати за допомо-
гою динамічного програмування?
У чому полягає сутність властивості спів-
оптимальності?
Які типи задач можна розв’язувати за допо-
могою динамічного програмування?
Поясніть на прикладі сутність динамічного
програмування.
1
2
3
4
Завдання для самостійного виконання
Визначте, скількома способами можна спла-
тити суму 60 грн купюрами номіналом 5,
10, 20 і  50 грн.
Виконайте програму, зображену на рис. 9.3,
для отримання суми перших 15 чисел Фібо-
наччі. Доведіть, що отримано правильний
результат.
Модифікуйте програму, наведену на
рис.  9.2, таким чином, щоб обчислювалася
тільки сума перших 12 чисел Фібоначчі.
Модифікуйте програму, наведену на
рис.  9.4, таким чином, щоб вона підрахову-
вала всі варіанти повернення здачі 17 ко-
пійок монетами 2, 5  і 10 копійок і  кількість
варіантів.
У корпорації три компанії. На початку
року між компаніями розподіляються
200  млн грн інвестицій у  сумі, кратній 50
млн. У  таблиці показано приріст продукції
(у  млн грн) залежно від розміру інвестицій.
Сума
інвестицій
Приріст продукції від компаній
1-ша
компанія
2-га
компанія
3-тя
компанія
0 9 14 12
50 12 19 16
100 15 21 20
150 20 24 25
200 24 29 27
Розподіліть між компаніями 200 млн грн
так, щоб отримати максимальний загальний
прибуток.
Поле розбито на клітинки з  n стовпцями
і  m  рядками. По полю можна крокувати
на одну клітинку вправо і  вгору. Розробіть
програму обчислення кількості способів
потрапляння з  нижнього лівого кута в  пра-
вий верхній.
1
Виконайте програму, зображену на рис. 9.3,2
3
4
5
6
118
9.2. Жадібні алгоритми
Пригадайте випадки, коли вам доводилося з  множини
можливих варіантів вибирати той, який є  найкращим
у даний момент, не хвилюючись про те, що цей варіант може
не призвести до найкращого результату після завершення
всього процесу.
Жадібні алгоритми — це загальна назва методів розв’язу-
вання задач оптимізації, при яких на кожному етапі прийма-
ється локально оптимальне рішення.
Жадібний алгоритм — це метод розв’язування оптиміза-
ційних задач, заснований на тому, що процес прийняття
рішення можна розбити на елементарні кроки, на кож-
ному з яких приймається окреме рішення.
Ці алгоритми застосовують до тих задач, які можна розби-
ти на окремі прості підзадачі аналогічно тому, як це робиться
в алгоритмах динамічного програмування.
У жадібних алгоритмах на кожному етапі з множини
можливих варіантів вибирається той, який є найкращим
у даний момент, із надією, що саме він забезпечить опти-
мальне розв’язання всієї задачі. Вибір варіанта на кожному
етапі повинен відповідати таким вимогам: бути допустимим
(відповідати обмеженням задачі); бути оптимальним (найкра-
щим із усіх можливих на даному етапі); бути остаточним (не
можна змінити цей вибір на наступних етапах).
Пояснимо сутність жадібних алгоритмів на прикладі 1.
Приклад 1. Банкомат може видавати купю-
ри номіналом 500, 200, 100, 50 і 20 грн. Яки-
ми купюрами і в якій кількості повинен ви-
дати банкомат суму 2340 грн, щоб кількість
купюр була мінімальною?
Відповідно до методу жадібних алгорит-
мів програма обслуговування банкомата на
кожному кроці повинна вибирати купюри
максимального номіналу з числа тих, які
можна вибрати, щоб їх загальна кількість
була мінімальною. Для цієї суми спочат-
ку слід вибрати чотири купюри номіналом
500 грн, потім одну купюру номіналом
200 грн, далі одну купюру номіналом 100 грн
і, нарешті, дві купюри номіналом 20 грн.
Усього 8 купюр.
Наведемо тепер приклад 2, який підтверджує, що жадібні
алгоритми не завжди забезпечують оптимальне розв’язання
задачі в цілому.
Приклад 2. Борошно міститься в контейне-
рах масою 110, 50 і 10 кг. Виберемо мінімальну
кількість контейнерів загальною масою 150 кг.
Логічно звяти 3 контейнери масою 50 кг.
За жадібним алгоритмом спочатку по-
трібно взяти контейнер максимальної маси
(110 кг), на наступних етапах — 4 контейне-
ри масою 10 кг, тобто 5 контейнерів.
Незважаючи на те що такий
підхід не завжди забезпечує
оптимальне розв’язання задачі
в  цілому, в  багатьох випадках
досягаються результати, близькі
до оптимальних.
1199.2. Жадібні алгоритми
Розглянемо приклад 3 про пакування рюкзака. Існують
різні інтерпретації цієї задачі, але її загальна сутність одна.
Є декілька типів об’єктів і рюкзак, у який можна покласти
певну кількість об’єктів одного або різних типів. Відома маса
і ціна кожного типу об’єктів. Необхідно покласти в рюкзак
такі типи об’єктів певної кількості, щоб їх маса не переви-
щувала допустиму масу рюкзака, а ціна об’єктів була макси-
мальною.
Приклад 3. Одним із найпростіших алго-
ритмів для розв’язування цієї задачі є жадіб-
ний алгоритм. Використаємо ідентифікатори
для таких початкових даних:
n — кількість об’єктів, які можна поклас-
ти в рюкзак;
gruz — допустима маса рюкзака;
nazva — список типів об’єктів, які можна
покласти в рюкзак;
zina — список цін об’єктів;
vaga — список ваги об’єктів.
Будемо вважати, що в наявності є об’єкти,
з яких можна покласти в рюкзак рівно таку
вагу, на яку розрахований рюкзак.
Крім перелічених, використаємо в алгорит-
мі такі ідентифікатори:
zina_1 — список цін одиниць об’єктів (на-
приклад, одного кг);
kilkist — список кількостей об’єктів кожно-
го типу, покладених у рюкзак;
Masa — поточне значення маси об’єктів
у рюкзаку;
Sum — ціна об’єктів, покладених у рюкзак.
Існують різні підходи до розроблення ал-
горитмів упакування рюкзака. Будемо дотри-
муватися такого.
Крок 1
Увести значення змінних n, gruz і  списків nazva, zina, vaga і  сформувати порожній
список kilkist довжиною n.
Крок 2 Обчислити значення списку zina_1 за допомогою виразу zina_1[i] =  zina[i]/vaga[i].
Крок 3
Упорядкувати список zina_1 у  порядку зменшення значень його елементів і  відпо-
відно до цього упорядкувати елементи списків nazva, zina, vaga.
Крок 4 i = 0; Masa =  0; Sum =  0.
Крок 5 Доти, доки Masagruz, виконувати п. 6, інакше  —  п. 7.
Крок 6 kilkist[i] =  kilkist[i]+1; Masa =  Masa+vaga[i]; Sum =  Sum+zina[i].
Крок 7 Якщо Masa == gruz, то п. 11, інакше  —  п. 8.
Крок 8 Відновити значення змінної Sum і  списків kilkist, Masa і  Sum.
Крок 9 i = i + 1.
Крок 10 Якщо i  = n, то п. 5, інакше  —  п. 11.
Крок 11 Вивести значення змінної Sum і  списків nazva і  kilkist.
Ідея жадібного алгоритму поля-
гає в тому, щоб класти до рюк-
зака найефективніші предмети,
аж до його заповнення. Для
розв’язання цієї задачі можна
застосувати й засоби динаміч-
ного програмування.
120 Розділ 2
Програму реалізації алгоритму зображено на рис. 9.6.
Рис. 9.6. Програма реалізації алгоритму про пакування рюкзака
На рис. 9.7 наведено варіант введення даних і отриманий
результат.
1219.2. Жадібні алгоритми...
Результат виконання програми:
Рис. 9.7. Варіант введення даних і отриманий результат
Запитання для перевірки знань
До яких задач можна застосовувати жадібні
алгоритми?
Чи завжди жадібні алгоритми дозволяють
отримати оптимальне розв’язання?
У чому полягає сутність жадібних алгорит-
мів?
Наведіть приклад задачі, для якої жадібні
алгоритми не забезпечують оптимальне
розв’язання.
Поясніть сутність жадібних алгоритмів на
конкретному прикладі.
1
2
3
4
5
Завдання для самостійного виконання
Змініть значення деяких початкових даних,
які вводилися у  процесі виконання програ-
ми, зображеної на рис.  9.6, і  доведіть, що
отримано правильний результат.
Визначте, як сплатити суму 91 грн купюра-
ми номіналом 1, 2, 5, 10, 25 і 50 грн так, щоб
загальна кількість купюр була мінімальною.
Сформулюйте самостійно таку умову задачі,
щоб її можна було реалізувати програмою,
зображеною на рис.  9.7. Виконайте цю про-
граму для власних даних і  доведіть, що
отримано правильні результати.
Працівнику запропонували за відведе-
ний час виконати декілька видів робіт. Які
роботи слід виконати працівникові, щоб
отримати максимальний прибуток, якщо
відомі час їх виконання і  вартість цих
робіт?
У палаці «Україна» в  Києві протягом трьох
годин триває виступ творчих колективів.
Заяви надійшли від n колективів з указаним
часом свого виступу. Розробіть програму
визначення максимальної кількості колек-
тивів, які можуть взяти участь у  заході, та
їхні назви.
1
2
3
4
5
Жадібні алгоритми можуть
бути досить ефективними для
простих задач. Для багатьох
інших задач вони не лише
не видають оптимального
розв’язку, а  й можуть видати
один із найгірших варіантів.
Жадібні алгоритми ефективні
у  випадку, якщо послідовність
локально оптимальних
виборів забезпечує глобальне
оптимальне рішення.
122
10. Основи обчислювальної геометрії
10.1. Базові поняття
Пригадайте, які геометричні фігури ви використовували
найчастіше під час вивчення геометрії.
У таких сферах, як робототехніка, системи автоматизова-
ного програмування, комп’ютерна графіка тощо, застосову-
ються алгоритими, що описуються в термінах геометрії.
Обчислювальна геометрія  —  це галузь комп’ютерних
наук, присвячена вивченню алгоритмів розв’язування
геометричних задач.
У процесі розв’язування задач обчислювальної геометрії
використовуються базові геометричні об’єкти: точка, відрізок,
пряма, вектор, многокутник, коло.
Приклади геометричних задач: пошук координат точки
перетину двох прямих; перевірка приналежності точки від-
різку; перевірка приналежності точки многокутнику; обчис-
лення площі многокутника; побудова опуклої оболонки.
Точка на площині в декартовій системі координат задаєть-
ся двома числами — координатами x і y, а у тривимірному
просторі — трьома координатами (x´, y´, z´). Відрізок можна
задати, вказавши координати його початку й кінця, пря-
му — вказавши координати двох її точок.
Оскільки в обчислювальній геометрії вектор є одним з ос-
новних «інструментів», згадаємо основні відомості про нього,
що вивчалися на уроках геометрії.
Вектор — це напрямлений відрізок AB, де A — точка
початку (її ще називають точкою прикладання), B — точка
кінця відрізку.
Вектор позначають двома великими латинськими буквами
зі стрілкою ( )AB або рискою зверху AB( ). Вектор також по-
значають однією буквою (a), або буквою зі стрілкою ( )a , або
буквою з рискою зверху ( )a . Приклади зображення векторів
та їх позначення наведено на рис. 10.1.
Вектор характеризується довжиною і напрямком.
Кожний вектор має проекцію на відповідну вісь. Проек-
цією вектора на вісь називають відрізок, кінцями якого
є проекції точок початку й кінця вектора на задану вісь.
Довжина проекції — довжина цього відрізка. Довжину про-
екції інколи також називають проекцією. Проекція має знак
«плюс», якщо напрямок від проекції початку до проекції кін-
ця вектора збігається з напрямком осі, і знак «мінус», якщо
ці напрямки протилежні.
Проекція дорівнює довжині початкового вектора, помноже-
ній на косинус кута між цим вектором і віссю (рис. 10.2).
Нехай точка A в декартовій системі координат має коорди-
нати x y1 1,( ), а точка B — координати x y2 2,( ). Координатами
Термін «вектор» увів ірландський
математик Вільям Ровен Гамільтон
у  середині XIX ст. Він також
описав деякі операції векторного
аналізу.
Рис. 10.1. Зображення векторів
та їх позначення
Теорію векторів використав
шотландський учений
Джеймс Максвелл у  працях
з  електромагнетизму.
У  1903  році англійський
учений Олівер Гевісайд надав
векторному аналізу сучасний
вигляд.
12310.1. Базові поняття...
вектора ( )AB називають пару чисел x x y y2 1 2 1− −( ), . Якщо
вектор має координати x y,( ) і прикладений до точки x y1 1,( ),
то можна обчислити координати його кінця x y2 2,( ) так:
x x x2 1= + , y y y2 1= + .
Довжиною, або модулем, вектора називають відстань між
точками його кінця і початку.
Довжина обчислюється за формулою x x y y2 1
2
2 1
2
−( ) + −( ) .
Для позначення довжини вектора часто використовують
символи модуля: a .
Вектори бувають на колінеарні й неколінеарні.
Колінеарні вектори — це вектори, що лежать на одній пря-
мій або паралельних прямих (рис. 10.3). Колінеарні вектори,
у свою чергу, поділяють на дві групи: однаково напрямлені
(співнапрямлені) і протилежно напрямлені.
На рис. 10.3 вектори a і b однаково напрямлені, що по-
значається так: a b↑↑ , а вектори a і d протилежно напрям-
лені, що позначаються так: a d↑↓ .
Два вектори називають рівними, якщо вони співнапрямлені
і мають однакову довжину. Два колінеарні вектори, що мають
однакові довжини, але протилежні напрямки, називають про-
тилежними. Вектор, початок і кінець якого збігаються, на-
зивають нульовим і позначають 0. Одиночним вектором, або
ортом, називають вектор, довжина якого дорівнює одиниці.
Орт позначають буквою e, а його модуль:

e =1.
Запитання для перевірки знань
Наведіть приклади задач обчислювальної
геометрії.
Які базові об’єкти використовуються в  об-
числювальній геометрії?
Як можна задати пряму на площині?
Що таке вектор? Як його позначають?
Які вектори називають колінеарними; рів-
ними?
Що називають проекцією вектора на вісь?
Як визначити координати вектора?
Як визначити модуль вектора?
1
2
3
4
5
6
7
8
Завдання для самостійного виконання
Точка A має координати 2 4;( ), а точка В —
координати 5 10;( ). Наведіть приклади та-
ких координат точок C і D, щоб вектор CD
був колінеарним вектору AB .
Точка A має координати −( )1 4; , а точ-
ка  B  — координати 5 9;( ). Наведіть прикла-
ди координат точок C і D, щоб вектор  CD
був рівним вектору AB.
Дано вектор

c ,

c =10, кут між вектором
і віссю становить 60°. Визначте проекцію
вектора

c на цю вісь.
Дано вектор

a з координатами початку
3 4;( ) і кінця 8 6;( ) і вектор

b з координа-
тами початку 1 7;( ) і кінця 5 9;( ). Визначте,
чи є ці вектори колінеарними.
Точка A  має координати −( )2 4; , точка B  —
координати 1 6;( ). Визначте довжину векто-
ра BA.
Вектор

a має координати 3 7;( ) і  прикла-
дений до точки 1 4;( ). Обчисліть координа-
ти точки кінця вектора.
1
2
3
4
5
6
Рис. 10.2. Проекція вектора на вісь X
Рис. 10.3. Колінеарні вектори
124
10.2. Операції над векторами
З якою метою ви використовували вектори під час вивчення
фізики? Чи доводилося вам використовувати вектори у про-
цесі вивчення інших навчальних дисциплін?
Над векторами можна виконувати операції додавання, від-
німання, множення на число та ін.
Додавання та віднімання векторів. Якщо вектори задані
координатами на площині:

a a ax y= ( ); і

b b bx y= ( ); , то їхня
сума обчислюється за формулою
 
a b a b a bx x y y+ = + +( ); , а різ-
ниця — за формулою
 
a b a b a bx x y y− = − −( ); .
Для додавання векторів

a і

b за правилом трикутника
слід перемістити вектор

b паралельно самому собі так, щоб
його початок збігся з кінцем вектора

a, тоді їхньою сумою
буде вектор, початок якого збігається з початком вектора

a,
а кінець — з кінцем вектора

b (рис. 10.4, a).
Для додавання вектора за правилом паралелограма один
з векторів переносять паралельно собі так, щоб початки
векторів збіглися. Потім на їх основі будують паралелограм
і проводять його діагональ (рис. 10.4, б).
Різницею векторів

a і

b є сума вектора

a з вектором,
протилежним вектору

b . Різницю векторів (рис. 10.4, в) мож-
на знайти також за правилом трикутника або паралелограма.
У цьому випадку напрям вектора

b змінюють на протилеж-
ний, потім отриманий вектор переносять паралельно самому
собі в кінець вектора

a. Початок вектора

a з’єднують із кін-
цем вектора

b.
Приклад 1. Дано вектори

a і

b і кут між ними 90°, модулі
векторів

a = 3 і

b = 4 . Тоді
  
c a b= + = + =9 16 5.
Множення вектора на число. У результаті множення век-
тора

a на число k кожна координата вектора множиться на
число k. У результаті отримаємо вектор завдовжки k a⋅

.
Його напрям збігається з напрямом

a , якщо k  0 , і має про-
тилежний напрям, якщо k  0 (приклад 2).
Скалярний добуток. Скалярним добутком векторів

a і

b
є число, що дорівнює добутку їх довжин на косинус кута між
ними. Тобто скалярний добуток визначається за формулою
   
a b a b⋅ = ⋅ cosα, де α — кут між даними векторами (при-
клад 3).
Векторний добуток. Векторним добутком вектора

a на век-
тор

b називаєтья вектор

c,
  
c a b= ⋅ ⋅sinα, де α — кут між
векторами

a і

b. Отже, модуль векторного добутку векторів

a і

b чисельно дорівнює площі паралелограма (рис. 10.5),
побудованого на цих векторах.
Якщо вектори безпосередньо
зображені на площині, то
додавання двох векторів можна
виконати за допомогою правил
трикутника і  паралелограма.
Приклад 2. Дано вектор

a = −( )5 3; . Тоді вектор
2 2 5 3 2 5 2 3 10 6

a = −( )= ⋅ ⋅ −( )( )= −( ); ; ;
2 3 10 6⋅ −( ))= −( ); .
 
a b a b a bx x y y+ = + +( );
 
a b a b a bx x y y+ = + +( );
 
a b a b a bx x y y+ = + +( );
а
 
a b a b a bx x y y+ = + +( );
 
a b a b a bx x y y+ = + +( );
 
a b a b a bx x y y+ = + +( );
б
 
a b a b a bx x y y+ = + +( ); 
a b a b a bx x y y− = − −( );
 
a b a b a bx x y y− = − −( );
в
Рис. 10.4. Додавання і віднімання
векторів
12510.2. Операції над ...
Векторний добуток найчастіше позначається так:
  
c a b= × ,
або у квадратних дужках:
  
c a b=  , ,
  
c a b= ×[ ].
Під час виконання добутку вектора

b на вектор

a знак
вектора

c змінюється на протилежний.
Вектор

c перпендикулярний (ортогональний) до площини,
у якій лежать вектори

a і

b, і напрямлений так, що поворот
від вектора

a до вектора

b здійснюється проти ходу годин-
никової стрілки, якщо дивитися з кінця вектора

c. У такому
випадку говорять, що трійка векторів

a ,

b і

c — права.
Для визначення напрямку вектора

c на практиці кори-
стуються правилом правої руки. Для цього вказівний палець
слід направити у напрямку вектора

a , а середній — у на-
прямку вектора

b (рис. 10.6). Якщо великий палець направ-
лений вгору, то це означає, що вектор направлений від нас,
а якщо вниз, то до нас (приклад 4).
Приклад 4. Нехай довжина вектора

a дорівнює 5, довжина
вектора

b — 10, а кут між ними становить 30° Тоді довжина
вектора

c = ⋅ ⋅ °( )=5 10 30 25sin . Його напрям можна визначи-
ти за правилом правої руки.
Векторний добуток довільного вектора на нульовий вектор
дорівнює нульовому вектору. Векторний добуток двох коліне-
арних векторів також дорівнює нульовому вектору.
Розглянемо тепер знаходження векторного добутку в коор-
динатах.
Нехай дано два вектори:

a a a a1 2 3, ,( ) і

b b b b1 2 3, ,( ). Коор-
динати векторного добутку

c на практиці часто обчислюють
за формулою:

c a b a b a b a b a b a b2 3 3 2 3 1 1 3 1 2 2 1⋅ − ⋅ ⋅ − ⋅ ⋅ − ⋅( ); ; (при-
клад 5).
Приклад 5. Відомі координати двох векторів:

a − −( )1 2 3; ;
і

b 0 4 1; ;−( ). Тоді координати векторного добутку є такими:

c 2 1 3 4 3 0 1 1 1 4 2 0⋅ − −( )⋅ −( ) −( )⋅ − −( )⋅ −( )⋅ −( )− ⋅( )=; ;

c −( )10 1 4; ; .
Якщо відомі координати вектора

c c c c1 2 3, ,( ), то його дов-
жину можна визначити за формулою

c c c c= + +1
2
2
2
3
2
. Дов-
жина вектора

c зі знайденими вище координатами дорівнює:

c = −( ) + + =10 1 4 3 13
2 2 2
.
Приклад 3. Дано:

a = 4 ,

b a= = °5 30,

b a= = °5 30, , тоді
   
a b a b⋅ = ⋅ ⋅ ° =cos30 10 3 .
Якщо два вектори задані
своїми координатами x y1 1;( )
і x y2 2;( ), то
 
a b x x y y⋅ = +1 2 1 2 .
Наприклад,
якщо

a = ( )2 5; і

b = −( )3 4; ,
то
 
a b⋅ = ⋅ −( )+ ⋅ =2 3 5 4 14 .
 
a b a b a bx x y y+ = + +( );
 
a b a b a bx x y y+ = + +( );
  
c a b= ×



Рис. 10.5. Графічне зображення
векторного добутку
  
c a b= ×



  
c a b= ×



  
c a b= ×



Рис. 10.6. Правило правої руки
126 Розділ 2
На рис. 10.7 зображено програму обчислення координат
векторного добутку двох векторів та його довжини.
Рис. 10.7. Програма обчислення координат і довжини векторного добутку
Результат виконання програми наведено зліва.
Запитання для перевірки знань
Які операції можна виконувати над векторами?
Сформулюйте правило додавання двох векторів на площині.
Сформулюйте правило віднімання двох векторів на площині.
Як виконати в  координатах операцію складання векторів?
Сформулюйте правило знаходження скалярного добутку
векторів.
Що називають векторним добутком?
Сформулюйте правило знаходження векторного добутку
в  координатах.
1
2
3
4
5
6
7
Завдання для самостійного виконання
Знайдіть координати вектора AB , якщо
A −( )2 3; , B 2 4; −( ).
Скалярний добуток вектора

a на вектор

b
дорівнює 2, а  їх модулі:

a = 2,

b = 2 .
Знайдіть кут між цими векторами.
Обчисліть скалярний добуток векторів
a і 

b , якщо їхні довжини відповідно
дорівнюють 3  і 4, а  кут між ними стано-
вить  60°.
Знайдіть векторний добуток векторів:

a = ( )6 7 9; ; і 

b = ( )8 5 10; ; .
Виконайте програму на рис. 10.7 для векто-
рів, дані про які наведені в  завданні 4. До-
ведіть, що результат отримано правильний.
1
2
3
4
5
127
10.3. Обчислення площі многокутника
Які фігури в  геометрії називають многокутниками? При-
гадайте, як ви обчислювали площі ромба, прямокутника,
­
паралелограма та інших фігур.
Розв’язування багатьох геометричних задач пов’язано
з необхідністю обчислення площі многокутника, заданого
координатами його вершин. У свою чергу, визначення площі
многокутника ґрунтується на обчисленні площі трикутника,
для чого зручно користуватися орієнтованим кутом між век-
торами, який враховує взаємне розташування векторів.
Орієнтованим кутом між векторами

a і

b називають кут,
на який слід повернути вектор

a проти ходу годинникової
стрілки, щоб він став співнапрямленим з вектором

b.
За абсолютним значенням орієнтований кут дорівнює зви-
чайному куту між векторами, але він є додатним або від’єм-
ним. Орієнтований кут між векторами

a і

b є додатним,
якщо обертання від вектора

a до вектора

b здійснюється
проти ходу годинникової стрілки, і від’ємним — у протилеж-
ному напрямку.
Наприклад, на рис. 10.8 орієнтовані кути між векторами

a і

b і між векторами

b і

a за модулем рівні, але перший із
них від’ємний, а другий — додатний. Таким чином, величина
орієнтованого кута залежить від порядку переліку векторів
і може набувати значень від –180° до 180°.
Розглянемо тепер поняття орієнтованої площі трикутника.
Трикутник називають орієнтованим, якщо зазначено на-
прям обходу його контуру.
Орієнтованою площею трикутника ABC називають ве-
личину, що дорівнює його площі, взятій зі знаком «плюс»,
якщо обхід сторін трикутника у порядку A–B–C–A здійсню-
ється проти ходу годинникової стрілки, і зі знаком «мінус»,
якщо — за ходом.
Наприклад, площа трикутника, зображеного на рис. 10.9, а,
при обході його вершин A–B–C–A є додатною, а на рис. 10.9, б,
при обході вершим A–С–В–A — від’ємною. Отже, знак орієнто-
ваної площі трикутника залежить від порядку обходу вершин.
Площу трикутника можна обчислити в такий спосіб.
Розглянемо прямокутний трикутник ABC (рис. 10.10).
Нехай O — довільна точка на площині трикутника. Площу
трикутника ABC можна знайти так: від площі трикутника
OBC відняти площі трикутників OAB і OCA. Інакше кажучи,
необхідно додати орієнтовані площі трикутників OAB, OBC
і  OCA. Це правило діє у випадку будь-якого вибору точки O.
Перейдемо тепер до визначення площі многокутника. Для
обчислення площі будь-якого многокутника A A1 2
 
… An
 
необ-
хідно скласти орієнтовані площі трикутників OA A1 2, OA A2 3,
…, OA An 1.
Орієнтовані кути, що
відрізняються на 360°,
вважаються рівними.
Рис. 10.8. Кут між векторами
Рис. 10.9. Варіанти обходу вершин
трикутника
Рис. 10.10. Приклад для обчислення
орієнтованої площі трикутника
128 Розділ 2
Наприклад, для обчислення площі п’ятикутника
A A A A A1 2 3 4 5 , зображеного на рис. 10.11, необхідно склас-
ти орієнтовані площі трикутників: OA A1 2 , OA A2 3 , OA A3 4 ,
OA A4 5
 
OA A5 1 .
Площа многокутника буде зі знаком «плюс», якщо обхід
вершин A A1 2
 
… An
 
многокутника здійснюється проти ходу
годинникової стрілки, і зі знаком «мінус», якщо обхід вико-
нується за ходом годинникової стрілки. Ця площа називаєть-
ся орієнтованою площею многокутника A A1 2
 
… An .
Отже, обчислення площі многокутника фактично звелося
до знаходження орієнтованої площі трикутника. Виразимо її
в координатах. Орієнтована площа, побудована на векторах

a x y= ( )1 1; і

b x y= ( )2 2; , є площею паралелограма (рис. 10.12).
Векторний добуток, виражений через координати векторів,
визначають так:
 
a b
x y
x y
x y x y,  = = −1 1
2 2
1 2 2 1.
Площа трикутника дорівнює половині цієї площі:
S x y x y= −( )
1
2
1 2 2 1 .
Точку O зручно брати як початок координат. У такому
випадку координати векторів, на основі яких обчислюються
орієнтовані площі, збігаються з координатами точок. Нехай
x y1 1;( ), x y2 2;( ), …, x yN N;( ) — координати вершин заданого
многокутника у порядку обходу за або проти ходу годиннико-
вої стрілки. Тоді його орієнтована площа S дорівнює:
S x y x y x y x y x y x yn n= ⋅ − ⋅( )+ ⋅ − ⋅( )+…+ ⋅ − ⋅( ) 
1
2
1 2 2 1 2 3 3 2 1 1 .
Цю формулу можна записати в такому вигляді:
S x y y x y y x y y x y yn n n= −( )+ −( )+ −( )+…+ −( )( )−
1
2
1 2 2 3 1 3 4 2 1 1 .
Нагадаємо, що звичайний кут дорівнює модулю орієнто-
ваного кута. Відзначимо також, що усі розглянуті питання
справедливі для правої системи координат. Але для окре­мих
задач зручніше застосовувати ліву систему координат.
Наприклад, координати пікселів на екрані монітора пода-
ють у лівій системі координат (вісь абсцис напрямлена впра-
во, вісь ординат — униз). У випадку вибору таких осей до-
датним є кут повороту за ходом годинникової стрілки. З цією
поправкою все сказане раніше застосовується і до лівої систе-
ми координат.
Алгоритм обчислення площі многокутника за вже отрима-
ними формулами може бути різним. Зверніть увагу на те, що
логіка обчислення першого й останнього членів цього виразу
відрізняється від логіки обчислення всіх інших членів. Тому
обчислимо окремо перший і останній члени, а всі інші обчис-
люватимемо за тією самою схемою.
Програму обчислення площі многокутника на основі тако-
го підходу зображено на рис. 10.13. У програмі обхід вершин
починається з вершини A0
 
і здійснюється в порядку збіль-
шення їх номерів.
Рис. 10.11. П’ятикутник
A A A A A1 2 3 4 5
Рис. 10.12. Площа паралелограма
на двох векторах
Величину x y x y1 2 2 1−  
називають косим (псевдоска-
лярним) добутком векторів

a і

b. Для нього будемо
­
використовувати позначення
 
a b, ( ), що є скалярною
­
величиною і  має таку власти-
вість:
   
a b b a, ,  = −   .
12910.3. Обчислення площі...
Рис. 10.13. Програма обчислення площі многокутника
На рис. 10.14 наведено динаміку введення значень коорди-
нат вершин правильного шестикутника і результат обчислен-
ня його площі:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 х
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
y
0
1 3
4
5
2
Рис. 10.14. Результат виконання програми —
многокутник за заданими координатами
130 Розділ 2
Запитання для перевірки знань
Поясніть сутність орієнтованого кута.
У якому випадку орієнтований кут має до-
датне значення?
Поясніть сутність орієнтованої площі три-
кутника.
Що називають орієнтованою площею мно-
гокутника?
Поясніть порядок обчислення площі много-
кутника за допомогою орієнтованих площ
трикутників.
За якою формулою обчислюють площу
многокутника?
1
2
3
4
5
6
Завдання для самостійного виконання
Знайдіть площу трикутника, вершини якого
мають такі координати:
A 1 3; −( ), B 2 2;( ), C −( )5 4; .
Обчисліть площу чотирикутника, вершини
якого мають координати:
A 3 3;( ), B 9 5;( ), C 11 8;( ), D 2 6;( ).
Вершини п’ятикутника мають координати:
A1 0 6 2 1. ; .( ) , A2 1 8 3 6. ; .( ), A3 2 2 2 3. ; .( ),
A4 3 6 2 4. ; .( ), A 3 1 0 5. ; .( ).
Обчисліть площу цього п’ятикутника.
Виконайте програму, зображену на
рис.  10.13, для трикутника, що має верши-
ни: A −( )1 2; , B 5 3;( ), C 3 4;( ).
Доведіть, що отриманий результат є пра-
вильним.
Модифікуйте програму, зображену на
рис.  10.13, так, щоб значення координат
вершин многокутника не вводилися з  кла-
віатури, а  їх значення визначалися безпо-
середньо всередині програми. Перевірте
програму на прикладі прямокутника і  до-
ведіть, що вона виконується правильно.
Одна з вершин правильного шестикутника
лежить у початку системи координат. Роз-
робіть програму обчислення площі шести-
кутника з  урахуванням цієї обставини.
Скористайтеся географічною картою Украї-
ни і  визначте, яка фігура утвориться, якщо
сполучити відрізками міста: Львів, Чернігів,
Полтава, Дніпро, Херсон, Одеса, Чернівці,
Львів. Знайдіть площу цієї фігури (рис. 10.15).
1
2
3
4
5
6
7
Донецьк
Київ
Луцьк
Львів
Ужгород
Хмельницький
Чернівці
Вінниця
Черкаси
Кіровоград
Миколаїв
Херсон
Сімферополь
Одеса
Дніпро
ПолтаваТернопіль
Івано-
Франківськ
Рівне
Суми
Чернігів
Харків
Луганськ
Запоріжжя
Житомир
Рис. 10.15. Карта України з обласними центрами
131
10.4. Побудова опуклої оболонки
Чи доводилося вам використовувати оболонки в  процесі
вивчення інших навчальних предметів та в  повсякденному
житті? Якщо доводилося, то які типи оболонок ви
використовували?
На рис. 10.16 подано три варіанти розташування скінчен-
ної множини точок. Усі вони розташовані всередині замкненої
лінії, або на цій лінії, або є вершинами замкненої ламаної.
Кожна з цих ліній не має самоперетинів.
Дотична, проведена до кривої на рис. 10.16, а, може пере-
тинати її в кількох точках, тому вона не є опуклою, її часто
називають просто оболонкою.
Криву лінію, наведену на рис. 10.16, б, називають опуклою
оболонкою, оскільки будь-яка дотична до цієї лінії більше не
перетинає її в жодній точці.
Опуклу оболонку, наведену на рис 10.16, в, називають
оболонкою мінімальної довжини, або просто мінімальною
опуклою оболонкою. Точки множини цієї оболонки лежать
або на її вершинах, або на прямих, що сполучають відповід-
ні вершини. Далі розглядатимемо тільки мінімальні опуклі
оболонки, які стисло називатимемо опуклими оболонками.
Отже, опуклою оболонкою скінченної множини точок K на-
зивають найменший опуклий многокутник, що містить усі
точки множини K, деякі з яких лежать усередині многокут-
ника, деякі є його вершинами, а деякі лежать на його сторо-
нах.
Кожна точка на площині має свої координати. Наприклад,
точка p0 має координати x y0 0, точка p1 — координати x y1 1,
а точка pi — координати x yi i. Завдання побудови мінімаль-
ної опуклої оболонки зводиться до відбору з множини K та-
ких точок, що є вершинами многокутника, за умови, що всі
інші точки цієї множини лежать або в його середині, або на
сторонах многокутника.
Існують різні алгоритми побудови мінімальної опуклої обо-
лонки, одним із найпростіших є алгоритм Джарвіса.
Сутність цього алгоритму така.
Крок 1
Із множини точок K  обирається стартова
точка, що гарантовано входить до складу
вершин опуклої оболонки.
Найчастіше вибирають найнижчу праву або
ліву точку.
На рис.  10.17 найнижчою є  точка p0
. Якби
було декілька точок, розташованих на од-
ній найменьшій висоті, то вибрали  б  ту, що
справа.
Рис. 10.17. Точки на площині
а
б
в
Рис. 10.16. Варіанти оболонок
132 Розділ 2
Крок 2
Здійснимо побудову опуклої оболонки.
Щоб знайти наступну точку від точки p0 , яка буде черговою вершиною оболон-
ки, проводимо від неї вправо горизонтальну лінію і  повертаємо її навколо точки
p0 проти ходу годинникової стрілки доти, поки вона не торкнеться точки p1   із
множини точок K. Відрізок p p0 1   буде ребром опуклої оболонки.
Аналогічні дії виконуємо в  точці p1, знаходимо точку p2   і ребро p p1 2 . Цей про-
цес продовжується доти, поки не повернемося у  точку p0 .
Очевидно, що точка p1   має таку властивість, що всі інші точки лежать ліворуч
від вектора p p0 1 . Це означає, що орієнтований кут між вектором p p0 1   і всіма
іншими векторами p pi0   невід’ємний для будь-якої точки i з усієї множини точок.
Знайдемо точку p1. Для цього слід:
– обчислити косий добуток p p p pm0 1 1,  ; 
– перевірити умову p p p pm0 1 1 0,    для всіх точок m, де m  — усі точки, крім
нульової і  першої.
Зрозуміло, що цій умові на рис.  10.17 відповідає тільки точка p1 .
Для інших варіантів розміщення точок цій умові може відповідати декілька точок.
Це означає, що на векторі p p0 1   може бути розташовано декілька точок.
У  такому випадку вибирають ту з  них, для якої довжина вектора
p p x x y y0 1 1 0 1 0= − −( );   є  максимальною.
Так само слід діяти, якщо вказана умова виконується для інших точок.
Якщо умова p p p pm0 1 1 0,    не виконується, то це означає, що точка p1   не
може бути вершиною опуклої оболонки і слід перейти до чергової точки p2 .
Пояснимо реалізацію алгоритму Джарвіса на прикладі.
Приклад. Нехай на площині розміщено 7 точок із такими
координатами:
Номер точки 0 1 2 3 4 5 6
Координата x 5 3 9 9 13 3 14
Координата y 7 4 6 15 2 2 10
Якщо ці точки нанести на площину, то можна переконати-
ся, що права нижня точка розташована на четвертій позиції.
Оскільки ця точка є стартовою, то для зручності розроблення
програми доцільно поміняти місцями координати цієї точки
і точки, розташованої на першій позиції.
У результаті будемо мати таке розташування точок:
Номер точки 0 1 2 3 4 5 6
Координата x 13 3 9 9 5 3 14
Координата y 2 4 6 15 7 2 10
13310.4. Побудова опуклої...
Програму реалізації алгоритму Джарвіса зображено на
рис. 10.18.
Рис. 10.18. Програма реалізації алгоритму Джарвіса
Результат виконання програми:
134 Розділ 2
Запитання для перевірки знань
Які оболонки називають опуклими?
Які опуклі оболонки називають мінімальними?
Накресліть мінімальну опуклу оболонку.
Яку точку вибирають, якщо умові «косий
добуток» відповідають декілька векторів?
Сформулюйте сутність алгоритму Джарвіса.
1
2
3
4
5
Завдання для самостійного виконання
Побудуйте мінімальну опуклу оболонку для
точок із  такими координатами:
X 2 3 4 5 5 7 10
Y 5 7 2 6 5 1 8
Скористайтеся географічною картою Украї-
ни і  зобразіть точками у  прямокутній сис-
темі координат міста: Київ, Харків, Львів,
Одеса, Черкаси, Житомир, Херсон, Запоріж-
жя, Полтава, Чернігів, Луцьк, Ужгород. Побу-
дуйте на основі цих міст мінімальну опуклу
оболонку. Координати яких міст не розта-
шовані на ребрах і  вершинах оболонки?
Виконайте програму, зображену на
рис.  10.16, для власного набору точок. До-
ведіть, що програма виконана правильно.
Модифікуйте програму, зображену на
рис.  10.16, так, щоб обхід вершин опуклої
оболонки починався з верхньої лівої точки.
На площині в  прямокутній системі коорди-
нат розташовано n  точок (n4), з  відомими
координатами. Чотири з  цих точок є  вер-
шинами квадрата, одна зі сторін якого
паралельна осі абсцис. Розробіть програму
визначення координат точок, які містяться
всередині квадрата.
1
2
3
4
5
Тест 5 Тест 6 Тест 7
Тест 8 Тест 9 Тест 10
Тестові завдання
з  автоматичною перевіркою
результату на  сайті
interactive.ranok.com.ua
11.1. Основні тренди у веб-дизайні
Якими сайтами ви користуєтесь? Що вас у  них приваблює?
Успіх сайта значною мірою залежить від якості дизайну,
отже, дуже важливо стежити за трендом. Потрібно розумі-
ти, які інструменти ввійшли в моду в сфері сайтобудування,
а які вже вважаються застарілими і від яких варто відмови-
тися. Адже тренди у веб-дизайні постійно змінюються, удо-
сконалюються, модернізуються.
Кількість користувачів мережі Інтернет постійно збільшу-
ється (рис. 11.1). Упродовж останніх років незмінними зали-
шаються дві тенденції: необхідність швидкого завантаження
сайтів та орієнтація на мобільні сайти.
Швидкість завантаження сайтів. Під час завантаження
сайта саме швидкість має вирішальне значення. У ході до-
сліджень доведено, що достатньо трьох секунд для того, щоб
справити враження. Це стосується й сайта: якщо за цей час
він так і не завантажиться, велика ймовірність, що відвіду-
вач далі не чекатиме.
Орієнтація на мобільні сайти. 85% користувачів впевнені,
що на смартфоні сайт повинен виглядати не гірше (а то й кра-
ще), ніж на моніторі стаціонарного комп’ютера чи ноутбука.
Рис. 11.1. Статистичні дані користування Інтернетом у 2019 році за
даними Аналітичної агенції We Are Social і SMM-платформи Hootsuite
Далі розглянемо напрями, які на початок 2019 року є най-
більш популярними за версіями інтернет-журналів AWWWARD
і Designmodo.
Щодня аудиторія Інтернету
збільшується на 1 млн нових
користувачів.
Усе більше користувачів
для серфінгу Інтернетом
використовують саме смартфони.
Тренд (від англ. trend — напрям,
тенденція) — можливий
(ймовірний) вектор розвитку
подій стосовно якогось
проміжку часу.
РозділРозділРозділРозділРозділРозділРозділРозділ 3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ
136 Розділ 3
Загальна кількість осіб, які систематично відвідують різ-
номанітні сайти, невпинно зростає. Розглянемо особливості,
що зазвичай відрізняють популярні сайти.
• Візуалізація даних — інфографіка сприймається як ча-
стина дизайну. Візуалізація даних є цікавим і наочним
способом подання великих обсягів інформації.
Цей формат є дуже популярним серед користувачів, адже
його можна застосовувати всюди: від чисел і карт до склад-
них алгоритмів. Рис. 11.1 є яскравим прикладом подібної ін-
фографіки.
• Персоналізація сайтів — найуспішнішими стануть сай-
ти, орієнтовані на користувача, тобто ті, які надають ін-
формацію з урахуванням статі, віку і навіть особистих
уподобань користувача. Відповідно електронна комерція
стане ще більш витонченою.
• Зростання ролі типографіки — зараз у тренді незвичай-
ні шрифти, різноманітні художні елементи, креативні
прийоми на кшталт складання текстів з «газетних ви-
різок». З’явився термін «вінтажна типографіка» (стиль
старовинної типографії).
Мобільний перегляд впевнено випереджає десктопний, і за-
гальний дизайн сайтів стає все більш зручним для пальців.
Все частіше доведеться стикатися з навігацією, пристосова-
ною до великого пальця. Так, меню «гамбургер» (рис. 11.2),
яке традиційно розташовується нагорі сайтів, буде перенесе-
но в низ мобільних екранів.
Серед веб-дизайнерів набуває популярності використання
шрифтів із зарубками (serif) (рис. 11.3), заокруглених плит
і текстових елементів, які здаються більш старими.
Свого часу вважалося, що більш читабельними на екранах
є шрифти без зарубок (рис. 11.4). Проте завдяки еволюції девай-
сів вибір шрифтів перестає бути проблемою. Набувають популяр-
ності так звані варіативні шрифти. Змінні літери, які поступово
збільшуються і зменшуються, привабливі для користувачів.
• Пріоритетність відео-контенту — на YouTube щодня пе-
реглядають близько 500 млн годин відео.
При цьому передбачається, що в 2019 році на призначе-
ний для користувача контент припадатиме 80% усього інтер-
нет-трафіку. На лідируючі позиції серед інших компонентів
веб-дизайну вийдуть повноекранні відео, оскільки вони є ін-
формативними та зручними.
• Синемаграфіка — ці статичні картинки містять один
анімований (динамічний) елемент. Наприклад, це може
бути статична композиція з паруючою чашкою кави.
Таке поєднання фотографії та анімації є особливо приваб-
ливим з точки зору маркетологів.
• Геометричні форми (рис. 11.5) — використання у веб-ди-
зайні різних композицій геометричних форм було запо-
чатковано в 2016 році, і, за прогнозами, у 2019-му лише
набиратиме популярності.
• 3D-графіка (рис. 11.6) — актуальний тренд, який можна
назвати природною еволюцією плоского дизайну.
Рис. 11.3. Приклад шрифтів
із зарубками
Рис. 11.2. Приклад меню
гамбургер
Рис. 11.4. Приклад шрифтів
без зарубок
Джош Кларк, фахівець у галузі
мобільного дизайну, «дизайнер
взаємодії», як він себе називає,
який вдало поєднує ергономіку
та  психологію мобільного дизайну,
у книзі «Проектування для
дотику» (Josh Clark, Designing for
Touch) досліджує, як користувачі
тримають свої мобільні телефони
та як їхні рухи мають оброблятися
в процесі роботи з сайтом.
13711.1. Основні тренди...
Тривимірні візуалізації забезпечують оновлення такого ди-
зайну. Результатом є поєднання 3D-реалістичних і плоских
інтерфейсів, які є складними та візуально цікавими. Вони
«чіпляють» і привертають пильну увагу користувача.
Рис. 11.5. Використання геометричних форм у веб-дизайні
Рис. 11.6. Приклад тривимірної графіки
Яскраві кольори — це тренд, який ніколи не втрачає власну
актуальність. Використання градієнту є багатофункціональ-
ною кольоровою тенденцією, що працює в дизайну будь-якого
типу. Це може бути цікавим способом розбити елементи тек-
сту або виділити певний контент, або створити неординарний
фон для розміщення продукту. З точки зору колористики за-
стосування градієнтів (рис. 11.7) є чудовою ідеєю. Фон сторін-
ки, у створенні якого задіяний градієнт, викликає враження
унікальності і свіжості.
Застосування розділеного екрана (спліт-екрана). Ми не­
одноразово наголошували, що дизайн веб-сайтів має орієнту-
ватися на мобільних користувачів. Відповідно з’являються ша-
блони розділених екранів. Естетичний поділ екрана (насампе-
ред за рахунок кольору) передбачає, що сайт, призначений для
перегляду на великому моніторі, розподілено на дві панелі,
які згортаються у вертикальні блоки на менших пристроях.
Нині все більшої популярності
набуває візуальний пошук. Його
дозволяють використовувати
Snapchat, Pinterest (соціальний
фото-сервіс), Lens, AliExpress
і  Google Lens. Піонером
у  візуальному пошуку був
Amazon із його функцією Flow.
У 2014 році він використовував
розпізнавання зображень для
пошуку товару.
У вересні 2018 року Snapchat
(мультимедійний мобільний
додаток обміну фото та відео)
у співробітництві з Amazon
оголосив про розробку
нової функції. Вона дозволяє
користувачеві «сканувати»
штрих-коди за допомогою
камери.
Google Lens — застосунок
для визначення об'єктів
в  об'єктиві камери. Він може
виділяти назви в тексті і навіть
телефони, відразу дозволяючи
зателефонувати за вказаним
номером. Він розпізнає більш
ніж 1  млрд об’єктів
Рис. 11.7. Приклад використання
градієнта
138 Розділ 3
Це простий спосіб адаптивного подання контенту (див. мате-
ріал §11.10). Переважна більшість веб-дизайнерів переходять
на асиметричне розбиття для змісту.
Подібне розбиття екрану передбачає певний взаємозв’язок
контенту — він доповнює або контрастує. Популярною є схе-
ма, коли під час наведення миші на одну частину сторінки
затінюється решта, що дає змогу фокусуватися на вибраному
(рис. 11.8).
• Поширення використання штучного інтелекту. Штучний
інтелект так чи інакше вже використовують Amazon,
Netflix та ін. Насамперед це стосується чат-ботів, які на-
дають потрібну інформацію, наприклад, під час обслуго-
вування клієнтів (рис. 11.9).
Із зростанням кількості користувачів, які використовують
смарт-пристрої у своїх будинках, і смартфонів для управлін-
ня цими пристроями переважна більшість власників надає
перевагу голосовим командам. Як наслідок зростає роль го-
лосового інтерфейсу, налаштованого власником за допомогою
ключових слів і відповідних дій.
Голосові інтерфейси базуються на «читанні» веб-сайтів
для отримання інформації та даних. Таким чином, все біль-
ше уваги приділяється розробці сайтів, здатних взаємодіяти
з голосовими інтерфейсами.
Рис. 11.9. Приклад створення чат-боту засобами IBM Watson Assistans
Запитання для перевірки знань
Що таке чат-бот? Де використовують чат-боти?
Що таке синематографіка?
Наведіть приклади використання штучного
інтелекту в  сучасних онлайн-платформах.
У чому перевага розподілених екранів?
Знайдіть в  Інтернеті статистику за 2017 та
2018 роки, аналогічну наведеній на рис.11.1.
Яку тенденцію ви можете простежити?
Які, на вашу думку, тренди будуть актуаль-
ними в  найближчому майбутньому?
1
2
3
4
5
6
Рис. 11.8. Cпліт-екран
Чат-бот (англ. Chatbot)  —
комп’ютерна програма,
розроблена на основі нейромереж
та технологій машинного
навчання, яка веде розмову
за допомогою слухових або
текстових методів. Програма
імітує розмову з  людиною
в  Інтернеті, саме тому цей
сервіс найкраще зарекомендував
себе в  месенджерах (Facebook
Messenger, Telegram тощо).
139
11.2. Види сайтів та цільова аудиторія
Зробіть невеличке опитування, з’ясуйте, які сайти
користуються найбільшою популярністю серед ваших друзів.
У березні 2019 року Всесвітня павутина відсвяткувала своє
тридцятиріччя. Тім Бернерс Лі, один з головних її розробни-
ків, запропонував перший веб-сервер, перший браузер (більш
детально в § 11.7) і редактор (the «WorldWideWeb.app.»). Нара-
зі кількість сайтів перевищує півтора мільярда і продовжує
невпинно зростати. Щосекунди у світі з’являються два сайти
(рис. 11.10).
Ознайомимося з класифікацією сайтів (рис. 11.11).
Інформаційні сайти є одними з найбільш популярних
у мережі Інтернет і призначені для донесення до користувача
будь-якої інформації.
До інформаційних сайтів відносять тематичні інформа-
ційні, новинні та блоги.
Тематичні інформаційні сайти — ресурси, в яких прак-
тично всі сторінки присвячені одній певній проблематиці або
темі, у свою чергу різнотематичні сайти охоплюють широке
коло інформаційної спрямованості і можуть висвітлювати ве-
лику кількість тематик і напрямків.
Новинні сайти виконують дуже важливе завдання — вони
повинні донести до користувача різні новини, що відбували-
ся, відбудуться чи відбуваються в цей момент. Такі сайти
можуть спеціалізуватись на одній певній тематиці або розпо-
відати інтернет-спільноті про новини з різних життєвих сфер
людини.
Блоги зустрічаються у Всесвітній павутині досить часто,
рівень їхньої популярності стає дедалі вищим. Як і новинні
сайти, блоги призначені для того, щоб донести інтернет-спіль-
ноті ту чи іншу інформацію, але з однією істотною відмінні-
стю: автор описує свою особисту думку про те, що відбува-
ється.
Умовно блоги діляться на дві категорії: особисті та кор-
поративні, кожна з  яких виконує певну функцію.
Особисті блоги — категорія сайтів, у яку входять ресурси,
створені окремими користувачами, з метою донести широко-
му колу громадськості думку автора з певної теми.
Корпоративні блоги зазвичай створюються певними ком-
паніями як додатковий ресурс, який розкручує бренд, і часто
є доповненням до комерційного або корпоративного сайта.
Залежно від того, яку зі згаданих проблем має вирішувати
корпоративний ресурс, сайти поділяють на іміджеві та інфор-
маційні. Іміджевий корпоративний сайт виконує одну з най-
важливіших функцій для компанії — рекламну. На ньому
Дізнатись кількість існуючих
сайтів можна завдяки проекту
Internet Live Stats (http://www.
internetlivestats.com/total-
number-of-websites/).
Рис. 11.10. Кількість сайтів на
сьогодні
Інформаційні сайти
Сайти-візитки
та сайти портфоліо
Комерційні сайти
Соціальні проекти
Освітні ресурси
Розважальні портали
Веб-сервіси
Сайти
Рис. 11.11. Класифікація сайтів
Корпоративні блоги
створюються організаціями
або компаніями для виконання
одного з  двох певних завдань:
зміцнення зв’язку між філіями
та відділеннями або підвищення
іміджу в  очах потенційних
та  існуючих клієнтів.
140 Розділ 3
зазвичай описується історія підприємства, компанії або тор-
гової марки, надаються докладні поточні відомості, контакт­
на інформація, містяться відомості про вироблювані і розпов-
сюджувані товари, про надавані послуги. Інформаційний кор-
поративний сайт виконує не менш значущі функції — ав-
томатизація та зміцнення зв’язку між відділами та філіями,
обіг документів, управління персоналом тощо.
Сайти-портфоліо і сайти-візитки сьогодні все частіше ство-
рюються приватними особами, особливо фрілансерами, які
намагаються привернути увагу нових замовників і клієнтів,
розрекламувавши свою роботу і надавши результат її вико-
нання.
Сайти-візитки призначені для того, щоб коротко подати ін-
формацію про свого власника широкому колу користувачів.
Такі сайти налічують більше ніж 20 сторінок.
Сайти-портфоліо призначені привертати увагу широкої
цільової аудиторії шляхом рекламування роботи, виконаної
компанією, щоб клієнт зміг вирішити, чи потрібно користу-
ватися послугами цієї компанії.
Комерційні сайти — одна з найбільш поширених катего-
рій сайтів. Їх основне призначення — продаж товарів інтер-
нет-користувачам.
Комерційні сайти поділяють на кілька підкатегорій, най-
більш поширеними з яких є сайт-вітрина, промо-сайт, ін-
тернет-магазин.
Сайти-вітрини, або посадкові сторінки (landing page) —
сайти, основним призначенням яких є не продаж готової про-
дукції, а її реклама. Найбільшого поширення вони отримали
серед компаній і підприємств, які виробляють товари.
Промо-сайти — інтернет-ресурси, на яких рекламують
певні послуги або товари, зупиняючи особливу увагу на їх-
ніх перевагах. Вони характеризуються досить простою струк-
турою, невеликим обсягом (до 10 сторінок) і нетривалим тер-
міном існування.
На сторінках промо-сайта містяться різні графічні матері-
али, контактні дані компанії тощо. Якщо необхідно провести
масштабну компанію певного товару — промо-сайт стане чу-
довим помічником.
Інтернет-магазини призначені для продажу товарів різних
категорій у мережі в режимі онлайн. Відвідавши такий сайт,
кожен користувач Всесвітньої павутини може вибрати товар
що його цікавить, дізнатися про нього докладну інформацію
і, в разі необхідності, здійснити замовлення.
Дуже часто компанії пропонують користувачам усі свої
лінійки товарів на одному сайті. Значно рідше створюються
кілька ресурсів, на яких представлено одну певну категорію
поширюваної продукції.
Соціальні проекти включають форуми, спеціалізовані со-
ціальні мережі, мережі загальної спрямованості, сайти-спіль-
ноти та ін.
На іміджевих сайтах можуть
публікуватися різні новини,
інформація про акції, знижки  —
все те, що характеризує
компанію перед клієнтом.
Такі сайти відрізняються
оригінальним ексклюзивним
дизайном, поєднанням
нестандартних елементів
оформлення і  рішень.
Пересічні користувачі Інтернету
зазвичай не мають відкритого
доступу до інформаційного
корпоративного сайта, оскільки
він призначений виключно для
співробітників однієї організації.
За  допомогою сайта-вітрини
неможливо здійснити операцію
купівлі-продажу, оскільки
він лише надає докладну
інформацію про товар. Але
іноді, на них зазначаються
місця, де можна купити товар,
який зацікавив.
14111.2. Види сайтів...
Форуми — спеціалізовані сайти, на яких користувачі мере-
жі Інтернет можуть безперешкодно обговорювати різні нови-
ни, проблеми, життєві сфери суспільства і т. п.
Форуми можуть бути як спеціалізовані (обговорюються
одна або кілька проблем, пов’язаних між собою), так і за-
гальноспрямовані (обговорюються проблеми, абсолютно різні
за тематикою, часом зовсім не пов'язані одна з одною).
Соціальні мережі покликані надавати інтернет-користува-
чам можливість знаходити один одного і вести між собою
спілкування в режимі онлайн. Кількість користувачів соці-
альних мереж невпинно зростає (рис. 11.12)
Рис. 11.12. Кількість користувачів соціальних мереж (у мільярдах)
Існують спеціалізовані соціальні мережі, які об'єднують
людей, зі спільними інтересами (хобі, професія).
Соціальні мережі загальної спрямованості збирають в одне
коло для спілкування людей, які зайняті в абсолютно різних
сферах і мають різні інтереси і хобі (рис. 11.13).
Окрему категорію сайтів становлять освітні ресурси.
У 9 класі ви ознайомилися з класифікацією освітніх та на-
вчальних ресурсів. Пригадаємо, що освітніми інтернет-ре-
сурсами називають ресурси освітнього характеру, розміщені
у веб-просторі.
Розважальні портали впевнено тримають лідерство за по-
пулярністю нарівні з соціальними мережами. Найпопуляр-
нішим є відеохостинг. Найбільш відвідуваними є ресурси,
що безкоштовно пропонують відвідувачам онлайн перегляд
і скачування фільмів, відеороликів. На другому місці — сай-
ти музичного напрямку. За структурою вони подібні до ві-
деохостингів, але пропонують безкоштовне прослуховування
й скачування мелодій. Третє місце посідають класичні комп-
лексні сайти розваг. Тут користувачі шукають інформацію
відповідно до своїх інтересів: це може бути графіка, відео,
тексти різної тематики і, безумовно, ігри.
Ігровий портал – складний розважальний інтерактивний
проект, що передбачає велику відвідуваність і ресурсоміст-
кість. На порталі зазвичай є розділ для пошуку потрібної
інформації за темою, блок новин, і величезна кількість по-
силань на ігри з їхнім описом. Часто ігрові портали містять
спеціалізовані й добре модеровані форуми.
Особливу увагу наразі
приділяють відкритим онлайн-
курсам на платформах
Prometheus, EdEra, EdX,
Coursera.
Рис. 11.13. Співвідношення
користувачів найбільш впливових
соціальних мереж (у відсотках)
142 Розділ 3
Веб-сервіси нині отримали значне поширення (рис. 11.14).
Містять структуровані посилання,
що ведуть на інші веб-ресурси,
та  їх короткий опис
Каталоги
Надають можливість відшукувати
той чи інший сайт, різну інформацію
за певним пошуковим запитом
Пошукові системи
Надають можливість переглядати
і  відправляти листи електронною поштою
Поштові сервіси
Веб-ресурси для розміщення оголошення
різних тематик
Дошки оголошень
Призначені для тимчасового зберігання файлів (деякі надають можливість перед
завантаженням переглянути вміст файла у вікні браузера),
­
зображень
Сайти-хостинги
Веб-сервіси
Рис. 11.14. Класифікація веб-сервісів
Cенс існування будь-якого сайта — це його відвідуваність.
І якщо блогер публікує свою думку, розраховуючи на зворот-
ний зв'язок у вигляді коментарів або лайків, то, наприклад,
інтернет-магазин існує за рахунок реальних покупців, які
шукають і, головне, купують товар, який їх зацікавив.
Кожен сайт орієнтований на певну цільову аудиторію.
Цільова аудиторія сайта, цільові відвідувачі — група ін-
тернет-користувачів, на яку сфокусовано зміст сайта; коло
відвідувачів, зацікавлених в інформації, товарах або послу-
гах, що презентують на сайті.
Цільові відвідувачі точно знають, в отриманні якої інфор-
мації вони зацікавлені і який саме товар або послугу бажа-
ють придбати.
Виділення цільової аудиторії з усіх відвідувачів сайта
дозволяє точніше направити інформаційний або рекламний
вплив і в результаті веде до розвитку бізнесу (збільшення
продажів товарів або послуг).
Будь-який сайт, крім власне цільової аудиторії, має також
побічну і випадкову аудиторію.
Побічною аудиторією є користувачі, які приходять з по-
шуку по запитах, суміжних із семантичним ядром сайта. Те
саме можна сказати і про людей, які начебто «автоматично»
клацають на рекламу, ще не знаючи, потрібна їм послуга чи
ні. Вони можуть стати клієнтами, проте це відбувається не-
часто. Отже, побічна аудиторія теж є цільовою.
Визначення цільової аудиторії полягає в складанні при-
близного портрета цільового відвідувача сайта (так званого
портрета клієнта).
Цільову аудиторію будь-якого
сайта становлять відвідувачі, які
зацікавлені:
•
• в  отриманні інформації;  
•
• виборі товару або послуги;
•
•

у  придбанні товару чи
послуги.
14311.2. Види сайтів...
Для отримання даних, які складають портрет цільового від-
відувача, використовують різні способи збирання інформації.
Існує кілька способів збирання інформації про аудиторію
сайта.
Спосіб 1
Лог-аналізатор сервера і  дані лічильника відвідувань (дозволяють вивчити всі дії ко-
ристувачів на сайті і  конкретизувати розподіл аудиторії сайта за регіонами, за часом
й  ін.)
Спосіб 2
Опитування аудиторії сайта (анкетування унікальних відвідувачів з  використанням
опитувальної форми або реєстрації на сайті)
Спосіб 3
Опитування аудиторії на сайтах опитувань, поєднання панельних даних і  даних лі-
чильника відвідувань (анкетування відбувається на сайті панелі)
Спосіб 4 Системи аудиту і  традиційні опитування дослідницьких компаній (агентств)
Спосіб 5 Моніторинг соціальних мереж
Дослідження великих аудиторій показують, що комуніка-
цію легше налагоджувати з малими групами покупців, об'єд-
наними в одну цільову аудиторію.
Існує чотири основні принципи сегментації цільової ауди-
торії (рис. 11.15).
Важливим джерелом статистичних даних про цільову
ауди­торію сайта є статистика запитів пошукових систем.
Оцінити величину цільової аудиторії можна за кількістю по-
шукових запитів. Такий сервіс має Google (https//www.google.
com/analytics).
Це безкоштовний сервіс, призначений для збору відомостей
про відвідуваність, а також про дії інтернет-користувачів на
сайті. Інструмент формує безліч звітів. Усебічний аналіз ці-
льової аудиторії дозволяє оперативно реагувати на запити
користувачів. Веб-майстер зможе дізнатися, як часто відвіду-
вачі натискають на кнопки, на кшталт «оформити покупку»
або «замовити зворотний дзвінок».
Склад сім'ї, рівень прибутків, рід занять
Мотивація при покупці, лояльність,
інформованість про товар
Тип особистості, спосіб життя,
суспільне становище
Структура комерційної діяльності
Динаміка розвитку регіону
Поведінковий принцип
sale
%
Демографічний принцип
Географічний принцип
Психологічний принцип
Рис. 11.15. Сегментація цільової аудиторії
Логотип Google analytics,
багатофункціонального сервісу
для аналізу інтернет-сайтів
і  додатків.
144 Розділ 3
Hootsuite (http://hootsuite.com) — відмінний і, мабуть, один
із найпопулярніших багатофункціональних сервісів для робо-
ти з соціальними медіа. Акцент у сервісі зроблено на робо-
ту з Twitter. У першу чергу Нootsuite буде корисний тим, хто
веде кілька акаунтів відразу. Hootsuite успішно працює також
з акаунтами Facebook, LinkedIn, MySpace і Foursquare, з блогами
на WordPress; підключається до Ping.fm, що дозволяє оновлю-
вати сторінки понад 40 соціальних мереж.
Socialmention (http://www.socialmention.com/) — одна з най-
потужніших платформ для безкоштовного пошуку й аналі-
зу інформації в соціальних мережах. Cистема шукає згадки
у відібраних сервісах або в усіх відразу. Крім того, пропонує
аналіз тональності згадувань, пов’язані ключові слова, попу-
лярні джерела та багато іншого. Дані можна експортувати
або налаштувати їх отримання на e-mail.
Google Alerts (https://www.google.com/alerts) — простий
і зрозумілий безкоштовний сервіс, який сканує публікації
за заданими ключовими словами, висилаючи оповіщення по
електронній пошті відповідно до частоти, налаштованої ко-
ристувачем. Є можливість фільтрувати результати залежно
від регіону, мови та джерел, у тому числі блогів і форумів.
Socialbakers (http://www.socialbakers.com) — масштабний
статистичний сервіс, який називає себе «Серце статистики
Facebook». Крім Facebook, Socialbakers безкоштовно надає моні-
торинг інформації за різними показниками в Twitter, Google+,
LinkedIn тощо. Socialbakers відомий своїми рейтингами брендів
на Facebook.
На основі даних, отриманих у результаті збору інформації,
можна отримати зведені цифри, вивчити закономірності пове-
дінки груп користувачів і оцінити ефективність рекламного
впливу. Характеристики портрета цільової аудиторії врахову-
ються при розробці дизайну і структури, при внесенні корек-
тувань в інформаційне наповнення сайта з метою залучення
більшої кількості відвідувачів, що входять у коло цільової
аудиторії.
Групи в соціальних мережах допомагають не лише збіль-
шити продажі компанії, а й просувати сайт компанії в пошу-
кових системах. Існує безліч сервісів моніторингу авторитету
сайта за кількістю згадок про нього в соціальних мережах,
особливо в таких соціальних мережах, як Facebook, а також
твітти із зазначеними посиланнями на сайт.
Запитання для перевірки знань
Скільки груп сайтів ви можете класифіку-
вати?
Що входить до соціальних проектів?
Що таке цільова аудиторія сайта? Назвіть іі
основні характеристики.
Які основні групи цільової аудиторії сайта?
Назвіть найперспективніші, на вашу думку,
способи збирання інформації про цільову
аудиторію сайта.
Візуалізуйте будь-яким засобом результати
вашого опитування, щодо того, які сайти
є  вподобаннями ваших друзів.
1
2
3
4
5
6
У Hootsuite є багато мож-
ливостей для різноманітної
аналітики. Наприклад, можна
підключити Google Analytics зі
свого сайта й дивитися графіки,
порівнюючи з кількістю твітів
і  популярністю ваших посилань.
Socialmention шукає по більш
ніж 100 соціальних медіа,
включаючи мережі, соціальні
закладки, блоги, форуми,
соціальні сервіси та ін.
Socialbakers збирає статистику
по сторінках інтернет-ресурсу.
Власник сайта зможе дізнатися,
як часто відвідувачі роблять
переходи по внутрішніх
і  зовнішніх посиланнях.
Розробка українських
програмістів  — система
моніторингу та аналізу
посилань у соціальних медіа
YouScan (https://youscan.io) —
має потужний інструментарій
аналітики і вміє розпізнавати
зображення за допомогою
штучного інтелекту. Серед
клієнтів сервісу є такі брендові
компанії, як Макдональдс,
Ферреро, Bosch, Vodafone.
145
11.3. Інформаційна структура сайта
Будь-який сайт створюється для того, щоб його відвідували
якомога більше користувачів. Як цього досягти?
Для користувача простота навігації сайтом — важливий
чинник, що позитивно впливає на поведінкові фактори і, як
наслідок, на видимість, позиції і трафік.
Інформаційна структура сайта — спосіб організації інфор-
маційних даних на веб-сайті, а також структура взаємодії
різних блоків інформації один з одним.
В ідеалі така структура повинна бути максимально зруч-
ною, щоб користувач міг швидко знайти потрібну йому ін-
формацію. Інакше кажучи, структура сайта — це логічна
схема побудови сторінок сайта з розподілом за папками і ка-
тегоріями..
Сайти поділяються на сайти з лінійною та ієрархічною
структурою (рис. 11.16). Також є сайти з довільною струк-
турою, на яких навігація здійснюється в довільному поряд-
ку. Сайтом з довільною структурою є, наприклад, Вікіпедія.
Структура сайта є дуже важливим фактором ранжування,
покращуючи характеристики всього сайта.
Основною складовою будь-якого сайта є документ — це сто-
рінка сайта, що має унікальну адресу в Інтернеті. Документи
можуть бути як простими інформаційними сторінками, так
і картками товару або, наприклад, лістингами товарів в ін-
тернет-магазині.
Якщо сайт являє собою ієрархічну (деревоподібну) струк-
туру, то головну сторінку можна уявити як «стовбур», а роз-
діли і статті — як гілки й листя. Наскільки широкою буде
структура, залежить від формату і типу сайта. Але навіть
сайт, що складається з однієї сторінки, вже є основою, або
«стовбуром», такої структури, від якої він може розвиватися
в різних напрямках.
Ієрархічна структура є базисом для будь-яких інших видів
структури, в яких змінюється вид зв’язку документів — чи
це лінійний зв’язок, де кожен документ пов’язаний з наступ-
ним і з головною, чи більш широкий, де кожен документ
пов’язаний між собою і з головною.
Принцип побудови зв’язків між документами залежить від
типу сайта. Загалом можна виділити такі типи сайтів, які
мають відмінності в структурах: сайт-візитка (рис. 11.17), ко-
мерційний сайт (рис. 11.18), інтернет-магазин, інформаційний
сайт. Кожен тип сайта передбачає свій вид структури.
Наразі все більшу популярність набувають так звані посад-
кові, або лендінг (від англ. landing page), сторінки. Посадкова
сторінка розробляється з урахуванням психології відвідува-
чів, вона має чіпляти й не відпускати їх до самого моменту
покупки (або реєстрації). Це може бути передплатна сторін-
ка, завдання якої зводиться до отримання електронної адреси
користувача, який зайшов на сторінку. Так збирається база.
	
а
	
б
Рис. 11.16. Структура сайтів:
лінійна (а) та ієрархічна (б)
Про компанію
Наша продукція
Прайс-лист
Контакти
Головна сторінка
Рис. 11.17. Структура сайта-візитки
Товарна сторінка служить
для продажу товару. Це
просунута картка, яку можна
зустріти в  будь-якому інтернет-
магазині, з  описом товару,
умовами доставки, контактним
телефоном. Головною тут буде
кнопка Купити. Аналогічно
працює лендінг з послуг, коли
намагаються продати послугу.
Є контактний телефон, за яким
можна цю послугу замовити.
146 Розділ 3
Структура необхідна для індексації сайта пошуковими сис-
темами. У пошукових систем є низка своїх вимог до структу-
ри. Чим більш правильно й логічно вона спроектована, тим
простіше пошуковій системі проіндексувати сторінки і нада-
ти їх користувачеві.
Послуги Схема роботи ВідгукиПортфоліо АкціїЦіни Контакти
Головна
Послуга 1
Послуга 2
Дизайн 1
Послуга 3
Дизайн 2
Послуга 1б
Дизайн 2б
Акція 2
Дизайн 2в
Акція 3
Послуга 1а
Дизайн 2а
Акція 1
Послуга 1в
Рис. 11.18. Структура комерційного сайта
Складність структури сайта визначається двома параме-
трами: рівнем вкладеності і збалансованістю.
Рівень вкладеності — це кількість переходів, які потріб-
но зробити з головної сторінки до найдальшого документа
в структурі. Не рекомендується, щоб це значення було біль-
ше від 3. Збалансованість визначають «на око», оцінюючи
кількість документів усередині розділів і рубрик. Не повинно
бути сильних перекосів, коли в одному розділі 100 докумен-
тів, а в іншому 25.
Для побудови структури сайта в цілому підійде будь-яка
програма, яка може працювати з діаграмами. Створення схе-
ми дозволяє візуально оцінити складність структури й охопи-
ти всі її напрямки поглядом.
Найбільш зручним для створення структур сайта є таке
програмне забезпечення.
•
• X-mind
 
— безкоштовна програма для побудови інте-
лект-карт, структур і діаграм різних процесів. Вона до-
сить проста у використанні, має широкий функціонал
і підтримується всіма операційними системами, вико-
ристовується на мобільних пристроях (рис. 11.19).
•
• Draw.io — безкоштовний онлайн-сервіс для створен-
ня структур і діаграм. Він вимагає наявності пошти
від Google. В арсеналі має більше інструментарію, ніж
у X-mind, наявна низка технічних і інженерних шаблонів.
Ще один плюс  Draw.io —
можливість завантаження
результату на Google-диск
та  інші сервіси нарівні із
завантаженими на комп’ютер.
14711.3. Інформаційна...
Рис. 11.19. Використання Х-mind на мобільних пристроях
На рис. 11.20 подано структуру сайта вивчення інформа-
тики, розроблену за допомогою Draw.io.
Рис. 11.20. Структура сайта вивчання інформатики, зроблена за допомогою Draw.io
Запитання для перевірки знань
Що таке інформаційна структура сайта?
Назвіть параметри складності структури. Як
вони розрізняються?
Яка структура характерна для будь-якого
сайта?
Що таке посадкова сторінка? Яка мета її
створення?
Обґрунтуйте, чим важлива структура сайта?
Створіть за допомогою будь-якого онлайн-
сервісу структуру інформаційного сайта; ін-
тернет-магазину.
1
2
3
4
5
6
148
11.4. Системи керування вмістом
Уявіть, що вам потрібно створити власний сайт. Із чого
потрібно розпочати?
Для створення власного сайта спочатку необхідно розроби-
ти макет, створити його за допомогою тегів HTML, селекторів
CSS і сценаріїв JS. Потім розмістити сайт на певному сервері,
наповнити його контентом і постійно оновлювати. При цьому
сайт бажано зв’язати із соціальними мережами, надати мож-
ливість зворотного зв’язку.
Це означає, що потрібно знати й уміти використовувати
різноманітні API, програмувати мовою PHP і використовува-
ти безліч інших технологій. Тобто ми одночасно маємо бути
front-end- і back-end-розробниками.
Front-end — інтерфейс взаємодії між користувачем та ба-
зовою апаратно-адміністративною частиною (back-end). Інак-
ше кажучи, front-end — це користувацький інтерфейс, а back-
end — адміністративний, пов’язаний із керуванням сайтом.
API  (англ. Application Programming Interface) — інтерфейс
програмування застосунків, що створює можливість вико-
ристовувати ресурси інших програм.
PHP (англ. Hypertext Preprocessor — гіпертекстовий проце-
сор) — мова програмування, створена для генерації HTML-сто-
рінок на веб-сторінці сайта.
Людина, якій потрібен сайт, має або оволодіти досить по-
тужним інструментарієм, або звернутися до професіоналів.
Ще один вихід — це знайти такі інструменти, які б допомог-
ли непрофесіоналам створювати та супроводжувати свої сай-
ти, інтернет-магазини, блоги тощо.
Система керування вмістом (англ. Content Management
System, або CMS) — програмне забезпечення для органі-
зації спільного процесу створення, редагування й  керу-
вання контентом веб-сайтів.
Принцип роботи всіх CMS заснований на поділі контенту
(вмісту) і дизайну (оформлення) сайта.
Ознайомимося з основними функціями CMS (рис. 11.21).
Подання інформації у  вигляді, зручному
для навігації, пошуку
Публікація контенту
Подання інструментів для створення вміс­
ту, організація спільної роботи над вмістом
Керування контентом: зберігання, кон-
троль версій, дотримання режиму досту-
пу, управління потоком документів тощо
Основні
функції CMS
Рис. 11.21. Основні функції CMS
На першому етапі появи
сайтів CMS-рушіїв ще не
було, тому більшість сторінок
були статичними. Шаблони
використовувалися тільки
в  складних настільних
WYSIWYG-програмах
редагування HTML-тексту
або додавалися вручну
в текстовому редакторі.
Навігація будувалася вручну
з використанням фреймів
або на основі клієнтського
javascript-програмування. Такі
сайти важко адмініструвалися,
причому вручну через
ftp-протоколи. Першою
CMS вважають Vignette,
представлену в листопаді
1995 року. Вона дозволила
користувачам-аматорам
створювати, редагувати та
відстежувати вміст сайта та
публікувати його в мережі.
14911.4. Системи керування...
Дизайн сайта зазвичай змінюється рідко. Натомість зміна
контенту сайта може відбуватися не лише щодня, а й щого-
дини. Тому CMS споряджені так званими шаблонами — спеці-
альними «порожніми» заготовками сторінок, у яких прописа-
но дизайн сайта, залишилося лише наповнити їх інформацією.
Кожна CMS має у своєму складі WYSIWYG-редактор (акро-
нім від англ. What You See Is What You Get — що бачиш, те
й отримуєш). Сторінку одного з них наведено на рис. 11.22.
За зовнішнім виглядом WYSIWYG дуже схожий на звичні
текстові редактори офісних застосунків, тому користувачеві
не надто складно освоїти його. А наявність у системі великої
кількості готових шаблонів дає змогу обрати потрібний ди-
зайн буквально за лічені хвилини.
Рис. 11.22. Сторінка WYSIWYG-редактора CMS WordPress
У процесі створення сайта за допомогою такого редактора
сторінка відразу відображається в такому вигляді, ніби пе-
реглядається браузером (на відміну від звичайних редакторів,
де записується послідовність команд-тегів).
Для відображення такої сторінки необхідно викликати
браузер. При цьому теги стають невидимими, і сторінка ма-
тиме вигляд, відповідний встановленій тегами розмітці.
Інтерфейси візуального і текстового редактора схожі, тому
користувачеві легко його опанувати. Наявність великої кіль-
кості готових шаблонів дає змогу обрати потрібний дизайн за
лічені хвилини.
Magento — одна
з  найпопулярніших CMS
у  сегменті OpenSource рішень
для організації електронної
комерції в мережі (створення
інтернет-магазинів).
Існує понад 240 тисяч інтернет-
магазинів, створених на базі плат-
форми Magento Commerce. Із 2010
до 2015 року була у складі кор-
порації eBay. Платформа Magento
Commerce становить близько 30%
загальної частки ринку.
150 Розділ 3
Ознайомимося з найбільш популярними безкоштовними
CMS (рис. 11.23).
WordPress  — найкращий вибір для початківців завдяки простоті використання: постійно
вдосконалюється. Система особливо зручна для невеликих та середніх стиль-сайтів, бло-
гів і  невеликих інтернет-магазинів.
Joomla проста у  використанні, проте для новачка буде складнішою від WordPress, оскіль-
ки для будь-якої зміни дизайну потребує навичок програмування. Система є  найліпшою
для електронної комерції або сайтів соціальних мереж.
Drupal орієнтована насамперед на досвідчених програмістів, має потужний інструмента-
рій із широкими можливостями. Система ідеальна для великих і  серйозних сайтів, для
яких необхідні знання програмування. Drupal потребує глибоких знань HTML, CSS і  PHP.
Приклади стартових сторінок CMS наведено на рис. 11.24.
Рис. 11.24. Приклад стартових сторінок CMS
Запитання для перевірки знань
Чим відрізняється front-end від back-end?
Що таке CMS?
Назвіть функції систем керування вмістом.
Що таке шаблон сторінки?
Що таке WYSIWYG? Наведіть приклади без-
коштовних візуальних редакторів.
Дослідіть CMS і зробіть висновки. Ско-
ристайтеся посиланням websitesetup.org/
cmscomparison-wordpress-vs-joomla-drupal
Чим відрізняється front-end від back-end?1
Що таке CMS?2
Назвіть функції систем керування вмістом.3
Що таке шаблон сторінки?4 Що таке шаблон сторінки?4 Що таке шаблон сторінки?
Що таке WYSIWYG? Наведіть приклади без-5
Дослідіть CMS і зробіть висновки. Ско-6 Дослідіть CMS і зробіть висновки. Ско-6 Дослідіть CMS і зробіть висновки. Ско-
Завдання для самостійного виконання
У 9 класі ми створювали сайт за допомо-
гою Google Sites. Чи можна вважати цей
інструмент CMS? Обгрунтуйте свою відпо-
відь.
Рис. 11.23. Порівняльні характе-
ристики найпопулярніших CMS
151
11.5. Адміністрування сайта
Поміркуйте, чи можете ви змінювати інформацію в будь-
якому сайті, який ви відкриваєте браузером?
Недостатньо просто створити сайт. Необхідно робити по-
стійні оновлення сайта, поновлювати його контент.
Адміністрування сайта  — це комплекс заходів щодо
підтримки чіткого функціонування сайта, його працездат-
ності, швидкої роботи, зручності для користувача, регу-
лярного розміщення матеріалів на його сторінках.
Тобто адміністрування веб-сайту— це безперервна підтрим-
ка його працездатності, що додатково полягає у виконанні
на сайті супровідних робіт: публікації матеріалів, додаванні
форм, віджетів, банерів, редагуванні зображень.
Необхідно відрізняти відвідувача від адміністратора сайта.
На відміну від пересічного відвідувача, який може перегляда-
ти сайт, заповнювати форму, додавати коментар, адміністра-
тор сайта на будь-якій сторінці сайтів, які він супроводжує
(адмініструє), у куточку бачить елемент, який вмикає режим
редагування. При редагуванні зверху з’являється панель ін-
струментів (toolbar) із вибором стилів тексту, налаштування
зображення або керування таблицею залежно від редаговано-
го об’єкта. Крім того, обов’язково має бути кнопка Зберегти
зміни. Така панель називається панеллю адміністрування.
Панель адміністрування — це панель, яка містить поси-
лання на екран адміністрування, такі як додавання нової пу-
блікації, перегляд коментарів, редагування профілю тощо.
Функції адміністративної панелі такі: створювати і редагу-
вати сторінки, змінювати меню та інші елементи сайта. При-
клад такої панелі наведено на рис.11.25.
Рис. 11.25. Приклад адміністративної панелі CMS Joomla
Адміністратори веб-сайтів,
також відомі як веб-майстри
(webmaster), бо адміністратори
мережевих і комп’ютерних
систем несуть відповідальність
за всі аспекти збереження
вмісту та дизайну веб-
сайту. Зазвичай вони тісно
співпрацюють з клієнтами, щоб
переконатися, що розуміють
їхні побажання щодо вигляду та
роботи веб-сайтів. Вони також
можуть відповідати за належне
функціонування локальних
мереж клієнтів
152 Розділ 3
Адмін-панель, шаблон панелі адміністрування — готовий
набір для створення панелі адміністрування сайтом. Продукт,
готовий для використання, в який входять необхідні компо-
ненти, віджети, елементи інтерфейсу.
Часто робота з адміністрування полягає в обробці наді­
сланих клієнтом текстів, вони повинні стати конкретними,
точними, не містити граматичних і пунктуаційних помилок
тощо. Ключовим елементом адміністрування є регулярна тех-
нічна підтримка, яка дозволить убезпечити ресурс від мож-
ливих технічних неполадок і збоїв. Сюди також відносять ре-
гулярну перевірку актуальності використовуваного доменного
імені, вирішення маловідомих технічних питань, впоратися
з якими можуть тільки фахівці.
Адміністрування сайта умовно можна розподілити на ін-
формаційне та технічне. Розглянемо таблицю.
Таблиця. Види адміністрування сайта
Вид Опис
Інформаційне
Регулярне додавання новин, статей, товарів, оголошень та інших матеріалів залежно від
тематики сайта:
•
• робота з  наповнення сайта матеріалами;
•
•

редагування матеріалів і  виправлення помилок;
•
•

оптимізація й  підвищення зручності використання розміщеного контенту;
•
•

підтримка актуальності та практичної цінності матеріалів;
•
•

своєчасне вилучення й  архівація застарілої інформації
Технічне
Забезпечення постійного стабільного доступу до сайта, вибір і  налаштування хостингу,
цілодобовий контроль стану сервера, підтримка сайта в  цілодобовому робочому стані
Елементи інформаційного адміністрування:
•
• Робота над створенням зрозумілої та зручної структури
сайта (без застосування мов програмування), формуван-
ня швидкої навігації. Сюди входить створення нових
розділів, пунктів меню, сторінок тощо.
•
• Наповнення сайта. Для цього використовується статей-
ний і новинний матеріал, прайс-листи, різноманітні ме-
діаматеріали, карти та контактні дані. Матеріали мають
відповідати дійсності і постійно оновлюватися. Інакше
кажучи, необхідна постійна робота з контентом. Кон-
тент — це вміст сайта. Це текст, зображення, аудіо- та
відеоматеріали. Контент повинен бути унікальним, ін-
формативним, привабливим. Інформаційне адміністру-
вання передбачає роботи не лише зі створення контенту,
а й редагування.
•
• Робота з опрацювання надісланих клієнтом текстів, які
повинні стати точними й грамотними.
Технічна підтримка необхідна будь-якому сайту, вона пе-
редбачає низку заходів, спрямованих на підтримку безпере-
бійної роботи сайта.
Основні функції технічного адміністрування:
•
• Забезпечення безперебійної та швидкої роботи сайта
•
• Відстеження й усунення різних збоїв і вірусів
Адмін-шаблони різняться
базовим фреймворком, на
якому вони розроблені,
дизайном, набором версій
і модифікацій під відомі
платформи розробки.
Найважливіший аспект роботи
веб-адміністратора  — це захист
сайта від вірусів і шкідливих
програм. Адміністратор
веб-сайту повинен знати
про можливі атаки ботів
і  шкідливих програм і мати
необхідні для боротьби
інструменти. Неубезпечений
веб-сервер може стати
об’єктом для хакерів, які будуть
використовувати сервер або
безпосередньо для атаки,
або для перетворення його
на зомбі, який, наприклад,
щосекунди розсилає спам-
повідомлення.
15311.5. Адміністрування сайта...
• Функціональна підтримка сайта: встановлення й онов-
лення модулів (інтеграція з платіжними системами,
форм тощо), налаштування корпоративної пошти
Технічне адміністрування передбачає вибір хостингу, його
налаштування, підготовку сайта до переносу, резервне копію-
вання всієї важливої інформації, роботу з базами даних. Така
робота може передбачати повноцінне наповнення товарами
інтернет-магазинів, включення в діяльність seo-інструментів
(див. § 11.23), які спрямовані на поліпшення позицій сайта
в пошукових системах, інколи адміністратор може відповіда-
ти за створення та управління інтернет-рекламою сайта. За
потреби адміністратор має створювати поштові скриньки сай-
та, відповідати на запитання відвідувачів, керувати доступом
до редагування сайта.
Наведемо приблизний перелік обов'язків адміністратора
сайта.
• Для дотримання відповідності контенту
сайта певному напрямку потрібно стежи-
ти за інформаційним наповненням сайта,
формувати авторський колектив і добира-
ти тематику текстів.
• Адміністратор зобов'язаний стежити за ін-
формацією, що надходить на сайт, за не-
обхідності редагуючи та коментуючи її.
• Він відстежує становище свого інтер-
нет-ресурсу серед конкурентів і на мере-
жевому ринку, працює над створенням
методів залучення більшої кількості від-
відувачів. Треба вивчати інтереси й запи-
ти інтернет-користувачів.
• Адміністратор повинен стежити за дотри-
манням правил усіма відвідувачами, убез-
печувати сайт від можливих технічних
несправностей і хакерських атак.
• Йому необхідно вміти працювати з систе-
мами управління контентом, розуміти, як
з технічної точки зору функціонує та чи
інша частина сайта і що необхідно зроби-
ти, якщо одна з них перестане працювати
належним чином. Для цього адміністра-
тору стане в пригоді знання HTML, CSS,
PHP, JavaScript, Adobe Flash, а також ін-
ших більш складних мов і програм.
• Адміністратор повинен піклуватися про
захист інформації та персональних даних,
що потрапляють на сайт. Часом адміні-
стратору доводиться займатися додатко-
вим супроводом сайта, наприклад оптимі-
зувати його для пошукових систем.
• Перебої в роботі сайта зазвичай виника-
ють раптово, а налагодити його роботу
потрібно в найкоротші терміни. Тож ад-
міністратор, з одного боку, повинен вміти
працювати в стресовій ситуації та зали-
шатися розсудливим, незважаючи ні на
що, а з іншого — мати аналітичний склад
розуму, щоб оперативно виявити пробле-
му та знайти шляхи її розв’язування.
Запитання для перевірки знань
Що таке адміністрування сайта?
На які види поділяється робота з  адміні-
стрування сайта?
Що входить в інформаційне адміністрування?
Які послуги надаються в  плані технічного
адміністрування?
Знайдіть в Інтернеті відомості про компанії,
які надають послуги адміністрування. Ство-
ріть інфографіку їх послуг.
Якби вам запропонували бути адміністра-
тором сайта вашого навчального закладу,
щоб ви запланували зробити в першу чергу?
1
2
3
4
5
6
Для ефективної роботи
сайта необхідно забезпечити
цілодобовий і безперебійний
доступ до нього. Таку
можливість створюють хостинг-
провайдери (див. § 3.17), які
надають в оренду певний
дисковий простір на своїх
серверах.
154
11.6. Інструменти веб-розробника
Які вміння й навички будуть корисними під час розробки
сайта?
Є цілий клас завдань (створення сайта, перевірка його пра-
цездатності, супровід, оптимізація та просування), виконання
яких неможливе без участі фахівців різної спеціалізації.
Який вигляд матиме сайт — цим питанням опікується
веб-дизайнер. Веб-розробник отримує результат його роботи
у вигляді макету. Його задача — написати код, який відобра-
зить браузер у саме такому вигляді, як запропонував веб-ди-
зайнер (рис. 11.26).
Усі веб-сайти будуються з допомогою мови розмітки HTML
та каскадних таблиць стилів CSS.
Редактор коду — це перший інструмент веб-розробника.
Сучасні редактори надають широкий асортимент інструмен-
тів, які полегшують і прискорюють процес розробки коду.
Розглянемо найбільш поширені нині редактори коду (згід-
но із статистикою сайта Stack Overflow (рис. 11.27).
Visual Studio Code 55.6%
Notepad++ 30.4%
Vim 25.9%
Sublime Text 24.0%
Atom 12.7%
Рис. 11.27. Рейтинг популярності редакторів коду
Visual Studio Code — це безкоштовний крос-платформний
редактор коду, розроблений корпорацією Microsoft (рис. 11.28).
Виходячи з опитування, проведеного Stack Overflow у 2019
році, Visual Studio Code є одним із найпопулярніших редакто-
рів коду, ним користуються понад 55 % розробників.
Програма має відкритий вихідний код. Вона оснащена до-
ступним набором інструментів для редагування й налашту-
вання, легко інтегрується з іншими сервісами, її властивості
можна легко розширити.
Notepad++ — розвинутий редактор коду, випуще-
ний у 2003 році і доступний лише на платформі Windows
(рис. 11.29). Виходячи з опитування, проведеного Stack
Overflow у 2019 році, Notepad++ займає другу позицію в рей-
тингу популярних редакторів коду. Ним користуються понад
30% розробників.
Програма дуже швидка, підтримує зовнішні плагіни,
включаючи макроси, її інтерфейс передбачає редагуван-
ня в різних вкладках, є опція перетягування для почат-
ківців. Notepad++ підтримує повноекранний режим, робить
Рис. 11.26. Інструменти
веб-розробника
Сайт Stack Overflow створено
у 2008 році Джефом Етвудом
і  Джоелом Спольські як ресурс
для програмістів, які намагають-
ся розв’язати якусь проблему.
Це сервіс питань і відповідей
з  програмування, який входить
до сотні найбільш відвідуваних
сайтів. Щомісяця  — близько
50 млн людей, 72% із яких
є  веб-розробниками.
Нинішні й майбутні фахівці об-
говорюють сотні мов програму-
вання, фреймворків, платформ
тощо. Причому якість відповідей
на StackOverflow тримається на
рівні кращих академічних стан-
дартів. Тому компанії, запрошу-
ючи на роботу розробника ПЗ,
розглядають активний профіль
на StackOverflow як важливу
частину резюме.
15511.6. Інструменти веб-...
автоматичні відступи та автодоповнення, має дуже продума-
не підсвічування синтаксису. Програма дозволяє здійснювати
пошук і заміну тексту, перевірку правопису з порівнянням
файла, використовувати фолдинг (функціонал згортання).
Рис. 11.28. Приклад робочого вікна Visual Studio Code
Рис. 11.29. Приклад робочого вікна Notepad ++
156 Розділ 3
Sublime Text 3 — це крос-платформний редактор коду, що
має як преміум-версію, так і безкоштовну версію (рис. 11.30),
яку можна завантажити на офіційному сайті. Існує багато ре-
дакторів коду, які підтримують чорний фон для розширеного
перегляду. Sublime Text 3 — один з них.
Програма легка й дуже швидка в роботі, за замовчуванням
надає автодоповнення, підсвічування синтаксису та фолдинг,
має зручний інтерфейс для початківців, виявлення та виді-
лення синтаксичних помилок, дозволяє одночасно редагувати
багато рядків. У Sublime Text 3 можна додатково налаштувати
плагін Package Control, додавши таким чином інструменти на-
лаштування, нові теми.
Рис. 11. 30. Приклад робочого вікна Sublime Text 3
Atom — це безкоштовний крос-платформний редактор із
відкритим вихідним кодом (рис. 11.31). Це розробка GitHub.
Інтерфейс Atom виглядає як клон редактора Sublime Text, проте
працювати в ньому набагато комфортніше, оскільки він більш
простий і зрозумілий. Крім того, у випадку коли розробник
під час програмування стикається з труднощами, спільнота
GitHub досить активно розв’язує цю проблему.
Програма за замовчуванням надає підсвічування синтак-
сису, доповнення й згортання коду, а також має вбудовану
підтримку десятків мов програмування. Atom постачається із
вбудованим менеджером пакетів, завдяки чому можна здійс-
нювати пошук, установлювати або створювати власні пакети
для розширення функціоналу редактора.
Подібно Visual Studio Code
Atom оснащений потужним
інструментом для парного
програмування  — Teletype.
Це дає можливість кільком
розробникам приєднуватися до
ізольованої сесії й  працювати
спільно.
15711.6. Інструменти веб-...
Рис. 11.31. Приклад робочого вікна Atom
Vim — це редактор (від англ. vi improved — покращений
vi), який уперше був випущений наприкінці 1991 року Бра-
мом Мооленааром (рис. 11.32). Справжню міць Vim демонструє
під час роботи з структурованими текстами та є незамінним
для програмістів і верстальників, його використовує кожен
четвертий веб-девелопер.
Рис. 11.32. Приклад робочого вікна Vіm
158 Розділ 3
Vim є клоном текстового редактора vi для Unix, який напи-
сав Біл Джой у 1976 році. Тоді ж був придуманий його незви-
чайний інтерфейс, заснований на поділі режимів роботи: стан-
дартний режим, режим вставки, режим командного рядка.
Brackets — це редактор коду, створений з нуля спеціально
для веб-дизайнерів і фронтенд-розробників, які працюють пе-
реважно з JavaScript, HTML і CSS (рис. 11.33).
Рис. 11.33. Приклад робочого вікна Brackets
Програма поставляється з основними стандартними власти-
востями, включаючи автодоповнення, підсвічування синтак-
сису для багатьох мов програмування, підтримку швидкого
редагування й різноманітних препроцесорів.
У Brackets є властивість extract, що дозволяє підтягувати
кольори, розміри, градієнти, шрифти та інші важливі дані
з PSD-файла в CSS-файл, готовий до використання. Brackets
дуже популярний серед українських веб-розробників.
Запитання для перевірки знань
У чому полягає різниця між роботою
веб-дизайнера і  веб-розробника?
Якими інструментами користується в  робо-
ті веб-розробник?
Яке призначення редактора коду?
Назвіть найпопулярніший, на вашу думку,
редактор коду.
Що об’єднує всі редактори коду?
На рис. 11.34 наведено логотипи інструмен-
тів веб-розробника. Знайдіть в  Інтернеті ві-
домості про ці інструменти. Створіть класи-
фікацію зазначених інструментів.
1
2
3
4
Що об’єднує всі редактори коду?5
На рис. 11.34 наведено логотипи інструмен-6 На рис. 11.34 наведено логотипи інструмен-6 На рис. 11.34 наведено логотипи інструмен-
Рис. 11.34. До завдання 6
159
11.7. Мова гіпертекстової розмітки
З  чим стикається користувач будь-якої CMS?
Для розуміння процесу створення сайта необхідне опану-
вання мови розмітки гіпертексту.
HTML (англ. HyperText Markup Language)  — стандартна
мова розмітки документів у  Всесвітній павутині, яка об-
робляється спеціальними програмами (браузерами) і  ві-
дображається у вигляді документа у зручній для людини
формі.
Слід зазначити, що HTML не є мовою програмування, вона
призначена лише для розмітки сторінки, надання певного ви-
гляду її складовим.
Гіпертекст  — електронний документ, який містить зв’яз-
ки з іншими електронними документами. Такі зв’язки на-
зиваються гіперпосиланнями.
HTML створювалася як мова для обміну науковою й техніч-
ною документацією, як один із компонентів технології розроб-
ки розподіленої гіпертекстової системи World Wide Web (яку
ми звикли називати Всесвітньою павутиною).
Ідея така: користувач має можливість переглядати докумен-
ти (сторінки тексту) у найзручнішому для себе порядку, а не
послідовно, як це узвичаєно під час читання книжок. Це дося-
гається створенням спеціального механізму зв’язування різних
сторінок тексту за допомогою гіпертекстових посилань.
Будь-який документ мовою HTML є набором елементів, вод-
ночас початок і кінець кожного елемента позначається спеці-
альними позначками — тегами.
Теги — команди мови HTML. HTML-теги — це ключові слова
або символи, які записуються в кутових дужках.
Теги бувають двох видів: парні й непарні (їх ще називають
поодинокими). Парні теги складаються з відкриваючого і за-
криваючого тегів. Теги нечутливі до регістра (тобто регістро-
незалежні), тому можуть бути написані як великими, так
і малими літерами.
Теги визначають, де починається й  де закінчується
HTML-елемент.
Текстові документи, що містять розмітку мовою HTML (такі до-
кументи зазвичай мають розширення .html або .htm), опрацьову-
ються спеціальними застосунками, які відображають документ
у його відформатованому вигляді. Такі застосунки називаються
браузерами.
Пригадаємо, що браузером (веб-переглядачем) назива-
ють програмне забезпечення для комп’ютера або іншого
Мову HTML розробив
британський учений Тім
Бернерс-Лі приблизно
в  1989–1991 роках під час
роботи в  Європейській
лабораторії з  ядерних
досліджень ЦЕРН у 
­
Женеві
(Швейцарія).
Нині найпопулярнішими
браузерами є  MozillaFirefox,
AppleSafari, Google-Chrome,
Opera, Internet Explorer
(Microsoft Edge).
Для тих, хто хоче дізнатися
більше про створення
Всесвітньої павутини, радимо
переглянути фільм BBC
The Virtual Revolution /The
Great Levelling (https://www.
dailymotion.com/video/x5vfk2c)
160 Розділ 3
електронного пристрою, під’єднаного до Інтернету, який дає
змогу користувачеві взаємодіяти з текстом, малюнками або
іншою інформацією на гіпертекстовій веб-сторінці.
За допомогою тегів браузер розпізнає структуру документа.
Отримавши цю інформацію, браузер використовує вбудова-
ні в нього за замовчуванням правила про те, як відображати
контент сторінки. Без використання HTML-тегів браузер виве-
де невідформатований текст, без відступів, заголовків, абза-
ців тощо.
Розглянемо структуру стандартної HTML-сторінки.
Сторінка завжди починається з відкриваю-
чого тега html та закінчується закриваючим
тегом /html і складається з двох обов’язко-
вих блоків — голови (head) і тіла (body), які
записуються послідовно.
У блоці head /head зберігається служ-
бова інформація, призначена допомогти брау-
зеру в роботі з даними. Тут розташовані ме-
та-теги, які використовуються для зберіган-
ня інформації, призначеної для пошукових
систем, а саме: опис сайта, ключові слова
тощо. Інформація є зазвичай невидимою для
пересічного користувача, крім тега title,
в якому відображається назва сторінки сайта.
Увесь контент, який відображається на сто-
рінці, розміщується між відкриваючим і за-
криваючим тегами body.
Кожен абзац починається з тега p (від
слова «параграф»).
Зупинимось на тегах для роботи з текстом, який відобра-
жається у вигляді заголовків, абзаців і списків (рис. 11.35).
У HTML існують шість рівнів заголовків. Найвищим є за-
головок першого рівня, найменшим — шостого. Позначаются
вони відповідно h1… h6. Заголовки мають атрибут align,
який визначає тип вирівнювання на сторінці та може набу-
вати одне з чотирьох значень:
left За лівим краєм (за замовчуванням)
right За правим краєм
center По центру
justify За шириною (за лівим і  правим краєм)
Код HTML Відображення браузером
Рис. 11. 35. Приклад запису заголовків та їх відображення браузером
Контент (англ. content  —
вміст)  — це інформаційне
наповнення сайта.
Контент може містити:
• Текст
• Статичну графіку (§ 11.12)
• Анімаційні елементи (§ 11.13)
• Мультимедійні елементи
(відео, аудіо) (§ 11.14)
16111.7. Мова гіпертекстової...
Абзаци виділяються парним тегом p /p (від слова «па-
раграф»). Як і теги заголовків, тег параграфа має атрибут align.
Списки можуть бути впорядковані, тобто нумеровані, та
невпорядковані — марковані й багаторівневі.
Кожен елемент списку виокремлюється парним тегом li.
Нумерований список позначаєтся парним тегом ol (скор.
ordered list — впорядкований список), маркований список —
парним тегом ul (скор. unordered list — невпорядкований
список) (рис. 11.36).

	
Код HTML	 Відображення браузером
	
Код HTML Відображення браузером
Рис. 11.36. Приклад кодів нумерованого та маркованого списків та їх відображення браузером
У HTML існує спеціальний тег-контейнер для реалізації на-
вігації по сайту — nav. Це парний тег, який містить наві-
гаційні посилання (рис. 11.37).
Для посилання на іншу сторінку використовують парний
тег a (скор. від «анкор», англ. Anchor — якір). Тег має
обов’язковий атрибут href, значенням якого є назва сторінки
з розширенням .html.
Між відкриваючим і закриваючим тегами розміщується
посилання на ресурс. Натиснувши на нього, користувач може
переходити до потрібної сторінки.

	
Код HTML	 Відображення браузером
Рис. 11.37. Приклад запису навігаційного контейнера та його відображення браузером
З одного боку, HTML5 —
це  нова версія мови HTML, із
новими елементами, атрибутами
та новою поведінкою,
з  іншого  — сукупність
технологій, котра дозволяє
створювати різноманітні сайти
й  веб-застосунки.
162 Розділ 3
Мова HTML постійно розвивається. Якщо ранні версії HTML
поєднували функції розмітки та форматування контенту,
тобто зміст (семантичний) та зовнішній вигляд цього змісту
(презентаційний), то з появою багатосторінкових сайтів пе-
реважну частину функцій форматування було покладено на
каскадні таблиці стилів (§ 11.8).
Наразі Консорціум просуває версію HTML5, це остання вер-
сія стандарту HTML. HTML5 остаточно відмовляється від вико-
ристання презентаційних тегів, натомість з’являється низка
нових елементів і атрибутів, які відображають типову архі-
тектуру сучасних веб-сторінок. Приклад використання тегів
HTML5 наведено на рис. 11.38.
Рис. 11.38. Приклад розмітки сторінки
з використанням тегів HTML5
Під час розроблення макета сайта завжди постає пробле-
ма заповнення макета текстом. Зазвичай для надання ма-
кету закінченого вигляду дизайнери застосовують так звану
«рибу» — великий текстовий масив беззмістовних слів із по-
трібною кількістю символів, абзаців і параграфів, який так
і називається — Lorem Ipsum.
Основна функція Lorem Ipsum полягає в зосередженні ува-
ги на дизайні, а не на читанні вмісту. Ще одна причина, че-
рез яку використовують текст, — це заповнення сторінки для
досягнення реального розподілу букв і пропусків у тексті,
яке неможливе у випадку простого дублювання вислову «Тут
написано ваш текст ... Тут написано ваш текст ...»
У більшість текстових і HTML-редакторів Lorem ipsum вхо-
дить як текст за замовчуванням. Існують і сайти, на яких
можна згенерувати потрібну кількість абзаців. Одним з най-
відоміших і найпопулярніших сайтів-генераторів є Lipsum
generator (https://uk.lipsum.com/)/ (рис. 11.39).
У 1994 році засновано Консорціум
Всесвітньої павутини  — головну
міжнародну організацію, що
розробляє та впроваджує
технологічні стандарти
для  Всесвітньої павутини.
Для більш глибокого вивчення
технологій веб-розробки радимо
скористатися курсом «Основи веб-
розробки» освітньої платформи
Прометеус. Викладач курсу
Світлана Шабаранська, Web
UI-девелопер у  компанії N-iX.
Стане в  пригоді веб-сайт
для вивчення веб-технологій
в  Інтернеті (https://www.w3schools.
com/), який містить навчальні
посібники для вивчення HTML,
CSS, JavaScript тощо.
16311.7. Мова гіпертекстової...
Рис.11.39. Головна сторінка генератора беззмістовного тексту латиною Lorem ipsum
Запитання для перевірки знань
Що таке контент; HTML; гіпертекст?
Як називають команди мови розмітки?
Створіть класифікацію тегів HTML.
Які невід’ємні компоненти структури сторінки?
Порівняйте HTML4 і  HTML5. Зробіть презентацію за
результатами порівняння.
Знайдіть в  Інтернеті відомості про Тіма Бернерс-Лі,
зробіть коротке повідомлення.
1
2
3
4
5
6
Завдання для самостійного виконання
Увійдіть у  редактор коду, встановлений на комп’ютері.
Створіть файл index.html.
Наберіть наступну послідовність команд (рис. 11.40).
Як текст використовуйте абзаци, згенеровані генерато-
ром Lorem ipsum.
Збережіть файл.
Перегляньте результат браузером.
Відкрийте файл у  редакторі коду. Приберіть список,
залишивши посилання з  тегами a. Збережіть моди-
фікований файл.
Перегляньте результат браузером.
Проаналізуйте, як відобразив браузер змінений файл.
1
2
Рис. 11.40. До завдання 2
3
4
5
6
7
8
164
11.8. Каскадні таблиці стилів
Уявіть, що ви розробили сайт, що містить десять сторінок,
у  якому необхідно змінити колір тла і  розмір шрифту та
змінити вигляд меню. Ваші дії?
Стрімкий розвиток Всесвітньої павутини та поява величез-
ної кількості сайтів у 1990-х роках спонукали до розробки
нових тегів мови HTML, які відповідали за дизайн сайтів.
Проте, при зміні дизайну сайта в кожну його сторінку по-
трібно було вносити зміни, що значно ускладнювало роботу.
У 1994 році було розроблено каскадні таблиці стилів.
Каскадні таблиці стилів (англ. Cascading Style Sheets,
або скорочено CSS) — спеціальна мова, що використовується
для опису зовнішнього вигляду сторінок, написаних мовою
розмітки даних. Основна ідея CSS полягає в тому, щоб відо-
кремити дизайн документа від його вмісту. CSS відповідає за
оформлення і зовнішній вигляд HTML-коду, тоді як HTML — за
зміст та логічну структуру документа.
Конструкція СSS, яка відповідає за зовнішній вигляд пев-
ного елемента HTML, називається CSS-правилом. Усі CSS-пра-
вила складаються із селектора та блоку оголошень.
Блок оголошень містить одне або кілька оголошень, роз-
ташованих у фігурних дужках. Усередині блоку оголошень
знаходяться пари CSS-властивість — значення, розділені кра-
пкою з комою (рис. 11.41).
Рис. 11.41. Правило оголошення СSS
Кожне правило починається із селектора (покажчика), що
вказує на ті
html
-елементи, до яких застосовується CSS-пра-
вило. Саме в блоці оголошень установлюються правила відо-
браження вибраних нами елементів, визначаються їхні вла-
стивості — розмір, колір, відступи, поля, розташування на
екрані (позиціонування) тощо. Селектор дозволяє звернутись
до одного або кількох HTML-елементів.
Якщо необхідно визначити стиль таким чином, щоб один
і той самий елемент у різних випадках відображався по-різ-
ному, то на допомогу приходять класи. Клас описується у ви-
гляді .ім’я_класу {властивості}. Для присвоєння класу заданому
тегу використовується властивість class = ім’я_класу.
Ідентифікатори (селектори id) дуже подібні до класу, крім
одного — ідентифікатор може мати одне-єдине унікальне ім’я
в усьому документі. У файлі CSS ім’я вказується зі знаком
­
решітки на початку, а до потрібного елемента додається атри-
бут id =  .
У  1994 році норвезький учений
Хокон Віум Лі запропонував
концепцію відділення дизайну
сайта від його вмісту за
допомогою каскадних таблиць
стилів.
16511.8. Каскадні таблиці стилів...
Термін «cascading» (каскадні) у назві CSS вказує на мож-
ливість злиття різних таблиць стилів для створення єдиного
визначення стилю окремого елемента (тегу) чи всього доку-
мента.
Каскадність CSS — це механізм, завдяки якому до еле-
мента HTML-документа може застосовуватися більш ніж одне
правило CSS.
Правила можуть виходити з різних джерел: із зовнішньої
та внутрішньої таблиці стилів, від механізму наслідування,
від батьківських елементів, від класів і id, від селектора тегу,
від атрибута style тощо. Оскільки в цих випадках часто від-
бувається конфлікт стилів, була створена система пріоритетів:
у кінцевому підсумку застосовується той стиль, який вихо-
дить від джерела з більш високим пріоритетом.
Таким чином, каскадність у CSS — це здатність стильових
правил накладатися один на одного, перезаписувати і змішу-
ватися. Підсумковий стиль елемента, який видно в браузе-
рі, — це комбінація кількох послідовно застосованих стилів.
Існує кілька способів підключення CSS-коду до HTML-доку-
мента. Розглянемо деякі з них.
• Застосування inline-стилів (стилі, які підставляються
безпосередньо в рядок).
Додавання CSS-правила в HTML-тег за допомогою атри-
бута style. Усередині атрибута style можна написати кілька
CSS-оголошень, розділених крапкою з комою, фігурні дужки
не використовуються. Inline-стилі змішують уміст документа
і його дизайн, тому його краще використовувати як виклю-
чення, у випадку, коли елемент зустрічається лише один раз
у документі або на сайті, але вимагає особливого оформлення
(приклад 1).
• Застосування таблиць стилів документа (document style
sheets).
Називаються так тому, що розташовуються безпосередньо
в HTML-документі й застосовуються лише до нього. Іноді їх на-
зивають embedded style sheet (убудований стиль). Збереження
CSS-коду в HTML-документі у тезі style, що теж розміщується
в head. Зазвичай цей варіант використовується, коли існує
лише одна проста HTML-сторінка й немає сенсу створювати
додатковий файл (приклад 2).
• Застосування зовнішніх, або зв’язаних, стилів (external
style sheets).
Це найбільш поширений варіант. Він полягає у винесенні
CSS-коду в окремий файл із розширенням .css та підключен-
ням за допомогою тегу link, який знаходиться виключно
всередині елемента head. Зустрівши в HTML-документі цей
тег, браузер завантажить із сайта CSS-файл і застосує до до-
кумента стилі, що містяться в ньому (приклад 3).
Існує ще один спосіб підключення таблиць — за допомогою
директиви @import. Цей спосіб дозволяє об’єднувати кілька
таблиць стилів в одну (приклад 4).
Приклад 1.
Приклад 2.
166 Розділ 3
Приклад 3.
HTML код Файл style.css
Цей спосіб свого часу був досить популярний, проте на-
разі він втрачає свої позиції через те, що сторінка не заван-
тажиться, доки браузер не завантажить файл CSS повністю.
Це негативно позначається на швидкості завантаження сайта
й відповідно гальмує роботу.
Розглянемо пріоритетність стилів.
1) Якщо в таблиці є однакові селектори, то виконувати-
меться той, який записаний останнім.
Наприклад p{color: grey;} p{color: pink;} — колір абзацу буде
рожевим.
2) Якщо для одного елемента задано стиль і в зовнішній,
і у внутрішній таблицях, то пріоритет віддається стилю
в тій таблиці, яка знаходиться нижче в коді. Наприклад,
спочатку в head підключили зовнішню таблицю, а по-
тім за допомогою тегу style додали внутрішню таблицю.
Браузер відобразить стилі внутрішньої таблиці.
3) Пріоритетність за спаданням:
• inline-стилів,
• ідентифікаторів,
• класів,
• тегів.
Ознайомимося зі стислим описом модулів CSS.
№
з/п
Назва
модуля
Опис
1
CSS-
позиціону-
вання
CSS-позиціонування (positioning) дозволяє вказати, де з’явиться блок елемента,
а  вільне переміщення (floating) переміщує елементи до лівого або правого краю
блока-контейнера, дозволяючи решті вмісту «обтікати» його
2 CSS-текст Керують перетворенням вихідного тексту у  форматований і  перенесенням рядків
3 CSS-шрифт
Вибір шрифту (font-family), його насиченість (font-weight), ширина (font-stretch),
накреслення( font-style), розмір ( font-size)
Приклад 4.
Правила форматування CSS:
• Кожна властивість  —
в  окремому рядку.
• Кожен селектор  —
в  окремому рядку.
Порядок опису стилів:
• Позиціонування (position, left/
right/top/bottom, float, clear,
z-index.)
• Дісплей і  блочне
моделювання (display, width,
height, margin, padding…
• Колір (background)  
• Текст (list-style-type, overflow,
color font…)
• Інші
16711.8. Каскадні таблиці стилів...
№
з/п
Назва
модуля
Опис
4
CSS-
посилання
Містять властивості, які відповідають за зовнішній вигляд гіпертекстових посилань
HTML-документа. Оскільки посилання є  основним способом навігації сайтом, то за-
стосування CSS-стилів для оформлення покращить їх візуальне сприйняття
5 CSS-списки
CSS-списки  — набір властивостей, які відповідають за оформлення списків.
Зазвичай списки використовуются під час створення навігаційних панелей сайта. За
допомогою стандартних CSS-властивостей можна змінити зовнішній вигляд маркера
списку, додати зображення для маркера, а  також змінити місце розташування
маркера
6 CSS-тло
CSS-тло  — властивості, що додають тло для будь-якого HTML-елемента. Кожен
елемент має шар тла, який може бути прозорим (за замовчуванням), мати кольорове
заповнення та зображення
7 CSS-color
Описує значення, які дозволяють визначати колір та непрозорість HTML-елементів,
а  також значення властивості color
Запитання для перевірки знань
Що таке каскадні таблиці стилів? Назвіть причини їхньої
появи.
Опишіть синтаксис CSS-правила.
Що таке селектор? Які бувають селектори?
Наведіть пріоритети виконання таблиць стилів.
Опишіть способи підключення стилів. Проаналізуйте, коли
і  який спосіб краще використовувати.
Виберіть із наведеної раніше таблиці СSS-модуль. Розробіть
презентацію з  докладним розбором та прикладами викори-
стання правил CSS.
1
2
3
4
5
6
Завдання для самостійного виконання
Увійдіть у редактор коду, встановлений на вашому комп’юте-
рі. Створіть файл style.css.
Наберіть наведену послідовність команд (рис. 11.42).
Збережіть файл у тій самій теці, де ви зберегли файл index.
html, створений на попередньому уроці.
Відкрийте файл index.html у редакторі коду. Додайте у блок
head таку команду.
link rel=stylesheet type=text/css href=style.css
Збережіть модифікований файл.
Перегляньте результат браузером.
Проаналізуйте, як відобразив браузер змінений файл.
1
2
Рис.11.42. До завдання 2
3
4
5
6
7
8
Закінчення таблиці
168
11.9. Проектування та верстка веб-сторінок
Поміркуйте, чим відрізняються поняття сайта й  веб-
сторінки.
Процес створення сайта (веб-проекту) умовно можна розпо-
ділити на кілька етапів (рис. 11.43). Розглянемо такі етапи,
як загальне планування; розробка дизайну; планування ма-
кета веб-сторінок.
Загальне планування складається зі створення ідеї, роз-
робки структури проекту, опрацювання макета проекту.
Створення ідеї: необхідно вибрати тему проекту (сайта серві-
су) й відповідно до неї дібрати текстові та графічні матеріали.
Розробка структури проекту: потрібно визначити кількість
розділів сайта, класифікувати матеріал за розділами, присту-
пити до формування навігаційного меню.
Опрацювання макета проекту: потрібно скласти макет про-
екту, використовуючи графічний редактор. У 10 класі в роз-
ділі растрової графіки ви вже вивчали графічний редактор
Gimp, який має потужний інструментарій для розробки маке-
та сайта, створення банерів, кнопок і логотипів, опрацювання
фотографій, створення gif-анімації. Можна схематично склас-
ти макет проекту, використовуючи також папір і ручку.
Схематичний начерк дає розуміння того, як на сайті розта-
шовуватимуться основні інформаційні блоки, графічні зобра-
ження тощо (рис. 11.44).
Рис. 11.44. Вибір макету проекту
Порядок cтворення сайта
Розробка дизайну
сайта
Загальне планування
сайта
Планування макета
веб-сторінок
Верстка веб-сторінок
Програмування сайта
Розміщення сайта
в  Інтернеті
Рис. 11.43. Порядок створення
сайта
16911.9. Проектування та...
Переважна більшість сучасних сайтів має блочну вер-
стку. Розглянемо основні елементи веб-сторінки сайта: блок
(або контейнер — div), заголовок (хедер), у який входять наз-
ва сайта та логотип, навігація, контент, нижній колонтитул
(футер, підвал). Звернемося до історії розвитку верстки.
Веб-сторінки спочатку були просто набором
тегів. Елементи відображалися в тому поряд-
ку, в якому записувалися в HTML-коді. Щоб
візуально розділити інформацію, використо-
вувалися горизонтальні лінії або відступи.
Кроком вперед була так звана таблична
верстка веб-сторінки: елементи структурува-
лися за допомогою таблиці, інформація встав-
лялась у клітинку. Створити сайт за допомо-
гою таблиці було досить просто — достатньо
мати початкові знання HTML і CSS і вико-
ристовувати мінімум правил CSS.
Таблична верстка була дуже популярною
на початку 2000-х років. До сьогодні існує
досить багато сайтів, які зверстано у вигляді
таблиць.
Таблична верстка має низку недоліків: при
складній структурі важко розібратися в коді,
браузери відображають таблицю на екрані
лише після повного завантаження, а склад-
ний дизайн з перекриттям елементів узагалі
неможливо реалізувати. Таблична верстка не-
прийнятна для побудови адаптивних сайтів.
Наразі найпопулярнішим способом верстки
є так званий блочний. При цьому використо-
вуються блоки, які або розташовують один під
одним, або керують порядком їх відображення
за допомогою позиціонування в CSS.
Розглянемо основні елементи веб-сторінки сайта.
Елемент div() зазвичай виконує на веб-сторінці роль кон-
тейнера (рис. 11.45).
Теги div мають такі характеристики:
• div — блочний елемент; якщо ширину не задано, блок
займає всю ширину браузера;
• div — висота блоку; якщо висоту не задано, то блок до-
рівнює вмісту; порожній блок div має висоту 0 px, тому
не відображається на сторінці;
• div не має оформлення; для того щоб його побачити, по-
трібно задати стилі в CSS;
• div — може містити будь-яке число вкладених елемен-
тів; можна вкласти інші блоки div, заголовки, таблиці,
зображення та ін.
Елемент header (заголовок) є контейнером, у якому міс-
тяться назва сайта, логотип і навігаційна панель.
Логотип найчастіше розташовується у верхньому лівому
кутку веб-сторінки або посередині, залежно від ідеї, макета
(рис. 11.46).
Навігаційна панель часто розташовується у верхній части-
ні веб-сторінки незалежно від того, вертикально або горизон-
тально розташовуються елементи навігації сайта (рис. 11.47),
і містить посилання на його основні розділи.
Нижній колонтитул (footer, підвал) розташовується внизу
веб-сторінки і зазвичай містить інформацію про правовлас-
ників, контактні та юридичні дані, посилання на основні
розділи сайта (найчастіше дублює основну навігацію), поси-
лання на соціальні мережі, форму зворотного зв’язку та ін.
(рис. 11.46).
Контент, як відомо, є  основною
складовою веб-сторінки.
Він відіграє провідну роль
у  дизайні сайта, тому займає
більший простір, крім тексту,
підкріплений графікою.
170 Розділ 3

аб
в
Рис. 11.45. Приклад використання контейнера на веб-сторінці:
код HTML (а); правила СSS (б); відображення в браузері (в)
Рис. 11.46. Приклад запису та відображення у браузері логотипа сайта
17111.9. Проектування та...
Рис. 11.47. Навігаційна панель сайта
Рис. 11.48. Нижній колонтитул
Модульна сітка передбачає поділ веб-сторінки на окремі
колонки по вертикалі та вибудовування контенту. Дизайн ма-
кета зазвичай розробляється саме за цією сіткою (рис. 11.49).
Найбільш популярною є модульна сітка 960 Grid System
(http://960.gs), яка максимально ділить сторінку на 12, 16
і 24 колонки. За шириною сітка становить максимум 960
пікселів. Такий вибір базується на тому, що на момент ство-
рення сітки більшість сучасних моніторів мали роздільність
1024×768 пікселів.
172 Розділ 3
Створення макета на основі модульної сітки допоможе
в подальшому прискорити процес верстання. Завдяки їй бло-
ки контенту й елементи розташовуватимуться на певній від-
стані один від одного.
Можна сказати, що модульна сітка — це певна візуальна
абстракція, візуальний розподіл сторінки на однакові за ши-
риною стовпці з однаковими відступами між ними. Візуалі-
зувати модель можна за допомогою напрямних або окремого
шару, на якому будуть зображені ці стовпці (знову пригадає-
мо графічний редактор Gimp).
Рис. 11.49. Модульна сітка
Серед усього різноманіття складання макета веб-сторінки
можна виділити різні типи навігації.
Розглянемо чотири найбільш поширені типи навігації (рис.
11.50):
•
• навігація в лівому стовпці (а);
•
• навігація в правому стовпці (б);
•
• горизонтальна навігація (в);
•
• навігація Mobile First (г).
17311.9. Проектування та...

аб
вг
Рис. 11.50. Приклади сайта: з навігацією в лівому стовпці (а); навігацією в правому стовпці (б); 
горизонтальною навігацією (в); технологією Mobile First (г)
Сайти з горизонтальною навігацією становлять більшість.
Такий вибір пояснюється зручністю, адже залишається
більше простору для контенту, яким наповнено сайт.
З урахуванням тенденцій останніх років тип навігації
Mobile First впевнено займає свою нішу. У разі його викори-
стання розробка макета сайта, дизайну й верстки почина-
ється з мобільної версії, а вже потім опрацьовуються макети
для інших роздільностей: додаються блоки, банери, додаткові
елементи дизайну тощо (більш детально цей підхід описано
в § 11.10).
Одним зі способів визначення основного кольору в проекті 
є складання mood board (у  перекладі з англійської мови —
дошка настрою). Під час створення дизайну макета варто роз-
почати роботу з визначення колірної гами проекту.
Порядок складання mood board такий: потрібно набрати
кожен синонім у рядку пошуку по картинках Google та ви-
писати найчастіше повторювані в знайдених зображеннях
кольори, — від них залежить візуальне сприйняття проекту
користувачем і виклик відповідних почуттів.
Понад 80 % користувачів
Інтернету використовують для
доступу в  мережу мобільні
пристрої, тож правилом
хорошого тону стає розробка
не тільки десктопної,
а  й  мобільної версії сайта.
174 Розділ 3
Для роботи з вибраним кольором і складанням палітри
кольорів сайта можна використовувати сервіси Color Scheme
Designer 3 і  Adobe Color CC.
Color Scheme Designer 3 (http://colorschemedesigner.com/
csd-3.5/) надає можливість ппереглянути, який вигляд мати-
ме сайт у вибраних кольорах (рис. 11.51).
Рис. 11.51. Палітра кольорів Color Scheme Designer
Adobe Color CC (https://color.adobe.com) дозволяє створю-
вати палітри ще й на основі завантажених зображень (які,
наприклад, могли з’явитися в нас під час складання mood
board). Сервіс містить великий архів палітр інших користу-
вачів (рис. 11.52).
Рис. 11.52. Палітра кольорів Adobe Color CC
Під час розробки дизайну веб-сторінки використовують
фреймворк — програмну оболонку, що дозволяє спростити
і прискорити розв’язування типових завдань.
Досить часто використовують фреймворки Bootstrap,
Foundation, Material Design Lite. Крім готових елементів дизай-
ну (кнопки, форми введення тощо) вони пропонують свою
модульну сітку, CSS-сніппети (частина коду, розмітки, яка
17511.9. Проектування та...
може неодноразово використовуватися) для вставки елемен-
тів у веб-сторінку (кнопок, елементів форм та ін.) і класи
розмітки, а так само JS скрипти для відповідних інтерак-
тивних елементів.
На основі певного фреймворка можна знайти величезну
кількість платних і безкоштовних тем і сторінок, а також
розробити власні.
Під структурою проекту розуміють зберігання файлів
проекту в його директорії. Окремі категорії файлів необхід-
но поміщати у свої папки: картинки в папку images або img,
css — у папку css, javascript — у папку js. У корені лежати-
муть лише index.html і веб-сторінки сайта, або тільки index.
html, а веб-сторінки — в окремій папці pages.
Важливо дотримуватись подібних правил і під час імену-
вання файлів проекту.
Найчастіше застосовуються такі імена, як головна сторін-
ка — index.html, стилі проекту — styles.css, скрипти — scripts.
js або app.js. Мінімізовані версії файлів мають префікс .min,
назви картинок відображають те, що на них зображено.
Верстання веб-сторінки здійснюється поетапно (рис. 11.54).
Як бачимо, за допомогою тегів HTML спочатку створюють
скелет сторінки, орієнтуючись на структуру, складену ще на
першому етапі. Далі визначають необхідні класи та перехо-
дять до написання CSS-стилів.
Заключним етапом є написання JS-скриптів (розглядати-
меться в § 11.15–11.16). Після написання HTML, CSS і JS для
сторінки необхідно перевірити, чи все зроблено правильно
(розглядатиметься в § 11.20)
Запитання для перевірки знань
Сформулюйте правила структурування й  іме-
нування файлів.
Які типи макетів веб-сторінок ви знаєте? Які
переваги та недоліки вони мають?
Опишіть етапи створення сайта.
Яке місце в  дизайні сайта, на вашу думку,
посідає колірна гама?
Чим корисні фрейворки?
Опишіть етапи верстки веб-сторінки.
1
2
3
4
5
6
Завдання для самостійного виконання
Створіть теку для вашого майбутнього сай-
та з  назвою Site.
У створеній теці задайте ще відповідно
теки images, css, js.
Перенесіть у  теку Site файл index.html, мо-
дифікований на минулому уроці.
У теку сss перенесіть файл style.css.
У файлі index.html виправте посилання на
файл style.css так, щоб ви могли знайти
його у  новоствореній теці. Для цього у  за-
пису link rel = stylesheet type = text/css
href = style.css пропишіть шлях до файла
наступним чином href = css/style.css.
Перегляньте отриманий результат у  брау-
зері.
1
2
3
4
5
6
Рис. 11.53. Структура теки SITE
Верстка веб-сторінки
сайта
Створення HTML-
структури (HTML-код)
Додавання стилів (css)
Створення скриптів (JS)
Додавання плагінів
і бібліотек
Рис. 11.54. Порядок дій під час
верстання веб-сторінок
176
11.10. Адаптивна верстка
Чи користуєтеся ви мобільним Інтернетом? Як ви гадаєте,
чи однаково виглядає код сайта для перегляду на стаціонар-
ному комп’ютері та смартфоні?
Джерела інформації повсякчас урізноманітнюються й удо-
сконалюються. Ознайомимося з ними докладніше.
Із появою мобільного Інтернету до класич-
ного веб-сайта додався так званий вап-сайт.
Перший, як відомо, призначений для пере-
гляду на комп’ютері, другий — для перегляду
з мобільного телефону. Погодьтеся, це дода-
ло зручності. Адже веб-сайти, маючи широ-
кий функціонал і яскраве оформлення, дуже
довго завантажувалися й забирали занадто
багато трафіку. Натомість вап-сайти місти-
ли в основному текст і поодинокі зображен-
ня. Додамо, що на той час мобільні телефони
були слабкі, а мобільний Інтернет повільний
і дуже дорогий.
Згодом широким попитом стали користу-
ватися планшети. Це створило нові виклики
фахівцям у галузі веб-дизайну, адже фіксо-
вана верстка не дозволяла змінювати розмір
роздільності сайта. Великі сайти переглядати
з планшетів було незручно, а мобільні сай-
ти не були оптимізовані під екран великих
розмірів. Сьогодні використання смартфонів,
планшетів і Smart-TV є невід’ємною частиною
сучасного життя, а кількість і різноманіт-
ність мобільних пристроїв постійно збільшу-
ється (рис. 11.55).
Рис. 11.55. Статистика різноманітних девайсів та їх роздільність
Першою спробою підлаштування сайта під
розміри екранів стала так звана гумова вер-
стка. У разі її застосування й макету, й ок-
ремим його складовим надаються розміри не
фіксовані (рис. 11.56, а), а подані у відсотках
(рис. 11.56, б), тобто вміст сторінки розтя-
гується. Проте коли, наприклад, той самий
контент розтягується на 6-дюймовий екран
смартфона та 42-дюймовий екран телевізора,
це вже заважає. Тож необхідно встановити
максимальний і мінімальний розмір (власти-
вість max-width).
а б
Рис. 11.56. Приклад відображення на смартфоні
макета веб-сторінки: а  — фіксована верстка;
б  — гумова верстка
17711.10. Адаптивна верстка...
Наступним кроком стала поява медіа-запитів. Цьому спри-
яла пропозиція Марка ван ден Доббельстіна щодо додавання
класів під час завантаження та оголошення кожному діапазо-
ну спеціальних стилів.
Медіа-запити (media queries) — це правила CSS, які дозво-
ляють керувати стилями елементів залежно від значень тех-
нічних параметрів пристроїв.
У 2001 році в HTML4 і CSS2 була введена підтримка апарат-
нозалежних таблиць стилів, що дозволило створювати стилі
й таблиці стилів для певних типів пристроїв.
Таким чином, браузер застосовував таблицю стилів тільки
в разі, якщо активувався саме цей тип пристрою:
Тип носія Опис медіа-запитів
all Всі типи. Це значення використовується за замовчуванням
braille Пристрої, засновані на системі Брайля й  призначені для читання людьми з  вадами зору
embossed Принтери, що використовують для системи друку шрифтом Брайля
Handheld Смартфони та аналогічні пристрої
print Принтери та інші друкарські пристрої
projection Проектор
screen Екран монітора
speech
Мовні синтезатори, а  також програми для відтворення тексту вголос (сюди, наприклад,
можна віднести мовні браузери)
tty
Пристрої з  фіксованим розміром символів (телетайпи, термінали, пристрої з  обмеження-
ми дисплея)
tv Телевізори
Як же використовують медіа-запит? Загалом медіа-запит
складається з ключового слова, що описує тип пристрою (не-
обов’язковий параметр) і вираз, котрий перевіряє характери-
стики цього пристрою. З усіх характеристик найчастіше пе-
ревіряється ширина пристрою width.
Медіа-запит є логічним виразом, який повертає істину або
хибність.
Запит записують у кінці таблиці стилів (пригадаємо пра-
вила запису стилів: у стилів, які записані пізніше, вища прі-
оритетність). Наприклад, наведений далі запис означає, що
стилі будуть використовуватися лише у випадку, коли шири-
на екрану буде не більшою за 600 пікселів:
@media screen and (max-width: 600px) {
}
Розглянемо на прикладі використання медіа-запитів.
Наведемо список популярних медіа-запитів для стандарт-
ного набору розширення екранів.
У  2006 році в  інтернет-журналі
A List Apart (https://alistapart.
com/) вийшла стаття Доб-
бельстіна, а  через 2 роки
з’явилися медіа-запити.
Приклад.
style
.block_left { width: 430px; }
@media (max-width: 1220px) {
  .block_right { width: 380px; }
}
@media (max-width: 1120px) {
  #block { width: 325px; }
}
@media (max-width: 680px) {
#block { width: 200px; }
}
/style
178 Розділ 3
@media only screen and (max-width : 1920px) {/* CSS правила */ }
@media only screen and (max-width : 1680px) {}
@media only screen and (max-width : 1366px) {}
@media only screen and (max-width : 1280px) {}
@media only screen and (max-width : 1024px) {}
@media only screen and (max-width : 800px) {}
@media only screen and (max-width : 768px) {}
@media only screen and (max-width : 600px) {}
@media only screen and (max-width : 533px) {}
@media only screen and (max-width : 360px) {}
@media only screen and (max-width : 320px) {}
@media only screen and (max-width : 240px) {}
@media only screen and (max-width : 176px) {}
Адаптивні сайти з’явилися завдяки зростанню попиту тих
користувачів, які хочуть завантажувати веб-сторінки з іде-
альною структурою на всіх своїх пристроях. Саме зараз адап-
тивний дизайн стає обов'язковим. Він значно спрощує регу-
лярний серфінг в Інтернеті незалежно від того, який пристрій
вибрав користувач для доступу до сайтів, які його цікавлять.
Сьогодні прийнято вважати, що головне в адаптивній вер-
стці — це прив’язка до конкретних пристроїв з певною роз-
дільністю екрану. Стилі перемикаються від одного брейкпоін-
та (контрольні точки, сталий термін у програмуванні, у ви-
падку верстки означає перемикання з одних умов на інші)
до іншого, тобто насправді є фіксовані макети для кожного
девайсу.
Традиційно макет сайта спочатку розробляється для десктоп-
ної версії, а вже потім адаптується до мобільної. Люк Вро-
блевскі у своїй книзі «Спочатку мобільні» запропонував піти
від протилежного: розробити макет сайта для мобільної версії,
а вже потім покращувати до десктопної. Вроблевскі керувався
тим, що ускладнювати просте легше, ніж спрощувати складне.
Рис. 11.57. Сайт Ітана Маркотта
Ідея розробки адаптивної верстки
належить Аарону Густафсону.
У  своїй книзі «Адаптивний веб-
дизайн» він запропонував гнучко
адаптувати сайти до можливостей
пристроїв і  браузерів.
17911.10. Адаптивна верстка...
Книга Аарона Густафсона
За Аароном Густафсоном, адаптивність — це особливий
підхід до розробки сайта, який дозволяє вже наявним веб-ре-
сурсам підлаштовуватися під розміри екранів різних пристро-
їв. Інакше говорячи, сторінка повинна автоматично підлаш-
товуватися під екран, змінювати розмір картинок тощо. Це
дозволило усунути потребу в розробці дизайну для кожного
нового типу пристрою.
Основні особливості адаптивного дизайну:
• застосування гнучкого макета на основі сітки (англ.
flexible, grid-based layout);
• використання гнучких зображень (англ. flexible images);
• робота з медіа-запитами (англ. media queries);
• плавна перебудова блоків у разі зміни розміру екрана
(наприклад, під час повертання планшета)
Якщо зображення гнучке, це означає, що його розмір
змінюється залежно від розміру контейнера, в якому воно
міститься (§ 11.12).
Flexbox, CSS Grid і багатоколонкова верстка (Multi-column
layout) є адаптивними за замовчуванням (їх специфікації
були написані у світі, де адаптивний дизайн і крос-девай-
сність вже стали реальністю). Це означає, що ім притаманні
безліч функцій, які дозволяють легко створювати адаптивні
сітки.
CSS Flexbox (Flexible Box Layout Module) — модуль маке-
та гнучкого контейнера, що являє собою спосіб компонування
елементів. Технологія flexbox ставить на меті зробити шари
гнучкими, а роботу з ними інтуїтивно зрозумілою.
Flexbox складається з гнучкого контейнера (flex container)
і гнучких елементів (flex items). Останні можуть вибудовува-
тися в рядок або стовпець, а вільний простір розподіляється
між ними різними способами.
Модуль flexbox дозволяє:
• розташовувати елементи в одному з чотирьох напрямків:
зліва направо, справа наліво, зверху вниз або знизу вгору;
• перевизначати порядок відображення елементів;
• автоматично визначати розміри елементів так, щоб вони
вписувалися в доступний простір;
• розв’язувати проблему з горизонтальним і вертикальним
центруванням;
• переносити елементи всередині контейнера, не допускаю-
чи його переповнення;
• створювати колонки однакової висоти.
Flex (від англ. Flex — розтягувати) і flex-inline — це пара-
метри для властивості елемента display батьківського HTML-еле-
мента, що містить дочірні блоки. На відміну від інших пара-
метрів цього елемента (block || inline-block || table) вони не зада-
ють новий тип відображення елемента.
Вони надають можливість керувати поведінкою дочірніх
елементів, вкладених у контейнер-обгортку з цією властиві-
стю, наприклад, змінювати їх розмір і відстань між ними
(рис. 11.59).
Концепцію чуйного дизайну
запропонував Ітан Маркотт
у  2010 році та описав у  своїй
книгі «Responsive Web Design».
Особливістю такого підходу
стала плавна зміна сайта,
зорієнтована на вміст, а  не на
конкретні пристрої.
Книги Ітана Маркотта та Люка
Вроблевські
180 Розділ 3
Рис. 11.58. Приклад адаптивної верстки на основі медіа-запитів
Рис. 11.59. Приклад оголошення флексбоксу
Flexbox дозволяє керувати елементами лише в одновимір-
ному просторі, тому наступним кроком є розробка модуля
GRID, який дозволяє оперувати стовпцями та рядками.
Grid container (грід-контейнер) — це набір горизонтальних
і вертикальних grid-ліній, що перетинаються. Ці лінії ділять
простір на grid-області, де розташовуються grid-елементи. Усе-
редині grid-контейнера є два набори grid-ліній: один визначає
вісь стовпців, інший — вісь рядків. Модуль grid також пра-
цює з елементом display (рис. 11.60).
Рис. 11.60. Приклад використання модуля grid
Для тих, хто хоче досконало вивчити властивості flexbox,
можна спробувати свої сили в  грі Flexbox Froggy, де потрібно
допомагати жабеняті Фрогі та його друзям написанням CSS
коду (https://flexboxfroggy.com/#uk).
Вивчити властивості модуля
Grid допоможе гра «Морквяні
городи» за посиланням
https://codepip.com/games/grid-
garden/
Більш детально з модулем
Flexbox можна ознайомитися за
посиланням
https://css-tricks.com/snippets/
css/a-guide-to-flexbox/
18111.10. Адаптивна верстка...
Рис. 11.61. Вікно гри Flexbox Froggy
Запитання для перевірки знань
Поясніть необхідність розробки адаптивних
сайтів.
Що таке медіа-запити? Чим обумовлена їх
поява?
Яка сфера використання медіа-запиту braille?
Опишіть принципи адаптивного дизайну.
Які інструменти дозволяють розробляти
адаптивні сайти?
Поміркуйте, чому для адаптивної верстки
краще використовувати векторну графіку.
1
2
3
4
5
6
Завдання для самостійного виконання
Для розуміння роботи адаптивного шабло-
ну відкрийте сторінку Google (https://about.
google/).
Зменшуйте розмір вікна браузера і  слідкуйте
за тим, як змінюються положення блоків, зни-
кають зображення, як перетворюється меню
в результаті зменшення вікна браузера.
Опишіть зміни у  відображенні сторінки під
час застосування режиму інспекції.
Перегляньте код (рис. 11.62). Який механізм
використовують розробники сайта для до-
сягнення адаптивності?
1
2
3
Рис. 11.62. До завдання 3
182
11.11. Кросбраузерність
Кожний користувач віддає перевагу певному браузеру.
Хтось полюбляє вогняну лисичку, комусь до вподоби хром,
а хтось не уявляє собі життя без сафарі. Поміркуйте, чи
однаково обробляють браузери код сайта, який ви хочете
переглянути?
Як свідчить статистика, переважна більшість користувачів
надає перевагу браузерам, які працюють на рушії Webkit, —
Google Chrome і Safari (рис. 11.63).
Рис. 11.63. Статистика використання браузерів
Кожен браузер має свою історію, свої версії, які, у свою
чергу, розрізняються підтримкою Javascript, HTML і CSS. Хоча
різні браузери в основному дотримуються загальних правил
і стандартів. Проте в деяких випадках буває, що алгоритми
обробки HTML-кодів і каскадних таблицьHTML-кодів і каскадних таблицьHTML CSS можуть бути різ-
ними. Це призводить до різного відображення одного і того
самого елемента сайта в різних браузерах.
Ознайомимося з історією створення популярних браузерів:
Рік Опис
1994
З’явився один з перших вдалих браузерів Netscape Navigator, створений на основі пер-
шого браузера з графічною оболонкою NCSA Mosaic
1994–1996
Компанія Microsoft розробила браузер Internet Explorer, однак перші три версії широко-
го розповсюдження не отримали. Тривалий час браузери Netscape Navigator і Internet
Explorer розвивалися паралельно, доки останній не захопив 95 % ринку.
Далі в Internet Explorer застій (з 4.0 до 6.0 версії), а в Netscape Navigator, який був напи-
саний на новому рушії Gecko, — відродження у версії 6.0.
Оновлений Netscape Navigator не досяг колишніх вершин, та рушій Gecko у 2004 році по-
служив основою для створення сучасного браузера Mozilla Firefox однойменної компанії
1996 У компанії Opera Soft AS з’явилася Opera, швидка і проста у використанні
2003 Корпорація Apple випустила браузер Safari на рушії WebKit
2008 Корпорація Google випустила браузер Google Chrome на тому самому рушії, що й Safari
Розглянемо розвиток браузерів більш докладно.
Веб-браузер Тіма Бернерса Лі WorldWideWeb дозволяв пе-
реглядати текстові сторінки, перегляд зображень здійснювався
Слово «браузер» (від англ.
Вrowser — гортати) в англомовнихВrowser — гортати) в англомовнихВrowser
програмах можна побачити на
кнопках у діалогових вікнах. Крім
браузера, найпопулярнішими
варіантами перекладу є (веб-)
перекладач або оглядач, а також
(веб-) навігатор.
Найпопулярніші браузери
• Google Chrome
• Safari
• Mozilla Firefox
• Opera
• Internet Explorer
18311.11. Кросбраузерність...
в окремих вікнах і був з чорно-білим інтерфейсом. Перший
браузер, який отримав графічний інтерфейс, тобто не тіль-
ки просто текст на чорному тлі, був розроблений у 1993 році
і мав назву NCSA Mosaic (рис. 11.64).
Рис. 11.64. Браузер Mosaic
Наступником Mosaic став браузер Netscape (рис. 11.65). Його
розробники додавали в HTML нові теги, які робили зовнішній
вигляд документа більш привабливим. Ці теги не були стан-
дартизовані й працювали лише в Netscape. Та оскільки част-
ка Netscape на той час становила понад 90% від усіх наявних
браузерів, це проблемою не було.
Поява конкурента — Internet Explorer від Microsoft — і прак-
тично відкрита війна між двома корпораціями за частку рин-
ку, яка отримала назву «війна браузерів» (більш детально
про війну браузерів можна дізнатись, переглянувши фільм
«Download: The True Story of the Internet») призвела до сер-
йозної проблеми, що полягала у відсутності єдиних стандар-
тів відображення веб-сторінок. Дійшло до того, що на сайтах
вбудовувалися кнопки Best viewed in Netscape і Best viewed in
Internet Explorer.
Найбільші відмінності виникали у підтримці JavaScript —
мови сценаріїв, що додає інтерактивності документам. У ре-
зультаті багато документів було «оптимізовано» для конкрет-
ного браузера й абсолютно не читалися в іншому.
Сьогодні виробники браузерів почали активно займати-
ся своєчасною підтримкою стандартів World Wibe Web, HTML5
і CSS3, що, безсумнівно, позначилося на якості відображення
веб-сторінок. Проте у деяких властивостях каскадних таблиць
і трактуванні коду навіть зараз на різних рушіях зустріча-
ються суттєві розбіжності, які необхідно виправляти вручну.
Рис. 11.65. Браузер Netscape
Рис. 11.66. Браузер Mozilla
Moziila — це внутрішнє ім’я
браузера Netscape Navigator,
що означає Mosaic Killer
(вбивця Mosaic). Назва здалася
співробітникам фірми занадто
зухвалою, пізніше так було
названо нащадка Navigator —
Mozilla Foudation. Браузер же
отримав назву Phoenix на честь
птаха Фенікс, який згоряє, щоб
відродитися з попелу. Згодом цю
назву було змінено на Firebird
(Жар-Птиця), а потім на Firefox
(бо дві попередні назви вже
використовувалися іншими
розробниками).
184 Розділ 3
Кросбраузерність  — це правильна верстка сайта, за
допомогою якої веб-сторінки сайта однаково відобража-
ються в  різних браузерах. Реалізація відбувається за до-
помогою HTML і  CSS, а  також різноманітних хаків, в  ок-
ремих випадках  — JavaScript.
Для правильного відображення сайта одночасно в най-
більш поширених браузерах, причому різноманітних версій
(від найбільш ранніх до найновіших), веб-дизайнер обов’яз-
ково має дбати про кросбраузерність проекту, сайта з першої
секунди роботи над ним.
Найбільш поширений спосіб, який застосовується багатьма
веб-програмістами, — це написання так званих хаків — на-
борів спеціальних селекторів або правил, які розуміє тільки
якийсь певний браузер. Тобто якщо необхідно коректно відо-
бражати сайт, скажімо, у трьох браузерах, то потрібно написа-
ти по хаку для кожного браузера. Є ще один спосіб — просто
використовувати ті елементи при верстці html-коду, які у всіх
необхідних браузерах відображаються однаково.
CSS-хаки  — уривки коду, що розуміються тільки одним
певним браузером. Хаки — найбільш «брудний» спосіб ви-
правлення помилок, робить код не естетичним і не дійсним,
але робочим.
У кожного браузера є свої вбудовані, експериментальні
або нестандартні властивості, і для того щоб вони коректно
працювали, використовують вендорні префікси. У назві неда-
ремно використано слово префікси, бо, як і в граматиці, вони
є приставкою, тільки в даному випадку до властивості CSS.
Вендорні префікси є ще одним рудиментом браузерних
воєн, особливо браузерів WebKit, більш «чистий» і чесний спо-
сіб, ніж використання хаків.
Кожен браузер має власні властивості з вендорним префік-
сом, так, наприклад, елемент border-radius у MozillaFirefox пред-
ставлений властивістю -moz-border-radius, а в Chrome і Safari —
-webkit-border-radius. Такі властивості змінюють поведінку
елемента тільки в певному браузері та ігноруються іншими
платформами.
Таким чином, вендорні префікси — приставки до стилів
css
, мають змістовне навантаження лише для тих браузерів,
до яких належать. Вони дозволяють браузеру сприймати не-
стандартні властивості, а також стилі, призначені для інших
користувальницьких клієнтів.
Можна скористатися плагіном Autoprefixer (https://
autoprefixer.github.io) (рис. 11.67), який аналізує правила CSS,
що існують на сайті, та додає необхідні вендорні префікси.
Як відомо, кожен браузер за замовчуванням має певний
набір базових стилів, які він застосовує до сторінки. У різних
браузерах ці правила трохи відрізняються. Щоб їх усунути
та зробити за замовчуванням відображення сторінки у всіх
браузерах однаковим, використовують спеціальні CSS-файли:
reset.css або normalize.css.
Вендорні префікси
•
•

-webkit  — для Google
Chrome, Safari і  iOs;
•
• -moz  — для Mozilla;
•
• -o  — для Опери;
•
• -ms  — для Internet Explorer.
Американський веб-дизайнер
Ерік Майєр запропоновав CSS
Reset у  травні 2007 року. Майєр
написав цілу низку популярних
у світі веб-розробки книжок,
таких як «Cascading Style Sheets:
The Definitive Guide», «Eric
Meyer on CSS». Має власний
сайт (https://meyerweb.com).
Рис. 11.67. Плагін створення
вендерних префексів
18511.11. Кросбраузерність...
Файл reset.css містить перелік усіх можливих HTML-тегів
і скидає їх значення в нуль, тобто прибирає всі можливі від-
ступи, робить шрифт однаковим у всіх тегах. Таким чином,
всі заголовки й абзаци відображаються простим текстом, од-
ним розміром і без відступів. Як наслідок відбувається ски-
дання стилів за замовчуванням у всіх браузерах. Спочатку на
сторінці користувачу слід підключити файл reset.css, а потім
власний файл зі стилями style.css. У будь-якому браузері вся
розмітка ґрунтуватиметься на тих стилях, які потрібно по-
ставити в style.css. Завантажити файл можна із сайта https://
cssreset.com/.
Рис. 11.68. Головна сторінка сайта CSS-reset
Скидати всі стилі не завжди доречно, саме тому існує ще
один (дещо інший) інструмент — normalize. На відміну від
normalize.css нормалізує стилі (тобто приводить до єдиного ви-
гляду у всіх браузерах). Після його застосування базові сти-
лі відображення заголовків, розмір шрифтів, відступи тощо
уніфікуються і відображаються у всіх браузерах однаково.
Завантажити файл можна із сайта https://necolas.github.io/
normalize.css
Потрібно віддавати перевагу універсальним елемен-
там  — тим, які однаково працюють у  більшості браузе-
рів. Робота лише з  ними зробить код коротким, чистим
і  зрозумілим.
Запитання для перевірки знань
Що таке кросбраузерність?
Які браузери ви знаєте?
Що таке CSS-хаки, який їх недолік?
Що таке вендорні префікси?
Яким чином досягається кросбраузерність
сайта?
Знайдіть в  Інтернеті відомості про «війну
браузерів» та підготуйте невеличку презен-
тацію.
1
2
3
4
5
6
Наразі CSS-файли reset.css
і  normalize.css є  найпопулярні-
шими й  повністю відповідають
HTML5. Найпростішим способом
використання файлів є заванта-
ження їх із сайтів у теку CSS та
підключення на сторінках перед
власним файлом стилів.
Normalize.css — продукт гли-
бокого дослідження відміннос-
тей між початковими стилями
браузера. Дослідження провів
Ніколас Галахер, взявши за мету
зберігати корисні налаштування;
нормалізувати стилі для більшості
HTML-елементів; коригувати по-
милки й  основні невідповідності
браузера; удосконалювати юзабі-
літі непомітними поліпшеннями;
пояснювати код, використовуючи
коментарі та детальну докумен-
тацію. Наразі normalize.css вико-
ристовується в Twitter Bootstrap,
HTML5 Boilerplate, GOV.UK, Rdio,
CSS Tricks і  в  багатьох інших фре-
ймворках, інструментах і сайтах.
Для досягнення правильного
відображення сайта в різних
браузерах слід: використати
вендорні префікси; підключити
СSS-файл reset.css або normalize.
css; намагатися використовувати
елементи, що мають однакове
відображення в  усіх браузерах.
186 Розділ 3
11.12. Графіка для веб-середовища
Перші сайти містили виключно текстовий контент. Сучасні
сайти наповнені різноманітними графічними об’єктами. Які,
на вашу думку, інструменти необхідні для відображення
графіки на сайті?
Фотографії, рисунки, фонові малюнки — все це візуальні
елементи веб-дизайну. Саме від них залежить зовнішній ви-
гляд сайта, а також швидкість його завантаження. Загалом у
веб-дизайні використовують чотири основні формати графіч-
них файлів, які вже знайомі вам з курсу 10 класу.
Формат JPEG (Joint Photographic Experts Group), або
JPG, — це 16-бітовий формат растрових зображень, популяр-
ний для зберігання цифрових фотографій, які мають дріб-
ні деталі та яскраві кольори. Завдяки тому, що зображення
у форматі JPEG швидко завантажуються, його вибирає біль-
шість веб-дизайнерів для своїх сайтів. Проте JPEG не підтри-
мує прозорість, і його не має сенсу використовувати для ло-
готипів і піктограм.
Формат GIF (Graphic Interchange Format) — це формат, об-
межений 256 кольорами, дуже ефективний для зберігання
логотипів, піктограм, таблиць. Проте GIF абсолютно не підхо-
дить для цифрових фотографій із тисячами відтінків. На від-
міну від формату JPG, він підтримує прозорість зображення та
дозволяє створювати різноманітну анімацію (§11.13)
Формат PNG (Portable Network Graphic) — є, можна сказа-
ти, покращеним JPEG, і його зручно використовувати для про-
стого й плоского графічного дизайну. PNG дозволяє працюва-
ти із прозорістю краще, ніж GIF, проте він не підтримує ані-
мацію. Зазвичай цей формат використовують для публікації
невеликих картинок, логотипів, іконок, діаграм, графічних
елементів із прозорістю, фотографій без втрати якості.
Формат SVG (Scalable Vector Graphics) — найбільш поши-
рений векторний формат, попит на який збільшується завдя-
ки адаптивному дизайну у веб-розробці. Геометрична приро-
да файлів SVG дозволяє легко адаптувати векторну графіку до
потрібних параметрів. Розмір файла залежить від його склад-
ності, так, для простих зображень SVG-файл матиме менший
розмір, ніж будь-який растровий аналог (JPEG, PNG). Формат
ідеально підходить для зберігання значків, логотипів, діа-
грам. Серед його переваг — швидкість завантаження, чудове
відображення на highDPI дисплеях, гнучкість і масштабова-
ність тощо.
Зазначимо, що ми говоримо насамперед про статичні зобра-
ження. Їх легко зобразити, використовуючи елемент img.
Розглянемо тег img і його атрибути.
Елемент img є стандартним тегом для додавання графіч-
них елементів на веб-сторінку. Цей тег вставляє зображення
на сторінку в тому місці, де воно має з’явитися.
Михайла Комвуті-Веру
(псевдонім Леа Веру) —
запрошена експертка в W3C
CSS Working Group, фахівчиня,
визнана в галузі фронт-енду.
Авторка книги «Таємниці CSS.
Ідеальні рішення повсякденних
задач», багатьох статей
у  популярному інтернет-журналі
«A List Apart» та відомому блозі
про можливості CSS3.
Все більше веб-дизайнерів
пристають до думки, що
растрові зображення повинні
використовуватися лише для
фотографій. За своєю суттю
будь-який сайт — це інтерфейс,
і всі інтерфейси мають бути
векторними. Саме тому
безумовну популярність набуває
використання векторного формату
SVG. Про особливості SVG та його
використання можна дізнатися
на сторінці http://yoksel.github.io/
about-svg/?full#8
18711.12. Графіка для веб-...
Тег img є непарним тегом.
• Обов’язковим атрибутом є src (англ. source — джерело),
який містить шлях до зображення. Зазвичай зазнача-
ється або URL-адреса, або відносна адреса щодо місця
розташування веб-сторінки, яка містить посилання на
зображення.
З огляду на стандарти розробки сайтів (§11.9) рекоменду-
ється створювати окрему теку з назвою «images», в якій збері-
гаються всі зображення, що містяться на веб-сторінках сайта.
Тоді тег матиме такий вигляд:
img src=images/2.jpg
Тег відображає зображення лише графічних форматів
GIF, JPEG, PNG і SVG. В атрибуті обов’язково має вказува-
тися розширення.
• Іншим атрибутом є alt (alternative), у якому вказується
альтернативний текст — опис зображення для тих ви-
падків, коли користувачі не можуть побачити картинку
(приклад).
Атрибут alt має надати достатньо інформації користувачеві,
щоб він склав уявлення про те, що є на зображенні:
img src=URL alt=альтернативний текст
Нагадаємо, що в стандарті HTML5 теги мають лише семан-
тичний зміст, а функції форматування покладено на каскадні
таблиці стилів.
Розглянемо CSS-властивості зображень.
Розмір зображення задається двома параметрами: width —
ширина зображення; height — висота зображення.
Якщо не задавати розміри зображення, то, по-перше, воно
відобразиться на сторінці в реальному розмірі (рис. 11.69, а),
по-друге — браузер потребуватиме часу на те, щоб дізнати-
ся розміри і завантажити зображення. Лише після цього
він повернеться до завантаження іншого вмісту документа
й, таким чином, виведення решти елементів затримається.
Крім того, при маленькому розмірі зображення й довгому
альтернативному тексті, ще до того як завантажиться графі-
ка, тимчасово відбудеться зсув дизайну сайта. Адже довгий
альтернативний текст буде займати стільки місця, скільки
йому знадобиться.
Якщо зазначити розміри зображення (рис. 11.69, б), то бра-
узер спочатку зарезервує місце під зображення, підготує ма-
кет документа, відобразить текст і лише потім завантажить
зображення.
Слід пам’ятати, що зображення можуть бути квадратни-
ми або прямокутними. Якщо ми використовуватимемо оби-
два параметри, браузер помістить зображення в прямокутник
Тег img використовують
для розміщення фотографій,
логотипів, графічних елементів
інтерфейсу тощо.
Приклад. У  випадку, коли
користувачі мають вади зору,
використовується скрін-рідер,
який читає описи зображень.
188
виділеного розміру, навіть якщо його реальні ширина й висо-
та більші (стисне) або менші (розтягне), як на рис. 11.69.
а б в
Рис. 11.69. Використання атрибутів розміру зображення:
у реальному розмірі (а); вказано ширину, браузер автоматично обчислив висоту (б); вказано однакові ширину
і висоту, браузер відобразив прямокутну картинку як квадратну, тобто стиснув за шириною (в)
Тепер розглянемо приклад.
Приклад.
1 img src=images/02.jpg alt=Розміри зобра-
ження не вказані
2 img src=images/02.jpg alt=Вказана шири-
на зображення width=400
3 img src=images/02.jpg alt=Вказані ши-
рина та висота зображення width=400
height=400
Якщо ми задамо тільки один з атрибутів, то інший буде
обчислюватися автоматично для збереження пропорцій ма-
люнка.
Ширину й висоту зображення можна задавати як у піксе-
лях (при цьому розмір картинки буде постійним незалежно
від роздільності екрану), так і у відсотках — тоді розмір кар-
тинки залежатиме від роздільності екрана користувача.
Параметр border дозволяє створити рамку для зображення.
Причому можна налаштовувати ширину та колір і стиль рам-
ки за допомогою відповідних параметрів:
• border-width;
• border-color;
• border-style.
Додатково можна налаштовувати ці властивості для кожної
сторони:
• top (верхня),
• left (ліва),
• right (права),
• bottom (нижня).
Рис. 11.70. Відступи в CSS
18911.12. Графіка для веб-...
Наприклад, border-left-width, border-bottom-color, border-right-
style.
• padding — внутрішні відступи між зображенням та рам-
кою;
• margin — задає відступи від зображення від усіх чоти-
рьох країв;
Можна задавати відступ від конкретного краю (рис. 11.70).
Наприклад,
• margin-top — відступ від верхньої сторони;
• margin-right — відступ від правого боку;
• margin-bottom — відступ від нижньої сторони;
• margin-left — відступ від лівого боку.
Аналогічно можна задавати внутрішні відступи:
padding-top, padding-left, padding-right, padding-bottom.
Запитання для перевірки знань
Які графічні формати та  якими командами
мови розмітки відображаються?
Що таке скрін-рідер? Для чого він призна-
чений?
Які обов’язкові атрибути має тег для відобра-
ження графічних об’єктів на веб-сторінці?
Які стилі використовують для відображення
графічного об'єкта на веб-сторінці?
Обґрунтуйте використання атрибутів шири-
ни та висоти зображення.
Який вид комп'ютерної графіки краще вико-
ристовувати для фотографій?
1
2
3
Які стилі використовують для відображення4 Які стилі використовують для відображення4 Які стилі використовують для відображення
Обґрунтуйте використання атрибутів шири-5
Який вид комп'ютерної графіки краще вико-6 Який вид комп'ютерної графіки краще вико-6 Який вид комп'ютерної графіки краще вико-
Завдання для самостійного виконання
Створіть сторінки, на яких відображатимуть-
ся графічні об’єкти, аналогічно рис.  11.71.
Результат надішліть на електронну пошту
вчителю..
а б в
Рис. 11.71. До завдання 4
190 Розділ 3
11.13. Анімаційні ефекти
Пригадайте, як часто ви бачите сайти, на яких немає
жодної анімації.
Анімація є одним із трендів у дизайні веб-інтерфейсів,
вона вже давно стала невід’ємною частиною кожного сайта.
Анімаційні ефекти можна застосовувати, як до окремих об'єк-
тів, так і до зображень.
Сучасні можливості анімації дозволяють зробити найрізно-
манітніші слайдери: на повний екран, з 3D-ефектами, адаптив-
ні (які переглядаються з будь-яких мобільних пристроїв) та ін.
Анімація — це і крихітні, ледь помітні індикатори заван-
таження, і цілі сторінки, на яких вам наче показують фільм.
Важко назвати галузь веб-дизайну, де б не використовува-
лись анімаційні ефекти: від декоративних елементів, що про-
сто прикрашають інтерфейс, до ефектів, які активно вплива-
ють на користувача.
Перший варіант (найпростіший), який ми розглянемо, —
анімовані об’єкти. Це окремі зображення і об’єкти, які по-
казуються користувачеві. Наприклад, курсор, що рухається,
плаваюча кнопка «вгору», кнопки заклику до дії, зміна ко-
льору тощо.
Другий варіант — анімовані зображення (наприклад, ре-
кламні банери на сайті). Вони можуть вести на внутрішні
сторінки, блог, перенаправляти відвідувача на інший сайт.
Ще один приклад — слайд-шоу з фотографій.
Анімаційні ефекти можна створювати як виключно засоба-
ми каскадних таблиць стилів, так і за допомогою JavaScript.
CSS-анімація робить можливим анімацію переходів
(transitions) з однієї конфігурації CSS-стилю до іншої. Аніма-
ція складаються з двох компонентів, а саме: зі стилю, котрий
описує CSS-анімацію, та набору ключових кадрів (keyframes),
які задають початковий і кінцевий стани стилю анімації (та-
кож є можливість задання точок проміжного стану).
Розглянемо порядок дій. Створення CSS-анімації.
Крок 1
Починається з  оголошення імені анімації в  блоці @keyframes і  визначення так
званих кроків анімації, або ключових кадрів.
Крок 2
Після оголошення відкривається фігурна дужка (у нашому прикладі на чистому CSS),
у  якій послідовно від 0  до 100  % прописуються властивості для кожного ключового
кадру. Між цими значеннями можна вставляти скільки завгодно проміжних значень,
наприлад 50  %, 75  % або навіть 83  %.
Крок 3 Наступною командою є  використання CSS властивості animation.
Приклад простої анімації — Плавне мерехтіння (зміна
прозорості) наведено на рис. 11.72.
Розглянемо спочатку таблицю властивостей animation, а по-
тім приклад.
CSS-анімація має певні ключові
переваги перед традиційними
скриптовими техніками анімації:
•
•

легка у  використанні для
простих анімацій і  не
потребує знання JavaScript;
•
•

чудово функціонує навіть під
час помірного навантаження
на систему на відміну від
анімації JavaScript.
Рис. 11.72. Код простої анімації
191
Анімація Опис
animation-delay
Змінює час затримки між часом із моменту завантаження елемента та початком
анімаційної послідовності
animation-direction
Визначає зміну напрямку анімації та його чергування залежно від кількості про-
ходів анімації, може задавати повернення в  початковий стан і  починати прохід
заново
animation-duration Визначає тривалість циклу анімації
animation-iteration-
count
Визначає кількість проходів (повторів) анімації; можна також обрати значення
infinite для нескінченного повтору анімації
animation-name
Задає ім’я для анімації @keyframes через at-правило, яке описує анімаційні клю-
чові кадри
animation-play-state Дозволяє призупиняти й  відновлювати анімацію
animation-timing-
function
Задає конфігурацію таймінгу анімації; інакше кажучи, як саме анімація робитиме
прохід через ключові кадри, це можливо завдяки кривим прискорення
animation-fill-mode
Визначає, які значення будуть застосовані для анімації перед початком і  після її
закінчення
Приклад.
Зазвичай розробники не пишуть про всі ці властивості ок-
ремо, а використовують короткий запис такої структури:
animation: (1. animation-name — назва)
(2. animation-duration — тривалість)
(3. animation-timing-function динаміка руху)
(4. animation-delay — пауза перед стартом)
(5. animation-iteration-count — кількість виконань)
(6. animation-direction — напрямок).
У нашому прикладі Звичайна анімація 5 секунд НЕСКІН-
ЧЕННА.
Крім того, існує не менше сотні різноманітних плагінів та
бібліотек. Розглянемо лише декілька з них.
Animate.css — це фундаментальна бібліотека анімацій, су-
місних з усіма браузерами та відповідних для безлічі завдань
(рис. 11.73). Вона містить всі — від класичних підскакувань
до останніх новинок і унікальних ефектів — і здатна задо-
вольнити потреби практично будь-якого проекту.
Anime.js — це вражаючий набір функцій, які дозволяють
пов’язувати безліч анімацій, синхронізувати етапи, малювати
лінії, змінювати форму об’єктів, створювати власні анімації
тощо (рис. 11.74).
CSS-Animate — це простий майданчик для написання робо-
чого коду для будь-якої анімації. Достатньо задати ім’я, клас,
властивості анімації і фрейму, і можна керувати часовою по-
слідовністю і додавати маркери. Одне слово, налаштувати все
Рис. 11.73. Головна сторінка
Animate.css
192 Розділ 3
необхідне для створення стандартної анімації, заснованої на
ключовому кадрі, як зображено на рис. 11.75.
Рис. 11.74. Головна сторінка Anime.js
Рис. 11.75. Головна сторінка CSS-Animate
Запитання для перевірки знань
Наведіть приклади анімації на веб-сторінці.
Якими засобами можна створювати анімації?
Опишіть послідовність команд у  CSS для
створення анімації.
Перегляньте відео на YouTube. Спробуйте
створити просту анімацію за інструкцією.
Дослідіть запропоновані плагіни, створіть
засобами табличного процесора порівняль-
ну таблицю характеристик.
1
2
3
4
5
193
11.14. Мультимедіа на веб-сторінках
Коли ми «в один клік» створюємо власний відеоканал на
YouTube, викладаємо фотозвіт про нашу мандрівку в «живий
журнал», коментуємо нову книгу у  своєму блозі  — інакше
кажучи, робимо звичні нам речі, ми навіть не згадуємо
про технології, які дають змогу робити це так легко
й  невимушено.
Технології опрацювання мультимедіа зараз є одним із най-
перспективніших і найпопулярніших напрямків сучасної ін-
форматики. Мета — створення продукту, який передає інфор-
мацію шляхом упровадження та використання нових техно-
логій, набору зображень, текстів і даних, що супроводжують-
ся звуком, відео, анімацією й іншими візуальними ефектами.
Мультимедіа  — комп’ютеризована технологія, що об’єд-
нує роботу зі всіма джерелами даних, засіб подання різ-
них видів інформації у  цифровому вигляді.
Ознайомимося з тим, які об’єкти належать мультимедіа
(рис. 11.76). Ви вже знаєте, як вставляти графічні й текстові
об’єкти у веб-сторінку. Далі розглянемо, як працювати з ау-
діо- та відеооб’єктами.
Слід зазначити, що всі дані, надіслані мережею, познача-
ються певними назвами, які однозначно вказують їх тип, —
так званими MIME (Multipurpose Internet Mail Extensions, ба-
гатоцільові розширення пошти Інтернету).
Тип MIME привласнює даним та сама програма, що їх
і надсилає, наприклад веб-сервер (приклад). А браузер (тобто
програма, яка їх отримує) визначає за типом MIME цих да-
них, чи підтримувати цей тип даних, і якщо так, що саме
з ними робити.
Звукові файли мають розширення .wav, .au, .aif та ін. Філь-
ми у форматі QuickTime мають розширення .qt або .mov, ві-
део від Microsoft (Microsoft Video for Windows) — .avi (Audio
Video Interface). mpeg — відеофайли (.mpg або .mpeg) у цьому
форматі зазвичай мають великий розмір, забезпечують висо-
ку якість відео, формат mpeg-4 дуже часто використовується
при програванні відеофайлів оnline.
Сучасні браузери працюють з кількома форматами мульти-
медійних файлів із десятків наявних сьогодні. Не слід забу-
вати, що різні браузери підтримують різні формати файлів.
У таблиці наведено типи MIME-форматів мультимедійних
файлів, які підтримуються браузерами:
Формат файлів Тип MIME Браузери, якими підтримується
MPEG4 video/mp4 Chrome, Safari (не підтримується Firefox, Opera)
OGG, OGA, OGV
audio/ogg (для аудіофайлів)
video/ogg (для відеофайлів)
Chrome, Firefox, Opera
Текстові
Об’єкти мультимедіа
Графічні
Аудіо
Відео
Рис 11.76. Класифікація об’єктів
мультимедіа
Приклад.
• Веб-сторінка має тип MIME text
/ html.
• Графічне зображення формату
GIF має тип MIME image / gif.
• Свої типи MIME мають
і  мультимедійні файли.
194 Розділ 3
Формат файлів Тип MIME Браузери, якими підтримується
MP4 video/mp4 Chrome, Safari
WEBM video/webm Chrome, Firefox, Opera
HTML5-відео — стандарт для розміщення мультимедійних
файлів у мережі з оригінальним програмним інтерфейсом без
залучення додаткових модулів.
За допомогою елемента video з’явилася можливість дода-
вати відеовміст на веб-сторінки, а також стилізувати зовніш-
ній вигляд відеоплеєра за допомогою css-стилів.
Для відображення на сторінці відеозапису необхідно ви-
користовувати тег video, у якому використовується тег
source, що має обов’язковий атрибут src, який визначає ад-
ресу відео.
Атрибут Опис
Autoplay Автоматичне відтворення відеофайла відразу після завантаження сторінки
controls
Вказівка браузеру, що потрібно відобразити базові елементи управління відтворенням
(відтворення, пауза, гучність)
height Задання висоти вікна для відображення відеоданих, можливі значення: px або  %
loop Циклічне відтворення відеофайла
muted Вимикання звуку під час відтворення відеозапису
poster
URL-файл зображення, яке відображатиметься під час завантаження відеофайла або доти,
поки користувач не натисне на кнопку PLAY. Якщо атрибут не задано, буде відображатися
перший кадр відеофайла
preload
Атрибут, який відповідає за попереднє завантаження відеоконтенту. Не є  обов’язковим,
деякі браузери ігнорують його
auto-
Браузер завантажує відеофайл повністю, щоб він був доступний, коли почнеться відтво-
рення
metadata
Браузер завантажує першу невелику частину відеофайла, щоб визначити його основні
характеристики
none- Відсутність автоматичного завантаження відеофайла
src Містить абсолютну або відносну URL-адресу відеофайла
width Задає ширину вікна для відображення відеоданих, можливі значення: px або %
Згадаємо, що перед використанням HTML5 елементів необ-
хідно зробити такі дії.
Крок 1 Указати правильний доктайп: !DOCTYPE html
Крок 2
У стилях CSS позначаємо тип елемента HTML video як блочний video
{
display: block;
}
Закінчення таблиці
Відео у форматі AVI на сайті за-
собами HTML5 не відтворюється.
Його слід конвертувати у форма-
ти, які підтримуються браузерами.
Можна скористатися онлайн-кон-
верторами на кшталт VIDEO-
CONVERTER (https://convert-video-
online.com/)
19511.14. Мультимедіа на веб-...
Крок 3
Для досягнення кросбраузерності доцільно перераховувати в source усі
формати, починаючи з більш пріоритетного, та зазначати тип MIME для кожного
відеофайла.
З огляду на стандарти розробки сайтів (для дотримання правил створення
структури сайта), варто в теці сайт створити додаткову теку video (audio), де
розмістити відконвертовані відео- чи аудіофайли.
В елементі video краще використовувати атрибут controls, який відповідає за
відображення елементів керування плеєром.
video controls
source src=video/movie.mp4 type=video/mp4
source src=video/movie.webm type=video/webm
source src=video/movie.ogv type=video/ogg
/video
До появи HTML5-відео стандарту використовувався елемент
embed, який визначає контейнер для зовнішнього застосу-
вання або інтерактивного вмісту (іншими словами, плагіна).
Більшість браузерів протягом довгого часу підтримувало цей
елемент. Проте даний тег не був включений у специфікацію
HTML4, його додали в специфікацію HTML5.
Запитання для перевірки знань
Дайте означення мультимедіа.
Наведіть приклади об’єктів мультимедіа.
Що таке формат MIME?
Поясніть необхідність конвертації відеофайлів.
Які теги для яких форматів використовують?
1
2
3
4
5
Завдання для самостійного виконання
Додайте на першу сторінку завдання § 11.12. два відеофайли
(можна однакові), щоб вони відображалися, як наведено на
рис. 11.77. Результат надішліть учителю.
Підказка: використовуйте контейнер div зі стилем {display:
inline-block;}
Рис. 11.77. Відображення відеофайлів
1
Закінчення таблиці
Наразі SWF — це основний
формат для показу анімованої
векторної графіки у вебі.
196 Розділ 3
11.15. Об’єктна модель документа
Коли користувач уводить в адресний рядок назву сайта,
браузер завантажує HTML-сторінку, після чого створює
об’єктну модель документа — DOM.
DOM є стандартом, запропонованим веб-консорціумом W3C
(World Wide Web Consortium — консорціум Всесвітньої паву-
тини), і регламентує спосіб подання вмісту документа (зокре-
ма веб-сторінки) у вигляді набору об’єктів.
DOM надає структуроване уявлення про документ та умож-
ливлює доступ до цієї структури програмам, які можуть змі-
нювати вміст, стиль і структуру документа. Подання DOM
складається із структурованої групи вузлів і об’єктів, які ма-
ють властивості і методи. Власне, DOM з’єднує веб-сторінку
з мовами опису сценаріїв або мовами програмування.
Веб-сторінка — це документ, який може бути поданий як
у вікні браузера, так і в самому HTML-коді. У будь-якому ви-
падку, це один і той самий документ. DOM надає інший спо-
сіб подання, зберігання й керування цього документа. Він
повністю підтримує об’єктно орієнтоване уявлення веб-сторін-
ки, роблячи можливим її зміну за допомогою мови опису сце-
наріїв на кшталт JavaScript.
DOM подає HTML-теги у вигляді об’єктів із властивостями
і методами. У кожного HTML-тега (об’єкта) на HTML-сторінці,
завдяки DOM, є своя унікальна адреса. Отримуючи доступ за
цією адресою, JavaScript може управляти HTML-тегом.
Відкриваючи HTML-сторінку, браузер ство-
рює на основі її тегів структуру DOM, де ко-
жен HTML-тег постає у вигляді об’єкта зі своєю
унікальною адресою. Після аналізу структу-
рованого документа будується його подання
у вигляді дерева (рис. 11.78, 11.79).
Дерево в моделі DOM складається із мно-
жини зв’язних вузлів (Node) різних типів. Усе,
що є в HTML, знаходиться і в DOM. Навіть ди-
ректива ! DOCTYPE ..., яку ми ставимо на по-
чатку HTML, теж є DOM-вузлом і знаходиться
в дереві DOM безпосередньо перед html.
Рис. 11.78. DOM
Document
Root element:
html
Element:
body
Element:
head
Element:
title
Text:
My title
Element:
a
Attribute:
href
Text:
My link
Element:
h1
Text:
My header
Рис. 11.79. Дерево вузлів DOM
Об’єктна модель документа
(англ. Document Object Model,
DOM)  — це програмний
інтерфейс (API) для HTML.
Усі властивості, методи і  події,
доступні для керування
й  створення нових сторінок,
організовані у  вигляді об’єктів.
19711.15. Об’єктна модель...
DOM не є мовою програмування, але без нього JavaScript не
мав би жодної моделі або уявлення про веб-сторінку, HTML-до-
кумент, його елементи. Спочатку JavaScript і DOM були тісно
пов’язані, але згодом розвинулися в різні сутності. Вміст сто-
рінки зберігається в DOM і може бути доступним і змінюва-
тися з використанням JavaScript.
Таким чином, можна сказати, що DOM  — це веб-техно-
логія, що дозволяє керувати HTML-тегами сторінки через
мову JavaScript.
Зазвичай розрізняють вузли декількох типів:
Вузол Опис
Документ
(Document) 
Корінь дерева, представляє цілий документ, інакше кажучи  — точка входу в  DOM
Фрагмент
документа
(DocumentFragment)
Вузол, який є  коренем піддерева основного документа
Елемент (Element)
Представляє окремий елемент HTML, можна сказати, що це основні будівельні
блоки. Атрибут (Attr) представляє атрибут елемента
Текст (Text) Представляє текстові дані, які містяться в  елементі або атрибуті
Коментарі  Іноді можна включити інформацію, яка не буде показана, проте є доступною з  JS
Стандартом визначаються деякі інші типи вузлів у моделі
документа. Вузли деяких типів можуть мати гілки, інші мо-
жуть бути лише листям дерева.
Створення DOM-елементів:
• document.create Element (tag); — створює новий тег.
• document.create TextNode (text); — створює текстовий вузол.
Додавання DOM-елемента:
• parentElem.appendChild (elem); — додасть елемент у кінець
дочірніх елементів;
• parentElem.insertBefore (elem, nextSibling); — вказуємо, перед
яким із дочірніх елементів додати новий вузол.
Видалення DOM-елементів:
• parentElem.removeChild (elem) — видалить конкретний еле-
мент зі списку дітей батьківського елемента;
• parentElem.replaceChild(newElem, elem) — видалить вказа-
ний елемент і замінить його новим.
Запитання для перевірки знань
Що таке об’єктна модель документа?
Яка організація і  чому запропонувала стан-
дарт DOM?
Як можна представити веб-сторінку?
У чому перевага використання DOM?
Назвіть типи вузлів.
Як саме можна працювати з  веб-докумен-
том завдяки DOM?
1
2
3
4
5
6
DOM  — стандарт, що розвивається
і  поділяється на три рівні. Перший
рівень є  першою версією стандар-
ту і  поки що єдиною закінченою.
Він складається з  двох розділів:
перший є  ядром і  визначає прин-
ципи маніпуляції зі структурою
документа (генерація і  навігація),
а  другий присвячений поданням
у  DOM елементів HTML, що визна-
чаються однойменними тегами.
Другий і  третій рівні описують
модель подій, доповнюють таблиці
стилів, проходи по структурі.
198 Розділ 3
11.16. Веб-програмування та інтерактивні сторінки
Ви вивчаєте основи програмування. Поміркуйте, чи можна
використовувати мови, які ви вивчаєте, для розробки сайтів?
Історія створення JavaScript починається в 1995 році, у са-
мий розпал війни Netskape і Microsoft (див. про «першу вій-
на браузерів» у § 11.11). Це був час, коли анімації, взаємодія
з користувачами та інші види інтерактивності мали стати не-
від’ємною частиною Інтернету майбутнього.
Веб потребував легкої скриптової мови (мови сценаріїв),
спроможної працювати з DOM (§ 11.15), який ще не було стан-
дартизовано. Така мова, як пригадує її розробник Брендан
Айк, була створена за 10 днів. Вона подавалась як скриптова
для виконання невеликих клієнтських завдань у браузері.
Веб-програмування  — галузь веб-розробки і  різновид
дизайну, в  завдання якої входить проектування користу-
вальницьких веб-інтерфейсів для сайтів або веб-додатків.
JavaScript — мова програмування, що дозволяє реалізува-
ти низку складних рішень у веб-документах. Вона допомагає
зробити сторінки сайта більш інтерактивними, обробляє дії ко-
ристувачів сайта. Це об’єктно-орієнтована клієнтська мова, яка
підтримується додатками, що працюють з дизайном сайта.
Разом з HTML і CSS JavaScript — третій важливий блок, на
основі якого будується більшість стандартних веб-інтерфейсів
Функції JavaScript дозволяють:
•
• зберігати дані в змінних
•
•

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

створювати контент, який оновлюється автоматично
•
•

керувати мультимедійними можливостями (працювати
з відео, анімувати зображення)
JavaScript обробляється у веб-додатках на стороні клієнта,
тобто у браузері. Завдяки цьому він може виконуватися на
будь-якій операційній системі, а веб-інтерфейси, що працю-
ють на його основі, є кросплатформними.
Мова JavaScript має широке застосування в таких областях.
AJAX (англ. Asynchronous Java Script And XML — асин-
хронний JavaScript (мова програмування) і XML (мова розміт-
ки веб-сторінок)) — дає змогу створювати набагато зручніші
веб-інтерфейси користувача на тих сторінках сайтів, де необ-
хідна активна взаємодія.
Поки сервер обробляє запит, користувач може перегляда-
ти вміст сайта. Браузер лише довантажує потрібні йому дані.
Рівень використання AJAX значно підвищився після того, як
компанія Google почала активно використовувати його у ство-
ренні своїх сайтів, таких як Gmail, GoogleMaps і GoogleSuggest.
Наведено деякі приклади застосування технології AJAX: відо-
браження контенту, що періодично оновлюється (інтерактивні
Брендан Айк — американський
програміст, автор скриптової
мови JavaScript.
Синтаксис JS навмисно було
розроблено максимально
подібним до Java, який на
той момент дуже активно
використовувався, а динамічну
типізацію запозичено від не
менш популярної мови Perl.
Функції в JavaScript — це
просто ще один тип об'єкта.
Ними можна оперувати,
як і будь-якими іншими
елементами. Цією особливістю
JavaScript зобов’язаний Scheme.
Наслідування реалізовано через
прототипи, як у мові Self.
19911.16. Веб-програмування...
карти); створення якісної анімації й графічних об’єктів у фор-
маті 2D/3D.
Поява формату JSON (англ. JavaScript Object Notation 0151 —
запис об'єктів JavaScript) стала наступним важливим кроком.
JSON був розроблений у 2001 році Дугласом Крокфордом. Цей
легкий формат, який використовується для обміну даними, за-
снований на підмножині мови JavaScript (спосіб створення об'єк-
тів у JavaScript), яка використовувала можливості звичайного
браузера та дозволяла веб-розробникам створювати веб-додатки
з постійним двостороннім зв’язком із веб-сервером.
Найкраще JSON працює разом із AJAX. Джеймс Гаррет за-
пропонував цей формат у 2005 році. Пригадаємо, що суттєвою
перевагою цього формату є можливість довантажувати дані,
не перевантажуючи сторінку (про JSON і AJAX далі, у § 11.21).
Comet — спосіб роботи веб-додатків, коли під час HTTP-з’єд-
нання сервер відправляє дані браузеру без додаткових запитів.
Браузерні ОС — код деяких браузерних операційних систем,
який складається переважно (іноді понад 75 %) зі скриптів.
Закладки — JavaScript має широке застосування в роботі
програми, що розміщуються в закладках браузера.
Браузерні скрипти — програмні модулі, які пишуться на
цій мові і дають дуже багато можливостей (автозаповнення
форм, зміна формату сторінок, приховування небажаного змі-
сту, додавання інтерактивних елементів на сторінках).
Серверні додатки — фрагменти коду, які виконуються на
стороні сервера, де використовується Java 6.
Мобільні додатки — JavaScript може бути корисною в цьому
популярному напрямку.
Віджети — на мові JavaScript пишуться різні міні-програми,
які використовуються в робочому просторі і є дуже зручними.
Прикладне програмне забезпечення — об’єктно-орієнтована
мова JavaScript використовується для створення окремих про-
грам, у тому числі нескладних ігор. Наразі JavaScript є однією
з найбільш популярних клієнтських мов.
Почувши словосполучення «інтерактивна сторінка», багато
хто асоціює його з різними flash-ефектами, що активуються
залежно від місця розташування курсору миші відвідувачів
сайта. Проте цей стереотип дещо неправильний. Для реалі-
зації інтерактивних «властивостей» сайтів застосовуються
спеціальні програмні коди — серверні скрипти. Саме вони
обробляють дані, отримані від відвідувачів сайта, і формують
відповідну html-сторінку.
Для написання серверних скриптів застосовуються серверні
мови веб-програмування, такі як PHP, Perl, ASP.NET. Виконуєть-
ся серверний скрипт на стороні сервера: відвідувач не бачить
вихідного програмного коду виконуваного скрипта, а отримує
тільки готову відповідь.
Створити інтерактивну сторінку — означає створити сто-
рінку, що вміє «спілкуватися» зі своїми відвідувачами. Про-
ста статична сторінка доступна лише для перегляду. Для того
щоб зв’язатися з адміністрацією сайта або зробити замовлення,
Дуглас Крокфорд  —
американський програміст,
творець текстового формату
обміну даними JSON.
Джеймс Гаррет  —
основоположник науки
«інформаційна архітектура»,
засновник компанії Adaptive
Path, яка займається
консультаціями зі створення
сайтів, дружніх до користувачів.
Переваги JavaScript
•
• підтримує всі браузери
•
•

перевіряє реєстраційні
форми на помилки ще до
відправлення на сервер
•
•

створює яскраві й  інтер­
активні сторінки сайта
•
•

може здійснювати різного
типу обчислення
200 Розділ 3
відвідувачеві необхідно зателефонувати за контактним теле-
фонним номером, написати електронного листа на e-mail або
відправити факс.
Інтерактивність сторінки насамперед забезпечується за до-
помогою HTML-форм: реєстраційних, відправки повідомлень,
онлайн-замовлень тощо.
HTML-форми — це елементи управління для збирання ін-
формації від відвідувачів веб-сайта. Такі форми є набором тек-
стових полів, кнопок, списків та інших елементів управління,
які активізуються клацанням миші. Завдання форми полягає
в передаванні даних користувача віддаленому серверу.
Для отримання й опрацювання таких даних використову-
ються мови веб-програмування: PHP або Perl.
У HTML5 розроблено дуже потужний інструментарій для
створення форм будь-якої складності. Далі ми розглядатиме-
мо лише створення найпростіших форм.
Базою для форми є парний тег form — контейнер,
який утримує всі елементи керування форми, — поля,
що групуються залежно від призначення форми. Зага-
лом можна сказати, що кожна форма є набором логічно
пов’язаних елементів.
Серед атрибутів тегу є два обов’язкові: action і method.
Action містить url-адресу, яка визначає, куди буде надісла-
но дані форми.
Method визначає спосіб відправлення даних із форми. Він
може набувати двох значень: get (за замовчуванням надсилає
дані на сервер через адресний рядок, тобто їх видно в адрес-
ному рядку браузера ) та post (приховує запит). Зазвичай
використовується post, оскільки він дозволяє передавати ве-
ликі обсяги даних.
Елемент input є одинарним (непарним) тегом і створює
більшість полів форми. Атрибути елемента відрізняються за-
лежно від типу поля, для створення якого використовуєть-
ся цей елемент, тому першим обов’язковим його атрибутом
є  type.
Розглянемо найчастіше використовувані значення атрибута
type, які наведено в таблиці:
Назва Опис
Text Створює у формі текстові поля, виводячи однорядкове текстове поле для введення тексту
Submit
Створює стандартну кнопку, що активізується клацанням миші, збирає інформацію з  форми
й надсилає серверу для опрацювання
Reset Кнопка для повернення даних форми в початкове значення
Placeholder
Містить текст, який відображається в полі введення до заповнення (найчастіше це підказка),
тобто в текстовому полі відображатиметься текст підказки, який зникне, щойно буде введе-
но певний текст
E-mail
Браузери, що підтримують цей атрибут, очікують, що користувач уведе дані, відповідні син-
таксису адреси електронної пошти
Password
Створює у формі текстові поля, при цьому символи, що вводяться користувачем, заміню-
ються на зірочки (або інші значки, встановлені браузером)
Під інтерактивним слід
розуміти сайт, контент якого
формується «на льоту». Поняття
«інтерактивний» можна віднести
до всіх сайтів, що мають
форми відправки повідомлень,
онлайн-анкети та опитування,
реєстраційні форми, лічильники
відвідувань, форми для онлайн-
замовлень та інші подібні
елементи.
За допомогою css-стилів можна
змінювати розмір, тип і колір
шрифта, інші властивості тексту,
а також додавати межі, колір
тла і зображення тла. Ширина
поля задається властивістю
width.
20111.16. Веб-програмування...
Слід наголосити, що type = email і type = password забез-
печують специфічну семантику для введення, визначаючи,
яку інформацію повинно містити поле.
Другий атрибут, який необхідно зазначати, це name —
ім’я поля, необхідне для правильного опрацювання даних на
сервері. Зазвичай воно повинне бути унікальним, принаймні
в межах форми, для його імені використовується латиниця.
Для оформлення форми незайвим буде робити підписи до
полів. Для цього існує спеціальний тег — парний тег label.
Його завдання — створення логічного зв’язку між текстом
і полем введення. Крім того, якщо клацнути на текст такого
підпису, то курсор переміститься у відповідне поле.
Найпростіший спосіб створити підпис — це просто оберну-
ти текст підпису і тег поля на тег label таким чином:
label
Введіть ім’я input type = text name
= username
/label.
Запитання для перевірки знань
Що таке веб-програмування?
Яка мова програмування є  базовою
у  веб-розробці?
Наведіть приклади використання JavaScript.
Опишіть призначення форм. З яких елементів
складається форма?
Як досягається інтерактивність сторінок?
Розгляньте такі елементи форми: текстові
поля введення (textarea), розкривні списки
(select), кнопки (button), прапорці (input
type = checkbox), перемикачі (input type
= radio). Інформацію про дані елементи
оформте у вигляді презентації.
1
2
3
4
5
6
Завдання для самостійного виконання
Додайте до вашого сайта HTML-сторін-
ку з  назвою form.html і створіть на ній
форму такого вигляду, як наведено на
рис. 11.80.
Рис. 11.80. Приклад форми
Більш детально ознайомитися
з можливостями HTML-форм
можна за посиланням https://
css.in.ua/html/tag/form, https://
developer.mozilla.org/en-US/docs/
Web/HTML/Element/form
202 Розділ 3
11.17. Хостинг сайта
Поміркуйте, як інші користувачі можуть отримати доступ
до створеного вами сайта.
Сайт створюється насамперед для того, щоб його відвіду-
вали користувачі. Для цього якимось чином їм потрібно на-
дати доступ до нього. Звісно, ми можемо розмістити наші
веб-сторінки на власному комп’ютері й використовувати його
як сервер. Проте це має бути потужний комп’ютер з безпе-
решкодним доступом до нього в режимі «нон-стоп» (тобто 24
години на добу і 7 днів на тиждень), а також виділений канал
передавання даних, який надає можливість одночасного звер-
нення до серверу великій кількості осіб. Оскільки описане не
завжди можливо, логічно звернутися до організацій, які спе-
ціалізуються на наданні хостингу.
Веб-хостинг — це послуга, що дозволяє приватним особам,
підприємствам і організаціям розміщувати в Інтернеті веб-
сайт або веб-сторінку. Послуги хостингу надають технології
та підтримку, необхідні для перегляду веб-сайта або веб-сто-
рінки в Інтернеті.
Веб-сайти розміщуються або зберігаються на спеціальних
комп’ютерах, які називають серверами, що обслуговуються
або належать службі веб-хостингу, або передані в оренду сто-
ронніми службами, які експлуатують «ферми серверів» або
Дата-центри.
Хостинг (англ. hosting)  — послуга, що включає надання
дискового простору, підключення до мережі та інших
ресурсів для розміщення фізичної інформації на сервері,
що постійно перебуває в  мережі (наприклад, Інтернету).
Зазвичай до послуг хостингу вже входить надання місця
для поштової кореспонденції, баз даних, DNS-файлового схови-
ща тощо, а також підтримка функціонування відповідних сер-
вісів. Однак вони можуть надаватися і окремо. А власне послу-
га може бути обмежена розміщенням поштової кореспонденції
та відповідного ПЗ (поштовий хостинг), клієнтських файлів
(файловий хостинг), виключно відеофайлів (відеохостинг) або
інших файлів певного типу та за певних умов.
Провайдерами хостингу можуть виступати як компанії,
що спеціалізуються на цих послугах («хостери»), так і великі
провайдери інформаційних послуг, що спеціалізуються на ін-
ших послугах (такі як Google, Microsoft, Yahoo та ін.).
Розрізняють такі види хостингу.
•
• Віртуальний хостинг
•
• Віртуальний виділений сервер
•
• Виділений сервер
•
• Хмарний хостинг
•
• Керований WordPress хостинг
•
• Веб-хостинг
Поняття хостингу включає
широкий спектр послуг
із використанням різного
апаратного та програмного
забезпечення. Зазвичай під цим
поняттям, як мінімум, мають
на увазі послугу розміщення
файлів сайта на сервері, на
якому запущене ПЗ, необхідне
для обробки запитів до цих
файлів (веб-сервер).
Послуги хостингу можуть
надаватися у  пакеті з  іншими
інформаційними послугами,
такими як реєстрація
доменного імені, створення
сайта, надання додаткового ПЗ
тощо.
2 з 5 користувачів Інтернету
відмовляються від повільного
завантаження веб-сайта (під по-
вільним розуміється сайт, який
завантажується більш ніж 3 с).
1,5 млрд доларів щорічно втра-
чаються в економіці США через
повільне завантаження веб-сай-
тів, а затримка на 1 с знижує
коефіцієнт переходів на 7 %.
20311.17. Хостинг сайта...
Розглянемо види хостингу більш детально (рис. 11.81).
Віртуальний хостинг (virtualhosting або sharedhosting) —
користувачеві надається частина місця на диску для розмі-
щення веб-сайтів. При цьому середовище виконання веб-сер-
вісів єдине для багатьох користувачів, а апаратні і програмні
ресурси розподілені між усіма користувачами на одному сер-
вері, де може розміщуватись від 50 до 1000 користувачів.
Перевагами віртуального хостингу є відносно низькі ціни
та набір послуг, що є адекватним для функціонування не-
великого та оптимізованого сайта. Недоліками віртуального
хостингу можна вважати те, що через розподілення ресурсів
серверу між багатьма корис­ту­вачами, надмірне споживання
цих ресурсів одним сайтом може вплинути на роботу інших.
Віртуальний виділений сервер (VPS або VDS) — послуга,
в рамках якої користувачеві надається так званий віртуальний
виділений сервер. Спосіб керування операційною системою зде-
більшого відповідає управлінню фізичним виділеним сервером.
Зокрема, права адміністратора, root-доступ, власні IP-адреси,
порти, правила фільтрування і таблиці маршрутизації.
Виділений сервер (dedicated server) — сервер надається
повністю і використовується для реалізації нестандартних
завдань (сервісів), розміщення «важких» веб-проектів, які не
можуть співіснувати на одному сервері з іншими проектами
і вимагають для себе всі ресурси сервера.
Колокація (collocation) — надання місця в дата-центрі про-
вайдера для обладнання клієнта (зазвичай шляхом монтажу
в стійці) і підключення його до Інтернету. Надає можливість
користуватися інфраструктурою дата-центру (системами охо-
лодження повітря, пожежної безпеки тощо).
Колокацією користуються переважно досвідчені клієнти,
що мають достатньо навичок для підключення і адміністру-
вання власних серверів, або компанії, що самі надають ін-
формаційні послуги.
Хмарний хостинг (cloudhosting або cloudstorage) — послуга
з розміщення файлів користувача, за якої дані зберігаються
на багатьох серверах, що розподілені в мережі (рис. 11.82).
Файли зберігаються у так званій «хмарі», що фізично скла-
дається із серверів, які можуть знаходитися далеко один від
одного, але з точки зору користувача працюють як один по-
тужний віртуальний сервер. Перевагами хмарного хостин-
га є можливість колективної роботи з даними та відсутність
прив’язки до ресурсів одного окремого серверу.
За наведеними даними (рис. 11.83), безперечним лідером
є WEB Services Amazon, скорочено AWS (https://aws.amazon.com/),
із величезним набором інструментів. Платформа була піоне-
ром у цій галузі й завоювала чималий ринок. Можливості
Amazon вже сьогодні не мають собі рівних і продовжують зро-
стати в геометричній прогресії.
Microsoft Azure (https://azure.microsoft.com/en-us/) — близь-
кий конкурент AWS із надзвичайно розвиненою інфраструк-
турою. Система існує з 2010 року й розвивається швидкими
темпами. Наразі Microsoft Azure являє собою багатогранну
а

б
в
Рис. 11.81. Деякі види хостингу:
віртуальний хостинг (а);
віртуальний виділений сервер (б);
виділений сервер (в)
Віртуальний виділений сервер
надає більше можливостей
і  привілеїв, а  часто і  більше
ресурсів, ніж віртуальний
хостинг. Водночас він є  і  більш
дорогим.
Виділений сервер вважається
найбільш ефективним
і  водночас найдорожчим серед
усіх видів хостингу. Управління
ним потребує від користувача
найбільше технічних знань
і  навичок.
Рис. 11.82. Логотипи платформи
хмарного хостингу
204 Розділ 3
складну систему, яка забезпечує підтримку багатьох видів по-
слуг, мовних програм і фреймворків.
Третє місце посідає Google Cloud (https://cloud.google.com/),
який з’явився на ринку хмарного хостінгу пізніше, проте
його провідна роль у галузі штучного інтелекту, машинного
навчання й аналітики даних надає значні переваги.
Рис. 11.83. Рейтинг платформ хмарного хостингу
Реселлер хостинг (resellerhosting) — хостинг з послугою пере-
продажу. Користувачеві надається можливість розподіляти дис-
ковий простір і ресурси свого віртуального хостингу або серве-
ра з метою розміщення на ньому сайтів третіх осіб, що можуть
бути його клієнтами. Пакет послуг такого хостингу зазвичай
включає спеціальне програмне забезпечення для управління
клієнтською базою, ресурсами, що надані клієнтам, тощо.
Зазвичай компанія, що надає безкоштовний хостинг, за-
робляє шляхом показу реклами на сторінках, розміщених на
ньому. Такий хостинг, як правило, повільніший від платно-
го, надає тільки базові послуги, ненадійний. Безкоштовний
хостинг часто надається для того, щоб через якийсь час пере-
вести користувача на платну основу шляхом погіршення умов
користування.
Безкоштовний хостинг використовують приватні особи для
своїх домашніх сторінок на початковому етапі їх розвитку.
Громадські організації можуть використовувати як платний
хостинг, так і безкоштовний. Комерційні організації прак-
тично завжди користуються послугами платного хостингу.
Веб-хостинг є одним із типів інтернет-хостингу, який доз-
воляє окремим особам та організаціям зробити свій сайт до-
ступним через World Wide Web. Сайти компаній, які надають
місце на сервері, що належать або орендовані для викори-
стання клієнтами, а також інтернет-з’єднання, як правило,
розташовані у центрі обробки даних.
•
•

Зараз у світі існує близько
1,94 млрд веб-сайтів. Перша
мільярдна позначка була
досягнута у вересні 2014
року.
•
•

10 найбільших хостингових
компаній становлять 24 %
ринку веб-хостингу, тобто
кожен четвертий веб-сайт
користується послугами цих
компаній.
Який би тип хостингу не
вибрали користувачі, їм
необхідна панель керування
веб-хостингом, яка дозволяє:
•
• керувати файлами;
•
•

здійснювати статистику
трафіку;
•
• адмініструвати бази даних;
•
•

зберігати облікові записи
електронної пошти та
конфігурацію;
•
• керувати протоколом FTP;
•
• здійснювати переадресацію;
•
•

автоматизувати виконання
задач, які повторюються
(наприклад, за допомогою
популярної утиліти Cron);
•
• формувати DNS.
20511.17. Хостинг сайта...
Багато інтернет-провайдерів (ISP) пропонують цю послу-
гу безкоштовно для абонентів. Приватні особи та організації
можуть також отримати веб-сторінку хостингу від альтерна-
тивних постачальників послуг. Особистий веб-сайт хостинг,
як правило, безкоштовний або недорогий. Бізнес веб-сайт
хостинг часто платний.
Насамкінець, WordPress хостинг — це різновид загального
хостінгу, який спеціально створений для розміщення сайтів
на WordPress. При цьому сервер налаштований на найбільш
оптимальний режим роботи саме з CMS WordPress. На сайті ві-
дразу є заздалегідь встановлені плагіни для кешування, без-
пеки тощо. Завдяки оптимізованій конфігурації сайт швидше
завантажується, також існують додаткові функції, пов’язані
з WordPress, такі як додаткові теми WordPress, конструктори
сторінок простих перегортань і спеціальних інструментів роз-
робки. Прикладом такого хостингу є перший спеціалізований
хостинг в Україні (https://wphost.me/).
Рис. 11.84. Приклад найбільш поширеної панелі керування веб-
хостингом cPanel
Запитання для перевірки знань
Що таке хостинг?
Назвіть види хостингів.
Опишіть різницю між віртуальним виділе-
ним сервером; виділеним сервером.
Пригадайте, що таке SSL.
Знайдіть в  Інтернеті відомості про укра-
їнських інтернет-провайдерів. Порівняйте
вартість їх послуг. Результати подайте у  ви-
гляді інфографіки.
Які, на вашу думку, недоліки має безкош-
товний хостинг?
1
2
3
4
5
6
Існує ціла низка веб-панелей
керування хостингом (Parallels
Plesk Panel, DirectAdmin,
Webmin тощо). Деякі хостингові
компанії використовують
один тип панелі керування
хостингом, тоді як інші
дозволяють обирати один із
чотирьох варіантів. Сьогодні
більшість панелей керування
хостингом також дозволяють
одним натисканням кнопки
установлювати популярні
сценарії, такі як WordPress.
cPanel є найпопулярнішою
панеллю керування хостингом
онлайн (рис. 11.84) завдяки її
легкому налаштуванню. cPanel
розроблена на початку 1996
року для серверів Linux. Проте
компанія пропонує панель
управління хостингом під
назвою Enkompass, створену
й для серверів Windows. Крім
того, існує додаткова панель
керування, яка дає змогу
адмініструвати декілька веб-
сайтів і налаштувати кожен
аспект сервера.
206 Розділ 3
11.18. Веб-сервер та бази даних
Що таке протокол HTTP? Опишіть принцип його роботи.
Пригадаємо, що розробка зі сторони браузера називається
front-end, а розробка на стороні сервера — back-end. Наразі
мова піде про розробку функціоналу на стороні сервера. Сер-
верну сторону веб-сайта найчастіше пишуть такими мовами
програмування, як Python, PHP, Java, C#, Ruby, JavaScript.
Щоб завантажити веб-сторінку, браузер відправляє запит
до веб-сервера, який приступає до пошуку запитуваного фай-
ла у своєму власному просторі пам’яті. Знайшовши файл, сер-
вер його зчитує, опрацьовує як йому потрібно й повертає до
браузера. Отже, веб-сервер повинен містити файли веб-сайта,
а саме всі HTML-документи і пов’язані з ними ресурси, вклю-
чаючи зображення, CSS-стилі, JavaScript-файли, шрифти й ві-
део. Веб-сервер забезпечує підтримку HTTP.
Веб-сервер — це програма, яка створює і повертає від-
повіді на запити веб-pecypcів клієнтами.
Порядок дій опрацювання клієнтського запиту:
1)	 синтаксичний аналіз запиту;
2)	 перевірка повноважень;
3)	зв'язування URL у запиті з ресурсом у файловій системі
сервера;
4)	 побудова відповіді;
5)	 повернення відповіді клієнту, який звернувся із запи-
том.
Сервер може генерувати повідомлення-відповідь у різний
спосіб. У найпростішому випадку сервер лише витягує файл,
асоційований із URL, і повертає вміст клієнту. В інших випад-
ках сервер може викликати сценарій, який зв’язується з ін-
шими серверами або БД для побудови повідомлення-відповіді.
Моніторингові компанії приводять порівняльну статистику,
зіставляючи кількість наявних сайтів для різних веб-серверів.
І слід зазначити, що у всіх подібних дослідженнях фігурують
лише три назви: Apache, IIS (сервер компанії Microsoft) і NGINX
(рис. 11.85). Саме на цих трьох китах тримається основна ча-
стина мережевого світу. Безумовним лідером понад 20 років
залишається Apache.
Розглянемо найпопулярніші веб-сервери.
Apache — кросплатформний веб-сервер (рис. 11.86), він
добре працює як на Unix-, так і на Windows-серверах. Сервер
і клієнт взаємодіють за протоколом HTTP, і Apache відповідаль-
ний за безпечне з’єднання між двома машинами. Веб-сервер
працює з різними мовами програмування (PHP, Python, Perl та
ін.) за допомогою спеціального модуля Apache (mod_php, mod_
python, mod_perl та ін.).
Рис. 11.85. Рейтинг популярності
веб-серверів (станом на 2018 рік)
Перший у світі веб-сервер,
робоча станція NeXT Computer
з Ethernet, 1990. На етикетці
написано: «Ця машина
є сервером. НЕ ВИМИКАТИ!!»
20711.18. Веб-сервер та бази ...
Якщо отримано запит із розширенням .php, сторінки обро-
бляються PHP (Hypertext Preprocessor або Personal Home Page).
PHP є мовою сценаріїв, який не залежить від платформи, сце-
нарії вбудовуються в HTML-код. Інтерпретатор РНР виконується
під управлінням веб-сервера, інтерпретатор здійснює синтак-
сичний аналіз і обробку файлів. РНР-файл може містити дані,
відправлені користувачем у HTML-формах.
Nginx — веб-сервер, перший реліз якого відбувся в 2004
році. Наразі він набув значної популярності. Nginx було ство-
рено для розв’язувння так званої «проблеми c10k» — пробле-
ми 10 тисяч з'єднань. Це означає, що веб-сервери, що вико-
ристовують потоки, не можуть обробляти запити користува-
чів більше ніж з 10 000 підключень одночасно.
Веб-сервер Nginx має подійно-орієнтовану архітектуру, тоб-
то він обробляє кожен вхідний запит в єдиному потоці. Він
використовується сайтами з великою кількістю показів, таки-
ми як Netflix, Pinterest і Airbnb.
Apache Tomcat — ще один HTTP-сервер, проте він обробляє
додатки Java замість статичних сайтів. Google Web Server, IBM
HTTP Server (IHS), Oracle HTTP Server (OHS) — всі ці сервери ба-
зуються на Apache і доопрацьовані відповідно компаніями
Google, IBM та Oracle.
Сервер Apache Tomcat, опрацьовуючи HTTP-запит, виконує:
1) перетворення URL-запиту в шлях до файла у файловій
системі сервера;
2) визначення, чи має запит дозвіл на доступ до файла;
3) ідентифікацію;
4) виклик обробника для створення відповіді;
5) передачу відповіді клієнту;
6) створення запису про запит у журналі
NODE.JS — також кросплатформений веб-сервер. Він пра-
цює з одним потоком, і його перевага в тому, що і клієнт-
ська частина, і серверна частина написані однією мовою —
JavaScript. Запити до бази даних можна робити, також вико-
ристовуючи цю мову.
Ознайомимося з цікавими сторінками історії.
У 1994 році співробітник Національного
центру додатків для суперкомп’ютерів в Уні-
верситеті Іллінойсу США (NCSA) Роб Мак-
кул виклав у загальне користування пер-
ший веб-сервер — NCSA HTTP daemon. Сервер
набув поширення, а влітку 1994 року Мак-
кул залишив університет і розробки припи-
нилися.
Невелика група зацікавлених веб-май-
стрів почала спільну роботу над продуктом.
Спілкуючись у дискусійному листі електро-
нною поштою, вони розробляли нововведення
на базі NCSA Server 1.3. Саме вони й заснува-
ли Apache Group, яка розробила першу версію
Apache-сервера. Сталося це у квітні 1995 року,
коли з’явився перший офіційний публічний
реліз Apache 0.6.2. Назва «Apache» була пов'я-
зана з широким використанням розробника-
ми технології «програмних латок» (patches)
і є скороченням від «а patchy server».
У РНР є гнучкі засоби
підтримки роботи з БД.
Замість того щоб вбудовувати
інформацію в HTML-файл, деякі
програми можуть генерувати
весь ресурс. У цьому випадку
URL може розв’язувати різні
завдання, такі як доступ до
інформації в  БД або створення
відповіді, зміст якого залежить
від клієнта, який звертається із
запитом.
Рис. 11.86. Логотипи
найпопулярніших веб-серверів
208 Розділ 3
Робота над сервером не припинялася.
Після численних випробувань 1 грудня
1995 року, з’явилася версія 1.0, стійка і на-
дійна.
Протягом усіх цих років і до сьогодні Apache
залишається абсолютно безкоштовним. За да-
ними NetCraft, Apache на сьогоднішній момент
встановлено на 67% всіх серверів світу.
Ми вже говорили, що у веб-серверів є досить розвинені за-
соби підтримки роботи з БД. Пригадаємо, що бази даних (БД)
поділяються на реляційні та нереляційні.
Щоб комунікувати напряму із реляційною базою, потрібно
освоїти ази мови запитів БД — SQL. Проте з часом виникла
потреба у складних веб-сайтах, що повинні бути швидкими
при великих об’ємах даних, у веб-чатах, можливостей реля-
ційних БД уже бракувало.
Були розроблені так звані нереляційні (NoSQL) БД. Вони
діляться на дві підгрупи: перша група розв’язує питання
швидкодії під час роботи з великими об’ємами даних, а дру-
га група дозволяє будувати ефективні «живі» веб-застосунки
(такі як чати і новини в соцмережах).
Звернемо увагу, що поняття веб-сервера несе два змістових
навантаження. З одного боку, це сервер, на якому розміщено
веб-сайт з усіма файлами, з яких він складається, а з іншо-
го — так називається програма, що опрацьовує запити клієн-
тів, які стосуються веб-ресурсів.
Сервер додатків — сервер, на якому створені додатки, які
використовують вашу БД, веб-сервіс і т. д. Цей сервер додат-
ків буде розміщувати бізнес-рівень (загорнутий веб-службами),
заплановані завдання, служби Windows та ін.
Сервер баз даних — матиме одну або кілька БД, таких як
Oracle, SqlServer, MySql та ін.
Програмне забезпечення веб-сервера, додатків і БД може
працювати на одному фізичному сервері або розподілятися
по кількох фізичних машинах. На більшості великих сайтів
є кілька машин; більшість «споживчих» хостингових пакетів
запускаються в одному вікні.
Логічно поділ виглядає таким чином. Веб-сервер обробляє
запити HTTP (S) і передає їх «обробникам». У них є вбудовані
обробники для запитів файлів — HTML-сторінки, зображення,
CSS, JavaScript і т. д.
Якщо необхідно обробити динамічну сторінку, сервер пере-
дає її спеціальній програмі, яка і формує остаточну сторінку.
Така програма називається сервером додатків. Вона виконує
читання коду, що знаходиться на сторінці, формує остаточ-
ну сторінку відповідно до прочитаних кодів, а потім вилучає
його зі сторінки.
У результаті всіх цих операцій виходить статична сторін-
ка, яка передається веб-сервером, який, у свою чергу, від-
правляє її клієнтському браузеру. Всі сторінки, які отримує
браузер, містять тільки HTML-код.
До найпопулярніших
реляційних БД належать
MySQL, PostgreSQL, Oracle.
До найпопулярніших
нереляційних БД належать
MongoDB, CouchDB, HBase,
Redis, Cassandra.
Існує багато серверів-
додатків. Причому деякі з них
орієнтуються на певні категорії
веб-сайтів, такі як блоги, вікі-
сторінки або інтернет-магазини;
деякі, наприклад системи
управління контентом, є більш
універсальними.
20911.18. Веб-сервер та бази ...
Сервер додатків надає можливість використовувати БД
(приклад).
Програмна інструкція, призначена для отримання даних
із БД, називається запитом до бази даних. Запит складаєть-
ся з критеріїв пошуку, записаних за допомогою мови запитів
SQL. Текст SQL-запиту розташовується в сценаріях сторінок на
стороні сервера або в тегах.
Сервер додатків не може безпосередньо отримати дані
з  БД, оскільки вони використовують специфічні формати
зберігання даних. Для підключення до БД сервер додат-
ків використовує посередника — драйвер бази даних.
Драйвер бази даних являє собою програмний модуль, за
допомогою якого встановлюється взаємодія між сервером до-
датків і БД.
Після того як драйвер установить з’єднання виконується
запит до бази даних, у результаті чого формується набір за-
писів, який повертається серверу додатків, і він використовує
отримані дані для формування сторінки.
Для різних завдань використовуються різні зв’язки веб-сер-
вера (nginx або Apache) і БД, такі як php_fpm або spawn-fcgi.
Проте зазвичай обирається PHP + MySQL.
Розглянемо роботу такої зв’язки на прикладі серверної
підтримки розробленої нами форми реєстрації (див. завдання
для самостійного виконання § 11.16).
Приклад.
Відбувається надсилання форми з веб-сто-
рінки у вигляді сценарію JavaScript. JS AJAX
отримує дані й відправляє їх на HTML-сер-
вер, сервер отримує ці дані, а також певний
файл PHP. Файл PHP установлює з’єднання з
БД і виконує потрібні дії. Після виконання
операції БД повертає результат. PHP відправляє
отримані дані назад до AJAX, де залежно від
результату остаточно з’ясовуються наступні дії
(якщо вже існує такий логін або набраний па-
роль не відповідає заявленому, то повертається
повідомлення про невідповідність і прохання
повторити спробу, при підтвердженні обліко-
вого запису відкривається сторінка профілю).
Програмне забезпечення БД може працювати на тому само-
му фізичному комп’ютері, що й веб-сервер. Але зазвичай це
перше, що потрібно для розміщення на окремому фізичному
обладнанні, коли сайт повинен масштабуватися.
Запитання для перевірки знань
Назвіть завдання серверної сторони.
Чим відрізняються back-end і  front-end?
Які мови програмування використовують
back-end-програмісти?
Наведіть приклади використання серверів.
Опишіть послідовність роботи серверів.
Пригадайте розвиток реляційних баз даних
або знайдіть відомості в  Інтернеті.
1
2
3
4
5
6
Приклад. Динамічна сторін-
ка може містити програмні
інструкції для сервера додат-
ків, виконуючи які, серверу
необхідно отримати певні дані
з БД і розмістити їх у HTML-
код сторінки.
210 Розділ 3
11.19. Взаємодія «клієнт–сервер»
Пригадайте, що таке клієнт та сервер у мережі. Які функції
виконують сервери?
Клієнт і сервер взаємодіють один з одним у мережі Інтер-
нет або в будь-якій іншій комп’ютерній мережі за допомогою
різних мережних протоколів, наприклад IP, HTTP, FTP та ін.
Протоколів, як ви знаєте, досить багато, і кожен з них дозво-
ляє надавати певну послугу (приклад 1).
Повідомлення, які надсилають клієнти, отримали назву
HTTP-запити. Вони містять певні методи, які вказують сер-
веру, як саме обробляти повідомлення. Повідомлення, які
надсилає сервер, отримали назву HTTP-відповіді. Крім ко-
рисної інформації вони містять спеціальні коди стану, що
дозволяють браузеру дізнатись, як сервер зрозумів його за-
пит. Взаємодія клієнтів та серверів знайшла відображення
на рис. 11.87.
Веб-сервер може обмежувати доступ користувачів до пев-
них ресурсів. Керування доступом потребує поєднання автен-
тифікації та авторизації.
Автентифікація (перевірка справжності) визначає користу-
вача, який ініціював запит, а під час перевірки повноважень
з’ясовується, чи може користувач мати доступ до певного ре-
сурсу. Більшість систем клієнт-сервер автентифікують корис-
тувача, запитуючи в нього ім’я і пароль. У цьому випадку
на сервері розташовано файл, який містить імена і паролі
всіх зареєстрованих користувачів. Причому, з метою захисту
інформації паролі можуть зберігатися в зашифрованому ви-
гляді.
Процес автентифікації дає можливість серверу ідентифіку-
вати користувача, який звернувся з HTTP-запитом. Для керу-
вання доступом до веб-ресурсів сервер повинен реалізувати
стратегію авторизації (перевірки повноважень). Йому необхід-
но мати ефективний спосіб визначення, які автентифіковані
користувачі можуть мати доступ до певного ресурсу.
Подібні стратегії поведінки є складовою частиною нала-
штування сервера й зазвичай мають вигляд списків керуван-
ня доступом із переліком користувачів, яким дозволено або
заборонено доступ до ресурсу. Як саме створюються списки
керування доступом і як зберігаються імена користувачів
і паролі, залежить від програмного забезпечення сервера. Ре-
сурси, що вимагають автентифікації, можуть бути розміщені
в окремому каталозі з .php. Воно прийнято для сторінок, які
обробляються PHP (Hypertext Preprocessor).
Замість того щоб вбудовувати інформацію в HTML-файл,
деякі програми можуть генерувати весь ресурс. У цьому ви-
падку URL у HTTP-запиті відповідає програмі, а не документу.
Програма може реалізувати різні завдання, такі як доступ до
інформації в базах даних або створення відповіді, зміст якого
залежить від клієнта, що звертається із запитом.
Приклад 1. За допомогою
протоколу HTTP браузер
надсилає спеціальне HTTP-
повідомлення, в якому
зазначається, яку інформацію
та в якому вигляді він
має отримати від сервера.
Отримавши його, сервер у
відповідь надсилає подібне за
структурою повідомлення (або
кілька), у якому міститься
вся потрібна інформація,
зазвичай це HTML-документ.
Рис. 11.87. Взаємодія «клієнт–
сервер»
21111.19. Взаємодія «клієнт–...
Веб-браузери взаємодіють із веб-серверами за допомогою
протоколу передавання гіпертексту (HTTP). Коли ви клацаєте
посилання на сторінці, заповнюєте форму або запускаєте по-
шук, браузер надсилає на сервер HTTP-запит.
HTTP-запит включає:
•
• шлях, який визначає цільові сервер і ресурс (наприклад,
файл, певна точка даних на сервері, що запускається сер-
віс, та ін.);
•
• метод, який визначає необхідну дію (наприклад, отримати
файл, зберегти або відновити деякі дані тощо):
•	методи передавання даних — GET (отримати певний ре-
сурс, наприклад, HTML-файл, що містить інформацію про
товар або список товарів); POST (створити новий ресурс,
наприклад, нову статтю на Вікіпедії, додати новий кон-
такт в базу даних);
•	HEAD — отримати метадані про певний ресурс без от-
римання змісту, як робить GET. Можна використовувати
запит HEAD, щоб дізнатися, коли в останній раз ресурс
оновлювався, і тільки потім використовувати (більш «ви-
тратний») запит GET, щоб завантажити ресурс, який було
змінено;
•	PUT — оновити існуючий ресурс (або створити новий,
якщо такого не існує);
•	DELETE — вилучити вказаний ресурс.
Раніше вже наголошувалося на відмінностях роботи зі
статичним і динамічним сайтами. Розглянемо взаємодію клі-
єнт — сервер на прикладі статичного сайта (рис. 11.88)
Файли
Веб-
сервер
Браузер
HTML
CSS
JavaScript
Інші файли
HTТР-запит
HTТР-відповідь
Сторона клієнтаСторона сервера
Рис. 11.88. Взаємодія «клієнт–сервер» на прикладі статичного сайта
Коли користувач хоче перейти на сторінку, браузер відправ-
ляє HTTP-запит GET із зазначенням URL-адреси його сторінки
HTML. Сервер витягає запитуваний документ зі своєї файлової
системи і повертає відповідь HTTP, що містить документ, і код
стану HTTP «200 OK» (із зазначенням успіху). Сервер може по-
вернути інший код стану, наприклад «404 Not Found», якщо
файл відсутній на сервері, або «301 Moved Permanently», якщо
файл існує, але був перенаправлений в інше місце.
Серверу для статичного сайта буде потрібно лише обробля-
ти запити GET, тому що сервер не зберігає жодних даних, які
модифікуються. Він також не змінює свої відповіді на осно-
ві даних HTTP-запиту (наприклад, параметрів URL-адреси або
файлів cookie).
PHP — мова сценаріїв, яка
не залежить від платформи,
сценарії вбудовуються в  HTML-
код. Інтерпретатор РНР
виконується під керуванням
веб-сервера, інтерпретатор
здійснює синтаксичний аналіз
і обробку файлів. РНР-файл
може містити дані, відправлені
користувачем у HTML-формах.
У  РНР є гнучкі засоби
підтримки роботи з базами
даних.
Користувач вводить ім’я
і  пароль на початку сеансу
роботи із сервером. Сервер
перевіряє ім’я й пароль
і  зберігає інформацію про
користувача на даний сеанс.
У певний момент користувач
або сервер завершує сеанс.
Для подальшого доступу
користувачеві необхідно
ініціювати новий сеанс роботи
із сервером, що вимагає
повторного введення імені та
пароля.
212 Розділ 3
Роботу з динамічним сайтом проілюстровано на рис. 3.19.4.
Файли
База
даних
Веб-
сервер
Веб-
додатки
Браузер
HTML
CSS
JavaScript
HTML
HTML-
шаблони
HTТР-запит
HTТР-відповідь
Сторона сервера Сторона клієнта
Статичні ресурси
CSS
JavaScript
Зображення
Інші файли
Дані на запит
шифрування URL
Дані GET/POST
Кукі
Дані
Рис. 11.89. Взаємодія «клієнт — сервер» на прикладі динамічного сайта Рис. 11.90. До завдання 5
Розглянемо порядок дій для роботи з динамічним сайтом.
1. Веб-браузер створює HTTP-запит GET на
сервер з використанням базової URL-ад-
реси ресурсу. Запит GET використовуєть-
ся, тому що запит — це лише вибірка
даних (не зміна даних).
2. Веб-сервер виявляє, що запит є «дина-
мічним» і пересилає його у веб-додаток
для обробки (веб-сервер визначає, як об-
робляти різні URL-адреси на основі пра-
вил зіставлення шаблонів, визначених
у його конфігурації).
3. Веб-додаток визначає мету запиту, отри-
мує необхідну інформацію з бази даних
(використовуючи додаткові «внутрішні»
параметри).
4. Веб-додаток динамічно створює HTML-сто-
рінку, поміщаючи дані (з бази даних)
у наповнювачі всередині HTML-шаблону.
5. Веб-додаток повертає згенерований HTML
у веб-браузер (через веб-сервер) разом з ко-
дом стану HTTP 200 («успіх»). Якщо щось
перешкоджає поверненню HTML, він повер-
не інший код, наприклад «404», щоб вка-
зати, що такого посилання не існує.
6. Веб-браузер починає обробляти поверну-
тий HTML, відправивши окремі запити,
щоб отримати будь-які інші файли CSS
або JavaScript, на які він посилається.
7. Веб-сервер завантажує файли з файлової
системи й повертає безпосередньо в браузер.
Операція з оновлення запису в базі даних оброблятиметь-
ся аналогічно. За винятком того, що, як будь-яке оновлення,
HTTP-запит із браузера повинен бути закодований як запит POST.
Запитання для перевірки знань
Що таке автентифікація та авторизація?
У  чому різниця?
Як називають повідомлення, сформовані
клієнтом; сервером?
У чому різниця між методами Get і Post?
Опишіть механізм автентифікації користува-
ча на сервері.
Поясніть повідомлення, наведене на
рис.  11.90. Коли воно може з’явитися?
Які протоколи (крім HTTP) використовують-
ся під час взаємодії «клієнт  — сервер»?
1
2
3
4
5
6
21311.20. Валідація сайта...
11.20. Валідація сайта та збереження даних форм
Нагадаємо, що різні браузери мають різні алгоритми обробки
тегів мови розмітки гіпертексту та селекторів каскадних
таблиць стилів, тому завжди існує потреба в  перевірці
правильності написання коду.
Валідація сайта — перевірка синтаксичних помилок,
вкладеності тегів та інші критеріі.
Зазвичай валідатори — це сервіси для перевірки сайтів на
наявність помилок у структурі документа. Вони перевіряють
HTML-код на відповідність певному стандарту, який зазначено
на самому початку будь-якої HTML-сторінки першим рядком.
Валідація сайта дозволяє стежити за правильним відобра-
женням сайта в різних браузерах (приклад 1).
Крім того, пошукові системи віддають перевагу сайтам із
валідним HTML-кодом, роботи пошукових систем розпізна-
ють html-код за тими самими параметрами, що й браузери
(приклад 2).
Якщо ви отримаєте повідомлення про те, що у  вашому
коді трапляються помилки чи навіть критичні попере-
дження, то потрібно ще раз ретельно оглянути код, пе-
ревірити валідацію і  провести сканування заново. Такий
цикл слід повторювати, доки перевірка не дасть пози-
тивний результат.
Потрібно також звернути увагу на кросбраузерність сайта.
В ідеалі сайт повинен однаково відображатися у всіх браузе-
рах. У нашому випадку цю опцію гарантує відповідність нор-
мам W3C.
Більша частина проблем із кросбраузерністю виникає саме
через помилки відображення оформлення елементів, заданих
за допомогою CSS, оскільки для розв’язання проблеми корект-
ного виведення дизайну сайта в усіх браузерах доводиться за-
стосовувати не зовсім «валідні» (на думку W3C) способи:
• коментарі (коли в коментарях (найчастіше для IE) пропи-
сується альтернативне значення властивості, що невиди-
ме для інших браузерів);
• хаки (маються на увазі спеціальні властивості CSS, що
дозволяють розв’язати проблему некоректного відобра-
ження в одному з браузерів);
• за допомогою JavaScript (зміна стильової властивості
елемента через об’єктну модель документа).
Застосування цих способів (особливо хаків) може негатив-
но впливати на валідність усього сайта, разом із тим дозво-
ляє повністю розв’язувати проблему кросбраузерності.
Приклад 1. Якщо не закрити
тег або припуститися помилки
в коді, у подальшому одна і та
сама сторінка може відобража-
тися в різних браузерах по-різ-
ному.
Приклад 2. Якщо у вашо-
му коді містяться помилки,
наприклад незакриті теги,
биті посилання або поламана
структура, все це може впли-
нути на індексацію сайта по-
шуковими роботами. Як на-
слідок, грубі помилки в коді
можуть знизити позиції ре-
сурсу у видачі. Це означає,
що в подальшому валідація
сайта зіграє дуже важливу
роль у просуванні сайта в SEO
і SMM. Більш того, від валі-
дації синтаксису навіть зале-
жить коректність відображен-
ня всіх елементів сайта.
214 Розділ 3
Ознайомимося з найбільш поширеними помилками, яких
припускаються в коді, на прикладах.
• Тег не закритий — переважна більшість
тегів у html є парними, тобто склада-
ються з відкриваючого та закриваючого
тегів. Часто в ході верстання чи напи-
сання скрипту забувають дописувати за-
криває тег. А це може призвести до не-
правильного відображення всього сайта.
• Порушення вкладеності елементів — ця
проблема виникає в разі блокового вер-
стання, коли не дотримуються ієрархіч-
ної вкладеності всіх блоків div. Або
інших парних елементів, якщо частина
тега відкрита в одному шарі, а закрива-
ється в іншому. При цьому може стати-
ся порушення структури дизайну сайта.
Наприклад:
Неправильно Правильно
pbLorem/p/b pbLorem/b/p
• Використання атрибута style — у сучас-
ному сайтобудуванні загальноприйнятою
нормою є використання для оформлення
елементів дизайну каскадних таблиць
стилів (CSS). Застарілий атрибут style
вживається вкрай рідко: в разі його ви-
користання обсяги html коду можуть
збільшуватися в рази. Це не лише спо-
вільнює швидкість завантаження всьо-
го сайта, а й ускладнює його розуміння
і подальше редагування.
• Використання вкладеного CSS — впро-
вадження каскадних таблиць стилів
всередину html. Це також збільшує об-
сяг коду й ускладнює його налагоджен-
ня. Найкраще стильові описи зберігати
в окремих файлах.
• Missing DOCTYPE. Валідатор найчасті-
ше видає це повідомлення, якщо вміст
елемента !DOCTYPE і сам елемент за-
писані в нижньому регістрі. Необхідно
пам’ятати, що даний елемент є залеж-
ним від регістру тегом.
Наприклад:
Неправильно Правильно
!doctypehtmlpublic-//
w3c//dtdxhtml 1.0 strict//
en
http://www.w3.org/tr/
xhtml1/dtd/xhtml1-strict.
dtd
!DOCTYPE html
PUBLIC-//W3C//DTD
XHTML 1.0 Strict//EN
http://www.w3.org/
TR/xhtml1/DTD/xhtml1-
strict.dtd
• Thereisnosuchelement — такого елемента
не існує.
Така помилка виникає, якщо один або де-
кілька тегів записано у верхньому регістрі.
Наприклад:
Неправильно Правильно
PBlorem/P/B pbLorem/b/p
• requiredattribute alt notspecified-
обов’язковий атрибут «alt» не вказано.
Як ми вже зазначали, з багатьох причин
бажано використовувати атрибут alt.
Наприклад:
Неправильно Правильно
img src=images/girl.
png
img src=images/girl.
png alt=lorem
• Missing « « — відсутні лапки.
Така помилка виникає, якщо значення
одного або декількох атрибутів записані не
в лапках.
Наприклад:
Неправильно Правильно
img src=images/
girl.png width=189
height=255 alt=lorem
img src=images/
girl.png width=189
height=255
alt=lorem/
Найпоширеніший спосіб перевірити вихідний код сайта на
валідацію — це онлайн-сервіси, оскільки вони постійно сте-
жать за нововведеннями та модифікують свої алгоритми.
21511.20. Валідація сайта...
Посилання на онлайн-сервіси (рис. 11.91) ви можете знайти
на головній сторінці офіційного сайта www.w3.org.
Рис. 11.91. Посилання для перевірки на сайті консорціуму W3C
Форми також мають правила валідації. Наприклад, мож-
на задати обов’язкові для заповнення поля форми або вка-
зати, що в певні поля потрібно вводити дані тільки певного
типу (наприклад, тільки букви або тільки цифри; введення
email-адреси; введення url-адреси тощо).
Правила валідації забезпечують правильність заповнення
форми відвідувачем сайта. Після того як користувач сайта
заповнив форму і відправив дані, вони потрапляють у спеці-
альний скрипт на сервері — обробник форми. У ньому мо-
жуть бути збережені в базі даних або відправлені електро-
нною поштою.
Якщо користувач заповнив веб-форму правильно, без по-
милок, то після відправки даних на сервер відображається
сторінка успішного заповнення форми або відбувається пере-
адресація на заздалегідь задану сторінку.
Якщо ж користувач заповнює форму для опитування або
голосування, то після успішного заповнення форми йому ві-
дразу ж відображається сторінка із загальними результатами
голосування.
Запитання для перевірки знань
Що таке валідація сайта?
Як валідність коду впливає на індексацію
сайта?
Наведіть приклади найбільш поширених
помилок.
Яка організація встановлює правила валід-
ності коду?
Наведіть приклади онлайн-сервісів перевір-
ки на валідність.
1
2
3
4
5
Завдання для самостійного виконання
Перевірте за допомогою будь-якого
онлайн-сервісу сторінки, створені
на попередніх уроках, на валідність.
Проаналізуйте отриманий результат.
1 на попередніх уроках, на валідність.
2
216
11.21. Прикладний програмний інтерфейс
Ви зареєструвались на сайті Прометеус? Якщо так, то
помітили, що авторизуватись можна за допомогою вашого
облікового запису у Facebook та Google?
Це стало можливим завдяки використанню спеціального
прикладного програмного інтерфейсу — API.
Прикладний програмний інтерфейс (англ. Application
Programming Interface, скорочено API)  — це сукупність
засобів і правил, які вможливлюють взаємодію між окре-
мими складниками програмного забезпечення або між
програмним і  апаратним забезпеченням.
У галузі веб-розробки поняття прикладного програмного
інтерфейсу (API) охоплює низку засобів програмного коду (ме-
тоди, події та посилання). Розробник може використовувати
їх у власних застосунках задля взаємодії з програмним або
апаратним оточенням — із додатками веб-переглядача, іншим
програмним чи апаратним забезпеченням комп’ютера користу-
вача, або навіть сторонніми сайтами чи службами.
API — це готові модулі коду, які допомагають програмісту
в реалізації деяких складних завдань. Зазвичай такі «заго-
товки» діляться на браузерні і API третіх розробників.
Ще більше можливостей надає функціонал, доступний як
надбудова щодо основних складових JavaScript. Ідеться про
API, що істотно розширює набір інструментів розробника.
Коли ми завантажуємо сторінку в браузері, то спочатку об-
робляються HTML і CSS і лише після цього скрипти.
API надає безліч методів, які можуть використовувати роз-
робники, а також опис того, що вони працюють. Розробнику
необов’язково знати, як працює система всередині, він просто
може використовувати певний функціонал у своєму додатку.
API-інтерфейси дозволяють розробникам заощадити час,
скориставшись вже готовим функціоналом. Це допомагає
зменшити кількість виробленого коду, створювати деяку
послідовність для різних додатків на тій самій платформі.
API-інтерфейси можуть контролювати доступ до апаратних
і програмних ресурсів.
Програміст може скористатися API для отримання доступу
до функціоналу сторонньої програми. API робить можливим
роботу ресурсів, які використовують потенціал і потужність
іншого сайта або програми.
Як відомо, на онлайн-сервісах або платформах можна уві-
йти через власні облікові записи в соціальних мережах. Саме
це і є використанням API, коли сервіси або додатки використо-
вують бази даних соціальних мереж. Сервіс може отримувати
інформацію про користувача і використовувати її у своїх цілях
(приклади 1–3).
Використання API скорочує необхідність створюва-
ти самостійно складні програми. Замість цього можна
До браузерних API-інтерфейсів
належать: API-інтерфейс DOM
(Document Object Model),
модулі геолокації, API Canvas
і  WebGL, Аудіо та відео API.
До сторонніх інтерфейсів
належать, наприклад, API
соціальних мереж Twitter
і  Facebook.
Приклад 1. Amazon пропо-
нує користувачеві книжки,
засновані на виборі книжок
його друзів у Facebook.
21711.21. Прикладний ...
використовувати готові частини існуючих ресурсів, у яких
є доступ до потрібної інформації і даних.
Щоразу, коли користувач відвідує якусь сторінку в мере-
жі, він взаємодіє з API віддаленого сервера. API — це складова
частина сервера, яка отримує запити і відправляє відповіді.
Більшість сучасних сайтів використовують принаймні
кілька сторонніх API. Багато задач вже мають готові рішен-
ня, пропоновані сторонніми розробниками, будь то бібліотека
чи послуга. Найчастіше простіше і надійніше вдатися саме
до вже готового рішення.
Як вже було сказано, API — це насамперед інтерфейс, який
дозволяє розробникам використовувати готові блоки для по-
будови програми. У випадку з розробкою мобільних додатків
у ролі API може виступати бібліотека для роботи з розумним
будинком — всі нюанси реалізовані в бібліотеці, і ви лише
звертаєтеся до цього API у своєму коді.
У разі веб-додатків API може передавати інформацію у від-
мінному від стандартного HTML форматі, завдяки чому їм
зручно користуватися під час написання власних програм.
Сторонні загальнодоступні API найчастіше віддають дані
в одному з двох форматів: XML або JSON.
XML (англ. Extensible Markup Language — розширювана
мова розмітки) — запропонований консорціумом World Wide
Web Consortium (W3C) стандарт побудови мов розмітки ієрар-
хічно структурованих даних для обміну між різними засто-
сунками. XML-документ складається із текстових знаків і при-
датний до читання людиною.
JSON (англ. JavaScript Object Notation) — запис об’єктів
JavaScript, текстовий формат обміну даними між комп’ютера-
ми. Він базується на тексті й може бути прочитаний люди-
ною. Формат дозволяє описувати об’єкти та інші структури
даних. Цей формат головним чином використовується для пе-
редавання структурованої інформації через мережу.
Формат JSON знайшов своє головне призначення у напи-
санні веб-програм, а саме при використанні технології AJAX.
JSON досить лаконічний і простий у читанні, дозволяє
складні структури в атрибутах, займає менше місця і прямо
інтерпретується за допомогою JavaScript в об’єкти на відміну
від XML. Сервіси, що надають доступ до даних у XML-форматі,
поступово від нього відмовляються.
JSON, що використовується в AJAX, виступає як заміна XML
(використовується в AJAX) під час асинхронного передавання
структурованої інформації між клієнтом та сервером (приклад 4).
Приклад 4. Візьмемо API Twitter. Інтерфейс
цього сервісу може вам видати інформацію про
твіти користувача, його читачів і тих, хто його
читає, і т. д. Це лише частина можливостей,
які будь-хто може втілити, використовуючи API
стороннього сервісу або створюючи власний.
На основі API будуються такі речі, як кар-
ти 2GIS, всілякі мобільні і десктопні клієнти
для Twitter.
Всі їх функції стали можливими саме зав-
дяки тому, що відповідні сервіси мають якіс-
ні і детально задокументовані API.
Приклад 2. Сервіс IFFFT до-
зволяє пов’язувати акаунти ко-
ристувача в різних онлайн-сер-
вісах і програмах так, що дія
в одній програмі викликає
дію в іншій програмі.
Приклад 3. Відео, що сподо-
балися вам у YouTube, можуть
автоматично з’являтися на ва-
шому сайті або у ваших соці-
альних мережах. Це можливо
саме завдяки API — коли одна
програма використовує дані
та інформацію іншої програ-
ми. До речі, вбудовування
YouTube-відео на свій сайт
також можливо завдяки API-
сервісу YouTube.
218 Розділ 3
API бувають публічні й приватні.
Публічні API випускаються такими компаніями, як Slack
і Shopify, щоб розробники використовували на своїх платфор-
мах. Компанії діляться набором вступних параметрів, а роз-
робники використовують, щоб досягти певного результату. Це
досить легко, оскільки документація перебуває у вільному до-
ступі.
Приватні API використовуються всередині компанії. Якщо
в компанії багато програмних продуктів, то приватне API ви-
користовується, щоб програми взаємодіяли між собою. Ком-
поненти API можуть змінюватися за бажанням компанії, тоді
як зміни в публічному API може викликати протест.
Фреймворк (framework — конструкція, структура) — про-
грамне середовище спеціального призначення, своєрідний
каркас, який використовується для того, щоб істотно полег-
шити процес об’єднання певних компонентів під час створен-
ня програм.
Фреймворк — це основа, що дозволяє додавати компонен-
ти залежно від потреб; база, на якій можна сформувати про-
граму будь-якого призначення досить швидко і без особливих
труднощів.
Якщо порівнювати динамічну бібліотеку (DLL), яка відріз-
няється вельми обмеженим функціоналом, і фреймворк, що
вважається основою програм — можна виділити суттєву пе-
ревагу фреймворків.
Саме фреймворк є сполучною ланкою, яка об’єднує всі ви-
користовувані програмні компоненти.
Також всередині фреймворка часто є необхідні тематичні
бібліотеки.
• Semantic UI (https://semantic-ui.com) — використовується
для створення переносимих інтерфейсів. Цей досить мо-
лодий фреймворк постійно розвивається. У ньому можна
знайти величезну кількість кнопок та інших елементів,
необхідних для роботи — зображення, іконки, написи.
• Foundation (https://foundation.zurb.com) — фреймворк, що
є одним з досить популярних у сегменті front-end-фрейм-
ворків. Останні версії відрізняються поліпшеним функ-
ціоналом для сучасних мобільних пристроїв. Завдяки
семантичному підходу є можливість використання SCSS,
написання більш чистого коду в HTML. Він ідеальний
для ситуації, коли потрібно швидке прототипування.
Запитання для перевірки знань
Наведіть означення АРІ.
Запропонуйте власні приклади застосуван-
ня АРІ.
Наведіть переваги використання приклад-
ного програмного забезпечення.
Що таке фреймворк? Наведіть приклади
фреймворків.
Знайдіть в  Інтернеті відомості про викори-
стання JSON, зробіть повідомлення.
Як можна пов’язати інтерактивність сто-
рінок та використання API?
1
2
3
4
5
6
Дуже популярним і  затребува-
ним є  фреймворк Bootstrap
(https://getbootstrap.com). Його
презентували ще на початку
2011 року. Його головна пере-
вага  — адаптивність (адаптивна
верстка). Він дозволяє створю-
вати проекти зі стильним
дизайном  — проект буде
автоматично підлаштовуватися,
враховуючи розмір екрана
комп’ютера або мобільного
пристрою користувача, що
переглядає сайт.
До переваг Bootstrap належить
велика кількість стилів, шабло-
нів, посторінковий дизайн  — це
істотно полегшує створення
сайта. У  Bootstrap практично
відсутні недоліки. Це не  тільки
HTML/CSS-фреймворк,
у  Bootstrap також включені
плагіни й  готові стилі JS/Jquery.
21911.22. Правила ...
11.22.

Правила ергономічного розміщення відомостей
на  веб-сторінці
Поміркуйте, чи достатньо створити сайт і  наповнити
його контентом.
Основна мета створення сайта — його спрямованість на ко-
ристувача, тому зручність використання, зрозумілість і про-
стота є досить важливими аспектами розробки сайта.
Ергономіка (від грец. еrgon — робота, nomos — закон) —
наука, яка вивчає робочі процеси з метою створення оптималь-
них умов праці, що сприяє підвищенню її продуктивності.
Ергономічний сайт має бути добре пристосований для
зручної та безпечної роботи користувача. Щоб цього досягти,
потрібно користуватися певними правилами (рис. 11.92).
Юзабіліті (англ. Usability  — зручність і  простота викори-
стання)  — це підхід, покликаний зробити сайт простим
у  користуванні, таким, який не потребує додаткового
навчання користувача, тобто мати орієнтований на ньо-
го інтерфейс.
Потрібно створити умови, щоб користувач мав змогу ін-
туїтивно пов’язувати дії, які йому необхідно виконати на
веб-сторінці.
Розглянемо основні критерії ергономіки під час створення
сайта (табл. 1).
Таблиця 1. Критерії ергономіки
Критерій Склад
Лаконічність
Простота викладення
Неперевантаженість
Чіткість
Ясність
Структурованість
Розташування
Видимість адреси
Однорідність структури
Швидкість
Час завантаження
Оптимізовані зображення
Взаємодія
Гіпертекстові посилання
Сегментація інформації
Сприяння взаємодії
Адаптивність Можливість змінити розмір шрифту
Доступність
Доступ до всього
Взаємодія
Принцип прозорості
Підпис
Вибір кольору
Правильне використання стилів
Контраст
Можливість змінити розмір шрифту
Інформація відповідає
тематиці сайта
Інформація чітко
структурована
Навігація проста
і  зрозуміла
Усі сторінки мають
посилання на головну
Унікальні фотографії та
синематограф
Читабельний шрифт
Колірна палітра враховує
правила колористики
Ознаки ергономічного сайта
Рис. 11.92. Правила створення
ергономічного сайта
220 Розділ 3
Важливо пам’ятати, що вся першочергова інформація по-
винна бути зліва. Читач знайомиться з нею зліва направо,
тому потрібно ретельно все продумати. Таким чином, створен-
ня сайта з урахуванням ергономіки може бути визначено як
здатність ефективно реагувати на потреби користувачів і за-
безпечувати їм комфорт під час перегляду сторінки.
Колірна палітра є одним із найважливіших елементів сай-
та. Існує безліч онлайн-сервісів, які допомагають дібрати па-
літру кольорів сайта, що відповідає правилам колористики
(рис. 11.93).
Рис. 11.93. Логотипи деяких онлайн-сервісів
Рис. 11.94. Палітри IN COLOR BALANCE
Запитання для перевірки знань
Що таке юзабіліті; ергономіка? Що, на вашу
думку, їх відрізняє?
Наведіть правила створення ергономічного
сайта.
Які онлайн-сервіси добору палітри ви знаєте?
Чому важливо правильно добирати кольори?
Виберіть сайт і  проаналізуйте його з  точки
зору юзабіліті.
Проаналізуйте тренди поточного року та
оцініть їх з  точки зору ергономіки.
1
2
3
4
5
6
Деякі загальні цілі юзабіліті:
• подавати інформацію
в  зрозумілій і  стислій формі;
• створювати користувачам
можливість робити вибір
найочевиднішим шляхом;
• усувати будь-яку
двозначність щодо наслідків
дій (наприклад, кнопка
видалити/покупка);
• розміщувати важливі
елементи у  відповідній
ділянці на веб-сторінці або
веб-додатку.
Найпопулярніші онлайн-сервіси
можна знайти за посиланнями:
• ColorExplorer
(http://colorexplorer.com/)
• сOLOROTATE
(http://mobile.colorotate.org/)
• ColorBlender
(http://www.colorblender.com/)
• ColorWizard
(http://www.colorsontheweb.
com/Color-Tools/Color-Wizard)
22111.23. Пошукова оптимізація...
11.23. Пошукова оптимізація та просування веб-сайтів
Яким чином, на вашу думку, на першій сторінці пошуку
з’являються ті чи інші сайти?
Будь-який сайт створюється для того, щоб його відвідува-
ли якомога більше користувачів.
SEO (від англ. Search Engine Optimization — пошукова
оптимізація) — маркетингове поняття, що охоплює цілий
комплекс заходів. Це процес коригування HTML-коду, структу-
ри та текстового наповнення (контенту) сайта; контроль зов-
нішніх чинників на відповідність вимогам алгоритму пошу-
кових систем.
Мета SEO — підвищення рейтингу сайта в пошукових си-
стемах (Google, Bing, Yahoo) та залучення трафіку.
Завдання SEO — підняти веб-ресурс у топ за результатами
пошукової видачі за конкурентними запитами користувачів.
Складові SEO наведено на рис. 11.95. Що вищою є позиція
сайта в результатах пошуку, то більшою є ймовірність пере-
ходу відвідувача на нього з пошукових систем, бо зазвичай
люди ідуть за першими посиланнями.
Побудова зв'язків
Трафік
Стратегія
Оптимізація
Веб-дизайнРанжування
Соціальні мережі
SEO —
пошукова
оптимізація
Рис. 11.95. Складові SEO
Роботи з позиціонування сайта в пошукових системах —
це один із найважливіших заходів щодо залучення цільової
аудиторії. Особа, яка проводить роботу з оптимізації веб-сай-
тів, називається оптимізатором (SEO-Manager).
Основною пошуковою системою у світі нині є Google. Алго-
ритм розрахунку авторитетності, який використовує Google, —
це PageRank. Він застосовується до бази документів, пов’язаних
гіперпосиланнями, — призначає кожному документу чисельне
значення, що характеризує його «авторитетність» (що більше
посилань на сторінку, то важливішою вона є).
Пошукова оптимізація може бути
постійним джерелом збільшення
кількості відвідувачів, адже 90%
користувачів знаходять нові сайти
через пошукові системи. 55%
онлайн-покупок здійснюються
на сайтах, які знайдено через
пошукові системи.
222 Розділ 3
Пошукова система  — повністю автоматизований меха-
нізм, який глибоко сканує всі задані сервери (відкриті
для сканування) і  збирає індекс-інформацію про те, що
і  де (на якій веб-сторінці) виявлено.
Зібрана інформація вноситься до бази даних пошукової
системи, де алгоритм із ранжування реалізується у два ета-
пи. Спочатку по сайтах «проходить» так званий «швидкобот»
та індексує їх для того, щоб додавати новини на видачу по-
шукових систем, а потім (здебільшого протягом доби) — ос-
новний бот, який уже повністю індексує статтю.
Пошуковий робот (webcrawler, bot, webrobots,
webspider  — бот, павук)  — це спеціальна програма, що
є складовою частиною пошукової системи та призначена
для перебирання сторінок Інтернету з  метою занесення
інформації про них у  базу даних пошукової системи.
Оптимізація та просування сайтів у пошукових системах
(рис. 11.96) мають забезпечити використання ключових слів
у контексті, заголовках і мета-даних.
Spider (павук):
браузероподібна програма, яка завантажує веб-сторінки
Crawler (краулер, «мандрівний» павук):
програма, яка автоматично проходить по всіх посиланнях,
знайдених на сторінці
Indexer (індексатор):
програма, яка аналізує веб-сторінки, скачані павуками
Database (база даних):
сховище викачаних і  оброблених сторінок
Search engine results engine (система видачі результатів):
система витягує результати пошуку з  бази даних
Web server (веб-сервер):
веб-сервер, який здійснює взаємодію між користувачем
та  іншими компонентами пошукової системи
Рис. 11.96. Робота пошукової системи
Популярність Google у  більшості
країн становить понад 60  %,
в  окремих європейських
країнах  — понад 90  %.
За введеними користувачем
словами пошуковик шукає
сторінки, зіставляє їх і  ран-
жує, визначає релевантність
конкретної сторінки за введе-
ним запитом (тобто наскільки
повно документ відповідає
критеріям, зазначеним у  запиті
користувача).
22311.23. Пошукова оптимізація...
Пошукова оптимізація передбачає такі етапи.
Етап 1
Збирання семантичного ядра. Під час добирання всіх слів вибираються ключові
словоформи, що додаватимуть відвідувачів на сайт. Водночас здійснюється аналіз ринку
сайтів, які наявні в  топ-видачі. Збирання ключових слів для написання внутрішніх текстів
можна виконати за допомогою як платних, так і  безкоштовних програм.
Етап 2
Написання на основі семантичного ядра контенту, що відповідатиме запитам користувачів
і  розв’язуватиме проблеми відвідувачів сайта. Водночас кількість ключових слів
у  співвідношенні до загальної кількості тексту не має перевищувати 3–5  %.
Просування сайта  — комплекс заходів щодо збільшення
відвідуваності веб-ресурсу цільовими відвідувачами
Метою будь-якого просування є збільшення співвідношен-
ня відвідувачів сайта, які вчинили очікувану дію, до всіх
відвідувачів (подається у відсотковому вираженні).
Власник веб-ресурсу (комерційна компанія, державна ор-
ганізація, соціальна мережа, ігровий майданчик, клуб за
інтересами тощо) намагається, щоб його сайт було «видно»
користувачам Інтернету, щоб була змога зібрати якомога біль-
ше відвідувачів. Таким чином він прагне забезпечити собі
потрапляння на перші сторінки (а ліпше — на перші рядки,
у топ) пошукової видачі. Розв’язання цього завдання забезпе-
чує процес SEO-просування.
Існує низка прийомів, які дозволяють маніпулювати пошу-
ковою системою. Вони розрізняються за своєю коректністю
й легальністю. У зв’язку з цим виникло три класи пошукової
оптимізації сайтів: чорна, сіра та біла (табл. 1).
Таблиця 1. Класи пошукової оптимізації сайтів
Оптимізація Призначення
Чорна
Набір прийомів, які характеризуються явною некоректністю. Багато з  них заборонені, де-
які створені для введення пошукової системи в  оману
Сіра
Не заборонені, але потенційно некоректні прийоми. Якщо чорну або сіру оптимізацію
буде виявлено пошуковою системою, до сайта будуть застосовані штрафні санкції чи на-
віть бан
Біла
Використовує легальні професійні методи, що доповнюють один одного і  дають стабіль-
ний результат. Спрямована на те, щоб і  відвідувачі, і  пошукові машини ставили сайту ви-
соку оцінку
Існує кілька розповсюджених методів просування сайта.
До наймолодших і перспективних методів з використан-
ням можливостей, що відкриваються соціальним мережам,
належать SMO (Social Media Optimization), або SMM (Social Media
Marketing).
Методи SMO (SMM) просування сайта засновані на самостій-
ній передачі даних від одного користувача до іншого за допо-
могою сервісів соціальних мереж (рис. 11.97).
Який відсоток відвідувачів
інтернет-магазину від їх загальної
кількості здійснили покупку?
Аналіз дій користувачів на сайті
здійснюється за допомогою
спеціального програмного
забезпечення. Для Google  — це
Google Analytics. За даними
досліджень, на другу сторінку
переходять не більше ніж 85 %
користувачів, далі другої  — не
більше від 10%.
224 Розділ 3
Створення та підтримка
популярної теми
в  соціальних мережах
Спонукання користувачів до додавання
посилань на ресурс через написання
інформативного й  цікавого для
користувача контенту
Просування за допомогою
форумів
Написання та просування статей
у  тематичних соцмережах
Створення та просування
новин у  сервісах
Організація конкурсів та опитувань
з  матеріальним заохоченням або без нього
Способи
просування
сайта
Рис. 11.97. Способи SMO (SMM) просування сайта
Ще одним методом просування сайта є так званий вірусний
маркетинг — тут головними розповсюджувачами інформа-
ції є самі користувачі. Один користувач передає інформацію
з посиланням на ресурс знайомим, кожен із яких — кільком
своїм. Таким чином спрацьовує ефект «снігової лавини», що
приносить результат у вигляді тисяч, а часом і сотень тисяч
унікальних відвідувачів.
Основним інструментом вірусного маркетингу є створення
цікавого, несподіваного, креативного контенту, який гаранто-
вано зможе зацікавити максимальну кількість користувачів
таким чином, аби змусити їх поділитися інформацією з ін-
шими.
Запитання для перевірки знань
Що таке SEO?
Назвіть завдання SEO.
Що таке пошуковий робот? Наведіть схему
роботи робота Google.
Назвіть класи оптимізацій сайтів.
Що таке SMM?
Які ви знаєте способи просування сайта?
Опиши їх.
1
2
3
4
5
6
Яскравим прикладом вірусного
маркетингу є  розміщення
цікавих відеороликів на
YouTube і  подібних до нього
сервісах, де як джерело
відео вказується ресурс, що
просувається.
Тест 11
Тестове завдання
з  автоматичною перевіркою
результату на  сайті
interactive.ranok.com.ua
12.1. Уніфікований процес розробки програмного
забезпечення
Пригадайте складові інформаційної системи та їхнє
призначення. Назвіть види програмного забезпечення
персонального комп’ютера. Наведіть приклади програмних
засобів, які ви використовували на уроках інформатики.
Розроблення програмного забезпечення (ПЗ) — це склад-
ний процес, у якому беруть участь багато фахівців і який
часто орієнтований на віддалену роботу.
Розробка ПЗ як результат роботи колективу починається
з аналізу вимог до нього. Під час планування проектної робо-
ти з розробки ПЗ застосовують системний підхід (системний
аналіз). Він полягає в здійсненні аналізу та уточненні завдан-
ня, розробці загальних стратегій роботи, визначенні етапів
виконання проекту.
Системний аналіз розробки програмного забезпечен-
ня  — це дослідження вимог до ПЗ, його можливостей
і  представлення в  загальному вигляді з  подальшою де-
талізацією.
У результаті аналізу створюється ієрархічна структура,
кожний наступний (нижчий) рівень якої описує певний
аспект ПЗ більш детально, ніж попередній (вищий).
Під час аналізування розглядаються й коригуються вимо-
ги замовника, визначається, як ці вимоги будуть реалізовані,
формулюються підзадачі та способи їх розв’язування. Пла-
нування та реалізація проекту є процесом, спланованим за
певною методологією.
Методологія  — це принципи, сукупність ідей, методів
і  засобів, які визначають підхід до розробки програмно-
го забезпечення.
Існує кілька методологій створення ПЗ. Кожна з них ви-
значає своє планування створення ПЗ, яке передбачає певні
етапи. На рис. 12.1 наведено етапи планування розробки ПЗ
у загальному вигляді.
Залежно від обраної методології взаємодія між етапами пла-
нування й виконання різних етапів відбувається по-різному.
Для злагодженої роботи
та  швидкого реагування
на  різні ситуації в  ІТ-фірмах
формують систему діяльності,
що сприятиме ефективній
організації розробки ПЗ.
Етапи планування
розробки ПЗ
Аналіз вимог до проекту
Проектування
Реалізація: розробка коду,
програмування
Тестування
Упровадження та
підтримка
Рис. 12.1 Загальне подання про-
ектування роботи з розробки ПЗ
Розділ 4.Розділ 4.Розділ 4.Розділ 4.Розділ 4. ПАРАДИГМИ ТАПАРАДИГМИ ТАПАРАДИГМИ ТАПАРАДИГМИ ТА
ТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯ
226 Розділ 4
Етапи розробки ПЗ ще називають стадіями розробки. У всіх
методологіях їх зміст загалом однаковий. Ознайомимося
з ними докладніше.
Етап 1
З етапу аналізування вимог до розроблюваного ПЗ, їх систематизації, документування,
а  також виявлення й  розв’язування суперечностей починається будь-який проект
з розробки ПЗ. Створюється певна документація, що описує відповідність створеного
ПЗ вимогам, на яких етапах будуть реалізовані вимоги, правила встановлення
й  використання ПЗ. Проте за деякими методологіями в  документації можливі
зміни в  процесі життєвого циклу ПЗ (час від моменту створення ПЗ до вилучення
з  експлуатації)
Етап 2
На етапі проектування (його називають також стадією дизайну й  архітектури)
програмісти й  системні архітектори, керуючись вимогами, розробляють
високорівневий дизайн системи. Схематично занотовуються характеристики ПЗ
Етап 3
На етапі написання коду на основі попередньо визначених вимог програмісти-
розробники створюють програми; системні адміністратори налагоджують взаємодію
між програмами, front-end-програмісти розробляють користувацький інтерфейс
і  можливості взаємодії ПЗ із серверами
Етап 4
На етапі тестування здійснюється перевірка правильності роботи кодів кожної
складової ПЗ, роботи ПЗ на відповідність вимогам у цілому. Тестування відбувається
на основі тестів, написаних програмістами-тестувальниками
Етап 5
На етапі впровадження й  підтримки ПЗ у  нього вносяться зміни для оновлення
в  процесі використання
Як ми вже знаємо, існує низка методологій створення ПЗ.
Ознайомимося з найпоширенішими.
Розглянемо сутність каскадної та ітераційної методологій.
Каскадна методологія (англ. Waterfall model), її ще нази-
вають «крок за кроком», «водоспад», описує послідовний про-
цес виконання всіх етапів проекту (див. рис. 12.1).
До кожного наступного етапу переходять тільки після
повного завершення попереднього — зворотний напрямок не-
можливий (саме тому метод отримав назву «водоспад» — за
аналогією потоку води в одному напрямку). Внесення змін до
виконаного етапу можливе тільки повторенням усіх етапів
починаючи спочатку.
Ітераційна методологія (від слова «ітерація» — повторення)
є більш гнучкою: розробка ПЗ базується на кількох циклах
повторення всіх етапів (рис. 12.2 у прикладі).
На першому етапі проекту за ітераційною методологією
допускається неповний перелік вимог, адже визначення всіх
вимог часто є задачею, яку неможливо розв’язати. На кожно-
му циклі кожен етап виконується паралельно з аналізом от-
риманого результату. Це дозволяє вдосконалювати подальші
етапи та корегувати вимоги при кожному повторі виконання
проекту.
За такої організації створюються більш сприятливі умови
для замовника, бо після кожної ітерації замовник може спо-
стерігати результат і розуміти, задовольняє він його чи ні,
вносити зміни до вимог.
Каскадною методологією
користуються у  випадку,
коли основні вимоги
остаточно визначені, зрозумілі
й  зафіксовані. Зазвичай нею
користуються для виконання
невеликих проектів.
22712.1. Уніфікований процес...
Приклад. Ітераційну методологію вико-
ристовують у випадках, коли вимоги до ПЗ
зрозумілі, хоча деякі деталі можуть доопра-
цьовуватися в ході розробки (рис. 12.2), а та-
кож для реалізації дуже великих проектів.
Показовим прикладом є система розпізнаван-
ня голосу. Її головне завдання — ідеальне
розпізнавання — ще не досягнуто, хоча ре-
зультат кожної наступної ітерації покращу-
ється.
Аналіз Аналіз
Проектування Проектування
Проектування
Реалізація Реалізація
Реалізація
Тестування Тестування
Тестування
Впровадження
Впровадження
Супроводження
Рис. 12.2. Приклад структури процесу розроблення ПЗ
Вибір певної методології залежить від специфіки і склад-
ності проекту та інших чинників, на які впливає кількість
розробників у групі, їхні особисті якості й кваліфікація або
стабільність процесів у компанії та ін.
У випадку каскадної методології етап аналізу вимог закріп-
люється в документі — специфікації вимог до ПЗ (Software
Requirement Specification, SRS), оформлення якого має бути за-
вершено до переходу на наступний етап.
Запитання для перевірки знань
Як ви розумієте поняття методології?
Назвіть загальні етапи проектування розробки ПЗ.
Поясніть особливості роботи програмістів-розробників і  про-
грамістів-тестувальників.
На основі чого відбувається тестування ПЗ?
Назвіть відомі вам моделі методологій і  поясніть, чим вони
відрізняються.
Наведіть приклади використання різних методологій роз-
робки ПЗ.
1
2
3
4
5
6
Існують й  інші методології
розробки ПЗ, наприклад
V-модель (від англ. validation
and verification). Вона передбачає
тестування всіх параметрів ПЗ
на відповідність і  запланованим
вимогам, і  тим, якими вони мають
бути в  дійсності. Наприклад,
інтегроване ПЗ для механізмів
управління аварійними подушками
безпеки в  транспортних
засобах, мобільний додаток для
європейського стільникового
оператора, який економить
витрати на роумінг під час
подорожей.
228
12.2. Програмні інструменти для проектної роботи
Чи можна в  проекті з  розробки програмного забезпечення
використовувати роботу з  віддаленим доступом і  залучен-
ням фахівців у  територіально розподілених командах?
Ефективність роботи з розробки та експлуатації програм-
ного забезпечення (ПЗ) залежить від багатьох чинників:
планування загальної роботи колективу, поінформованості
учасників проекту про стан його виконання, внесення змін.
У ході використання ПЗ відбувається удосконалення й упро-
вадження нових версій.
Для автоматизації процесу планування й аналізу відпо-
відності реалізації проектної роботи запланованій роботі
використовують спеціальні програмні засоби, які називають
­
системами комунікацій, або програмними інструментами.
Для кожного типу роботи колективу існують різні про-
грамні системи комунікацій. Розглянемо особливості най-
більш поширених із них (на рис. 12.3 наведено їх лого­типи).
Asana і Trello — системи, що використовують для від-
стеження стану виконання поточних завдань проекту. Asana
розрахована на введення таких даних по окремих завданнях,
як назва, опис завдання, дата виконання й відповідальний.
Спілкування розраховане за допомогою електронної пошти.
Trello подібна до дошки, на якій прикріплені стікери із за-
вданнями, вона використовує такі характеристики завдань:
Заплановано, В  роботі, Виконано.
Smartsheet і Мегаплан — системи, придатні для базового
управління проектом і організації діяльності невеликого під-
приємства. Вони базуються на табличній формі подання ін-
формації, подібної до Excel: часто для відстеження виконан-
ня завдань проекту користуються графіком, побудованим як
діаграма Ганта (ви побудуєте її в Excel під час виконання
практичної роботи).
Smartsheet і Мегаплан є онлайн-інструментами, які пропону-
ють необмежену кількість таблиць, збереження файлів, жур-
нал змін, автоматизацію робочих процесів у вигляді діаграм
Ганта, а також мобільну версію.
JIRA і Clarizen — системи, що застосовують для всіх типів
завдань, починаючи від організації роботи малої групи до ве-
ликого підприємства. JIRA швидше застосовна для організації
підтримки і розробки, Clarizen — для управління портфелем
проектів. Крім того, існують також такі системи, як Redmine,
Адванта, Comindwork, Liquidplanner, Innotas, AtTask та ін. (див.
рис. 12.3).
Одним із ключових моментів організації процесу розроб­
лення ПЗ є комунікаційний процес між учасниками проект­
ної роботи, який набуває особливої важливості, якщо в про-
екті беруть участь фахівці у віддаленому доступі.
Завданнями процесу комунікацій є формування й підтрим-
ка постійного оперативного зв’язку між членами команди,
Рис.12.3. Логотипи найбільш
поширених систем комунікацій
22912.2. Програмні інструменти...
визначення, яка інформація передаватиметься кожному
з учасників проекту, проведення нарад з планування конт-
ролю та роботи, організація онлайн-навчання та посилення
зв’язків між членами команди.
У територіально розподіленій проектній групі фахівцю важ-
ливо знати, як і коли він може звернутися до інших членів
групи, керівника для розв’язання проблем, які в нього мо-
жуть виникнути.
Залежно від завдання розрізняють кілька типів комуніка-
ційних процесів (рис. 12.4).
• За ознакою віддаленості: внутрішні (комунікації між
членами учасників проекту); зовнішні (забезпечення
зв’язку з керівництвом ІТ-компанії, замовником, зовніш-
німи організаціями тощо).
• За координацією спілкування: формальні (визначені
в плані комунікацій проекту, наприклад документуван-
ня роботи над проектом); неформальні комунікації (осо-
бисті контакти між членами команди).
• За організаційною спрямованістю: горизонтальні (між
учасниками проекту одного статусу); вертикальні (з ура-
хуванням статусу учасника проекту).
У свою чергу вертикальні комунікації діляться на низ-
хідні (від керівника проекту через керівника команди до
безпосередніх розробників більше стосуються завдань проек-
ту) і висхідні (зворотні комунікації порівняно з низхідними
в основному містять інформацію про хід виконання завдань
проекту).
• За формою подання комунікації: аудіо-, відео-, текстові
повідомлення.
До інструментів комунікацій належать планувальники
завдань (Task-менеджери), програми для спостереження за
часом виконання роботи (тайм-трекери), системи моніторингу
для забезпечення безпечної роботи людей та працездатності
об’єктів, сервіси онлайн-листування (e-mail), відеоконферен-
ції, відеозв’язки, групові чати, веб-конференції (текст, аудіо,
відео), групи в соціальних мережах, електронні дошки оголо-
шень та ін.
Приклад. Порівняємо процес створення ПЗ
з розв’язанням задачі на заняттях з програ-
мування: написаний код програми можна
вдосконалювати кілька разів, і інколи ви-
никає потреба повернутися до попередніх
версій коду. Так відбувається і з новим ПЗ.
Прикладом є будь-яка операційна система,
кожна версія якої більш досконала і зручна
для користувачів, або програми офісного до-
датку.
У процесі створення ПЗ необхідно зберігати попередні версії
програми. Щоб не задіяти безліч файлів, користуються спе-
ціальним інструментом — системою контролю версій (СКВ).
Вона містить протокол змін у файлі або в кількох файлах для
надання можливостей працювати з попередніми версіями та
викликати їх надалі.
Типи комунікаційних
процесів
За ознакою
віддаленості
За координацією
спілкування
За організаційною
спрямованістю
За формою подання
комунікації
внутрішні
формальні
горизонтальні
аудіо- та відео
зовнішні
неформальні
вертикальні
текстові
низхідні
висхідні
Рис. 12.4. Типи комунікаційних
процесів
230 Розділ 4
Існують різні типи СКВ: локальні, централізовані, розпо-
ділені (на рис. 12.5–12.7 подано їхні схематичні зображення).
Локальною СКВ є база даних для збереження всіх змін
файлів, до яких має доступ СКВ. Прикладом є система rcs,
робота її базується на зберіганні наборів патчів (різниць між
файлами) у спеціальному форматі на диску та на можливості
відтворення вигляду будь-якого файла.
Централізовані СКВ створені для опрацювання змін у фай-
лах, розташованих на різних персональних комп’ютерах. За-
звичай їх робота основана на збереженні всіх версії файлів
на сервері, до якого звертаються клієнти, щоб отримати не-
обхідні копії. Прикладами є системи CVS, Subversion і Perforce.
Розподілені СКВ відрізняються від централізованих тим,
що клієнт, окрім копії необхідних версій файлів, отримує
із сервера всі версії збережених файлів (створюється дзеркало
репозеторія). Саме це є перевагою розподілених СКВ.
Якщо сервер виходить із ладу, у централізованих СКВ губ-
ляться всі дані щодо змін у файлах, а в розподілених СКВ
версії файлів відновлюють із репозиторія клієнтів.
Розподілені СКВ можуть надавати доступ до кількох від-
далених репозиторіїв, що уможливлює одночасну співпрацю
розробників. Прикладами є системи Git, Mercurial, Bazaar або
Darcs.
База Версій
Сервера
Версія n
. . .
Версія 2
Версія 1
ПК 1
Файл
ПК 2
Файл
Рис 12.6. Схематичне зображення
централізованої СКВ
ПК 1
База Версій
Версія n
. . .
Версія 1
Файл
ПК 2
База Версій
Версія n
. . .
Версія 1
Файл
Сервер
База Версій
Версія n
. . .
Версія 1
Рис. 12.7. Схематичне зображення
розподіленої СКВ
Запитання для перевірки знань
Які є інструменти планування проекту?
Перелічіть задачі проекту, які розв’язуються
у  процесі комунікацій.
Назвіть типи комунікаційних процесів?
Дайте означення системи контролю версій.
Які ви знаєте типи СКВ?
У яких випадках доцільно використовувати
певний тип СКВ?
1
2
3
4
5
6
Локальний комп’ютер
База
Версій
Версія n
. . .
Версія 2
Версія 1
Переві-
ряти
Файл
Рис. 12.5. Схематичне зображення
локальної СКВ
231
12.3. Візуальне моделювання архітектури
програмного забезпечення
Наведіть означення понять моделювання, моделі. Пригадайте
принципи об’єктно-орієнтованого програмування: дайте ви-
значення понять класу, інкапсуляції, поліморфізму, наслідування.
У створенні програмного забезпечення (ПЗ) і в зручному
супроводі в процесі його експлуатації найважливішу роль
відіграє побудова правильної структури.
Як відомо, створене ПЗ може оновлюватися, а в розробці
беруть участь багато працівників (і кожна група виконує
певну задачу). З огляду на це, планування ПЗ доцільно по-
чинати з його опису в загальному вигляді як системи, що
складається з окремих компонентів.
Архітектурою програмного забезпечення є  його
структура, що складається з  програмних компонентів,
їхніх інтерфейсів і  опису засобів об’єднання компонентів
в  єдину систему.
Архітектурний стиль визначає засоби організації компо-
нентів та їх взаємозалежностей у системі ПЗ. Архітектура
завжди описується в документації ПЗ, що в подальшому доз-
воляє використовувати архітектурний стиль певного проекту
в інших проектах як шаблон.
Архітектурою визначається набір правил щодо організації
п’яти структурних компонентів в єдину систему: сукуп-
ність структурних компонентів системи і зв’язків між ними;
взаємозв’язок окремих елементів системи; ієрархію підсис-
тем, об’єднаних структурними компонентами; архітектурний
стиль (використовуються методи і засоби опису архітектури,
а також архітектурні образи).
Для одного ПЗ існують кілька видів подання його архі-
тектури залежно від мети використання. Програмне забезпе-
чення є складною системою, яка у свою чергу є сукупністю
взаємопов’язаних підсистем, об’єднаних одним завданням до
функціонування. Для розуміння складових системи, їх функ-
ціональних особливостей створюють кілька моделей архітек-
тури, у яких відображені властивості, суттєві для поставле-
ного завдання, та їхня взаємодія.
Як у моделюванні об’єкта можна отримати кілька моделей
залежно від мети дослідження (пригадайте моделі кровотвор-
ної системи людського організму, модель — скелет, карта
м’язів людини), так і для одного ПЗ існують кілька видів
подання його архітектури залежно від мети використання.
Архітектура ПЗ може мати різні форми подання, найбільш
наглядною з яких є візуальна.
Візуальним моделюванням називають метод розробки
ПЗ, який для візуалізації, опису, проектування, докумен-
тування архітектури ПЗ використовує графічні моделі.
Едсгер Вібе Дейкстра —
нідерландський науковець
у  галузі комп’ютерних наук.
У  1972 році був відзначений
премією Тюрінга за вагомий
внесок у розвиток мов
програмування.
Девід Л. Парнас — канадський
учений у галузі інженерії
програмного забезпечення.
Вперше поняття архітектури
зустрічається в  1968 році в  описах
науково-дослідних робіт Едсгера
Дейкстри та на початку 1970-х
років у  Девіда Парнаса.
Може бути подання
функціональних можливостей
ПЗ, опис структури програмних
компонентів у  середовищі
реалізації, опис фізичного
розміщення програмних
компонентів, відображення
логічної організації компонентів
у  систему тощо.
232 Розділ 4
Візуальне моделювання застосовується в процесі проекту-
вання та аналізування системи перед написанням коду, а та-
кож документування, тестування, розроблення вимог до ПЗ.
Як приклад можна навести блок-схему програми розв’язування
певної задачі. У блок-схемах використовуються блоки, кожний
із яких має своє призначення і логічний зміст. А реалізувати
блочне розв’язання задачі можна в будь-якому середовищі про-
грамування.
Макет сайта, для зображення якого скористалися графічним
редактором, є візуальною моделлю сайта. Візуальне моделю-
вання здійснюється за допомогою інструментальних засобів,
до яких належать і мови візуального моделювання.
Мова візуального моделювання (або візуальна мова) —
це сукупність формалізованих наборів графічних симво-
лів і  правил побудови з  них візуальних моделей.
Універсальна мова моделювання UML є засобом моделю-
вання (не програмування) для створення моделей будь-якого
рівня абстракції для ПЗ будь-якого призначення.
Основою UML-моделі є спеціальні графічні конструкції, які
називаються діаграмами. Кожний тип діаграми має своє при-
значення і дає уявлення про архітектуру ПЗ з різних точок
зору: діаграми, які показують статичну структуру програми,
діяльнісні аспекти системи, фізичні аспекти функціонування
системи (діаграми реалізації). Діаграми містять елементи, що
взаємодіють між собою, — побудова діаграм заснована на мо-
делі «сутність — зв’язок».
Мова UML містить нотації — правила побудови діаграм
(оскільки мова не належить до мов програмування, то по-
няття нотації аналогічне поняттю синтаксису при написанні
програм). Елементами нотації є графічні зображення: фігури,
лінії, написи.
При проектуванні складного ПЗ використовують технологію
CASE (англ. Сomputer Aided Software Engineering — комплекс
інструментів і методів програмної інженерії для проектування
ПЗ). CASE забезпечує автоматизовану допомогу в розробці ПЗ,
його супроводженні, керуванні діяльністю розробників.
Прикладами реалізації технології є такі програмні засоби,
як RUP/USDP (використовує UML на всіх етапах розробки ПЗ),
IBM Rational Rose, Borland Together, Telelogic Tau, Microsoft Visio/
UML Add-on.
Запитання для перевірки знань
Дайте визначення поняття архітектури про-
грамного засобу.
Поясніть поняття візуального моделювання.
Наведіть приклади програмних засобів, які
можна використати для графічного подан-
ня архітектури ПЗ.
Що таке універсальність мови моделювання?
Поясніть, яка користь у  використанні стан-
дартних мов моделювання.
Наведіть приклади графу, в  якому як сут-
ність є  учень. Перелічіть його зв’язки з  ін-
шими сутностями.
1
2
3
4
5
6
Засоби моделювання
• UML (англ. Unified Modeling
Language  — уніфікована
мова моделювання),
використовується
у  парадигмі ООП
• BPMN (англ. Business Process
Model and Notation  —
система умовних позначень
(нотація) для моделювання
бізнес-процесів)
• Rational Rose  — світовий
лідер серед засобів
візуального моделювання
Технологія CASE передбачає
наявність:
• UML для побудови моделі ПЗ
• графічні редактори для
побудови діаграм
• генератори для генерації
коду для різних платформ
• репозиторій з базою
даних, у  якій зберігаються
результати розробки
компонентів ПЗ
233
12.4. Діаграми UML. Діаграми прецедентів
Проектування програмного забезпечення (ПЗ) починається
з формулювання вимог до нього.
Вимоги до ПЗ — це саме ті функції, які має виконувати
дане ПЗ, його сервіси. Саме з цієї причини процес розроблен-
ня починається з оголошення й аналізу вимог, які будуть
виконувати розробники, і як це буде виконуватися, знають
тільки вони, а замовник оцінить кінцевий результат робо-
ти — створене ПЗ (рис. 12.8).
Вимоги
(замовник)
Розробка ПЗ
(тільки
розробник)
Результат  — ПЗ
(замовник,
користувач)
Рис. 12.8. Загальна схема розробки ПЗ
Вимоги до нового ПЗ обов’язково документуються — ство-
рюється технічне завдання (ТЗ) проекту, воно має вигляд
звичайного тексту. Окремі пункти ТЗ часто подають у графіч-
ному вигляді. Набір вимог мовyjuj візуального моделювання
матиме вигляд діаграми вимог (прецедентів) та набору додат-
кових нефункціональних вимог.
Прецеденти, або варіанти використання (use­case), застосо-
вуються для опису зовнішніх вимог до нового ПЗ або вимог
удосконалення та зміни вже існуючого, а також правила вза-
ємодії користувача з ПЗ.
Нефункціональні вимоги не враховують конкретний варі-
ант використання, в них може бути вказано особливості сере-
довища реалізації, швидкодія, можливість додавання нових
функцій та ін.
Спочатку вимоги записують у текстовий документ, який
надалі оформлюють як таблицю, в одному стовпці якої бу-
дуть прецеденти, а в іншому — прізвища виконавців.
Приклад 2.
Складемо таблицю прецедентів вступу
випускників у заклад вищої освіти, тобто та-
блицю вимог від учня та закладу:
Прецедент Виконавець
Отримати атестат Учень, працівники закладу середньої освіти
Отримати сертифікати ЗНО Учень
Подати копії документів до вишу Учень, працівники приймальної комісії
Оприлюднити результати подання документів Група 1 закладу вищої освіти
Здійснити конкурсний відбір Група 2 закладу вищої освіти
Оприлюднити список студентів Група 1 закладу вищої освіти
Подати оригінал документів до вишу Учень, працівники приймальної комісії
Видати довідку про вступ Працівники закладу вищої освіти
Верифікація (англ. verification  —
узгодження)  — це процес
перевірки ПЗ або його
компонентів на відповідність
отриманих результатів
визначеним вимогам.
Валідація (англ. validation  —
затвердження) — це
визначення відповідності
ПЗ очікуванням і потребам
замовника (користувача).
Приклад 1.
Замовили програмний за-
сіб, при запуску якого малю-
ється фігура. При узгодженні
вимог розробник розуміє, що
фігура — червоний квадрат.
Здійснюється розробка ПЗ.
Перевіряється результат:
фігура — квадрат? Колір —
червоний? Це верифікація.
При здачі ПЗ замовнику
з’ясовується, що червоний
квадрат — саме те, що він
очікував. Або замовник хотів
рожевий прямокутник і ПЗ
слід переробляти. Це валіда­
ція.
234 Розділ 4
Таблицю можна подати й у вигляді графу, в якому верши-
нами (сутностями) є учні, різні працівники закладів освіти,
набір прецедентів. Кожне ребро графу покаже зв’язок між
прецедентами та дійовими особами. Вигляд графу і буде діа-
грамою прецедентів.
Опис прецедентів не вказує, як досягається певний резуль-
тат, ідеться лише про загальний опис дій (як учень готується
до ЗНО та здає, вчиться й отримує атестат, як здійснюється
вибір майбутніх студентів, не розглядається). Тому діаграми
прецедентів відносять до групи діаграм, за якими візуалізу-
ються динамічні аспекти архітектури системи.
У діаграмі прецедентів сутності називають екторами.
Ектор (від англ. аction — дія) — множина ролей, які вико-
нуються в процесі взаємодії дійових осіб та прецедентів.
За правилами мови візуального моделювання ектори зо-
бражують у вигляді людини або як клас у програмуванні,
а прецеденти описують у фігурі (еліпсі) (рис. 12.9).
Прецеденти й ектори з’єднують за допомогою лінії, яка та-
кож може мати стрілку — стрілка спрямована до елемента,
послуги якого використовують. В описі ПЗ стрілка спрямо-
вана до елемента, у якого запитується сервіс — функція ПЗ.
Частково перетворимо таблицю на діаграму прецедентів за
правилами мови візуального моделювання (рис. 12.10).
Отримання атестату
Отримання сертифікату ЗНО
Подання документів (копії)
Подання документів (оригінал)
Оприлюднення результатів
Видача довідки про  вступ
Здійснення конкурсного відбору
Вступ учня до вишу
учень
колектив учителів
працівники
приймальної комісії
група 2
група 1
працівник вишу
Рис. 12.10. Приклад діаграми прецедентів для завдання з організації вступу випускників до вишу
На діаграмі відсутні деякі інші вимоги до процесу всту-
пу, наприклад учню потрібно пройти співбесіду. Цю вимогу
можна додати у вигляді прецедентів, що допоможе графічно
показати зв’язок сутності учень та працівників різних підроз-
ділів вишу.
Брендан Айк — автор мови про­
грамування JavaScript, що є  стан-
дартом для веб-програмування.
Він брав участь у  створенні аме-
риканської компанії Mozilla, яка
розробляє браузер Firefox.
Назва
а

б
Рис 12.9. Вигляд ектора (а)
та прецедента (б)
23512.4. Діаграми UML...
Праворуч від прецедента можна показати відгук на нього,
щоб візуалізувати ланцюжок:
учень (випускник) → подання документів (копій) → працівники приймальної комісії
Це означає, що випускник здав документи, а працівник комі-
сії їх прийняв. Такі відгуки розміщують у фігурі прямокутної
форми, вони становлять основу діаграм взаємодій.
Підсумовуємо: створення діаграми прецедентів відбуваєть-
ся послідовно (рис. 12.11). Екторами можуть бути предмети,
наприклад функцією зовнішнього e-mail-шлюзу є надсилання
рекламних повідомлень, які, у свою чергу, підготовлені пра-
цівниками фірми).
Визначення
екторів
Визначення
прецедентів
Опис кожного прецедента
(у  потужному ПЗ
може складатись з  інших)
Опис моделі
прецедентів
Рис. 12.11. Створення діаграми прецедентів
Діаграми прецедентів є потужним засобом подання архі-
тектури ПЗ, засобом досягнення взаєморозуміння між за-
мовниками, розробниками, експертами, користувачами (при-
гадайте, що комікси набагато легше сприймаються і дають
уяву про зміст, ніж простий опис у вигляді тексту).
Оскільки ПЗ складаються з великої кількості складових,
має велике число операцій (функцій окремих частин і всього
ПЗ у цілому), то моделювання прецедентів дозволяє краще
уявити функціонування ПЗ.
Прецеденти є основою для тестування складових під час
розроблення ПЗ, адже діаграма прецедентів описує бажані
вимоги до ПЗ з точки зору замовника і користувача, а в про-
цесі постійного порівняння наявних функцій складових
з описаними прецедентами відбувається контроль реалізації
функцій складових.
Запитання для перевірки знань
Як ви розумієте поняття прецедента?
З яких елементів створюють діаграму пре-
цедентів?
Яке призначення діаграми прецедентів?
Які аспекти розроблення ПЗ не враховує
діаграма прецедентів?
Проаналізуйте вміст рис. 12.10 та діаграми
та поясніть, які прецеденти таблиці є  відгу-
ком на прецеденти учня.
За аналогією створення коміксів складіть
діаграму поведінки учня або учениці на
уроці фізкультури.
1
2
3
4
5
6
Завдання для самостійного виконання
Уявіть себе розробником найпростішого
графічного редактора, наприклад такого,
як MS Paint. Екторами будуть інструменти
редактора (назвіть їх у  загальному вигля-
ді, наприклад фігури, гумка, ножиці тощо).
А  прецедентами  будуть дії, які можна здій-
снювати до екторів, наприклад створення,
масштабування, фарбування тощо.
Створіть діаграму прецедентів для цього
ПЗ.
Мовою UML пропонується така
послідовність створення типів
діаграм:
• Діаграма прецедентів
• Діаграма класів та діаграма
об’єктів
• Діаграма послідовностей
• Діаграма станів
• Діаграма взаємодій
• Діаграма активностей...
236
12.5. Моделювання даних і архітектури програмного
забезпечення
Пригадайте визначення класів об’єктно-орієнтованого про-
грамування (ООП), парадигми ООП і  модифікаторів доступу
до класу.
Як зображують ектор на діаграмі прецедентів?
Мови візуалізації спрямовані на побудову різних моделей
архітектури програмного забезпечення (ПЗ) за допомогою різ-
них діаграм (приклад 1). Пригадайте, як у ході пояснення
складових діаграми прецедентів наголошувалося, що ектор
можна подати як клас в ООП, адже клас — це опис сукупності
об’єктів із загальними атрибутами, операціями і семантикою.
Діаграма класів (class diagram)  — це опис сукупності
статичних складових ПЗ.
Діаграма класів показує, опис яких сутностей буде опра-
цьовано в коді програм. Програмний інструментарій, основа-
ний на UML-моделюванні, дозволяє автоматично перетворюва-
ти діаграму на код.
Діаграма класів є кінцевим етапом проектування, після
якого розробники приступають до написання коду. Опис кла-
сів подібний до опису сутностей з їх атрибутами в проекту-
ванні бази даних.
За правилами мови моделювання клас на діаграмі зобра-
жують у вигляді прямокутника, який розділено горизонталь-
ними лініями на три частини, кожна з яких містить назву,
атрибути та операції класу (рис. 12.12).
Назва класу
Атрибути класу
Операції класу
Назва Атрибуту
з указанням типу
Назва Операції
з указанням типу
Рис. 12.12. Схематичне зображення класу в діаграмі класів
Як відбувається опрацювання класу, описано в загально-
му вигляді, як це здійснено на рівні кодів — знає розробник
коду (а користувачів ПЗ це питання не цікавить). Тут пра-
цює відома вам парадигма ООП — інкапсуляція. Доступ до
атрибутів і операцій класу здійснюється завдяки описаним
модифікаторам доступу до класу (приклад 2).
У побудові діаграм ураховують і інші парадигми ООП.
Приклад 1. Одна з діаграм
описує взаємодію користувача
з ПЗ, інша — зміну його
станів у процесі її роботи, ще
одна — взаємодію складових
(компонентів) ПЗ.
Приклад 2. Вам необхідно
надіслати СМС-повідомлення
за допомогою мобільного
телефону. Ви переходите до
вибору адресата й вибираєте
значок повідомлення, далі
вводите текст і відправляєте
повідомлення. Реалізація
операцій відбувається у вікні,
яке представляє інтерфейс
об’єкта адресат.
Об’єкт може мати кіль-
ка інтерфейсів: в адресата
є редагування його даних,
надсилання повідомлень, над-
силання електронного листа
тощо.
Якщо взяти як приклад
графічний редактор, то фігура
матиме інтерфейс зафарбуван-
ня, копіювання, переміщення
тощо.
23712.5. Моделювання даних...
Наслідування реалізується в створенні суперкласів (кла-
сів-батьків) і підкласів (класів-нащадків) (рис. 12.13), а полі-
морфізм у перевизначенні операцій — методів.
Назва суперкласу
Атрибути суперкласу
Операції суперкласу
Назва підкласу
Додаткові атрибути
Додаткові операції
Визначення
узагальнення
для  наслідування
Рис. 12.13. Схематичне зображення властивості наслідування в діаграмі
Продовжимо аналізувати приклад з графічним редактором.
Суперклас Фігури матиме атрибути координат х і у роз-
ташування центра фігур, для підкласу точки додаткових
атрибутів не потрібні, а прямокутник матиме ще й атрибути
висоти та ширини, круг — радіус.
У UML назву класу записують з великої літери, перед на-
звою атрибуту або операції вказують позначку, яка відпові-
дає певному модифікатору доступу: для private — це _, для
protected — #, для public — +.
Атрибут (або властивість) записують за правилами синтак-
сису мови ООП: вказують модифікатор видимості, тип, ім’я
з малої літери (приклад 3).
Операціями класу в ПЗ є сервіси, які надаються класом за
вимогами користувачів або іншими складовими ПЗ (приклад 4).
Екземпляром класу є об’єкт. Якщо клас не утримує об’єкт,
його називають абстрактним класом, а його назву записують
курсивом. Також створюють і діаграми об’єктів: об’єкт на
діаграмі графічно поданий так само, як і клас: назва об’єкта
з класом, якому він належить, та його атрибути (приклад 5).
Діаграма об’єктів візуалізує екземпляри класу — об’єкти,
їх стан і взаємозв’язок між ними в конкретний момент часу.
На діаграмі класів зображують зв’язки між класами та
об’єктами класів. У UML чотири типи зв’язку: Залежність, Асо-
ціація, Узагальнення, Реалізація.
Тип зв’язку візуалізується формою лінії та стрілки:
Залежність
Асоціація
Узагальнення
Реалізація
Завдяки поліморфізму
відбувається реалізація
механізму інтерфейсів.
Наприклад, щойно користувач
звертається до операції
масштабування фігури
в  графічному редакторі
через інтерфейс редагування,
визначається клас об’єкта
і  викликається відповідна
операція класу.
Приклад 3.
public: колірФарбування Соlоr —
(255, 0, 0).
Приклад 4.
Операції класу:
+ намалювати (фігура Прямо-
кутник = квадрат, колірФарбу-
вання Соlоr = (255,0,0))
Приклад 5.
Формат опису об’єкта:
Ім’я об’єкта : клас, якому
він належить (з підкреслен-
ням), наприклад, прямокутник:
Фігура.
238 Розділ 4
Розглянемо зазначені типи зв’язків (рис. 12.14).
Залежність (використання) — зв’язок, при якому зміни
в описі одного класу впливають на інші класи. Один із цих
класів буде незалежним, а інший — залежним, стрілка на
діаграмі спрямована до залежного класу.
Асоціація — набір зв’язків між класами. Стрілка лінії
зв’язку Асоціація спрямована на клас, який визначає правила.
Якщо звернутися до прикладу БД, у якій є сутності вчитель
і учень, то Асоціація навчає, а на діаграмі стрілка буде спря-
мована від учителя до учня з написом «навчає», для Асоціації
«навчає» — спрямована від учителя до назви класу, в якому
він є класним керівником. Асоціації можуть бути подвійними,
тоді вони зображуються просто лінією без стрілки.
Узагальнення — зв’язок, який реалізує властивість ООП
спадковість. На діаграмі він позначається лінією із замкне-
ною стрілкою, що вказує на батьківський клас.
Реалізація — зв’язок, який відображає взаємодію між кла-
сами. Один клас визначає правила, яких має дотримуватись
інший клас. Взагалі реалізація показує зв’язки між інтер-
фейсами та класами, які реалізують ці інтерфейси. У цьому
зв’язку взаємозалежність зв’язків Узагальнення та Залежності.
Розглянемо більш детально програмування графічного ре-
дактора на прикладі 6.
Приклад 6.
Почнемо з найменшого елемента графічно-
го зображення. Точка має параметри — коор-
динати х і у. Ці параметри встановлюються
вказівником для миші. Тому точка буде мати
метод фіксації положення вказівника — взя-
ти координати та метод встановлення цих
координат для точки.
Точку можна переміщувати, тому клас
Точка матиме метод переміщення з параметра-
ми-координатами, адже переміщення буде ви-
значатися новими координатами (рис. 12.15).
Точка
Узяти х
Узяти у
Установити х
Установити у
Перемістити в х, у
Рис. 12.15. Опис класу Точка
Аналогічно створюється клас Лінія.
Проте в цьому випадку встановлюється
не кожна окрема координата точок її кінців,
а відразу використовується точка як об’єкт,
і клас Відрізок опише такі методи:
• Взяти Точку1 (вона вже має координати)
• Взяти Точку 2
• Установити Точку 1 (вже описано, як
встановлюють координати точки)
• Установити Точку 2
• Перемістити в Точку (йдеться про пере-
міщення вузла лінії як точки, що вже
описано)
Елементи фігури складаються з точок і лі-
ній, а зображення фігури створюється з еле-
ментів. У такій організації класів графічного
редактора будуть задіяні два типи взаємо-
зв’язків: Асоціація та Узагальнення.
Фігура визначається елементом — це Асо-
ціація; стрілка спрямована від фігури. А еле-
менти є нащадками точок і ліній (рис. 12.16).
Класи графічного
редактора:
• Фігура
• Елемент фігури
• Точка
• Лінія
Зв’язки
Залежність
Узагальнення
Реалізація
Асоціація
• бінарна
• багатовимірна
• агрегатна (композиція)
Рис. 12.14. Зв’язки між класами
на діаграмі класів
23912.5. Моделювання даних...
Фігура
Елемент Фігури
Перемістити
Точка
Узяти х
Узяти у
Установити х
Установити у
Перемістити
Точка
Узяти Точку1
Узяти Точку2
Установити Точку1
Установити Точку2
Перемістити
Рис. 12.16. Приклад діаграми класів для графічного редактора
У ході створення діаграми класів не завжди доцільно
створювати необхідні класи, оскільки їх можна взяти з уже
наявних проектів інших систем та адаптувати під своє про-
грамне забезпечення.
Запитання для перевірки знань
Що таке діаграма класів?
З яких елементів на діаграмі створюють
зображення класу?
Які типи зв’язків існують у UML між об’єкта-
ми класів?
Наведіть приклади реалізації на діаграмі
властивості ООП інкапсуляція, наслідуван-
ня, поліморфізм.
Відредагуйте діаграму (див. рис. 12.8), ука-
жіть правильну назву об’єктів малювання
по відношенню до класу.
Опишить, як показати на діаграмі реда-
гування графічної фігури за допомогою
таких  операцій, як вилучити, копіювати,
вирізати.
1
2
3
4
5
6
Завдання для самостійного виконання
Доопрацюйте діаграму класів, наведену на
рис. 12.16. З’ясуйте, який зв’язок між об’єк-
тами Точка, Відрізок і  накресліть його. До-
дайте атрибути у  вказані методи. Додайте
методи у клас Фігура.
Розгляньте діаграму класів на рис. 12.16.
Вона дає уявлення про створення графіч-
ного зображення взагалі. Створіть частину
діаграми побудови будь-якого об’єкта по-
фарбованого векторного зображення.
1 2
Діаграма класів містить
і  елементи, які візуалізують
інтерфейс (рис. 12.17). Після
interface зазначають
його ім’я, яке за аналогією
з  мовою Java починається
з  літери І. У  мові С++ реалізація
інтерфейсу відсутня, його
реалізують як перелік методів,
а  зміст методів реалізовано
в  конкретних класах
interface
ІРедагування
+ перемістити
+ замінити розмір
+ повернути
Рис. 12.17. Зображення
інтерфейсу на діаграмі класів
240
12.6.

Діаграми послідовностей та діяльностей
Пригадайте особливості діаграми прецедентів. Які вона має
складові?
Діаграми класів і об’єктів моделюють статичний стан сис-
теми програмного забезпечення (ПЗ). Взаємодія об’єктів є ди-
намічною, якщо проявляється в передачі та прийомі повідом­
лень. У проектуванні ПЗ повідомленнями є виклик методів
і результат їх відпрацювання.
Для графічного зображення динамічної взаємодії об’єктів
користуються діаграмами послідовностей (sequence diagram),
уточнюють діаграми прецедентів.
На діаграмах послідовностей об’єкти позначено прямокут-
никами з  підкресленими іменами (щоб відрізнити їх від
класів), повідомлення  — лініями зі стрілками. Суцільними
лініями показано виклики методів, а  пунктирними  — ре-
зультати відпрацювання методів.
Пригадайте, як ми складали таблицю прецедентів вступу
випускників до закладу вищої освіти (§ 12.4). Створимо тепер
діаграму послідовностей (рис. 12.18).
податиЗаявуНаВступ
результатиЗНО
результатРейтингу
результатиЗНО
рейтинг
ученьАбітурієнт (стан)
учень1:Абітурієнт :Приймальна комісія :Конкурсна комісія
Рис. 12.18. Діаграма послідовностей вступу учнів до закладу вищої освіти
Зміст діаграми у словесній формі можна подати так: учень
хоче стати студентом певного факультету. З цією метою він
подає заяву в приймальну комісію, а та приймає від нього
заяву, учень змінює стан на абітурієнта, конкурсна комісія
перевіряє кількість балів і запитує результати ЗНО, приймає,
визначає рейтинг учня серед абітурієнтів факультету, передає
їх до приймальної комісії. Учень отримує результат з при-
ймальної комісії.
На діаграмі маленькі прямокутники на вертикальних
пунктирних лініях під кожним об’єктом наочно показують
часову послідовність їх взаємодії (їх можна не малювати).
Діаграма послідовностей
відображає взаємодію об’єктів,
упорядкованих за часом.
24112.6. Діаграми ...
Альтернативою діаграми послідовностей є діаграма взаємо-
дій. На ній зазначається не назва операції, а її порядковий
номер. Оскільки від одного об’єкта може викликатися кіль-
ка методів, а між викликами отримувались результати, то
в розташуванні номерів за часом не буде впорядкованості.
На рис. 12.19 подано заготовку діаграми взаємодій: по-
казано, як у процесі створення графічного зображення ко-
ристувач зафарбовує фігуру. Замість методів і їх результатів
у діаграмі взаємодій проставляється нумерація в послідов-
ності виконання.
вибір
вибір
відкрити
результатиВПам’яті
застосуватиРезультат
повернутиЗначення(стан)
повернутиЗначення(стан)
:Фарбування (вікно) колір
стиль
:Користувач об’єкт:Фігура
Рис. 12.19. Заготовка для діаграми взаємодій
Часто для створення алгоритму розв’язування задачі ви
користуєтеся блок-схемами. У моделюванні блок-схема є най-
простішим прикладом діаграми діяльностей.
Діаграми діяльностей (Activity Diagrams) є поданням ал-
горитмів процесів, які виконуються в системі. Елементами
такої діаграми є операції.
Діаграми діяльностей уточнюють, деталізують особливість
алгоритмічної і логічної реалізації операцій, візуалізують
послідовність етапів складного процесу, наприклад обчислю-
вального алгоритму або технологічного процесу.
Для певного ПЗ діаграм діяльностей може бути кілька,
і в кожній демонструється перехід однієї послідовності дій до
іншої. На відміну від блок-схем, на яких одинарними стріл-
ками показується послідовний перехід між алгоритмічними
структурами, на діаграмі зображують паралельний потік дій
між елементами.
На рис. 12.20 показано, як зображуються операції до пев-
ного елемента діаграми, які змінюють його стан. У випадку а
прикладом є реалізація розгалуження, у випадку б показано
об’єднання операцій, застосованих до певного елемента. Чер-
воним (випадок в) позначено недопустимий варіант — заборо-
на паралельних операцій до об’єкта та від нього.
У нотаціях UML паралельний потік дій називається смуга­
ми (swimlanes) і є частиною області діаграми тільки тих дій,
за які відповідає цей елемент. Діаграми діяльностей із смуж-
ками мають вигляд басейну з плавальними смугами.
а
	
б
	
в
Рис. 12.20. Вигляд потоків дій на
діаграмі діяльностей
242 Розділ 4
Кожна зі смуг відповідає за певний елемент та в області
яких показано перелік дій з елементом.
Основне завдання діаграми діяльностей — показати по-
слідовність етапів складного процесу та деякі обмеження,
накладені на ці етапи. Розглянемо діаграму діяльностей на
прикладі вступу абітурієнта до вишу. Після подання доку-
ментів особі цікаво, яка вона в рейтингу вступників. Абіту-
рієнт виходить на сервер за відомим йому посиланням для
перегляду списків і свого рейтингу (рис. 12.21).
Запит
Запит
до БД
Інформація
для клієнта
Вибір даних
Передача
даних
Отримання
даних
Абітурієнт Веб-сервер Сервер БД
Ні
(відсутній)
Ні
Так
є
Доступ
Повтор
Рис. 12.21. Приклад діаграми діяльностей
На діаграмі вертикальними смугами зображено смуги
з іменами Абітурієнт, Веб-сервер, Сервер БД. Їх можна й не
малювати, також смуги можуть бути горизонтальними — все
зображення необхідно розвернути на 90 градусів. Початкова
точка діаграми (або початковий стан об’єкта) — чорний круг,
а кінцева — чорний кружечок у білому кружочку. Стрілками
зображено напрями потоків даних, у зкруглених прямокут-
никах — назву операції.
Запитання для перевірки знань
Для чого створюють діаграми послідовно-
стей?
Які складові відображено на діаграмі послі-
довностей?
Яка різниця між діаграмами послідовностей
і  взаємодій?
Що моделює діаграма діяльностей?
Яка відмінність діаграми взаємодій від діа-
грами активностей?
Як показати на діаграмах процес редагу-
вання графічної фігури з  операціями: вида-
лити, копіювати, вирізати?
1
2
3
4
5
6
Завдання для самостійного виконання
Проаналізуйте приклад, наведений на
рис.  12.21, та  створіть діаграму взаємодій
з  нумерацією повідомлень. Додайте на свій
розсуд додаткові дії.
243
12.7.

Проектування інтерфейсу користувача
Пригадайте, що таке інтерфейс. Які типи інтерфейсів ви
знаєте?
Користувач або замовник працює з програмним засобом
через інтерфейс, отже, за його зручністю й функціональним
призначенням буде надано оцінку працездатності кінцевому
продукту роботи розробників.
Якщо завданням є створення нового сайта для просування
й замовлення певної продукції, то оформлення сайта, враху-
вання в його інтерфейсі вимог різного типу клієнтів відігра-
ватиме значну роль у розповсюдженні та продажі продукції.
Зручне оформлення графічного інтерфейсу є вирішенням про-
блем його графічного дизайну.
Інтерфейс програмного засобу має багато призначень, його
називають також інтерфейсом прикладного програмування.
Інтерфейс прикладного програмування (від англ.
Application Programming Interface, API) — це комплекс
готових класів, методів, структур, констант, які пропону-
ються додатком (бібліотекою, сервісом) або операційною
системою користувачу або іншим програмним засобам.
Оформлення інтерфейсу, його дизайн залежить від того,
для кого призначено програмний засіб, а також від функціо-
нального наповнення засобу.
Інтерфейс користувача (англ. user interface, UI), або ко-
ристувацький інтерфейс, призначено для зручної та комфорт-
ної роботи з програмним засобом. Правильно спроектований
інтерфейс називають дружнім, або інтуїтивно зрозумілим.
Розробка інтерфейсу користувача складається з таких ета-
пів, як дослідження, проектування структури, проектування
дизайну, безпосереднього розроблення. Розглянемо їх.
Етап 1
На етапі дослідження відбувається аналіз призначення ПЗ, статистики використання
подібного типу ПЗ, пристроїв для розміщення розроблюваного ПЗ, функціональних
особливостей ПЗ, які мають бути представлені користувачу, створення списку задач,
які будуть реалізовані в  інтерфейсі користувача.
Етап дослідження є  основою для етапу проектування, на якому створюється
структура інтерфейсу, оскільки завдання, реалізовані в  інтерфейсі, складаються
з  кроків їх розв’язування, то представлений інтерфейс ПЗ може мати кілька екранів
для уможливлення виконання всіх вимог до ПЗ.
Етап 2
На етапі проектування структури інтерфейсу створюють прототип інтерфейсу  —
зазвичай два: чорновий та фінальний. У  чорновому створюють схему інтерфейсу із
зонами для груп елементів без їх детального опису. Чернетка дозволяє з’ясувати,
наскільки складним буде інтерфейс, чи достатньо одного екрана для реалізації всіх
вимог до ПЗ. Фінальний прототип містить опис елементів у  зонах з  їхнім призна-
ченнням і  зв’язками з  іншими елементами.
Цей етап часто завершується створенням діаграми взаємодій.
Сучасний вигляд інтерфесу
SILK-інтерфейс (від англ.
Speech   — мова, промова,
Image — зображення, образ,
Language — мова, Knowledge  —
знання) дозволяє керувати
програмою на основі поведінки
користувача. В  проектуванні
таких інтерфейсів використо-
вувалися мовні та біометричні
технології: команди можна
­
давати, промовляючи їх, а  в
деяких іграх можна
­
керувати
персонажем через рух корис-
тувача.
244 Розділ 4
Етап 3
Етап проектування дизайну інтерфейсу розв’язує питання оформлення інтерфейсу
(кольорова гама, розмір і  вигляд елементів, їхнє взаємне розташування, наявність
графічних і  анімаційних ефектів). Після створення концепції дизайну є  уявлення,
яким буде інтерфейс ПЗ.
Етап 4
Етап безпосереднього розроблення інтерфейсу передбачає наявність макетів усіх
екранів інтерфейсу, необхідних матеріалів та документації дають можливість роз-
робникам перейти до наступного етапу.
Розглянемо деякі вимоги до дизайну інтерфейсу.
• Загальний вигляд інтерфейсу визнача-
ється взаємним розташуванням його еле-
ментів. Зазвичай елементи групують за
призначенням.
• Для визначення розмірів груп елементів
користуються правилами пропорції (на-
приклад, принципом «золотого перети-
ну»). Кожний елемент має своє призна-
чення, про що є підказка. Зручно, коли
вона з’являється у спливаючому віконці.
Такі підказки не виключають наявності
довідки щодо використання ПЗ. Інтерфейс
має бути інтуїтивно зрозумілим, бо часте
звертання до довідки уповільнює роботу.
• В інтерфейсі програмних засобів для ко-
лективного користування групою слід обе-
режно розміщувати (а інколи є сенс і при-
ховати) команди особистого налагодження
засобу. Працівники звикають до певного
вигляду інтерфейсу, і щоразу пристосову-
ватися до змін, уведених попереднім ко-
ристувачем програми, не зручно.
Описані етапи розробки інтерфейсу складають основу ди-
зайну інтерфейсу ПЗ, в якому поєднано:
• UI-дизайн (від. англ. User Interface — користувацький
інтерфейс);
• UX-дизайн (від. англ. User Еxperience — досвід взаємодії);
• продуктовий дизайн.
Користувацький інтерфейс (інтерфейс, призначений для
користувача) є більш вузьким поняттям у визначенні інтер-
фейсу. Як вже наголошувалося, користувацький інтерфейс
складається з певного комплексу графічно оформлених тех-
нічних елементів (кнопки, селектори та інші поля). Його
призначенням є допомога користувачеві в організації зручної
взаємодії з програмою або сайтом.
Проте призначення інтерфейсу цим не обмежуються: в ін-
терфейсі також мають бути реалізовані завдання програмно-
го засобу. Якщо створюється інтерфейс сайта певних послуг,
то враховуються запити користувача до цих послуг, зручність
у їх виклику, наявність довідкових матеріалів до послуг, ор-
ганізцій, що забезпечують послуги, взаємодія з ними тощо.
Якщо створюють новий програмний засіб, наприклад гра-
фічний редактор, то при його запуску користувачеві забезпе-
чуються зручні умови його використання та виклик функцій
для роботи з ним. Інтерфейси графічних редакторів врахову-
ють також досвід користувача: так, стандартний, убудований
в операційну систему MS Windows растровий графічний ре-
дактор Paint розрахований на менш досвідченого користувача,
Правила оформлення
інтерфейсу користувача
• Групування елементів
(меню, форми, блоки)
• Вирівнювання елементів
• Єдиний стиль елементів
за  формою та кольором
• Наявність вільного простору
для розмежування блоків
У 1990 році дослідники
Якоб Нільсен (на фото зліва)
і Рольф Молич оголосили
10  евристик  — правила, що
найчастіше використовуються
в проектуванні дизайну
інтерфейсу.
24512.7. Проектування...
ніж інші потужні редактори, які передбачають певний досвід
для їх повнофункціонального використання.
UX-дизайн враховує компоненти взаємодії «користувач —
ПЗ»: інформаційну архітектуру, проектування взаємодії,
інтерактівність користувацького інтерфейсу, його наповнення.
Продуктовий дизайн — це весь процес створення інтер-
фейсу, який починається з аналізу розв’язання проблеми
представлення ПЗ користувачеві або замовнику до розробки
плану тестування інтерфейсу на відповідність вимогам та
оформлення декількох його концепцій.
Фахівці з розробки продуктового дизайну називаються
продуктовими дизайнерами (Product Designer) — цей фах
з’явився в новому тисячолітті (після 2000 року).
Зазвичай продуктовим дизайном опікується група фахів-
ців, які підтримують зв’язок із розробниками впродовж часу
створення інтерфейсу. У сфері просування продукції продук-
тові дизайнери також взаємодіють із працівниками відділу
маркетингу. Великі компанії ми пізнаємо за фірмовим лого-
типом. Зазвичай логотип є обов’язковим елементом дизайну
сайта компанії чи закладу. Пол Ренд сформулював тестові
запитання, відповіді на які однозначно окреслять логотип
компанії. За тестами славетного дизайнера й сьогодні визна-
чають ефективність використання логотипів.
Зупинимось на кількох принципах проектування.
При створенні дизайну інтерфейсу на основі правил Золо-
того перетину користуються співвідношенням 1 : 1.618 для
розмірів та взаємного розташування елементів інтерфейсу.
Поєднання симетрії і правила золотого перетину сприяє най-
кращому зоровому сприйняттю і появі відчуття краси і гар-
монії. Часто на основі правила золотого перетину створюють
розмітку веб-сторінок. Так, логотип Apple (надкушене яблуко)
побудований за принципом золотого перетину.
Гаманець Міллера (закономірність виявлена американським
вченим-психологом Джорджем Міллером) полягає в тому, що
короткочасна людська пам’ять може запам’ятати і повторити
лише 7 (± 2) елементів. Цей принцип поширено використову-
ється в побудові інтерфейсів програм. Якщо кількість елемен-
тів меню (пунктів меню, кнопок, закладок) більше від 7 (або
насамкінець 9), то їх намагаються згрупувати.
Запитання для перевірки знань
Назвіть етапи розроблення інтерфейсу.
Дайте визначення поняттю продуктового
дизайну.
Які проблеми розв’язує група продуктових
дизайнерів?
До якого етапу розробки інтерфейсу графіч-
ного редактора можна віднести створення
діаграми взаємодій для нового зображення,
що створюється з  «0» або завантажується
з  файла?
Чим відрізняються обов’язки дизайнера
і  продуктового дизайнера?
Створіть макети інтерфейсу вікон графічно-
го редактора.
1
2
3
4
5
6
Американського дизайнера
і арт-директора Пола Ренда
називають легендою епохи. Він
є автором розробки логотипів
відомих фірм IBM, UPS, Enron,
Morningstar, Inc, Westinghouse,
ABC, а також логотипа NeXT,
розробленого на замовлення
Стіва Джобса.
Принципи проектування
дизайну інтерфейсів
• Золотий перетин
• Гаманець Міллера
• Принцип групування
• Бритва Оккама або KISS
• Видимість відображає
корисність
• Розумне запозичення
246
12.8.

Тестування та оцінювання програмного забеспечення
Пригадайте етапи розробки інтерфейсу ПЗ. Яке призначення
прототипів на етапі проектування структури?
Для створення інтерфейсу ПЗ розробники використовують
прототипи інтерфейсу. Реалізація кожного етапу розробки
ПЗ теж базується на створенні прототипів, тому прототипи
діляться на типи. Ви вже дізналися про інтерфейсні прототи-
пи (їх ще називають горизонтальними прототипами).
Тестування ПЗ  — це процес перевірки, наскільки ПЗ від-
повідає вимогам і  очікуванням. Розроблені для цього тес-
ти мають основою задокументовані вимоги замовника.
Горизонтальним прототип називають тому, що в ньому не
передбачено реалізацію видів архітектури, функції системи,
натомість у ньому втілюються особливості інтерфейсу корис-
тувача.
У такому прототипі під час виконання переміщення між
об’ктами зазначатиметься, що саме має знаходитися в місці
переміщення, оскільки здійснення функціональних операцій
є особливостями іншого типу прототипів.
Вертикальний (або структурний) прототип не обмежуєть-
ся інтерфейсом користувача. У ньому враховано всі етапи
розроб­лення ПЗ. Вертикальний прототип дозволяє перевіряти
правильність архітектурних рішень.
Прототипи створюють для перевірки працездатності ПЗ:
на початку розроблення вимог до ПЗ не завжди є можливість
встановити однозначність цих вимог. Крім того, вже в проце-
сі розроблення можуть виникнути доповнення до вимог. Для
з’ясування відповідності вимогам розрізняють одноразові (або
дослідницькі) та еволюційні прототипи.
Одноразові прототипи створюють для отримання відповіді
на певне питання щодо ПЗ, для покращення певних вимог до
програмного засобу. Еволюційні прототипи вважають архі-
тектурним «фундаментом» для поступового створення кінце-
вого результату з урахуванням появи нових вимог і з’ясуван-
ня нюансів існуючих.
Створення еволюційного прототипу є одним з компонентів
моделі спірального циклу розробки ПЗ: розроблюється прото-
тип початкової версії ПЗ, який надалі модифікується до ос-
таточного результату, який відповідає меті і вимогам проекту
(рис. 12.22).
Створення прототипу  — це процес, який включає ство-
рення чернеток, їхню демонстрацію та критичне обгово-
рення.
Прототипом певних етапів може бути і код, і написи на па-
пері (дошці). Доопрацювання прототипу відбувається на основі
тестування системи або її частини на відповідність вимогам.
На кожному етапі розроблення ПЗ створюють прототипи.
Горизонтальний прототип
демонструє функціональні
можливості ПЗ (але не
забезпечує їх працездатність):
показує, як виглядає
користувацький інтерфейс
(кольори, графічні елементи,
вікна та елементи управління)
і  визначає структуру навігації.
Розробка
прототипу ПЗ
Розробка
вимог
Використання
прототипу ПЗ
Розроблене
ПЗ
Перевірка
ПЗ
Відповідає вимогам, меті
Не відповідає
вимогам, меті
Рис. 12. 22. Схема використання
еволюційного прототипу
24712.8. Тестування та...
Прототип вимог до ПЗ — це часткова реалізація програм-
ного забезпечення, створена з метою допомогти розробникам,
користувачам і клієнтам краще зрозуміти вимоги до системи
та з’ясувати питання, наскільки можливо здійснити задово-
лення вимог та розробити ПЗ взагалі.
Програмні прототипи є частковими реалізаціями ПЗ, для
демонстрації та перевірки певних його функціональних мож-
ливостей: модульне, інтеграційне і системне тестування.
Модульним тестуванням називають перевірку працездатно-
сті окремих модулів системи. Якщо модулі об’єднують в ок-
ремі компоненти ПЗ, здійснюється інтегроване (або об’єднане)
тестування. На цьому етапі також тестують користувацький
інтерфейс. Наприкінці, коли вже всі модулі об’єднані та взає-
модіють як єдина система, здійснюється системне тестування.
Уведене в експлуатацію ПЗ також підлягає тестуванню,
оскільки воно використовується користувачами в абсолютно
різних середовищах. Можуть виникнути помилки, пов’язані
саме із взаємодією ПЗ із системним і апаратним середовищем.
Часто тестування на основі прототипів відповідає V-моделі,
яку ще називають прототипним розробленням через тесту-
вання. Свою назву V-модель отримала завдяки формі її гра-
фічного подання (рис. 12.23).
Планування проекту
і  вимог
Впровадження,
супроводження
Аналіз вимог, ТЗ Системне тестування
Розробка архітектури
Об’єднання
і тестування
Деталізація проекту
Модульне
тестування
Створення
Рис. 12.23. Схема V-моделі
Розробка ПЗ також може здійснюватися на основі спіраль-
ної моделі з використанням прототипів є циклічним проце-
сом. У ньому відбувається багаторазове повторення процесів
створення прототипів, тестування та коректування проекту-
вання до досягнення мети розробки.
План тестування — це документ, в якому описано весь об-
сяг робіт із тестування: опис ПЗ, стратегія, розклад, критерії
початку та закінчення тестування, а також необхідне облад-
нання, спеціальні знання та оцінки ризиків з варіантами їх-
нього розв’язання.
Процес тестування ПЗ
пов’язаний з  безпосереднім
розроб­ленням ПЗ і  впливає
на його життєвий цикл.
Життєвий цикл розроблення
ПЗ — це  період від замовлення
ПЗ до його кінцевої реалізації
з впровадженням, експлуатацією
та супроводом.
Результати роботи
з  прототипом дозволяють
своєчасно коригувати вимоги
до ПЗ. Після цього перед
розробниками постають лише
перевірені й  деталізовані
завдання.
248 Розділ 4
Тест-дизайн — це етап тестування ПЗ, на якому проекту-
ються та створюються тести (тест-кейси) відповідно до визна-
чених критеріїв якості ПЗ та мети тестування.
У процесі здійснення тест-дизайну тест-аналітик визначає,
ЩО тестувати, а тест-дизайнер  — ЯК тестувати.
Існують різні методи тестування. Розглянемо деякі з них.
Еквівалентний розподіл — це перевірка правильної роботи
програмного засобу для допустимого діапазону значень вхід-
них даних.
Наприклад: є діапазон значень певних параметрів ПЗ (від
14 до 60) — під час тестування перевіряється робота ПЗ для
значень діапазону та для значень, за його межами. Або під
час тестування програми з визначення кореня квадратного
рівняння необхідно вводити значення параметрів, при яких
є розв’язок та при яких він відсутній.
Аналіз граничних значень — для наведеного вище при-
кладу беруться значення межі 14 та 60, а також значення,
менші за 14 та більші від 60.
Причина/Наслідок — під час проектування системи керу-
вання базою даних необхідна функція додавання в таблицю
даних: здійснюється перевірка: викликається функція дода-
вання, вводиться значення, підтверджується додавання (при-
чина) та перевіряється, чи присутнє в таблиці нове значення
(наслідок).
Передбачення помилки — при введенні нового номера те-
лефону в базу даних перевіряється кількість цифр і видаєть-
ся повідомлення в разі неправильної кількості.
Вичерпне тестування — відбувається введення комбінацій
значень всіх вхідних даних, не завжди використовується
у випадку великої кількості вхідних даних.
Попарне тестування — формування наборів вхідних даних,
при якому значення одного параметру хоч би раз використо-
вувалось із значенням кожного іншого параметру.
У процесі тестування визначається якість ПЗ.
Якість програмного забезпечення (Software Quality) ви-
значається сукупністю його характеристик, які відповідають
установленим вимогам і очікуваним потребам.
Це процес оцінювання системи або її компонентів. Він
здійснюється з метою визначення, чи задовольняють резуль-
тати етапів розробки, сформованих на початку їх виконання
такі, як мета, термін завдання кожного етапу.
Запитання для перевірки знань
З якою метою розробляють прототипи?
Для чого розробляють прототип вимог
до  ПЗ?
Які завдання розв’язують вертикальні та го-
ризонтальні прототипи?
Яка різниця в розробці ПЗ на основі V-мо-
делі та спіральної моделі?
Як здійснюється тестування ПЗ?
З чого складається оцінювання ПЗ?
1
2
3
4
5
6
Часто в описі процесів
тестування зустрічаються
абревіатури QA і QC.
QA (від  англ. Quality
Assurance  — гарантія якості)
означає процес забезпечення
якості, який охоплює всі етапи
розробки програмного засобу.
QA передбачає вивчення
процесів і визначення всіх
умов і  обставин, які можуть
вплинути на якість розробки
та її кінцевий результат. QC
(від  англ. Quality Control)
означає контроль якості ПЗ
при розробці та його аналіз
на відповідність вимогам на
певному етапі.
24912.9. Системна архітектура...
12.9.

Системна архітектура.
Апаратні та програмні рішення
Що таке архітектура ПЗ?
Замовити програмне забезпечення (ПЗ) можуть організації,
що мають свою структуру, обчислювальні пристрої, мережу,
програмні засоби. Сучасні організації застосовують інформа-
ційні технології для вдосконалення методів роботи.
Ознайомимося з ПЗ, у якому враховано бізнес-діяльність
організації, її зв’язки із зовнішніми структурами, а також
яке задовольняє інформаційні потреби всіх співробітників,
служб і підрозділів. Таке ПЗ називають інформаційною сис-
темою (ІС).
Системною називають архітектуру, яка визначає сукуп-
ність методологічних, технологічних і  технічних рішень
для забезпечення інформаційної підтримки діяльності
організації.
Системна архітектура визначає загальний склад ІС орга-
нізації й зазвичай має такі складові: архітектуру додатків,
архітектуру даних і архітектуру обладнання.
Архітектуру додатків становлять функціональний і компо-
нентний склад ІС. До її складу належать додатки, які під-
тримують виконання бізнес-процесів, інтерфейси взаємодії
підсистем та ІС із зовнішніми системами, засоби і методи
розробки та супроводу додатків.
Архітектурою даних є методи взаємодії складових системи
і зберігання даних, безпосередньо сховища даних і правила
доступу до них.
Архітектуру обладнання складають мережна архітектура,
програмні та апаратні засоби обчислювальної техніки.
Як ви знаєте, для опису різних моделей архітектури ви-
користовують графічні схеми, мови графічного моделювання,
правила яких розроблені на основі стандартів.
IDEF є сукупністю стандартів моделювання та проектуван-
ня ІС. Кожна складова цієї сукупності описує окрему модель
архітектури. Спершу був розроблений стандарт IDEF0, далі
додавалися моделі, і на місці 0 з’явились цифри 1, 2, … .
Стандарт ARIS (Architecture of Integrated Information
System, ARIS) є сукупністю різних методів моделювання, які
відображають різні аспекти ІС. ARIS призначено для розробки
ІС — від визначення вимог до опису реалізації. У цій архітек-
турі враховано опис організаційної структури, моделювання
бізнес-процесів, документування архітектури додатків, даних
тощо.
ARIS пропонує діаграму eEPC (extended Event Driven Process
Chain — розширений ланцюжок процесів керування подія-
ми). Вона розширює можливості сукупності стандарта IDEF
IDEF1 моделює інформаційні
потоки, а  IDEF3 призначений
для стандартизації
документування процесів
у  системі та для моделювання
процесів, у  яких важливими
є  послідовність виконання дій
і  взаємозалежність між ними.
Стандарт IDEF0 було
розроблено в  1981 році під
час виконання програми
автоматизації промислових
підприємств з  назвою ICAM
(Integrated Computer Aided
Manufacturing). У  назві IDEF
ураховано назву програми:
ICAM DEFinition.
Моделювання за вказаними
стандартами використовує
графічні й  текстові засоби.
З  графічних засобів  — діаграми,
які й  описують різні погляди на
архітектуру системи.
250 Розділ 4
та призначена для детального опису бізнес-процесу, модель
якого являє собою послідовність подій і бізнес-функцій, спря-
мованих на досягнення заданого результату.
Можна також назвати міжнародний стандарт ISO — стан-
дарт ISO серії 9000, розроблений на основі стандарту BS 7750
«Специфікації систем экологічного менеджменту» (Specification
for Environmental Management Systems) Британською органі-
зацією стандартизації. Розуміння важливості проектування
архітектури організації сприяло появі стандарту ISO 15704.
Системна архітектура сучасних організацій моделюється
на основі дотримання низки принципів.
• Серверне ПЗ функціонує в корпоративній
обчислювальній мережі організації.
• Клієнтське ПЗ розподілено по світу
та функціонує в будь-якому мережному
середовищі.
• Використовує власні інструментальні за-
соби розробки ІС.
• Модель ІС має модульну структуру, що
забезпечує поетапну розробку й упрова-
дження.
• Має єдиний підхід до розробки та стан-
дартизації ПЗ.
• Має єдиний стандартний користуваль-
ницький інтерфейс.
Запитання для перевірки знань
Що називають  системною архитектурою?
Назвіть основні складові системної архітек-
тури.
Навіщо створювати моделі системної архі-
тектури?
Поясніть призначення складових системної
архітектури.
Як ви розумієте поняття ІС організації?
Для чого розробляють стандарти архітекту-
ри ІС?
1
2
3
4
5
6
Завдання для самостійного виконання
Зверніться до пошукової системи, у мережі
Інтернет знайдіть і опишить нові стандарти
й тренди в розробці ПК.
Тест 12
Тестове завдання
з  автоматичною перевіркою
результату на  сайті
interactive.ranok.com.ua
251
Комп’ютерний словник
Адаптивність — особливий підхід до розробки
сайта, який дозволяє вже існуючим веб-ре-
сурсам підлаштовуватися під екрани різних
пристроїв.
Адміністрування сайта — комплекс заходів
щодо підтримки чіткого функціонування
сайта, його працездатності, швидкої роботи,
зручності для користувача, регулярного роз-
міщення матеріалів на його сторінках.
Алгоритм послідовного пошуку елемента в ма-
сиві — це алгоритм, що базується на прямому
переборі елементів масиву.
Алгоритм сортування масиву злиттям — це ал-
горитм, у якому масив ділиться на дві части-
ни і виконується сортування окремо кожної
частини.
Архітектура даних — методи взаємодії складо-
вих системи і зберігання даних, безпосеред-
ньо сховища даних і правила доступу до них.
Архітектура програмного забезпечення —
структура, яка складається з програмних
компонентів, їхніх інтерфейсів та опису засо-
бів об’єднання компонентів в єдину систему.
База даних — це сховище даних різного типу
про об’єкти та взаємозв’язки між ними.
Валідація сайта — перевірка синтаксичних
помилок, перевірка вкладеності тегів та інші
критерії.
Віджети — на JavaScript пишуться різні міні-
програми, які використовуються в робочому
просторі і є дуже зручними.
Візуальне моделювання — метод розробки ПЗ,
який для візуалізації, опису, проектування,
документування архітектури ПЗ використовує
графічні моделі.
Віртуальний хостинг (virtualhosting або
sharedhosting) — послуга, в рамках якої ко-
ристувачеві надається частина місця на диску
для розміщення веб-сайтів.
Граф — це множина вершин і множина ліній,
які з’єднують дві будь-які його вершини.
Динамічне програмування — це метод розв’язу-
вання задач шляхом їх розбиття на декілька
однотипних підзадач, які пов’язані між собою.
Діаграма класів (class diagram) — опис сукуп-
ності статичних складових моделі.
Ектор (від англ. аction — дія) — множина
ролей, які виконуються в процесі взаємодії
дійових осіб та прецедентів.
Елемент (Element) — окремий елемент HTML,
можна сказати, що це основні будівельні блоки.
Атрибут (Attr) — представляє атрибут елемента.
Жадібний алгоритм — це алгоритм, для яко-
го застосовується метод розв’язування задач
оптимізації, за допомогою якого на кожному
етапі вибирається такий варіант, який є най-
кращим на цей момент.
Запит — це об’єкт бази даних, призначений
для відбору з таблиці необхідних даних, вве-
дення даних, їх опрацювання і подання ко-
ристувачеві у зручній формі.
Звіт — це об’єкт бази даних, призначений для
відбору з БД необхідних даних і виведення їх
на екран або принтер у зручному для корис-
тувача вигляді.
Каскадні таблиці стилів (англ. Cascading Style
Sheets, або скорочено CSS) — спеціальна мова,
що використовується для опису зовнішнього
вигляду сторінок, написаних мовами розміт-
ки даних.
Кодування алгоритмів — це запис алгоритму
мовою програмування.
Кросбраузерність — правильна верстка сайта,
за її допомогою сторінки сайта однаково ві-
дображаються в різних браузерах. Реалізація
відбувається за допомогою HTML і CSS, а та-
кож різноманітних хаків, в окремих випад-
ках — JavaScript.
Методологія — принципи, сукупність ідей,
методів і засобів, які визначають підхід до
розробки програмного забезпечення.
Мови візуального моделювання (або візуальні
мови) — сукупність формалізованих наборів
графічних символів і правил побудови з них
візуальних моделей.
Модель даних — це структура даних, яка ви-
значає порядок зв’язків між даними.
252 Ком’ютерний словник
Мультимедіа — комп’ютеризована техноло-
гія, яка об’єднує роботу з усіма джерелами
даних, засіб подання різних видів інформа-
ції у цифровому вигляді.
Пошукові системи — повністю автоматизо-
вані механізми, які глибоко сканують усі
задані сервери (відкриті для сканування)
і збирають індекс-інформацію про те, що
і де (на якій веб-сторінці) виявлено.
Прецеденти (use-case), або варіанти викори-
стання, — застосовуються для опису зов-
нішніх вимог до нового ПЗ або вимог удо-
сконалення та зміни вже існуючого, також
правила взаємодії користувача з ПЗ.
Продуктовий дизайн — весь процес створен-
ня інтерфейсу, який починається з аналізу
розв’язання проблеми представлення про-
грамного забезпечення користувачеві або
замовнику до розроблення плану тестуван-
ня інтерфейсу на відповідність вимогам та
оформлення декількох його концепцій.
Просування сайта — комплекс заходів щодо
збільшення відвідуваності веб-ресурсу ці-
льовими відвідувачами
Реляційна модель даних — це модель, у якій
об’єкти і взаємозв’язки між даними пред-
ставляються за допомогою відношень.
Сервер додатків — сервер, на якому створе-
ні додатки, які використовують вашу базу
даних, веб-сервіс тощо.
Серверні додатки — фрагменти коду, які ви-
конуються на стороні сервера, де використо-
вується Java 6.
Серверні скрипти — спеціальні програмні
коди, що застосовуються для реалізації ін-
терактивних «властивостей» сайтів.
Система керування вмістом (англ. Content
Management System, або CMS) — програмне
забезпечення для організації спільного про-
цесу створення, редагування й управління
контентом веб-сайтів.
Система управляння базами даних — це про-
грама, призначена для створення структури
бази даних, уведення, оновлення, пошуку
та опрацювання даних.
Система числення — це сукупність правил
запису чисел за допомогою символів і вико-
нання операцій над ними.
Системна архітектура — архітектура, яка
визначає сукупність методологічних, тех-
нологічних і технічних рішень для забезпе-
чення інформаційної підтримки діяльності
організації.
Структура сайта — базис, фундамент будь-
якого інтернет-ресурсу.
Теги — команди мови HTML. HTML-теги —
ключові слова або символи, які записують-
ся в кутові дужки.
Транзакція — це послідовність операцій над
даними, яка сприймається СУБД як єдине
ціле.
Форма — це об’єкт бази даних, призначений
для введення даних і відображення необхід-
них даних.
Хмарний хостинг (cloudhosting або cloud­
storage) — послуга з розміщення файлів
користувача, за якої дані зберігаються на
багатьох серверах, що розподілені в мережі.
Хóстинг (англ. hosting) — послуга, що вклю-
чає надання дискового простору, підключен-
ня до мережі та інших ресурсів для розмі-
щення фізичної інформації на сервері, що
постійно перебуває в мережі (наприклад,
Інтернет).
Цикл графа — це шлях з одної вершини гра-
фа в ту саму вершину.
Чат-бот (англ. Chatbot) — комп’ютерна про-
грама, розроблена на основі нейромереж та
технологій машинного навчання, яка веде
розмову за допомогою слухових або тексто-
вих методів.
Шлях графа — це послідовність його ребер,
які зустрічаються при переміщенні з одної
вершини в іншу.
Юзабіліті (англ. Usability — зручність і про-
стота використання) — підхід, покликаний
зробити сайти простими у використанні для
користувача, який не потребує додаткового
навчання, тобто має бути орієнтований на
нього інтерфейс.
253
Алфавітний покажчик
А
Адаптована верстка 178
Адміністрування сайта 151
Алгоритм
— Дейстри 104
— Флойда — Уоршелла 108
— пошуку даних 81
— в глибину 100
— в ширину 102
— сортування даних 70, 78
Анімайційний ефект 190
Б
База даних 4
В
Валідація сайта 213
Веб-програмування 198
Візуальне програмування 231
Г
Гіпертекст 159
Граф 94
Д
Динамічне програмування 112
Діаграма
— взаємодій 241
— діяльностей 241
— послідовностей 240
Е
Ектор 234
Ергономіка 219
Ж
Жадібні алгоритми 118
З
Запит 11, 39–42
Звіт 11, 28
І
Інструкція 49
Інтерфейс користувача 45, 243
К
Каскадні таблиці стилів 164
Кодування алгоритмів 58
Кроусбраузерність 184
М
Медіа-запит 174
Методологія 225
Модель даних 7
Мультимедіа 193
Н
Найкоротший шлях у графі 104
О
Обчислювальна геометрія 122
Оператор 31
П
Пошукова система 222
Прецедент 233
Прототип 246
Р
Редактор коду 154
Реляційна модель даних 8
С
Сайт 139
Система керування вмістом 148
Система управління баз даних 5
Структура сайта 145
Т
Таблиця11
Тег 159
Ф
Форма 11
Функція 90
Х
Хостинг сайта 202
Ц
Цільова аудиторія 143
Цикл графу 96
Зміст
Передмова���������������������������������������������������������������������������������������������������������������������������������������������������������������������������3
РОЗДІЛ 1. БАЗИ ДАНИХ
	
1.	 Загальні відомості про бази даних
	
1.1.	 Поняття бази даних і системи управління базами даних
����������������������������������������������������������������������������
4
	
1.2.	 Поняття моделі даних������������������������������������������������������������������������������������������������������������������������������������������������������ 7
	
1.3.	 Основні відомості про системe управління базами даних Access
��������������������������������������������������������
11
	
2.
	
Таблиці
	
2.1.
	
Створення й уведення структури таблиць����������������������������������������������������������������������������������������������������������14
	
2.2.
	
Ключові поля, індекси, зв’язування таблиць������������������������������������������������������������������������������������������������������19
	
2.3.
	
Введення, пошук і редагування даних у таблиці��������������������������������������������������������������������������������������������23
	
2.4.
	
Сортування і фільтрування записів. Операції над таблицями������������������������������������������������������������������26
	
3.
	
Запити
	
3.1.
	
Загальні відомості про запити
����������������������������������������������������������������������������������������������������������������������������������
29
	
3.2.
	
Запити на вибірку даних����������������������������������������������������������������������������������������������������������������������������������������������32
	
3.3.
	
Запити з функціями і з полями, що обчислюються����������������������������������������������������������������������������������������35
	
3.4.
	
Запити з параметрами. Перехресні запити��������������������������������������������������������������������������������������������������������39
	
3.5.
	
Запити на змінення даних��������������������������������������������������������������������������������������������������������������������������������������������42
	
4.
	
Інтерфейс користувача. Основи мови SQL. Імпорт та експорт даних
	
4.1.
	
Створення інтерфейсу користувача для введения даних у базу даних����������������������������������������������45
	
4.2.
	
Основи мови запитів SQL��������������������������������������������������������������������������������������������������������������������������������������������49
	
4.3.
	
Імпорт і експорт об’єктів баз даних������������������������������������������������������������������������������������������������������������������������51
РОЗДІЛ 2. АЛГОРИТМИ
	
5.
	
Алгоритми і числа
	
5.1.
	
Методи проектування і подання алгоритмів����������������������������������������������������������������������������������������������������55
	
5.2.
	
Поняття про кодування і складність алгоритмів��������������������������������������������������������������������������������������������58
	
5.3.
	
Основні поняття теорії чисел
	
6.
	
Алгоритми сортування і пошуку даних
	
6.1.
	
Алгоритми сортування даних
	
6.2.
	
Алгоритми пошуку даних��������������������������������������������������������������������������������������������������������������������������������������������81
	
7.
	
Обробка рядків
	
7.1.
	
Основні відомості про рядки і операції над ними
��������������������������������������������������������������������������������������
88
	
7.2.
	
Функції і методи опрацювання рядків
����������������������������������������������������������������������������������������������������������������
90
	
7.3.
	
Приклади програм обробки рядків����������������������������������������������������������������������������������������������������������������������92
	
8.
	
Графи
	
8.1.
	
Основні поняття і терміни теорії графів������������������������������������������������������������������������������������������������������������94
	
8.2.
	
Способи подання графів у комп’ютері
����������������������������������������������������������������������������������������������������������������
98
	
8.3.
	
Пошук у глибину і ширину��������������������������������������������������������������������������������������������������������������������������������������100
	
8.4.
	
Визначення найкоротшого шляху у графі��������������������������������������������������������������������������������������������������������104
	
9.
	
Динамічне програмування і жадібні алгоритми
	
9.1.
	
Динамічне програмування����������������������������������������������������������������������������������������������������������������������������������������112
	
9.2.
	
Жадібні алгоритми��������������������������������������������������������������������������������������������������������������������������������������������������������118
	
10.
	
Основи обчислювальної геометрії
	
10.1.
	
Базові поняття����������������������������������������������������������������������������������������������������������������������������������������������������������������122
	
10.2.
	
Операції над векторами��������������������������������������������������������������������������������������������������������������������������������������������124
	
10.3.
	
Обчислення площі багатокутника������������������������������������������������������������������������������������������������������������������������127
	
10.4.
	
Побудова опуклої оболонки������������������������������������������������������������������������������������������������������������������������������������131
255
РОЗДІЛ 3. ВЕБ-ТЕХНОЛОГІЇ
	
11.1.
	
Основні тренди у веб-  дизайні
��������������������������������������������������������������������������������������������������������������������������
135
	
11.2.
	
Види сайтів та цільова аудиторія
����������������������������������������������������������������������������������������������������������������������
138
	
11.3.
	
Інформаційна структура сайта������������������������������������������������������������������������������������������������������������������������������145
	
11.4.
	
Системи керування вмістом
��������������������������������������������������������������������������������������������������������������������������������
148
	
11.5.
	
Адміністрування сайта����������������������������������������������������������������������������������������������������������������������������������������������151
	
11.6.
	
Інструменти веб-розробника��������������������������������������������������������������������������������������������������������������������������������154
	
11.7.
	
Мова гіпертекстової розмітки
����������������������������������������������������������������������������������������������������������������������������
159
	
11.8.
	
Каскадні таблиці стилів
������������������������������������������������������������������������������������������������������������������������������������������
164
	
11.9.
	
Проектування та верстка веб-сторінок
��������������������������������������������������������������������������������������������������������
168
	
11.10.
	
Адаптивна верстка
����������������������������������������������������������������������������������������������������������������������������������������������������
176
	
11.11.
	
Кросбраузерність
������������������������������������������������������������������������������������������������������������������������������������������������������
182
	
11.12.
	
Графіка для веб-середовища
������������������������������������������������������������������������������������������������������������������������������
186
	
11.13.
	
Анімаційні ефекти
������������������������������������������������������������������������������������������������������������������������������������������������������
190
	
11.14.
	
Мультимедіа на веб-сторінках������������������������������������������������������������������������������������������������������������������������������193
	
11.15.
	
Об’єктна модель документа
��������������������������������������������������������������������������������������������������������������������������������
196
	
11.16.
	
Веб-програмування та інтерактивні сторінки�������������������������������������������������������������������������������������������� 198
	
11.17.
	
Хостинг сайта
��������������������������������������������������������������������������������������������������������������������������������������������������������������
202
	
11.18.
	
Веб-сервер та база даних
�����������������������������������������������������������������������������������������������������������������������������������
206
	
11.19.
	
Взаємодія «клієнт-сервер»
������������������������������������������������������������������������������������������������������������������������������������
210
	
11.20.
	
Валідація сайта та збереження даних форм
������������������������������������������������������������������������������������������������
213
	
11.21.
	
Прикладний програмний інтерфейс������������������������������������������������������������������������������������������������������������������216
	
11.22.
	
Правила ергономічного розміщення відомостей на веб-сторінці�������������������������������������������������� 219
	
11.23.
	
Пошукова оптимізація та просування веб-сайтів��������������������������������������������������������������������������������������221
РОЗДІЛ 4. ПАРАДИГМИ ТА ТЕХНОЛОГІЇ ПРОГРАМУВАННЯ
	
12.1.
	
Уніфікований процес розробки програмного забезпечення
�����������������������������������������������������������
225
	
12.2.
	
Інструменти для проектної роботи, системи комунікації та контролю версій
�����������������������
228
	
12.3.
	
Мова візуального моделювання архітектури програмного забезпечення������������������������������������231
	
12.4.
	
Діаграми UML. Діаграми прецедентів
��������������������������������������������������������������������������������������������������������������
233
	
12.5.
	
Моделювання даних і архітектури програмного забезпечення
�������������������������������������������������������
236
	
12.6.
	
Діаграми діяльностей та послідовностей
�����������������������������������������������������������������������������������������������������
240
	
12.7.
	
Проектування інтерфейсу користувача
����������������������������������������������������������������������������������������������������������
243
	
12.8.
	
Тестування та оцінювання програмного забезпечення������������������������������������������������������������������������� 246
	
12.9.
	
Системна архітектура. Апаратні та програмні рішення��������������������������������������������������������������������������249
Комп’ютерний словник������������������������������������������������������������������������������������������������������������������������������������������������������������251
Алфавітний покажчик��������������������������������������������������������������������������������������������������������������������������������������������������������������253
Навчальне видання
Руденко Віктор
Д
митрович
РЕЧИЧ
Н
аталія Василівна
ПОТІЄНКО Валентина
О
лександрівна
«Інформатика (профільний рівень)»
підручник для 11 класу закладів загальної середньої освіти
Р
екомендовано
М
іністерством освіти і науки України
Видано за рахунок державних коштів. Продаж заборонено
Редактор Л. А.
К
аюда. Художнє оформлення В. І. Труфена. Технічний редактор А. В. Пліско.
Комп’ютерна верстка І. І. Пікальової. Коректор
Н
. В.
К
расна.
Окремі зображення, що використані в оформленні підручника,
розміщені в мережі Інтернет для вільного використання
Підписано до друку 31.05.2019. Формат 84×108/16.
Папір офсетний. Гарнітура Шкільна. Друк офсетний.
Ум. друк. арк. 26,88. Обл.-вид. арк. 35,10.
Тираж 78 584 прим. (1-й запуск 1–30 000). Зам. № 3206-2019/1.
ТОВ Видавництво «Ранок»,
вул. Кібальчича, 27, к. 135, Харків, 61071.
Свідоцтво суб’єкта видавничої справи ДК № 5215 від 22.09.2016.
Адреса редакції: вул. Космічна, 21а, Харків, 61145.
E-mail: office@ranok.com.ua. Тел. (057) 719-48-65, тел./факс (057) 719-58-67.
Підручник надруковано на папері українського виробництва
Надруковано у друкарні ТОВ «ТРІАДА-ПАК»,
пров. Сімферопольський, 6, Харків, 61052 .
Свідоцтво суб’єкта видавничої справи ДК № 5340 від 15.05.2017.
Тел. +38(057) 712-20-00. Е-mail: sale@triada.kharkiv.ua
Відомості про користування підручником
№
з/п
Прізвище та ім’я
учня / учениці
Навчаль-
ний рік
Стан підручника
на початку
року
у кінці
року
1
2
3
4
5

More Related Content

PDF
10 информ володіна_володін_1_станд_2010_укр
PDF
10 in rud_2018_prof
PDF
Informat10klas
PDF
інформатика, ривкінд
PDF
9 i rud_2017_ua
PDF
7 информ казанцева_стеценко_2015_укр
PDF
інформатика 10 ривкінд
PDF
10 информ володіна_володін_1_станд_2010_укр
10 in rud_2018_prof
Informat10klas
інформатика, ривкінд
9 i rud_2017_ua
7 информ казанцева_стеценко_2015_укр
інформатика 10 ривкінд

What's hot (15)

PDF
Informatyka 8-klas-kazantseva-2021
PDF
10
PDF
11
PDF
ПІДРУЧНИК "ІНФОРМАТИКА 9 КЛАС" О.О. БОНДАРЕНКО ТА ІН. 2017 РІК
PDF
PPT
програмні засоби
PDF
Informatyka 11-klas-rudenko-2019
PDF
8 klas informatika_kazanceva_2016
PDF
PDF
Н. В. Морзе, 9 клас Підручник з інформатики
PDF
9 информ морзе_вембер_2009_укр
PDF
6 i b_2019_ua
PDF
PDF
Inf 7 kl_ruvkind_2015-s
PDF
7 klas informatika_rivkind_2015
Informatyka 8-klas-kazantseva-2021
10
11
ПІДРУЧНИК "ІНФОРМАТИКА 9 КЛАС" О.О. БОНДАРЕНКО ТА ІН. 2017 РІК
програмні засоби
Informatyka 11-klas-rudenko-2019
8 klas informatika_kazanceva_2016
Н. В. Морзе, 9 клас Підручник з інформатики
9 информ морзе_вембер_2009_укр
6 i b_2019_ua
Inf 7 kl_ruvkind_2015-s
7 klas informatika_rivkind_2015
Ad

Similar to 11 in rud_2019 (20)

PPTX
11 клас 17 урок. Поняття моделі даних. Бази даних. СУБД.
PPTX
Презентація Бази даних Урок 1.pptx
PPTX
Презентація Бази даних Урок 1.pptx
PPTX
11 клас 17 урок бд
PPTX
11 клас 17 урок
PPTX
електронний помічник
PPTX
Darabase sql my sql mysql good presentation
PPT
ієрархічна, мережева, реляційна модель бази даних
PPT
бд початок
PPTX
Поняття моделі подання даних, основні моделі подання-1(2).pptx
PPT
Bazi danih
PPTX
бази даних
PDF
Lecture 101 - Intro to databases
PPT
Бази даних 11 клас
PPT
лекція 1 введення в бд та іс
PPTX
Урок 31.pptx
PPTX
DOCX
Lesson22 the concepts of databases and database management systems, their pur...
11 клас 17 урок. Поняття моделі даних. Бази даних. СУБД.
Презентація Бази даних Урок 1.pptx
Презентація Бази даних Урок 1.pptx
11 клас 17 урок бд
11 клас 17 урок
електронний помічник
Darabase sql my sql mysql good presentation
ієрархічна, мережева, реляційна модель бази даних
бд початок
Поняття моделі подання даних, основні моделі подання-1(2).pptx
Bazi danih
бази даних
Lecture 101 - Intro to databases
Бази даних 11 клас
лекція 1 введення в бд та іс
Урок 31.pptx
Lesson22 the concepts of databases and database management systems, their pur...
Ad

More from 4book (20)

PDF
10_iu_g_2018_stand dfgdf gdf gdfgdfgsdfge er gesr
PDF
6_ul_ch_2023-Українська література 6 клас Чумарна
PDF
1_yds1_vor_2018.pdf
PDF
1_yds2_vor_2018.pdf
PDF
1_yds1_vol_2018.pdf
PDF
1_yds2_vol_2018.pdf
PDF
1_yds1_a_2018.pdf
PDF
1_yds2_a_2018.pdf
PDF
1_yds2_i_2018.pdf
PDF
1_yds1_i_2018.pdf
PDF
1_yds2_v_2018.pdf
PDF
1_yds1_v_2018.pdf
PDF
1_yds2_shar_2018.pdf
PDF
1_yds1_shar_2018.pdf
PDF
1_yds2_tag_2018.pdf
PDF
1_yds1_tag_2018.pdf
PDF
1_yds1_bud_2018.pdf
PDF
1_yds2_bud_2018.pdf
PDF
1_yds2_bol_2018.pdf
PDF
1_yds1_bol_2018.pdf
10_iu_g_2018_stand dfgdf gdf gdfgdfgsdfge er gesr
6_ul_ch_2023-Українська література 6 клас Чумарна
1_yds1_vor_2018.pdf
1_yds2_vor_2018.pdf
1_yds1_vol_2018.pdf
1_yds2_vol_2018.pdf
1_yds1_a_2018.pdf
1_yds2_a_2018.pdf
1_yds2_i_2018.pdf
1_yds1_i_2018.pdf
1_yds2_v_2018.pdf
1_yds1_v_2018.pdf
1_yds2_shar_2018.pdf
1_yds1_shar_2018.pdf
1_yds2_tag_2018.pdf
1_yds1_tag_2018.pdf
1_yds1_bud_2018.pdf
1_yds2_bud_2018.pdf
1_yds2_bol_2018.pdf
1_yds1_bol_2018.pdf

Recently uploaded (17)

PDF
Заняття 2. Способи й методи прийняття раціональних управлінських рішень
PPTX
ПРЕЗЕНТАЦІЯ-ВОГНЕВА-Тема 2 Основи та правила стрільби.pptx
PDF
Заняття 5. Методика прийняття рішень на основі APSP (Army Problem Solving Pro...
PDF
Заняття 2. Способи й методи прийняття раціональних управлінських рішень.
PPTX
Молодь – за майбутнє у Північноатлантичному альянсі
PDF
"Фах" (аналіз твору) Айзек Азімов (презентація)
PDF
Інформація щодо фактичного використання бюджетних коштів в липні 2025 році
PPTX
Презентація 7 клас Урок 1. Комп'ютерні мережі
PDF
Заняття 1. Вимоги до управлінських рішень командира та їх класифікація
PPTX
ПРЕЗЕНТАЦІЯ-ПРАВОВА-Тема 01. Зан. 01.pptx
PDF
Заняття 1. Вимоги до управлінських рішень командира та їх класифікація
PPTX
Підсумки атестації випускників 2025 року
PPTX
З любов'ю до цілого світу (до 75-річчя від дня народження Василя Михайловича ...
PDF
звіт директора за 2024-2025 Стр_Кут_ОЗЗСО
PPT
Підсумки атестації здобувачів другого (магістерського) рівня вищої освіти 20...
PDF
Заняття 4. Інструменти критичного мислення під час прийняття рішень (AltA).
PDF
Заняття 4. Інструменти критичного мислення під час прийняття рішень (AltA).
Заняття 2. Способи й методи прийняття раціональних управлінських рішень
ПРЕЗЕНТАЦІЯ-ВОГНЕВА-Тема 2 Основи та правила стрільби.pptx
Заняття 5. Методика прийняття рішень на основі APSP (Army Problem Solving Pro...
Заняття 2. Способи й методи прийняття раціональних управлінських рішень.
Молодь – за майбутнє у Північноатлантичному альянсі
"Фах" (аналіз твору) Айзек Азімов (презентація)
Інформація щодо фактичного використання бюджетних коштів в липні 2025 році
Презентація 7 клас Урок 1. Комп'ютерні мережі
Заняття 1. Вимоги до управлінських рішень командира та їх класифікація
ПРЕЗЕНТАЦІЯ-ПРАВОВА-Тема 01. Зан. 01.pptx
Заняття 1. Вимоги до управлінських рішень командира та їх класифікація
Підсумки атестації випускників 2025 року
З любов'ю до цілого світу (до 75-річчя від дня народження Василя Михайловича ...
звіт директора за 2024-2025 Стр_Кут_ОЗЗСО
Підсумки атестації здобувачів другого (магістерського) рівня вищої освіти 20...
Заняття 4. Інструменти критичного мислення під час прийняття рішень (AltA).
Заняття 4. Інструменти критичного мислення під час прийняття рішень (AltA).

11 in rud_2019

  • 2. УДК 004:37.016 (075.3) Р83 Руденко В. Д. Р83 Інформатика (профільний рівень) : підруч. для 11 кл. закл. загал. серед. освіти /  В. Д. Руденко, Н. В. Речич, В. О. Потієнко. — Харків : Вид-во «Ранок», 2019. — 256 c. : іл. ISBN 978-617-09-5237-0 УДК 004:37.016 (075.3) © Руденко В. Д., Речич Н. В., Потієнко В. О., 2019 © ТОВ Видавництво «Ранок», 2019ISBN 978-617-09-5237-0 Рекомендовано Міністерством освіти і науки України (наказ Міністерства освіти і науки України від 12.04.2019 № 472) Інтернет-підтримка Електронні матеріали до підручника розміщено на сайті interactive.ranok.com.ua Видано за рахунок державних коштів. Продаж заборонено
  • 3. Шановні учні та учениці! В 11 класі завершується вивчення основ шкільного курсу інформатики. Ви досягли певного рівня інформаційної культури і здатні самостійно оволодівати сучасними інформаційними технологіями. Та інформатика — дуже динамічна наука. Її подальші напрямки й темпи розвитку значною мірою визначати- муться рівнем підготовки людей, які мають ґрунтовні знання в цій галузі. Цього року ви будете працювати з новими програмними засобами, освої- те розробку найпростішої бази даних навчального призначення в середовищі Access, навчитеся створювати веб-сайти з використанням систем керування вмістом, реалізовувати базові алгоритми засобами мови програмування Python і середовища програмування IDLE та створювати й налаштовувати програми за розробленими алгоритмами, опануєте основні етапи та методологію розробки програмного забезпечення тощо. Бажаємо вам успіхів, авторський колектив Підручник, який ви тримаєте в руках, — ваш надійний помічник. У ньо- му ви знайдете завдання для самостійного виконання — виконуйте їх на комп’ютері з натхненням, повторюйте теоретичний матеріал і викладайте ос- новні положення на папері. Матеріали на підтримку практичних робіт ви знайдете на сайті interactive. ranok.com.ua, де також маєте змогу пройти комп’ютерне тестування з автома- тичною перевіркою результату. Різнорівневі питання для перевірки знань і завдання для самостійного ви- конання відповідають рівням навчальних досягнень: — початковий і середній рівні — достатній рівень — високий рівень У тексті також використано позначення: — питання на повторення — означення, висновок — зверніть увагу — цікаво знати — завдання для виконання й обговорення в парах або групах — вправи для домашнього виконання
  • 4. РозділРозділРозділРозділРозділРозділРозділРозділРозділРозділ 1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ1. БАЗИ ДАНИХ Приклад 1. Об’єкт УЧЕНЬ може мати такі атрибути: прізвище, ім’я, рік народження, домашня адреса, школа, клас, зріст, а  об’єкт АВТОМОБІЛЬ — такі: модель, потужність двигуна, максимальна швидкість, вантажопідйомність. Уперше термін database (база даних) з’явився на початку 60­х років ХХ ст. і був уведений у вжиток на симпозіумах, організованих фірмою System Development Corporation (США) у 1964  і  1965  роках. Широкого розповсюдження в сучасному розумінні цей термін набув у  1970­ті роки з  розвитком ЕОМ. 1. Загальні відомості про бази даних 1.1. Поняття бази даних і системи управління базами даних Згадайте, з якими базами даних вам доводилося працювати раніше. Наведіть приклади баз даних. Нині важко уявити роботу великого супермаркету, систе- ми резервування й продажу авіаквитків, банку, морського порту, готельного комплексу тощо без використання інфор- маційних систем, основою яких є бази даних (БД). База даних  — це сховище організованої сукупності да­ них різного типу, які відображують стан об’єктів певної предметної галузі та зв’язки між ними. Предметною галуззю називають сферу застосування кон- кретної БД, наприклад школа, будівельна організація, аеро- порт, банк, поліклініка, супермаркет тощо. Об’єктом предметної галузі є те, про кого або про що збері- гаються дані в БД. Якщо предметною галуззю є, наприклад, школа, то її об’єктами можуть бути учні, вчителі, директор школи, кабінети. Кожен об’єкт характеризується сукупністю атрибутів, або властивостей (приклад 1). Далі об’єкти БД будемо позначати так: великими літерами — назва об’єкта, у круглих дуж- ках — перелік його атрибутів, які відокремлюються один від одного комою. Наприклад, об’єкт ПОТЯГ можна позначити так: ПОТЯГ (номер потягу, станція відправлення, час відправ- лення, кінцева станція, час прибуття на кінцеву станцію). За структурою даних БД поділяють на дві основні групи: документальні й фактографічні (рис. 1.1). У фактографічних БД кожен атрибут об’єкта має певну су- купність значень, тобто елементів даних, які є найменшими неподільними одиницями даних. Наприклад, атрибут Центр (див. рис. 1.1) має значення Полтава і Хмельницький, атрибут Площа — значення 28748 і 20600, а атрибут Районів — значен- ня 25 і 13. БД є однією з найважливіших складових сучасної інфор- маційної системи, побудованих на основі комп’ютерних сис- тем і мереж. Робота з БД у таких системах здійснюється за допомогою спеціальної мови БД або програмного забезпечен- ня — системи управління базами даних (СУБД).
  • 5. 51.1. Поняття бази даних... Зберігають звичайні документи (закони, інструкції до ліків, юридич- ні документи, статті, рецепти тощо). Найчастіше з таких БД мож­ на отримати перелік документів або тексти документів, у  яких слід відшукати відповідь на поставлене запитання. Пошук може здійснюва­ тися за назвою, ключовими слова­ ми або фрагментом тексту Документальні Зберігають дані про об’єкти предметної галузі у  вигляді фактів за чітко встановленою формою. Наприклад, основні дані про дві області України можуть зберігатися за такою формою: Область Центр Площа, км2 Населення Районів Полтавська Полтава 28 748 1 466 768 25 Хмельни ­ цька Хмельни­ цький 20 600 1 303 776 13 Фактографічні Бази даних Рис. 1.1. Класифікація баз даних за структурою даних Система управління базами даних  — це інструмент, призначений насамперед для створення структури БД, уведення й  оновлення даних, пошуку необхідних даних та їх опрацювання за певним алгоритмом. Оскільки до БД може звертатися велика кількість користу- вачів, то важливою функцією СУБД є забезпечення цілісності й безпечності даних. Окрім функцій, безпосередньо пов’яза- них зі створенням і підтримкою БД, окремі СУБД виконують також функцію підтримки спеціалізованих мов програмуван- ня, що мають загальну назву «мови баз даних». Наприклад, СУБД Access 2016 підтримує мову запитів SQL. Отже, для ство- рення якісних БД і кваліфікованої роботи з ними необхідно добре опанувати СУБД. СУБД класифікують за багатьма ознаками. До найголовні- ших можна віднести призначення, модель даних, спосіб досту- пу. Спрощену схему класифікації СУБД подано на рис. 1.2. Нині фактичним стандартом мови БД є мова SQL. Однак у деяких випадках доводиться користуватися й іншими мо- вами програмування, наприклад мовою VBA. Розробники БД засобами СУБД та іншими мовами програмування можуть розробляти прикладні програми, за допомогою яких користу- вач натисканням однієї кнопки може отримати з БД необхід- ні дані або опрацювати їх за певним алгоритмом. Наприклад, обчислити суму реалізованих у супермаркеті певних товарів за добу, нарахувати заробітну платню працівникам фірми або отримати інформацію про наявність вільних місць у готелях міста Відня, що не дорожчі ніж 200 євро за добу. Рис. 1.2. Класифікація систем управління базами даних Модель даних Призна­чення повнофунк ­ ціональні серверні мережеві багатокористувацькі реляційні персональні клієнтські ієрархічні СУБД Спосіб доступу
  • 6. 6 Розділ 1 Отже, взаємодія користувача з БД може здійснюватися як засобами СУБД, так і за допомогою прикладних програм, що пояснюється схемою (рис. 1.3). Користувач Інтерфейс користувача Прикладна програма СУБД База даних Рис. 1.3. Варіанти взаємодії користувача з базою даних Сучасні БД мають величезні обсяги даних і зберігаються в комп’ютерних системах на жорстких магнітних дисках. Ко- ристувач позбавлений необхідності знати тонкощі фізичного розміщення даних на них. Ця функція повністю реалізується СУБД разом з операційною системою. Важливою функцією СУБД є також керування транзакція- ми. Транзакція — це послідовність операцій над даними, яка сприймається СУБД як єдине ціле. Якщо всі операції з послідовності виконано успішно, то вважається, що й транзакцію завершено успішно. Усі зміни даних, виконані за цією транзакцією, вносяться в зовнішню пам’ять. Та якщо хоча б одну операцію послідовності завер- шено невдало, транзакція вважається невиконаною і здій- снюється відкат — скасування змін у всіх даних, виконаних у процесі транзакції, та повернення БД до початкового стану виконання транзакції (приклад 2). Ще однією важливою функцією СУБД є так звана журна- лізація, під якою розуміють облік уведених у БД змін. Перед виконанням потрібних змін їх вносять до спеціального жур- налу. У разі апаратного або програмного збою БД можна пов- ністю відновити за допомогою архівної копії БД і журналу. Одним із засобів моделювання предметної галузі на етапі проектування БД є модель сутність — зв’язок. Основними по- няттями такої моделі є сутність, атрибут і зв’язок. Сутність — це деякий об’єкт реального світу. Вона має екземпляри, які відрізняються один від одного значеннями атрибутів. Атрибут — це властивість сутності. Зв’язок фак- тично встановлює взаємодію між сутностями (приклад 3). У  реляційних БД сутності відповідає таблиця, а  екзем­ пляру  — запис. Приклад 2. Якщо в  системі продажу квитків на потяг замовлення на квиток із будь­ яких причин не виконано, у  БД жодних змін щодо наявності квитків внесено не буде, тобто відбудеться відкат. Приклад 3. Сутність ХОЛОДИЛЬНИК характеризується такими атрибутами, як назва, маса, ціна, потужність. Конкретний холодильник є  екземпляром сутності ХОЛОДИЛЬНИК. Атрибут, що є  унікальним, тобто однозначно визначає екземпляр сутності, називають ключем. Запитання для перевірки знань Що називають предметною областю БД? Наведіть приклади властивостей об’єкта смартфон. Як позначають об’єкти БД? Як поділяються БД за структурою? Які БД називають фактографічними? Наведіть означення БД. Назвіть основні функції СУБД. Поясніть сутність транзакції. 1 2 3 4 5 6 7 8
  • 7. 7 1.2. Поняття моделі даних Пригадайте означення моделі та моделювання. Що, на вашу думку, означає термін «модель даних»? Як вже зазначалося, об’єкти предметної галузі характе- ризуються сукупністю атрибутів (властивостей) та їх зна- ченнями. Одне значення атрибута називають елементарною ­ одиницею даних. Наприклад, для об’єкта АВТОМОБІЛЬ його елементарними одиницями можуть бути марка — Volkswagen і двигун — дизельний. Таким чином, об’єкти БД характеризуються сукупністю елементарних одиниць даних, між якими повинні бути вста- новлені однозначні зв’язки. Це означає, що основою будь-якої структури даних є відображення елементарної одиниці даних у вигляді трійки: об’єкт, атрибут об’єкта, значення атрибута, на- приклад: учень, прізвище, Костирко; учень, клас, 11. Дані, що зберігаються в  БД, мають певну логічну струк­ туру, тобто описуються деякою моделлю даних, яка підтримується відповідною СУБД. Існують різні способи відображення зв’язків між даними, тобто різні моделі даних. Нині є три класичні моделі даних: ієрархічна, мережева і реляційна. Розвиваються й інші моделі даних, засновані на класичних, наприклад об’єктно-реляційна. Таким чином, модель даних визначає, як відбувається об’єднання даних у структури. Вона також визначає можливі операції над даними й обмеження на їх значення. Ієрархічна і мережева моделі засновані на таких поняттях, як рівень, вузол, зв’язок. Приклад структури і стислий опис сутності цих моделей подано на рис. 1.4. Університет → факультети → → викладачі → студенти Об’єкт, розміщений на вершині схе­ ми, є  головним, решта  — підлеглі. Між головним і  підлеглим об’єктами існує зв’язок один до багатьох. Для кожного підлеглого об’єкта існує тільки один головний. Вершина І рівень Вузол Ієрархічна Економічні зв’язки між регіонами України, між цехами машинобудівного заводу Кожний об’єкт може мати зв’язок з  усіма іншими. Між об’єктами існує зв’язок багато до багатьох. Один об’єкт може бути як головним, так і  підлег­ лим. Мережева Модель даних Рис. 1.4. Структури ієрархічної і мережевої моделей даних У  1970-х роках американський математик Е.  Кодд розробив тео­ретичні основи реляційної моделі даних. У  1981 році за вагомий внесок у  теорію і  практику створення реляцій­ них БД учений отримав премію Тюрінґа.
  • 8. 8 Розділ 1 Із рис. 1.4 видно, що в цьому випадку ієрархічна модель містить три рівні об’єктів. На верхньому рівні міститься головний об’єкт, на другому рівні розташовано два вузли, на третьому — три вузли. Зв’язки між вузлами зображено стрілками. Як бачимо, вузли верхнього рівня мають зв’язки з вузлами найближчого нижнього рівня. Мережева модель містить два рівні (їх може бути скільки завгодно), на кожно- му з яких є два вузли. Звернемо увагу на те, що в цій моделі кожний вузол може мати зв’язок із будь-яким іншим вузлом. Основним недоліком ієрархічних і мережевих БД є склад- ність їх розроблення, тому нині поширення набула реляційна модель даних — фактографічна база даних, що є набором вза- ємопов’язаних таблиць. Основна перевага цієї моделі полягає у простоті розроблення БД і систем управління ними. Найпростіша БД містить одну таблицю, а складні — де- сятки й навіть сотні таблиць. Розглянемо приклад найпро- стішої реляційної БД, яка містить тільки одну таблицю УЧНІ (табл. 1.1). Таблиця 1.1. УЧНІ Но- мер Прізвище Дата народження Адреса Клас Зріст, см 1 Колот А. І. 07.02.2002 Зоряна, 2, кв. 7 10 172 2 Таранов С. О. 02.06.2003 Поштова, 3, кв. 9 9 174 3 Федорчук Ю. А. 30.05.2003 Лісова, 5 9 165 Не кожна таблиця може бути об’єктом БД. Для того щоб таблиця стала об’єктом БД, потрібно виконати її нормаліза- цію. Сутність нормалізації полягає в тому, що таблиця по- винна бути перетворена відповідно до основних вимог. Основні вимоги до таблиці як об’єкта БД такі: • кожне поле повинно мати унікальне ім’я; • усі поля мають бути однорідними, тобто значення еле- ментів одного поля можуть бути лише одного типу (на- приклад, тільки числовими, тільки рядковими); • у таблиці не може бути однакових записів, вони мають відрізнятися значеннями хоча б одного поля; • таблиця повинна мати ключове поле, або ключ. Зазвичай таблиця має унікальне поле або кілька полів, які ідентифікують записи. Таке поле називають ключовим (ключем). Воно використовується для швидкого пошуку да- них, а також для зв’язування даних із різних таблиць. Ключ, який містить тільки одне поле, називають простим, а який містить кілька полів — складним. У таблиці УЧНІ складним ключем можна вважати поля Прізвище і Дата наро­ дження, оскільки вони однозначно ідентифікують записи. У таблиці може бути кілька ключів, але тільки один із них можна визнати як первинний. Найкраще первинним ключем вибрати простий ключ і бажано, щоб він мав цілочисловий тип. У цьому випадку операції опрацювання даних викону- ватимуться швидше. У таблиці УЧНІ простим є поле з іменем Номер. У  реляційних моделях об’єкти і  взаємозв’язки між даними подаються за допомогою відношень. Порядок розміщення рядків і  стовпців у  таблиці є  довільним. Таблиці в  теорії БД називають відношеннями, рядки  — записами, а  стовпці  — полями. У 1973 році американський вчений Чарльз Бахман отримав премію Тюрінґа за керування роботою Data Base Task Group (робоча група по базах даних, США), яка розробила стандартну мову опису даних і маніпулювання даними.
  • 9. 91.2. Поняття моделі даних... У таблиці часто використовують поле — воно називаєть- ся лічильником, яке використовується для того, щоб зробити кожний запис унікальним. Крім того, лічильник забезпечує нумерацію записів. У таблиці УЧНІ лічильником є поле з іме- нем Номер. Важливо усвідомити, що на основі однієї таблиці можна створити БД будь-якої складності. Таблиця може містити сот- ні полів і тисячі записів, і працювати з нею досить складно. Щоб не сталося значного дублювання даних, для кожного об’єкта розробляється власна таблиця. А щоб можна було одночасно отримувати дані з кількох таблиць, потрібно вста- новлювати зв’язки між ними (приклад 1). В основній таблиці вибирають первинний ключ, а в допо- міжній — зовнішній ключ. Зовнішній ключ повинен одно- значно визначати поле основної таблиці. У ньому не може бути даних, відсутніх у первинному ключі, інакше зв’язок буде некоректним. Часто для забезпечення зв’язку між табли- цями в допоміжну таблицю спеціально вводять поле з таким самим іменем, що й ім’я первинного ключа основної таблиці. У такому випадку деякі СУБД автоматично встановлюють зв’язок між таблицями. Якщо імена зазначених полів різні, то користувач повинен сам встановити зв’язок між ними. По- яснимо сутність зв’язків між двома таблицями на прикладі 2. Приклад 2. Нехай у БД будівельної компанії є дві таблиці: табл. 1.2 ПОСТАЧАЛЬНИКИ і табл. 1.3 ТОВАРИ. Таблиця 1.2. ПОСТАЧАЛЬНИКИ Фірма Директор Телефон РПЗ­1 Сопко А. І. 345­23­51 БУТ­5 Маслов В. М. 295­44­87 ДМК­2 Бондаренко К. О. 454­98­56 Таблиця 1.3. ТОВАРИ Матеріал Маса, кг Фірма Бетон 100 РПЗ­1 Бетон 120 БУТ­5 Бетон 200 ДМК­2 Цемент 50 БУТ­5 У табл. 1.2 ПОСТАЧАЛЬНИКИ первинним ключем є поле з іменем Фірма. У табл. 1.3 ТО- ВАРИ поле з цим іменем не може бути пер- винним ключем, оскільки в ньому повторю- ються назви фірм. Воно може бути зовнішнім ключем, тому що його значення збігаються зі значеннями однойменного поля табл. 1.2 ПО- СТАЧАЛЬНИКИ. Більше того, вони мають однакове ім’я. За даними цього поля можна встановити зв’язок між двома таблицями. Щоб дізнатися телефон і прізвище дирек- тора фірми, яка постачає 120 тонн бетону і 50 тонн цементу, із табл. 1.3 ТОВАРИ слід вибрати назву фірми БУТ-5 і за її назвою у табл. 1.2 ПОСТАЧАЛЬНИКИ знайти прі- звище Маслов В. М., телефон 295-44-87. Таким чином, зв’язки між таблицями дозволяють отрима- ти дані з кількох таблиць. Окрім того, вони забезпечують ці- лісність даних у пов’язаних таблицях, якщо з деяких причин сталися зміни в одній таблиці. Пояснимо сутність цілісності даних на прикладі 3 вже розглянутих таблиць. Приклад 1. Для БД фірми в  одній таблиці можуть зберігатися дані про співробітників, у  другій  — дані про їхню заробітну платню, у  третій  — відомості про постачальників продукції. Такий підхід спрощує подальшу модифікацію БД. Зв’язки можуть встановлюватися між двома, трьома й  більшою кількістю таблиць. Для вста­ новлення зв’язків між двома таблицями одну з  них вибирають основною (батьківською), а  іншу  — допоміжною (дочірньою).
  • 10. 10 Розділ 1 Приклад 3. Припустимо, що зв’язок між табл. 1.2 ПОСТАЧАЛЬНИКИ і табл. 1.3 ТО- ВАРИ не встановлено. Із табл. 1.2 випадковим чином вилучено запис про те, що директором фірми є Маслов В. М., а в табл. 1.3 всі дані збереглися, тобто є цілісними. Ця ситуація відображена у табл. 1.4 ПОСТАЧАЛЬНИКИ. Тепер прізвище директора фірми БУТ-5 і його телефон невідомі. Вважається, що у цьому випадку трапилося порушення ціліс- ності даних, і ситуація має бути автоматично виявлена. Таблиця 1.4. ПОСТАЧАЛЬНИКИ Фірма Директор Телефон РПЗ­1 Сопко А. І. 345­23­51 ДМК­2 Бондаренко К. О. 454­98­56 Між таблицями можуть існувати 4 види зв’язку (рис. 1.5). Учень може мати з  предмета «Інформатика» багато оцінок, і кожна з цих оцінок належить тільки одному учневі Будь­якому запису першої таблиці відпо­ відає кілька записів другої таблиці, але будь­якому запису другої таблиці відповідає тільки один запис першої таблиці. Один-до-багатьох Учень Рябко навчається у  кількох вчителів, і  кожний учитель працює з  кількома учнями Будь­якому запису першої таблиці відповідає кілька записів другої таблиці, і  будь­якому запису другої таблиці відповідає кілька записів першої таблиці. Багато-до-багатьох Водій працює тільки на одному тролейбусі, але цим тролейбусом можуть керувати кілька водіїв Будь­якому запису першої таблиці відпові­ дає тільки один запис другої таблиці, але будь­якому запису другої таблиці відповідає кілька записів першої таблиці. Багато-до-одного Одним автомобілем може керувати лише один водій, і  керувати цим автомобілем може тільки один водій Будь­якому запису першої таблиці відповідає тільки один запис другої таблиці, і  навпаки. Один-до-одного Види зв’язку між двома таблицями Рис.1.5. Види зв’язку між двома таблицями Найчастіше між таблицями реляційної БД існує зв’язок один­до­багатьох. Запитання для перевірки знань Що називають елементарною одиницею да­ них у  БД? Назвіть основні моделі даних у  БД. Поясніть сутність ієрархічної моделі даних. Які існують види зв’язку між таблицями? Поясніть сутність реляційної моделі даних. Які поля таблиць називають ключем? Які існують ключі в  таблицях БД? Наведіть означення моделі даних. Назвіть основні вимоги до таблиць БД. У чому полягає сутність забезпечення ціліс­ ності даних БД? 1 2 3 4 5 6 7 8 9 10
  • 11. 11 1.3. Основні відомості про систему управління базами даних Access СУБД призначені для створення й  супроводу БД. Спробуйте конкретизувати їхні основні функції. Історія розвитку БД і систем управління ними налічує кілька етапів. За цей час розроблено багато СУБД, напри- клад dBase, FoxPro, Оracle 8.4, MS SQL Server 7.0, SQL Base, MS Access 7 та ін. Усі вони по-різному працюють із об’єкта- ми і мають різні функціональні можливості. Та попри це більшість із них спирається на єдиний комплекс основних понять, що дає нам можливість розглянути одну систему та узагальнити її поняття, прийоми й методи на весь клас СУБД. Далі розглядатимемо одну з найпоширеніших сьогод- ні СУБД — Access 2016. СУБД Access 2016 входить до складу пакета Microsoft Office і призначена для створення й підтримки роботи з реляцій- ними БД. Розглянемо її основні об’єкти та їх призначення (рис. 1.6). Пошук необхідних даних у  таблицях та  їх опрацювання Запити Виведення на екран або папір даних у зруч­ ному для користувача вигляді Звіти Надання користувачеві зручних засобів для уве­ дення даних до таблиці Форми Збереження даних Таблиці Основні об’єкти СУБД Access 2016 Рис.1.6. Об’єкти системи управління базами даних та їх призначення Запуск системи Access 2016 можна здійснити стандартними способами, що передбачені в ОС Windows. Після запуску системи на екрані монітора з’явиться її стартове вікно (рис. 1.7). На ділянці вікна зліва відображено імена БД, з якими користувач працював останнім часом, на ділянці справа — піктограми шаблонів і піктограма порожньої БД. У середовищі Access 2016 БД можна створити «з нуля», тобто повністю самостійно, або скористатися шаблонами, які має система. Якщо наявних шаблонів не вистачає, їх мож- на знайти в Інтернеті, скориставшись полем пошуку. Для якісного оволодіння способами створення й супроводу БД СУБД Access 2016 функціонує під керуванням ОС Windows. Системні вимоги: бажано, щоб процесор мав частоту не менше за 800 МГц, обсяг оперативної пам’яті  — не менше за 512  Мб, вільний обсяг пам’яті на жорст­ кому диску  — не менше за 2  Гб. Рис. 1.7. Стартове вікно Access 2016
  • 12. 12 Розділ 1 користувачу-початківцю доцільно спочатку навчитися ство- рювати нову БД. Серед шаблонів в Access є Пуста база даних, яка слугує для створення нової БД. У подальшому ми будемо використовува- ти саме цей спосіб. Розглянемо порядок дій для створення нової БД. Крок 1 Клацнути піктограму Пуста база даних. Відкриється вікно, зображене на рис. 1.8. Рис. 1.8. Вікно для створення нової бази даних Крок 2 У рядок Ім’я файлу ввести ім’я файла майбутньої БД, наприклад atb, нати­с­ нути кнопку Знайти розташування для бази даних, що розташована право­ руч від цього рядка. Крок 3 У  вікні Створення бази даних, що відкриється, вибрати місце збереження файла БД, наприклад диск F:, і  натиснути кнопку ОК, а  потім  — кнопку Створити. У результаті цих дій файл БД буде зареєстровано в ко- реневому каталозі диска F:, а на екрані з’явиться вікно для створення таблиці 1 (рис. 1.9). Рис. 1.9. Вікно для створення таблиці
  • 13. 131.3. Основні відомості про... Основним об’єктом вікна є горизонтальна стрічка, на якій розташовано команди й інструменти Access 2016. Їх призна- чення будемо розглядати поступово під час безпосереднього використання. Розглянемо ті, які потрібні на цьому етапі. У верхній частині стрічки розміщено вкладки Файл, Основ­ не, Створення та ін. Зміст команд та елементів керування, які відображені на стрічці, залежить від того, яку на цей момент вкладку відкрито. На рис. 1.9 відкрито вкладку Поля, і в цьому випадку всі команди й елементи керування згруповані у розділи Подання, Додавання й  видалення, Форматування. Якщо відкрити іншу вкладку, наприклад Основне, з’являться нові елементи й ко- манди, які буде згруповано в нові розділи. Стисло ознайомимося з призначенням вкладок вікна. Вкладка Основне містить команди й елементи керування, які найчастіше використовуються в процесі роботи з БД. Зо- крема тут містяться команди для роботи з буфером обміну, форматування тексту, сортування й фільтрування даних та ін. Вкладка Створення містить команди для створення таб- лиць, запитів, форм та інших об’єктів БД, вкладка Зовнішні дані — команди для експортування й імпортування даних, вкладка Знаряддя бази даних — команди встановлення зв’яз- ків між таблицями, аналізування й переміщення даних між програмами та ін. У лівій частині екрана вміщено Усі об’єкти Access — панель переходів, на якій можуть відображатися назви всіх створе- них об’єктів, між якими можна здійснювати перехід простим натисненням відповідних назв. Праворуч від панелі перехо- дів міститься область редагування, у якій можуть одночасно відображатися таблиці, запити та інші об’єкти БД. Відкрити вже створену БД можна за допомогою кнопки Відкрити на панелі швидкого доступу, а щоб закрити, потрібно скористатися командою Закрити, що розташована на вкладці Файл. Запитання для перевірки знань Назвіть основні об’єкти Access 2016 та їх призначення. Що розміщено в  області Усі об’єкти Access? Як можна відкрити вже створену БД? Поясніть сутність створення БД «з нуля». Які основні дії можна виконувати на вклад­ ці Створення? Які основні системні вимоги для Access 2016? 1 2 3 4 5 6 Завдання для самостійного виконання 1 Запустіть систему Access 2016. Створіть на жорсткому диску файл БД з іменем Mybasa. Переконайтеся, що файл зареєстровано. 2 Проаналізуйте призначення об’єктів почат­ кового вікна БД, відкриваючи різні вкладки. 3 Відкрийте та проаналізуйте призначення команд кнопки Настроїти панель швидко- го доступу. 4 Відкрийте і проаналізуйте вміст вкладки Основне. У кожний момент часу Access 2016 підтримує роботу тільки з  однією БД. Число користувачів, які одночасно працюють із БД, може досягати 255. Імена об’єктів можуть включати до 64 символів, максимальний обсяг файла БД становить 2  Гб. Щоб згорнути й розгорнути cтрічку, слід скористатися відповідними командами кнопки Настроїти панель швидкого доступу, яка міститься на панелі швидкого доступу, або натиснути праву кнопку миші в  будь­якому місці та виконати команду Згорнути стрічку в  контекстному меню, що з’явиться. 1 Запустіть систему Access 2016. Створіть на 2 Проаналізуйте призначення об’єктів почат­ 3 Відкрийте та проаналізуйте призначення 4 Відкрийте і проаналізуйте вміст вкладки
  • 14. 14 2. Таблиці Створюючи БД Access, користувачі зберігають дані в таб- лицях. Об’єкти БД залежать від структури таблиць, тому розробку БД потрібно починати зі створення власне таблиць і лише після цього можна переходити до будь-яких інших об’єктів. 2.1. Створення й уведення структури таблиць Поміркуйте, з  якою метою застосовуються таблиці в  БД. Якою є основна функція таблиць? Таблиці в середовищі Access 2016 можна створювати різ- ними способами. Та найчастіше їх створюють розробники БД — починаючи від проектування на папері й закінчуючи створенням електронних працездатних таблиць. Саме такий варіант ми розглянемо далі. Розробці таблиць передує детальний аналіз предметної об- ласті, визначення вимог, змісту та структури документів, які необхідно отримати. У процесі розроблення слід визначити кількість таблиць, а також назву, структуру і вміст кожної таблиці. Далі порядок розроблення й опрацювання таблиць розглянемо на прикладі предметної галузі Магазини. Приклад 1. Припустимо, що БД деякої мережі магазинів містить дві таблиці: табл. 2.1 МАГАЗИНИ і табл. 2.2 КАДРИ. Визначимо їх структуру і вміст. Таблиця 2.1. МАГАЗИНИ Номер магазину Адреса Директор Телефон Працівників 21 вул. Паркова, 33 Коцюба П. М. 234­54­63 20 31 вул. Печерська, 21 Борзов А. С. 234­22­98 13 6 вул. Річкова, 24 Середа К. М. 234­67­92 15 Таблиця 2.2. КАДРИ Номер справи Прізвище Посада Рік народження Освіта Стаж Оклад Номер магазину 105 Сокіл Т. Л. Касир 1960 Середня 27 3500 6 132 Таран В. Д. Диспетчер 1973 Вища 15 4000 31 120 Рябко Р. П. Експерт 1981 Вища 8 4200 21 111 Семко М. М. Диспетчер 1970 Середня 16 4000 21 115 Горошко Ф. Р. Диспетчер 1975 Середня спеціальна 17 4000 31 116 Раков Г. П. Аналітик 1965 Вища 19 4500 21 109 Шрамко Т. Л. Диспетчер 1961 Середня 24 4000 6 Головною таблицею вважатимемо табл. 2.1 МАГАЗИНИ, а допоміжною — табл. 2.2 КАДРИ. У  середовищі Access 2016 існують такі інструменти створення таблиць, як Конструктор таблиць, Майстер таблиць, Режим таблиць.
  • 15. 152.1. Створення й уведення... Найпотужнішим і універсальним інструментом створення таблиць є Конструктор таблиць. Далі розглянемо цей спосіб, інші способи простіші, ними можна оволодіти самостійно. Після визначення структури таблиць слід визначити типи полів з урахуванням тих типів, із якими може працювати Access. У середовищі Access 2016 використовуються типи да- них, перелік яких наведено на рис. 2.1. Кожен із наведених типів даних має власний набір власти- востей. Деякі властивості є унікальними, тобто містяться тільки в одному конкретному типі даних, а деякі є загаль- ними, тобто містяться в різних типах даних. Далі будемо ви- користовувати в основному такі типи даних: Короткий текст, Довгий текст, Число, Дата й  час. Тип Короткий текст — це послідовність символів завдов- жки від 0 до 255, а тип Довгий текст — послідовність сим- волів до 65 536. У полі Число зберігаються числа, їх розмір і конкретний тип визначаються значенням властивості Розмір поля. У полях типу Дата й  час зберігаються дата й час різних форматів. Приклад 2. Для більш зручної роботи під час уведення структури табл. 2.1 і табл. 2.2 доцільно створити на папері додаткові таблиці (табл. 2.3 і табл. 2.4) з іменами полів, за- значенням типу даних та описом. Таблиця 2.3. Структура таблиці МАГАЗИНИ Ім’я поля Тип даних Опис Властивості Номер магазину Число Первинний ключ Адреса Короткий текст 50 Директор Короткий текст 40 Телефон Короткий текст 20 Працівників Число Станом на 1 липня Таблиця 2.4. Структура таблиці КАДРИ Ім’я поля Тип даних Опис Властивості Справа Число Первинний ключ Прізвище Короткий текст 40 Посада Короткий текст 30 Рік народження Число Освіта Короткий текст 30 Стаж Число Станом на 1 січня Оклад Число Номер магазину Число На цьому підготовку таблиць для введення в комп’ютер завершено. Перейдемо безпосередньо до створення структур таблиць у режимі конструктора і розглянемо приклад 3. Рис. 2.1. Типи даних Access 2016
  • 16. 16 Розділ 1 Приклад 3. 1. Запустимо систему Access 2016 і відкри- ємо вже створену БД з іменем atb. Для цього в стартовому вікні системи в об- ласті Останні натиснемо кнопку миші на імені atb. 2. У вікні, що відкриється, активуємо вклад- ку Створення. Відкриється вікно зі стріч- кою (рис. 2.2). 3. На стрічці натиснемо кнопку Конструктор таблиць. У результаті до БД додасться порожня таблиця (рис. 2.3). Зверніть увагу на те, що вміст стрічки змінився, і тепер на екрані відкрито вкладку Конструктор (рис. 2.4). 4. Введемо ім’я поля в порожню таблицю (див. рис. 2.3) стандартним способом. Рис. 2.2. Вікно Access з активованою вкладкою Створення Рис. 2.3. Порожня таблиця в режимі конструктора Рис. 2.4. Стрічка з активованою вкладкою Конструктор 5. Введемо типи полів. Їх краще не вводити з клавіатури, а вибрати зі списку типів (див. рис. 2.1). Щоб відкрити цей список, необхідно у певній клітинці поля Тип да­ них клацнути кнопку Прапорець, вибрати потрібний тип даних і встановити його властивість. Перелік властивостей наве- дено нижче від імен полів (рис. 2.5). Описувати поля не обов’язково. Опис потрі- бен для уточнення призначення поля та його допустимих значень. 6. Уведемо у відкриту на екрані порожню таблицю (див. рис. 2.3) дані з табл. 2.3 Структура таблиці МАГАЗИНИ. Вміст таблиці набуде вигляду, як наведено на рис. 2.6.
  • 17. 172.1. Створення й уведення... Рис. 2.5. Властивості полів Рис. 2.6. Структура таблиці в режимі конструктора Рис. 2.7. Віконце для збереження таблиці 7. Збережемо таблицю з іменем МАГА- ЗИНИ. Для цього на панелі швидкого доступу натиснемо кнопку Зберегти (або скористаємося сполученням клавіш Ctrl+S) — відкриється віконце (рис. 2.7). Уведемо в нього ім’я МАГАЗИНИ і клац- немо кнопку ОК. На екран буде виведено попередження (рис. 2.8). Рис. 2.8. Вікно попередження про невизначений первинний ключ 8. Клацнувши кнопку Так, ми зумовимо ство- рення первинного ключа типу Лічильник. Але на цьому кроці встановлювати пер- винний ключ не обов’язково, тому клац- немо кнопку Ні. Таблицю буде збережено, а її ім’я з’явиться в області переходів. 9. Закриємо таблицю МАГАЗИНИ, для чо- го відкриємо її контекстне меню і вико- наємо команду Закрити. 10. Аналогічно введемо і збережемо структу- ру таблиці КАДРИ. Після цього закриє- мо таблицю.
  • 18. 18 Розділ 1 Зазначимо, що властивості таблиць установлюються у вікні Аркуш властивостей, яке для відкритої таблиці доступне на вкладці Конструктор. У цьому вікні містяться десятки назв властивостей таблиць. Аналогічне вікно властивостей мають і інші об’єкти БД (запити, форми, звіти). Та на цьому етапі вивчення БД ми будемо використовувати властивості, пропо- новані за замовчуванням. Таблицю можна модифікувати на будь-якому кроці ство- рення БД. Але краще це робити до встановлення зв’язків між таблицями і введення в них даних. Запитання для перевірки знань Опишіть способи створення таблиць. Чому таблиці бажано спочатку створювати на папері? Які дії слід виконати для збереження струк­ тури таблиці? Що розуміють під терміном «структура таб­ лиці»? Чому для створення таблиці найчастіше ко­ ристуються конструктором таблиць? Назвіть основні типи даних таблиць Access. Поясніть порядок уведення структури таб­ лиць Access. Поясніть порядок уведення типу даних поля та його властивостей. 1 2 3 4 5 6 7 8 Завдання для самостійного виконання Запустіть СУБД Access 2016 і  cтворіть БД skola з  таблицями КЛАСИ (табл. 2.5) й  УЧНІ (табл. 2.6). Таблиця 2.5. КЛАСИ Клас Учнів Класний керівник Займаються спортом 9 27 Зотов А. М. 5 10 24 Дерев’янко Н. С. 11 11 25 Терещенко Б. В. 14 Розробіть на папері структуру табл. 2.5 КЛАСИ і  табл. 2.6 УЧНІ. Типи даних полів і  їхні властивості виберіть самостійно. Уведіть і  збережіть структуру табл. 2.5 КЛАСИ і  табл. 2.6 УЧНІ. Зі створеними БД ви працюватимете про­ тягом періоду їх вивчення, тому працюй­ те акуратно, не забувайте зберігати дані, не порушуйте структуру таблиць. Таблиця 2.6. УЧНІ Прізвище Адреса Дата народження Зріст Улюблений предмет Інформатика Історія Клас Ларін Л. К. Лугова, 5 5.06.2002 163 Математика 11 8 9 Лобов С. П. Сонячна, 7 9.08.2002 168 Географія 9 9 9 Костенко В. С. Річкова, 4 13.09.2001 170 Фізика 10 10 10 Рамко Б. В. Лугова, 9 15.11.2001 169 Інформатика 11 8 10 Пека П. О. Сонячна, 7 20.12.2001 167 Інформатика 12 9 10 Сергіна В. В. Лісна, 5 3.03.2002 171 Історія 8 11 10 Хижа Р. А. Лугова, 2 4.04.2002 172 Історія 9 12 11 Собко О. К. Вишнева, 5 9.10.2001 175 Інформатика 11 8 11 Настін К. Б. Лісна, 10 6.11.2001 171 Географія 10 10 11 1 2 3
  • 19. 19 2.2. Ключові поля, індекси, зв’язування таблиць Одне з  полів таблиці може мати унікальні значення. Для чого, на вашу думку, може використовуватися таке поле? Згадаємо, що кожна таблиця повинна мати ключове поле (ключ) — поле, значення якого не повторюється в жодному іншому записі. Таблиця може мати кілька ключових полів, але використовується тільки одне з них, яке називають пер- винним ключем. Найчастіше первинний ключ складається з одного поля, а як первинний ключ використовується поле типу Лічильник. Якщо в ролі первинного ключа використовуються два і біль- ше полів, його називають складним. Наприклад, у таблиці КАДРИ поле Прізвище не може бути первинним ключем, тому що в мережі магазинів може бути працівник із таким самим прізвищем. А поля Прізвище і Рік народження разом можна вважати таким ключем, оскільки вони, ймовірно, не дублю- ються. Для створення первинного ключа потрібно відкрити табли- цю в режимі конструктора, виділити поле, що використову- ється як первинний ключ, і натиснути кнопку Ключове поле, що знаходиться в розділі Знаряддя вкладки Конструктор. Створити первинний ключ можна також за допомогою контекстного меню певного поля, у якому необхідно викона- ти команду Ключове поле. Для цього слід відкрити таблицю в режимі конструктора. Скористаємося цим способом, і в таб- лиці МАГАЗИНИ визначимо як первинний ключ поле Номер магазину. Поряд із назвою цього поля з’явиться зображення ключа (рис. 2.9). Далі збережемо таблицю. Рис. 2.9. Структура таблиці МАГАЗИНИ з ключовим полем Якщо деяке поле в процесі створення структури табли- ці оголошено типу Автонумерація (див. рис. 2.1), тобто типу Лічильник, то воно стає ключовим за замовчуванням. Його можна також додати в таблицю навіть у тому випадку, якщо явної потреби в цьому немає. Поле типу Лічильник обов’язково встановлюється в тому разі, якщо ключ у  таблиці взагалі визначити неможливо. Розглянемо тепер сутність і порядок індексування таблиць. Складні ключі бажано не використовувати як первинний ключ, оскільки в  цьому випадку ускладнюється процес роботи з БД. Ключі у БД відіграють важливу роль — за їх допомогою СУБД ідентифікує об’єкти.
  • 20. 20 Розділ 1 Індексування — це процес створення додаткових таблиць для певного поля. Ці таблиці (їх ще називають простими індексними таблицями) зазвичай містять лише одне поле, у якому зберігаються вказівники на певні записи таблиці. За допомогою вказівників визначають порядок розміщення записів, упорядкованих за значенням цього поля (приклад 1). Приклад 1. Індексна таблиця для поля Директор таблиці МАГАЗИНИ матиме такі значення: Цифра 2 в першому рядку означає, що пер- шим за алфавітом у таблиці є друге прізвище (Борзов А. С.), цифра 1 — що другим за ал- фавітом є перше прізвище (Коцюба П. М.), а цифра 3 — що третім за алфавітом є третє прізвище (Середа К. М.). Індексних таблиць для певної таблиці БД може бути кілька, наприклад за кількістю працівників, за номерами магазинів тощо. 2 1 3 Головним призначенням індексних таблиць є підвищення швидкості пошуку необхідних даних (інколи вона зростає до 5 разів). Щоб знайти деякий запис у таблиці, в Access спочат- ку потрібно знайти його положення в індексі, потім вибрати з нього місце запису в таблиці, що використовується для по- шуку даних. Зазначимо, що первинний ключ завжди індексований. За замовчуванням записи таблиці виводяться відсортованими за його значеннями. У процесі введення даних у таблицю обов’яз- ково перевіряється значення первинного ключа на дублюван- ня. Якщо значення дублюється, введення запису блокується. Значення первинного ключа типу Лічильник у процесі введення даних формується автоматично (приклад 2). Приклад 2. Створимо просту індексну таб- лицю для полів Директор і Працівників таблиці МАГАЗИНИ. Для цього відкриємо таблицю в режимі конструктора, виберемо поле Дирек­ тор і в розділі Властивості поля в рядку Індексо­ вано ввімкнемо перемикач Так (Без  повторень), оскільки малоймовірно, що в цій мережі магазинів буде два директори з однаковими прізвищами. Для поля Працівників увімкнемо перемикач Так (Повторення дозволені), тому що в магазинах може бути однакова кількість працівників. Основна вимога до ключів така: значення зовнішнього ключа мають збігатися зі значеннями первинного ключа головної таблиці. Імена цих ключів можуть бути різними, але якщо імена однакові, то процес зв’язування таблиць буде простішим. Часто первинний ключ таблиці штучно вводять у другу таблицю саме з метою їх зв’язування. Цей ключ не є первин- ним ключем другої таблиці, тому що його значення можуть повторюватися. Наприклад, поле Магазин є первинним ключем таблиці МАГАЗИНИ, а в таблиці КАДРИ це поле є зовніш- нім ключем, тому що в ній значення цього поля дублюються. Поля, значення яких змінюються часто, індексувати недоцільно. Для однієї таблиці бажано мати не більш ніж 5 або 6 індексних таблиць. Під час зв’язування двох таблиць одна з  них вважається головною, а  інша  — допоміжною. Первинний ключ головної таблиці зв’язується із зовнішнім ключем допоміжної.
  • 21. 212.2. Ключові поля, індекси... Приклад 3. Розглянемо порядок створення зв’язку на прикладі таблиць МАГАЗИНИ і КАДРИ (табл. 2.1 і 2.2 відповідно). 1. Завантажимо БД atb й у вікні, що від- криється, активуємо вкладку Знаряддя бази даних. Далі натиснемо кнопку Зв’яз­ ки. Відкриється вікно Відображення табли­ ці (рис. 2.10). 2. У вікні Відображення таблиці виберемо таблиці, які потрібно зв’язати (у нашо- му випадку обидві таблиці), і натиснемо кнопку Додати. На екрані з’являться ці таблиці з іменами їх полів. 3. Установимо курсор на первинному ключі таблиці МАГАЗИНИ, натиснемо кнопку миші і, не відпускаючи її, перемістимо курсор у поле зовнішнього ключа й від- пустимо кнопку. У результаті відкриєть- ся вікно Редагування зв’язків (рис. 2.11). 4. Увімкнемо прапорець Забезпечення ціліс­ ності даних. Після цього стануть доступ- ними прапорці Каскадне оновлення пов’я­ заних полів і Каскадне видалення пов’язаних полів. Увімкнемо останній прапорець. Увімкнення прапорця Забезпечення цілісно­ сті даних дає змогу зберегти цілісність даних. Якщо цей прапорець вимкнутий, то в таблиці можна додавати нові записи, змінювати клю- чові поля й вилучати пов’язані записи без попередження про порушення цілісності. Сутність каскадного оновлення пов’язаних полів полягає в тому, що за будь-якої зміни первинного ключа в головній таблиці автома- тично оновиться значення відповідного поля у всіх зв’язаних таблицях. Сутність каскадного вилучення пов’язаних полів полягає в тому, що під час вилучення будь-якого запису з головної таблиці авто- матично вилучаються зв’язані записи у зв’я- заній таблиці. Отже, каскадне оновлення й каскадне вилучення прискорюють роботу з БД і сприяють підвищенню надійності її функціонування. 5. У вікні Редагування зв’язків натисне- мо кнопку Створити, у результаті чого у вікні Звяз’ки з’явиться лінія зв’язку між певними полями таблиць (рис. 2.12). Збережемо БД. У вікні Редагування зв’язків можна ви- лучити встановлений зв’язок за допомогою кнопки Скасувати. За допомогою кноп- ки Створити… можна відкрити нове вікно й установити зв’язок заново. Рис. 2.10. Вікно з переліком таблиць бази даних abс Рис. 2.11. Вікно Редагування зв’язків Рис. 2.12. Зв’язок типу один-до-багатьох між таблицями
  • 22. 22 Розділ 1 6. Повернемося до вікна Редагування зв’язків (якщо в цей момент його немає на екра- ні, слід виконати команду Змінити зв’язки в області Знаряддя — і вікно відкриєть- ся). Далі натиснемо кнопку Тип об’єднан­ ня… З’явиться вікно Параметри об’єднання (рис. 2.13). 7. За замовчуванням установлюється пер- ший тип об’єднання, який називають об’єднанням за еквівалентністю. Зазви- чай розробники БД установлюють від- ношення за еквівалентністю. Натиснемо в цьому вікні кнопку ОК і закриємо вікно Редагування зв’язків. Рис. 2.13. Вікно для встановлення параметрів об’єднання таблиць Щоб переглянути зв’язки між таблицями БД, необхідно на відкритій вкладці Знаряддя бази даних натиснути кнопку Зв’язки, активувати вкладку Конструктор і в розділі Зв’язок натиснути кнопку Усі зв’язки. Якщо схема складна, можна приховати частину таблиць і зв’язків, вилучивши їх із вікна Зв’язки. Для цього потріб- но виділити певну таблицю й натиснути кнопку Delete. При цьому зв’язки й таблиці вилучаються лише з вікна, фізич- но ж вони залишаються, тому в будь-який час їх можна від- новити. Щоб скасувати зв’язки між таблицями БД, необхідно встановити курсор на лінії зв’язку, натиснути кнопку миші, а потім — клавішу Delete. Можна також відкрити контекстне меню лінії зв’язку й виконати команду Видалити. Запитання для перевірки знань Що називають первинним ключем таблиці? Які первинні ключі називають простими; складними? Для чого використовується ключове поле типу Лічильник? Який порядок створення ключового поля? Що називають індексуванням таблиць? Як можна скасувати зв’язок між таблицями? З  якою метою індексуються таблиці? Для чого потрібно зв’язувати таблиці? Опишіть порядок зв’язування таблиць. 1 2 3 4 5 6 7 8 9 Завдання для самостійного виконання Створіть просту індексну таблицю для поля Учнів таблиці КЛАСИ й  індексну таблицю для поля Адреса таблиці УЧНІ. Створіть у  таблиці КЛАСИ БД skola первин­ ний ключ і  збережіть таблицю. Переконай­ теся, що ключ встановлено правильно. Виконайте зв’язування таблиці КЛАСИ і  таблиці УЧНІ. Доведіть, що зв’язок дійсно встановлений. Вилучіть зв’язок між табли­ цями й  установіть його ще раз. 1 2 3
  • 23. 23 2.3. Введення, пошук і редагування даних у таблиці Поясніть, у який спосіб можна здійснити пошук необхідних даних у таблиці. Дані в таблиці можна вводити після створення їх струк- тур. Існує два способи введення даних у таблиці: за допомо- гою форм і безпосереднє введення даних у таблиці. Розглянемо алгоритм уведення даних на прикладі 1. Приклад 1. 1. Відкриємо таблицю МАГАЗИНИ в ре- жимі таблиці. Для цього двічі клацнемо кнопкою миші ім’я в області Усі об’єкти. Можна також скористатися контекстним меню цієї таблиці. 2. Уведемо дані першого запису таблиці МАГАЗИНИ, який позначено зірочкою. Щойно дані будуть уведені, курсор авто- матично переміститься на наступний за- пис, що означає готовність до уведення даних у другий рядок. Слід пам’ятати, що вводити в поля можна лише ті типи даних, які збігаються з оголошеним ти- пом поля. 3. У такому самому порядку введемо дані всіх інших записів таблиці й збереже- мо таблицю. Після введення останнього запису вміст таблиці набуде вигляду, як наведено на рис. 2.14. Зверніть увагу на те, що записи виведені в іншому порядку, ніж уводилися (записи вводили в порядку, який подано у табл. 2.1). На рис. 2.14 записи впорядковано в поряд- ку значень ключового поля. Рис. 2.14. Вміст таблиці МАГАЗИНИ Під час уведення даних автоматично перевіряються такі типи даних: числові, грошові, дата і час, логічні. На вкладці Основне в групі Форматування тексту містяться елементи, за допомогою яких можна змінити розмір і накреслення симво- лів та інші параметри. Якщо на екрані не поміщаються всі записи, слід скори- статися вертикальною смугою прокручування, а якщо не по- міщаються всі поля — горизонтальною. Окремі поля можна розширити або звузити звичайним порядком. У нижній частині вікна таблиці розміщено кнопки навіга- ції для переміщення курсора в перший, сусідній або останній запис. Для додавання нового запису в таблицю необхідно натисну- ти кнопку Створити запис на панелі навігації та ввести дані. Навігацію в  таблиці можна здійснювати за допомогою миші, смуг прокручування, сполучення деяких клавіш.
  • 24. 24 Розділ 1 У такому самому порядку введемо дані в таблицю КАДРИ. Її вміст подано на рис. 2.15. Рис. 2.15. Вміст таблиці КАДРИ Потрібний запис у таблиці можна знайти за значенням будь-якого її поля або за фрагментом його значення. Розгля- немо пошук запису в таблиці на прикладі 2. Приклад 2. 1. У таблиці КАДРИ в режимі таблиці встановимо курсор на поле, за значенням якого потрібно шукати запис (наприклад, на поле Прізвище), і натиснемо кнопку Знайти у розділі Пошук — відкриється вікно Пошук і  заміна (рис. 2.16). 2. У вікно Пошук і  заміна в поле Знайти вве- демо потрібне значення, наприклад Со- кіл Т. Л., і натиснемо кнопку Знайти далі. Курсор встановиться на записі з прізви- щем Сокіл Т. Л. У полі Зіставити можна вибрати одне зі зна- чень, що зменшує необхідність використання метасимволів: • будь-яку частину поля (зразок може міс- титися всередині значення поля); • усе поле (зразок без метасимволів має збігатися з усім значенням поля); • початок поля (будуть знайдені тільки ті поля, які починаються зі зразка). Рис. 2.16. Вікно для пошуку й заміни даних У процесі введення даних у  поле Знайти можна використовувати такі метасимволи: *  — довільна кількість будь­яких символів; ?  — один довільний символ; ≠  — одна довільна фраза. Якщо прапорець З урахуванням регістра встановлено, то зра- зок повинен точно відповідати шуканому фрагменту; якщо знято, то зразок можна вводити великими і малими буквами. Якщо прапорець З  урахуванням формату полів встановлено, то зразок повинен бути таким, як і шуканий фрагмент, на- приклад $345; якщо знято, то форматування не враховуєть- ся, наприклад значення $345 буде знайдено і для зразка 345.
  • 25. 252.3. Введення, пошук... Після завершення пошуку на знайдений запис встанов- люється курсор, і поле цього рядка висвітлюється іншим кольором. Оскільки в таблиці може бути кілька значень, що відшукуються, то для продовження пошуку необхідно ще раз натиснути кнопку Знайти далі. Для пошуку першого входжен- ня зразка можна використовувати поле Пошук. Пошук завер- шується після першого визначення рядка. Знайдене значення можна змінювати, вводити нове. Поле типу Лічильник, заблоковані поля та поля, що обчислюються, змінювати не можна (приклад 3). Записи з таблиці можна вирізати й копіювати до буфера обміну, за допомогою кнопки Вставити вставляти в іншу таб- лицю, а також у документи Word і Excel. Розглянемо алгоритм вилучення запису з таблиці. 1. Виділити потрібний запис і натиснути кнопку Видалити на вкладці Основне. Відкриється меню цієї кнопки (рис. 2.17), у якому слід виконати команду Видалити запис. 2. У вікні, що відкриється (рис. 2.18), необхідно підтвердити або відмінити вилучення. Якщо потрібно вилучити весь запис, його слід виділити й натиснути кнопку Видалити, у меню (див. рис. 2.17) виконати команду Видалити запис. Рис. 2.18. Вікно підтвердження/відміни видалення запису Слід пам’ятати, що у зв’язаних таблицях зі встановленим прапорцем Забезпечення цілісності даних вилучити запис не завжди вдається. Запитання для перевірки знань Поясніть порядок уведення записів у  таб­ лицю. За значенням якого поля впорядковуються записи за замовчуванням? Як можна здійснити навігацію в  таблиці? Як здійснюється пошук запису в  таблиці? Як вилучити запис із таблиці? Які дії слід виконати для додавання нового запису в  таблицю? З  якою метою і  як приховують поля? 1 2 3 4 5 6 7 Завдання для самостійного виконання Уведіть у  таблиці КЛАСИ й  УЧНІ БД skola наведені в  них дані. Виконайте навігацію по таблиці УЧНІ за до­ помогою кнопок навігації. Додайте в таблицю УЧНІ новий запис, а по­ тім вилучте його. Збережіть таблицю. Знайдіть у таблиці УЧНІ запис за прізвищем Пека П. О. Використайте метасимволи для пошуку запи­ сів у таблиці УЧНІ за значенням поля Адреса. Вилучте з таблиці УЧНІ будь­який запис, а  потім відновіть його. Збережіть таблицю. 1 2 3 4 5 6 Рис. 2.17. Меню кнопки Видалити Приклад 3. Знайдемо в  таблиці КАДРИ запис, у  полі Рік наро- дження якого є  значення 1981. Буде виділено запис із прізвищем Рябко Р. П. Коли потрібно приховати деякі поля, їх слід виділити й  у  групі Записи виконати команду Додатково → Приховати поля. Щоб відновити приховані поля, слід виконати команду Додатково → Відобразити поля та у  вікні, що відкриється, увімкнути прапорець відповідного поля.
  • 26. 26 2.4. Сортування і фільтрування записів. Операції над таблицями Сортування записів у  таблиці можна реалізувати за значенням будь-якого поля. А  що ви розумієте під терміном «фільтрація записів»? Згадаємо, що за замовчуванням записи таблиці виводяться впорядкованими за значенням первинного ключа. Проте ча- сто виникає необхідність отримати записи, упорядковані за значенням інших полів. Сортування записів  — це впорядкування записів за зна­ ченнями одного поля або кількох полів. Сортування записів виконується спочатку за значенням лівого виділеного поля. Якщо в ньому є поля, значення яких збігаються, то певні записи впорядковуються за значенням на- ступного поля. Наприклад, у результаті сортування записів За зростанням за значеннями полів Освіта і Стаж таблиці КАДРИ отримаємо розміщення записів, як наведено на рис. 2.19. Рис. 2.19. Таблиця КАДРИ, упорядкована за значенням полів Освіта і Стаж Як бачимо з рис. 2.19, основне сортування виконано за зрос- танням значення поля Освіта. Записи з однаковим значенням упорядковано за зростанням значення поля Стаж (приклад 1). Фільтрування записів  — це відбір із таблиці записів, які містять задане значення у  вибраних полях. Фільтрування можна виконати за виділенням і формою. Фільтрування за виділенням — це відбір записів на основі значень поточного поля. Для його реалізації спочатку треба впорядкувати записи за значенням поля, яке використовуєть- ся у фільтрації; встановити курсор на тому значенні поля, за яким буде виконуватися фільтрування; натиснути на кнопку Виділення в групі Сортування й  фільтр та вибрати необхідну умову в меню, що відкриється (приклад 2). Для сортування за значенням одного поля треба його виділити й  натиснути кнопку За  зростанням (А → Я) або За  спаданням (Я → А). Можна також скористатися контекстним меню поля. Для сортування за значеннями кількох полів необхідно ці поля виділити й  скористатися одним із наведених далі способів. Приклад 1. Якщо здійснити фільтрацію записів таблиці КАДРИ за значенням більше або дорівнює 24 в  полі Стаж, то отримаємо записи з  прізвищами Сокіл Т. Л. і  Шрамко Т. Л.
  • 27. 272.4. Сортування ... Приклад 2. Відфільтруємо записи таблиці КАДРИ за зна- ченням середня поля Освіта. 1. Упорядкуємо записи таблиці КАДРИ за значенням поля Освіта. 2. Встановимо курсор на назві середня цього поля і натис- немо кнопку Виділення в групі Сортування й  фільтр. Від- криється меню з умовами (рис. 2.20). 3. Виберемо першу умову Дорівнює «середня». Відкриється таблиця, вміст якої наведено на рис. 2.21. У нижній частині таблиці висвітлиться кнопка з написом Відфільтровано (або Не відфільтровано). Це означає, що запи- си відфільтровано (або не відфільтровано). Натискаючи цю кнопку, можна вмикати й вимикати фільтрування записів. До відфільтрованих записів можна застосовувати ще кілька фільтрів, наприклад за значеннями полів Посада, Оклад та ін. Рис. 2.21. Таблиця з відфільтрованими записами Використовуючи фільтрування за формою, можна вводити критерії в поля таблиці умов. Розглянемо алгоритм відкриття таблиці умов на прикладі 3. Рис. 2.20. Меню умов для фільтрації записів Приклад 3. 1. У розділі Сортування й  фільтр відкриє- мо меню кнопки Параметри розширеного фільтра й виконаємо команду Розширений фільтр/сортування. Відкриється перелік полів таблиці, а в нижній частині вік- на — таблиця конструктора. 2. У таблицю конструктора, наприклад, із відфільтрованої таблиці КАДРИ (див. рис. 2.21) перенесемо ім’я поля, у яке вводитиметься критерій. Для цього до- статньо двічі клацнути його в таблиці. Перенесемо, наприклад, ім’я поля Стаж. 3. У таблиці конструктора в запис Критерії цього поля введемо умову, наприклад, 16. Далі відкриємо меню кнопки Пара­ метри розширеного фільтра, у якому ви- конаємо команду Застосувати фільтр/сорту­ вання. Отримаємо записи (рис. 2.22). Рис. 2.22. Відфільтровані записи відібрано за критерієм поля Стаж 16
  • 28. 28 Розділ 1 У таблиці умов можна задати довільну кількість критеріїв фільтрування, які об’єднуються операторами І/АБО. Над таблицями в середовищі Access можна виконувати опе- рації перейменування, вилучення, копіювання та ін. Перейменувати таблицю можна за допомогою її контекст- ного меню, яке відкривається шляхом клацання імені табли- ці в області Усі об’єкти. Вміст меню наведено на рис. 2.23. Для перейменування таблиці слід виконати такі дії: Крок 1 Виконати команду Перейменувати Крок 2 В  області Усі об’єкти в  текстове поле цієї таблиці ввести нове ім’я Крок 3 Натиснути клавішу Enter. Слід пам’ятати, що після цього потрібно змінити це ім’я в  усіх об’єктах БД (запитах, звітах та ін.) Для вилучення таблиці можна також скористатися її кон- текстним меню й виконати в ньому команду Видалити. Для копіювання таблиці в контекстному меню слід вико- нати команду Копіювати, ще раз викликати контекстне меню й виконати команду Вставити. Відкриється вікно Вставлення таблиці (рис. 2.24). Далі в поле Ім’я таблиці потрібно ввести нове ім’я та ввімкнути один із розташованих нижче перемикачів. Якщо таблиця копіюється повністю, то слід увімкнути пе- ремикач Структура та дані й натиснути кнопку ОК. Запитання для перевірки знань Які існують способи сортування записів? Як упорядкувати записи за значенням од­ ного поля? Що називають фільтрацією записів? Як упорядкувати записи за значеннями двох полів? Які операції виконують над таблицями? Як перейменувати таблицю? Як здійснити фільтрування записів за виді­ ленням? Поясніть сутність фільтрації записів за фор­ мою. Як  скопіювати таблиці? Як  вилучити таблиці? 1 2 3 4 5 6 7 8 9 10 Завдання для самостійного виконання Упорядкуйте записи таблиці УЧНІ БД skola за значенням поля Зріст. Упорядкуйте записи таблиці УЧНІ за зна­ ченнями полів Прізвище й  Історія. Виконайте фільтрування записів таблиці УЧНІ за одним зі значень поля Улюблений предмет. Використайте фільтр за формою для філь­ трування записів таблиці УЧНІ за одним зі значень поля Дата народження. Надайте таблиці КЛАСИ нове ім’я. Відновіть ім’я КЛАСИ. Виконайте копіювання таблиці УЧНІ й створіть на її основі нову таблицю з іменем ПЕРША. 1 2 3 4 5 6 Рис. 2.23. Контекстне меню таблиці, відкрите в області Усі об’єкти Рис. 2.24. Вікно для копіювання таблиці
  • 29. 29 3. Запити 3.1. Загальні відомості про запити Пригадайте основне призначення запитів. Запит — один із основних об’єктів БД Access. Головне його призначення полягає у відборі потрібних даних із таблиць, їх опрацюванні та поданні користувачеві у зручній формі. Запит застосовується також для змінення даних у БД. Створений запит можна зберігати з певним іменем і потім неодноразово виконувати. Якщо між першим і другим за- пусками запиту дані в таблицях змінилися, то в процесі дру- гого його виконання будуть використовуватися оновлені дані. Запити класифікують за багатьма ознаками. Розподіл за- питів за основними ознаками наведено на рис. 3.1. Однотабличні Багатотабличні Вибірки даних Прості Запити SQL З полями, що обчислюються З умовами і виразами Оновлення даних Складні Запити Access З функціями Перехресні запити За кількістю таблиць, що використовуються За складністю функцій, що виконуються За можливістю підтримки зв’язку із серверними БД За способами вибірки та опрацю­ вання даних За призначенням ЗАПИТИ Рис. 3.1. Класифікація запитів Запити, за допомогою яких вибирають дані з однієї табли- ці, називають однотабличними. Запити, за допомогою яких вибирають дані з кількох таб- лиць, називають багатотабличними. Простими називають запити, за якими вибирають дані за критерієм одного поля однієї таблиці (приклад 1). Складними називають запити, за якими вибирають дані за критеріями кількох полів із кількох таблиць (приклад 2). Запити не містять даних. Під час кожного нового виконання запиту формуються необхідні дані з  тих таблиць, на основі яких його створено. Приклад 1. Приклади простих запитів: вибрати з  таблиці МАГАЗИНИ ті номери магазинів, де кількість працівників більша за 13; вибрати з  таблиці КАДРИ прізвища тих працівників, які народилися після 1979 року.
  • 30. 30 Розділ 1 Приклад 2. Складний запит для таб- лиць МАГАЗИНИ і КАДРИ, за яким формуються дані, наведено в табл. 3.1. Тут із таблиць МАГАЗИНИ і КАДРИ відібрано прізвища осіб, які працюють диспетчерами в магазинах 21 і 31. Таблиця 3.1. Результат виконання складного запиту Мага- зин Адреса Прізвище Посада 21 вул. Паркова, 33 Семко М. М. диспетчер 31 вул. Печерська, 21 Таран В. Д. диспетчер 31 вул. Печерська, 21 Горошко Ф. Р. диспетчер До однієї БД Access може бути розроблено кілька запитів. Кожен із них можна виконати в будь-який час, і кожен із них виконує чітко визначені функції. Запити можуть вико- нуватися самостійно, але найчастіше їх використовують як складові форм і звітів. Як вам відомо, запити не містять даних, лише формують потрібні дані з таблиць. Наприклад, дані, наведені в табл. 3.1, не зберігаються, а формуються під час виконання запиту. Щоб зберегти дані, необхідно створити таблицю та скопіювати до неї ці дані. Описаний тип називають запитом на вибірку. Запити на вибірку даних — запити, які забезпечують до- бір потрібних даних із таблиць. Такий тип запитів є одним із найбільш розповсюджених. Разом із тим у Access використовуються й запити на змінення (оновлення даних) — запити, за допомогою яких здійснюється модифікування структури таблиць і змінення в них даних. Найчастіше дані за допомогою запитів вибираються на основі критеріїв. Окрім того, система Access має набір убудо- ваних функції, за допомогою яких дані можна вибрати з та- блиць, а також опрацювати й узагальнити. З опрацьованих даних можна створювати нові поля. Такий тип запитів називають запитами з полями, що обчислюються. У запитах різних типів найчастіше реалізуються такі опе- рації: • вибір даних із вказаних полів на основі заданих крите- ріїв; • упорядкування даних із таблиць за значеннями вказа- них полів; • побудова нової таблиці або діаграми з отриманих даних; • опрацювання вибраних із таблиць даних за допомогою вбудованих функцій; • використання отриманих за допомогою запиту даних як джерела для інших запитів; • додавання даних, отриманих за допомогою запитів, до інших таблиць; • обмін даними з іншими БД, а також текстовим редакто- ром Word і таблицями Excel. У запитах можуть використовуватися специфічні оператори. • Рядкові оператори: Like (які збігаються/відповідність); Not Like (які не збігаються/невідповідність); об’єднання рядків (). Вирази в  критеріях, що застосовуються в  запитах, будуються на основі звичайних арифметичних операцій, операцій порівняння й  логічних операцій (And, Or, Xor, Not). Компанія Oracle є абсолютним лідером на ринку систем управління БД. Їй належить 45 % ринку.
  • 31. 313.1. Загальні відомості про... Оператори Like і Not Like використовуються для порівняння двох рядкових виразів. При цьому перевіряється, чи збіга- ються ці вирази, і залежно від результату повертаються зна- чення Так, Ні або Null. Оператор Like має таку структуру: ім’я поля Like зразок (приклад 3). • Оператори списку й діапазону: In (входження в список); Is (наявність значення); Between…And (входження в діапазон). За допомогою оператора In перевіряється, чи збігається значення поля з одним зі значень списку. Якщо збігається, повертається значення Так, інакше — Ні (приклад 4). Оператор Is використовується тільки з ключовим словом Null для з’ясування, чи містить об’єкт будь-яке значення. По- вертається значення Так, якщо вираз порожній (не містить жодного значення). Оператор Between…And має таку структуру: ім’я поля Between нижня межа And верхня межа. Повертається зна- чення Так, якщо значення поля знаходяться між значеннями нижня межа і верхня межа (приклад 5). Критерії поділяються на прості й складні. Прості критерії зазвичай містяться лише в одному полі, складні критерії — у кількох полях. Наприклад, вибрати з таблиць МАГАЗИНИ і КАДРИ прізвища працівників мага- зинів, які народилися у період з 1961 до 1975 років і працю- ють диспетчерами або аналітиками. Далі буде стисло описано методику створення усіх типів запитів (див. рис. 3.1), крім запитів SQL, для розроблення яких потрібно володіти мовою SQL. Запитання для перевірки знань Назвіть основне призначення запитів. Які запити називають простими? Опишіть, як класифікують запити за призна­ ченням. Назвіть основні класифікаційні ознаки запитів. Наведіть приклад простого запиту. Які функції виконують запити на вибірку? Назвіть операції, які найчастіше реалізують­ ся в  запитах. Які існують оператори списку й  діапазону? Наведіть приклад використання операторів Like і  Not Like. 1 2 3 4 5 6 7 8 9 Завдання для самостійного виконання Накресліть класифікацію запитів за призна­ ченням. Наведіть приклад простого запиту для та­ блиці КАДРИ. Наведіть приклад простого запиту для та­ блиці МАГАЗИНИ. Наведіть приклад використання оператора In для таблиці МАГАЗИНИ. Наведіть приклад складного запиту для та­ блиць МАГАЗИНИ і КАДРИ. Накресліть класифікацію запитів за ос­ новними ознаками. 1 2 3 4 5 6 Приклад 3. Для таблиці КАДРИ вираз Прізвище Like Раков Г. П. повертає значення Так, оскільки поле Прізвище містить значення Раков Г. П. Приклад 4. Для таблиці КАДРИ оператор Прізвище In ('Семко Н. Н.', 'Горошко Ф.  Р') повертає значення Так, тому що в  цьому полі є  зазначені прізвища. Приклад 5. Для таблиці КАДРИ за допомогою оператора [Рік народження] Between 1965 And 1973 повертається значення Так, оскільки в  цьому полі є  зазначені діапазони.
  • 32. 32 3.2. Запити на вибірку даних Поміркуйте, що необхідно зробити для одночасного отримання потрібних даних із кількох таблиць БД. Запити на вибірку даних  — це запити, які забезпечують вибір необхідних даних із однієї або кількох таблиць. Розглянемо загальний порядок створення простого запиту на вибірку (запиту для однієї таблиці) та приклад 1. Крок 1 Відкрити БД, активувати вкладку Створення й  у розділі Запити клацнути кнопку Макет запиту, який фактично є  конструктором запиту. У  результаті відкриються вікно конструктора запиту (вікно Запит1) і  вікно Відображення таблиці, у  якому містяться імена всіх таблиць цієї БД. На панелі інструментів вкладки Конструктор з’явилася група кнопок Тип запиту, у  якій виділено кнопку Вибір. Це означає, що запит на вибірку ство­ рюється за замовчуванням. Якщо створюватимуться інші типи запитів, то потрібно вмикати відповідну кнопку в  цій групі. Крок 2 Вибрати у  вікні Відображення таблиці необхідну таблицю  — відкриється перелік її полів. Крок 3 Створити запит на основі вмісту таблиці. Приклад 1. Створити простий запит з іменем Запит_1, за допомогою якого з таблиці КАДРИ виводяться дані про співробітників зі стажем понад 16 років. Результуючий набір записів повинен містити такі поля: Справа, Прізвище, Рік народження, Стаж, Номер магазину. 1. Для створення запиту відкриємо БД atb і виконаємо команду Створення → Макет запиту. Відкриються вікно конструкто- ра запитів і вікно Відображення таблиці, у якому виберемо таблицю КАДРИ. Для цього встановимо курсор на імені цієї таблиці й клацнемо кнопку Додати. Піс- ля цього вікно Відображення таблиці мож- на буде закрити. 2. У записі Поле таблиці конструктора за- питів послідовно розмістимо зазначені імена полів (Справа, Прізвище, Рік на­ родження, Стаж, Номер магазину) таблиці КАДРИ (рис. 3.2). Для цього достатньо двічі клацнути кнопкою миші на імені певного поля цієї таблиці. Запис Сортування використовується для сор- тування даних у таблиці, яку буде отримано після виконання запиту. Сортувати дані мож- на за значенням кількох полів. Прапорець, установлений на перетині запису Відображен­ ня й певного поля, означає, що це поле буде виведено на екран, інакше воно виводитися не буде. Запис Критерії призначено для запису виразу, на основі якого відбираються записи. Запис Або слугує для визначення додаткової умови відбору записів. 3. У запис Критерії поля Стаж уведемо вираз 16. Збережемо запит, для чого на пане- лі швидкого доступу натиснемо кнопку Зберегти й у вікні, що відкриється, уве- демо ім’я Запит_1 і натиснемо кнопку ОК. У результаті ім’я цього запиту з’явиться в області переходів. 4. Виконаємо запит. Для цього на стрічці в групі Результати натиснемо кнопку За­ пуск!. Отримаємо результат, як подано на рис. 3.3.
  • 33. 333.2. Запити на вибірку... 5. Для закриття запиту відкриємо його контекстне меню і виконаємо команду Закрити. Методика створення запиту для кількох таблиць багато в  чому схожа на  методику створення запиту для однієї таблиці. Лише слід ураховувати, що таблиці обов’язково повинні мати між собою зв’язок. Рис. 3.2. Вікно конструктора запитів Рис. 3.3. Дані про працівників магазинів зі стажем роботи понад 16 років Створений запит можна перейменовувати й редагувати. Щоб перейменувати запит, слід відкрити його контекстне меню й виконати команду Перейменувати. Ім’я цього запиту в області переходів буде виділено прямокутником іншого ко- льору. У поле слід увести нове ім’я й натиснути клавішу Enter. У процесі редагування запиту можна виконувати такі дії: • додавати поля в запит із таблиці; • вилучати поля; • додавати нові поля; • змінювати розміри полів; • змінювати порядок розміщення полів; • змінювати критерії відбору записів, порядок їх сорту- вання й порядок виведення (невиведення) полів; • перейменовувати поля запиту; • вилучати таблиці із запиту (для багатотабличних запитів). Для виконання цих операцій запит потрібно відкрити в режимі конструктора. Їх виконують так само, як і анало- гічні операції в таблицях (приклад 2).
  • 34. 34 Розділ 1 Приклад 2. Створити Запит_2, за допомо- гою якого в результуючу таблицю виводять- ся прізвища диспетчерів із полями Номер магазину і Телефон із таблиці МАГАЗИНИ, а з таблиці КАДРИ — поля Прізвище, Посада й Освіта. Упорядкувати записи за прізвищами працівників в алфавітному порядку. 1. У відкритій БД atb активуємо вкладку Створення й виконаємо команду Макет запиту. Додамо у вікно конструктора за- питу обидві таблиці й закриємо вікно Відображення таблиць. 2. У запис Поле таблиці конструктора запи- ту перенесемо поля Номер магазину й Те­ лефон таблиці МАГАЗИНИ і поля Прізви­ ще, Посада й Освіта таблиці КАДРИ. 3. У запис Критерії поля Посада введемо назву професії диспетчер, а в записі Сор­ тування поля Прізвище встановимо зна- чення За зростанням. 4. Збережемо запит з іменем Запит_2 і вико- наємо його. На екрані повинні з’явитися записи, як наведено на рис. 3.4. Рис. 3.4. Дані про диспетчерів, вибрані з двох таблиць Запитання для перевірки знань Які запити називають запитами на вибірку даних? Як зберігається запит? Опишіть режими, у  яких можна відкрити запит. Для чого призначено запис Критерії табли­ ці конструктора запиту? Як можна змінити порядок розміщення по­ лів у  запиті? Поясніть різницю між створенням запиту для однієї таблиці та кількох таблиць. Як створити запит на вибірку даних? Які дії можна виконувати під час редагуван­ ня запиту? 1 2 3 4 5 6 7 8 Завдання для самостійного виконання Створіть Запит41 на основі таблиці УЧНІ, за допомогою якого вибираються прізвища учнів, улюбленим предметом яких є історія. Записи повинні мати поля Прізвище, Клас, Улюблений предмет. Створіть Запит42 на основі таблиці УЧНІ, за допомогою якого вибираються прізвища учнів, зріст яких більший від 170. Створіть Запит43 на основі таблиці УЧНІ, за допомогою якого вибираються прізвища учнів, улюбленими предметами яких є  ма­ тематика та інформатика. Створіть Запит44 на основі таблиць КЛАСИ й  УЧНІ, за допомогою якого вибираються прі­ звища класних керівників учнів, які з інформа­ тики та історії мають бали, більші від 10. Створіть Запит45 на основі таблиці УЧНІ, за допомогою якого вибираються прізвища учнів, які народилися у  2002 році. Створіть Запит46 на основі таблиць КЛА­ СИ й УЧНІ, за допомогою якого для класів, у  яких учнів більше ніж 24, вибираються прізвища учнів, які з  історії мають більше від 9 балів. 1 2 3 4 5 6
  • 35. 35 3.3. Запити з функціями і з полями, що обчислюються Назвіть переваги використання стандартних функцій у  запитах. Ми вже розглянули запити, за допомогою яких із таблиць можна вибрати необхідні дані за певними критеріями. Отри- мані дані можна також опрацьовувати (наприклад, обчисли- ти середнє значення поля, знайти серед знайдених запис із мінімальним значенням певного поля тощо). Так, для таблиці КАДРИ можна обчислити середній стаж роботи працівників із вищою освітою. У системі Access є вбудовані функції, що дають змогу уза- гальнити дані деяких полів і полегшити опрацювання даних. Запити, у яких використовуються такі функції, називають по-різному, наприклад підсумковими запитами. Але найчас- тіше їх називають запитами з функціями. У системі Access 2.16 існує два способи використання пере- лічених функцій: • до запиту, відкритого в режимі таблиці, додається запис підсумків, у якому для кожного поля може використову- ватись одна з функцій; • у режимі конструктора створюється підсумковий запит, у якому обчислюються проміжні підсумки за групами записів. Розглянемо на прикладі 1 перший спосіб. Деякі функції системи Access: • Sum (Сума)  — обчислює суму значень елементів поля; • Avg (Середнє)  — обчислює середнє значення поля; • Max/Min (Максимум/ Мінімум)  — повертає елемент із максимальним/мінімальним значенням поля; • Count (Кількість)  — підраховує кількість записів за значенням поля. Приклад 1. Створити Запит_4, за допомогою якого з таблиці КАДРИ вибираються запи- си про співробітників, які народилися після 1961 року і мають стаж понад 15 років. Ре- зультуючі записи повинні містити поля: Прі­ звище, Посада, Рік народження, Стаж і Оклад. Підрахувати кількість результуючих записів за значенням поля Прізвище й обчислити за- гальну суму окладів цих осіб. 1. Створимо в режимі конструктора зви- чайний запит на вибірку (рис. 3.5). 2. Збережемо запит з іменем Запит_4 і вико- наємо його. Результат виконання запиту наведено на рис. 3.6. 3. На вкладці Основне в групі Записи на- тиснемо кнопку Підсумки (∑). Під остан- нім записом таблиці (рис. 3.6) з’явиться новий запис Підсумок. У цьому записі клацнемо поле Прізвище та в списку, що відкриється, виберемо функцію Кіль­ кість. 4. Аналогічно в цьому самому записі поля Оклад виберемо функцію Сума. У результаті отримаємо результат, як на- ведено на рис. 3.7. 5. Для збереження внесених змін ще раз клацнемо кнопку Зберегти. Рис. 3.5. Приклад запиту на вибірку даних у режимі конструктора
  • 36. 36 Розділ 1 Рис. 3.6. Результат виконання запиту на вибірку даних Рис. 3.7. Запит у режимі таблиці з підсумковим записом Приклад 2. 1. Створимо звичайний запит на вибірку в режимі конструктора, наприклад за- пит, за допомогою якого з таблиці КА- ДРИ вибираються прізвища працівників з окладом понад 4000 грн і підрахову- ється їх кількість. Результуючий перелік записів має містити поля Справа, Прізви­ ще, Стаж, Оклад. 2. Уведемо в рядок Критерії поля Оклад ви- раз 4000. 3. На вкладці Конструктор відкриємо меню кнопки Відображення або приховання й виконаємо команду Підсумки (∑). У конструкторі запиту з’явиться рядок Підсумок, а в кожному полі цього запису буде зазначено Групування за. 4. У записі Підсумок клацнемо те поле, за яким потрібно виконати підраху- нок кількості записів (наприклад, поле Справа). У списку, що відкриється, виберемо функцію Кількість (рис. 3.8). 5. Збережемо запит та виконаємо. Рис. 3.8. Приклад підсумкового запиту в режимі конструктора Розглянемо на прикладі 2 другий спосіб.
  • 37. 373.3. Запити з функціями... Система Access 2016 дозволяє створювати запити з полями, що обчислюються. Таких полів у запиті може бути кілька. Запити з полями, що обчислюються, — це запити, які дозволяють виводити в результуючий набір записів не лише поля таблиць, а й нові поля, які створює сам користувач. У запитах із полями, що обчислюються, містяться дані, отримані під час обчислення даних полів таблиць. Напри- клад, на основі даних таблиці КАДРИ в результуючий набір записів можна ввести поле Доплата, у якому обчислюється до- плата до окладу залежно від стажу працівника (приклад 3). Приклад 3. Припустимо, що за кожен рік стажу понад 5 років пра- цівники отримують надбавку у розмірі 1% від посадового окладу. Тоді надбавку можна обчислити за формулою: Доплата  =  Оклад*(Стаж–5)/100. На основі таблиці КАДРИ створимо запит з іменем Запит_5, за допомогою якого виводяться всі записи таблиці з полями Прізвище, Стаж, Оклад і Доплата, значення якого обчислюється за наведеною формулою. Порядок створення запиту такого типу несуттєво відрізняється від порядку звичайних запитів (приклад 4). Приклад 4. 1. Відкриємо БД atb, активуємо вкладку Створення й клацнемо кнопку Макет запиту. Із таблиці КАДРИ перенесемо в конструктор запиту поля Прізвище, Стаж, Оклад, а в наступне поле введе- мо вираз: Доплата:[Оклад]*([Стаж]–5)/100. Зверніть увагу на те, що імена полів, які входять у вираз, беруться у ква- дратні дужки. 2. Установимо в записі Сортування поля Прізвище значення За зростанням для того, щоб прізвища виводилися в алфавітному порядку. Створений запит зображено на рис. 3.9. 3. Збережемо запит з іменем Запит_5 (зга- даємо, що для цього потрібно натиснути кнопку Зберегти, у вікні, що відкриєть- ся, ввести ім’я запиту й клацнути кноп- ку ОК). У результаті виконання запиту має з’явитися результат, як наведено на рис. 3.10. 4. Закриємо Запит_5. Рис. 3.9. Запит із полем, що обчислюється Френсіс Елізабет Аллен — аме­ риканська вчена, піонерка в га­ лузі оптимізації компіляторів, стала перша жінка, яка отрима­ ла премію Тюрінга.
  • 38. 38 Розділ 1 Рис. 3.10. Результат виконання запиту з полем, що обчислюється Запитання для перевірки знань Назвіть основні вбудовані функції для опра­ цювання даних у  запиті. Які запити називають запитами з  полями, що обчислюються? Яке призначення має функція Caunt (Кіль­ кість)? Назвіть способи використання вбудованих функцій у  запитах. Опишіть порядок створення запитів із функ­ ціями. Як додати до запиту підсумковий запис у  режимі таблиці? Поясніть порядок створення підсумкового запиту. Поясніть порядок створення запиту з поля­ ми, що обчислюються. 1 2 3 4 5 6 7 8 Завдання для самостійного виконання Створіть Запит51 на основі таблиці УЧНІ, за допомогою якого підраховується кількість учнів, улюбленими предметами яких є  гео­ графія та фізика. Записи повинні містити поля Прізвище, Клас, Улюблений предмет. Створіть Запит52 на основі таблиці УЧНІ, за допомогою якого обчислюється серед­ ній бал успішності учнів 11 класів окремо з  інформатики й  окремо з  історії. Створіть Запит53 на основі таблиці УЧНІ, за допомогою якого обчислюється кількість учнів, які мешкають на вул. Лугова. Створіть Запит54 на основі таблиць КЛАСИ й  УЧНІ, за допомогою якого обчислюється спільний середній бал успішності з  інфор­ матики та історії учнів класу, яким керує Дерев’янко Н. С. Створіть Запит55 на основі таблиці УЧНІ, за допомогою якого обчислюється середній зріст учнів кожного класу. Створіть Запит56 на основі таблиць КЛА- СИ й  УЧНІ, за допомогою якого для учнів 10  класу, улюбленим предметом яких є  ін­ форматика, обчислюється різниця середньо­ го бала успішності з  інформатики та історії. 1 2 3 4 5 6
  • 39. 39 3.4. Запити з параметрами. Перехресні запити Ви вже знайомі з  деякими типами запитів. Які ще функції доцільно використовувати для виконання запитів? Ми вже розглядали запити з постійними критеріями, тобто запити, під час повторного виконання яких критерій відбору записів не змінювався. На практиці ж часто виникає потреба у зміненні цих критеріїв. Наприклад, під час першого вико- нання запиту слід вибрати із таблиці КАДРИ прізвища дис- петчерів зі стажем роботи понад 10 років, а під час другого — прізвища диспетчерів зі стажем роботи понад 15 років. Такі дії можна виконувати за допомогою запитів із параметрами. Запит із параметрами — це запит, у процесі виконання якого пропонується ввести деякі дані, наприклад умову, яку потрібно вставити в поле. Його ще називають запитом зі змінними критеріями. За запитами з параметрами на початку їх виконання на екран виводяться повідомлення про необхідність уведення нового критерію (виразу). Методика створення запиту такого типу несуттєво відрізняється від методики створення звичай- ного запиту. Розглянемо порядок створення такого запиту на прикладі 1. Приклад 1. Розробити запит з іменем Запит_6, за допо- могою якого з БД atb вибиратимуться прізвища працівників за посадами диспетчер і експерт із магазинів, номери яких уводяться при вико- нанні запиту. Результуючі записи мають місти- ти поля Номер магазину й Адреса таблиці МАГА- ЗИНИ і поля Прізвище й Посада таблиці КАДРИ. Порядок створення запиту може бути таким. 1. Відкриємо БД atb і виконаємо коман- ду Створення → Макет запиту. Виділимо обидві таблиці, клацнемо кнопку Додати й закриємо вікно Відображення таблиці. 2. Із таблиці МАГАЗИНИ перенесемо в таб- лицю конструктора поля Номер магазину й Адреса, а з таблиці КАДРИ — поля Прізвище й Посада. 3. В умові завдання визначено, що за допо- могою запиту мають відбиратися записи тільки за посадами диспетчер і експерт, тобто ця умова є незмінною. Тому в клі- тинку на перетині запису Критерії і поля Посада уводимо вираз диспетчер Or екс­ перт. Щоразу після запуску при виконанні за- питу користувач може вводити будь-який номер магазину. Тому на перетині запи- су Критерії та поля Номер магазину можна увести, наприклад, текст [У якому магазині?]. Головне, щоб текст містився у квадратних дужках. У результаті отримаємо запит у режимі конструктора, як наведено на рис. 3.11. Рис. 3.11. Запит із параметром Пошукова система Google була створена у 1998 році. За  перші два роки її існування у БД цієї пошукової системи було зібрано дані про мільярд веб­сторінок, а у 2008 році — близько трильйона.
  • 40. 40 Розділ 1 4. Збережемо й виконаємо Запит_6. На екра- ні висвітлиться вікно Введення значення параметра із запитанням У якому магазині? (рис. 3.12). Уведемо, наприклад, номер магазину 21, клацнемо кнопку ОК. Отримаємо результат, як наведено на рис. 3.13. Рис. 3.12. Вікно введення значення параметра Рис. 3.13. Результат виконання запиту з параметром Проаналізуємо вміст таблиці КАДРИ й переконаємося, що дійсно в магазині з номером 21 на посадах диспетчера й екс- перта працюють відповідно Семко М. М. і Рябко Р. П. Якщо потрібно здійснити пошук прізвищ диспетчерів і експертів у кількох магазинах, то в запис Критерії поля Но­ мер магазину необхідно ввести іншу умову, а саме — діапазон номерів магазинів, наприклад: [Більше якого?] And [Менше якого?]. У процесі виконання запиту спочатку з’явиться повідом- лення Більше якого?, а потім — Менше якого?, на які потрібно дати певну відповідь. Один запит може містити декілька параметрів у  різних полях. Перехресний запит — це запит на вибірку даних із мож- ливостями групування записів. Групування можна виконувати як за значеннями полів, так і за значеннями записів. Наприклад, із таблиці КА- ДРИ можна отримати кількість працівників на всіх посадах у кожному магазині. Як заголовки полів можуть бути вико- ристані й деякі вирази. У режимі конструктора перехресний запит спочатку ство- рюється як звичайний запит на вибірку даних, а потім уста- новлюється режим перехресного запиту. Розглянемо порядок створення перехресного запиту на прикладі 2. Для створення перехресного запиту потрібно використати щонайменше три поля: • поле для визначення заголовка записів; • поле для визначення заголовка полів; • поле для вибору значень, над якими будуть виконуватися обчислення.
  • 41. 413.4. Запити з параметрами... Приклад 2. Створити перехресний запит, за допомогою якого підраховуються працівники на кожній посаді в кожному магазині. 1. Створимо звичайний запит на вибірку даних у режимі конструктора. Для цього виконаємо команди Створити → Макет запи­ ту → Додати → Закрити. Перенесемо в таб- лицю конструктора запиту поля Посада й Номер магазину. Виконаємо запит і пере- конаємося, що він функціонує правильно. 2. Перемкнемо запит у режим конструктора і перетворимо в тип перехресний. У групі Тип запиту клацнемо кнопку Перехресний. У таблиці конструктора запиту з’являть- ся записи Підсумок і Перехресний. У записі Підсумок обох полів не змінюємо значення Групування за. Клацнемо клітинку на перетині поля Посада й запису Перехресний і виберемо зі списку, що розкриється, Заголо­ вок рядка, а в полі Номер магазину цього само- го запису — Заголовок стовпця. 3. У третє поле таблиці конструктора запи- ту перенесемо поле Номер магазину, у за- писі Підсумок якого встановимо функцію Кількість, а в записі Перехресний — Зна­ чення. У записі Сортування першого поля можна встановити потрібне сортування записів. Таб- лиця конструктора запиту матиме вміст, як наведено на рис. 3.14. Рис. 3.14. Таблиця конструктора перехресного запиту Запитання для перевірки знань Які запити називають запитами з  параме­ трами? Які поля обов’язково використовують у  пе­ рехресних запитах? Наведіть приклад запиту з  параметрами. Поясніть сутність перехресного запиту. Поясніть порядок створення запиту з  пара­ метрами. Опишіть порядок створення перехресного запиту. 1 2 3 4 5 6 Завдання для самостійного виконання Створіть Запит61 із параметрами на основі таблиці УЧНІ, за допомогою якого виво­ дяться прізвища учнів із різними улюбле­ ними шкільними предметами, назви яких уводяться в  процесі виконання запиту. Створіть Запит62 із параметрами на основі таблиці УЧНІ, за допомогою якого виводять­ ся прізвища учнів різного зросту, значення яких уводяться в  процесі виконання запиту. Створіть перехресний Запит63, за допо­ могою якого підраховується кількість уч­ нів, які мають певний улюблений предмет, у  всіх класах. Створіть перехресний Запит64, за допомо­ гою якого обчислюється кількість учнів ок­ ремо в  кожному класі, зріст яких більший за 163 см. Створіть Запит65 із параметрами на основі таблиці УЧНІ, за допомогою якого виво­ дяться прізвища учнів, їхній улюблений предмет і  номер класу, що вводяться під час виконання запиту. Створіть перехресний Запит66, за допомо­ гою якого обчислюється кількість учнів, які мають певний улюблений предмет, у  кож­ ному класі. 1 2 3 4 5 6
  • 42. 42 3.5. Запити на змінення даних Дані можна змінювати безпосередньо в  таблицях. Чи доцільно, на вашу думку, застосовувати запити для виконання аналогічних операцій? Чому? Запит на змінення даних — це запит, за допомогою якого в таблицю вносяться зміни. Можна не лише вибирати необ- хідні дані з таблиць, а й створювати з вибраних даних нову таблицю, змінювати дані в уже створених таблицях, додавати нові записи в створені таблиці, вилучати з таблиць записи. В Access існують різні типи запитів на змінення (рис. 3.15). Порядок створення запитів на змінення в режимі конструк- тора такий самий, як і порядок створення звичайних запитів на вибірку даних. Потім створений запит перетворюється на запит одного з перелічених типів. Далі розглянемо особливості розроблення запитів для ство- рення нової таблиці та додавання записів у таблицю. За допомогою запитів для створення нової таблиці вибира- ються дані з однієї або кількох таблиць і з них формується нова таблиця. Вона може бути розміщена як у поточній БД, так і в іншій, ім’я якої вказується під час створення запиту цього типу. Нова таблиця не має зв’язку з тими таблицями, з яких вона створена. Отже, якщо в таблицях-джерелах від- булися зміни, то дані в ній автоматично не оновлюються. Розглянемо створення запиту на прикладі 1. оновлення даних вилучення даних додавання  нових записів створення таблиць Запит Рис. 3.15. Типи запитів даних Приклад 1. Розробити запит, за допомогою якого на основі даних таблиць МАГАЗИНИ й КАДРИ створюється нова таблиця з іменем ДОДАТКОВА, у якій містяться поля Справа, Прізвище, Рік народження і Працівників тих мага- зинів, де кількість працюючих перевищує 14. 1. У відкритій БД atb виконаємо команду Створити → Макет запиту, виділимо обидві таблиці й перенесемо з таблиці КАДРИ поля Справа, Прізвище й Рік народження, а з таблиці МАГАЗИНИ — поле Праців­ ників. Закриємо вікно Відображення таб- лиці. У запис Критерії поля Працівників уведемо вираз 14. Виконаємо запит і пе- реконаємося, що отримано правильний результат. 2. Перемкнемо запит у режим конструктора й перетворимо запит на вибірку в запит на створення таблиці. Для цього на вклад- ці Конструктор у групі Тип запиту клацнемо кнопку Створення таблиці. Відкриється ві- кно Створити таблицю (рис. 3.16). Рис. 3.16. Вікно для створення таблиці 3. У поле Ім’я таблиці введемо ім’я но- вої таблиці, наприклад ДОДАТКОВА, і ввімкнемо перемикач Поточна база да­ них, оскільки цю таблицю зберігатимемо у відкритій (поточній) БД atb. Після цьо- го клацнемо кнопку ОК. 4. На панелі швидкого доступу клацнемо кнопку Зберегти й збережемо запит із іменем Запит_7. 5. Виконаємо Запит_7 — відкриється вікно (рис. 3.17).
  • 43. 433.5. Запити на змінення... Рис. 3.17. Вікно для підтвердження збереження таблиці Запити на додавання даних призначено для додавання нових записів у таблицю на основі опрацювання за певними критеріями даних, які вже є в раніше створених таблицях. Інколи для додавання всіх записів усіх полів із наявної таблиці в нову доцільніше скористатися командами Копіювати і Вставити. Записи можна додавати як у відкриту, так і в за- криту таблицю. Якщо записи додаються в таблицю іншої БД, то слід вказати ім’я та маршрут файла цієї БД. Загальний порядок розроблення запитів такий: 1) створюється запит на вибірку, за допомогою якого фор- муються необхідні записи для додавання; 2) перетворюється запит на вибірку в запит на додавання; 3) вибирається таблиця, у яку додаватимуться записи; 4) зберігається й виконується запит. Розглянемо порядок дій на прикладі 2. Якщо у  записі Поле таблиці конструктора запиту є  символ «зірочка» (*), то це означає, що використовувати в  запиті окремі поля цієї самої таблиці неможливо. 6. Для збереження таблиці в поточній БД клацнемо кнопку Так. В області перехо- дів з’явиться ім’я таблиці ДОДАТКОВА. Після цього закриємо запит і відкриємо створену таблицю, вміст якої наведено на рис. 3.18. 7. Проаналізуємо вміст таблиці й перекона- ємося, що вона сформована правильно. Рис. 3.18. Вміст таблиці ДОДАТКОВА Приклад 2. Створити Запит_8, за допомогою якого до таблиці ДОДАТКОВА додаються з таблиць МАГАЗИНИ й КАДРИ прізвища працівників магазинів, у яких працює 13 ро- бітників, народжених у 1975 році. 1. Створимо запит на вибірку. Із таблиці МАГАЗИНИ перенесемо в таблицю кон- структора запитів поля Справа, Прізвище й Рік народження, а з таблиці КАДРИ — поле Працівників. Після виконання цього запиту має з’явитися результат, як наве- дено на рис. 3.19. Рис. 3.19. Запит на вибірку даних із таблиць МАГАЗИНИ й КАДРИ 2. Перетворимо створений запит на ви- бірку в запит на додавання. Для цьо- го перейдемо в режим конструктора і в групі Тип запиту виконаємо команду Додавання.
  • 44. 44 Розділ 1 3. У вікні Додавання, що відкрилося, введе- мо ім’я таблиці — ДОДАТКОВА, вибере- мо варіант Поточна база даних і клацнемо кнопку ОК. 4. Збережемо запит з ім’ям Запит_8 і ви- конаємо його. У результаті відкриється вікно, як наве- дено на рис. 3.20. Рис. 3.20. Вікно для підтвердження додавання запису Рис. 3.21. Таблиця після додавання запису 5. Підтвердимо додавання запису, для чого клацнемо кнопку Так. Закриємо Запит_8 і відкриємо таблицю ДОДАТКОВА. У результаті повинна з’явитися таблиця, як наведено на рис. 3.21. Запитання для перевірки знань Назвіть типи запитів на змінення. Як перетворити запит на вибірку в запит на створення таблиці? Як перетворити запит на вибірку в запит на додавання? Як створити запит для створення таблиці? Яка сутність запитів на додавання записів? Опишіть загальний порядок створення за­ питу на додавання. Наведіть приклад запиту для створення но­ вої таблиці. Наведіть приклад запиту на додавання. 1 2 3 4 5 6 7 8 Завдання для самостійного виконання Розробіть Запит71, за допомогою якого на основі таблиці УЧНІ створюється таблиця ПЕРША1. Таблиця повинна містити дані про учнів 10 класу з полями Прізвище, Дата на- родження, Зріст, Улюблений предмет, Клас. Створіть Запит72, за допомогою якого до таблиці ПЕРША1 додаються записи про учнів 9 класу з тими самими полями, що й у завдан­ ні 1. Збережіть таблицю з іменем ПЕРША2. Створіть Запит73, за допомогою якого на основі даних таблиць КЛАСИ й  УЧНІ створюється таблиця з  іменем ПЕРША3 з  полями Прізвище, Дата народження, Улюблений предмет, Клас для класів, у  яких кількість учнів менша за 27. Розробіть Запит74, за допомогою якого до таблиці ПЕРША3 додається поле Інформа- тика. Дані збережіть у таблиці ПЕРША4. Розробіть Запит75, за допомогою якого до таблиці ПЕРША4 додаються записи про класи, у яких кількість учнів дорівнює 27 і  які мають з історії успішність 9 балів. 1 2 3 4 5
  • 45. 45 Рис. 4.1. Засоби створення форм 4. Інтерфейс користувача. Основи мови SQL. Імпорт та експорт даних 4.1. Створення інтерфейсу користувача для введення даних у базу даних Спробуйте самостійно визначити основні недоліки таблиць і  запитів для роботи з  даними з  точки зору кінцевого користувача. Як ви знаєте, дані БД зберігаються у таблицях, і в них можна безпосередньо вводити дані, редагувати їх і вилучати. Не кожен користувач має право це робити. Задля забезпечен- ня цілісності даних і безпеки БД для більшості користувачів доступ до структури і власне таблиць БД має бути обмеже- ний. Наприклад, продавець супермаркету має право внести дані про реалізацію конкретного товару, але не може змінити ціну товару, це право належить адміністрації. У середовищі Access для введення даних використовується форма. З одного боку, форми забезпечують безпеку даних від не- санкціонованого доступу, а з іншого — спрощують сам про- цес уведення даних — користувачу не потрібно переглядати таблицю з десятками полів і відшукувати потрібні дані. Ко- ристувачу пропонується бланк, наприклад, із двома-трьома полями, у які він має право внести необхідні дані. Важливо й те, що за допомогою форми дані можуть оновлюватися од- ночасно у кількох пов’язаних таблицях. Система Access 2016 має різні засоби створення форм, які містяться на вкладці Створення у групі Форми (рис. 4.1). Найпо- тужнішим інструментарієм створення форм є Конструктор форм. Із таблицею як об’єктом працює в  основному адміністратор БД. Для роботи з  даними користувачам потрібен більш простий і  зручний інтерфейс. Для кожної категорії працівників бажано розробити свої правила й  засоби роботи з  БД. Форма — це фактично електронний бланк, який для кожної групи користувачів має свою структуру. У  цій структурі містяться імена полів, доступні саме для цієї групи. Після заповнення полів дані потрапляють у  відповідні поля таблиць для подальшого збереження. Розглянемо порядок використання Конструктора форм для введення даних у БД на прикладі 1. Приклад 1. Створити для БД atb на ос- нові таблиці МАГАЗИНИ форму з іменем Форма_6 і з полями Номер магазину, Адреса, Директор, Телефон. Перед першими двома полями ввести текст Координати, а ще перед двома — Контакти. 1. Виділимо в області переходів таблицю МАГАЗИНИ, активуємо вкладку Створи­ ти й у групі Форми виконаємо команду Конструктор форм. На екрані з’явиться порожня форма з розділом Подробиці й буде активовано вкладку Конструктор.
  • 46. 46 Розділ 1 2. У групі Колонтитули клацнемо кнопку Назва. У результаті відкриється вікно (рис. 4.2), у якому містяться підрозділи Верхній колонтитул форми, Нижній колонти­ тул форми і текстове поле з іменем Форма1. 3. Установимо курсор у поле Форма1, введе- мо текст заголовка, наприклад Магазини нашого району, і клацнемо кнопку Enter. 4. У верхню частину області Подробиці уве- демо текст Координати, який відповідно до умови має міститися перед першими двома полями. Для цього клацнемо кноп- ку Напис, установимо курсор у потрібну позицію області Подробиці, уведемо текст Координати й клацнемо кнопку Enter. 5. У правій частині вікна має розташовува- тися поле Список полів (якщо воно відсут- нє, клацнемо кнопку Додавання наявних полів, і воно з’явиться). У цьому полі клацнемо кнопку Відображати всі таблиці. Ліворуч від назви таблиці МАГАЗИНИ встановимо перемикач у положення (–) — під назвою таблиці відкриється список її полів. Перемістимо поле Номер магазину в те місце розділу Подробиці, куди слід помістити це поле. У результаті на формі буде розташовано два пов’язані елементи: власне поле введення і підпис для нього (підпис співпадає з іменем цього поля). 6. Аналогічно перемістимо до бланку фор- ми поле Адреса. 7. Після двох перших полів розмістимо на- зву ще двох полів. Для цього за аналогі- єю у групі Елементи керування клацнемо кнопку Напис, установимо курсор у по- трібну позицію області Подробиці, уведемо назву Контакти й натиснемо клавішу Enter. Перемістимо поля Директор і Телефон у розділ Подробиці. Розмістимо елементи форми більш зручно (рис. 4.3). Рис. 4.2. Порожня форма в режимі конструктора Рис. 4.3. Форма, створена в режимі конструктора
  • 47. 474.1. Створення інтерфейсу... Після цього можна закрити вікно Список полів. Якщо у форму необхідно додати поля з кількох таблиць, то їх потрібно розкрити так само, як і поля таблиці МАГАЗИНИ. 8. Збережемо форму з іменем Форма_6. Те- пер форму можна переглянути в таких режимах: Режим форм, Подання таблиці, Режим розмітки. На рис. 4.4 створену форму відкрито в режимі форми. Рис. 4.4. Форму відкрито в режимі форми Зовнішній вигляд форми можна налаштувати з урахуван- ням потреб користувача. Для цього слід відкрити контекстне меню форми: установити курсор на вільному місці форми, відкритої в режимі конструктора, і клацнути праву кнопку миші. Вміст контекстного меню форми зображено на рис. 4.5. Щоб змінити колір фону форми, вказівник миші слід уста- новити на команді Колір заливки/фону та в наборі кольорів, що відкриється, вибрати потрібний колір. Або вибрати інший спосіб: відкрити контекстне меню за- головка форми чи інших її компонентів і встановити потрібні кольори. На формі можна також установити або зняти ліній- ку, сітку чи виконати інші налаштування. Один із варіантів налаштування зовнішнього вигляду фор- ми наведено на рис. 4.6. Рис. 4.5. Контекстне меню форми Рис. 4.6. Варіант оформлення зовнішнього вигляду форми За допомогою кнопок навігації можна перейти до будь­якого запису.
  • 48. 48 Розділ 1 Порядок додавання записів на основі створеної форми роз- глянемо на прикладі 2. Рис. 4.7. Запис, доданий у таблицю Рис. 4.8. Вміст таблиці МАГАЗИНИ після додавання запису Приклад 2. 1. Відкриємо Форму_6 у режимі форми. Перейдемо на порожній запис, для чого клацнемо, наприклад, кнопку Створити запис, розташовану на панелі навігації. 2. Уведемо в порожній рядок форми дані, наприклад такі: Номер магазину — 6; Адреса  — вул. Річкова, 24; Директор — Середа К. М.; Телефон — 234­67­92 (рис. 4.7). 3. Збережемо й закриємо форму. Таблиця МАГАЗИНИ, відкрита в режимі подан- ня таблиці, набуде вмісту, як наведено на рис. 4.8. Зверніть увагу на те, що поле Працівників для введеного за- пису містить нуль, оскільки у Формі_6 такого поля створено не було і дані в нього не вводилися. Запитання для перевірки знань Яке призначення Конструктора форм? Поясніть порядок створення форм за допо­ могою Конструктора форм. Як перейти до будь­якого запису? Поясніть порядок оформлення загального вигляду форми. 1 2 3 4 Завдання для самостійного виконання Створіть за допомогою Конструктора форм для таблиці КЛАСИ форму з  полями Клас, Учнів, Класний керівник. Здійсніть навіга­ цію по записах форми. Створіть за допомогою Конструктора форм для таблиці УЧНІ форму з  полями Прізви- ще, Клас, Інформатика. Створіть за допомогою Конструктора форм для таблиці КЛАСИ та  таблиці УЧНІ форму з  полями Клас, Класний керівник, Прізвище, Адреса, Дата народження. Пе­ регляньте форму в  різних режимах. Само­ стійно виберіть колір кожного компонента форми. 1 2 3
  • 49. 49 4.2. Основи мови запитів SQL Поміркуйте, як мова запитів SQL розширює функціональні можливості СУБД для роботи з  даними. Сучасні системи управління реляційними БД, у тому чис- лі Access 2016, містять потужні візуальні засоби, зрозумілий і зручний графічний інтерфейс, що забезпечує ефективну ро- боту з БД. Водночас існують спеціальні мови для створення й супроводу БД. Однією з таких мов є SQL (Structured Query Language — структурована мова запитів). У системі Access 2016 реалізовано частину SQL, що забезпе- чує формування запитів і роботу з ними. Далі стисло розгля- немо основні відомості саме про мову запитів SQL. Як і інші мови програмування, SQL має власний синтаксис. У синтаксичних конструкціях використовуються такі понят- тя, як ключові слова, оператори, інструкції, речення та ін. У мові запитів SQL найчастіше використовуються такі опе- ратори: • SELECT — визначає поля, із яких необхідно вибрати дані; • FROM — визначає таблицю, поля якої вказано в реченні SELECT; ключові слова SELECT і FROM завжди використо- вуються разом; • WHERE — визначає умову відбору полів, за якою вибира- ються дані; • ORDER BY — визначає порядок сортування отриманих результатів; • GROUP BY — визначає порядок групування записів. Інструкція  — це логічно завершена конструкція, яка може інтерпретуватися самостійно. Вона складається із речень і  закінчується крапкою з  комою. Речення — це частина інструкції, що обов’язково містить ключове слово, яке визначає його назву. Наприклад, SELECT Прізвище називають реченням SELECT, а WHERE Посада = ’вчитель’ — реченням WHERE. У мові SQL структура найуживаніших речень така: SELECT список полів ­­ речення SELECT FROM ім’я таблиці ­­ речення FROM WHERE ім’я поля = умова; ­­ речення WHERE SQL фактично стала стандартом мови реляційних БД. Вона постійно розвивається й  удосконалюється, змінюються її міжнародні стандарти. Наприклад, за допомогою інструкції: SELECT Прізвище, Адреса, Телефон FROM Школа WHERE Посада = 'вчитель'; із таблиці Школа вибираються всі записи, у полі Посада яких є значення вчитель. Результуючий набір записів містить поля Прізвище, Адреса, Телефон. Інструкції можуть містити коментарі, які не впливають на їх виконання. Найчастіше застосовуються однорядкові коментарі, які починаються двома символами «­­».
  • 50. 50 Розділ 1 Конструкції у  фігурних дужках є  обов’язковими, у  квадратних дужках  — необов’язковими. Багато термінів, понять, синтаксичних правил і властивос- тей мови SQL збігаються з відповідними назвами класичних мов програмування. Усі конструкції мови (ключові слова, оператори тощо) однаково сприймаються і великими, і мали- ми літерами. За стандартом мови SQL для імен об’єктів (таблиць, полів та ін.) використовується латинський алфавіт, але в багатьох ви- падках допускається використання й національного алфавіту. Розглянемо порядок створення найпростішого запиту за допомогою мови SQL на прикладі. Приклад. Створити найпростіший запит на основі таблиці КАДРИ за допомогою мови за- питів SQL. 1. У системі Access 2016 виконаємо команду Створити → Макет запиту. 2. Закриємо вікно Відображення таблиці. 3. На вкладці Конструктор у групі Результати клацнемо кнопку SQL. Відкриється вікно Запит1, у робочому полі якого висвітлить- ся оператор SELECT. Він обов’язково ви- користовується з оператором FROM і має таку мінімальну загальну структуру: SELECT список імен полів FROM ім’я таблиці; Наприклад, інструкція: SELECT* FROM ім’я таблиці; забезпечує виведення всіх полів таблиці. Після виконання інструкції: SELECT Справа, Прізвище, Освіта, Стаж FROM КАДРИ; отримаємо результат, як наведено на рис. 4.9. Рис. 4.9. Записи таблиці КАДРИ з  окремими полями Як бачимо, виводяться записи з полями, зазначені в опе- раторі SELECT. Зауважимо, що порядок розміщення полів у реченні SELECT може бути довільним і не збігатися з порядком їх розміщен- ня в початковій таблиці. Поля виводяться в порядку їх розміщення у реченні SELECT. Запитання для перевірки знань Які оператори містить найпростіша інструк­ ція мовою SQL? Поясніть загальний формат найпростішої інструкції мовою SQL. Наведіть приклад найпростішої інструкції мовою SQL. Які дужки використовують для обов’язко­ вих конструкцій? 1 2 3 4
  • 51. 51 4.3. Імпорт і експорт об’єктів баз даних Чому, на вашу думку, виникає потреба імпортувати й  експортувати дані із БД в  інші об’єкти? На практиці досить часто доводиться одночасно працювати не з одним файлом БД, а з кількома, у тому числі розміще- ними в Інтернеті. У таких випадках виникає потреба в обмі- ні даними (об’єктами) між БД, створеними за допомогою од- нієї СУБД (наприклад, Access 2016), різних СУБД (наприклад, Access і Paradox). Окрім того, інколи буває потрібно обмінятися даними між Access та іншими програмами пакета Windows, наприклад Word-, Excel-, Outlook-, HTML- і XML-документами. Найпростішим способом обміну об’єктами між Windows-про- грамами є копіювання об’єктів і вставлення за допомогою бу- фера обміну. Наприклад, у документ, створений у текстовому процесорі Word, можна додати рисунок, створений у графічно- му редакторі Paint. У системі Access 2016 для обміну об’єктами здійснюють спеціальні операції, що отримали назву імпорту й експорту. Крім того, для отримання даних із інших зовнішніх джерел системою Access підтримується технологія зв’язування, яка тут не розглядається. У процесі імпортування об’єкти перетворюються у формат Access 2016 і розміщуються в новому об’єкті, а в об’єкті-дже- релі залишаються без змін. Наприклад, нова і початкова таб- лиці існують незалежно одна від одної. Технології імпорту з різних систем (Word, Excel та ін.) відрізняються одна від одної. Але загальний порядок імпортування однаковий для всіх систем. Етап 1 Відкриття БД­приймача і  вибір системи, з  якої здійснюватиметься імпортування (наприклад, Access, Excel). Етап 2 Вибір об’єктів, які необхідно імпортувати, і  налаштування параметрів їх імпортування (у разі необхідності). Етап 3 Виконання імпортування. За своїм змістом експорт є операцією, зворотною до імпор- ту. У процесі експортування здійснюється перенесення даних із об’єктів системи Access в іншу БД цієї системи, а також у зовнішні файли різних форматів. Під час експортування дані перетворюються у новий формат, а об’єкти-джерела за- лишаються незмінними. Оскільки загальні принципи імпортування й експорту- вання всіх типів об’єктів БД ідентичні, далі розглядатимемо лише технологію та правила імпортування об’єктів із однієї БД Access 2016 в іншу БД Access 2016. Для отримання об’єктів у  БД із зовнішніх джерел в  Access 2016 використовується технологія імпорту, а  для передавання об’єктів в  інші застосунки  — технологія експорту. Імпортувати можна будь­які об’єкти БД. Одночасно можна імпортувати як кілька об’єктів одного типу (наприклад, кілька запитів), так і  кілька об’єктів різного типу (наприклад, кілька таблиць і  запитів).
  • 52. 52 Розділ 1 Приклад. Здійснити імпорт таблиці КАДРИ і запиту Запит_1 із БД atb у БД skola. Отже, джерелом є база atb, а приймачем — база skola. 1. Відкриємо БД-приймач skola, активуємо вкладку Зовнішні дані. Панель інстру- ментів набуде вигляду, як зображено на рис. 4.10. Рис. 4.10. Панель інструментів вкладки Зовнішні дані 2. У групі Імпорт і  зв’язування відкриємо меню кнопки Нове джерело даних, уста- новимо в ньому курсор на назві Із бази даних. Відкриється перелік джерел, як наведено на рис. 4.11. 3. Оскільки виконується імпорт об’єктів із однієї БД Access в іншу БД Access, клац- немо кнопку Access. Відкриється перше вікно Майстра імпорту, як наведено на рис. 4.12. Рис. 4.11. Перелік джерел даних для імпортування Рис. 4.12. Перше вікно Майстра імпорту Розглянемо технологію імпортування на прикладі.
  • 53. 534.3. Імпорт і експорт об’єктів... У поле Ім’я файла цього вікна можна ввести повне ім’я файла БД-джерела. Мож- на також скористатися кнопкою Огляд… і вибрати файл atb. Клацнемо кнопку Огляд та знайдемо ім’я atb, увімкнемо перемикач Імпортувати таблиці, запити… і клацнемо кнопку ОК. Відкриється вікно Імпортувати об’єкти (рис. 4.13). Рис. 4.13. Вікно для імпортування об’єктів У цьому вікні містяться вкладки об’єктів БД-джерела atb. На вкладці Таблиці виберемо таблицю КАДРИ, для чого встановимо курсор на її імені й клацнемо праву кнопку миші. Потім на вкладці Запити виберемо Запит_1. 4. Можна налаштувати деякі параметри ім- портування вибраних об’єктів. Для цього клацнемо кнопку Параметри. У резуль- таті у вікні відобразиться область нала- штування параметрів імпорту (рис. 4.14). Рис. 4.14. Вікно з областю налаштування параметрів імпорту Розглянемо призначення параметрів групи Імпорт таблиць. Перемикач Визначення та дані встановлю- ється в тому випадку, коли з БД-джерела не- обхідно імпортувати і структури, і дані всіх таблиць, вибраних користувачем у допоміж- ному вікні. Якщо вибрати перемикач Лише визначення, то імпортуватимуться тільки структури таблиць, а не дані. Увімкнемо перший перемикач. Запит_1 створено на основі таблиці КАДРИ, яку вже імпортовано. Отже, для його запуску в БД skola жодних операцій виконувати не треба, увімкнемо перемикач Як запити.
  • 54. 54 Розділ 1 5. Для збереження всіх налаштувань клацнемо кнопку ОК. Одразу почнеться імпортування вибраних об’єктів у БД skola. Після завершення імпортування на екран буде виведено повідомлення про результат виконання операції, як наве- дено на рис. 4.15. 6. Усі кроки, що виконувалися під час ім- портування, можна зберегти для того, щоб за потреби можна було повторити їх без використання Майстра імпорту (за замовчуванням ці кроки не зберігають- ся). Для збереження виконаних кроків у вікні, що відкрито, необхідно ввімкну- ти прапорець Зберегти етапи імпортування. Але тут виконувати цю операцію немає потреби, тому просто клацнемо кнопку Закрити. Якщо тепер відкрити БД skola, то в ній побачимо таблицю КАДРИ і За- пит_1. Їх вміст такий самий, як у БД atb. Рис. 4.15. Вікно для збереження етапів імпортування Щоб імпортувати текстовий файл, його необхідно попе- редньо структурувати так, щоб кожний рядок файла був за- писом, а кожний запис поділявся на окремі поля. Для розмежування полів часто використовується крапка з комою. Приклад структурованого текстового файла: Микола; 050-400-22-33; 21 січня Олена; 063-333-11-55; 5 травня Запитання для перевірки знань Опишіть найпростіший спосіб обміну дани- ми між програмами Windows. Між якими програмами можна здійснювати обмін даними з  БД Access 2016? Яка сутність імпорту даних у  БД Access? З  якою метою здійснюється налаштування параметрів імпортування? Поясніть загальний порядок імпортування даних у  БД Access. Що використовують для розмежування полів? 1 2 3 4 5 6 Завдання для самостійного виконання Для виконання завдання створіть на жор- сткому диску БД persha. Імпортуйте в  БД persha форму з  іменем Форма_1 із БД atb. Перевірте правильність імпортування. Для імпортування таблиці із  книги Excel потрібно відкрити БД-приймач, на вкладці Зовнішні дані клацнути кнопку Excel і вибрати команду Майстра імпорту. Тест 1 Тест 2 Тест 3 Тест 4 Тестові завдання з  автоматичною перевіркою результату на  сайті interactive.ranok.com.ua
  • 55. 555.1. Методи проектування... Розділ 2. АЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИАЛГОРИТМИ 5. Алгоритми і числа 5.1. Методи проектування і подання алгоритмів Пригадайте, у  якій формі ви подавали алгоритми, яких правил дотримувались у  процесі розроблення програм. Проектування алгоритмів і програм є виключно творчим процесом. Не існує універсального методу розроблення ал- горитму розв’язування для будь-якого завдання. Для кож- ного завдання необхідно знайти свій, найбільш раціональ- ний метод. У процесі проектування алгоритму намагаються: • забезпечити мінімальний час розв’язування задачі; • використати мінімальний обсяг пам’яті; • досягти потрібної точності й надійності обчислення; • забезпечити ефективне використання можливостей наяв- них бібліотек, зокрема мінімізувати вартість розроблен- ня алгоритму. Методи проектування алгоритмів класифікуються за ба- гатьма ознаками. Основними з них є ступінь автоматизації проектування алгоритмів і програм та методологія проекту- вання програмних продуктів (рис. 5.1). Неавтоматизовані методи використовуються у процесі розроблення невеликих і нескладних програмних продуктів за участю невеликої кількості розробників. Такі методи за- стосовуються, зокрема, у процесі розроблення програмних продуктів навчального призначення. Автоматизовані методи застосовуються у великих компа- ніях і потребують додаткового апаратно-програмного забезпе- чення і високої кваліфікації працівників. В основі структурного проектування програмних про- дуктів лежать послідовна декомпозиція і структурування програмного продукту на окремі складові. Структурне про- ектування програмних продуктів засноване на створенні ал- горитмів із базових структурних алгоритмічних одиниць. До- ведено, що такими одиницями є: слідування, розгалуження і повторення (цикли). Ці алгоритмічні структури послідовно з’єднуються або укладаються одна в одну з дотриманням пев- них правил. Алгоритм виконується послідовно зверху вниз. Правильність виконання алгоритму можна відслідкову- вати на кожному етапі його побудови і виконання. Будь- який алгоритм може бути еквівалентно поданий структу- рованим алгоритмом, що складається з базових алгоритміч- них структур. За методологією проектування програмних продуктів За ступенем автомати- зації проектування алгоритмів і  програм Неавтоматизовані (традиційні) Автоматизовані (CASE-технологія) Структурне програмування Об’єктно- орієнтоване програмування Методи проектування алгоритмів Рис. 5.1. Класифікація методів проектування алгоритмів
  • 56. 56 Розділ 2 Розглянемо типові методи структурного проектування про- грамних продуктів: Метод Опис Спадний (згори вниз) Його сутність полягає в  тому, що задача поступово (за кроками) ділиться на ряд допоміжних підзадач (підалгоритмів), кожна з  яких може бути реалізована сукупні- стю простих і  елементарних операцій (процедур). Висхідний (знизу догори) Вже наявні й  заздалегідь розроблені допоміжні алгоритми розв’язування окремих підзадач поступово об’єднуються в  загальну структуру доти, доки не буде досягну- то розв’язання поставленого завдання. Модульний Модуль  — це окрема самостійна частина алгоритму (деякий блок), що має свою назву, функціональну цілісність і  завершеність. Посилання на модуль здійснюється за допомогою його імені. Виклик і  актуалізація модуля можливі лише через його заголовок. Перевага модульного методу полягає в  тому, що різні модулі одночасно можуть розробляти різні фахівці. Кожний модуль може тестуватися і  налагоджуватися ок- ремо від інших. Згадаемо способи подання алгоритмів: Спосіб Опис Словесний Передбачає опис алгоритму природною мовою, широко застосовується у  повсяк- денному житті (наприклад, у  вигляді інструкцій з  експлуатації приладів, рецептів виготовлення ліків тощо). Інструкція складається з  указівок, форма запису яких довільна. Головне, щоб указівки були точними й  зрозумілими всім користувачам. Словесний спосіб є  досить простим і  доступним, проте опис алгоритмів часто є  громіздким, а  їхні вказівки можуть сприйматися різними виконавцями неодно- значно. Словесно- формульний Використовує природну мову, а  також спеціальні символи, що застосовуються в  певній науковій галузі (наприклад, хімічні формули, математичні вирази та ін.). Наприклад, широко застосовується оператор присвоювання (:=). У  мові Python, що застосовується в певній науковій галузі (наприклад, хімічні формули, математичні вирази та ін.), цей оператор позначається символом «=» (дорівнює). Наприклад, розв’яжемо квадратне рівняння ax2  + bx + c = 0. 1. Уведемо значення змінних a, b, c. 2. Обчислимо дискримінант 2 : 4d b ac= −= 2 : 4d b ac= − . 3. Якщо d 0, то виконаємо пункт 6, інакше  — пункт 4. 4. Знайдемо корені рівняння: 1 2 b d a x − − = ; x b d a 2 2 = − + . 5. Перейдемо до пункту 7. 6. Дискримінант від’ємний. Рівняння не має розв’язків. 7. Кінець. Графічний Передбачає подання алгоритму у  вигляді геометричних фігур (блоків), з’єднаних стрілками (лініями зв’язку). Подання алгоритмів за допомогою блоків називають блок-схемами, вони мають високу наочність.
  • 57. 575.1. Методи проектування... Завершення таблиці На рис. 5.2 зображено основні блоки, за допомогою яких створюються блок-схеми алгоритмів. Початок Кінець Введення Виведення Дія (процес) а б в г Так Умова Ні Рис. 5.2. Основні графічні позначення на блок-схемах: термінатори (а); дані (б); процес (в); перевірка умови (г) Комбінований Поєднує в  собі подання алгоритмів, засноване на словесному, словесно-формуль- ному і  графічному методах. Об’єктно-орієнтоване проектування програмних продуктів засноване на тому, що кожний об’єкт об’єднує дані й програ- ми (методи) їх опрацювання в єдину конструкцію. Кожний об’єкт належить до відповідного класу. При цьому створюєть- ся ієрархія класів, визначаються властивості об’єктів і роз- робляються методи їх опрацювання, а також дотримуються специфічні принципи об’єктно-орієнтованого програмування. Запитання для перевірки знань Які існують методи подання алгоритмів? За якими ознаками класифікують методи проектування програмних продуктів? Назвіть методи структурного проектування програмних продуктів. Поясніть сутність структурного проектування. У чому полягає сутність об’єктно-орієнтова- ного програмування? Які критерії слід ураховувати під час проек- тування алгоритму? Назвіть переваги й  недоліки кожного мето- ду проектування алгоритмів. 1 2 3 4 5 6 7 Завдання для самостійного виконання Користуючись словесним способом подан- ня, опишіть алгоритм виправлення помилок у  слові алгарітм у текстовому процесорі Word, щоб отримати слово алгоритм. Відомо, які оцінки з усіх предметів отримали за І півріччя учні Ніна та Антон. Розробіть ал- горитм визначення, у  кого з  учнів середній бал успішності вищий, у графічний спосіб. Знайдіть в  Інтернеті відомості про відстані від Києва до трьох районних центрів вашої області. Користуючись словесно-формульним способом, розробіть алгоритм визначення, який із них розташований ближче до Києва. Знайдіть в  Інтернеті назви п’яти найбільших за кількістю населення міст вашої області. Користуючись словесно-формульним спосо- бом, розробіть алгоритм визначення назви міста, в  якому мешкає людей найбільше. Розробіть блок-схему алгоритму обчислен- ня виразу y a b c a a b a = +( )⋅ − = + ≠     3 2 3 2 1 0 0 , , , . якщо якщо Розробіть блок-схему алгоритму обчислен- ня виразу y a bx x a c x x b = − − +          2 2 0 0 , , , . якщо якщо У банк покладено S1 грн під k  відсотків річних. Розробіть блок-схему алгоритму ви- значення, через скільки років сума вкладу перевищуватиме S2 грн. 1 2 3 4 5 6 7
  • 58. 58 5.2. Поняття про кодування і складність алгоритмів З якими мовами програмування ви вже знайомі? Чи можна один і  той самий алгоритм реалізувати мовою програмування різними способами? Для того самого алгоритму можна розробити різні варіан- ти програм, які відрізняються наочністю, обсягом потрібної пам’яті, швидкістю виконання, формою подання отриманих результатів та ін. Кодування алгоритму  — це запис алгоритму мовою програмування. Структурне програмування в Python виконується за допо- могою обов’язкових відступів. Складені оператори об’єднують у блоки. Це означає, що відступи інструкцій кожного блоку встановлюються автоматично, але після останньої інструкції блоку програміст має самостійно змінити відступ. За наданим програмним кодом легко встановити умову задачі. Приклад програмного коду мовою Python зображено на рис. 5.3. Рис. 5.3. Приклад структурованого тексту програми Така програма є досить наочною, її легко читати, розуміти та здійснювати пошук помилок. Простим і водночас потуж- ним засобом забезпечення наочності програми є використан- ня коментарів. У програмному коді доцільно використовувати не однобук- вені ідентифікатори, а смислові назви, так, масив краще по- значити не буквою m, а ідентифікатором masyv або іншим. У програмі слід використовувати раціональну довжину рядків, щоб її можна було легко модифікувати. Не бажано застосовувати довгі рядки.
  • 59. 595.2. Поняття про кодування... Наведемо деякі рекомендації для підвищення ефективності програм. 1. Фрагменти коду, що багаторазово повто- рюються, бажано оформляти у вигляді функції. Це дозволяє скоротити довжи- ну програми, а відповідно й обсяг по- трібної пам’яті. Використання функцій не тільки скорочує довжину програми, а й спрощує процес її розроблення і на- лагодження, підвищує структурованість і надійність програм. 2. З метою скорочення кількості операцій у складному математичному виразі до- цільно виділяти та окремо обчислювати прості вирази. Пояснимо сутність прийому на прикла- ді. Припустимо, що потрібно обчислити вираз: y := (a+c+b–d)/(2/(a+c)–3)*(b–d)*(a+c). Щоб обчислити вираз, потрібно виконати 4 операції додавання, 3 операції відні- мання, 2 операції множення, 2 операції ділення. Обчислимо вираз за схемою: x1 := a+c; x2 := b–d; y  := (x1+x2)/(2/x1–3)*x2*x1. Щоб обчислити вираз, потрібно вико- нати: 2 операції додавання, 2 операції віднімання, 2 операції множення і 2 операції ділення. Як бачимо, кількість арифметичних опе- рацій скоротилася на три. 3. Вирази, які не змінюються в тілі циклу, доцільно для наочності програми вико- нувати до початку тіла циклу. Складність алгоритму — це функція, що дозволяє визна- чити, як швидко збільшується час роботи алгоритму зі збіль- шенням обсягу даних. Складність алгоритму оцінюється людськими ресурсами, потрібними для розробки та тестування алгоритму, й обчис- лювальними ресурсами. Із практичної точки зору обчислювальні ресурси оціню- ються нині двома основними критеріями: обсягом пам’яті, потрібної для реалізації алгоритму, та кількістю часу, необ- хідного для виконання алгоритму. Кількість необхідного часу для виконання програми нази- вають обчислювальною складністю. Відзначимо, що ця кількість є неоднозначною оцінкою, оскільки залежить від параметрів апаратних засобів комп’юте- ра. На одному комп’ютері алгоритм може бути виконаний за один проміжок часу, а на іншому — за інший. Запитання для перевірки знань Як досягається наочність програмного про- дукту? Що слід розуміти під складністю алгоритму? Як реалізується структуризація програмно- го коду в  мові Python? За якими основними критеріями оцінюють- ся обчислювальні ресурси? Як краще позначати масив? Назвіть основні рекомендації для підви- щення ефективності програми. 1 2 3 4 5 6 Час виконання алгоритму безпосередньо залежить від  вхідних даних: їх якості та  кількості.
  • 60. 60 5.3. Основні поняття теорії чисел ` 5.3.1. Системи числення Якими системами числення ви користувалися? Чому, на вашу думку, дані в  комп’ютері подаються у двійковій системі числення? Система числення  —  сукупність правил запису (зобра- ження) чисел за допомогою символів (цифрових знаків) і  виконання операцій над ними. Розрізняють непозиційні й позиційні системи числення. У непозиційних системах числення кількісне значення цифри не залежить від її місця розташування в зображенні числа. Такі системи складні для запису чисел і виконання над ними арифметичних операцій, тому вони сьогодні майже не застосовуються (приклад 1). У позиційних системах числення кількісне значення циф- ри залежить не лише від значення самої цифри, а й від її місця (позиції) у записі числа (приклад 2). Кожну позицію цифри в числі називають розрядом. Зазви- чай для цілих чисел використовується така нумерація розря- дів: молодший розряд цілого числа має номер нуль, а кожний наступний номер збільшується на одиницю. Для дійсних чисел старший розряд у дробовій частині має номер –1, а кожний наступний номер дробового разряду зменшується на одиницю. Таким чином, якщо ціла частина числа має n розрядів, а дробова — m розрядів, то старший розряд цілої частини має номер n – 1, а молодший розряд дробової частини — но- мер –m. Основними характеристиками позиційних систем числення є основа системи числення, вага розрядів, значення цифр, які використовуються в системі числення. Основою системи числення (q) зазвичай називають кіль- кість цифр, які можуть використовуватися в записі числа. Найчастіше для цього використовуються числа натурального ряду, включаючи нуль (приклад 3). Вага розрядів у позиційних системах числення найчастіше дорівнює основі системи числення у степені номера розряду (приклад 4). Десяткова система є прикладом системи з природною ва- гою розрядів, тобто такою, у якій у цілому числі вага кож- ного наступного розряду більша від ваги попереднього розря- ду в кількість разів, що дорівнює основі системи числення, а в дробовій — менше на таке саме значення. На практиці застосовуються і системи числення з вагою розрядів, відмінною від природної ваги. Таку вагу розрядів називають штучною. Системи числення зі штучною вагою розрядів застосовують у спеціальних цілях, наприклад для захисту від перешкод. Приклад 1. У наші дні з не- позиційних систем числення збереглася римська система, у якій числа записуються за допомогою цифр: I (один), V (п’ять), X (десять), L (п’ят- десят), C (сто) і т. д. Приклад 2. У числі 64 кількісне значення цифри 6 дорівнює 60, а у числі 40,6 — тільки 0,6. Приклад 3. У десятковій системі застосовують числа 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, у вісімковій — 0, 1, 2, 3, 4, 5, 6, 7. Приклад 4. У десятково- му числі 725 вага другого розряду дорівнює 10 1002 = , а у числі 0,4563 вага розряду –3 дорівнює 10 0 0013− = , .
  • 61. 615.3. Основні поняття... Дані в комп’ютерних системах подаються символами 0 і 1. Це обумовлено тим, що у двійковій системі числення порівня- но з іншими найпростіше виконуються арифметичні операції, і вона надійніше реалізується технічно. Двійкова система (як і десяткова) є позиційною. Нагадає- мо, що в таких системах кількісне значення цифри (кількіс- ний еквівалент) залежить як від значення самої цифри, так і від її місця (позиції, розряду) у записі числа. З урахуванням номера розряду й основи системи числення визначається кількісний еквівалент кожної цифри в числі (приклади 5, 6). Приклад 5. У десятковому числі 326,75 цифра 3 розміщена у другому розряді і має 3 10 3002 * = одиниць, цифра 2 розміщена у першому розряді і має 2 10 201 * = одиниць, цифра 6 розміщена у нульовому розряді і має 6 10 60 * = одиниць, цифра 7 розміщена в мінус першому розряді і має 7 10 0 71 * ,− = одиниць, цифра 5 розміщена в мінус другому розряді і має 5 10 0 052 * ,− = одиниць. Десяткове число 326,75 можна записати у вигляді суми: 326 75 3 10 2 10 6 10 7 10 5 102 1 0 1 2 , * * * * *= + + + +− − Приклад 6. Двійкове число 1011,01 можна записати у вигля- ді многочлена: 1 2 0 2 1 2 1 2 0 2 1 2 11 253 2 1 0 1 2 * * * * * * ,+ + + + + =− − . Еквівалентом двійкового числа 1011,01 є десяткове число 11,25. Крім перелічених систем числення, використовуються та- кож інші системи, наприклад двійково-десяткова. Двійково-десятковий код (англ. binary-coded decimal), BCD, 8421-BCD — форма запису раціональних чисел, коли кожний десятковий розряд числа записується у вигляді його чотири- бітового двійкового коду. Наприклад, десяткове число 31110 буде записано у двійковій системі. У двійково-десятковій системі кожна десяткова цифра по- дається чотирма двійковими розрядами (приклад 7). Приклад 7. Десяткове число 618,74 має такий запис у двій- ково-десятковій системі: 0110 0001 1000, 0111 0100 — двійково-десяткове значення 6 1 8 , 7 4 Крайні ліві нулі в цілій частині і крайні праві нулі у дробовій частині можна на папері не писати, тобто те саме десяткове число у двійково-десятковій системі можна записа- ти так: 11000011000,011101. В  обчислювальній техніці основною системою числення є  двійкова система із символами 0  і 1. Застосовують також десяткову, вісімкову і  шістнадцяткову системи числення. Щоб визначити кількісне значення цифри в  позиційній системі числення, необхідно помножити цю цифру на основу системи в  степені того номера розряду, в  якому розміщена ця цифра.
  • 62. 62 Розділ 2 Чотири двійкові розряди називають тетрадою. Щоб знайти десятковий еквівалент двійково-десяткового числа, необхідно в цілій частині ліворуч від коми й у дробовій частині пра- воруч від коми відокремити тетради і знайти їхні десятко- ві значення. Неповні тетради умовно доповнюються нулями (приклад 8). Щоб розрізняти, у якій системі задано на папері число, праворуч від нього в дужках інколи записують систему чис- лення (приклад 9). У шістнадцятковій системі значення її перших десяти сим- волів збігаються з цифрами десяткової системи, а інші симво- ли мають значення A, B, C, D, E, F. У табл. 5.1 наведено ці символи та відповідні їм двійкові та десяткові значення. Таблиця 5.1. Кодування шістнадцяткових символів Шістнадцяткові символи Двійкові значення Десяткові значення A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 Ми розглянули подання (кодування) десяткових та шістнад- цяткових символів двійковими значеннями, у яких розряди мають значення (вагу) 8, 4, 2, 1. Такий код (8421) називають кодом прямого заміщення. Саме цей код є найрозповсюджені- шим. Проте на практиці інколи використовують код із вагою розрядів 2421, а також код із залишком 3 8421 3+( ) та ін. Запитання для перевірки знань Який вигляд мають десяткові цифри у  двій- ковій системі числення? Як нумеруються розряди чисел? Як записуються шістнадцяткові символи у  двійковій системі числення? Як записуються десяткові числа у  вісімко- вій системі числення? Чому двійкова система є основною в техніці? Доведіть, чому не може бути двійково-де- сятковим число 10 1111 0111,  0111 1000. 1 2 3 4 5 6 Завдання для самостійного виконання Запишіть десяткове число 93,64 у  вигляді многочлена. Запишіть двійкове число 110  111,011 у  ви- гляді суми. Запишіть десяткове число 170,25 у  шістнад- цятковій системі числення. Шістнадцяткове число A0E,B запишіть у  двійковій системі числення. Чому число 1  011  101  101,001  001  01 не може бути двійково-десятковим значенням. Замініть розгорнутий запис двійкового числа 1 2 0 2 1 2 0 2 1 2 0 2 1 24 3 2 1 0 1 2 * * * * * * *+ + + + + +− −   1 2 0 2 1 2 0 2 1 2 0 2 1 24 3 2 1 0 1 2 * * * * * * *+ + + + + +− − на скорочений. Запишіть двійково-десяткове число 1  011  000,001  001  01 у  десятковій системі числення, а потім у  вигляді суми. 1 2 3 4 5 6 7 Приклад 8 100 1000 1001, 0101 001 — 4 8 9 , 5 2 двійково-десяткове значення Задане двійково-десяткове число дорівнює десятковому числу 489,52. Приклад 9. 101001 2( ) ; 10 011001 011001 2 10, −( ) . Перше число записане у  двійковій системі числення, а  друге  —  у  двійково-десятковій системі.
  • 63. 63 ` 5.3.2. Робота з великими числами З  якими великими числами вам доводилося зустрічатися у  житті? Які, на вашу думку, проблеми можуть виникати в  комп’ютері у  процесі оброблення великих чисел? У науці, техніці, побуті зустрічаються великі числа, тобто числа, що містять велику кількість розрядів, наприклад 20, 100 і більше (приклад 1). У математиці великі числа (а також досить малі) часто записують в експоненціальній формі, тоб- то з використанням мантиси і порядку (приклад 2). Нормалізованими називають числа, у яких кома розміщу- ється праворуч після першої значущої цифри. У мові Python числа в експоненціальній формі записують так: замість числа 10 вказується велика буква E або мала буква e, а після букви — степінь. Знак множення не вказу- ється, а замість коми ставиться крапка. Наприклад, 1.496E11 або 1.496e11. У сучасних мовах програмування суттєвих проблем ро- боти з досить великими або досить малими числами майже не існує. Але слід враховувати, що математичні операції над великими або досить малими числами виконуються повіль- ніше, ніж операції над невеликими числами. У мові Python фактично не існує обмежень на довжину цілих (тип int) і дійсних (тип float) чисел (приклад 3). Приклад 3. Розглянемо подання двох 15-розрядних десяткових цілих чисел у мові Python і результат виконання над ними опе- рації множення: Подання двох дійсних чисел і результат виконання над ними операції множення по- яснюється таким прикладом: Якщо перевірити точність обчислення цих чисел, то побачимо, що отриманий результат відрізняється від абсолютно точного на одну десятитисячну. Якщо числа цілого або дійсного типу до- сить великі, то результат виконання операції над ними подається в експоненціальній формі: Проте навіть у тому випадку, якщо почат- кові числа подано в експоненціальній формі, результат виконання операції над ними може бути отриманий цілого або дійсного типу. Така ситуація виникає тоді, коли початкові числа мають невеликі значення. Далі наведено такий варіант: Приклад 1. До великих можна віднести такі назви чисел: мільярд 1000 000 000 109 =( ), трильйон 1000 000 000 000 1012 =( ), квадрильйон 1000 000 000 000 000 1015 =( ), квінтильйон 1000 000 000 000 000 000 1018 =( ) та ін. Приклад 2. Десяткове число 149 600 000 000 може бути записано так: 1 496 1011 , ⋅ , або 0 001496 1014 , ⋅ , або 14 96 1010 , ⋅ . Перший запис означає, що число нормалізоване.
  • 64. 64 Розділ 2 Отже, результат операції над цілими або дійсними числа- ми подається в експоненціальній формі, якщо результат має досить велике або досить мале значення, і навпаки — у зви- чайній формі, якщо результат операції має не досить велике або не досить мале значення. Нагадаємо, що для використання функцій необхідно на початку програмного коду підключити цю бібліотеку за допо- могою команди import math. Функція викликається за допомогою команди math.ім’я функції(x), де х — це будь-яке число, змінна або вираз. Функція повертає значення, яке можна вивести на екран, присвоїти іншій змінній або використати у виразі. Приклад 4. Відомі максимальна і міні- мальна відстані від Землі до Марса і швид- кість польоту сучасного космічного корабля. Розробимо проект визначення кількості діб польоту до Марса. Варіант проекту зображено на рис. 5.4. Рис. 5.4. Програма визначення часу польоту до Марса Результат виконання проекту: Запитання для перевірки знань Які назви великих чисел вам відомі? Як записуються числа мовою Python в  екс- поненціальному вигляді? У яких випадках результат виконання мате- матичних операцій подається в експоненці- альному вигляді? 1 2 3 Завдання для самостійного виконання Число 4.375 помножте на 10 у  степені 20. Результат виведіть на екран. Розробіть програму перетворення градусів Фаренгейта у  градуси Цельсія за допомо- гою формули C  = 5/9*(F–32). Перетворіть за допомогою функції float() рядок ‘234.25’ у  число. Доведіть, що отри- маний результат є правильним. Краща врожайність пшениці в  Україні до- сягається при нормі висіву зерна 3–4 млн насінин, або 120–200 кг, на гектар. При цьо- му з  кожного гектара збирають 3–3,5 тон- ни зерна. Розробіть програму визначення мінімального і  максимального посіву зерна в  насінинах і  кілограмах на площі 100 га, а  також мінімальний і  максимальний вро- жай у  насінинах і  кілограмах. 1 2 3 4 Для виконання обчислень із дійсними числами мова Python має значну кількість функцій у  бібліотеці (модулі) math, які вивчаються в  курсі 10 класу.
  • 65. 65 ` 5.3.3. Факторизація чисел Які числа називають простими? На які прості множники можна розкласти числа 625 і  2100? Факторизацією натурального числа називають його розкладання на добуток простих множників. Наприклад, число 525 може бути розкладене на такі про- сті множники: 3 5 5 7 525* * * = . Доведено, що кожне натураль- не число має єдине розкладання на прості множники. Тривіальним алгоритмом факторизації чисел є повний перебір можливих простих дільників, починаючи з числа 2. Його сутність така. Крок 1 Задане натуральне число аналізується, чи не є  воно простим. Якщо воно просте, факториза- ція завершується, а  його множником є  саме це число. Крок 2 Якщо число складене, відшукується перший за величиною простий дільник, на який без залиш- ку ділиться число (спочатку число 3, потім 5, далі 7, 11 і  так далі). Крок 3 Далі перевіряється простота отриманої частки. Якщо частка не є  простим числом, факториза- ція продовжується у  порядку, описаному вище, інакше  —  вона завершується. Пояснимо сутність факторизації методом повного перебору на прикладі 1. Приклад 1. Розглянемо сутність методу пов- ного перебору на прикладі числа 84. 1. Визначаємо, що число 84 непросте, тому ділимо це число на 2. Отримаємо частку 42 і перший дільник 2. 2. Визначаємо, що число 42 непросте, тому ділимо його на 2. Отримаємо частку 21 і другий дільник 2. 3. Визначаємо, що число 21 непросте, тому робимо спробу поділити його на найменший дільник 2. Але число 21 не ділиться на 2. Тому переходимо до на- ступного простого числа. 4. Ділимо число 21 на 3. Отримаємо частку 7 і третій дільник 3. 5. Визначаємо, що число 7 просте. Тому четвертим простим дільником є 7. На цьому процес факторизації завершений. Отже, число 84 можна розкласти на такі прості множники: 2 2 3 7 84* * * = . З описаного алгоритму можна зробити висновок, що для факторизації чисел натурального ряду методом повного пере- бору треба: • уміти визначати, чи є частка на кожному кроці факто- ризації простим числом; • уміти визначати черговий за величиною простий дільник. RSA (абревіатура від прізвищ Rivest (Рівест), Shamir (Шамір) та Adleman (Адлеман)) — алгоритм криптографічної системи з  відкритим ключем. Його надійність основана на складності задач факторизації натуральних чисел. RSA став першим алгоритмом такого типу, придатним і для шифрування, і  для цифрового підпису. Алгоритм RSA запропонували вчені Массачусетського технологічного інституту в  1977  р. Він має практичне значення у  галузі шифрування і  дозволяє факторизувати 100-розрядні числа.
  • 66. 66 Розділ 2 На практиці прості числа деякого діапазону інколи збері- гаються в таблиці (масиві, списку). Сутність алгоритму розкладання цілого числа на прості множники з використанням масиву простих чисел шляхом повного перебору така: Крок 1 Задане ціле число порівнюється зі значенням першого елемента масиву. Якщо вони рівні, то це означає, що саме число є  простим. Інакше  — робиться спроба поділити число на значення цього елемента масиву. Крок 2 Якщо залишок дорівнює нулю, то множником є  цей дільник, а  частка ділиться на зна- чення цього самого елемента масиву. Цей процес продовжується доти, поки залишок від ділення чергової частки на значення елемента масиву не буде дорівнювати нулю. Крок 3 Якщо залишок не дорівнює нулю, вибирається черговий елемент масиву і  далі продовжуються аналогічні процеси доти, поки остання частка не буде дорівнювати значенню елемента масиву. Алгоритм факторизації натурального числа і його реаліза- цію на прикладі факторизації числа 90 наведено в табл. 5.2. Таблиця 5.2. Послідовність виконання алгоритму факторизації № Алгоритм Цикл 1-й 2-й 3-й 4-й 5-й 6-й 1 Створити mas1 =  [2, 3, 5, 7] mas1 =  [2, 3, 5, 7] 2 k1  —  довжина масиву mas1 k1 := 4 3 Створити порожній масив mas2 mas2[] 4 Увести n n := 90 5 I := 0  (лічильник циклів) I := 0 6 Якщо n  = mas1[i], то п. 7, інакше  —  п. 9 90 =  2, ні, п. 9 45 =  3, ні, п. 9 5 =  5, так, п. 7 7 Додати елемент mas1[i] до масиву mas2 mas2 [3] := 5 8 Перервати цикл (до п. 15) до п. 15 9 Якщо n%mas1[i] == 0, то п. 10, інакше  —  п.  13 90%2 == 0, так, п. 10 45%2 == 0, ні, до п. 13 45%3 == 0, так, до п. 10 15%3 == 0, так, до п. 10 5%3 == 0, ні, до п. 13 10 Додати mas1[i] до масиву mas2 mas2[0] := 2 mas2[1] := 3 mas2[2] := 3 11 n := n//mas1[i] n := 45 n := 15 n := 5 12 Перейти до п. 9 до п. 9 до п. 9 до п. 9 13 i := i+1 i := 1 i := 2 14 Якщо i = k1, то п. 6, інакше  —  п. 15 i =   4, так, до п. 6 i   =   4, так до п. 6 15 Виведення масиву mas2 Виведення 2  3 3  5
  • 67. 675.3. Основні поняття... Програму реалізації алгоритму зображено на рис. 5.5. Рис. 5.5. Програма факторизації з використанням масиву простих чисел Результат виконання програми: На рис. 5.6 наведено більш удосконалену програму факто- ризації натуральних чисел методом повного перебору, але без використання масиву простих чисел. У програмі використано ключове слово yield, яке виконує фактично ту ж функцію, що й return (повертає результат обчислення). У цьому випадку значення d  передається у чергову позицію списку. Рис. 5.6. Програма факторизації натуральних чисел із ключовим словом yield Далі наведено один із варіантів виконання програми: Наведений алгоритм є  досить простим, але мало придатним для великих чисел, тому що він потребує збереження досить великих масивів простих чисел.
  • 68. 68 Розділ 2 Зробимо пояснення щодо функції виведення. У програмі реалізовано форматоване виведення результату. У процесі форматування створюється рядок шляхом підстановки в ньо- го даних, які отримуються у процесі виконання програми. Підстановка виконана за допомогою методу format. Якщо за допомогою цього методу потрібно підставити тільки один ар- гумент, то значенням є сам аргумент (приклад 1). Приклад 1. Якщо для підстановки потрібні декілька аргументів, то значеннями є всі аргументи з рядками підстановки (звичай- ними або іменованими) (приклад 2). Приклад 2. У функції виведення використаний метод join, який до- зволяє вивести список за допомогою однорядкової команди. Тут один параметр — список рядків. У результаті отриму- ється рядок з’єднанням елементів списку (які передані як параметри) в один рядок. При цьому між елементами списку вставляється розмежувач, рівний тому рядку, в якому вико- ристовується метод. Розглянемо приклад 3. Якщо список складається з чисел, то необхідно використа- ти функцію map (приклад 4). Приклад 4. Швейцарець Ніклаус Вірт  — жива легенда в світі програмування. Це блискучий інженер і глибокий дослідник, який у 1984 році був удостоєний премії Тюрінга. Приклад 3.
  • 69. 695.3. Основні поняття... Порядок виконання програми, яку подано на рис. 5.6 на прикладі факторизації числа 60 наведено в табл. 5.3. Таблиця 5.3. Аналіз порядку виконання програми, зображеної на рис. 5.6 Інструкції Пуск Цикл 1-й 2-й 3-й 4-й 5-й 6-й 7-й 8-й def func1 (x, d  = 2) x = 60, d = 2 while x 1 True True True True True True True False q, r  = divmod(x, d) q = 30, r = 0 q = 15, r = 0 q = 7, r = 1 q = 5, r = 0 q = 1, r = 2 q = 1, r = 1 q = 1, r = 0 if r False False True False True True False d += 1 d = 3 d = 4 d = 5 Else yield d 2 у  кор- теж 2 у  кор- теж 3 у  кор- теж 5 у  кор- теж x = q x = 30 x = 15 x = 5 x = 1 n =  int(input(«увести»)) n = 60 print(‘ () = ()’.format(n’*’. join(map(str, func1(n))))) Звернення до func1 60=2*2 * *3*5 Запитання для перевірки знань Що називають факторизацією натурального числа? Яке призначення має ключове слово yield? Скільки різних варіантів простих множників може мати натуральне число? Розкладіть на прості множники число 624. Поясніть сутність факторизації цілих чисел методом повного перебору. Сформулюйте алгоритм факторизації чисел з  використанням масиву простих чисел. 1 2 3 4 5 6 Завдання для самостійного виконання Проаналізуйте програму (рис. 5.5). Доведіть, для якого максимального числа вона гаран- товано правильно реалізує факторизацію. Виконайте кілька разів програму (рис.  5.5) для різних натуральних чисел. Для яких чисел програма надасть правильний ре- зультат? Обґрунтуйте, від чого це залежить. Який необхідно мати мінімальний за довжи- ною масив простих чисел для факторизації числа 489? Обґрунтуйте свою відповідь. Внесіть у програму (рис. 5.6) такі зміни, щоб прості множники виводилися не в  рядок, а  в один стовпець. Чи вдалося за рахунок цього спростити програму? Розробіть таблицю виконання алгоритму факторизації числа 40 на основі методу повного перебору. Розробіть таблицю виконання програми, зображеної на рис.  5.6, на прикладі факто- ризації числа 30. 1 2 3 4 5 6
  • 70. 70 6. Алгоритми сортування і  пошуку даних Сортуванням називають процес упорядкування множини об’єктів за деякою ознакою, наприклад за збільшенням або зменшенням їх значень. Мета сортування — полегшити по- дальший пошук в упорядкованій множині. 6.1. Алгоритми сортування даних Не існує універсального алгоритму сортування. Проте, ма- ючи приблизні характеристики вхідних даних, можна дібра- ти метод, який працює оптимальним чином у даній ситуації (задачі). Нині є десятки різних методів сортування, які відрізня- ються кількісними характеристиками показників. Для того щоб обґрунтовано зробити свій вибір, існують параметри, за якими проводиться оцінка алгоритмів. Квадратичними називають алгоритми, у яких для повного сортування максимальна кількість операцій, які виконують- ся, дорівнює квадрату кількості його елементів. Тобто якщо масив містить n елементів, то для виконання алгоритму сорту- вання потрібно виконати до n2   операцій. Розглянемо алгоритми сортування масиву вибором та об- міном. ` ` 6.1.1. Алгоритм сортування вибором Припустимо, що в  довільному порядку розташовані гирі вагою 20, 5, 100, 500 і 200 грамів. Як розмістити їх у порядку збільшення ваги шляхом поступового вибору найважчої з  тих, що залишилися? Нехай дано масив: mas[0], mas[1], ... , mas[n], який необхідно упорядкувати в порядку зростання значень його елементів. Розглянемо сутність алгоритму сортування вибором. Крок 1 Знаходять елемент із максимальним значенням і міняють його місцем з останнім елементом масиву. Крок 2 Останній елемент із подальшого розгляду виключають, а для перших n – 1 елемен- тів процедуру повторюють. Тобто аналізується масив mas[0], mas[1], ..., mas[n – 1], у якому також відшукують максимальний елемент. Цей елемент міняють місцями з  елементом mas[n – 1]. Крок 3 Подібні дії виконують у  масиві mas[0], mas[1], ..., mas[n – 2], потім у  масиві mas[0], mas[1], ..., mas[n – 3] і  т. д. Процес упорядкування масиву чисел розглянемо на при- кладі 1. Класифікація квадратичних алгоритмів сортування: • • сортування підрахунком; • • сортування вставленням (включенням); • • сортування вибором; • • сортування обміном.
  • 71. 716.1. Алгоритми сортування ... Приклад 1. Упорядкуємо масив чисел: 8, 4, 9, 7, 2. Крок 1 8 4 9 7 2 Крок 2 8 4 2 7 9 Крок 3 7 4 2 8 9 Крок 4 2 4 7 8 9 Отже, на кожному кроці виконання алгоритму значення правої межі невпорядкованої частини масиву зменшується на одиницю (поточне максимальне значення елемента показано жирним шрифтом). У програмі поточне значення правої межі будемо зберігати у змінній p. Ознайомимося з алгоритмом упорядкування масиву мето- дом обміну, який можна подати так. Крок 1 Створення масиву mas. Крок 2 Визначення довжини масиву n. Крок 3 p = n – 1 #  Початкове значення правої межі Крок 4 Виконувати п. 5–11 доти, доки p 0, інакше  —  п. 12. Крок 5 m = 0 # Початковий номер максимального елемента (номер першого елемента масиву) Крок 6 i = 1 # Номер другого елемента масиву Крок 7 Якщо mas[i]   mas[m], то m = i, інакше  —  п. 8. Крок 8 i = i + 1 #  Перехід до чергового елемента Крок 9 Якщо i  = p, то п. 7, інакше  —  п. 10. Крок 10 Поміняти місцями максимальний елемент із поточним правим крайнім. Крок 11 p = p – 1 #  Зменшення значення правої межі Крок 12 Виведення упорядкованого масиву mas. Крок 13 Кінець.
  • 72. 72 Розділ 2 Програму реалізації алгоритму зображено на рис. 6.1. Рис. 6.1. Програма упорядкування масиву методом вибору У результаті виконання програми отримаємо: Перевага описаного методу сортування полягає в його про- стоті. Проте він є найповільнішим (не враховується те, що в заданому масиві деякі елементи можуть бути впорядкова- ні). Навіть якщо певний масив буде повністю впорядкованим, кількість операцій порівняння в алгоритмі не зменшиться. ` 6.1.2. Алгоритм сортування методом обміну У шеренгу стали 5 учнів. Порівняйте зріст перших двох. Якщо перший вищий за другого, поміняйте їх місцями, за потре- би  — другого і  третього і  т. д. Як розмістяться учні? Розглянемо сутність алгоритму сортування масиву в по- рядку зростання значень його елементів методом обміну. Крок 1 Масив mas[0], mas[1], ... , mas[n] переглядається зліва направо. Спочатку порівнюють- ся елементи mas[0] і  mas[1], потім  —  mas[1] і  mas[2], mas[2] і  mas[3], mas[3] і  mas[4] і  так далі аж до елементів mas[n–1] і  mas[n]. Щоразу, коли попередній елемент більший від наступного, елементи міняються місцями. Зрозуміло, що після повного завершення першого перегляду всього масиву на останній позиції перебуватиме елемент із максимальним значенням. Крок 2 Після цього елемент mas[n] із подальшого розгляду виключається, переглядається масив mas[0], mas[1], …, mas[n–1] і  над його елементами виконуються аналогічні дії. У  результаті на позицію n–1 буде переміщено другий за величиною елемент. Крок 3 Процедура повторюється для масиву mas[0], mas[1], …, mas[n–2], потім — для масиву mas[0], mas[1], …, mas[n–3] і  т. д. З описаного випливає, що ознакою упорядкованості масиву є те, що після завершення його перегляду жодної перестанов- ки елементів не було.
  • 73. 736.1. Алгоритми сортування ... У прикладі 2 наведено порядок переміщення максимально- го числа на крайню праву позицію у масиві [4, 2, 5, 7, 6, 1]. Жирним шрифтом виділено елементи, які порівнюються. Приклад 2. Перемістимо на крайню праву позицію максимальний елемент у масиві [4, 2, 5, 7, 6, 1]. Крок 1 4 2 5 7 6 1 Крок 2 2 4 5 7 6 1 Крок 3 2 4 5 7 6 1 Крок 4 2 4 5 7 6 1 Крок 5 2 4 5 6 7 1 Крок 6 2 4 5 6 1 7 Отже, після першого перегляду масиву елемент із макси- мальним значенням буде розташований на останній позиції. Розробимо алгоритм сортування методом обміну. В алгоритмі використано такі позначення: p — індекс пра- вої межі поточної ділянки масиву; y — ознака наявності пе- рестановки: на початку кожного зовнішнього циклу y набуває значення True. Якщо після завершення зовнішнього циклу вона має зна- чення True, це означає, що перестановок під час останнього перегляду не було; якщо y = False, то відбулася принаймні одна перестановка; i — індекс поточного елемента масиву; z — змінна, призначена для тимчасового зберігання значення елемента масиву під час перестановки елементів. Розглянемо алгоритм сортування масиву методом обміну, який може бути таким. Крок 1 Створення масиву mas. Крок 7 Якщо mas[i]   mas[i+1], то поміняти елементи місцями і  y =  False. Крок 2 Визначення довжини масиву n. Крок 8 i = i + 1. Крок 3 p = n–1 (початкове значення правої межі). Крок 9 Якщо i  p, то п. 7, інакше  —  п. 10. Крок 4 Виконувати п. 5–10 доти, доки p 0, інакше  —  п. 11. Крок 10 p = p – 1. Крок 5 y=True (ознака відсутності пе- реміщення елементів). Крок 11 Виведення упорядкованого масиву mas. Крок 6 i =1 . Крок 12 Кінець.
  • 74. 74 Розділ 2 Програму реалізації алгоритму зображено на рис. 6.2. Рис. 6.2. Програма упорядкування масиву методом обміну Результат виконання програми: Запитання для перевірки знань Як здійснюється обмін значеннями між дво- ма змінними? Які існують найпростіші методи сортування масиву? Поясніть сутність алгоритму сортування ма- сиву методом вибору. Поясніть сутність алгоритму сортування ма- сиву методом обміну. Наведіть приклад алгоритму сортування масиву методом вибору. Наведіть приклад алгоритму сортування масиву методом обміну. 1 2 3 4 5 6 Завдання для самостійного виконання Проаналізуйте порядок виконання алгорит- му сортування вибором на прикладі масиву 31, 20, 30, 35. Визначте кількість операцій порівняння в  алгоритмі сортування методом обміну в процесі впорядкування масиву 100, 20, 41, 30, 35. Дано масив чисел: 34, 12, 8, 5, 20, 17. Вико- найте його сортування за допомогою мето- ду обміну в  порядку зменшення чисел. Дано масив: ‘процесор’, ‘команда’, ‘флешка’, ‘брелок’, ‘клавіатура’. Виконайте сортування його елементів в  алфавітному порядку за допомогою методу вибору. Розробіть програму створення масиву з  10  випадкових чисел у  діапазоні від 1  до 8  та його сортування за допомогою методу обміну. Розробіть програму створення масиву з  12  випадкових чисел у  діапазоні від 4  до  11 і  його сортування за допомогою ме- тоду вибору. 1 2 3 4 5 6
  • 75. 75 ` 6.1.3. Сортування вставленням Як у  впорядкований одновимірний масив чисел можна вставити нове число, не порушуючи впорядкування масиву? Метод сортування вставленням використовується для впо- рядкованих масивів. Розглянемо сутність алгоритму сорту- вання вставленням на прикладі. Крок 1 Нехай дано впорядкований у порядку зростання значень елементів масив чисел: 3 5 6 8 9 12 Крок 2 У масив потрібно вставити новий елемент зі значенням 7. Відшукуємо позицію, у  яку слід уставити число 7, не порушуючи впорядкованості елементів масиву. Зрозуміло, що це позиція між числами 6  і 8. Зсуваємо усі елементи, починаючи з  елемента 8, на одну позицію праворуч: 3 5 6 8 9 12 Крок 3 Уставляємо у  вільну позицію число 7: 3 5 6 7 8 9 12 На рис. 6.3 наведено програму, яка реалізує вставлення нового елемента в початковий масив. Рис. 6.3. Програма сортування масиву методом вставлення Зверніть увагу, що в програмі використано початковий ма- сив [3, 5, 6, 8, 9, 12], хоча оголошено масив [3, 5, 6, 8, 9, 12, 99]. Довжина оголошеного масиву збільшена на одиницю, й ос- танній елемент містить число 99. Це обумовлено тим, що після вставлення масив за довжиною буде більшим на одиницю, чим забезпечується правильна індексація елементів масиву. Результат виконання програми:
  • 76. 76 Відомий фахівець у галузі інформатики Д. Кнут писав, що, навіть якби сортування було марним, знайшлася б маса причин зайнятися ним. Винахідливі методи сортування свідчать про те, що воно саме по собі цікаве як об’єкт дослідження. ` 6.1.4. Сортування злиттям Припустимо, що є  одновимірний масив цілих чисел завдовж- ки  20. Чи можна, на вашу думку, виконати його сортування, якщо спочатку виконати сортування перших 10 чисел, потім останніх 10 чисел? Як це можна зробити? Сортування злиттям належить до зовнішніх методів сортування. Він був створенний Джоном фон Нейманом у 1945 році та вважається одним із найпростіших алгоритмів серед швидких алгоритмів сортування. Розглянемо сутність алгоритму сортування масиву злит- тям. Крок 1 Заданий масив ділиться приблизно на дві рівні частини. Виконується сортування кожної частини окремо, наприклад у  порядку збільшення значень її елементів. Крок 2 Потім вибираються елементи першої і  другої частин масиву, розташовані на лі- вих крайніх позиціях. Менший із цих елементів записується у  першу позицію буфера. А  частина маси- ву, з  якої вибрано менший елемент, зсувається на одну позицію ліворуч. Крок 3 На наступному кроці теж порівнюються елементи обох частин, розташованих на лівій крайній позиції. Також вибирається менший із  них і  заноситься у  чергову позицію буфера. Цей процес продовжується доти, поки одна із частин масиву стане порожньою. Після цього в буфер без змін у порядку розташування переносяться всі значення елементів тієї частини, у  якій залишилися елементи. Розглянемо алгоритм сортування масиву злиттям на при- кладі. Приклад. Нехай дано масив цілих чисел: 12, 7, 15, 4, 11, 1, 9. 1. Ділимо масив на дві частини, наприклад, так: перша частина 12, 7, 15, 4; друга частина 11, 1, 9. 2. Упорядковуємо частини в порядку збільшення значень елементів: перша частина 4, 7, 12, 15; друга — 1, 9, 11. 3. Вибираємо і порівнюємо елементи, розташовані на край- ніх лівих позиціях (числа 4 і 1). Менше значення записуємо у ліву крайню позицію бу- фера. 4 7 12 15 1 9 11 1
  • 77. 776.1. Алгоритми сортування ... 4. Зсуваємо другу частину масиву на одну позицію ліворуч. Порівнюємо числа 4 і 9. Число 4 записуємо у чергову по- зицію буфера. 4 7 12 15 9 11 1 4 5. Зсуваємо першу частину на одну позицію ліворуч. Порів- нюємо числа 7 і 9. Число 7 записуємо у чергову позицію буфера. 7 12 15 9 11 1 4 7 6. Зсуваємо першу частину на одну позицію ліворуч. По- рівнюємо числа 12 і 9. Число 9 записуємо у буфер. 12 15 9 11 1 4 7 9 7. Зсуваємо другу частину на одну позицію ліворуч. Порів- нюємо числа 12 і 11. Число 11 записуємо у буфер. 12 15 11 1 4 7 9 11 8. Зсуваємо другу частину на одну позицію ліворуч. Оскільки друга частина стала порожньою, записуємо всі елементи, що залишилися у першій частині, у буфер без змін. 12 15 1 4 7 9 11 12 15 На цьому процес сортування завершено. Відзначимо, що алгоритм сортування злиттям для великих масивів є одним із найбільш швидкісних. Але він потребує додаткової пам’яті для збереження буферу, який за обсягом рівний обсягу початкового масиву. В основу сортування вибором покладено вибір відповідного елемента для певної позиції в  масиві. Сортування підрахунком  — це алгоритм, у якому використовується діапазон чисел сортованого масиву для підрахунку співпадаючих елементів. Метод є доцільним лише тоді, коли сортовані числа мають діапазон можливих значень, який досить малий у  порівнянні з множиною, яка сортується. Сортування обміном базується на повторенні етапів порівняння сусідніх ключів при русі вздовж масиву. Якщо наступний елемент виявиться меншим від попереднього, то відбувається обмін (звідси і  назва методу). В основі сортування вставленням лежить пошук для чергового елемента масиву відповідного місця у відсортованій частині із наступним включенням його в  знайдену позицію.
  • 78. 78 Розділ 2 Програму сортування масиву злиттям зображено на рис. 6.4. Рис. 6.4. Програма сортування масиву злиттям Результат виконання програми: 2 4 7 9 11 17 20 44 44 50 ` 6.1.5. Сортування підрахунком Нехай є  масив цілих чисел завдовжки 18, елементи якого мають значення 0, 1, 2. Які особливості слід врахувати в  процесі впорядкування такого масиву? Метод сортування підрахунком застосовується тільки для масивів цілих чисел. Із точки зору швидкодії й необхідності використання додаткової пам’яті цей метод є ефективним для масивів, у яких зберігаються числа невеликого діапазону, особливо для чисел у діапазоні від 0 до 9. Розглянемо сутність алгоритму сортування підрахунком на прикладі.
  • 79. 796.1. Алгоритми сортування ... Приклад Дано початковий масив чисел, який по- трібно відсортувати в порядку зростання значень його елементів: 2 0 0 1 5 3 1 2 0 3 0 1 2 1 0 1. Створимо додатковий порожній масив, довжина якого на одиницю більша від максимального значення елемента в по- чатковому масиві (у наведеному масиві максимальним є число 5): 0 0 0 0 0 0 2. Значення елементів початкового масиву аналізуються зліва направо. Після аналі- зу кожного елемента відповідний елемент додаткового масиву збільшується на оди- ницю. Значення числа елемента почат- кового масиву визначає номер елемента додаткового масиву, який повинен збіль- шуватися на одиницю. Наприклад, якщо значення елемента початкового масиву дорівнює 3, то третій елемент додаткового масиву повинен збільшитися на одиницю (нумерація елементів масиву починається з нуля). Після завершення аналізу всіх елементів початкового масиву додатковий масив набуде такого змісту: 5 4 3 2 0 1 3. Початковий масив заповнюється новими значеннями, починаючи з нульової пози- ції. Оскільки перший елемент додатко- вого масиву має значення 5, то підряд записуються п’ять нулів, далі чотири одиниці і т. д. Якщо значення елемента додаткового масиву дорівнює 0, то відпо- відне число в масив не записується. Один із найпростіших варіантів реалізації алгоритму сор- тування підрахунком зображено на рис. 6.5. Програма вико- нує сортування масиву цілих невід’ємних чисел (від 0 до 9) з максимальним значенням елемента не більше 9. Для сорту- вання чисел із більшим діапазоном необхідно збільшити на потрібну величину розмір додаткового масиву, тобто внести зміни до третьої зверху інструкції: mas1 =  [0, 0, …, 0]. Рис. 6.5. Програма сортування масиву підрахунком У результаті виконання програми отримаємо: 0 0   0 0   0 1   1 1   1 2   2 2   3 3   5
  • 80. 80 Розділ 2 Зверніть увагу на те, що в  початковому масиві відсутнє число 4. Але в  додатковому масиві для нього відведено позицію, значення елемента якої дорівнює нулю. У  програмі така ситуація врахована. Позиції додаткового масиву з  нульовим значенням ігноруються, тому і  число  4  у  відсортований масив не виводиться. Методи сортування найчастіше аналізуються за такими характеристиками: • кількість порівнянь в ітерації; • загальна кількість порівнянь; • кількість ітерацій (переглядів). Конкретні значення цих характеристик дозволяють вибра- ти оптимальний метод сортування для певного завдання. Значна кількість дослідників надають перевагу сортуван- ню методом обміну, оскільки він вимагає найменшої кілько- сті обмінів. Запитання для перевірки знань Для яких масивів можна виконувати сорту- вання вставками? Для яких масивів доцільно використовува- ти сортування підрахунком? Як можна поділити масив на дві приблизно рівні частини? Наведіть приклад сортування масиву злит- тям. Поясніть сутність алгоритму сортування ма- сиву вставленням. Поясніть сутність алгоритму сортування ма- сиву злиттям. Поясніть сутність алгоритму сортування ма- сиву підрахунком. За якими характеристиками зазвичай аналі- зуються методи сортування? 1 2 3 4 5 6 7 8 Завдання для самостійного виконання Проаналізуйте порядок виконання програ- ми сортування масиву методом вставлення (рис.  6.3) на прикладі вставлення числа 13 у  масив [7, 10, 15, 21, 29, 39]. Проаналізуйте порядок виконання про- грами сортування масиву методом злиття (рис.  6.4) на прикладі масиву [11, 75, 82, 40, 5, 15]. Проаналізуйте порядок виконання програ- ми сортування масиву методом підрахунку (рис.  6.5) на прикладі масиву [3, 0, 0, 1, 0, 1, 3, 3, 3]. Обґрунтуйте, який алгоритм сортування масиву [6, 2, 5, 8, 20, 27, 30, 41] у  порядку збільшення значень його елементів доціль- но вибрати, щоб забезпечити мінімальний час його виконання. На основі аналізу програми (рис.  6.5) по- дайте у  словесно-формульній формі алго- ритм сортування масиву підрахунком. На основі здійснення аналізу програми (рис.  6.4) подайте у  словесно-формульній формі алгоритм сортування масиву злит- тям. 1 2 3 4 5 6 Один із засновників кібернетики Н. Вірт, автор відомої книги «Алгоритми і структури даних», писав: «Складається враження, що можна побудувати цілий курс програмування, вибираючи приклади тільки із завдань сортування».
  • 81. 81 6.2. Алгоритми пошуку даних Завдання пошуку даних можна сформулювати так: знай- ти у множині даних один або декілька елементів, які відпо- відають заданим властивостям. Пошук даних виконується в різних структурах даних, наприклад у словниках, списках, базах даних, масивах та інших. Вибір того чи іншого алгоритму пошуку безпосередньо залежить від структури даних, для якої він реалізований. Далі описано алгоритми і приклади програм пошуку даних у масивах. Пошук потрібної інформації може здійснюватись в упоряд- кованому наборі та в неупорядкованому. Існують алгоритми пошуку даних, які класифікують на основі механізму пошу- ку. ` 6.2.1. Послідовний пошук Припустимо, що в  коробці лежать кулі з  номерами від 1  до 21. Який алгоритм пошуку кулі з  номером 13 можна запропонувати? Послідовний пошук базується на прямому переборі еле- ментів у невпорядкованому масиві, наприклад зліва направо, і порівнянні кожного з них із заданим значенням. Нехай дано масив a[0], a[1], ..., a[n] і потрібно визначити, чи є у цьому масиві елемент, значення якого збігається зі зна- ченням с. Зрозуміло, що в масиві може бути декілька зна- чень, які збігаються зі значенням с. Але будемо вважати, що потрібно визначити лише сам факт наявності елемента с в масиві, тобто пошук припиняється одразу після знаходжен- ня першого такого елемента. Сутність алгоритму послідовного пошуку така. Крок 1 Спочатку значення с  порівнюється зі значенням a[0]. Якщо вони збігаються, робиться висновок, що елемент знайдено на нульовій позиції масиву і  на цьому пошук завер- шується. Крок 2 Інакше — значення с порівнюється зі значенням a[1] і робиться аналогічний висновок. Крок 3 Далі аналогічний процес може повторюватися над елементом a[2] і  так далі до a[n]. Розглянемо сутність алгоритму послідовного пошуку на прикладах 1, 2. Приклад 1. У міжнародному марафоні бе- руть участь представники 8 країн. Кількість учасників не обмежена. Учасники від кожної країни мають власний номер і номер країни. Потрібно розробити алгоритм та програму визначення, чи є серед 12 учасників, які фі- нішували першими, представник команди за номером 5. Класифікація алгоритмів пошуку даних: • послідовний (лінійний) пошук; • бінарний (двійковий) пошук; • пошук із поверненням; • тернарний пошук.
  • 82. 82 Розділ 2 Цю задачу можна формалізувати таким чином. Результати масових змагань учасників можна вважати випадковими. Тому сформує- мо одновимірний масив цілими випадковими числами в діапазоні від 1 до 8 завдовжки 12 і визначимо першу позицію елемента, на якій розташоване число 5. Розглянемо один із варіантів алгоритму, його подано в словесно-формульній формі. Крок 1 Сформувати масив mas із 12 випадковими числами у  діапазоні від 1  до 8. Крок 6 Перехід на п. 9. Крок 2 p =  Учасника цієї країни не- має Крок 7 i = i + 1. Крок 3 i = 0. Крок 8 Якщо i  = 12, то п. 4, інакше  —  п. 9. Крок 4 Якщо mas[i] =  5, то п. 5, інак- ше  —  п. 7. Крок 9 Виведення p. Крок 5 p =  Учасник цієї країни фінішував, i+1. Крок 10 Кінець. Програму реалізації алгоритму зображено на рис. 6.6. Рис. 6.6. Послідовний пошук елемента в одновимірному масиві Один із можливих результатів виконання програми може бути таким: Інколи необхідно визначити не тільки наявність заданого елемента в масиві, а й знайти усі ці елементи, наприклад для обчислення їх суми, кількості таких елементів тощо. У тако- му разі аналізуються всі елементи масиву.
  • 83. 836.2. Алгоритми пошуку... Приклад 2. Розробимо програму для завдання, що сформульовано у прикладі 1, але визначимо кількість учасників країни, зареєстрованої під номером 5, які фінішували в числі перших 12. Алгоритм розв’язування цього завдання несуттєво відрізняється від попереднього, а програму його реалізації зображено на рис. 6.7. Рис. 6.7. Обчислення кількості елементів в одновимірному масиві Один із можливих результатів виконання програми може бути таким: ` 6.2.2. Бінарний пошук Які, на вашу думку, особливості пошуку елементів в  упо- рядкованому масиві слід враховувати з  метою прискорення процесу пошуку? Бінарний пошук можна застосовувати лише до впорядко- ваних масивів. Нехай дано масив mas[1], ..., mas[n], елементи якого впоряд- ковані за зростанням їхніх значень, і ключове значення c, яке потрібно знайти в масиві. Пошук будемо здійснювати методом половинного ділення. Сутність алгоритму бінарного пошуку така. Крок 1 Позначимо поточне значення лівої межі масиву змінною l, а  значення правої межі  —  змінною p  (початкові значення змінних: i = 1 і p = n). Крок 2 Спочатку в  масиві обирають елемент, розташований усередині масиву,  —  mas[i]. Зна- чення індексу середнього елемента можна визначити за формулою i  = [(l+p)/2] (ква- дратними дужками позначено цілу частину числа). Крок 3 Значення середнього елемента порівнюють із ключовим значенням c. Якщо c = mas[i], елемент знайдено. Якщо c  mas[i], то далі для пошуку вибирають частину масиву, розташовану ліворуч від mas[i], у  протилежному випадку  —  частину масиву, розташо- вану праворуч від mas[i]. Для вибраної частини процес повторюють.
  • 84. 84 Розділ 2 Розглянемо алгоритм бінарного пошуку на прикладі 3. Приклад 3. Нехай дано масив комп’ютер- них термінів: алгоритмізація, біт, змінна, масив, миша, файл. Розробимо програму визначення, чи є в цьому масиві термін, який після запуску програми вводиться з клавіатури. Далі наведено алгоритм розв’язування. Крок 1 Сформувати масив mas комп’ютерних термінів. Крок 7 Виконувати пункти 8–10 доти, доки l  = p  and not per, інак- ше  —  п. 11. Крок 2 Визначити довжину n  масиву. Крок 8 i = [l+p]/2 # Номер середнього елемента Крок 3 Увести у  змінну с  — термін для пошуку. Крок 9 Якщо mas[i] =  c, то per =  True (ознака наявності термінa), інакше  —  п. 10. Крок 4 per =  False #  Ознака відсутності терміна Крок 10 Якщо cmas[i], то l = i+1 (зміна лівої межі), інакше  —  p =  i–1. Крок 5 l =  0 #  Початкове значення лівої межі. Крок 11 Якщо per =  True, то виведен- ня  —  «Термін на позиції», i; інакше  —  виведення «Термін відсутній».Крок 6 p =  n–1 #  Початкове значення правої межі Програму реалізації алгоритму зображено на рис. 6.8. Рис. 6.8. Програма бінарного пошуку елемента в одновимірному масиві Далі наведено один із варіантів виконання програми: Проблема оперативного пошуку даних набула особливої актуальності з появою Всесвітньої павутини.
  • 85. 85 ` 6.2.3.Пошук максимального і мінімального елементів у масиві Поміркуйте, як можна в  одновимірному неупорядкованому масиві цілих чисел знайти максимальний або мінімальний елемент. Пошук мінімального або максимального значення у масиві можна реалізувати різними способами. Сутність одного з алгоритмів пошуку елемента з мінімаль- ним значенням (пошук елемента з максимальним значенням принципово не відрізняється від алгоритму пошуку елемента з мінімальним значенням) така. Крок 1 Спочатку мінімальним вважається елемент, розташований на першій позиції. Його значення порівнюється зі значенням другого елемента. Якщо значення другого еле- мента менше за значення першого, то далі меншим вважається другий елемент. Крок 2 Потім значення меншого елемента порівнюється зi значенням третього елемента і  так далі до останнього елемента. У  результаті буде знайдено найменший елемент. Розглянемо реалізацію алгоритму пошуку мінімального числа в масиві на прикладі 4. Приклад 4. Виконаємо алгоритм пошуку мі- німального числа в масиві: 42, 12, 55, 5, 37. 1-й цикл: min := 42; 1242? Так  —  min := 12. 2-й цикл: 5512? Ні. 3-й цикл: 512? Так  —  min := 5. 4-й цикл: 537? Так  —  результат: min =  5. Програму реалізації алгоритму пошу- ку максимального і мінімального елементів у масиві зображено на рис. 6.9. Рис. 6.9. Програма пошуку максимального і мінімального елементів у масиві Результат виконання програми:
  • 86. 86 ` 6.2.4. Поняття про пошук із поверненням і тернарний пошук Чи доводилося вам виконувати пошук варіантів виходу з  лабіринту від його входу? Як у  таких випадках ви діяли? Пошук із поверненням (від англ. backtracking) — це за- гальний метод (або стратегія пошуку) розв’язування задачі, коли доводиться неодноразово повертатися до стану об’єкта (об’єктів), зафіксованого на попередньому кроці. Класичним прикладом пошуку із поверненням є пошук у лабіринті всіх шляхів від входу до виходу з нього. Перелік усіх шляхів у лабіринті називають множиною всіх можливих рішень. Прикладом пошуку з поверненням є також гра в шахи, коли для пошуку оптимального чергового ходу доводиться неодноразово повертатися до поточного стану білих і чорних фігур. Пошук із поверненням може використовуватися для різ- них структур даних для розв’язування задач, у яких потріб- но перерахувати всі можливі варіанти, наприклад, доставки вантажу з одної країни в іншу, або знайти способи отриман- ня кредиту для будівництва готелю, або дати відповідь, чи існує такий спосіб вкладу, який задовольняє власні потреби клієнта тощо. Алгоритм розв’язування задач методом пошуку з  повер- ненням зводиться до послідовного розширення частко- вого рішення. Якщо на черговому кроці таке розширен- ня виконати не вдається, то здійснюється повернення на попередній крок і  продовжується пошук. Алгоритм розв’язування задач методом пошуку з повернен- ням дозволяє знайти всі розв’язки для поставленого завдання, якщо вони існують. Для прискорення методу намагаються так організувати обчислення, щоб якомога швидше можна було виявити варі- анти, які не задовольняють умову (приклад 5). Приклад 5. У багатьох джерелах як класичний при- клад алгоритму пошуку з поверненням опи- сується задача про 8 ферзів, яку можна сфор- мулювати так. Необхідно на шаховій дошці розмістити 8 ферзів так, щоб жодний із них не був під боєм іншого. 1. Спочатку ставиться на дошку один ферзь. 2. Далі ставляться інші так, щоб його не били вже поставлені ферзі. 3. Якщо на черговому кроці так поставити фігуру не можна, повертаються на крок назад і намагаються поставити раніше встановленого ферзя на інше місце. За допомогою методу з поверненням можна отримати всі перестановки і комбінації даної множини. Метод пошуку з поверненням можна зрозуміти на прикладі класичної задачі: на шахівниці n*n стоїть у клітинці (x, y) шаховий кінь. Слід знайти такий маршрут коня (який ходить згідно шахових правил), коли він обходить усю шахівницю, побувавши у кожній клітинці рівно один раз.
  • 87. 876.2. Алгоритми пошуку... Тернарний пошук в інформатиці застосовується для по- шуку максимумів або мінімумів функції, яка на деякому відрізку спочатку постійно зростає, потім постійно спадає або спочатку спадає потім зростає. Алгоритм тернарного пошуку можна реалізувати для пошуку заданого елемента в  упорядкованому масиві, поділивши його на три приблизно рівні частини. Елемент із заданим значенням можна порівняти з остан- нім елементом першої частини. Якщо значення збігаються, то пошук завершується, якщо менше, то пошук продовжується в першій частині, інак- ше — він порівнюється з останнім елементом другої частини. Далі виконуються дії, аналогічні описаним. Запитання для перевірки знань Які існують найпростіші методи пошуку да- них у  масиві? Поясніть сутність алгоритму пошуку макси- мального числа в  масиві. Поясніть сутність послідовного методу по- шуку даних у  масиві. Сформулюйте алгоритм обчислення кілько- сті заданих чисел у  масиві. Поясніть сутність алгоритму бінарного по- шуку даних у  масиві. Наведіть приклад послідовного пошуку да- них у  масиві. Наведіть приклад бінарного пошуку даних у  масиві. Наведіть приклад тернарного пошуку да- них у  масиві. 1 2 3 4 5 6 7 8 Завдання для самостійного виконання Дано масив рядків: ‘байт’, ‘принтер’, ‘проце- сор’, ‘монітор’. Розробіть програму визна- чення позиції слова, що уводиться з  клаві- атури. Дано масив цілих чисел: 13, 7, 6, 7, 9, 7, 6,  5. Розробіть програму обчислення кількості числа, значення якого вводиться з  клавіа- тури. Дано масив цілих чисел: 6, 8, 13, 17, 19, 30, 13, 8. Розробіть програму визначення всіх позицій, на яких знаходиться число, зна- чення якого вводиться з  клавіатури. Дано масив рядків: ‘блок’, ‘файл’, ‘біт’, ‘ко- лонка’, ‘миша’. Розробіть програму пошуку максимального і  мінімального значень еле- ментів. Розробіть програму створення масиву, що містить 10 випадкових чисел у діапазоні від 3  до 9  і визначення, чи є  у ньому число 6. Знайдіть в  Інтернеті відомості про 5  найви- щих вершин в  Україні. Розробіть програму визначення наявності у  цьому переліку назви вершини, яка вводиться з клавіатури. 1 2 3 4 5 6
  • 88. 88 7. Обробка рядків Рядок є одним з основних типів убудованих у мову Python об’єктів, які мають загальну назву послідовність. Рядки мо- жуть застосовуватися для подання символів, слів, фрагментів тексту. Вони можуть також використовуватися для збережен- ня двійкових значень байтів. 7.1. Основні відомості про рядки й операції над ними З  рядковим типом даних ви зустрічалися багаторазово. Які операції доводилося вам виконувати над рядками? Рядок у мові Python є незмінним типом даних. Це означає, що змінювати символи в рядку не можна. Наприклад, спроба замінити в рядку принтер букву «и» на букву «о» призведе до появи повідомлення про синтаксичну помилку. Для змінення вмісту рядка застосовуються спеціальні за- соби. Основним типом рядків є str, який застосовується для роботи з текстовими даними у коді ASCII. Саме цей тип роз- глядатимемо далі. Мова Python містить значну кількість спе- ціальних символів. Найчастіше застосовуються символи n (переведення рядка) і r (повернення каретки). Щоб символ виводився в тому самому вигляді, його слід екранувати: поставити перед ним слеш () (приклад 1). Приклад 1 print (файлnмиша) # Буде виведено два рядки файл миша print (файлnмиша) # Буде виведено один рядок файлnмиша Для роботи з рядками у мові Python є потужний набір засо- бів: операції, функції, методи й модулі, які в повному обсязі не завжди використовують і професійні програмісти. Розгля- немо ті з них, що є основними та застосовуються найчастіше. Для об’єднання двох рядків в один слід між ним розмісти- ти слеш, або взяти їх у лапки, або використати конкатенацію всередині дужок (приклад 2). Приклад 2 файл # Об’єднання рядків за допомогою слеш миша ‘файлмиша’ (файл» # Об’єднання рядків за допомогою круглих дужок миша) ‘файлмиша’ (файл+ # Об’єднання рядків за допомогою операції конкатенації миша) ‘файл миша’ Основні операції над рядками: • звернення до символу рядка; • виділення фрагмента рядка; • об’єднання двох рядків. Екранування символів — заміна в тексті керуючих символів на відповідні текстові підстановки. Ми уникаємо спеціальних символів, коли не хочемо, щоб вони мали своє особливе значення. Екранування відповідає на питання «Якщо ці символи такі особливі, то як мені їх використовувати у  своєму тексті?» У мові Python немає різниці між рядком в  апострофах і  рядком у  лапках. Якщо сам рядок містить лапки, то його краще взяти в  апострофи, а  якщо містить апострофи — то в  лапки.
  • 89. 897.1. Основні відомості про ... Якщо після слеша немає символа, який разом з ним ін- терпретується як спеціальний, то слеш зберігається в рядку: print (Наведемо перелік спеціальних символів) Наведемо перелік спеціальних символів Розглянемо основні операції над рядками. • Звернення до символу рядка потребує зазначення імені рядка та у квадратних дужках його індекса (нумерація починається з нуля): slp =  вінчестер print(slp[2], slp[8]) #Виведення 2-го і  8-го символів (‘н’, ‘р’) • Виділення фрагмента рядка виконується за допомогою операції: ім’я рядка [початок: кінець: крок] Як бачимо, усі параметри тут є необов’язковими. За за- мовчуванням вони мають такі значення: початок — 0, кі- нець — номер індекса останнього символу, крок, що дорівнює одиниці: a_1 =  процесор a_1 [:] # Виділяється увесь рядок процесор a_1 [3:6] # Виділяється фрагмент цес цес • Об’єднання двох рядків реалізується за допомогою опе- ратора конкатенації (+): print (клавіа+тура) клавіатура a =  Системний print (a+ блок) Системний блок Запитання для перевірки знань Який основний тип мають рядки? Як можна звернутися до символу рядка? Наведіть приклад об’єднання двох рядків в  один. Яке призначення мають символи n? Для чого в  рядках використовують слеш ()? Як у  рядку можна виділити фрагмент? 1 2 3 4 5 6 Завдання для самостійного виконання Об’єднайте рядки Створення анімації мето- дом і  трансформації руху в  один рядок. Визначте символ, розташований на 13-й по- зиції рядка Операція конкатенації. У рядку Змінити символ за індексом не- можливо виділіть фрагмент із 9-ї до 26-ї позиції. Об’єднайте рядки Як у  рядку можна і  виділити його фрагмент в  один рядок, а  потім перетворіть його у  рядок у рядку можна виділити його фрагмент. Перетворіть рядок Усі параметри тут є  необов’язковими у  рядок Параметри є  обов’язковими. 1 Визначте символ, розташований на 13-й по-2 3 4 5 Екрановані послідовності, так звані escape-послідовності, можуть складатися з одного або декількох символів після зворотної скісної риски. Якщо в  рядку не існує символа з  указаним індексом, буде видано повідомлення про помилку. Як  відомо, рядки є  незмінними типами даних, тому змінити символ за індексом неможливо.
  • 90. 90 7.2. Функції і  методи опрацювання рядків Яка, на вашу думку, потреба у  використанні функцій і  методів опрацювання рядків? Чому не можна обійтися тільки операціями над рядками? Ви вже ознайомилися з операціями для роботи з рядками. Для опрацювання рядків у мові Python існує значна кіль- кість функцій, основні з яких наведено в табл. 7.1. Таблиця 7.1. Основні функції опрацювання рядків Функція Призначення len() Визначення кількості символів у  рядку: len(монітор) 7 str() Перетворення послідовності у  рядок. Якщо необхідно з’єднати рядок з  іншим типом даних (числом, списком та іншими), то його слід перетворити в рядок за допомогою функції str(). Найпростіша структура функції така: str(об’єкт): str(), str([5, 6, 7]), str((8, 9)), str({a :  2}) #  Перетворення послідовностей (, ‘[5, 6, 7]’, ‘(8, 9)’, {‘a’ :  2}) Рядки також можна повторювати, виконувати перевірку на входження і  невходження од- ного рядка в  інший. Рядки можна форматувати багатьма способами за допомогою значної кількості операцій форматування і  методу format () chr(код символу) Повертає символ зазначеного коду: print (chr (1065)) Щ ord(символ) Повертає символ: print (ord (Щ)) 1065 До основних методів роботи з рядками можна віднести ме- тоди, які наведено в табл. 7.2. Таблиця 7.2. Основні методи роботи з рядками Метод Опис join () Перетворює рядкові елементи послідовності в  один рядок. Він має таку структуру: відокремлювач.join (послідовність): .join ((Рядкові, елементи, послідовності)) ‘Рядкові елементи послідовності’ upper () Замінює у  рядку всі малі букви великими: print (комп’ютер.upper ()) КОМП’ЮТЕР lower () Замінює у  рядку великі букви малими: print (КОМП’ЮТЕР.lower ()) комп’ютер capitalize () Замінює першу букву рядка великою: print (комп’ютер.capitalize ()) Комп’ютер
  • 91. 917.2. Функції і методи... Для пошуку і заміни в рядку застосовують понад десять методів, основні з яких наведено в табл. 7.3. Таблиця 7.3. Основні методи пошуку і заміни в рядку Метод Опис find () Здійснює пошук підрядка в  рядку. Якщо підрядок знайдено, повертається номер позиції, після якої починається підрядок. Інакше  —  повертається значення –1. Формат методу: рядок.find (підрядок, [початок [, кінець]]) Якщо параметри початок і  кінець не вказані, здійснюється пошук від самого початку рядка до його кінця: sl =  пошук підрядка в  рядку sl.find (шук), sl.find (підряд), sl.find (кут) (2, 6, –1) index () Відрізняється від методу find () лише тим, що у  випадку, коли підрядок у  рядку відсутній, генерується виняток ValueError rfind () Відрізняється від методу find () лише тим, що повертається номер позиції рядка, на якій закінчується підрядок count () Визначає кількість входжень підрядка в  рядок: sl =  пошук підрядка в  рядку sl.count (ряд), sl.count (шук), sl.count (мас) (2, 1, 0) replace () Виконує заміну всіх входжень заданого підрядка в  рядку на новий підрядок і  повертає но- вий рядок. Формат методу: рядок.replace (підрядок заміни, новий підрядок) print (старий комп’ютер.replace (старий, новий)) новий комп’ютер Мова Python реалізує також складний пошук і заміну. Для цього існує низка методів, які містяться у модулі re (тут не розглядається). Запитання для перевірки знань Для чого призначена функція len()? Яке призначення має функція chr()? Для чого призначений метод find ()? Поясніть сутність методу replace (). Для чого призначений метод count ()? Поясніть сутність методу upper (). Для чого призначений метод join ()? Порівняйте методи find () і rfind (). 1 2 3 4 5 6 7 8 Завдання для самостійного виконання Дано рядки: Операційна і  система. Ви- значте довжину кожного рядка, об’єднайте їх в  один рядок і  визначте його загальну довжину. Дано чотири рядки: Великі річки України:, Дніпро, Дністер, Десна. Визначте дов- жину кожного рядка, об’єднайте їх в  один і  визначте довжину нового рядка. Дано рядок Рим  —  столиця Італії, Київ  — столиця України. Визначте код букви м і кількість входжень підрядка столиця в ря- док. Дано рядок microsoft Word. Замініть пер- шу букву великою буквою М, визначте кіль- кість букв о  в рядку і  код букви на п’ятій позиції. Дано рядок Інструкція для користувача. Замініть слово користувача словом учня і  визначте позицію, з  якої починається під- рядок для. 1 2 3 4 5
  • 92. 92 7.3. Приклади програм обробки рядків Наведіть приклади опрацювання рядків, з  якими вам доводилося зустрічатися в  процесі вивчення інших предметів, наприклад географії, фізики. Приклад 1. Дано два рядки: Рядок є  незмін- ним і типом даних. На рис. 7.1 зображено програму об’єднання цих рядків, визначення довжини створеного рядка, виділення підряд- ка і заміни одного підрядка іншим. Рис. 7.1. Програма об’єднання рядків Останню інструкцію print (c) спеціально додано до програми для того, щоб звернути увагу на те, що метод replace не змінює сам рядок, а лише повертає внесені зміни. Ре- зультат виконання програми є таким: Приклад 2. Дано рядки: (кількість, вхо- джень) і (підрядка, в рядок). Розробити програму об’єднання їх в один рядок і пере- творення рядкових елементів в один рядок, визначення кількості входжень у рядок слова підрядка і коду букви к. Програму реалізації цього завдання зобра- жено на рис. 7.2. Рис. 7.2. Програма перетворення рядкових елементів в один рядок
  • 93. 937.3. Приклади програм... Оскільки початкові рядки складаються з рядкових елементів, то підрядком у методі count може бути повністю один із них. У цьо- му випадку не можна розглядати як підрядок частину рядкового елемента, інакше буде ви- дано повідомлення про синтаксичну помилку. Результат виконання програми: Приклад 3. Дано рядок: рядок є  незмінним типом даних. Замінити першу букву рядка на велику, визначити код букви на 8-й позиції, кількість букв м у рядку, позицію, з якої починається слово «типом», і кількість букв у слові «незмінним». Програму реалізації завдання зображено на рис. 7.3. Рис. 7.3. Програма опрацювання одного рядка Результат виконання програми: Завдання для самостійного виконання Складіть програму, за допомогою якої ря- док Львів  —  гарне місто для екскурсій перетворіть на рядок Львів  —  гарне місто для екскурсій та подорожей. Складіть програму, за допомогою якої рядки Річка Сіверський Донець і  впадає у  річку Дон об’єднуються в  один рядок і  визначається його довжина. Складіть програму, за допомогою якої ряд- ки Найвища вершина, України Говерла і  належить до, Карпатських гір об’єд- нуються в  один рядок і  рядкові елементи перетворюються в  один рядок. Складіть програму об’єднання рядків Фай- лова система та  операційної системи Windows. Визначте довжину нового рядка і  кількість входжень слова система в  цей рядок. Складіть програму, за допомогою якої у рядку програма медіапрогравач Windows поєднує багато функцій перша буква за- мінюється великою буквою, визначаєть- ся код букви на 10-й позиції і  кількість букв  «о»  в  рядку. Складіть програму, за допомогою якої у  рядку Київський ботанічний сад визна- чається довжина слова ботанічний, пози- ція, з якої починається слово сад, кількість букв н  у слові ботанічний і  код букви на 5-й позиції. 1 Складіть програму, за допомогою якої2 3 4 5 6
  • 94. 94 8. Графи 8.1. Основні поняття і терміни теорії графів Чи доводилося вам розв’язувати задачі, в яких розглядається деяка сукупність об’єктів, між якими заданий певний зв’язок? З графами нам неодноразово доводилося зустрічатися в по- всякденному житті. Існує багато задач, які можна розв’язати за допомогою графів. Це задачі пошуку найкоротшого шляху від одного населеного пункту до іншого, якщо відома карта доріг, задача маршрутизації трафіку, якщо відомий час про- ходження інформації від одного сервера до іншого, та багато інших. Розглянемо приклад. Приклад. В 11 класі проводиться шаховий турнір, у якому беруть участь Катерина, Марія, Володимир, Олександр і Петро. На даний мо- мент грали: Катерина з Володимиром і Марією, Володимир з Катериною, Марією і Петром, Марія з Володимиром, Катериною і Петром, Катерина з Олександром, Олександр з Марією і Петром, Петро з Володимиром і Олександром. Стан гри учасників відображений на схемі (рис. 8.1). На схемі кожний учасник позначений пер- шою буквою свого імені, а суцільними лініями показано ігри, що вже відбулися між учасни- ками турніру, пунктирними — ігри, які ще не відбулися. З рис. 8.1 видно, що відбулося 6 ігор і 3 мають відбутися. К П О М В Рис. 8.1. Схематичне зображення стану гри в шахи Сукупність елементів, а також весь набір зв’язків між еле- ментами називають графом. У цьому випадку об’єкти назива- ють вершинами графу, а зв’язкі між ним — ребрами графу. Графи зазвичай зображуються у вигляді геометричних фігур так, що вершини графу зображуються точками, а ре- бра — лініями, що з’єднують ці точки. Напрям позначається стрілкою. Наприклад, вулиці міста з одностороннім рухом можна позначати дугою. Якщо напрям не вказано, то такі лінії називають ребрами, а граф — неорієнтованим. На рис. 8.2 наведено приклад найпростішого графу з ре- брами і дугами. Тут A, B, C — вершини графу, AB — дуга, AC і BC — ребра. Вершина C з’єднана ребром сама із собою. Такі ребра називають петлею. Дві вершини, з’єднані ребром або дугою, називають суміж- ними. Суміжними на рис. 8.2 є вершини A і B, A і C, B і C. Наприклад, графом можна назвати схеми метрополітену, автошляхів між містами регіону, схему комп’ютерної мережі. Вершина може мати ідентифікатор — цифру або велику букву.
  • 95. 958.1. Основні поняття і ... Граф, у якому будь-які дві вершини з’єднані ребрами, на- зивають повним. Приклад повного графу наведено на рис. 8.3. Степенем вершини називають число ребер, яким нале- жить ця вершина. Наприклад, на рис. 8.3 кожне ребро має степінь 3. Шляхом у графі називають послідовність його ребер, які зустрічаються при переміщенні з однієї вершини в іншу. Пер- шу вершину називають стартовою (початком шляху), а ос- танню — кінцем шляху. Наприклад, на рис. 8.4 із вершини 1 у вершину 4 є такі шляхи: 1–4, 1–5–4 і 1–2–3–4. Довжиною шляху називають кількість ребер, що входять у цей шлях. У розглянутому прикладі довжина другого шля- ху дорівнює 2, а третього — 3. Жодне ребро на шляху не повинно зустрічатися більше одного разу. Неорієнтований граф називається зв’язаним, якщо з будь- якої його вершини можна потрапити в будь-яку іншу вершину. Тобто між будь-якою парою вершин цього графу існує як мінімум один шлях. Повний граф завжди є зв’язаним. Але не кожний зв’язаний граф є повним. Наприклад, граф, зображений на рис. 8.4, є зв’язаним, але не є повним. дуга ребро петля C A B Рис. 8.2. Найпростіший граф із ребрами та дугами 1 2 3 4 Рис. 8.3. Приклад повного графу Вершина графу, яка належить лише одному ребру, назива- ється висячою. На рис. 8.5 висячою є вершина 1. Вершина 0 не з’єднана із жодною іншою. Такі вершини називають ­ ізольованими. 1 4 3 5 2 Рис. 8.4. Приклад зв’язаного, але не повного графу 1 3 3 5 0 2 2 висяча ізольована Рис. 8.5. Граф із висячою й ізольованою вершинами та петлею Родоначальником теорії графів вважається Леонард Ейлер. У  1736 році Ейлер запропонував схему семи Кенігсберзьких мостів, яка пізніше стала однією з  класичних задач теорії графів.
  • 96. 96 Розділ 2 Циклом називають шлях з однієї вершини графу в ту саму вершину. Циклів у графі для кожної вершини може бути де- кілька. Розглянемо приклади циклів для графу, зображеного на рис. 8.6. Для вершини 2 у цьому графі є такі цикли: 2–1–5–2; 2–5–1–2; 2–3–4–5–2; 2–5–4–3–2; 2–1–5–4–3–2; 2–3–4–5–1–2. Довжиною циклу називають кількість ребер у циклі. Графи, які можна намалювати, не відриваючи олівця від паперу, називають ейлеровими. Щоб визначити, чи є граф ейлеровим, треба визначити степені 5 кожної вершини. Якщо в графі більше двох непарних вершин, то намалю- вати фігуру неможливо. Такі завдання можна виконати за допомогою графу. Якщо всі вершини графу парні, то намалювати фігуру можливо, і починати можна з будь-якої вершини. Якщо в  графі дві непарні вершини, то намалювати фігу- ру можна, але тільки починати необхідно в одній з цих двох непарних вершин, а закінчувати в іншій непарній вершині. Граф, який не має жодного циклу, називають деревом. Приклад такого графу зображено на рис. 8.7. Ребро називають мостом, якщо воно є єдиним шляхом, що зв’язує дві вершини. Прикладом моста на графі, зображеному на рис. 8.7, є ребро 1–2. 6 5 4 2 1 3 Рис. 8.6. Граф із циклами 84 5 6 7 1 2 3 Рис. 8.7. Приклад графу-дерева Ребра графу можуть мати вагу, яка позначається числами на ребрах самого графу. Граф (неорієнтований і орієнтований), усі ребра якого ма- ють вагу, називають зважений. Класична задача теорії графів має таку історію. У  1736 році в місті Кенігсберзі було два острови, з’єднані 7 мостами з берегами річки Преголь і  один з одним. Сутність задачі: здійснити прогулянку містом таким чином, щоб, пройшовши один раз по кожному мосту, повернутися в те саме місце, звідки починалася прогулянка.
  • 97. 978.1. Основні поняття і ... Приклад неорієнтованого зваженого графу зображено на рис. 8.9. Тут вага ребра A–B дорівнює 3, а ребра B–C — 7. B F C E А D 1 8 2 4 5 3 Рис. 8.8. Орієнтований зважений граф A C B D 2 3 7 5 8 Рис. 8.9. Неорієнтований зважений граф Запитання для перевірки знань Наведіть визначення графу. Як позначають вершини графу? Яка різниця між дугами і  ребрами графу? Які графи називають повними? Наведіть приклад найпростішого графу з  ребрами і  дугами. Які вершини графу називають суміжними? Які графи називають орієнтованими; неорі- єнтованими; змішаними? Поясніть сутність степеня вершини. Які графи називають зв’язаними? Поясніть сутність циклу в  графі. 1 2 3 4 5 6 7 8 9 10 Завдання для самостійного виконання Накресліть повний граф із п’ятьма верши- нами. На графі, зображеному на рис. 8.9, визначте всі можливі довжини шляхів із вершини  C у  вершину A. У неділю учні 11 класу домовилися відві- дати ботанічний сад. Час і  місце зустрічі доручили визначити Вові, який мав пові- домити  їх Юлі й  Миколі. Юля повинна по- відомити їх Тані й  Віті, Вітя  —  Наталі й  Іго- рю, Микола — Олі й Петру, Петро — Олені й  Івану. Оформте схему оповіщення у  ви- гляді графа. Розробіть граф зв’язків основних пристроїв вашого домашнього або шкільного комп’ю- тера. Накресліть зважений граф доріг держав- ного значення між чотирма обласними центрами України, вибраними за вказівкою вчителя. На ребрах вкажіть довжину доріг. Розробіть граф для станцій метро Києва: По- штова площа, Майдан Незалежності, площа Льва Толстого, Університетська, Театральна, Хрещатик, Арсенальна з  усіма можливими переходами між цими станціями користую- чись рисунком. Академмістечко Житомірська Святошино Нивки Берестейська Шулявська Политехнічний Інститут Вокзальна Університетська Театральна Хрещатик Арсенальна Дніпро Гідропарк Лів Сирець Дорогожичи Лук’янівська Золоті Ворота Палац Спорту Кловська Печерська Дружби Народів Видубичи Славутич Осокорки Либідська Палац «Україна» Республіканський Стадіон Площа Льва Толстого Майдан Незалежності Поштова Площа Контрактова Площа Тараса Шевченка Петрівка Оболонь Мінська Героїв Дніпра Деміївська Голосіївська Васильківська 1 На графі, зображеному на рис. 8.9, визначте2 3 4 5 6
  • 98. 98 8.2. Способи подання графів у  комп’ютері Пригадайте, як ви подавали графи під час вивчення математики та інших навчальних дисциплін. Існують декілька способів подання графів у комп’ютері, розглянемо два з них: за допомогою матриць суміжності; за допомогою списку суміжних вершин. Подання графів за допомогою матриць суміжності. Матри- ця суміжності для графу з n вершинами подається двовимір- ним масивом розмірністю n*n. Якщо вершина i  неорієнтованого незваженого графу має ребро з вершиною j, то елемент масиву mas[i, j] набуває зна- чення 1, інакше — 0. Розробимо матрицю суміжності для неорієнтованого графу, зображеного на рис. 8.10. Матрицю суміжності для неорієнтованого незваженого гра- фу наведено на рис. 8.11. Вершини Вершини 1 2 3 4 5 6 1 1 1 0 0 1 0 2 1 0 1 0 1 0 3 0 1 0 1 0 0 4 0 0 1 0 1 1 5 1 1 0 1 0 0 6 0 0 0 1 0 0 Рис. 8.11. Матриця суміжності для неорієнтованого незваженого графу з петлею Для орієнтованого незваженого графу елементи матриці суміжності набувають значення 1, якщо відповідне ребро ви- ходить з вершини, інакше — значення 0. На рис. 8.12 ребро виходить із вершини 1 у вершини 2 і 3, тому елементи mas[1, 2] і mas[1, 3] набувають значення 1, а елемент mas[2, 1] — значення 0. Матрицю суміжності для орієнтованого незваженого графу (див. рис. 8.12) наведено на рис. 8.13. Вершини Вершини 1 2 3 4 5 1 0 1 1 0 0 2 0 0 0 1 0 3 0 1 0 0 0 4 0 0 1 0 0 5 0 1 0 1 0 Рис. 8.13. Матриця суміжності для орієнтованого незваженого графу 6 5 4 2 1 3 Рис. 8.10. Неорієнтований незважений граф (із петлею) 4 3 5 1 2 Рис. 8.12. Орієнтований незважений граф
  • 99. 998.2. Способи подання... Розглянемо подання орієнтованого зваженого графу (рис. 8.14). Матрицю суміжності для цього графу наведено в таблиці на рис. 8.15. Як бачимо, елементи матриці набува- ють значень ваги відповідних ребер. Верши- ни Вершини 1 2 3 4 5 1 0 8 0 15 3 2 0 0 5 0 0 3 0 0 0 0 17 4 0 0 13 0 9 5 0 0 0 0 0 Рис. 8.15. Матриця суміжності орієнтованого зваженого графу Подання графів за допомогою списку суміжних вершин. Для кожної вершини складається список суміжних вершин. Наприклад, для графу (див. рис. 8.12) список суміжних вер- шин можна записати так: 1 –  2 –  3 2 –  4 3 –  2 4 –  3 5 –  2 –  4 Для зваженого графу біля суміжної вершини вказується вага ребра. Наприклад, для графу (див. рис. 8.14) список можна записати так: 1 –  2(8) –  4(15) –  5(3) 2 –  3(5) 3 –  5(17) 4 –  3(13) –  5(9) 5 –  Запитання для перевірки знань Які способи подання графів у  комп’ютері? Яка структура даних використовується в  матриці суміжності? Поясніть порядок створення матриці су- міжності для неорієнтованого незваженого графу. Поясніть порядок подання графу списком суміжних вершин. Як створюється матриця суміжності для орієнтованого зваженого графу? Наведіть приклад подання зваженого графу списком суміжних вершин. 1 2 3 4 5 6 Завдання для самостійного виконання Складіть матрицю суміжності для графу, зображеного на: а) рис.  8.4; б) рис.  8.6; в) рис.  8.8.; г) рис.  8.9. Знайдіть в  Інтернеті відомості про насе- лені пункти, розташовані у вашій області, з  кількістю населення понад 50000 осіб і  довжину автомобільних шляхів між ними. Розробіть граф автомобільних шляхів між цими населеними пунктами та список су- міжних вершин. 1 2 1 3 4 2 5 8 3 15 9 17 13 5 Рис. 8.14. Орієнтований зважений граф Графи, які можна намалювати, не відриваючи олівця від паперу, називають ейлеровими.
  • 100. 100 8.3. Пошук у глибину та ширину Знайдіть в  Інтернеті схему метрополітену Києва, яка є  різ- новидом графу. Сформулюйте алгоритм пошуку маршруту з  однієї станції метро до іншої. У процесі опрацювання графів часто доводиться викону- вати обхід усіх його вершин. Існують декілька алгоритмів перегляду вершин графу, розглянемо два з них: алгоритми пошуку у глибину та пошуку в ширину. Алгоритм пошуку в глибину. Для реалізації алгоритму пошуку в глибину використовують дві структури даних: стек для запам’ятовування ще не опрацьованих вершин і список для запам’ятовування вже опрацьованих вершин. Розглянемо сутність алгоритму пошуку в глибину. Крок 1 Вибирають стартову вершину, наприклад V. Крок 2 Стартову вершину включають у  список опрацьованих (переглянутих) вершин. Крок 3 У стек включають усі вершини, суміжні зі стартовою. Крок 4 Створюють цикл за умовою появи порожнього стека, усередині якого: 1) вибирають зі стека чергову вершину; 2) перевіряють у  списку, чи опрацьована ця вершина. Якщо опрацьована, то зі сте- ка вибирають чергову вершину. Якщо вершина ще не опрацьована, то вибирають її і  розміщують у  список опрацьованих вершин; 3) переглядають весь список суміжних із нею вершин і  розміщують у  стек ще не опрацьовані вершини. Наведемо пояснення до цього алгоритму. Якщо стартовою є вершина V, то вибирає- мо вершину U, що суміжна з вершиною V. На наступному кроці для вершини U виби- раємо суміжну з нею вершину. Якщо на черговому кроці розглядається вершина Q і немає вершин, суміжних із нею, і таких, що не переглядалися раніше, то по- вертаємося з вершини Q до тієї вершини, з якої потрапили у вершину Q і т. д. Якщо це вершина, з якої починався перегляд, тобто вершина V, і непеглянутих суміжних з нею вершин немає, то процес перегляду заверше- ний. Розглянемо порядок перегляду вершин графу в глибину на прикладі 1 неорієнтованого незваженого графу (рис. 8.16, а). Приклад 1. Перегляд вершин можна розпо- чати з будь-якої вершини, наприклад із вер- шини 3. Із неї можна рухатися і у вершину 2, і у вершину 7. Потім перейдемо до вершини 2, з якої ру- хаємося до вершини 1. Але у вершини 1 від- сутня суміжна для неї вершина, яка ще не розглядалася.
  • 101. 1018.3. Пошук у глибину... Повертаємося у вершину 2 і рухаємося до вершини 4. У вершини 4 також відсутні суміжні вершини, які ще не розглядалися. Повертаємося ще раз у вершину 2 і рухаємося у верши- ну 5. З неї рухаємося у вершину 6, потім у вершину 7. Для реалізації алгоритму пошуку мовою Python нумерацію вершин графу доцільно починати з 0. Суміжні вершини гра- фу можна подавати списками (приклад 2). Приклад 2. Список [[1,  2], [0, 2], [0, 1]] вказує, що вершина 0 має зв’язок із вершинами 1 і 2, вершина 1 — з вершинами 0 і 2, а вершина 2 — з вершинами 0 і 1. Приклад 3. Нехай дано граф із шістьма вершинами, які мають між собою такі зв’яз- ки: [[4, 5], [5], [3, 4], [2, 4], [0, 2, 3], [0, 1]]. Програму обходу вершин графу в глибину, починаючи з нульової вершини, зображено на рис. 8.17. Рис. 8.17. Програма обходу вершин графу в глибину Результат виконання програми: 5 7 3 1 2 6 4 3 2 5 4 1 6 7 8 Рис. 8.16, а. Неорієнтований незважений граф, стрілкою позначено напрям руху, цифрою — номер кроку
  • 102. 102 Розділ 2 Алгоритм пошуку в ширину. Спочатку опрацьовуються всі вершини, суміжні з поточною, а потім — «нащадки». Замість стека для збереження ще не опрацьованих вершин використо- вується черга. Сутність алгоритму пошуку в ширину така. Крок 1 Обирається стартова вершина, включається у  список опрацьованих вершин. Крок 2 У черзі запам’ятовуються всі вершини, суміжні зі стартовою. Крок 3 Створюється цикл за умови порожньої черги, усередині якого: 1) із черги вибирається чергова вершина; 2) у списку перевіряється, чи опрацьована ця вершина. Якщо вона вже опрацьова- на, то із черги вибирається наступна вершина. Якщо вершина не опрацьована, то необхідно опрацювати її і  помістити у  список опрацьованих; 3) переглядається весь список суміжних із нею вершин і  поміщаються в  чергу ще не опрацьовані вершини. Наведемо пояснення до цього алгоритму. Наприклад, якщо стартовою є вершина А0, то опрацьовуються всі суміжні з нею верши- ни А1, А2, …, АK, далі — суміжні вершини для кожної із вершин А1, А2, …, АK і т. д. Будуть перебрані всі вершини, і пошук завершиться. Розглянемо процес пошуку в ширину на прикладі графу (рис. 8.16, б). Порядок обходу вершин із вершини 3: з вершини 3 перегля- даються вершини 2 і 7; з вершини 2 — вер- шини 1, 4, 5, 6, а з вершини 7 — вершина 6. Приклад 4. Нехай дано граф із шістьма вер- шинами, які мають такі зв’язки між собою: [[1, 3], [0, 3, 4, 5], [4, 5], [0, 1, 5], [1, 2], [1, 2, 3]]. На рис. 8.18 зображено програму обходу вершин графу в ширину, починаючи з нульо- вої вершини. Рис. 8.18. Програма пошуку в ширину
  • 103. 1038.3. Пошук у глибину... 5 7 3 1 2 6 4 Рис. 8.16, б. Неорієнтований незважений граф, кольором позначено кроки руху Запитання для перевірки знань Чому для реалізації алгоритмів пошуку в  ширину і  довжину мовою Python доціль- но позначати вершини графу цифрами, по- чинаючи з  0? Поясніть послідовність перегляду в  глиби- ну вершин графу на рис.  4.16, починаючи з  вершини 5. Поясніть послідовність перегляду в  шири- ну вершин графу на рис.  4.16, починаючи з  вершини 7. Сформулюйте сутність алгоритму пошуку в  глибину. Сформулюйте сутність алгоритму пошуку в  ширину. 1 Поясніть послідовність перегляду в  глиби-2 Поясніть послідовність перегляду в  шири-3 Сформулюйте сутність алгоритму пошуку4 Сформулюйте сутність алгоритму пошуку4 Сформулюйте сутність алгоритму пошуку Сформулюйте сутність алгоритму пошуку5 Завдання для самостійного виконання Список суміжних вершин графу має такий зміст: [[1, 3], [0, 2, 3], [1, 3], [0, 1, 2]]. Розро- біть граф, який відповідає цьому списку. Модифікуйте програму, зображену на рис.  8.18, так, щоб обхід починався з  вер- шини 2. Виконайте програму і доведіть пра- вильність отриманих результатів. Для списку суміжності вершин, який вико- ристовується в  програмі (рис.  8.17), розро- біть відповідний граф. Модифікуйте програму (рис.  8.17) так, щоб обхід починався з  вершини 3. Виконайте програму, зображену на рис. 8.18, для нового списку суміжних вершин, роз- робленого самостійно. Доведіть правиль- ність отриманих результатів. Розробіть граф залізничних шляхів між шістьма населеними пунктами України, які виберіть на власний розсуд або за вказів- кою вчителя. Створіть для цього графа спи- сок суміжних вершин і  використайте його у  програмі, зображеній на рис.  8.17. Вико- найте програму і  доведіть правильність отриманих результатів. 1 Модифікуйте програму, зображену на2 3 4 5 6 Результат виконання програми наведено до прикладу 4:
  • 104. 104 8.4. Визначення найкоротшого шляху в  графі З однієї станції метро можна потрапити до іншої станції різними шляхами. Наведіть приклад пошуку найкоротшого шляху у  відомому вам метро. У процесі пошуку найкоротшого шляху у графі між двома вершинами відшукується шлях, для якого сума ваг його ребер є мінімальною серед усіх інших шляхів. Така задача може ви- конуватися для неорієнтованого й орієнтованого графів. Задача пошуку найкоротшого шляху у графі має важливе практичне значення. Наприклад, у GPS-навігаторах здійс- нюється пошук найкоротшого шляху між двома об’єктами. Перехрестя вулиць є аналогом вершин, а вулиці (дороги) з їх- німи довжинами — ребрами. Якщо сума довжин доріг між об’єктами мінімальна, то вважається, що знайдено найкорот- ший шлях. Якщо вага ребер не вказана, то найкоротшим шляхом вва- жається той, що містить найменшу кількість ребер. На графі, зображеному на рис. 8.19, найкоротшим шляхом із верши­ ни 3 у вершину 6 є шлях 3–4–5–6, сума ваг ребер якого до- рівнює 9. Є різні варіанти задач про найкоротший шлях у графі: • • пошук найкоротшого шляху в задану вершину з усіх інших вершин графу; • • пошук найкоротшого шляху між двома заданими вер- шинами; • • пошук найкоротшого шляху з кожної вершини в усі інші вершини графу; • • пошук найкоротшого шляху, який проходить через зада- ну множину вершин, та ін. Нині для кожного типу задач пошуку найкоротшого шля- ху розроблено значну кількість алгоритмів. Розглянемо два з них: алгоритм Дейкстри й алгоритм Флойда — Уоршелла. ` ` 8.4.1. Алгоритм Дейкстри Кур’єр доставляє кореспонденцію абонентам, користуючись схемою руху міського транспорту. Він майже щоденно відшукує найкоротший шлях від станції отримання кореспонденції до решти абонентів. Як він це робить?. За допомогою алгоритму Дейкстри здійснюється пошук найкоротшого шляху від однієї вершини графу (стартової) до всіх його інших вершин. Для полегшення опису алгоритму Дейкстри будемо нази- вати вершину відвідуваною, якщо вона вже була включена в будь-який шлях і її не можна більше включати в новий шлях, а вершину, яка ще не використовувалася на шляху і яка є суміжною з поточною, — видимою. Роль ваги ребра можуть виконувати не тільки самі їхні довжини, а  й час переміщення, витрачені фінансові, паливо- енергетичні ресурси, вартість та час виконання робіт тощо. 1 4 2 3 6 5 5 5 8 2 3 3 4 2 Рис. 8.19. Неорієнтований зважений граф Алгоритм Дейкстри  — алгоритм на графах, винайдений нідерландським ученим Едсгером Дейкстрою в 1959 році, знаходить найкоротший шлях від однієї вершини графу до всіх інших вершин.
  • 105. 1058.4. Визначення ... Наприклад, якщо вершина 0 (рис. 8.20) вже була включе- на в маршрут, то вона є відвідуваною, а якщо вершина 2 не включена в маршрут, то для неї видимими є вершини 3, 4 і 5. Ви знаєте, що вершини графу можуть позначатися різни- ми ідентифікаторами. Але якщо передбачається реалізувати алгоритм мовою Python, то доцільніше вершини позначати цілими числами в діапазоні від 0 до n −1. У цьому випадку можна використовувати номери вершин як індекси. Сутність алгоритму Дейкстри така. Крок 1 На кожному поточному кроці аналізуються всі видимі вершини і  вибирається та, до якої від- стань є  найменшою. Ця вершина вважається поточною. Крок 2 Далі перераховуються всі відстані до всіх ви- димих і  відвідуваних вершин. У  випадку якщо знайдеться менша відстань, попереднє значен- ня замінюється меншим. На прикладі графу, зображеного на рис. 8.20, за допомо- гою алгоритму Дейкстри знайдемо мінімальні відстані від вершини 0 до всіх інших вершин цього графу. Приклад 1. Будемо вважати стартовою вершину 0, а фінішною — вершину 5. Із вершини 0 видимими є вершини 1 і 4, відстані до яких відповідно дорівнюють 9 і 6. Інші вершини є невидимими, відстань до них невідома, що позначається великим чис- лом, яке гарантовано буде більше чисел, які використовуються у процесі розв’я- зання цієї задачі (ми використали число 9999). Цей стан зафіксовано у табл. 8.1. Таблиця 8.1. Відстані з  вершини 0 Номер вершини графу 0 1 2 3 4 5 Поточна від- стань від стар- тової вершини 0 9 9999 9999 6 9999 Вершина, з  якої було зробле- но останній перерахунок найменшої відстані 0 0 0 0 0 0 Отже, у результаті реалізації першого кро- ку відвідуваною є вершина 0 і визначено най- менші відстані до видимих вершин. 2. Визначимо вершину, до якої можна пе- рейти з вершини 0. Такими є вершини 1 і 4. Відстань до вершини 4 менша, тому переходимо у вершину 4. Із верши- ни 4 можна потрапити у вершини 2 і 3 (вершина 0 є відвідуваною, тому вона не аналізується), відстані до яких відповід- но дорівнюють 15 і 11. Перераховуємо відстані до вершин 2 і 3 з вершини 4. Отримані дані відображено в табл. 8.2. Таблиця 8.2. Відстані з  вершини 4 Номер вершини графу 0 1 2 3 4 5 Відстань від стартової вершини 0 9 21 17 6 9999 Вершина, з  якої було зроблено останній перерахунок 0 0 4 4 0 0 Таким чином, після цього кроку відві- дуваними є вершини 0 і 4. Найближчою до вершини 4 є вершина 3, тому перейдемо у вершину 3. 14 9 6 2 9 11 1510 7 2 4 1 0 5 3 Рис. 8.20. Зважений неорієнтований граф
  • 106. 106 Розділ 2 3. Із вершини 3 видимими є вершини 1, 2, 5. Почнемо аналіз із вершини 1. Від- стань до неї дорівнює 19 17 2+( ) . Але до цієї вершини зареєстрована відстань, що дорівнює 9. Тому відстань із вершини 1 до вершини 3 дорівнює 11. Цю відстань занесено в табл. 8.3. Таблиця 8.3. Відстані з  вершини 3 Номер вершини графу 0 1 2 3 4 5 Відстань від стартової вершини 0 9 21 11 6 9999 Вершина, з  якої було зроблено останній перерахунок 0 0 4 1 0 0 Відстань до вершини 2 з вершини 3 дорів- нює 27, тобто більше, ніж зареєстрована від- стань до неї з вершини 4. Тому значення 21 не змінюємо. Таким чином, після цього кроку вибраними є вершини 0, 1, 2, 3, 4. Поточна довжина до них зареєстрована у табл. 8.3. 4. Із вершини 1 у вершину 3 відстань на поточний момент дорівнює 11. Із верши- ни 3 у вершину 5 відстань дорівнює 20, а з вершини 1 у цю ж вершину — 23. Тому обираємо перший варіант і запису- ємо у табл. 8.4. Таблиця 8.4. Відстані від вершини 0 до всіх інших вершин Номер верши- ни графу 0 1 2 3 4 5 Відстань від стартової вершини 0 9 21 11 6 20 Вершина, з  якої було зроблено останній перерахунок 0 0 4 1 0 3 Відповідь: мінімальні відстані з верши- ни 0 у всі інші вершини (в порядку їх номе- рів) є такими: 9, 21, 11, 6, 20. Загальний вигляд алгоритму Дейкстри можна подати так. Крок 1 Початок. Крок 6 Надати поточній вершині статус відвідуваної. Крок 2 Вибрати стартову вершину і  визна- чити її поточною з  номером i. Крок 7 Перейти до п. 3. Крок 3 Перевірити, чи всі вершини графу відвідані. Якщо всі, то перейти до п.  8, інакше  —  до п. 4. Крок 8 Вивести шлях від фінішної вершини до стартової. Обчислити найкоротшу відстань між цими верши- нами і  вивести її.Крок 4 Вибрати серед усіх видимих вершин ту, до якої найменша відстань, і  ви- значити її поточною. Крок 5 Перерахувати відстані до всіх ви- димих і  відвіданих вершин через вершину i. Якщо знайдеться менша відстань, замінити нею попереднє значення, а  також присвоїти но- мер  i  цій вершині. Крок 9 Кінець. Для реалізації алгоритму Дейкстри мовою Python зважений неорієнтований граф можна реалізувати словником суміжно- сті. У такому разі як ключ можна вибрати номер вершини, як значення — вагу ребра.
  • 107. 1078.4. Визначення ... Опис графу (рис. 8.20) має такий вигляд: N =  [ {1:  9, 4: 6}, # Для нульової вершини {0:  9, 3: 2, 5: 14}, # Для першої вершини {3:  10, 4: 15, 5: 7}, # Для другої вершини {1:  2, 2: 10, 4: 11, 5  : 9}, #  Для третьої вершині {0:  6, 2: 15, 3: 11}, # Для четвертої вершини {1:  14, 2: 7, 3: 9}, #  Для п’ятої вершини [ Отже, вершина 0 суміжна з вершиною 1, вага їхнього ре- бра дорівнює 9, а також суміжна з вершиною 4, вага ребра 6. Вершина 1 суміжна з нульовою, вага ребра дорівнює 9, з вер- шиною 3 з вагою ребра 2 і з п’ятою з вагою ребра 14 і т. д. Розробимо програму реалізації алгоритму Дейкстри, у якій використано дані графу (рис. 8.20). Стартовою є вершина 0. У програмі (рис. 8.21) використані такі змінні: p  — слов- ник поточної відстані до видимих вершин; u — список від- віданих вершин; min_x — номер вершини, до якої відстань є мінімальною від останньої відвіданої вершини; min_v — мі- німальна відстань до поточної відвіданої вершини. Рис. 8.21. Програма реалізації алгоритму Дейкстри Результат виконання програми: Уперше теорію графів як окрему математичну дисципліну представив угорський математик Кенінг у  1930-ті роки.
  • 108. 108 ` 8.4.2. Алгоритм Флойда — Уоршелла Інкасатор щоденно відвідує магазини atb і може потрапляти від будь-якого магазину до всіх інших найкоротшим шляхом. У  такому випадку найкоротшу відстань можна знайти за допомогою алгоритму Флойда  —  Уоршелла. Ви знаєте, що для визначення найкоротшого шляху графу можна скористатися алгоритмом Дейкстри і в циклі обійти всі вершини. Розглянемо алгоритм Флойда — Уоршелла, який відрізняється від нього тим, що дозволяє знайти найкоротшу відстань не тільки від однієї вершини графу до всіх інших, а й від кожної вершини до всіх інших. Згадаємо, що графи, які можуть одночасно використовува- тися і дуги, і ребра, називають змішаними. Розглянемо сут- ність алгоритму Флойда — Уоршелла на прикладі змішаного зваженого графу (рис. 8.22), сформулюємо алгоритм у загаль- ному вигляді. Приклад 1. Створимо для цього графу матрицю су- міжності D[][]. Номер вершини 0 1 2 Вершина 0 0 13 3 Вершина 1 2 0 6 Вершина 2 3 6 0 У кожному елементі D[i][j] матриці зберіга- ється вага ребра між вершинами i та j. У про- цесі реалізації алгоритму Флойда — Уоршел- ла будуть аналізуватися всі можливі варіанти довжин між вершинами i та j. Якщо виявля- тиметься, що довжина менша, ніж зафіксо- вана у поточний момент в елементі D[i][j], то менше значення замінить поточне. Отже, у результаті повної реалізації алго- ритму ми повинні отримати таку матрицю суміжності, у якій будуть зберігатися міні- мальні довжини між усіма вершинами графу. 2. Зрозуміло, що довжина шляху з кожної вершини в ту саму вершину дорівнює 0 (навіть коли вершина має петлю). Напри- клад, довжина шляху з вершини 2 у вер- шину 2 дорівнює 0. Це означає, що всі елементи D[i][i] дорівнюють нулю. 3. Якщо у графі є вершини, які між собою безпосередньо не мають ребер, то відпо- відним елементам матриці суміжності надамо нескінченне значення або макси- мально можливе, яке гарантовано буде більше від найдовшого шляху в графі. Наприклад, якщо вершини i та j безпо- середньо не пов’язані ребром, то елемен- ту D[i][j] надамо значення 9999. У графі, зображеному на рис. 8.22, таких вершин немає. 4. Найкоротший шлях із вершини i у вер- шину j може бути як безпосередньо між цими вершинами, так і через k інших вершин. Наприклад, довжина ребра безпосередньо між вершинами 1 і 2 до- рівнює 6, а довжина ребер з вершини 1 у вершину 2 через вершину 0 — 5. У цьому випадку D[1][0]+D[0][2]D[1][2]. Тому значення елемента D[1][2], яке на даний момент дорівнює 6, замінюється значенням довжини D[1][0]+D[0][2], яке дорівнює 5. У загальному випадку реалізується таке правило: якщо D[i][k]+D[k][j]D[i][j], то значення елемен- та D[i][j] замінюється значенням D[i][k]+D[k][j]. 10 2 2 13 63 Рис. 8.22. Змішаний зважений граф
  • 109. 1098.4. Визначення ... 5. Далі наведено детальний аналіз обчис- лення довжини шляху між усіма верши- нами i та j через усі вершини k. Вершини Між якими вершинами обчислюється довжина шляху і  через які вершини к i j 0 0 0 D[0][0] Не змінюється 0 0 1 D[0][1] Не змінюється 0 0 2 D[0][2] Не змінюється 0 1 0 D[1][0] Не змінюється 0 1 1 D[1][1] Не змінюється 0 1 2 З 1  → 2  через 0; D[1][2] змінюється на 5 0 2 0 D[2][0] Не змінюється 0 2 1 D[2][1] Не змінюється 0 2 2 D[2][2] Не змінюється 1 0 0 D[0][0] Не змінюється 1 0 1 D[0][1] Не змінюється 1 0 2 D[0][2] Не змінюється 1 1 0 D[1][0] Не змінюється 1 1 1 D[1][1] Не змінюється 1 1 2 D[1][2] Не змінюється 1 2 0 D[2][0] Не змінюється 1 2 1 D[2][1] Не змінюється 1 2 2 D[2][2] Не змінюється 2 0 0 D[0][0] Не змінюється 2 0 1 З 0  → 1 через 2; D[0][1] змінюється на 9 2 0 2 D[0][2] Не змінюється 2 1 0 D[1][0] Не змінюється 2 1 1 D[1][1] Не змінюється 2 1 2 D[1][2] Не змінюється 2 2 0 D[2][0] Не змінюється 2 2 1 D[2][1] Не змінюється 2 2 2 D[2][2] Не змінюється 6. Таким чином, після заміни значень еле- ментів D[1][2] і  D[0][1] матриця суміжності матиме такий зміст: Номер вершини 0 1 2 Вершина 0 0 9 3 Вершина 1 2 0 5 Вершина 2 3 6 0 Розглянемо загальний зміст алгоритму Флойда — Уоршел- ла для графу з кількістю вершин n. Крок 1 Вибрати вершину k = 0, через яку здійснюється перерахунок довжини між вершинами i  та j. Крок 2 Вибрати вершину i = 0. Крок 3 Вибрати вершину j = 0. Алгоритм Флойда — Уоршелла  — динамічний алгоритм для знаходження найкоротших шляхів між усіма вершинами зваженого орієнтованого графу. Розроблений в 1962 году Робертом Флойдом і Стівеном Уоршеллом. Уперше алгоритм розробив і  опублікував Бернард Рой у 1959 році.
  • 110. 110 Розділ 2 Крок 4 Якщо значення D[i][k]+D[k][j]D[i][j], то D[i][j] =  D[i][k]+D[k][j], інакше D[i][j] не змінюється. Крок 5 Якщо j  = n, то j = j + 1  і перейти до п. 4, інакше  —  перейти до п. 6. Крок 6 Якщо i  = n, то i = i + 1  і перейти до п. 3, інакше  —  перейти до п. 7. Крок 7 Якщо k  = n, то k = k + 1  і перейти до п. 2, інакше  —  перейти до п. 8. Крок 8 Кінець. Програму реалізації алгоритму зображено на рис. 8.23. Рис. 8.23. Програма реалізації алгоритму Флойда — Уоршелла Запустимо програму і перевіримо її роботу на прикладі такої матриці суміжності: Номер вершини 0 1 2 3 0 0 15 9999 2 1 4 0 10 3 2 9999 10 0 6 3 2 3 5 0
  • 111. 1118.4. Визначення ... Динаміку і результат виконання програми наведено на рис. 8.24 (с. 111). Запитання для перевірки знань Назвіть основні варіанти задач пошуку найкоротшого шляху в  графі. Яка основна різниця між алгоритмами Дейкстри і  Флой- да  —  Уоршелла? Поясніть порядок виконання алгоритму Дейкстри на прикла- ді найпростішого графу. Поясніть порядок виконання алгоритму Флойда  —  Уоршел- ла на прикладі найпростішого графу. Сформулюйте алгоритм Дейкстри. Сформулюйте алгоритм Флойда  —  Уоршелла. 1 2 3 4 5 6 Завдання для самостійного виконання Для графу на рис.  8.19 визначте найкоротші шляхи від вер- шини 2  до всіх інших. Для графу на рис.  8.19 визначте найкоротші шляхи від кож- ної вершини до всіх інших. Визначте найкоротший шлях з  вершини  А у вершину H у  графі, зображеному на рис.  8.25. Модифікуйте програму на рис.  8.21 для того, щоб вона ви- значала найкоротший шлях від вершини 0 до інших вершин для графу, зображеного на рис.  8.19. Виконайте програму і  доведіть, що отримано правильні результати. Модифікуйте програму на рис.  8.23 для того, щоб вона визначала найкоротший шлях від кожної вершини до всіх інших для графу, зображеного на рис.  8.19. Виконайте про- граму і  доведіть, що отримано правильні результати. Знайдіть в  Інтернеті схему Київського метрополітену. Визна- чте мінімальну кількість станцій на шляху від станції «Вок- зальна» до станції «Олімпійська». Виконайте програму на рис. 8.23 для графу, зображеного на рис.  8.26. 1 Для графу на рис.  8.19 визначте найкоротші шляхи від кож-2 Визначте найкоротший шлях з  вершини  А у вершину H3 4 5 A H G F ED C B Рис. 8.25. Неорієнтований незважений граф 1 5 2 6 3 1 2 0 3 Рис.  8.26. Орієнтований зважений граф 6 7 Рис. 8.24. Динаміка та  результат виконання програми до рис.  8.23
  • 112. 112 9. Динамічне програмування і жадібні алгоритми 9.1. Динамічне програмування Чи доводилося вам раніше у  процесі вивчення математики або фізики розбивати складну задачу на декілька дрібніших однотипних задач? Динамічне програмування — це метод розв’язування задач, що мають певні властивості, шляхом їх розбиття на декілька однотипних підзадач, пов’язаних між собою. Динамічне програмування — розділ математичного програмування, що вивчає багатокрокові процеси пошу- ку оптимального вирішення складних завдань. Застосовується при складанні програм рішення таких задач оптимізації, для яких процес пошуку рішення мож- на представити у вигляді деякої послідовності кроків, тобто знаходять оптимальне рішення на кожному кроці процесу і таким чином зводять рішення однієї складної задачі до ви- рішення великого числа значно менш складних. До задач оптимізації відносять задачі пошуку максимальних або мінімальних значень певних функцій. Наприклад, пошуку максимального значення прибутку від інвестування у відпо- відну галузь за багаторічний період зводиться до послідовного визначення оптимальних капіталовкладень на кожен рік. Загальним для задач динамічного програмування є те, що змінні в моделі розглядаються не разом, а послідовно, одна за одною, тобто будується така обчислювальна схема, коли замість одного завдання з багатьма змінними використовують багато завдань з малим числом (зазвичай навіть однієї) змінних у кож- ній. Це значно скорочує обсяг обчислень. Пояснимо сутність ди- намічного програмування на найпростішому прикладі 1. Приклад 1. Нехай потрібно обчислити суму n чисел: 1 2 3 4+ + + +…+ n. Складність цієї задачі полягає в тому, що необхідно одразу взяти велику кількість чисел і додати їх. Можна спочатку визначити суму першого елемента, тобто просто взяти перший елемент: f 1 1( )= . Потім до суми можна додати другий елемент: f f2 1 2 3( )= ( )+ = . Аналогічно отримуємо: f f3 2 3 6( )= ( )+ = , f n f n n( )= −( )+1 . Часто більшість виділених підзадач однакові. Але дина- мічне програмування дозволяє розв’язувати не всі типи задач, а лише певний клас задач, який використовується у таких галузях, як математика, програмування, статистика, еконо- міка, лінгвістика, теорія ігор тощо, і які мають властивість співоптимальності. Основними типами задач дина- мічного програмування є  задачі оптимізації, комбінаторики, задачі з  використанням графів. Зазвичай задачі комбінаторики пов’язані з  пошуком кількості об’єктів, які мають задані властивості, а  задачі з  викорис- танням графів  —  із пошуком, наприклад, мінімальної відстані між пунктами A і  B  на карті доріг, поданій у  вигляді графу. Поняття «динамічне програмування» було використано на початку 1940-х років американським математиком Річардом Беллманом. Він використав його для опису процесу пошуку розв’язку задач, для яких відповідь на одну задачу можна отримати лише після розв’язання попередньої задачі. У  1953 році вчений зробив уточнення терміна. Його стали використовувати для назви задач, безпосередньо пов’язаних із розв’язуванням вкладених підзадач для пошуку розв’язку всієї задачі. Нині термін розглядається як підрозділ системного аналізу та програмної інженерії.
  • 113. 1139.1. Динамічне... Приклад 2. Припустимо, що компанія виготовляє процесори (позначимо їх змінною х1), системні плати (х2), монітори (х3) та інші пристрої. Для визначення максимального прибутку потрібно визначити, яку кількість пристроїв слід виготовити, скільки потрібно мати персоналу тощо. Знайти розв’язок цієї задачі за великої кількості змінних досить складно. Але можна відокремити задачу із змінною x1. Після того як знайдено оптимальний розв’язок для першої підзадачі, виділяється підзадача з двома змінними x1 і x2, і вона розв’язується за допомогою вже знайденого розв’язку для першої задачі. Потім виділяється підзадача з трьома змінними x1, x2 і x3 і розв’язується за допомогою раніше використаного методу. Важливо те, що у процесі розв’язування складної задачі не розв’язується заново чергова підзадача, а використовується вже отриманий розв’язок попередньої підзадачі. Наведемо типові задачі, які можна розв’язувати за допомо- гою динамічного програмування: • розроблено граф доріг між населеними пунктами певно- го регіону; потрібно знайти мінімальний маршрут між двома населеними пунктами або маршрут, на який ви- трачається мінімальна кількість пального; • корпорація виготовляє процесори, смартфони, монітори та інше обладнання; потрібно визначити оптимальну кількість виготовлення кожного виду пристроїв для отримання максимального прибутку. Розглянемо розв’язування задачі обчислення чисел Фібо- наччі на прикладі 3. Приклад 3. Нехай є сходи, по яких можна ступати по кожній сходинці або через одну (рис. 9.1). Скількома способами можна потра- пити на i сходинку? На першу сходинку можна потрапити одним способом, на другу — двома, на тре- тю — трьома способами. Кількість способів потрапити на сходин- ку i дорівнює сумі способів потрапляння на сходинки i −1 і i −2, тобто обчислюється за допомогою формули f a f a f ai i1 1 2( )= ( )+ ( )− − , яка фактично є формулою обчислення чисел Фібоначчі. Нагадаємо, що числа Фібоначчі, починаючи з третього, отримують шляхом складання двох попередніх чисел, а перше і друге число дорівнюють одиниці: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,… Рис.  9.1. Сходи Щоб обчислити деяке число в цій послі- довності, спочатку потрібно обчислити третє число, склавши перших два числа, потім четверте, склавши друге і третє числа, і т. д. Сутність співоптимальності полягає в  тому, що велика складна задача поділяється на окремі невеликі підзадачі. Схематично цю сутність можна пояснити на прикладі логістики (розроблення оптимального плану виробництва). В  основу динамічного програмування покладено ідею розв’язання однієї складної задачі шляхом ділення її на окремі частини (підзадачі, етапи), розв’язування цих підзадач і  об’єднання отриманих результатів в  одне загальне розв’язання.
  • 114. 114 Розділ 2 Здається, що задачу обчислення чисел Фібоначчі можна розв’язати методом перебору. Але цей метод не є ефективним. Проста рекурсивна функція вимагатиме суттєвих ресурсів вже на 30-му числі Фібоначчі. Під час застосування цього методу ті самі значення аргументів функції будуть обчислю- ватися багаторазово. Програму мовою Python обчислення чисел Фібоначчі на ос- нові рекурентного підходу наведено на рис. 9.2. Рис. 9.2. Перший варіант програми обчислення чисел Фібоначчі Ще один варіант програми обчислення чисел Фібоначчі наведено на рис. 9.3. Рис. 9.3. Другий варіант програми обчислення чисел Фібоначчі
  • 115. 1159.1. Динамічне... Числа Фібоначчі можна обчислити в іншій спосіб: позба- витися обчислень, що повторюються. Це можна зробити за допомогою динамічного програмування — задача поділяється на підзадачі, що повторюються, кожна з яких розв’язується тільки один раз. Найпростіший варіант реалізації задачі — це запам’ятовувати обчисленні значення в додатковому масиві та використовувати їх для подальших обчислень. Розглянемо ще один приклад динамічного програмуван- ня — задачу про повернення здачі. Є два варіанти цієї задачі. Задачу повернення здачі можна cформулювати так: ви- значити, скількома способами F(n) можна повернути здачу суми n монетами заданого номіналу. 1-й варіант: з урахуванням порядку видачі монет (купюр). Наприклад, здача у такому порядку видачі монет: 1, 2, 5 та 5, 2, 1 вважається різними варіантами. Опишемо сутність застосування 1-го варіанта розв’язуван- ня на прикладі 4. Приклад 4. Нехай потрібно повернути здачу 10 копійок монетами номіналом 1, 2 і 5 ко- пійок. Позначимо F(10) кількість способів по- вернення здачі. Спочатку розглянемо окремі випадки. Очевидно, що здачу в одну копійку можна повернути одним способом, тобто повернути 1 копійку. Дві копійки можна повернути дво- ма способами, а саме: 1 1+ і 2 копійки. Три копійки можна повернути трьома способами: 1 2+ , 2 1+ і 1 1 1+ + . Здачу в чотири копійки можна повернути п’ятьма способами: 2 2+ , 2 1 1+ + , 1 2 1+ + , 1 1 2+ + і 1 1 1 1+ + + . Отже, ми визначили початкові значення: F 1 1( )= , F 2 2( )= , F 3 3( )= і F 4 5( )= . Спробуємо тепер узагальнити процес по- вернення здачі. Кількість способів, якими можна повернути 10 копійок, залежить від того, яку монету повернуто першою. Якщо першою повернуто 1 копійку, то необхідно повернути ще 9 копійок; якщо першою повер- нуто 2 копійки, то слід повернути ще 8 ко- пійок; якщо першою повернуто 5 копійок, то слід повернути ще 5 копійок. Кількість способів повернення 10 копійок дорівнює: F F F F10 9 8 5( )= ( )+ ( )+ ( ). Отже, для визначення F 10( ) необхід- но знайти F 9( ). Зрозуміло, що у випадку повернення першої монети номіналом 1 ко- пійка необхідно повернути ще 8 копійок; якщо першою повертають 2 копійки, то необ- хідно повернути 7 копійок; якщо повернуто 5 копійок, то слід повернути ще 4 копійки. Таким чином, кількість способів повернен- ня здачі в 9 копійок дорівнює: F F F F9 8 7 4( )= ( )+ ( )+ ( ). Звідси випливає, що повернення суми роз- міром k копійок монетами номіналом 1, 2 і 5 копійок обчислюється за формулою: F k F k F k F k( )= −( )+ −( )+ −( )1 2 5 за умови, що k 5 і F 0 1( )= , F 1 1( )= , F 2 2( )= , F 3 3( )= і F 4 5( )= . Продемонструємо порядок реалізації цієї формули: F F F F F F F5 0 3 4 0 3 4 1 3 5 9( )= ( )+ ( )+ ( )= ( )+ ( )+ ( )= + + = F F F F F F F5 0 3 4 0 3 4 1 3 5 9( )= ( )+ ( )+ ( )= ( )+ ( )+ ( )= + + = . F F F F6 1 4 5 1 5 9 15( )= ( )+ ( )+ ( )= + + = . F F F F7 2 5 6 2 9 15 26( )= ( )+ ( )+ ( )= + + = . F F F F8 3 6 7 3 15 26 44( )= ( )+ ( )+ ( )= + + = . F F F F9 4 7 8 5 26 44 75( )= ( )+ ( )+ ( )= + + = . F F F F10 5 8 9 9 44 75 128( )= ( )+ ( )+ ( )= + + = . Програму реалізації цього алгоритму по- вернення здачі подано на рис. 9.4. Річард Ернст Беллман — американський математик, один з найвидатніших фахівців в області математики та обчислювальної техніки. Зокрема його вважають батьком динамічного програмування.
  • 116. 116 Розділ 2 Рис. 9.4. Програма обчислення кількості варіантів повернення здачі Результат виконання програми: 2-й варіант: без урахування порядку видачі монет (купюр). Головне полягає не в тому, в якому порядку клієнт отримує монети, а які саме монети отримує. Наприклад, видача здачі монетами 1, 2, 5 і монетами 2, 5, 1 вважається одним варі- антом. Опишемо сутність застосування 2-го варіанта на прикладі 5. Приклад 5. Нехай у касі є монети 1, 2 і 5 копійок, якими слід повернути здачу 7 копі- йок. Можливі такі варіанти: 1 1 1 1 1 1 1 7+ + + + + + = 1 1 1 1 1 2 7+ + + + + = 1 1 1 2 2 7+ + + + = 1 2 2 2 7+ + + = 1 1 5 7+ + = 2 5 7+ = Усього шість варіантів. Аналіз виконаних дій дозволяє зробити висновок, що процес пошуку кількості варі- антів повернення здачі є циклічним і скла- дається із множини вкладених циклів. Кіль- кість таких циклів визначається кількістю типів монет. Кількість виконання кожного вкладеного циклу залежить від суми здачі й номіналу самої монети. Програму визначення кількості варіантів повернення здачі й кількості монет кожного з номіналів 1, 2, 5 і 10 зображено на рис. 9.5. Рис. 9.5. Програма обчислення повернення здачі
  • 117. 1179.1. Динамічне... Результат виконання програми: Принцип оптимальності дина- мічного програмування сформу- лював Р. Беллман: «Оптимальна поведінка має таку властивість: якими б не були первісний стан і рішення в початковий момент, наступні рішення повинні бути оптимальними щодо стану, отриманого в результаті первіс- ного рішення». Внесок Беллмана в динамічне програмування був увічнений у назві «рівняння Беллмана», центрального результату теорії динамічного програмування. Запитання для перевірки знань Які задачі можна розв’язувати за допомо- гою динамічного програмування? У чому полягає сутність властивості спів- оптимальності? Які типи задач можна розв’язувати за допо- могою динамічного програмування? Поясніть на прикладі сутність динамічного програмування. 1 2 3 4 Завдання для самостійного виконання Визначте, скількома способами можна спла- тити суму 60 грн купюрами номіналом 5, 10, 20 і  50 грн. Виконайте програму, зображену на рис. 9.3, для отримання суми перших 15 чисел Фібо- наччі. Доведіть, що отримано правильний результат. Модифікуйте програму, наведену на рис.  9.2, таким чином, щоб обчислювалася тільки сума перших 12 чисел Фібоначчі. Модифікуйте програму, наведену на рис.  9.4, таким чином, щоб вона підрахову- вала всі варіанти повернення здачі 17 ко- пійок монетами 2, 5  і 10 копійок і  кількість варіантів. У корпорації три компанії. На початку року між компаніями розподіляються 200  млн грн інвестицій у  сумі, кратній 50 млн. У  таблиці показано приріст продукції (у  млн грн) залежно від розміру інвестицій. Сума інвестицій Приріст продукції від компаній 1-ша компанія 2-га компанія 3-тя компанія 0 9 14 12 50 12 19 16 100 15 21 20 150 20 24 25 200 24 29 27 Розподіліть між компаніями 200 млн грн так, щоб отримати максимальний загальний прибуток. Поле розбито на клітинки з  n стовпцями і  m  рядками. По полю можна крокувати на одну клітинку вправо і  вгору. Розробіть програму обчислення кількості способів потрапляння з  нижнього лівого кута в  пра- вий верхній. 1 Виконайте програму, зображену на рис. 9.3,2 3 4 5 6
  • 118. 118 9.2. Жадібні алгоритми Пригадайте випадки, коли вам доводилося з  множини можливих варіантів вибирати той, який є  найкращим у даний момент, не хвилюючись про те, що цей варіант може не призвести до найкращого результату після завершення всього процесу. Жадібні алгоритми — це загальна назва методів розв’язу- вання задач оптимізації, при яких на кожному етапі прийма- ється локально оптимальне рішення. Жадібний алгоритм — це метод розв’язування оптиміза- ційних задач, заснований на тому, що процес прийняття рішення можна розбити на елементарні кроки, на кож- ному з яких приймається окреме рішення. Ці алгоритми застосовують до тих задач, які можна розби- ти на окремі прості підзадачі аналогічно тому, як це робиться в алгоритмах динамічного програмування. У жадібних алгоритмах на кожному етапі з множини можливих варіантів вибирається той, який є найкращим у даний момент, із надією, що саме він забезпечить опти- мальне розв’язання всієї задачі. Вибір варіанта на кожному етапі повинен відповідати таким вимогам: бути допустимим (відповідати обмеженням задачі); бути оптимальним (найкра- щим із усіх можливих на даному етапі); бути остаточним (не можна змінити цей вибір на наступних етапах). Пояснимо сутність жадібних алгоритмів на прикладі 1. Приклад 1. Банкомат може видавати купю- ри номіналом 500, 200, 100, 50 і 20 грн. Яки- ми купюрами і в якій кількості повинен ви- дати банкомат суму 2340 грн, щоб кількість купюр була мінімальною? Відповідно до методу жадібних алгорит- мів програма обслуговування банкомата на кожному кроці повинна вибирати купюри максимального номіналу з числа тих, які можна вибрати, щоб їх загальна кількість була мінімальною. Для цієї суми спочат- ку слід вибрати чотири купюри номіналом 500 грн, потім одну купюру номіналом 200 грн, далі одну купюру номіналом 100 грн і, нарешті, дві купюри номіналом 20 грн. Усього 8 купюр. Наведемо тепер приклад 2, який підтверджує, що жадібні алгоритми не завжди забезпечують оптимальне розв’язання задачі в цілому. Приклад 2. Борошно міститься в контейне- рах масою 110, 50 і 10 кг. Виберемо мінімальну кількість контейнерів загальною масою 150 кг. Логічно звяти 3 контейнери масою 50 кг. За жадібним алгоритмом спочатку по- трібно взяти контейнер максимальної маси (110 кг), на наступних етапах — 4 контейне- ри масою 10 кг, тобто 5 контейнерів. Незважаючи на те що такий підхід не завжди забезпечує оптимальне розв’язання задачі в  цілому, в  багатьох випадках досягаються результати, близькі до оптимальних.
  • 119. 1199.2. Жадібні алгоритми Розглянемо приклад 3 про пакування рюкзака. Існують різні інтерпретації цієї задачі, але її загальна сутність одна. Є декілька типів об’єктів і рюкзак, у який можна покласти певну кількість об’єктів одного або різних типів. Відома маса і ціна кожного типу об’єктів. Необхідно покласти в рюкзак такі типи об’єктів певної кількості, щоб їх маса не переви- щувала допустиму масу рюкзака, а ціна об’єктів була макси- мальною. Приклад 3. Одним із найпростіших алго- ритмів для розв’язування цієї задачі є жадіб- ний алгоритм. Використаємо ідентифікатори для таких початкових даних: n — кількість об’єктів, які можна поклас- ти в рюкзак; gruz — допустима маса рюкзака; nazva — список типів об’єктів, які можна покласти в рюкзак; zina — список цін об’єктів; vaga — список ваги об’єктів. Будемо вважати, що в наявності є об’єкти, з яких можна покласти в рюкзак рівно таку вагу, на яку розрахований рюкзак. Крім перелічених, використаємо в алгорит- мі такі ідентифікатори: zina_1 — список цін одиниць об’єктів (на- приклад, одного кг); kilkist — список кількостей об’єктів кожно- го типу, покладених у рюкзак; Masa — поточне значення маси об’єктів у рюкзаку; Sum — ціна об’єктів, покладених у рюкзак. Існують різні підходи до розроблення ал- горитмів упакування рюкзака. Будемо дотри- муватися такого. Крок 1 Увести значення змінних n, gruz і  списків nazva, zina, vaga і  сформувати порожній список kilkist довжиною n. Крок 2 Обчислити значення списку zina_1 за допомогою виразу zina_1[i] =  zina[i]/vaga[i]. Крок 3 Упорядкувати список zina_1 у  порядку зменшення значень його елементів і  відпо- відно до цього упорядкувати елементи списків nazva, zina, vaga. Крок 4 i = 0; Masa =  0; Sum =  0. Крок 5 Доти, доки Masagruz, виконувати п. 6, інакше  —  п. 7. Крок 6 kilkist[i] =  kilkist[i]+1; Masa =  Masa+vaga[i]; Sum =  Sum+zina[i]. Крок 7 Якщо Masa == gruz, то п. 11, інакше  —  п. 8. Крок 8 Відновити значення змінної Sum і  списків kilkist, Masa і  Sum. Крок 9 i = i + 1. Крок 10 Якщо i  = n, то п. 5, інакше  —  п. 11. Крок 11 Вивести значення змінної Sum і  списків nazva і  kilkist. Ідея жадібного алгоритму поля- гає в тому, щоб класти до рюк- зака найефективніші предмети, аж до його заповнення. Для розв’язання цієї задачі можна застосувати й засоби динаміч- ного програмування.
  • 120. 120 Розділ 2 Програму реалізації алгоритму зображено на рис. 9.6. Рис. 9.6. Програма реалізації алгоритму про пакування рюкзака На рис. 9.7 наведено варіант введення даних і отриманий результат.
  • 121. 1219.2. Жадібні алгоритми... Результат виконання програми: Рис. 9.7. Варіант введення даних і отриманий результат Запитання для перевірки знань До яких задач можна застосовувати жадібні алгоритми? Чи завжди жадібні алгоритми дозволяють отримати оптимальне розв’язання? У чому полягає сутність жадібних алгорит- мів? Наведіть приклад задачі, для якої жадібні алгоритми не забезпечують оптимальне розв’язання. Поясніть сутність жадібних алгоритмів на конкретному прикладі. 1 2 3 4 5 Завдання для самостійного виконання Змініть значення деяких початкових даних, які вводилися у  процесі виконання програ- ми, зображеної на рис.  9.6, і  доведіть, що отримано правильний результат. Визначте, як сплатити суму 91 грн купюра- ми номіналом 1, 2, 5, 10, 25 і 50 грн так, щоб загальна кількість купюр була мінімальною. Сформулюйте самостійно таку умову задачі, щоб її можна було реалізувати програмою, зображеною на рис.  9.7. Виконайте цю про- граму для власних даних і  доведіть, що отримано правильні результати. Працівнику запропонували за відведе- ний час виконати декілька видів робіт. Які роботи слід виконати працівникові, щоб отримати максимальний прибуток, якщо відомі час їх виконання і  вартість цих робіт? У палаці «Україна» в  Києві протягом трьох годин триває виступ творчих колективів. Заяви надійшли від n колективів з указаним часом свого виступу. Розробіть програму визначення максимальної кількості колек- тивів, які можуть взяти участь у  заході, та їхні назви. 1 2 3 4 5 Жадібні алгоритми можуть бути досить ефективними для простих задач. Для багатьох інших задач вони не лише не видають оптимального розв’язку, а  й можуть видати один із найгірших варіантів. Жадібні алгоритми ефективні у  випадку, якщо послідовність локально оптимальних виборів забезпечує глобальне оптимальне рішення.
  • 122. 122 10. Основи обчислювальної геометрії 10.1. Базові поняття Пригадайте, які геометричні фігури ви використовували найчастіше під час вивчення геометрії. У таких сферах, як робототехніка, системи автоматизова- ного програмування, комп’ютерна графіка тощо, застосову- ються алгоритими, що описуються в термінах геометрії. Обчислювальна геометрія  —  це галузь комп’ютерних наук, присвячена вивченню алгоритмів розв’язування геометричних задач. У процесі розв’язування задач обчислювальної геометрії використовуються базові геометричні об’єкти: точка, відрізок, пряма, вектор, многокутник, коло. Приклади геометричних задач: пошук координат точки перетину двох прямих; перевірка приналежності точки від- різку; перевірка приналежності точки многокутнику; обчис- лення площі многокутника; побудова опуклої оболонки. Точка на площині в декартовій системі координат задаєть- ся двома числами — координатами x і y, а у тривимірному просторі — трьома координатами (x´, y´, z´). Відрізок можна задати, вказавши координати його початку й кінця, пря- му — вказавши координати двох її точок. Оскільки в обчислювальній геометрії вектор є одним з ос- новних «інструментів», згадаємо основні відомості про нього, що вивчалися на уроках геометрії. Вектор — це напрямлений відрізок AB, де A — точка початку (її ще називають точкою прикладання), B — точка кінця відрізку. Вектор позначають двома великими латинськими буквами зі стрілкою ( )AB або рискою зверху AB( ). Вектор також по- значають однією буквою (a), або буквою зі стрілкою ( )a , або буквою з рискою зверху ( )a . Приклади зображення векторів та їх позначення наведено на рис. 10.1. Вектор характеризується довжиною і напрямком. Кожний вектор має проекцію на відповідну вісь. Проек- цією вектора на вісь називають відрізок, кінцями якого є проекції точок початку й кінця вектора на задану вісь. Довжина проекції — довжина цього відрізка. Довжину про- екції інколи також називають проекцією. Проекція має знак «плюс», якщо напрямок від проекції початку до проекції кін- ця вектора збігається з напрямком осі, і знак «мінус», якщо ці напрямки протилежні. Проекція дорівнює довжині початкового вектора, помноже- ній на косинус кута між цим вектором і віссю (рис. 10.2). Нехай точка A в декартовій системі координат має коорди- нати x y1 1,( ), а точка B — координати x y2 2,( ). Координатами Термін «вектор» увів ірландський математик Вільям Ровен Гамільтон у  середині XIX ст. Він також описав деякі операції векторного аналізу. Рис. 10.1. Зображення векторів та їх позначення Теорію векторів використав шотландський учений Джеймс Максвелл у  працях з  електромагнетизму. У  1903  році англійський учений Олівер Гевісайд надав векторному аналізу сучасний вигляд.
  • 123. 12310.1. Базові поняття... вектора ( )AB називають пару чисел x x y y2 1 2 1− −( ), . Якщо вектор має координати x y,( ) і прикладений до точки x y1 1,( ), то можна обчислити координати його кінця x y2 2,( ) так: x x x2 1= + , y y y2 1= + . Довжиною, або модулем, вектора називають відстань між точками його кінця і початку. Довжина обчислюється за формулою x x y y2 1 2 2 1 2 −( ) + −( ) . Для позначення довжини вектора часто використовують символи модуля: a . Вектори бувають на колінеарні й неколінеарні. Колінеарні вектори — це вектори, що лежать на одній пря- мій або паралельних прямих (рис. 10.3). Колінеарні вектори, у свою чергу, поділяють на дві групи: однаково напрямлені (співнапрямлені) і протилежно напрямлені. На рис. 10.3 вектори a і b однаково напрямлені, що по- значається так: a b↑↑ , а вектори a і d протилежно напрям- лені, що позначаються так: a d↑↓ . Два вектори називають рівними, якщо вони співнапрямлені і мають однакову довжину. Два колінеарні вектори, що мають однакові довжини, але протилежні напрямки, називають про- тилежними. Вектор, початок і кінець якого збігаються, на- зивають нульовим і позначають 0. Одиночним вектором, або ортом, називають вектор, довжина якого дорівнює одиниці. Орт позначають буквою e, а його модуль:  e =1. Запитання для перевірки знань Наведіть приклади задач обчислювальної геометрії. Які базові об’єкти використовуються в  об- числювальній геометрії? Як можна задати пряму на площині? Що таке вектор? Як його позначають? Які вектори називають колінеарними; рів- ними? Що називають проекцією вектора на вісь? Як визначити координати вектора? Як визначити модуль вектора? 1 2 3 4 5 6 7 8 Завдання для самостійного виконання Точка A має координати 2 4;( ), а точка В — координати 5 10;( ). Наведіть приклади та- ких координат точок C і D, щоб вектор CD був колінеарним вектору AB . Точка A має координати −( )1 4; , а точ- ка  B  — координати 5 9;( ). Наведіть прикла- ди координат точок C і D, щоб вектор  CD був рівним вектору AB. Дано вектор  c ,  c =10, кут між вектором і віссю становить 60°. Визначте проекцію вектора  c на цю вісь. Дано вектор  a з координатами початку 3 4;( ) і кінця 8 6;( ) і вектор  b з координа- тами початку 1 7;( ) і кінця 5 9;( ). Визначте, чи є ці вектори колінеарними. Точка A  має координати −( )2 4; , точка B  — координати 1 6;( ). Визначте довжину векто- ра BA. Вектор  a має координати 3 7;( ) і  прикла- дений до точки 1 4;( ). Обчисліть координа- ти точки кінця вектора. 1 2 3 4 5 6 Рис. 10.2. Проекція вектора на вісь X Рис. 10.3. Колінеарні вектори
  • 124. 124 10.2. Операції над векторами З якою метою ви використовували вектори під час вивчення фізики? Чи доводилося вам використовувати вектори у про- цесі вивчення інших навчальних дисциплін? Над векторами можна виконувати операції додавання, від- німання, множення на число та ін. Додавання та віднімання векторів. Якщо вектори задані координатами на площині:  a a ax y= ( ); і  b b bx y= ( ); , то їхня сума обчислюється за формулою   a b a b a bx x y y+ = + +( ); , а різ- ниця — за формулою   a b a b a bx x y y− = − −( ); . Для додавання векторів  a і  b за правилом трикутника слід перемістити вектор  b паралельно самому собі так, щоб його початок збігся з кінцем вектора  a, тоді їхньою сумою буде вектор, початок якого збігається з початком вектора  a, а кінець — з кінцем вектора  b (рис. 10.4, a). Для додавання вектора за правилом паралелограма один з векторів переносять паралельно собі так, щоб початки векторів збіглися. Потім на їх основі будують паралелограм і проводять його діагональ (рис. 10.4, б). Різницею векторів  a і  b є сума вектора  a з вектором, протилежним вектору  b . Різницю векторів (рис. 10.4, в) мож- на знайти також за правилом трикутника або паралелограма. У цьому випадку напрям вектора  b змінюють на протилеж- ний, потім отриманий вектор переносять паралельно самому собі в кінець вектора  a. Початок вектора  a з’єднують із кін- цем вектора  b. Приклад 1. Дано вектори  a і  b і кут між ними 90°, модулі векторів  a = 3 і  b = 4 . Тоді    c a b= + = + =9 16 5. Множення вектора на число. У результаті множення век- тора  a на число k кожна координата вектора множиться на число k. У результаті отримаємо вектор завдовжки k a⋅  . Його напрям збігається з напрямом  a , якщо k 0 , і має про- тилежний напрям, якщо k 0 (приклад 2). Скалярний добуток. Скалярним добутком векторів  a і  b є число, що дорівнює добутку їх довжин на косинус кута між ними. Тобто скалярний добуток визначається за формулою     a b a b⋅ = ⋅ cosα, де α — кут між даними векторами (при- клад 3). Векторний добуток. Векторним добутком вектора  a на век- тор  b називаєтья вектор  c,    c a b= ⋅ ⋅sinα, де α — кут між векторами  a і  b. Отже, модуль векторного добутку векторів  a і  b чисельно дорівнює площі паралелограма (рис. 10.5), побудованого на цих векторах. Якщо вектори безпосередньо зображені на площині, то додавання двох векторів можна виконати за допомогою правил трикутника і  паралелограма. Приклад 2. Дано вектор  a = −( )5 3; . Тоді вектор 2 2 5 3 2 5 2 3 10 6  a = −( )= ⋅ ⋅ −( )( )= −( ); ; ; 2 3 10 6⋅ −( ))= −( ); .   a b a b a bx x y y+ = + +( );   a b a b a bx x y y+ = + +( );   a b a b a bx x y y+ = + +( ); а   a b a b a bx x y y+ = + +( );   a b a b a bx x y y+ = + +( );   a b a b a bx x y y+ = + +( ); б   a b a b a bx x y y+ = + +( );  a b a b a bx x y y− = − −( );   a b a b a bx x y y− = − −( ); в Рис. 10.4. Додавання і віднімання векторів
  • 125. 12510.2. Операції над ... Векторний добуток найчастіше позначається так:    c a b= × , або у квадратних дужках:    c a b=  , ,    c a b= ×[ ]. Під час виконання добутку вектора  b на вектор  a знак вектора  c змінюється на протилежний. Вектор  c перпендикулярний (ортогональний) до площини, у якій лежать вектори  a і  b, і напрямлений так, що поворот від вектора  a до вектора  b здійснюється проти ходу годин- никової стрілки, якщо дивитися з кінця вектора  c. У такому випадку говорять, що трійка векторів  a ,  b і  c — права. Для визначення напрямку вектора  c на практиці кори- стуються правилом правої руки. Для цього вказівний палець слід направити у напрямку вектора  a , а середній — у на- прямку вектора  b (рис. 10.6). Якщо великий палець направ- лений вгору, то це означає, що вектор направлений від нас, а якщо вниз, то до нас (приклад 4). Приклад 4. Нехай довжина вектора  a дорівнює 5, довжина вектора  b — 10, а кут між ними становить 30° Тоді довжина вектора  c = ⋅ ⋅ °( )=5 10 30 25sin . Його напрям можна визначи- ти за правилом правої руки. Векторний добуток довільного вектора на нульовий вектор дорівнює нульовому вектору. Векторний добуток двох коліне- арних векторів також дорівнює нульовому вектору. Розглянемо тепер знаходження векторного добутку в коор- динатах. Нехай дано два вектори:  a a a a1 2 3, ,( ) і  b b b b1 2 3, ,( ). Коор- динати векторного добутку  c на практиці часто обчислюють за формулою:  c a b a b a b a b a b a b2 3 3 2 3 1 1 3 1 2 2 1⋅ − ⋅ ⋅ − ⋅ ⋅ − ⋅( ); ; (при- клад 5). Приклад 5. Відомі координати двох векторів:  a − −( )1 2 3; ; і  b 0 4 1; ;−( ). Тоді координати векторного добутку є такими:  c 2 1 3 4 3 0 1 1 1 4 2 0⋅ − −( )⋅ −( ) −( )⋅ − −( )⋅ −( )⋅ −( )− ⋅( )=; ;  c −( )10 1 4; ; . Якщо відомі координати вектора  c c c c1 2 3, ,( ), то його дов- жину можна визначити за формулою  c c c c= + +1 2 2 2 3 2 . Дов- жина вектора  c зі знайденими вище координатами дорівнює:  c = −( ) + + =10 1 4 3 13 2 2 2 . Приклад 3. Дано:  a = 4 ,  b a= = °5 30,  b a= = °5 30, , тоді     a b a b⋅ = ⋅ ⋅ ° =cos30 10 3 . Якщо два вектори задані своїми координатами x y1 1;( ) і x y2 2;( ), то   a b x x y y⋅ = +1 2 1 2 . Наприклад, якщо  a = ( )2 5; і  b = −( )3 4; , то   a b⋅ = ⋅ −( )+ ⋅ =2 3 5 4 14 .   a b a b a bx x y y+ = + +( );   a b a b a bx x y y+ = + +( );    c a b= ×    Рис. 10.5. Графічне зображення векторного добутку    c a b= ×       c a b= ×       c a b= ×    Рис. 10.6. Правило правої руки
  • 126. 126 Розділ 2 На рис. 10.7 зображено програму обчислення координат векторного добутку двох векторів та його довжини. Рис. 10.7. Програма обчислення координат і довжини векторного добутку Результат виконання програми наведено зліва. Запитання для перевірки знань Які операції можна виконувати над векторами? Сформулюйте правило додавання двох векторів на площині. Сформулюйте правило віднімання двох векторів на площині. Як виконати в  координатах операцію складання векторів? Сформулюйте правило знаходження скалярного добутку векторів. Що називають векторним добутком? Сформулюйте правило знаходження векторного добутку в  координатах. 1 2 3 4 5 6 7 Завдання для самостійного виконання Знайдіть координати вектора AB , якщо A −( )2 3; , B 2 4; −( ). Скалярний добуток вектора  a на вектор  b дорівнює 2, а  їх модулі:  a = 2,  b = 2 . Знайдіть кут між цими векторами. Обчисліть скалярний добуток векторів a і   b , якщо їхні довжини відповідно дорівнюють 3  і 4, а  кут між ними стано- вить  60°. Знайдіть векторний добуток векторів:  a = ( )6 7 9; ; і   b = ( )8 5 10; ; . Виконайте програму на рис. 10.7 для векто- рів, дані про які наведені в  завданні 4. До- ведіть, що результат отримано правильний. 1 2 3 4 5
  • 127. 127 10.3. Обчислення площі многокутника Які фігури в  геометрії називають многокутниками? При- гадайте, як ви обчислювали площі ромба, прямокутника, ­ паралелограма та інших фігур. Розв’язування багатьох геометричних задач пов’язано з необхідністю обчислення площі многокутника, заданого координатами його вершин. У свою чергу, визначення площі многокутника ґрунтується на обчисленні площі трикутника, для чого зручно користуватися орієнтованим кутом між век- торами, який враховує взаємне розташування векторів. Орієнтованим кутом між векторами  a і  b називають кут, на який слід повернути вектор  a проти ходу годинникової стрілки, щоб він став співнапрямленим з вектором  b. За абсолютним значенням орієнтований кут дорівнює зви- чайному куту між векторами, але він є додатним або від’єм- ним. Орієнтований кут між векторами  a і  b є додатним, якщо обертання від вектора  a до вектора  b здійснюється проти ходу годинникової стрілки, і від’ємним — у протилеж- ному напрямку. Наприклад, на рис. 10.8 орієнтовані кути між векторами  a і  b і між векторами  b і  a за модулем рівні, але перший із них від’ємний, а другий — додатний. Таким чином, величина орієнтованого кута залежить від порядку переліку векторів і може набувати значень від –180° до 180°. Розглянемо тепер поняття орієнтованої площі трикутника. Трикутник називають орієнтованим, якщо зазначено на- прям обходу його контуру. Орієнтованою площею трикутника ABC називають ве- личину, що дорівнює його площі, взятій зі знаком «плюс», якщо обхід сторін трикутника у порядку A–B–C–A здійсню- ється проти ходу годинникової стрілки, і зі знаком «мінус», якщо — за ходом. Наприклад, площа трикутника, зображеного на рис. 10.9, а, при обході його вершин A–B–C–A є додатною, а на рис. 10.9, б, при обході вершим A–С–В–A — від’ємною. Отже, знак орієнто- ваної площі трикутника залежить від порядку обходу вершин. Площу трикутника можна обчислити в такий спосіб. Розглянемо прямокутний трикутник ABC (рис. 10.10). Нехай O — довільна точка на площині трикутника. Площу трикутника ABC можна знайти так: від площі трикутника OBC відняти площі трикутників OAB і OCA. Інакше кажучи, необхідно додати орієнтовані площі трикутників OAB, OBC і  OCA. Це правило діє у випадку будь-якого вибору точки O. Перейдемо тепер до визначення площі многокутника. Для обчислення площі будь-якого многокутника A A1 2   … An   необ- хідно скласти орієнтовані площі трикутників OA A1 2, OA A2 3, …, OA An 1. Орієнтовані кути, що відрізняються на 360°, вважаються рівними. Рис. 10.8. Кут між векторами Рис. 10.9. Варіанти обходу вершин трикутника Рис. 10.10. Приклад для обчислення орієнтованої площі трикутника
  • 128. 128 Розділ 2 Наприклад, для обчислення площі п’ятикутника A A A A A1 2 3 4 5 , зображеного на рис. 10.11, необхідно склас- ти орієнтовані площі трикутників: OA A1 2 , OA A2 3 , OA A3 4 , OA A4 5   OA A5 1 . Площа многокутника буде зі знаком «плюс», якщо обхід вершин A A1 2   … An   многокутника здійснюється проти ходу годинникової стрілки, і зі знаком «мінус», якщо обхід вико- нується за ходом годинникової стрілки. Ця площа називаєть- ся орієнтованою площею многокутника A A1 2   … An . Отже, обчислення площі многокутника фактично звелося до знаходження орієнтованої площі трикутника. Виразимо її в координатах. Орієнтована площа, побудована на векторах  a x y= ( )1 1; і  b x y= ( )2 2; , є площею паралелограма (рис. 10.12). Векторний добуток, виражений через координати векторів, визначають так:   a b x y x y x y x y,  = = −1 1 2 2 1 2 2 1. Площа трикутника дорівнює половині цієї площі: S x y x y= −( ) 1 2 1 2 2 1 . Точку O зручно брати як початок координат. У такому випадку координати векторів, на основі яких обчислюються орієнтовані площі, збігаються з координатами точок. Нехай x y1 1;( ), x y2 2;( ), …, x yN N;( ) — координати вершин заданого многокутника у порядку обходу за або проти ходу годиннико- вої стрілки. Тоді його орієнтована площа S дорівнює: S x y x y x y x y x y x yn n= ⋅ − ⋅( )+ ⋅ − ⋅( )+…+ ⋅ − ⋅( )  1 2 1 2 2 1 2 3 3 2 1 1 . Цю формулу можна записати в такому вигляді: S x y y x y y x y y x y yn n n= −( )+ −( )+ −( )+…+ −( )( )− 1 2 1 2 2 3 1 3 4 2 1 1 . Нагадаємо, що звичайний кут дорівнює модулю орієнто- ваного кута. Відзначимо також, що усі розглянуті питання справедливі для правої системи координат. Але для окре­мих задач зручніше застосовувати ліву систему координат. Наприклад, координати пікселів на екрані монітора пода- ють у лівій системі координат (вісь абсцис напрямлена впра- во, вісь ординат — униз). У випадку вибору таких осей до- датним є кут повороту за ходом годинникової стрілки. З цією поправкою все сказане раніше застосовується і до лівої систе- ми координат. Алгоритм обчислення площі многокутника за вже отрима- ними формулами може бути різним. Зверніть увагу на те, що логіка обчислення першого й останнього членів цього виразу відрізняється від логіки обчислення всіх інших членів. Тому обчислимо окремо перший і останній члени, а всі інші обчис- люватимемо за тією самою схемою. Програму обчислення площі многокутника на основі тако- го підходу зображено на рис. 10.13. У програмі обхід вершин починається з вершини A0   і здійснюється в порядку збіль- шення їх номерів. Рис. 10.11. П’ятикутник A A A A A1 2 3 4 5 Рис. 10.12. Площа паралелограма на двох векторах Величину x y x y1 2 2 1−   називають косим (псевдоска- лярним) добутком векторів  a і  b. Для нього будемо ­ використовувати позначення   a b, ( ), що є скалярною ­ величиною і  має таку власти- вість:     a b b a, ,  = −   .
  • 129. 12910.3. Обчислення площі... Рис. 10.13. Програма обчислення площі многокутника На рис. 10.14 наведено динаміку введення значень коорди- нат вершин правильного шестикутника і результат обчислен- ня його площі: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 х 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 y 0 1 3 4 5 2 Рис. 10.14. Результат виконання програми — многокутник за заданими координатами
  • 130. 130 Розділ 2 Запитання для перевірки знань Поясніть сутність орієнтованого кута. У якому випадку орієнтований кут має до- датне значення? Поясніть сутність орієнтованої площі три- кутника. Що називають орієнтованою площею мно- гокутника? Поясніть порядок обчислення площі много- кутника за допомогою орієнтованих площ трикутників. За якою формулою обчислюють площу многокутника? 1 2 3 4 5 6 Завдання для самостійного виконання Знайдіть площу трикутника, вершини якого мають такі координати: A 1 3; −( ), B 2 2;( ), C −( )5 4; . Обчисліть площу чотирикутника, вершини якого мають координати: A 3 3;( ), B 9 5;( ), C 11 8;( ), D 2 6;( ). Вершини п’ятикутника мають координати: A1 0 6 2 1. ; .( ) , A2 1 8 3 6. ; .( ), A3 2 2 2 3. ; .( ), A4 3 6 2 4. ; .( ), A 3 1 0 5. ; .( ). Обчисліть площу цього п’ятикутника. Виконайте програму, зображену на рис.  10.13, для трикутника, що має верши- ни: A −( )1 2; , B 5 3;( ), C 3 4;( ). Доведіть, що отриманий результат є пра- вильним. Модифікуйте програму, зображену на рис.  10.13, так, щоб значення координат вершин многокутника не вводилися з  кла- віатури, а  їх значення визначалися безпо- середньо всередині програми. Перевірте програму на прикладі прямокутника і  до- ведіть, що вона виконується правильно. Одна з вершин правильного шестикутника лежить у початку системи координат. Роз- робіть програму обчислення площі шести- кутника з  урахуванням цієї обставини. Скористайтеся географічною картою Украї- ни і  визначте, яка фігура утвориться, якщо сполучити відрізками міста: Львів, Чернігів, Полтава, Дніпро, Херсон, Одеса, Чернівці, Львів. Знайдіть площу цієї фігури (рис. 10.15). 1 2 3 4 5 6 7 Донецьк Київ Луцьк Львів Ужгород Хмельницький Чернівці Вінниця Черкаси Кіровоград Миколаїв Херсон Сімферополь Одеса Дніпро ПолтаваТернопіль Івано- Франківськ Рівне Суми Чернігів Харків Луганськ Запоріжжя Житомир Рис. 10.15. Карта України з обласними центрами
  • 131. 131 10.4. Побудова опуклої оболонки Чи доводилося вам використовувати оболонки в  процесі вивчення інших навчальних предметів та в  повсякденному житті? Якщо доводилося, то які типи оболонок ви використовували? На рис. 10.16 подано три варіанти розташування скінчен- ної множини точок. Усі вони розташовані всередині замкненої лінії, або на цій лінії, або є вершинами замкненої ламаної. Кожна з цих ліній не має самоперетинів. Дотична, проведена до кривої на рис. 10.16, а, може пере- тинати її в кількох точках, тому вона не є опуклою, її часто називають просто оболонкою. Криву лінію, наведену на рис. 10.16, б, називають опуклою оболонкою, оскільки будь-яка дотична до цієї лінії більше не перетинає її в жодній точці. Опуклу оболонку, наведену на рис 10.16, в, називають оболонкою мінімальної довжини, або просто мінімальною опуклою оболонкою. Точки множини цієї оболонки лежать або на її вершинах, або на прямих, що сполучають відповід- ні вершини. Далі розглядатимемо тільки мінімальні опуклі оболонки, які стисло називатимемо опуклими оболонками. Отже, опуклою оболонкою скінченної множини точок K на- зивають найменший опуклий многокутник, що містить усі точки множини K, деякі з яких лежать усередині многокут- ника, деякі є його вершинами, а деякі лежать на його сторо- нах. Кожна точка на площині має свої координати. Наприклад, точка p0 має координати x y0 0, точка p1 — координати x y1 1, а точка pi — координати x yi i. Завдання побудови мінімаль- ної опуклої оболонки зводиться до відбору з множини K та- ких точок, що є вершинами многокутника, за умови, що всі інші точки цієї множини лежать або в його середині, або на сторонах многокутника. Існують різні алгоритми побудови мінімальної опуклої обо- лонки, одним із найпростіших є алгоритм Джарвіса. Сутність цього алгоритму така. Крок 1 Із множини точок K  обирається стартова точка, що гарантовано входить до складу вершин опуклої оболонки. Найчастіше вибирають найнижчу праву або ліву точку. На рис.  10.17 найнижчою є  точка p0 . Якби було декілька точок, розташованих на од- ній найменьшій висоті, то вибрали  б  ту, що справа. Рис. 10.17. Точки на площині а б в Рис. 10.16. Варіанти оболонок
  • 132. 132 Розділ 2 Крок 2 Здійснимо побудову опуклої оболонки. Щоб знайти наступну точку від точки p0 , яка буде черговою вершиною оболон- ки, проводимо від неї вправо горизонтальну лінію і  повертаємо її навколо точки p0 проти ходу годинникової стрілки доти, поки вона не торкнеться точки p1   із множини точок K. Відрізок p p0 1   буде ребром опуклої оболонки. Аналогічні дії виконуємо в  точці p1, знаходимо точку p2   і ребро p p1 2 . Цей про- цес продовжується доти, поки не повернемося у  точку p0 . Очевидно, що точка p1   має таку властивість, що всі інші точки лежать ліворуч від вектора p p0 1 . Це означає, що орієнтований кут між вектором p p0 1   і всіма іншими векторами p pi0   невід’ємний для будь-якої точки i з усієї множини точок. Знайдемо точку p1. Для цього слід: – обчислити косий добуток p p p pm0 1 1,  ;  – перевірити умову p p p pm0 1 1 0,    для всіх точок m, де m  — усі точки, крім нульової і  першої. Зрозуміло, що цій умові на рис.  10.17 відповідає тільки точка p1 . Для інших варіантів розміщення точок цій умові може відповідати декілька точок. Це означає, що на векторі p p0 1   може бути розташовано декілька точок. У  такому випадку вибирають ту з  них, для якої довжина вектора p p x x y y0 1 1 0 1 0= − −( );   є  максимальною. Так само слід діяти, якщо вказана умова виконується для інших точок. Якщо умова p p p pm0 1 1 0,    не виконується, то це означає, що точка p1   не може бути вершиною опуклої оболонки і слід перейти до чергової точки p2 . Пояснимо реалізацію алгоритму Джарвіса на прикладі. Приклад. Нехай на площині розміщено 7 точок із такими координатами: Номер точки 0 1 2 3 4 5 6 Координата x 5 3 9 9 13 3 14 Координата y 7 4 6 15 2 2 10 Якщо ці точки нанести на площину, то можна переконати- ся, що права нижня точка розташована на четвертій позиції. Оскільки ця точка є стартовою, то для зручності розроблення програми доцільно поміняти місцями координати цієї точки і точки, розташованої на першій позиції. У результаті будемо мати таке розташування точок: Номер точки 0 1 2 3 4 5 6 Координата x 13 3 9 9 5 3 14 Координата y 2 4 6 15 7 2 10
  • 133. 13310.4. Побудова опуклої... Програму реалізації алгоритму Джарвіса зображено на рис. 10.18. Рис. 10.18. Програма реалізації алгоритму Джарвіса Результат виконання програми:
  • 134. 134 Розділ 2 Запитання для перевірки знань Які оболонки називають опуклими? Які опуклі оболонки називають мінімальними? Накресліть мінімальну опуклу оболонку. Яку точку вибирають, якщо умові «косий добуток» відповідають декілька векторів? Сформулюйте сутність алгоритму Джарвіса. 1 2 3 4 5 Завдання для самостійного виконання Побудуйте мінімальну опуклу оболонку для точок із  такими координатами: X 2 3 4 5 5 7 10 Y 5 7 2 6 5 1 8 Скористайтеся географічною картою Украї- ни і  зобразіть точками у  прямокутній сис- темі координат міста: Київ, Харків, Львів, Одеса, Черкаси, Житомир, Херсон, Запоріж- жя, Полтава, Чернігів, Луцьк, Ужгород. Побу- дуйте на основі цих міст мінімальну опуклу оболонку. Координати яких міст не розта- шовані на ребрах і  вершинах оболонки? Виконайте програму, зображену на рис.  10.16, для власного набору точок. До- ведіть, що програма виконана правильно. Модифікуйте програму, зображену на рис.  10.16, так, щоб обхід вершин опуклої оболонки починався з верхньої лівої точки. На площині в  прямокутній системі коорди- нат розташовано n  точок (n4), з  відомими координатами. Чотири з  цих точок є  вер- шинами квадрата, одна зі сторін якого паралельна осі абсцис. Розробіть програму визначення координат точок, які містяться всередині квадрата. 1 2 3 4 5 Тест 5 Тест 6 Тест 7 Тест 8 Тест 9 Тест 10 Тестові завдання з  автоматичною перевіркою результату на  сайті interactive.ranok.com.ua
  • 135. 11.1. Основні тренди у веб-дизайні Якими сайтами ви користуєтесь? Що вас у  них приваблює? Успіх сайта значною мірою залежить від якості дизайну, отже, дуже важливо стежити за трендом. Потрібно розумі- ти, які інструменти ввійшли в моду в сфері сайтобудування, а які вже вважаються застарілими і від яких варто відмови- тися. Адже тренди у веб-дизайні постійно змінюються, удо- сконалюються, модернізуються. Кількість користувачів мережі Інтернет постійно збільшу- ється (рис. 11.1). Упродовж останніх років незмінними зали- шаються дві тенденції: необхідність швидкого завантаження сайтів та орієнтація на мобільні сайти. Швидкість завантаження сайтів. Під час завантаження сайта саме швидкість має вирішальне значення. У ході до- сліджень доведено, що достатньо трьох секунд для того, щоб справити враження. Це стосується й сайта: якщо за цей час він так і не завантажиться, велика ймовірність, що відвіду- вач далі не чекатиме. Орієнтація на мобільні сайти. 85% користувачів впевнені, що на смартфоні сайт повинен виглядати не гірше (а то й кра- ще), ніж на моніторі стаціонарного комп’ютера чи ноутбука. Рис. 11.1. Статистичні дані користування Інтернетом у 2019 році за даними Аналітичної агенції We Are Social і SMM-платформи Hootsuite Далі розглянемо напрями, які на початок 2019 року є най- більш популярними за версіями інтернет-журналів AWWWARD і Designmodo. Щодня аудиторія Інтернету збільшується на 1 млн нових користувачів. Усе більше користувачів для серфінгу Інтернетом використовують саме смартфони. Тренд (від англ. trend — напрям, тенденція) — можливий (ймовірний) вектор розвитку подій стосовно якогось проміжку часу. РозділРозділРозділРозділРозділРозділРозділРозділ 3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ3. ВЕБ-ТЕХНОЛОГІЇ
  • 136. 136 Розділ 3 Загальна кількість осіб, які систематично відвідують різ- номанітні сайти, невпинно зростає. Розглянемо особливості, що зазвичай відрізняють популярні сайти. • Візуалізація даних — інфографіка сприймається як ча- стина дизайну. Візуалізація даних є цікавим і наочним способом подання великих обсягів інформації. Цей формат є дуже популярним серед користувачів, адже його можна застосовувати всюди: від чисел і карт до склад- них алгоритмів. Рис. 11.1 є яскравим прикладом подібної ін- фографіки. • Персоналізація сайтів — найуспішнішими стануть сай- ти, орієнтовані на користувача, тобто ті, які надають ін- формацію з урахуванням статі, віку і навіть особистих уподобань користувача. Відповідно електронна комерція стане ще більш витонченою. • Зростання ролі типографіки — зараз у тренді незвичай- ні шрифти, різноманітні художні елементи, креативні прийоми на кшталт складання текстів з «газетних ви- різок». З’явився термін «вінтажна типографіка» (стиль старовинної типографії). Мобільний перегляд впевнено випереджає десктопний, і за- гальний дизайн сайтів стає все більш зручним для пальців. Все частіше доведеться стикатися з навігацією, пристосова- ною до великого пальця. Так, меню «гамбургер» (рис. 11.2), яке традиційно розташовується нагорі сайтів, буде перенесе- но в низ мобільних екранів. Серед веб-дизайнерів набуває популярності використання шрифтів із зарубками (serif) (рис. 11.3), заокруглених плит і текстових елементів, які здаються більш старими. Свого часу вважалося, що більш читабельними на екранах є шрифти без зарубок (рис. 11.4). Проте завдяки еволюції девай- сів вибір шрифтів перестає бути проблемою. Набувають популяр- ності так звані варіативні шрифти. Змінні літери, які поступово збільшуються і зменшуються, привабливі для користувачів. • Пріоритетність відео-контенту — на YouTube щодня пе- реглядають близько 500 млн годин відео. При цьому передбачається, що в 2019 році на призначе- ний для користувача контент припадатиме 80% усього інтер- нет-трафіку. На лідируючі позиції серед інших компонентів веб-дизайну вийдуть повноекранні відео, оскільки вони є ін- формативними та зручними. • Синемаграфіка — ці статичні картинки містять один анімований (динамічний) елемент. Наприклад, це може бути статична композиція з паруючою чашкою кави. Таке поєднання фотографії та анімації є особливо приваб- ливим з точки зору маркетологів. • Геометричні форми (рис. 11.5) — використання у веб-ди- зайні різних композицій геометричних форм було запо- чатковано в 2016 році, і, за прогнозами, у 2019-му лише набиратиме популярності. • 3D-графіка (рис. 11.6) — актуальний тренд, який можна назвати природною еволюцією плоского дизайну. Рис. 11.3. Приклад шрифтів із зарубками Рис. 11.2. Приклад меню гамбургер Рис. 11.4. Приклад шрифтів без зарубок Джош Кларк, фахівець у галузі мобільного дизайну, «дизайнер взаємодії», як він себе називає, який вдало поєднує ергономіку та  психологію мобільного дизайну, у книзі «Проектування для дотику» (Josh Clark, Designing for Touch) досліджує, як користувачі тримають свої мобільні телефони та як їхні рухи мають оброблятися в процесі роботи з сайтом.
  • 137. 13711.1. Основні тренди... Тривимірні візуалізації забезпечують оновлення такого ди- зайну. Результатом є поєднання 3D-реалістичних і плоских інтерфейсів, які є складними та візуально цікавими. Вони «чіпляють» і привертають пильну увагу користувача. Рис. 11.5. Використання геометричних форм у веб-дизайні Рис. 11.6. Приклад тривимірної графіки Яскраві кольори — це тренд, який ніколи не втрачає власну актуальність. Використання градієнту є багатофункціональ- ною кольоровою тенденцією, що працює в дизайну будь-якого типу. Це може бути цікавим способом розбити елементи тек- сту або виділити певний контент, або створити неординарний фон для розміщення продукту. З точки зору колористики за- стосування градієнтів (рис. 11.7) є чудовою ідеєю. Фон сторін- ки, у створенні якого задіяний градієнт, викликає враження унікальності і свіжості. Застосування розділеного екрана (спліт-екрана). Ми не­ одноразово наголошували, що дизайн веб-сайтів має орієнту- ватися на мобільних користувачів. Відповідно з’являються ша- блони розділених екранів. Естетичний поділ екрана (насампе- ред за рахунок кольору) передбачає, що сайт, призначений для перегляду на великому моніторі, розподілено на дві панелі, які згортаються у вертикальні блоки на менших пристроях. Нині все більшої популярності набуває візуальний пошук. Його дозволяють використовувати Snapchat, Pinterest (соціальний фото-сервіс), Lens, AliExpress і  Google Lens. Піонером у  візуальному пошуку був Amazon із його функцією Flow. У 2014 році він використовував розпізнавання зображень для пошуку товару. У вересні 2018 року Snapchat (мультимедійний мобільний додаток обміну фото та відео) у співробітництві з Amazon оголосив про розробку нової функції. Вона дозволяє користувачеві «сканувати» штрих-коди за допомогою камери. Google Lens — застосунок для визначення об'єктів в  об'єктиві камери. Він може виділяти назви в тексті і навіть телефони, відразу дозволяючи зателефонувати за вказаним номером. Він розпізнає більш ніж 1  млрд об’єктів Рис. 11.7. Приклад використання градієнта
  • 138. 138 Розділ 3 Це простий спосіб адаптивного подання контенту (див. мате- ріал §11.10). Переважна більшість веб-дизайнерів переходять на асиметричне розбиття для змісту. Подібне розбиття екрану передбачає певний взаємозв’язок контенту — він доповнює або контрастує. Популярною є схе- ма, коли під час наведення миші на одну частину сторінки затінюється решта, що дає змогу фокусуватися на вибраному (рис. 11.8). • Поширення використання штучного інтелекту. Штучний інтелект так чи інакше вже використовують Amazon, Netflix та ін. Насамперед це стосується чат-ботів, які на- дають потрібну інформацію, наприклад, під час обслуго- вування клієнтів (рис. 11.9). Із зростанням кількості користувачів, які використовують смарт-пристрої у своїх будинках, і смартфонів для управлін- ня цими пристроями переважна більшість власників надає перевагу голосовим командам. Як наслідок зростає роль го- лосового інтерфейсу, налаштованого власником за допомогою ключових слів і відповідних дій. Голосові інтерфейси базуються на «читанні» веб-сайтів для отримання інформації та даних. Таким чином, все біль- ше уваги приділяється розробці сайтів, здатних взаємодіяти з голосовими інтерфейсами. Рис. 11.9. Приклад створення чат-боту засобами IBM Watson Assistans Запитання для перевірки знань Що таке чат-бот? Де використовують чат-боти? Що таке синематографіка? Наведіть приклади використання штучного інтелекту в  сучасних онлайн-платформах. У чому перевага розподілених екранів? Знайдіть в  Інтернеті статистику за 2017 та 2018 роки, аналогічну наведеній на рис.11.1. Яку тенденцію ви можете простежити? Які, на вашу думку, тренди будуть актуаль- ними в  найближчому майбутньому? 1 2 3 4 5 6 Рис. 11.8. Cпліт-екран Чат-бот (англ. Chatbot)  — комп’ютерна програма, розроблена на основі нейромереж та технологій машинного навчання, яка веде розмову за допомогою слухових або текстових методів. Програма імітує розмову з  людиною в  Інтернеті, саме тому цей сервіс найкраще зарекомендував себе в  месенджерах (Facebook Messenger, Telegram тощо).
  • 139. 139 11.2. Види сайтів та цільова аудиторія Зробіть невеличке опитування, з’ясуйте, які сайти користуються найбільшою популярністю серед ваших друзів. У березні 2019 року Всесвітня павутина відсвяткувала своє тридцятиріччя. Тім Бернерс Лі, один з головних її розробни- ків, запропонував перший веб-сервер, перший браузер (більш детально в § 11.7) і редактор (the «WorldWideWeb.app.»). Нара- зі кількість сайтів перевищує півтора мільярда і продовжує невпинно зростати. Щосекунди у світі з’являються два сайти (рис. 11.10). Ознайомимося з класифікацією сайтів (рис. 11.11). Інформаційні сайти є одними з найбільш популярних у мережі Інтернет і призначені для донесення до користувача будь-якої інформації. До інформаційних сайтів відносять тематичні інформа- ційні, новинні та блоги. Тематичні інформаційні сайти — ресурси, в яких прак- тично всі сторінки присвячені одній певній проблематиці або темі, у свою чергу різнотематичні сайти охоплюють широке коло інформаційної спрямованості і можуть висвітлювати ве- лику кількість тематик і напрямків. Новинні сайти виконують дуже важливе завдання — вони повинні донести до користувача різні новини, що відбували- ся, відбудуться чи відбуваються в цей момент. Такі сайти можуть спеціалізуватись на одній певній тематиці або розпо- відати інтернет-спільноті про новини з різних життєвих сфер людини. Блоги зустрічаються у Всесвітній павутині досить часто, рівень їхньої популярності стає дедалі вищим. Як і новинні сайти, блоги призначені для того, щоб донести інтернет-спіль- ноті ту чи іншу інформацію, але з однією істотною відмінні- стю: автор описує свою особисту думку про те, що відбува- ється. Умовно блоги діляться на дві категорії: особисті та кор- поративні, кожна з  яких виконує певну функцію. Особисті блоги — категорія сайтів, у яку входять ресурси, створені окремими користувачами, з метою донести широко- му колу громадськості думку автора з певної теми. Корпоративні блоги зазвичай створюються певними ком- паніями як додатковий ресурс, який розкручує бренд, і часто є доповненням до комерційного або корпоративного сайта. Залежно від того, яку зі згаданих проблем має вирішувати корпоративний ресурс, сайти поділяють на іміджеві та інфор- маційні. Іміджевий корпоративний сайт виконує одну з най- важливіших функцій для компанії — рекламну. На ньому Дізнатись кількість існуючих сайтів можна завдяки проекту Internet Live Stats (http://www. internetlivestats.com/total- number-of-websites/). Рис. 11.10. Кількість сайтів на сьогодні Інформаційні сайти Сайти-візитки та сайти портфоліо Комерційні сайти Соціальні проекти Освітні ресурси Розважальні портали Веб-сервіси Сайти Рис. 11.11. Класифікація сайтів Корпоративні блоги створюються організаціями або компаніями для виконання одного з  двох певних завдань: зміцнення зв’язку між філіями та відділеннями або підвищення іміджу в  очах потенційних та  існуючих клієнтів.
  • 140. 140 Розділ 3 зазвичай описується історія підприємства, компанії або тор- гової марки, надаються докладні поточні відомості, контакт­ на інформація, містяться відомості про вироблювані і розпов- сюджувані товари, про надавані послуги. Інформаційний кор- поративний сайт виконує не менш значущі функції — ав- томатизація та зміцнення зв’язку між відділами та філіями, обіг документів, управління персоналом тощо. Сайти-портфоліо і сайти-візитки сьогодні все частіше ство- рюються приватними особами, особливо фрілансерами, які намагаються привернути увагу нових замовників і клієнтів, розрекламувавши свою роботу і надавши результат її вико- нання. Сайти-візитки призначені для того, щоб коротко подати ін- формацію про свого власника широкому колу користувачів. Такі сайти налічують більше ніж 20 сторінок. Сайти-портфоліо призначені привертати увагу широкої цільової аудиторії шляхом рекламування роботи, виконаної компанією, щоб клієнт зміг вирішити, чи потрібно користу- ватися послугами цієї компанії. Комерційні сайти — одна з найбільш поширених катего- рій сайтів. Їх основне призначення — продаж товарів інтер- нет-користувачам. Комерційні сайти поділяють на кілька підкатегорій, най- більш поширеними з яких є сайт-вітрина, промо-сайт, ін- тернет-магазин. Сайти-вітрини, або посадкові сторінки (landing page) — сайти, основним призначенням яких є не продаж готової про- дукції, а її реклама. Найбільшого поширення вони отримали серед компаній і підприємств, які виробляють товари. Промо-сайти — інтернет-ресурси, на яких рекламують певні послуги або товари, зупиняючи особливу увагу на їх- ніх перевагах. Вони характеризуються досить простою струк- турою, невеликим обсягом (до 10 сторінок) і нетривалим тер- міном існування. На сторінках промо-сайта містяться різні графічні матері- али, контактні дані компанії тощо. Якщо необхідно провести масштабну компанію певного товару — промо-сайт стане чу- довим помічником. Інтернет-магазини призначені для продажу товарів різних категорій у мережі в режимі онлайн. Відвідавши такий сайт, кожен користувач Всесвітньої павутини може вибрати товар що його цікавить, дізнатися про нього докладну інформацію і, в разі необхідності, здійснити замовлення. Дуже часто компанії пропонують користувачам усі свої лінійки товарів на одному сайті. Значно рідше створюються кілька ресурсів, на яких представлено одну певну категорію поширюваної продукції. Соціальні проекти включають форуми, спеціалізовані со- ціальні мережі, мережі загальної спрямованості, сайти-спіль- ноти та ін. На іміджевих сайтах можуть публікуватися різні новини, інформація про акції, знижки  — все те, що характеризує компанію перед клієнтом. Такі сайти відрізняються оригінальним ексклюзивним дизайном, поєднанням нестандартних елементів оформлення і  рішень. Пересічні користувачі Інтернету зазвичай не мають відкритого доступу до інформаційного корпоративного сайта, оскільки він призначений виключно для співробітників однієї організації. За  допомогою сайта-вітрини неможливо здійснити операцію купівлі-продажу, оскільки він лише надає докладну інформацію про товар. Але іноді, на них зазначаються місця, де можна купити товар, який зацікавив.
  • 141. 14111.2. Види сайтів... Форуми — спеціалізовані сайти, на яких користувачі мере- жі Інтернет можуть безперешкодно обговорювати різні нови- ни, проблеми, життєві сфери суспільства і т. п. Форуми можуть бути як спеціалізовані (обговорюються одна або кілька проблем, пов’язаних між собою), так і за- гальноспрямовані (обговорюються проблеми, абсолютно різні за тематикою, часом зовсім не пов'язані одна з одною). Соціальні мережі покликані надавати інтернет-користува- чам можливість знаходити один одного і вести між собою спілкування в режимі онлайн. Кількість користувачів соці- альних мереж невпинно зростає (рис. 11.12) Рис. 11.12. Кількість користувачів соціальних мереж (у мільярдах) Існують спеціалізовані соціальні мережі, які об'єднують людей, зі спільними інтересами (хобі, професія). Соціальні мережі загальної спрямованості збирають в одне коло для спілкування людей, які зайняті в абсолютно різних сферах і мають різні інтереси і хобі (рис. 11.13). Окрему категорію сайтів становлять освітні ресурси. У 9 класі ви ознайомилися з класифікацією освітніх та на- вчальних ресурсів. Пригадаємо, що освітніми інтернет-ре- сурсами називають ресурси освітнього характеру, розміщені у веб-просторі. Розважальні портали впевнено тримають лідерство за по- пулярністю нарівні з соціальними мережами. Найпопуляр- нішим є відеохостинг. Найбільш відвідуваними є ресурси, що безкоштовно пропонують відвідувачам онлайн перегляд і скачування фільмів, відеороликів. На другому місці — сай- ти музичного напрямку. За структурою вони подібні до ві- деохостингів, але пропонують безкоштовне прослуховування й скачування мелодій. Третє місце посідають класичні комп- лексні сайти розваг. Тут користувачі шукають інформацію відповідно до своїх інтересів: це може бути графіка, відео, тексти різної тематики і, безумовно, ігри. Ігровий портал – складний розважальний інтерактивний проект, що передбачає велику відвідуваність і ресурсоміст- кість. На порталі зазвичай є розділ для пошуку потрібної інформації за темою, блок новин, і величезна кількість по- силань на ігри з їхнім описом. Часто ігрові портали містять спеціалізовані й добре модеровані форуми. Особливу увагу наразі приділяють відкритим онлайн- курсам на платформах Prometheus, EdEra, EdX, Coursera. Рис. 11.13. Співвідношення користувачів найбільш впливових соціальних мереж (у відсотках)
  • 142. 142 Розділ 3 Веб-сервіси нині отримали значне поширення (рис. 11.14). Містять структуровані посилання, що ведуть на інші веб-ресурси, та  їх короткий опис Каталоги Надають можливість відшукувати той чи інший сайт, різну інформацію за певним пошуковим запитом Пошукові системи Надають можливість переглядати і  відправляти листи електронною поштою Поштові сервіси Веб-ресурси для розміщення оголошення різних тематик Дошки оголошень Призначені для тимчасового зберігання файлів (деякі надають можливість перед завантаженням переглянути вміст файла у вікні браузера), ­ зображень Сайти-хостинги Веб-сервіси Рис. 11.14. Класифікація веб-сервісів Cенс існування будь-якого сайта — це його відвідуваність. І якщо блогер публікує свою думку, розраховуючи на зворот- ний зв'язок у вигляді коментарів або лайків, то, наприклад, інтернет-магазин існує за рахунок реальних покупців, які шукають і, головне, купують товар, який їх зацікавив. Кожен сайт орієнтований на певну цільову аудиторію. Цільова аудиторія сайта, цільові відвідувачі — група ін- тернет-користувачів, на яку сфокусовано зміст сайта; коло відвідувачів, зацікавлених в інформації, товарах або послу- гах, що презентують на сайті. Цільові відвідувачі точно знають, в отриманні якої інфор- мації вони зацікавлені і який саме товар або послугу бажа- ють придбати. Виділення цільової аудиторії з усіх відвідувачів сайта дозволяє точніше направити інформаційний або рекламний вплив і в результаті веде до розвитку бізнесу (збільшення продажів товарів або послуг). Будь-який сайт, крім власне цільової аудиторії, має також побічну і випадкову аудиторію. Побічною аудиторією є користувачі, які приходять з по- шуку по запитах, суміжних із семантичним ядром сайта. Те саме можна сказати і про людей, які начебто «автоматично» клацають на рекламу, ще не знаючи, потрібна їм послуга чи ні. Вони можуть стати клієнтами, проте це відбувається не- часто. Отже, побічна аудиторія теж є цільовою. Визначення цільової аудиторії полягає в складанні при- близного портрета цільового відвідувача сайта (так званого портрета клієнта). Цільову аудиторію будь-якого сайта становлять відвідувачі, які зацікавлені: • • в  отриманні інформації;   • • виборі товару або послуги; • • у  придбанні товару чи послуги.
  • 143. 14311.2. Види сайтів... Для отримання даних, які складають портрет цільового від- відувача, використовують різні способи збирання інформації. Існує кілька способів збирання інформації про аудиторію сайта. Спосіб 1 Лог-аналізатор сервера і  дані лічильника відвідувань (дозволяють вивчити всі дії ко- ристувачів на сайті і  конкретизувати розподіл аудиторії сайта за регіонами, за часом й  ін.) Спосіб 2 Опитування аудиторії сайта (анкетування унікальних відвідувачів з  використанням опитувальної форми або реєстрації на сайті) Спосіб 3 Опитування аудиторії на сайтах опитувань, поєднання панельних даних і  даних лі- чильника відвідувань (анкетування відбувається на сайті панелі) Спосіб 4 Системи аудиту і  традиційні опитування дослідницьких компаній (агентств) Спосіб 5 Моніторинг соціальних мереж Дослідження великих аудиторій показують, що комуніка- цію легше налагоджувати з малими групами покупців, об'єд- наними в одну цільову аудиторію. Існує чотири основні принципи сегментації цільової ауди- торії (рис. 11.15). Важливим джерелом статистичних даних про цільову ауди­торію сайта є статистика запитів пошукових систем. Оцінити величину цільової аудиторії можна за кількістю по- шукових запитів. Такий сервіс має Google (https//www.google. com/analytics). Це безкоштовний сервіс, призначений для збору відомостей про відвідуваність, а також про дії інтернет-користувачів на сайті. Інструмент формує безліч звітів. Усебічний аналіз ці- льової аудиторії дозволяє оперативно реагувати на запити користувачів. Веб-майстер зможе дізнатися, як часто відвіду- вачі натискають на кнопки, на кшталт «оформити покупку» або «замовити зворотний дзвінок». Склад сім'ї, рівень прибутків, рід занять Мотивація при покупці, лояльність, інформованість про товар Тип особистості, спосіб життя, суспільне становище Структура комерційної діяльності Динаміка розвитку регіону Поведінковий принцип sale % Демографічний принцип Географічний принцип Психологічний принцип Рис. 11.15. Сегментація цільової аудиторії Логотип Google analytics, багатофункціонального сервісу для аналізу інтернет-сайтів і  додатків.
  • 144. 144 Розділ 3 Hootsuite (http://hootsuite.com) — відмінний і, мабуть, один із найпопулярніших багатофункціональних сервісів для робо- ти з соціальними медіа. Акцент у сервісі зроблено на робо- ту з Twitter. У першу чергу Нootsuite буде корисний тим, хто веде кілька акаунтів відразу. Hootsuite успішно працює також з акаунтами Facebook, LinkedIn, MySpace і Foursquare, з блогами на WordPress; підключається до Ping.fm, що дозволяє оновлю- вати сторінки понад 40 соціальних мереж. Socialmention (http://www.socialmention.com/) — одна з най- потужніших платформ для безкоштовного пошуку й аналі- зу інформації в соціальних мережах. Cистема шукає згадки у відібраних сервісах або в усіх відразу. Крім того, пропонує аналіз тональності згадувань, пов’язані ключові слова, попу- лярні джерела та багато іншого. Дані можна експортувати або налаштувати їх отримання на e-mail. Google Alerts (https://www.google.com/alerts) — простий і зрозумілий безкоштовний сервіс, який сканує публікації за заданими ключовими словами, висилаючи оповіщення по електронній пошті відповідно до частоти, налаштованої ко- ристувачем. Є можливість фільтрувати результати залежно від регіону, мови та джерел, у тому числі блогів і форумів. Socialbakers (http://www.socialbakers.com) — масштабний статистичний сервіс, який називає себе «Серце статистики Facebook». Крім Facebook, Socialbakers безкоштовно надає моні- торинг інформації за різними показниками в Twitter, Google+, LinkedIn тощо. Socialbakers відомий своїми рейтингами брендів на Facebook. На основі даних, отриманих у результаті збору інформації, можна отримати зведені цифри, вивчити закономірності пове- дінки груп користувачів і оцінити ефективність рекламного впливу. Характеристики портрета цільової аудиторії врахову- ються при розробці дизайну і структури, при внесенні корек- тувань в інформаційне наповнення сайта з метою залучення більшої кількості відвідувачів, що входять у коло цільової аудиторії. Групи в соціальних мережах допомагають не лише збіль- шити продажі компанії, а й просувати сайт компанії в пошу- кових системах. Існує безліч сервісів моніторингу авторитету сайта за кількістю згадок про нього в соціальних мережах, особливо в таких соціальних мережах, як Facebook, а також твітти із зазначеними посиланнями на сайт. Запитання для перевірки знань Скільки груп сайтів ви можете класифіку- вати? Що входить до соціальних проектів? Що таке цільова аудиторія сайта? Назвіть іі основні характеристики. Які основні групи цільової аудиторії сайта? Назвіть найперспективніші, на вашу думку, способи збирання інформації про цільову аудиторію сайта. Візуалізуйте будь-яким засобом результати вашого опитування, щодо того, які сайти є  вподобаннями ваших друзів. 1 2 3 4 5 6 У Hootsuite є багато мож- ливостей для різноманітної аналітики. Наприклад, можна підключити Google Analytics зі свого сайта й дивитися графіки, порівнюючи з кількістю твітів і  популярністю ваших посилань. Socialmention шукає по більш ніж 100 соціальних медіа, включаючи мережі, соціальні закладки, блоги, форуми, соціальні сервіси та ін. Socialbakers збирає статистику по сторінках інтернет-ресурсу. Власник сайта зможе дізнатися, як часто відвідувачі роблять переходи по внутрішніх і  зовнішніх посиланнях. Розробка українських програмістів  — система моніторингу та аналізу посилань у соціальних медіа YouScan (https://youscan.io) — має потужний інструментарій аналітики і вміє розпізнавати зображення за допомогою штучного інтелекту. Серед клієнтів сервісу є такі брендові компанії, як Макдональдс, Ферреро, Bosch, Vodafone.
  • 145. 145 11.3. Інформаційна структура сайта Будь-який сайт створюється для того, щоб його відвідували якомога більше користувачів. Як цього досягти? Для користувача простота навігації сайтом — важливий чинник, що позитивно впливає на поведінкові фактори і, як наслідок, на видимість, позиції і трафік. Інформаційна структура сайта — спосіб організації інфор- маційних даних на веб-сайті, а також структура взаємодії різних блоків інформації один з одним. В ідеалі така структура повинна бути максимально зруч- ною, щоб користувач міг швидко знайти потрібну йому ін- формацію. Інакше кажучи, структура сайта — це логічна схема побудови сторінок сайта з розподілом за папками і ка- тегоріями.. Сайти поділяються на сайти з лінійною та ієрархічною структурою (рис. 11.16). Також є сайти з довільною струк- турою, на яких навігація здійснюється в довільному поряд- ку. Сайтом з довільною структурою є, наприклад, Вікіпедія. Структура сайта є дуже важливим фактором ранжування, покращуючи характеристики всього сайта. Основною складовою будь-якого сайта є документ — це сто- рінка сайта, що має унікальну адресу в Інтернеті. Документи можуть бути як простими інформаційними сторінками, так і картками товару або, наприклад, лістингами товарів в ін- тернет-магазині. Якщо сайт являє собою ієрархічну (деревоподібну) струк- туру, то головну сторінку можна уявити як «стовбур», а роз- діли і статті — як гілки й листя. Наскільки широкою буде структура, залежить від формату і типу сайта. Але навіть сайт, що складається з однієї сторінки, вже є основою, або «стовбуром», такої структури, від якої він може розвиватися в різних напрямках. Ієрархічна структура є базисом для будь-яких інших видів структури, в яких змінюється вид зв’язку документів — чи це лінійний зв’язок, де кожен документ пов’язаний з наступ- ним і з головною, чи більш широкий, де кожен документ пов’язаний між собою і з головною. Принцип побудови зв’язків між документами залежить від типу сайта. Загалом можна виділити такі типи сайтів, які мають відмінності в структурах: сайт-візитка (рис. 11.17), ко- мерційний сайт (рис. 11.18), інтернет-магазин, інформаційний сайт. Кожен тип сайта передбачає свій вид структури. Наразі все більшу популярність набувають так звані посад- кові, або лендінг (від англ. landing page), сторінки. Посадкова сторінка розробляється з урахуванням психології відвідува- чів, вона має чіпляти й не відпускати їх до самого моменту покупки (або реєстрації). Це може бути передплатна сторін- ка, завдання якої зводиться до отримання електронної адреси користувача, який зайшов на сторінку. Так збирається база. а б Рис. 11.16. Структура сайтів: лінійна (а) та ієрархічна (б) Про компанію Наша продукція Прайс-лист Контакти Головна сторінка Рис. 11.17. Структура сайта-візитки Товарна сторінка служить для продажу товару. Це просунута картка, яку можна зустріти в  будь-якому інтернет- магазині, з  описом товару, умовами доставки, контактним телефоном. Головною тут буде кнопка Купити. Аналогічно працює лендінг з послуг, коли намагаються продати послугу. Є контактний телефон, за яким можна цю послугу замовити.
  • 146. 146 Розділ 3 Структура необхідна для індексації сайта пошуковими сис- темами. У пошукових систем є низка своїх вимог до структу- ри. Чим більш правильно й логічно вона спроектована, тим простіше пошуковій системі проіндексувати сторінки і нада- ти їх користувачеві. Послуги Схема роботи ВідгукиПортфоліо АкціїЦіни Контакти Головна Послуга 1 Послуга 2 Дизайн 1 Послуга 3 Дизайн 2 Послуга 1б Дизайн 2б Акція 2 Дизайн 2в Акція 3 Послуга 1а Дизайн 2а Акція 1 Послуга 1в Рис. 11.18. Структура комерційного сайта Складність структури сайта визначається двома параме- трами: рівнем вкладеності і збалансованістю. Рівень вкладеності — це кількість переходів, які потріб- но зробити з головної сторінки до найдальшого документа в структурі. Не рекомендується, щоб це значення було біль- ше від 3. Збалансованість визначають «на око», оцінюючи кількість документів усередині розділів і рубрик. Не повинно бути сильних перекосів, коли в одному розділі 100 докумен- тів, а в іншому 25. Для побудови структури сайта в цілому підійде будь-яка програма, яка може працювати з діаграмами. Створення схе- ми дозволяє візуально оцінити складність структури й охопи- ти всі її напрямки поглядом. Найбільш зручним для створення структур сайта є таке програмне забезпечення. • • X-mind   — безкоштовна програма для побудови інте- лект-карт, структур і діаграм різних процесів. Вона до- сить проста у використанні, має широкий функціонал і підтримується всіма операційними системами, вико- ристовується на мобільних пристроях (рис. 11.19). • • Draw.io — безкоштовний онлайн-сервіс для створен- ня структур і діаграм. Він вимагає наявності пошти від Google. В арсеналі має більше інструментарію, ніж у X-mind, наявна низка технічних і інженерних шаблонів. Ще один плюс  Draw.io — можливість завантаження результату на Google-диск та  інші сервіси нарівні із завантаженими на комп’ютер.
  • 147. 14711.3. Інформаційна... Рис. 11.19. Використання Х-mind на мобільних пристроях На рис. 11.20 подано структуру сайта вивчення інформа- тики, розроблену за допомогою Draw.io. Рис. 11.20. Структура сайта вивчання інформатики, зроблена за допомогою Draw.io Запитання для перевірки знань Що таке інформаційна структура сайта? Назвіть параметри складності структури. Як вони розрізняються? Яка структура характерна для будь-якого сайта? Що таке посадкова сторінка? Яка мета її створення? Обґрунтуйте, чим важлива структура сайта? Створіть за допомогою будь-якого онлайн- сервісу структуру інформаційного сайта; ін- тернет-магазину. 1 2 3 4 5 6
  • 148. 148 11.4. Системи керування вмістом Уявіть, що вам потрібно створити власний сайт. Із чого потрібно розпочати? Для створення власного сайта спочатку необхідно розроби- ти макет, створити його за допомогою тегів HTML, селекторів CSS і сценаріїв JS. Потім розмістити сайт на певному сервері, наповнити його контентом і постійно оновлювати. При цьому сайт бажано зв’язати із соціальними мережами, надати мож- ливість зворотного зв’язку. Це означає, що потрібно знати й уміти використовувати різноманітні API, програмувати мовою PHP і використовува- ти безліч інших технологій. Тобто ми одночасно маємо бути front-end- і back-end-розробниками. Front-end — інтерфейс взаємодії між користувачем та ба- зовою апаратно-адміністративною частиною (back-end). Інак- ше кажучи, front-end — це користувацький інтерфейс, а back- end — адміністративний, пов’язаний із керуванням сайтом. API  (англ. Application Programming Interface) — інтерфейс програмування застосунків, що створює можливість вико- ристовувати ресурси інших програм. PHP (англ. Hypertext Preprocessor — гіпертекстовий проце- сор) — мова програмування, створена для генерації HTML-сто- рінок на веб-сторінці сайта. Людина, якій потрібен сайт, має або оволодіти досить по- тужним інструментарієм, або звернутися до професіоналів. Ще один вихід — це знайти такі інструменти, які б допомог- ли непрофесіоналам створювати та супроводжувати свої сай- ти, інтернет-магазини, блоги тощо. Система керування вмістом (англ. Content Management System, або CMS) — програмне забезпечення для органі- зації спільного процесу створення, редагування й  керу- вання контентом веб-сайтів. Принцип роботи всіх CMS заснований на поділі контенту (вмісту) і дизайну (оформлення) сайта. Ознайомимося з основними функціями CMS (рис. 11.21). Подання інформації у  вигляді, зручному для навігації, пошуку Публікація контенту Подання інструментів для створення вміс­ ту, організація спільної роботи над вмістом Керування контентом: зберігання, кон- троль версій, дотримання режиму досту- пу, управління потоком документів тощо Основні функції CMS Рис. 11.21. Основні функції CMS На першому етапі появи сайтів CMS-рушіїв ще не було, тому більшість сторінок були статичними. Шаблони використовувалися тільки в  складних настільних WYSIWYG-програмах редагування HTML-тексту або додавалися вручну в текстовому редакторі. Навігація будувалася вручну з використанням фреймів або на основі клієнтського javascript-програмування. Такі сайти важко адмініструвалися, причому вручну через ftp-протоколи. Першою CMS вважають Vignette, представлену в листопаді 1995 року. Вона дозволила користувачам-аматорам створювати, редагувати та відстежувати вміст сайта та публікувати його в мережі.
  • 149. 14911.4. Системи керування... Дизайн сайта зазвичай змінюється рідко. Натомість зміна контенту сайта може відбуватися не лише щодня, а й щого- дини. Тому CMS споряджені так званими шаблонами — спеці- альними «порожніми» заготовками сторінок, у яких прописа- но дизайн сайта, залишилося лише наповнити їх інформацією. Кожна CMS має у своєму складі WYSIWYG-редактор (акро- нім від англ. What You See Is What You Get — що бачиш, те й отримуєш). Сторінку одного з них наведено на рис. 11.22. За зовнішнім виглядом WYSIWYG дуже схожий на звичні текстові редактори офісних застосунків, тому користувачеві не надто складно освоїти його. А наявність у системі великої кількості готових шаблонів дає змогу обрати потрібний ди- зайн буквально за лічені хвилини. Рис. 11.22. Сторінка WYSIWYG-редактора CMS WordPress У процесі створення сайта за допомогою такого редактора сторінка відразу відображається в такому вигляді, ніби пе- реглядається браузером (на відміну від звичайних редакторів, де записується послідовність команд-тегів). Для відображення такої сторінки необхідно викликати браузер. При цьому теги стають невидимими, і сторінка ма- тиме вигляд, відповідний встановленій тегами розмітці. Інтерфейси візуального і текстового редактора схожі, тому користувачеві легко його опанувати. Наявність великої кіль- кості готових шаблонів дає змогу обрати потрібний дизайн за лічені хвилини. Magento — одна з  найпопулярніших CMS у  сегменті OpenSource рішень для організації електронної комерції в мережі (створення інтернет-магазинів). Існує понад 240 тисяч інтернет- магазинів, створених на базі плат- форми Magento Commerce. Із 2010 до 2015 року була у складі кор- порації eBay. Платформа Magento Commerce становить близько 30% загальної частки ринку.
  • 150. 150 Розділ 3 Ознайомимося з найбільш популярними безкоштовними CMS (рис. 11.23). WordPress  — найкращий вибір для початківців завдяки простоті використання: постійно вдосконалюється. Система особливо зручна для невеликих та середніх стиль-сайтів, бло- гів і  невеликих інтернет-магазинів. Joomla проста у  використанні, проте для новачка буде складнішою від WordPress, оскіль- ки для будь-якої зміни дизайну потребує навичок програмування. Система є  найліпшою для електронної комерції або сайтів соціальних мереж. Drupal орієнтована насамперед на досвідчених програмістів, має потужний інструмента- рій із широкими можливостями. Система ідеальна для великих і  серйозних сайтів, для яких необхідні знання програмування. Drupal потребує глибоких знань HTML, CSS і  PHP. Приклади стартових сторінок CMS наведено на рис. 11.24. Рис. 11.24. Приклад стартових сторінок CMS Запитання для перевірки знань Чим відрізняється front-end від back-end? Що таке CMS? Назвіть функції систем керування вмістом. Що таке шаблон сторінки? Що таке WYSIWYG? Наведіть приклади без- коштовних візуальних редакторів. Дослідіть CMS і зробіть висновки. Ско- ристайтеся посиланням websitesetup.org/ cmscomparison-wordpress-vs-joomla-drupal Чим відрізняється front-end від back-end?1 Що таке CMS?2 Назвіть функції систем керування вмістом.3 Що таке шаблон сторінки?4 Що таке шаблон сторінки?4 Що таке шаблон сторінки? Що таке WYSIWYG? Наведіть приклади без-5 Дослідіть CMS і зробіть висновки. Ско-6 Дослідіть CMS і зробіть висновки. Ско-6 Дослідіть CMS і зробіть висновки. Ско- Завдання для самостійного виконання У 9 класі ми створювали сайт за допомо- гою Google Sites. Чи можна вважати цей інструмент CMS? Обгрунтуйте свою відпо- відь. Рис. 11.23. Порівняльні характе- ристики найпопулярніших CMS
  • 151. 151 11.5. Адміністрування сайта Поміркуйте, чи можете ви змінювати інформацію в будь- якому сайті, який ви відкриваєте браузером? Недостатньо просто створити сайт. Необхідно робити по- стійні оновлення сайта, поновлювати його контент. Адміністрування сайта  — це комплекс заходів щодо підтримки чіткого функціонування сайта, його працездат- ності, швидкої роботи, зручності для користувача, регу- лярного розміщення матеріалів на його сторінках. Тобто адміністрування веб-сайту— це безперервна підтрим- ка його працездатності, що додатково полягає у виконанні на сайті супровідних робіт: публікації матеріалів, додаванні форм, віджетів, банерів, редагуванні зображень. Необхідно відрізняти відвідувача від адміністратора сайта. На відміну від пересічного відвідувача, який може перегляда- ти сайт, заповнювати форму, додавати коментар, адміністра- тор сайта на будь-якій сторінці сайтів, які він супроводжує (адмініструє), у куточку бачить елемент, який вмикає режим редагування. При редагуванні зверху з’являється панель ін- струментів (toolbar) із вибором стилів тексту, налаштування зображення або керування таблицею залежно від редаговано- го об’єкта. Крім того, обов’язково має бути кнопка Зберегти зміни. Така панель називається панеллю адміністрування. Панель адміністрування — це панель, яка містить поси- лання на екран адміністрування, такі як додавання нової пу- блікації, перегляд коментарів, редагування профілю тощо. Функції адміністративної панелі такі: створювати і редагу- вати сторінки, змінювати меню та інші елементи сайта. При- клад такої панелі наведено на рис.11.25. Рис. 11.25. Приклад адміністративної панелі CMS Joomla Адміністратори веб-сайтів, також відомі як веб-майстри (webmaster), бо адміністратори мережевих і комп’ютерних систем несуть відповідальність за всі аспекти збереження вмісту та дизайну веб- сайту. Зазвичай вони тісно співпрацюють з клієнтами, щоб переконатися, що розуміють їхні побажання щодо вигляду та роботи веб-сайтів. Вони також можуть відповідати за належне функціонування локальних мереж клієнтів
  • 152. 152 Розділ 3 Адмін-панель, шаблон панелі адміністрування — готовий набір для створення панелі адміністрування сайтом. Продукт, готовий для використання, в який входять необхідні компо- ненти, віджети, елементи інтерфейсу. Часто робота з адміністрування полягає в обробці наді­ сланих клієнтом текстів, вони повинні стати конкретними, точними, не містити граматичних і пунктуаційних помилок тощо. Ключовим елементом адміністрування є регулярна тех- нічна підтримка, яка дозволить убезпечити ресурс від мож- ливих технічних неполадок і збоїв. Сюди також відносять ре- гулярну перевірку актуальності використовуваного доменного імені, вирішення маловідомих технічних питань, впоратися з якими можуть тільки фахівці. Адміністрування сайта умовно можна розподілити на ін- формаційне та технічне. Розглянемо таблицю. Таблиця. Види адміністрування сайта Вид Опис Інформаційне Регулярне додавання новин, статей, товарів, оголошень та інших матеріалів залежно від тематики сайта: • • робота з  наповнення сайта матеріалами; • • редагування матеріалів і  виправлення помилок; • • оптимізація й  підвищення зручності використання розміщеного контенту; • • підтримка актуальності та практичної цінності матеріалів; • • своєчасне вилучення й  архівація застарілої інформації Технічне Забезпечення постійного стабільного доступу до сайта, вибір і  налаштування хостингу, цілодобовий контроль стану сервера, підтримка сайта в  цілодобовому робочому стані Елементи інформаційного адміністрування: • • Робота над створенням зрозумілої та зручної структури сайта (без застосування мов програмування), формуван- ня швидкої навігації. Сюди входить створення нових розділів, пунктів меню, сторінок тощо. • • Наповнення сайта. Для цього використовується статей- ний і новинний матеріал, прайс-листи, різноманітні ме- діаматеріали, карти та контактні дані. Матеріали мають відповідати дійсності і постійно оновлюватися. Інакше кажучи, необхідна постійна робота з контентом. Кон- тент — це вміст сайта. Це текст, зображення, аудіо- та відеоматеріали. Контент повинен бути унікальним, ін- формативним, привабливим. Інформаційне адміністру- вання передбачає роботи не лише зі створення контенту, а й редагування. • • Робота з опрацювання надісланих клієнтом текстів, які повинні стати точними й грамотними. Технічна підтримка необхідна будь-якому сайту, вона пе- редбачає низку заходів, спрямованих на підтримку безпере- бійної роботи сайта. Основні функції технічного адміністрування: • • Забезпечення безперебійної та швидкої роботи сайта • • Відстеження й усунення різних збоїв і вірусів Адмін-шаблони різняться базовим фреймворком, на якому вони розроблені, дизайном, набором версій і модифікацій під відомі платформи розробки. Найважливіший аспект роботи веб-адміністратора  — це захист сайта від вірусів і шкідливих програм. Адміністратор веб-сайту повинен знати про можливі атаки ботів і  шкідливих програм і мати необхідні для боротьби інструменти. Неубезпечений веб-сервер може стати об’єктом для хакерів, які будуть використовувати сервер або безпосередньо для атаки, або для перетворення його на зомбі, який, наприклад, щосекунди розсилає спам- повідомлення.
  • 153. 15311.5. Адміністрування сайта... • Функціональна підтримка сайта: встановлення й онов- лення модулів (інтеграція з платіжними системами, форм тощо), налаштування корпоративної пошти Технічне адміністрування передбачає вибір хостингу, його налаштування, підготовку сайта до переносу, резервне копію- вання всієї важливої інформації, роботу з базами даних. Така робота може передбачати повноцінне наповнення товарами інтернет-магазинів, включення в діяльність seo-інструментів (див. § 11.23), які спрямовані на поліпшення позицій сайта в пошукових системах, інколи адміністратор може відповіда- ти за створення та управління інтернет-рекламою сайта. За потреби адміністратор має створювати поштові скриньки сай- та, відповідати на запитання відвідувачів, керувати доступом до редагування сайта. Наведемо приблизний перелік обов'язків адміністратора сайта. • Для дотримання відповідності контенту сайта певному напрямку потрібно стежи- ти за інформаційним наповненням сайта, формувати авторський колектив і добира- ти тематику текстів. • Адміністратор зобов'язаний стежити за ін- формацією, що надходить на сайт, за не- обхідності редагуючи та коментуючи її. • Він відстежує становище свого інтер- нет-ресурсу серед конкурентів і на мере- жевому ринку, працює над створенням методів залучення більшої кількості від- відувачів. Треба вивчати інтереси й запи- ти інтернет-користувачів. • Адміністратор повинен стежити за дотри- манням правил усіма відвідувачами, убез- печувати сайт від можливих технічних несправностей і хакерських атак. • Йому необхідно вміти працювати з систе- мами управління контентом, розуміти, як з технічної точки зору функціонує та чи інша частина сайта і що необхідно зроби- ти, якщо одна з них перестане працювати належним чином. Для цього адміністра- тору стане в пригоді знання HTML, CSS, PHP, JavaScript, Adobe Flash, а також ін- ших більш складних мов і програм. • Адміністратор повинен піклуватися про захист інформації та персональних даних, що потрапляють на сайт. Часом адміні- стратору доводиться займатися додатко- вим супроводом сайта, наприклад оптимі- зувати його для пошукових систем. • Перебої в роботі сайта зазвичай виника- ють раптово, а налагодити його роботу потрібно в найкоротші терміни. Тож ад- міністратор, з одного боку, повинен вміти працювати в стресовій ситуації та зали- шатися розсудливим, незважаючи ні на що, а з іншого — мати аналітичний склад розуму, щоб оперативно виявити пробле- му та знайти шляхи її розв’язування. Запитання для перевірки знань Що таке адміністрування сайта? На які види поділяється робота з  адміні- стрування сайта? Що входить в інформаційне адміністрування? Які послуги надаються в  плані технічного адміністрування? Знайдіть в Інтернеті відомості про компанії, які надають послуги адміністрування. Ство- ріть інфографіку їх послуг. Якби вам запропонували бути адміністра- тором сайта вашого навчального закладу, щоб ви запланували зробити в першу чергу? 1 2 3 4 5 6 Для ефективної роботи сайта необхідно забезпечити цілодобовий і безперебійний доступ до нього. Таку можливість створюють хостинг- провайдери (див. § 3.17), які надають в оренду певний дисковий простір на своїх серверах.
  • 154. 154 11.6. Інструменти веб-розробника Які вміння й навички будуть корисними під час розробки сайта? Є цілий клас завдань (створення сайта, перевірка його пра- цездатності, супровід, оптимізація та просування), виконання яких неможливе без участі фахівців різної спеціалізації. Який вигляд матиме сайт — цим питанням опікується веб-дизайнер. Веб-розробник отримує результат його роботи у вигляді макету. Його задача — написати код, який відобра- зить браузер у саме такому вигляді, як запропонував веб-ди- зайнер (рис. 11.26). Усі веб-сайти будуються з допомогою мови розмітки HTML та каскадних таблиць стилів CSS. Редактор коду — це перший інструмент веб-розробника. Сучасні редактори надають широкий асортимент інструмен- тів, які полегшують і прискорюють процес розробки коду. Розглянемо найбільш поширені нині редактори коду (згід- но із статистикою сайта Stack Overflow (рис. 11.27). Visual Studio Code 55.6% Notepad++ 30.4% Vim 25.9% Sublime Text 24.0% Atom 12.7% Рис. 11.27. Рейтинг популярності редакторів коду Visual Studio Code — це безкоштовний крос-платформний редактор коду, розроблений корпорацією Microsoft (рис. 11.28). Виходячи з опитування, проведеного Stack Overflow у 2019 році, Visual Studio Code є одним із найпопулярніших редакто- рів коду, ним користуються понад 55 % розробників. Програма має відкритий вихідний код. Вона оснащена до- ступним набором інструментів для редагування й налашту- вання, легко інтегрується з іншими сервісами, її властивості можна легко розширити. Notepad++ — розвинутий редактор коду, випуще- ний у 2003 році і доступний лише на платформі Windows (рис. 11.29). Виходячи з опитування, проведеного Stack Overflow у 2019 році, Notepad++ займає другу позицію в рей- тингу популярних редакторів коду. Ним користуються понад 30% розробників. Програма дуже швидка, підтримує зовнішні плагіни, включаючи макроси, її інтерфейс передбачає редагуван- ня в різних вкладках, є опція перетягування для почат- ківців. Notepad++ підтримує повноекранний режим, робить Рис. 11.26. Інструменти веб-розробника Сайт Stack Overflow створено у 2008 році Джефом Етвудом і  Джоелом Спольські як ресурс для програмістів, які намагають- ся розв’язати якусь проблему. Це сервіс питань і відповідей з  програмування, який входить до сотні найбільш відвідуваних сайтів. Щомісяця  — близько 50 млн людей, 72% із яких є  веб-розробниками. Нинішні й майбутні фахівці об- говорюють сотні мов програму- вання, фреймворків, платформ тощо. Причому якість відповідей на StackOverflow тримається на рівні кращих академічних стан- дартів. Тому компанії, запрошу- ючи на роботу розробника ПЗ, розглядають активний профіль на StackOverflow як важливу частину резюме.
  • 155. 15511.6. Інструменти веб-... автоматичні відступи та автодоповнення, має дуже продума- не підсвічування синтаксису. Програма дозволяє здійснювати пошук і заміну тексту, перевірку правопису з порівнянням файла, використовувати фолдинг (функціонал згортання). Рис. 11.28. Приклад робочого вікна Visual Studio Code Рис. 11.29. Приклад робочого вікна Notepad ++
  • 156. 156 Розділ 3 Sublime Text 3 — це крос-платформний редактор коду, що має як преміум-версію, так і безкоштовну версію (рис. 11.30), яку можна завантажити на офіційному сайті. Існує багато ре- дакторів коду, які підтримують чорний фон для розширеного перегляду. Sublime Text 3 — один з них. Програма легка й дуже швидка в роботі, за замовчуванням надає автодоповнення, підсвічування синтаксису та фолдинг, має зручний інтерфейс для початківців, виявлення та виді- лення синтаксичних помилок, дозволяє одночасно редагувати багато рядків. У Sublime Text 3 можна додатково налаштувати плагін Package Control, додавши таким чином інструменти на- лаштування, нові теми. Рис. 11. 30. Приклад робочого вікна Sublime Text 3 Atom — це безкоштовний крос-платформний редактор із відкритим вихідним кодом (рис. 11.31). Це розробка GitHub. Інтерфейс Atom виглядає як клон редактора Sublime Text, проте працювати в ньому набагато комфортніше, оскільки він більш простий і зрозумілий. Крім того, у випадку коли розробник під час програмування стикається з труднощами, спільнота GitHub досить активно розв’язує цю проблему. Програма за замовчуванням надає підсвічування синтак- сису, доповнення й згортання коду, а також має вбудовану підтримку десятків мов програмування. Atom постачається із вбудованим менеджером пакетів, завдяки чому можна здійс- нювати пошук, установлювати або створювати власні пакети для розширення функціоналу редактора. Подібно Visual Studio Code Atom оснащений потужним інструментом для парного програмування  — Teletype. Це дає можливість кільком розробникам приєднуватися до ізольованої сесії й  працювати спільно.
  • 157. 15711.6. Інструменти веб-... Рис. 11.31. Приклад робочого вікна Atom Vim — це редактор (від англ. vi improved — покращений vi), який уперше був випущений наприкінці 1991 року Бра- мом Мооленааром (рис. 11.32). Справжню міць Vim демонструє під час роботи з структурованими текстами та є незамінним для програмістів і верстальників, його використовує кожен четвертий веб-девелопер. Рис. 11.32. Приклад робочого вікна Vіm
  • 158. 158 Розділ 3 Vim є клоном текстового редактора vi для Unix, який напи- сав Біл Джой у 1976 році. Тоді ж був придуманий його незви- чайний інтерфейс, заснований на поділі режимів роботи: стан- дартний режим, режим вставки, режим командного рядка. Brackets — це редактор коду, створений з нуля спеціально для веб-дизайнерів і фронтенд-розробників, які працюють пе- реважно з JavaScript, HTML і CSS (рис. 11.33). Рис. 11.33. Приклад робочого вікна Brackets Програма поставляється з основними стандартними власти- востями, включаючи автодоповнення, підсвічування синтак- сису для багатьох мов програмування, підтримку швидкого редагування й різноманітних препроцесорів. У Brackets є властивість extract, що дозволяє підтягувати кольори, розміри, градієнти, шрифти та інші важливі дані з PSD-файла в CSS-файл, готовий до використання. Brackets дуже популярний серед українських веб-розробників. Запитання для перевірки знань У чому полягає різниця між роботою веб-дизайнера і  веб-розробника? Якими інструментами користується в  робо- ті веб-розробник? Яке призначення редактора коду? Назвіть найпопулярніший, на вашу думку, редактор коду. Що об’єднує всі редактори коду? На рис. 11.34 наведено логотипи інструмен- тів веб-розробника. Знайдіть в  Інтернеті ві- домості про ці інструменти. Створіть класи- фікацію зазначених інструментів. 1 2 3 4 Що об’єднує всі редактори коду?5 На рис. 11.34 наведено логотипи інструмен-6 На рис. 11.34 наведено логотипи інструмен-6 На рис. 11.34 наведено логотипи інструмен- Рис. 11.34. До завдання 6
  • 159. 159 11.7. Мова гіпертекстової розмітки З  чим стикається користувач будь-якої CMS? Для розуміння процесу створення сайта необхідне опану- вання мови розмітки гіпертексту. HTML (англ. HyperText Markup Language)  — стандартна мова розмітки документів у  Всесвітній павутині, яка об- робляється спеціальними програмами (браузерами) і  ві- дображається у вигляді документа у зручній для людини формі. Слід зазначити, що HTML не є мовою програмування, вона призначена лише для розмітки сторінки, надання певного ви- гляду її складовим. Гіпертекст  — електронний документ, який містить зв’яз- ки з іншими електронними документами. Такі зв’язки на- зиваються гіперпосиланнями. HTML створювалася як мова для обміну науковою й техніч- ною документацією, як один із компонентів технології розроб- ки розподіленої гіпертекстової системи World Wide Web (яку ми звикли називати Всесвітньою павутиною). Ідея така: користувач має можливість переглядати докумен- ти (сторінки тексту) у найзручнішому для себе порядку, а не послідовно, як це узвичаєно під час читання книжок. Це дося- гається створенням спеціального механізму зв’язування різних сторінок тексту за допомогою гіпертекстових посилань. Будь-який документ мовою HTML є набором елементів, вод- ночас початок і кінець кожного елемента позначається спеці- альними позначками — тегами. Теги — команди мови HTML. HTML-теги — це ключові слова або символи, які записуються в кутових дужках. Теги бувають двох видів: парні й непарні (їх ще називають поодинокими). Парні теги складаються з відкриваючого і за- криваючого тегів. Теги нечутливі до регістра (тобто регістро- незалежні), тому можуть бути написані як великими, так і малими літерами. Теги визначають, де починається й  де закінчується HTML-елемент. Текстові документи, що містять розмітку мовою HTML (такі до- кументи зазвичай мають розширення .html або .htm), опрацьову- ються спеціальними застосунками, які відображають документ у його відформатованому вигляді. Такі застосунки називаються браузерами. Пригадаємо, що браузером (веб-переглядачем) назива- ють програмне забезпечення для комп’ютера або іншого Мову HTML розробив британський учений Тім Бернерс-Лі приблизно в  1989–1991 роках під час роботи в  Європейській лабораторії з  ядерних досліджень ЦЕРН у  ­ Женеві (Швейцарія). Нині найпопулярнішими браузерами є  MozillaFirefox, AppleSafari, Google-Chrome, Opera, Internet Explorer (Microsoft Edge). Для тих, хто хоче дізнатися більше про створення Всесвітньої павутини, радимо переглянути фільм BBC The Virtual Revolution /The Great Levelling (https://www. dailymotion.com/video/x5vfk2c)
  • 160. 160 Розділ 3 електронного пристрою, під’єднаного до Інтернету, який дає змогу користувачеві взаємодіяти з текстом, малюнками або іншою інформацією на гіпертекстовій веб-сторінці. За допомогою тегів браузер розпізнає структуру документа. Отримавши цю інформацію, браузер використовує вбудова- ні в нього за замовчуванням правила про те, як відображати контент сторінки. Без використання HTML-тегів браузер виве- де невідформатований текст, без відступів, заголовків, абза- ців тощо. Розглянемо структуру стандартної HTML-сторінки. Сторінка завжди починається з відкриваю- чого тега html та закінчується закриваючим тегом /html і складається з двох обов’язко- вих блоків — голови (head) і тіла (body), які записуються послідовно. У блоці head /head зберігається служ- бова інформація, призначена допомогти брау- зеру в роботі з даними. Тут розташовані ме- та-теги, які використовуються для зберіган- ня інформації, призначеної для пошукових систем, а саме: опис сайта, ключові слова тощо. Інформація є зазвичай невидимою для пересічного користувача, крім тега title, в якому відображається назва сторінки сайта. Увесь контент, який відображається на сто- рінці, розміщується між відкриваючим і за- криваючим тегами body. Кожен абзац починається з тега p (від слова «параграф»). Зупинимось на тегах для роботи з текстом, який відобра- жається у вигляді заголовків, абзаців і списків (рис. 11.35). У HTML існують шість рівнів заголовків. Найвищим є за- головок першого рівня, найменшим — шостого. Позначаются вони відповідно h1… h6. Заголовки мають атрибут align, який визначає тип вирівнювання на сторінці та може набу- вати одне з чотирьох значень: left За лівим краєм (за замовчуванням) right За правим краєм center По центру justify За шириною (за лівим і  правим краєм) Код HTML Відображення браузером Рис. 11. 35. Приклад запису заголовків та їх відображення браузером Контент (англ. content  — вміст)  — це інформаційне наповнення сайта. Контент може містити: • Текст • Статичну графіку (§ 11.12) • Анімаційні елементи (§ 11.13) • Мультимедійні елементи (відео, аудіо) (§ 11.14)
  • 161. 16111.7. Мова гіпертекстової... Абзаци виділяються парним тегом p /p (від слова «па- раграф»). Як і теги заголовків, тег параграфа має атрибут align. Списки можуть бути впорядковані, тобто нумеровані, та невпорядковані — марковані й багаторівневі. Кожен елемент списку виокремлюється парним тегом li. Нумерований список позначаєтся парним тегом ol (скор. ordered list — впорядкований список), маркований список — парним тегом ul (скор. unordered list — невпорядкований список) (рис. 11.36). Код HTML Відображення браузером Код HTML Відображення браузером Рис. 11.36. Приклад кодів нумерованого та маркованого списків та їх відображення браузером У HTML існує спеціальний тег-контейнер для реалізації на- вігації по сайту — nav. Це парний тег, який містить наві- гаційні посилання (рис. 11.37). Для посилання на іншу сторінку використовують парний тег a (скор. від «анкор», англ. Anchor — якір). Тег має обов’язковий атрибут href, значенням якого є назва сторінки з розширенням .html. Між відкриваючим і закриваючим тегами розміщується посилання на ресурс. Натиснувши на нього, користувач може переходити до потрібної сторінки. Код HTML Відображення браузером Рис. 11.37. Приклад запису навігаційного контейнера та його відображення браузером З одного боку, HTML5 — це  нова версія мови HTML, із новими елементами, атрибутами та новою поведінкою, з  іншого  — сукупність технологій, котра дозволяє створювати різноманітні сайти й  веб-застосунки.
  • 162. 162 Розділ 3 Мова HTML постійно розвивається. Якщо ранні версії HTML поєднували функції розмітки та форматування контенту, тобто зміст (семантичний) та зовнішній вигляд цього змісту (презентаційний), то з появою багатосторінкових сайтів пе- реважну частину функцій форматування було покладено на каскадні таблиці стилів (§ 11.8). Наразі Консорціум просуває версію HTML5, це остання вер- сія стандарту HTML. HTML5 остаточно відмовляється від вико- ристання презентаційних тегів, натомість з’являється низка нових елементів і атрибутів, які відображають типову архі- тектуру сучасних веб-сторінок. Приклад використання тегів HTML5 наведено на рис. 11.38. Рис. 11.38. Приклад розмітки сторінки з використанням тегів HTML5 Під час розроблення макета сайта завжди постає пробле- ма заповнення макета текстом. Зазвичай для надання ма- кету закінченого вигляду дизайнери застосовують так звану «рибу» — великий текстовий масив беззмістовних слів із по- трібною кількістю символів, абзаців і параграфів, який так і називається — Lorem Ipsum. Основна функція Lorem Ipsum полягає в зосередженні ува- ги на дизайні, а не на читанні вмісту. Ще одна причина, че- рез яку використовують текст, — це заповнення сторінки для досягнення реального розподілу букв і пропусків у тексті, яке неможливе у випадку простого дублювання вислову «Тут написано ваш текст ... Тут написано ваш текст ...» У більшість текстових і HTML-редакторів Lorem ipsum вхо- дить як текст за замовчуванням. Існують і сайти, на яких можна згенерувати потрібну кількість абзаців. Одним з най- відоміших і найпопулярніших сайтів-генераторів є Lipsum generator (https://uk.lipsum.com/)/ (рис. 11.39). У 1994 році засновано Консорціум Всесвітньої павутини  — головну міжнародну організацію, що розробляє та впроваджує технологічні стандарти для  Всесвітньої павутини. Для більш глибокого вивчення технологій веб-розробки радимо скористатися курсом «Основи веб- розробки» освітньої платформи Прометеус. Викладач курсу Світлана Шабаранська, Web UI-девелопер у  компанії N-iX. Стане в  пригоді веб-сайт для вивчення веб-технологій в  Інтернеті (https://www.w3schools. com/), який містить навчальні посібники для вивчення HTML, CSS, JavaScript тощо.
  • 163. 16311.7. Мова гіпертекстової... Рис.11.39. Головна сторінка генератора беззмістовного тексту латиною Lorem ipsum Запитання для перевірки знань Що таке контент; HTML; гіпертекст? Як називають команди мови розмітки? Створіть класифікацію тегів HTML. Які невід’ємні компоненти структури сторінки? Порівняйте HTML4 і  HTML5. Зробіть презентацію за результатами порівняння. Знайдіть в  Інтернеті відомості про Тіма Бернерс-Лі, зробіть коротке повідомлення. 1 2 3 4 5 6 Завдання для самостійного виконання Увійдіть у  редактор коду, встановлений на комп’ютері. Створіть файл index.html. Наберіть наступну послідовність команд (рис. 11.40). Як текст використовуйте абзаци, згенеровані генерато- ром Lorem ipsum. Збережіть файл. Перегляньте результат браузером. Відкрийте файл у  редакторі коду. Приберіть список, залишивши посилання з  тегами a. Збережіть моди- фікований файл. Перегляньте результат браузером. Проаналізуйте, як відобразив браузер змінений файл. 1 2 Рис. 11.40. До завдання 2 3 4 5 6 7 8
  • 164. 164 11.8. Каскадні таблиці стилів Уявіть, що ви розробили сайт, що містить десять сторінок, у  якому необхідно змінити колір тла і  розмір шрифту та змінити вигляд меню. Ваші дії? Стрімкий розвиток Всесвітньої павутини та поява величез- ної кількості сайтів у 1990-х роках спонукали до розробки нових тегів мови HTML, які відповідали за дизайн сайтів. Проте, при зміні дизайну сайта в кожну його сторінку по- трібно було вносити зміни, що значно ускладнювало роботу. У 1994 році було розроблено каскадні таблиці стилів. Каскадні таблиці стилів (англ. Cascading Style Sheets, або скорочено CSS) — спеціальна мова, що використовується для опису зовнішнього вигляду сторінок, написаних мовою розмітки даних. Основна ідея CSS полягає в тому, щоб відо- кремити дизайн документа від його вмісту. CSS відповідає за оформлення і зовнішній вигляд HTML-коду, тоді як HTML — за зміст та логічну структуру документа. Конструкція СSS, яка відповідає за зовнішній вигляд пев- ного елемента HTML, називається CSS-правилом. Усі CSS-пра- вила складаються із селектора та блоку оголошень. Блок оголошень містить одне або кілька оголошень, роз- ташованих у фігурних дужках. Усередині блоку оголошень знаходяться пари CSS-властивість — значення, розділені кра- пкою з комою (рис. 11.41). Рис. 11.41. Правило оголошення СSS Кожне правило починається із селектора (покажчика), що вказує на ті html -елементи, до яких застосовується CSS-пра- вило. Саме в блоці оголошень установлюються правила відо- браження вибраних нами елементів, визначаються їхні вла- стивості — розмір, колір, відступи, поля, розташування на екрані (позиціонування) тощо. Селектор дозволяє звернутись до одного або кількох HTML-елементів. Якщо необхідно визначити стиль таким чином, щоб один і той самий елемент у різних випадках відображався по-різ- ному, то на допомогу приходять класи. Клас описується у ви- гляді .ім’я_класу {властивості}. Для присвоєння класу заданому тегу використовується властивість class = ім’я_класу. Ідентифікатори (селектори id) дуже подібні до класу, крім одного — ідентифікатор може мати одне-єдине унікальне ім’я в усьому документі. У файлі CSS ім’я вказується зі знаком ­ решітки на початку, а до потрібного елемента додається атри- бут id = . У  1994 році норвезький учений Хокон Віум Лі запропонував концепцію відділення дизайну сайта від його вмісту за допомогою каскадних таблиць стилів.
  • 165. 16511.8. Каскадні таблиці стилів... Термін «cascading» (каскадні) у назві CSS вказує на мож- ливість злиття різних таблиць стилів для створення єдиного визначення стилю окремого елемента (тегу) чи всього доку- мента. Каскадність CSS — це механізм, завдяки якому до еле- мента HTML-документа може застосовуватися більш ніж одне правило CSS. Правила можуть виходити з різних джерел: із зовнішньої та внутрішньої таблиці стилів, від механізму наслідування, від батьківських елементів, від класів і id, від селектора тегу, від атрибута style тощо. Оскільки в цих випадках часто від- бувається конфлікт стилів, була створена система пріоритетів: у кінцевому підсумку застосовується той стиль, який вихо- дить від джерела з більш високим пріоритетом. Таким чином, каскадність у CSS — це здатність стильових правил накладатися один на одного, перезаписувати і змішу- ватися. Підсумковий стиль елемента, який видно в браузе- рі, — це комбінація кількох послідовно застосованих стилів. Існує кілька способів підключення CSS-коду до HTML-доку- мента. Розглянемо деякі з них. • Застосування inline-стилів (стилі, які підставляються безпосередньо в рядок). Додавання CSS-правила в HTML-тег за допомогою атри- бута style. Усередині атрибута style можна написати кілька CSS-оголошень, розділених крапкою з комою, фігурні дужки не використовуються. Inline-стилі змішують уміст документа і його дизайн, тому його краще використовувати як виклю- чення, у випадку, коли елемент зустрічається лише один раз у документі або на сайті, але вимагає особливого оформлення (приклад 1). • Застосування таблиць стилів документа (document style sheets). Називаються так тому, що розташовуються безпосередньо в HTML-документі й застосовуються лише до нього. Іноді їх на- зивають embedded style sheet (убудований стиль). Збереження CSS-коду в HTML-документі у тезі style, що теж розміщується в head. Зазвичай цей варіант використовується, коли існує лише одна проста HTML-сторінка й немає сенсу створювати додатковий файл (приклад 2). • Застосування зовнішніх, або зв’язаних, стилів (external style sheets). Це найбільш поширений варіант. Він полягає у винесенні CSS-коду в окремий файл із розширенням .css та підключен- ням за допомогою тегу link, який знаходиться виключно всередині елемента head. Зустрівши в HTML-документі цей тег, браузер завантажить із сайта CSS-файл і застосує до до- кумента стилі, що містяться в ньому (приклад 3). Існує ще один спосіб підключення таблиць — за допомогою директиви @import. Цей спосіб дозволяє об’єднувати кілька таблиць стилів в одну (приклад 4). Приклад 1. Приклад 2.
  • 166. 166 Розділ 3 Приклад 3. HTML код Файл style.css Цей спосіб свого часу був досить популярний, проте на- разі він втрачає свої позиції через те, що сторінка не заван- тажиться, доки браузер не завантажить файл CSS повністю. Це негативно позначається на швидкості завантаження сайта й відповідно гальмує роботу. Розглянемо пріоритетність стилів. 1) Якщо в таблиці є однакові селектори, то виконувати- меться той, який записаний останнім. Наприклад p{color: grey;} p{color: pink;} — колір абзацу буде рожевим. 2) Якщо для одного елемента задано стиль і в зовнішній, і у внутрішній таблицях, то пріоритет віддається стилю в тій таблиці, яка знаходиться нижче в коді. Наприклад, спочатку в head підключили зовнішню таблицю, а по- тім за допомогою тегу style додали внутрішню таблицю. Браузер відобразить стилі внутрішньої таблиці. 3) Пріоритетність за спаданням: • inline-стилів, • ідентифікаторів, • класів, • тегів. Ознайомимося зі стислим описом модулів CSS. № з/п Назва модуля Опис 1 CSS- позиціону- вання CSS-позиціонування (positioning) дозволяє вказати, де з’явиться блок елемента, а  вільне переміщення (floating) переміщує елементи до лівого або правого краю блока-контейнера, дозволяючи решті вмісту «обтікати» його 2 CSS-текст Керують перетворенням вихідного тексту у  форматований і  перенесенням рядків 3 CSS-шрифт Вибір шрифту (font-family), його насиченість (font-weight), ширина (font-stretch), накреслення( font-style), розмір ( font-size) Приклад 4. Правила форматування CSS: • Кожна властивість  — в  окремому рядку. • Кожен селектор  — в  окремому рядку. Порядок опису стилів: • Позиціонування (position, left/ right/top/bottom, float, clear, z-index.) • Дісплей і  блочне моделювання (display, width, height, margin, padding… • Колір (background)   • Текст (list-style-type, overflow, color font…) • Інші
  • 167. 16711.8. Каскадні таблиці стилів... № з/п Назва модуля Опис 4 CSS- посилання Містять властивості, які відповідають за зовнішній вигляд гіпертекстових посилань HTML-документа. Оскільки посилання є  основним способом навігації сайтом, то за- стосування CSS-стилів для оформлення покращить їх візуальне сприйняття 5 CSS-списки CSS-списки  — набір властивостей, які відповідають за оформлення списків. Зазвичай списки використовуются під час створення навігаційних панелей сайта. За допомогою стандартних CSS-властивостей можна змінити зовнішній вигляд маркера списку, додати зображення для маркера, а  також змінити місце розташування маркера 6 CSS-тло CSS-тло  — властивості, що додають тло для будь-якого HTML-елемента. Кожен елемент має шар тла, який може бути прозорим (за замовчуванням), мати кольорове заповнення та зображення 7 CSS-color Описує значення, які дозволяють визначати колір та непрозорість HTML-елементів, а  також значення властивості color Запитання для перевірки знань Що таке каскадні таблиці стилів? Назвіть причини їхньої появи. Опишіть синтаксис CSS-правила. Що таке селектор? Які бувають селектори? Наведіть пріоритети виконання таблиць стилів. Опишіть способи підключення стилів. Проаналізуйте, коли і  який спосіб краще використовувати. Виберіть із наведеної раніше таблиці СSS-модуль. Розробіть презентацію з  докладним розбором та прикладами викори- стання правил CSS. 1 2 3 4 5 6 Завдання для самостійного виконання Увійдіть у редактор коду, встановлений на вашому комп’юте- рі. Створіть файл style.css. Наберіть наведену послідовність команд (рис. 11.42). Збережіть файл у тій самій теці, де ви зберегли файл index. html, створений на попередньому уроці. Відкрийте файл index.html у редакторі коду. Додайте у блок head таку команду. link rel=stylesheet type=text/css href=style.css Збережіть модифікований файл. Перегляньте результат браузером. Проаналізуйте, як відобразив браузер змінений файл. 1 2 Рис.11.42. До завдання 2 3 4 5 6 7 8 Закінчення таблиці
  • 168. 168 11.9. Проектування та верстка веб-сторінок Поміркуйте, чим відрізняються поняття сайта й  веб- сторінки. Процес створення сайта (веб-проекту) умовно можна розпо- ділити на кілька етапів (рис. 11.43). Розглянемо такі етапи, як загальне планування; розробка дизайну; планування ма- кета веб-сторінок. Загальне планування складається зі створення ідеї, роз- робки структури проекту, опрацювання макета проекту. Створення ідеї: необхідно вибрати тему проекту (сайта серві- су) й відповідно до неї дібрати текстові та графічні матеріали. Розробка структури проекту: потрібно визначити кількість розділів сайта, класифікувати матеріал за розділами, присту- пити до формування навігаційного меню. Опрацювання макета проекту: потрібно скласти макет про- екту, використовуючи графічний редактор. У 10 класі в роз- ділі растрової графіки ви вже вивчали графічний редактор Gimp, який має потужний інструментарій для розробки маке- та сайта, створення банерів, кнопок і логотипів, опрацювання фотографій, створення gif-анімації. Можна схематично склас- ти макет проекту, використовуючи також папір і ручку. Схематичний начерк дає розуміння того, як на сайті розта- шовуватимуться основні інформаційні блоки, графічні зобра- ження тощо (рис. 11.44). Рис. 11.44. Вибір макету проекту Порядок cтворення сайта Розробка дизайну сайта Загальне планування сайта Планування макета веб-сторінок Верстка веб-сторінок Програмування сайта Розміщення сайта в  Інтернеті Рис. 11.43. Порядок створення сайта
  • 169. 16911.9. Проектування та... Переважна більшість сучасних сайтів має блочну вер- стку. Розглянемо основні елементи веб-сторінки сайта: блок (або контейнер — div), заголовок (хедер), у який входять наз- ва сайта та логотип, навігація, контент, нижній колонтитул (футер, підвал). Звернемося до історії розвитку верстки. Веб-сторінки спочатку були просто набором тегів. Елементи відображалися в тому поряд- ку, в якому записувалися в HTML-коді. Щоб візуально розділити інформацію, використо- вувалися горизонтальні лінії або відступи. Кроком вперед була так звана таблична верстка веб-сторінки: елементи структурува- лися за допомогою таблиці, інформація встав- лялась у клітинку. Створити сайт за допомо- гою таблиці було досить просто — достатньо мати початкові знання HTML і CSS і вико- ристовувати мінімум правил CSS. Таблична верстка була дуже популярною на початку 2000-х років. До сьогодні існує досить багато сайтів, які зверстано у вигляді таблиць. Таблична верстка має низку недоліків: при складній структурі важко розібратися в коді, браузери відображають таблицю на екрані лише після повного завантаження, а склад- ний дизайн з перекриттям елементів узагалі неможливо реалізувати. Таблична верстка не- прийнятна для побудови адаптивних сайтів. Наразі найпопулярнішим способом верстки є так званий блочний. При цьому використо- вуються блоки, які або розташовують один під одним, або керують порядком їх відображення за допомогою позиціонування в CSS. Розглянемо основні елементи веб-сторінки сайта. Елемент div() зазвичай виконує на веб-сторінці роль кон- тейнера (рис. 11.45). Теги div мають такі характеристики: • div — блочний елемент; якщо ширину не задано, блок займає всю ширину браузера; • div — висота блоку; якщо висоту не задано, то блок до- рівнює вмісту; порожній блок div має висоту 0 px, тому не відображається на сторінці; • div не має оформлення; для того щоб його побачити, по- трібно задати стилі в CSS; • div — може містити будь-яке число вкладених елемен- тів; можна вкласти інші блоки div, заголовки, таблиці, зображення та ін. Елемент header (заголовок) є контейнером, у якому міс- тяться назва сайта, логотип і навігаційна панель. Логотип найчастіше розташовується у верхньому лівому кутку веб-сторінки або посередині, залежно від ідеї, макета (рис. 11.46). Навігаційна панель часто розташовується у верхній части- ні веб-сторінки незалежно від того, вертикально або горизон- тально розташовуються елементи навігації сайта (рис. 11.47), і містить посилання на його основні розділи. Нижній колонтитул (footer, підвал) розташовується внизу веб-сторінки і зазвичай містить інформацію про правовлас- ників, контактні та юридичні дані, посилання на основні розділи сайта (найчастіше дублює основну навігацію), поси- лання на соціальні мережі, форму зворотного зв’язку та ін. (рис. 11.46). Контент, як відомо, є  основною складовою веб-сторінки. Він відіграє провідну роль у  дизайні сайта, тому займає більший простір, крім тексту, підкріплений графікою.
  • 170. 170 Розділ 3 аб в Рис. 11.45. Приклад використання контейнера на веб-сторінці: код HTML (а); правила СSS (б); відображення в браузері (в) Рис. 11.46. Приклад запису та відображення у браузері логотипа сайта
  • 171. 17111.9. Проектування та... Рис. 11.47. Навігаційна панель сайта Рис. 11.48. Нижній колонтитул Модульна сітка передбачає поділ веб-сторінки на окремі колонки по вертикалі та вибудовування контенту. Дизайн ма- кета зазвичай розробляється саме за цією сіткою (рис. 11.49). Найбільш популярною є модульна сітка 960 Grid System (http://960.gs), яка максимально ділить сторінку на 12, 16 і 24 колонки. За шириною сітка становить максимум 960 пікселів. Такий вибір базується на тому, що на момент ство- рення сітки більшість сучасних моніторів мали роздільність 1024×768 пікселів.
  • 172. 172 Розділ 3 Створення макета на основі модульної сітки допоможе в подальшому прискорити процес верстання. Завдяки їй бло- ки контенту й елементи розташовуватимуться на певній від- стані один від одного. Можна сказати, що модульна сітка — це певна візуальна абстракція, візуальний розподіл сторінки на однакові за ши- риною стовпці з однаковими відступами між ними. Візуалі- зувати модель можна за допомогою напрямних або окремого шару, на якому будуть зображені ці стовпці (знову пригадає- мо графічний редактор Gimp). Рис. 11.49. Модульна сітка Серед усього різноманіття складання макета веб-сторінки можна виділити різні типи навігації. Розглянемо чотири найбільш поширені типи навігації (рис. 11.50): • • навігація в лівому стовпці (а); • • навігація в правому стовпці (б); • • горизонтальна навігація (в); • • навігація Mobile First (г).
  • 173. 17311.9. Проектування та... аб вг Рис. 11.50. Приклади сайта: з навігацією в лівому стовпці (а); навігацією в правому стовпці (б);  горизонтальною навігацією (в); технологією Mobile First (г) Сайти з горизонтальною навігацією становлять більшість. Такий вибір пояснюється зручністю, адже залишається більше простору для контенту, яким наповнено сайт. З урахуванням тенденцій останніх років тип навігації Mobile First впевнено займає свою нішу. У разі його викори- стання розробка макета сайта, дизайну й верстки почина- ється з мобільної версії, а вже потім опрацьовуються макети для інших роздільностей: додаються блоки, банери, додаткові елементи дизайну тощо (більш детально цей підхід описано в § 11.10). Одним зі способів визначення основного кольору в проекті  є складання mood board (у  перекладі з англійської мови — дошка настрою). Під час створення дизайну макета варто роз- почати роботу з визначення колірної гами проекту. Порядок складання mood board такий: потрібно набрати кожен синонім у рядку пошуку по картинках Google та ви- писати найчастіше повторювані в знайдених зображеннях кольори, — від них залежить візуальне сприйняття проекту користувачем і виклик відповідних почуттів. Понад 80 % користувачів Інтернету використовують для доступу в  мережу мобільні пристрої, тож правилом хорошого тону стає розробка не тільки десктопної, а  й  мобільної версії сайта.
  • 174. 174 Розділ 3 Для роботи з вибраним кольором і складанням палітри кольорів сайта можна використовувати сервіси Color Scheme Designer 3 і  Adobe Color CC. Color Scheme Designer 3 (http://colorschemedesigner.com/ csd-3.5/) надає можливість ппереглянути, який вигляд мати- ме сайт у вибраних кольорах (рис. 11.51). Рис. 11.51. Палітра кольорів Color Scheme Designer Adobe Color CC (https://color.adobe.com) дозволяє створю- вати палітри ще й на основі завантажених зображень (які, наприклад, могли з’явитися в нас під час складання mood board). Сервіс містить великий архів палітр інших користу- вачів (рис. 11.52). Рис. 11.52. Палітра кольорів Adobe Color CC Під час розробки дизайну веб-сторінки використовують фреймворк — програмну оболонку, що дозволяє спростити і прискорити розв’язування типових завдань. Досить часто використовують фреймворки Bootstrap, Foundation, Material Design Lite. Крім готових елементів дизай- ну (кнопки, форми введення тощо) вони пропонують свою модульну сітку, CSS-сніппети (частина коду, розмітки, яка
  • 175. 17511.9. Проектування та... може неодноразово використовуватися) для вставки елемен- тів у веб-сторінку (кнопок, елементів форм та ін.) і класи розмітки, а так само JS скрипти для відповідних інтерак- тивних елементів. На основі певного фреймворка можна знайти величезну кількість платних і безкоштовних тем і сторінок, а також розробити власні. Під структурою проекту розуміють зберігання файлів проекту в його директорії. Окремі категорії файлів необхід- но поміщати у свої папки: картинки в папку images або img, css — у папку css, javascript — у папку js. У корені лежати- муть лише index.html і веб-сторінки сайта, або тільки index. html, а веб-сторінки — в окремій папці pages. Важливо дотримуватись подібних правил і під час імену- вання файлів проекту. Найчастіше застосовуються такі імена, як головна сторін- ка — index.html, стилі проекту — styles.css, скрипти — scripts. js або app.js. Мінімізовані версії файлів мають префікс .min, назви картинок відображають те, що на них зображено. Верстання веб-сторінки здійснюється поетапно (рис. 11.54). Як бачимо, за допомогою тегів HTML спочатку створюють скелет сторінки, орієнтуючись на структуру, складену ще на першому етапі. Далі визначають необхідні класи та перехо- дять до написання CSS-стилів. Заключним етапом є написання JS-скриптів (розглядати- меться в § 11.15–11.16). Після написання HTML, CSS і JS для сторінки необхідно перевірити, чи все зроблено правильно (розглядатиметься в § 11.20) Запитання для перевірки знань Сформулюйте правила структурування й  іме- нування файлів. Які типи макетів веб-сторінок ви знаєте? Які переваги та недоліки вони мають? Опишіть етапи створення сайта. Яке місце в  дизайні сайта, на вашу думку, посідає колірна гама? Чим корисні фрейворки? Опишіть етапи верстки веб-сторінки. 1 2 3 4 5 6 Завдання для самостійного виконання Створіть теку для вашого майбутнього сай- та з  назвою Site. У створеній теці задайте ще відповідно теки images, css, js. Перенесіть у  теку Site файл index.html, мо- дифікований на минулому уроці. У теку сss перенесіть файл style.css. У файлі index.html виправте посилання на файл style.css так, щоб ви могли знайти його у  новоствореній теці. Для цього у  за- пису link rel = stylesheet type = text/css href = style.css пропишіть шлях до файла наступним чином href = css/style.css. Перегляньте отриманий результат у  брау- зері. 1 2 3 4 5 6 Рис. 11.53. Структура теки SITE Верстка веб-сторінки сайта Створення HTML- структури (HTML-код) Додавання стилів (css) Створення скриптів (JS) Додавання плагінів і бібліотек Рис. 11.54. Порядок дій під час верстання веб-сторінок
  • 176. 176 11.10. Адаптивна верстка Чи користуєтеся ви мобільним Інтернетом? Як ви гадаєте, чи однаково виглядає код сайта для перегляду на стаціонар- ному комп’ютері та смартфоні? Джерела інформації повсякчас урізноманітнюються й удо- сконалюються. Ознайомимося з ними докладніше. Із появою мобільного Інтернету до класич- ного веб-сайта додався так званий вап-сайт. Перший, як відомо, призначений для пере- гляду на комп’ютері, другий — для перегляду з мобільного телефону. Погодьтеся, це дода- ло зручності. Адже веб-сайти, маючи широ- кий функціонал і яскраве оформлення, дуже довго завантажувалися й забирали занадто багато трафіку. Натомість вап-сайти місти- ли в основному текст і поодинокі зображен- ня. Додамо, що на той час мобільні телефони були слабкі, а мобільний Інтернет повільний і дуже дорогий. Згодом широким попитом стали користу- ватися планшети. Це створило нові виклики фахівцям у галузі веб-дизайну, адже фіксо- вана верстка не дозволяла змінювати розмір роздільності сайта. Великі сайти переглядати з планшетів було незручно, а мобільні сай- ти не були оптимізовані під екран великих розмірів. Сьогодні використання смартфонів, планшетів і Smart-TV є невід’ємною частиною сучасного життя, а кількість і різноманіт- ність мобільних пристроїв постійно збільшу- ється (рис. 11.55). Рис. 11.55. Статистика різноманітних девайсів та їх роздільність Першою спробою підлаштування сайта під розміри екранів стала так звана гумова вер- стка. У разі її застосування й макету, й ок- ремим його складовим надаються розміри не фіксовані (рис. 11.56, а), а подані у відсотках (рис. 11.56, б), тобто вміст сторінки розтя- гується. Проте коли, наприклад, той самий контент розтягується на 6-дюймовий екран смартфона та 42-дюймовий екран телевізора, це вже заважає. Тож необхідно встановити максимальний і мінімальний розмір (власти- вість max-width). а б Рис. 11.56. Приклад відображення на смартфоні макета веб-сторінки: а  — фіксована верстка; б  — гумова верстка
  • 177. 17711.10. Адаптивна верстка... Наступним кроком стала поява медіа-запитів. Цьому спри- яла пропозиція Марка ван ден Доббельстіна щодо додавання класів під час завантаження та оголошення кожному діапазо- ну спеціальних стилів. Медіа-запити (media queries) — це правила CSS, які дозво- ляють керувати стилями елементів залежно від значень тех- нічних параметрів пристроїв. У 2001 році в HTML4 і CSS2 була введена підтримка апарат- нозалежних таблиць стилів, що дозволило створювати стилі й таблиці стилів для певних типів пристроїв. Таким чином, браузер застосовував таблицю стилів тільки в разі, якщо активувався саме цей тип пристрою: Тип носія Опис медіа-запитів all Всі типи. Це значення використовується за замовчуванням braille Пристрої, засновані на системі Брайля й  призначені для читання людьми з  вадами зору embossed Принтери, що використовують для системи друку шрифтом Брайля Handheld Смартфони та аналогічні пристрої print Принтери та інші друкарські пристрої projection Проектор screen Екран монітора speech Мовні синтезатори, а  також програми для відтворення тексту вголос (сюди, наприклад, можна віднести мовні браузери) tty Пристрої з  фіксованим розміром символів (телетайпи, термінали, пристрої з  обмеження- ми дисплея) tv Телевізори Як же використовують медіа-запит? Загалом медіа-запит складається з ключового слова, що описує тип пристрою (не- обов’язковий параметр) і вираз, котрий перевіряє характери- стики цього пристрою. З усіх характеристик найчастіше пе- ревіряється ширина пристрою width. Медіа-запит є логічним виразом, який повертає істину або хибність. Запит записують у кінці таблиці стилів (пригадаємо пра- вила запису стилів: у стилів, які записані пізніше, вища прі- оритетність). Наприклад, наведений далі запис означає, що стилі будуть використовуватися лише у випадку, коли шири- на екрану буде не більшою за 600 пікселів: @media screen and (max-width: 600px) { } Розглянемо на прикладі використання медіа-запитів. Наведемо список популярних медіа-запитів для стандарт- ного набору розширення екранів. У  2006 році в  інтернет-журналі A List Apart (https://alistapart. com/) вийшла стаття Доб- бельстіна, а  через 2 роки з’явилися медіа-запити. Приклад. style .block_left { width: 430px; } @media (max-width: 1220px) {   .block_right { width: 380px; } } @media (max-width: 1120px) {   #block { width: 325px; } } @media (max-width: 680px) { #block { width: 200px; } } /style
  • 178. 178 Розділ 3 @media only screen and (max-width : 1920px) {/* CSS правила */ } @media only screen and (max-width : 1680px) {} @media only screen and (max-width : 1366px) {} @media only screen and (max-width : 1280px) {} @media only screen and (max-width : 1024px) {} @media only screen and (max-width : 800px) {} @media only screen and (max-width : 768px) {} @media only screen and (max-width : 600px) {} @media only screen and (max-width : 533px) {} @media only screen and (max-width : 360px) {} @media only screen and (max-width : 320px) {} @media only screen and (max-width : 240px) {} @media only screen and (max-width : 176px) {} Адаптивні сайти з’явилися завдяки зростанню попиту тих користувачів, які хочуть завантажувати веб-сторінки з іде- альною структурою на всіх своїх пристроях. Саме зараз адап- тивний дизайн стає обов'язковим. Він значно спрощує регу- лярний серфінг в Інтернеті незалежно від того, який пристрій вибрав користувач для доступу до сайтів, які його цікавлять. Сьогодні прийнято вважати, що головне в адаптивній вер- стці — це прив’язка до конкретних пристроїв з певною роз- дільністю екрану. Стилі перемикаються від одного брейкпоін- та (контрольні точки, сталий термін у програмуванні, у ви- падку верстки означає перемикання з одних умов на інші) до іншого, тобто насправді є фіксовані макети для кожного девайсу. Традиційно макет сайта спочатку розробляється для десктоп- ної версії, а вже потім адаптується до мобільної. Люк Вро- блевскі у своїй книзі «Спочатку мобільні» запропонував піти від протилежного: розробити макет сайта для мобільної версії, а вже потім покращувати до десктопної. Вроблевскі керувався тим, що ускладнювати просте легше, ніж спрощувати складне. Рис. 11.57. Сайт Ітана Маркотта Ідея розробки адаптивної верстки належить Аарону Густафсону. У  своїй книзі «Адаптивний веб- дизайн» він запропонував гнучко адаптувати сайти до можливостей пристроїв і  браузерів.
  • 179. 17911.10. Адаптивна верстка... Книга Аарона Густафсона За Аароном Густафсоном, адаптивність — це особливий підхід до розробки сайта, який дозволяє вже наявним веб-ре- сурсам підлаштовуватися під розміри екранів різних пристро- їв. Інакше говорячи, сторінка повинна автоматично підлаш- товуватися під екран, змінювати розмір картинок тощо. Це дозволило усунути потребу в розробці дизайну для кожного нового типу пристрою. Основні особливості адаптивного дизайну: • застосування гнучкого макета на основі сітки (англ. flexible, grid-based layout); • використання гнучких зображень (англ. flexible images); • робота з медіа-запитами (англ. media queries); • плавна перебудова блоків у разі зміни розміру екрана (наприклад, під час повертання планшета) Якщо зображення гнучке, це означає, що його розмір змінюється залежно від розміру контейнера, в якому воно міститься (§ 11.12). Flexbox, CSS Grid і багатоколонкова верстка (Multi-column layout) є адаптивними за замовчуванням (їх специфікації були написані у світі, де адаптивний дизайн і крос-девай- сність вже стали реальністю). Це означає, що ім притаманні безліч функцій, які дозволяють легко створювати адаптивні сітки. CSS Flexbox (Flexible Box Layout Module) — модуль маке- та гнучкого контейнера, що являє собою спосіб компонування елементів. Технологія flexbox ставить на меті зробити шари гнучкими, а роботу з ними інтуїтивно зрозумілою. Flexbox складається з гнучкого контейнера (flex container) і гнучких елементів (flex items). Останні можуть вибудовува- тися в рядок або стовпець, а вільний простір розподіляється між ними різними способами. Модуль flexbox дозволяє: • розташовувати елементи в одному з чотирьох напрямків: зліва направо, справа наліво, зверху вниз або знизу вгору; • перевизначати порядок відображення елементів; • автоматично визначати розміри елементів так, щоб вони вписувалися в доступний простір; • розв’язувати проблему з горизонтальним і вертикальним центруванням; • переносити елементи всередині контейнера, не допускаю- чи його переповнення; • створювати колонки однакової висоти. Flex (від англ. Flex — розтягувати) і flex-inline — це пара- метри для властивості елемента display батьківського HTML-еле- мента, що містить дочірні блоки. На відміну від інших пара- метрів цього елемента (block || inline-block || table) вони не зада- ють новий тип відображення елемента. Вони надають можливість керувати поведінкою дочірніх елементів, вкладених у контейнер-обгортку з цією властиві- стю, наприклад, змінювати їх розмір і відстань між ними (рис. 11.59). Концепцію чуйного дизайну запропонував Ітан Маркотт у  2010 році та описав у  своїй книгі «Responsive Web Design». Особливістю такого підходу стала плавна зміна сайта, зорієнтована на вміст, а  не на конкретні пристрої. Книги Ітана Маркотта та Люка Вроблевські
  • 180. 180 Розділ 3 Рис. 11.58. Приклад адаптивної верстки на основі медіа-запитів Рис. 11.59. Приклад оголошення флексбоксу Flexbox дозволяє керувати елементами лише в одновимір- ному просторі, тому наступним кроком є розробка модуля GRID, який дозволяє оперувати стовпцями та рядками. Grid container (грід-контейнер) — це набір горизонтальних і вертикальних grid-ліній, що перетинаються. Ці лінії ділять простір на grid-області, де розташовуються grid-елементи. Усе- редині grid-контейнера є два набори grid-ліній: один визначає вісь стовпців, інший — вісь рядків. Модуль grid також пра- цює з елементом display (рис. 11.60). Рис. 11.60. Приклад використання модуля grid Для тих, хто хоче досконало вивчити властивості flexbox, можна спробувати свої сили в  грі Flexbox Froggy, де потрібно допомагати жабеняті Фрогі та його друзям написанням CSS коду (https://flexboxfroggy.com/#uk). Вивчити властивості модуля Grid допоможе гра «Морквяні городи» за посиланням https://codepip.com/games/grid- garden/ Більш детально з модулем Flexbox можна ознайомитися за посиланням https://css-tricks.com/snippets/ css/a-guide-to-flexbox/
  • 181. 18111.10. Адаптивна верстка... Рис. 11.61. Вікно гри Flexbox Froggy Запитання для перевірки знань Поясніть необхідність розробки адаптивних сайтів. Що таке медіа-запити? Чим обумовлена їх поява? Яка сфера використання медіа-запиту braille? Опишіть принципи адаптивного дизайну. Які інструменти дозволяють розробляти адаптивні сайти? Поміркуйте, чому для адаптивної верстки краще використовувати векторну графіку. 1 2 3 4 5 6 Завдання для самостійного виконання Для розуміння роботи адаптивного шабло- ну відкрийте сторінку Google (https://about. google/). Зменшуйте розмір вікна браузера і  слідкуйте за тим, як змінюються положення блоків, зни- кають зображення, як перетворюється меню в результаті зменшення вікна браузера. Опишіть зміни у  відображенні сторінки під час застосування режиму інспекції. Перегляньте код (рис. 11.62). Який механізм використовують розробники сайта для до- сягнення адаптивності? 1 2 3 Рис. 11.62. До завдання 3
  • 182. 182 11.11. Кросбраузерність Кожний користувач віддає перевагу певному браузеру. Хтось полюбляє вогняну лисичку, комусь до вподоби хром, а хтось не уявляє собі життя без сафарі. Поміркуйте, чи однаково обробляють браузери код сайта, який ви хочете переглянути? Як свідчить статистика, переважна більшість користувачів надає перевагу браузерам, які працюють на рушії Webkit, — Google Chrome і Safari (рис. 11.63). Рис. 11.63. Статистика використання браузерів Кожен браузер має свою історію, свої версії, які, у свою чергу, розрізняються підтримкою Javascript, HTML і CSS. Хоча різні браузери в основному дотримуються загальних правил і стандартів. Проте в деяких випадках буває, що алгоритми обробки HTML-кодів і каскадних таблицьHTML-кодів і каскадних таблицьHTML CSS можуть бути різ- ними. Це призводить до різного відображення одного і того самого елемента сайта в різних браузерах. Ознайомимося з історією створення популярних браузерів: Рік Опис 1994 З’явився один з перших вдалих браузерів Netscape Navigator, створений на основі пер- шого браузера з графічною оболонкою NCSA Mosaic 1994–1996 Компанія Microsoft розробила браузер Internet Explorer, однак перші три версії широко- го розповсюдження не отримали. Тривалий час браузери Netscape Navigator і Internet Explorer розвивалися паралельно, доки останній не захопив 95 % ринку. Далі в Internet Explorer застій (з 4.0 до 6.0 версії), а в Netscape Navigator, який був напи- саний на новому рушії Gecko, — відродження у версії 6.0. Оновлений Netscape Navigator не досяг колишніх вершин, та рушій Gecko у 2004 році по- служив основою для створення сучасного браузера Mozilla Firefox однойменної компанії 1996 У компанії Opera Soft AS з’явилася Opera, швидка і проста у використанні 2003 Корпорація Apple випустила браузер Safari на рушії WebKit 2008 Корпорація Google випустила браузер Google Chrome на тому самому рушії, що й Safari Розглянемо розвиток браузерів більш докладно. Веб-браузер Тіма Бернерса Лі WorldWideWeb дозволяв пе- реглядати текстові сторінки, перегляд зображень здійснювався Слово «браузер» (від англ. Вrowser — гортати) в англомовнихВrowser — гортати) в англомовнихВrowser програмах можна побачити на кнопках у діалогових вікнах. Крім браузера, найпопулярнішими варіантами перекладу є (веб-) перекладач або оглядач, а також (веб-) навігатор. Найпопулярніші браузери • Google Chrome • Safari • Mozilla Firefox • Opera • Internet Explorer
  • 183. 18311.11. Кросбраузерність... в окремих вікнах і був з чорно-білим інтерфейсом. Перший браузер, який отримав графічний інтерфейс, тобто не тіль- ки просто текст на чорному тлі, був розроблений у 1993 році і мав назву NCSA Mosaic (рис. 11.64). Рис. 11.64. Браузер Mosaic Наступником Mosaic став браузер Netscape (рис. 11.65). Його розробники додавали в HTML нові теги, які робили зовнішній вигляд документа більш привабливим. Ці теги не були стан- дартизовані й працювали лише в Netscape. Та оскільки част- ка Netscape на той час становила понад 90% від усіх наявних браузерів, це проблемою не було. Поява конкурента — Internet Explorer від Microsoft — і прак- тично відкрита війна між двома корпораціями за частку рин- ку, яка отримала назву «війна браузерів» (більш детально про війну браузерів можна дізнатись, переглянувши фільм «Download: The True Story of the Internet») призвела до сер- йозної проблеми, що полягала у відсутності єдиних стандар- тів відображення веб-сторінок. Дійшло до того, що на сайтах вбудовувалися кнопки Best viewed in Netscape і Best viewed in Internet Explorer. Найбільші відмінності виникали у підтримці JavaScript — мови сценаріїв, що додає інтерактивності документам. У ре- зультаті багато документів було «оптимізовано» для конкрет- ного браузера й абсолютно не читалися в іншому. Сьогодні виробники браузерів почали активно займати- ся своєчасною підтримкою стандартів World Wibe Web, HTML5 і CSS3, що, безсумнівно, позначилося на якості відображення веб-сторінок. Проте у деяких властивостях каскадних таблиць і трактуванні коду навіть зараз на різних рушіях зустріча- ються суттєві розбіжності, які необхідно виправляти вручну. Рис. 11.65. Браузер Netscape Рис. 11.66. Браузер Mozilla Moziila — це внутрішнє ім’я браузера Netscape Navigator, що означає Mosaic Killer (вбивця Mosaic). Назва здалася співробітникам фірми занадто зухвалою, пізніше так було названо нащадка Navigator — Mozilla Foudation. Браузер же отримав назву Phoenix на честь птаха Фенікс, який згоряє, щоб відродитися з попелу. Згодом цю назву було змінено на Firebird (Жар-Птиця), а потім на Firefox (бо дві попередні назви вже використовувалися іншими розробниками).
  • 184. 184 Розділ 3 Кросбраузерність  — це правильна верстка сайта, за допомогою якої веб-сторінки сайта однаково відобража- ються в  різних браузерах. Реалізація відбувається за до- помогою HTML і  CSS, а  також різноманітних хаків, в  ок- ремих випадках  — JavaScript. Для правильного відображення сайта одночасно в най- більш поширених браузерах, причому різноманітних версій (від найбільш ранніх до найновіших), веб-дизайнер обов’яз- ково має дбати про кросбраузерність проекту, сайта з першої секунди роботи над ним. Найбільш поширений спосіб, який застосовується багатьма веб-програмістами, — це написання так званих хаків — на- борів спеціальних селекторів або правил, які розуміє тільки якийсь певний браузер. Тобто якщо необхідно коректно відо- бражати сайт, скажімо, у трьох браузерах, то потрібно написа- ти по хаку для кожного браузера. Є ще один спосіб — просто використовувати ті елементи при верстці html-коду, які у всіх необхідних браузерах відображаються однаково. CSS-хаки  — уривки коду, що розуміються тільки одним певним браузером. Хаки — найбільш «брудний» спосіб ви- правлення помилок, робить код не естетичним і не дійсним, але робочим. У кожного браузера є свої вбудовані, експериментальні або нестандартні властивості, і для того щоб вони коректно працювали, використовують вендорні префікси. У назві неда- ремно використано слово префікси, бо, як і в граматиці, вони є приставкою, тільки в даному випадку до властивості CSS. Вендорні префікси є ще одним рудиментом браузерних воєн, особливо браузерів WebKit, більш «чистий» і чесний спо- сіб, ніж використання хаків. Кожен браузер має власні властивості з вендорним префік- сом, так, наприклад, елемент border-radius у MozillaFirefox пред- ставлений властивістю -moz-border-radius, а в Chrome і Safari — -webkit-border-radius. Такі властивості змінюють поведінку елемента тільки в певному браузері та ігноруються іншими платформами. Таким чином, вендорні префікси — приставки до стилів css , мають змістовне навантаження лише для тих браузерів, до яких належать. Вони дозволяють браузеру сприймати не- стандартні властивості, а також стилі, призначені для інших користувальницьких клієнтів. Можна скористатися плагіном Autoprefixer (https:// autoprefixer.github.io) (рис. 11.67), який аналізує правила CSS, що існують на сайті, та додає необхідні вендорні префікси. Як відомо, кожен браузер за замовчуванням має певний набір базових стилів, які він застосовує до сторінки. У різних браузерах ці правила трохи відрізняються. Щоб їх усунути та зробити за замовчуванням відображення сторінки у всіх браузерах однаковим, використовують спеціальні CSS-файли: reset.css або normalize.css. Вендорні префікси • • -webkit  — для Google Chrome, Safari і  iOs; • • -moz  — для Mozilla; • • -o  — для Опери; • • -ms  — для Internet Explorer. Американський веб-дизайнер Ерік Майєр запропоновав CSS Reset у  травні 2007 року. Майєр написав цілу низку популярних у світі веб-розробки книжок, таких як «Cascading Style Sheets: The Definitive Guide», «Eric Meyer on CSS». Має власний сайт (https://meyerweb.com). Рис. 11.67. Плагін створення вендерних префексів
  • 185. 18511.11. Кросбраузерність... Файл reset.css містить перелік усіх можливих HTML-тегів і скидає їх значення в нуль, тобто прибирає всі можливі від- ступи, робить шрифт однаковим у всіх тегах. Таким чином, всі заголовки й абзаци відображаються простим текстом, од- ним розміром і без відступів. Як наслідок відбувається ски- дання стилів за замовчуванням у всіх браузерах. Спочатку на сторінці користувачу слід підключити файл reset.css, а потім власний файл зі стилями style.css. У будь-якому браузері вся розмітка ґрунтуватиметься на тих стилях, які потрібно по- ставити в style.css. Завантажити файл можна із сайта https:// cssreset.com/. Рис. 11.68. Головна сторінка сайта CSS-reset Скидати всі стилі не завжди доречно, саме тому існує ще один (дещо інший) інструмент — normalize. На відміну від normalize.css нормалізує стилі (тобто приводить до єдиного ви- гляду у всіх браузерах). Після його застосування базові сти- лі відображення заголовків, розмір шрифтів, відступи тощо уніфікуються і відображаються у всіх браузерах однаково. Завантажити файл можна із сайта https://necolas.github.io/ normalize.css Потрібно віддавати перевагу універсальним елемен- там  — тим, які однаково працюють у  більшості браузе- рів. Робота лише з  ними зробить код коротким, чистим і  зрозумілим. Запитання для перевірки знань Що таке кросбраузерність? Які браузери ви знаєте? Що таке CSS-хаки, який їх недолік? Що таке вендорні префікси? Яким чином досягається кросбраузерність сайта? Знайдіть в  Інтернеті відомості про «війну браузерів» та підготуйте невеличку презен- тацію. 1 2 3 4 5 6 Наразі CSS-файли reset.css і  normalize.css є  найпопулярні- шими й  повністю відповідають HTML5. Найпростішим способом використання файлів є заванта- ження їх із сайтів у теку CSS та підключення на сторінках перед власним файлом стилів. Normalize.css — продукт гли- бокого дослідження відміннос- тей між початковими стилями браузера. Дослідження провів Ніколас Галахер, взявши за мету зберігати корисні налаштування; нормалізувати стилі для більшості HTML-елементів; коригувати по- милки й  основні невідповідності браузера; удосконалювати юзабі- літі непомітними поліпшеннями; пояснювати код, використовуючи коментарі та детальну докумен- тацію. Наразі normalize.css вико- ристовується в Twitter Bootstrap, HTML5 Boilerplate, GOV.UK, Rdio, CSS Tricks і  в  багатьох інших фре- ймворках, інструментах і сайтах. Для досягнення правильного відображення сайта в різних браузерах слід: використати вендорні префікси; підключити СSS-файл reset.css або normalize. css; намагатися використовувати елементи, що мають однакове відображення в  усіх браузерах.
  • 186. 186 Розділ 3 11.12. Графіка для веб-середовища Перші сайти містили виключно текстовий контент. Сучасні сайти наповнені різноманітними графічними об’єктами. Які, на вашу думку, інструменти необхідні для відображення графіки на сайті? Фотографії, рисунки, фонові малюнки — все це візуальні елементи веб-дизайну. Саме від них залежить зовнішній ви- гляд сайта, а також швидкість його завантаження. Загалом у веб-дизайні використовують чотири основні формати графіч- них файлів, які вже знайомі вам з курсу 10 класу. Формат JPEG (Joint Photographic Experts Group), або JPG, — це 16-бітовий формат растрових зображень, популяр- ний для зберігання цифрових фотографій, які мають дріб- ні деталі та яскраві кольори. Завдяки тому, що зображення у форматі JPEG швидко завантажуються, його вибирає біль- шість веб-дизайнерів для своїх сайтів. Проте JPEG не підтри- мує прозорість, і його не має сенсу використовувати для ло- готипів і піктограм. Формат GIF (Graphic Interchange Format) — це формат, об- межений 256 кольорами, дуже ефективний для зберігання логотипів, піктограм, таблиць. Проте GIF абсолютно не підхо- дить для цифрових фотографій із тисячами відтінків. На від- міну від формату JPG, він підтримує прозорість зображення та дозволяє створювати різноманітну анімацію (§11.13) Формат PNG (Portable Network Graphic) — є, можна сказа- ти, покращеним JPEG, і його зручно використовувати для про- стого й плоского графічного дизайну. PNG дозволяє працюва- ти із прозорістю краще, ніж GIF, проте він не підтримує ані- мацію. Зазвичай цей формат використовують для публікації невеликих картинок, логотипів, іконок, діаграм, графічних елементів із прозорістю, фотографій без втрати якості. Формат SVG (Scalable Vector Graphics) — найбільш поши- рений векторний формат, попит на який збільшується завдя- ки адаптивному дизайну у веб-розробці. Геометрична приро- да файлів SVG дозволяє легко адаптувати векторну графіку до потрібних параметрів. Розмір файла залежить від його склад- ності, так, для простих зображень SVG-файл матиме менший розмір, ніж будь-який растровий аналог (JPEG, PNG). Формат ідеально підходить для зберігання значків, логотипів, діа- грам. Серед його переваг — швидкість завантаження, чудове відображення на highDPI дисплеях, гнучкість і масштабова- ність тощо. Зазначимо, що ми говоримо насамперед про статичні зобра- ження. Їх легко зобразити, використовуючи елемент img. Розглянемо тег img і його атрибути. Елемент img є стандартним тегом для додавання графіч- них елементів на веб-сторінку. Цей тег вставляє зображення на сторінку в тому місці, де воно має з’явитися. Михайла Комвуті-Веру (псевдонім Леа Веру) — запрошена експертка в W3C CSS Working Group, фахівчиня, визнана в галузі фронт-енду. Авторка книги «Таємниці CSS. Ідеальні рішення повсякденних задач», багатьох статей у  популярному інтернет-журналі «A List Apart» та відомому блозі про можливості CSS3. Все більше веб-дизайнерів пристають до думки, що растрові зображення повинні використовуватися лише для фотографій. За своєю суттю будь-який сайт — це інтерфейс, і всі інтерфейси мають бути векторними. Саме тому безумовну популярність набуває використання векторного формату SVG. Про особливості SVG та його використання можна дізнатися на сторінці http://yoksel.github.io/ about-svg/?full#8
  • 187. 18711.12. Графіка для веб-... Тег img є непарним тегом. • Обов’язковим атрибутом є src (англ. source — джерело), який містить шлях до зображення. Зазвичай зазнача- ється або URL-адреса, або відносна адреса щодо місця розташування веб-сторінки, яка містить посилання на зображення. З огляду на стандарти розробки сайтів (§11.9) рекоменду- ється створювати окрему теку з назвою «images», в якій збері- гаються всі зображення, що містяться на веб-сторінках сайта. Тоді тег матиме такий вигляд: img src=images/2.jpg Тег відображає зображення лише графічних форматів GIF, JPEG, PNG і SVG. В атрибуті обов’язково має вказува- тися розширення. • Іншим атрибутом є alt (alternative), у якому вказується альтернативний текст — опис зображення для тих ви- падків, коли користувачі не можуть побачити картинку (приклад). Атрибут alt має надати достатньо інформації користувачеві, щоб він склав уявлення про те, що є на зображенні: img src=URL alt=альтернативний текст Нагадаємо, що в стандарті HTML5 теги мають лише семан- тичний зміст, а функції форматування покладено на каскадні таблиці стилів. Розглянемо CSS-властивості зображень. Розмір зображення задається двома параметрами: width — ширина зображення; height — висота зображення. Якщо не задавати розміри зображення, то, по-перше, воно відобразиться на сторінці в реальному розмірі (рис. 11.69, а), по-друге — браузер потребуватиме часу на те, щоб дізнати- ся розміри і завантажити зображення. Лише після цього він повернеться до завантаження іншого вмісту документа й, таким чином, виведення решти елементів затримається. Крім того, при маленькому розмірі зображення й довгому альтернативному тексті, ще до того як завантажиться графі- ка, тимчасово відбудеться зсув дизайну сайта. Адже довгий альтернативний текст буде займати стільки місця, скільки йому знадобиться. Якщо зазначити розміри зображення (рис. 11.69, б), то бра- узер спочатку зарезервує місце під зображення, підготує ма- кет документа, відобразить текст і лише потім завантажить зображення. Слід пам’ятати, що зображення можуть бути квадратни- ми або прямокутними. Якщо ми використовуватимемо оби- два параметри, браузер помістить зображення в прямокутник Тег img використовують для розміщення фотографій, логотипів, графічних елементів інтерфейсу тощо. Приклад. У  випадку, коли користувачі мають вади зору, використовується скрін-рідер, який читає описи зображень.
  • 188. 188 виділеного розміру, навіть якщо його реальні ширина й висо- та більші (стисне) або менші (розтягне), як на рис. 11.69. а б в Рис. 11.69. Використання атрибутів розміру зображення: у реальному розмірі (а); вказано ширину, браузер автоматично обчислив висоту (б); вказано однакові ширину і висоту, браузер відобразив прямокутну картинку як квадратну, тобто стиснув за шириною (в) Тепер розглянемо приклад. Приклад. 1 img src=images/02.jpg alt=Розміри зобра- ження не вказані 2 img src=images/02.jpg alt=Вказана шири- на зображення width=400 3 img src=images/02.jpg alt=Вказані ши- рина та висота зображення width=400 height=400 Якщо ми задамо тільки один з атрибутів, то інший буде обчислюватися автоматично для збереження пропорцій ма- люнка. Ширину й висоту зображення можна задавати як у піксе- лях (при цьому розмір картинки буде постійним незалежно від роздільності екрану), так і у відсотках — тоді розмір кар- тинки залежатиме від роздільності екрана користувача. Параметр border дозволяє створити рамку для зображення. Причому можна налаштовувати ширину та колір і стиль рам- ки за допомогою відповідних параметрів: • border-width; • border-color; • border-style. Додатково можна налаштовувати ці властивості для кожної сторони: • top (верхня), • left (ліва), • right (права), • bottom (нижня). Рис. 11.70. Відступи в CSS
  • 189. 18911.12. Графіка для веб-... Наприклад, border-left-width, border-bottom-color, border-right- style. • padding — внутрішні відступи між зображенням та рам- кою; • margin — задає відступи від зображення від усіх чоти- рьох країв; Можна задавати відступ від конкретного краю (рис. 11.70). Наприклад, • margin-top — відступ від верхньої сторони; • margin-right — відступ від правого боку; • margin-bottom — відступ від нижньої сторони; • margin-left — відступ від лівого боку. Аналогічно можна задавати внутрішні відступи: padding-top, padding-left, padding-right, padding-bottom. Запитання для перевірки знань Які графічні формати та  якими командами мови розмітки відображаються? Що таке скрін-рідер? Для чого він призна- чений? Які обов’язкові атрибути має тег для відобра- ження графічних об’єктів на веб-сторінці? Які стилі використовують для відображення графічного об'єкта на веб-сторінці? Обґрунтуйте використання атрибутів шири- ни та висоти зображення. Який вид комп'ютерної графіки краще вико- ристовувати для фотографій? 1 2 3 Які стилі використовують для відображення4 Які стилі використовують для відображення4 Які стилі використовують для відображення Обґрунтуйте використання атрибутів шири-5 Який вид комп'ютерної графіки краще вико-6 Який вид комп'ютерної графіки краще вико-6 Який вид комп'ютерної графіки краще вико- Завдання для самостійного виконання Створіть сторінки, на яких відображатимуть- ся графічні об’єкти, аналогічно рис.  11.71. Результат надішліть на електронну пошту вчителю.. а б в Рис. 11.71. До завдання 4
  • 190. 190 Розділ 3 11.13. Анімаційні ефекти Пригадайте, як часто ви бачите сайти, на яких немає жодної анімації. Анімація є одним із трендів у дизайні веб-інтерфейсів, вона вже давно стала невід’ємною частиною кожного сайта. Анімаційні ефекти можна застосовувати, як до окремих об'єк- тів, так і до зображень. Сучасні можливості анімації дозволяють зробити найрізно- манітніші слайдери: на повний екран, з 3D-ефектами, адаптив- ні (які переглядаються з будь-яких мобільних пристроїв) та ін. Анімація — це і крихітні, ледь помітні індикатори заван- таження, і цілі сторінки, на яких вам наче показують фільм. Важко назвати галузь веб-дизайну, де б не використовува- лись анімаційні ефекти: від декоративних елементів, що про- сто прикрашають інтерфейс, до ефектів, які активно вплива- ють на користувача. Перший варіант (найпростіший), який ми розглянемо, — анімовані об’єкти. Це окремі зображення і об’єкти, які по- казуються користувачеві. Наприклад, курсор, що рухається, плаваюча кнопка «вгору», кнопки заклику до дії, зміна ко- льору тощо. Другий варіант — анімовані зображення (наприклад, ре- кламні банери на сайті). Вони можуть вести на внутрішні сторінки, блог, перенаправляти відвідувача на інший сайт. Ще один приклад — слайд-шоу з фотографій. Анімаційні ефекти можна створювати як виключно засоба- ми каскадних таблиць стилів, так і за допомогою JavaScript. CSS-анімація робить можливим анімацію переходів (transitions) з однієї конфігурації CSS-стилю до іншої. Аніма- ція складаються з двох компонентів, а саме: зі стилю, котрий описує CSS-анімацію, та набору ключових кадрів (keyframes), які задають початковий і кінцевий стани стилю анімації (та- кож є можливість задання точок проміжного стану). Розглянемо порядок дій. Створення CSS-анімації. Крок 1 Починається з  оголошення імені анімації в  блоці @keyframes і  визначення так званих кроків анімації, або ключових кадрів. Крок 2 Після оголошення відкривається фігурна дужка (у нашому прикладі на чистому CSS), у  якій послідовно від 0  до 100  % прописуються властивості для кожного ключового кадру. Між цими значеннями можна вставляти скільки завгодно проміжних значень, наприлад 50  %, 75  % або навіть 83  %. Крок 3 Наступною командою є  використання CSS властивості animation. Приклад простої анімації — Плавне мерехтіння (зміна прозорості) наведено на рис. 11.72. Розглянемо спочатку таблицю властивостей animation, а по- тім приклад. CSS-анімація має певні ключові переваги перед традиційними скриптовими техніками анімації: • • легка у  використанні для простих анімацій і  не потребує знання JavaScript; • • чудово функціонує навіть під час помірного навантаження на систему на відміну від анімації JavaScript. Рис. 11.72. Код простої анімації
  • 191. 191 Анімація Опис animation-delay Змінює час затримки між часом із моменту завантаження елемента та початком анімаційної послідовності animation-direction Визначає зміну напрямку анімації та його чергування залежно від кількості про- ходів анімації, може задавати повернення в  початковий стан і  починати прохід заново animation-duration Визначає тривалість циклу анімації animation-iteration- count Визначає кількість проходів (повторів) анімації; можна також обрати значення infinite для нескінченного повтору анімації animation-name Задає ім’я для анімації @keyframes через at-правило, яке описує анімаційні клю- чові кадри animation-play-state Дозволяє призупиняти й  відновлювати анімацію animation-timing- function Задає конфігурацію таймінгу анімації; інакше кажучи, як саме анімація робитиме прохід через ключові кадри, це можливо завдяки кривим прискорення animation-fill-mode Визначає, які значення будуть застосовані для анімації перед початком і  після її закінчення Приклад. Зазвичай розробники не пишуть про всі ці властивості ок- ремо, а використовують короткий запис такої структури: animation: (1. animation-name — назва) (2. animation-duration — тривалість) (3. animation-timing-function динаміка руху) (4. animation-delay — пауза перед стартом) (5. animation-iteration-count — кількість виконань) (6. animation-direction — напрямок). У нашому прикладі Звичайна анімація 5 секунд НЕСКІН- ЧЕННА. Крім того, існує не менше сотні різноманітних плагінів та бібліотек. Розглянемо лише декілька з них. Animate.css — це фундаментальна бібліотека анімацій, су- місних з усіма браузерами та відповідних для безлічі завдань (рис. 11.73). Вона містить всі — від класичних підскакувань до останніх новинок і унікальних ефектів — і здатна задо- вольнити потреби практично будь-якого проекту. Anime.js — це вражаючий набір функцій, які дозволяють пов’язувати безліч анімацій, синхронізувати етапи, малювати лінії, змінювати форму об’єктів, створювати власні анімації тощо (рис. 11.74). CSS-Animate — це простий майданчик для написання робо- чого коду для будь-якої анімації. Достатньо задати ім’я, клас, властивості анімації і фрейму, і можна керувати часовою по- слідовністю і додавати маркери. Одне слово, налаштувати все Рис. 11.73. Головна сторінка Animate.css
  • 192. 192 Розділ 3 необхідне для створення стандартної анімації, заснованої на ключовому кадрі, як зображено на рис. 11.75. Рис. 11.74. Головна сторінка Anime.js Рис. 11.75. Головна сторінка CSS-Animate Запитання для перевірки знань Наведіть приклади анімації на веб-сторінці. Якими засобами можна створювати анімації? Опишіть послідовність команд у  CSS для створення анімації. Перегляньте відео на YouTube. Спробуйте створити просту анімацію за інструкцією. Дослідіть запропоновані плагіни, створіть засобами табличного процесора порівняль- ну таблицю характеристик. 1 2 3 4 5
  • 193. 193 11.14. Мультимедіа на веб-сторінках Коли ми «в один клік» створюємо власний відеоканал на YouTube, викладаємо фотозвіт про нашу мандрівку в «живий журнал», коментуємо нову книгу у  своєму блозі  — інакше кажучи, робимо звичні нам речі, ми навіть не згадуємо про технології, які дають змогу робити це так легко й  невимушено. Технології опрацювання мультимедіа зараз є одним із най- перспективніших і найпопулярніших напрямків сучасної ін- форматики. Мета — створення продукту, який передає інфор- мацію шляхом упровадження та використання нових техно- логій, набору зображень, текстів і даних, що супроводжують- ся звуком, відео, анімацією й іншими візуальними ефектами. Мультимедіа  — комп’ютеризована технологія, що об’єд- нує роботу зі всіма джерелами даних, засіб подання різ- них видів інформації у  цифровому вигляді. Ознайомимося з тим, які об’єкти належать мультимедіа (рис. 11.76). Ви вже знаєте, як вставляти графічні й текстові об’єкти у веб-сторінку. Далі розглянемо, як працювати з ау- діо- та відеооб’єктами. Слід зазначити, що всі дані, надіслані мережею, познача- ються певними назвами, які однозначно вказують їх тип, — так званими MIME (Multipurpose Internet Mail Extensions, ба- гатоцільові розширення пошти Інтернету). Тип MIME привласнює даним та сама програма, що їх і надсилає, наприклад веб-сервер (приклад). А браузер (тобто програма, яка їх отримує) визначає за типом MIME цих да- них, чи підтримувати цей тип даних, і якщо так, що саме з ними робити. Звукові файли мають розширення .wav, .au, .aif та ін. Філь- ми у форматі QuickTime мають розширення .qt або .mov, ві- део від Microsoft (Microsoft Video for Windows) — .avi (Audio Video Interface). mpeg — відеофайли (.mpg або .mpeg) у цьому форматі зазвичай мають великий розмір, забезпечують висо- ку якість відео, формат mpeg-4 дуже часто використовується при програванні відеофайлів оnline. Сучасні браузери працюють з кількома форматами мульти- медійних файлів із десятків наявних сьогодні. Не слід забу- вати, що різні браузери підтримують різні формати файлів. У таблиці наведено типи MIME-форматів мультимедійних файлів, які підтримуються браузерами: Формат файлів Тип MIME Браузери, якими підтримується MPEG4 video/mp4 Chrome, Safari (не підтримується Firefox, Opera) OGG, OGA, OGV audio/ogg (для аудіофайлів) video/ogg (для відеофайлів) Chrome, Firefox, Opera Текстові Об’єкти мультимедіа Графічні Аудіо Відео Рис 11.76. Класифікація об’єктів мультимедіа Приклад. • Веб-сторінка має тип MIME text / html. • Графічне зображення формату GIF має тип MIME image / gif. • Свої типи MIME мають і  мультимедійні файли.
  • 194. 194 Розділ 3 Формат файлів Тип MIME Браузери, якими підтримується MP4 video/mp4 Chrome, Safari WEBM video/webm Chrome, Firefox, Opera HTML5-відео — стандарт для розміщення мультимедійних файлів у мережі з оригінальним програмним інтерфейсом без залучення додаткових модулів. За допомогою елемента video з’явилася можливість дода- вати відеовміст на веб-сторінки, а також стилізувати зовніш- ній вигляд відеоплеєра за допомогою css-стилів. Для відображення на сторінці відеозапису необхідно ви- користовувати тег video, у якому використовується тег source, що має обов’язковий атрибут src, який визначає ад- ресу відео. Атрибут Опис Autoplay Автоматичне відтворення відеофайла відразу після завантаження сторінки controls Вказівка браузеру, що потрібно відобразити базові елементи управління відтворенням (відтворення, пауза, гучність) height Задання висоти вікна для відображення відеоданих, можливі значення: px або  % loop Циклічне відтворення відеофайла muted Вимикання звуку під час відтворення відеозапису poster URL-файл зображення, яке відображатиметься під час завантаження відеофайла або доти, поки користувач не натисне на кнопку PLAY. Якщо атрибут не задано, буде відображатися перший кадр відеофайла preload Атрибут, який відповідає за попереднє завантаження відеоконтенту. Не є  обов’язковим, деякі браузери ігнорують його auto- Браузер завантажує відеофайл повністю, щоб він був доступний, коли почнеться відтво- рення metadata Браузер завантажує першу невелику частину відеофайла, щоб визначити його основні характеристики none- Відсутність автоматичного завантаження відеофайла src Містить абсолютну або відносну URL-адресу відеофайла width Задає ширину вікна для відображення відеоданих, можливі значення: px або % Згадаємо, що перед використанням HTML5 елементів необ- хідно зробити такі дії. Крок 1 Указати правильний доктайп: !DOCTYPE html Крок 2 У стилях CSS позначаємо тип елемента HTML video як блочний video { display: block; } Закінчення таблиці Відео у форматі AVI на сайті за- собами HTML5 не відтворюється. Його слід конвертувати у форма- ти, які підтримуються браузерами. Можна скористатися онлайн-кон- верторами на кшталт VIDEO- CONVERTER (https://convert-video- online.com/)
  • 195. 19511.14. Мультимедіа на веб-... Крок 3 Для досягнення кросбраузерності доцільно перераховувати в source усі формати, починаючи з більш пріоритетного, та зазначати тип MIME для кожного відеофайла. З огляду на стандарти розробки сайтів (для дотримання правил створення структури сайта), варто в теці сайт створити додаткову теку video (audio), де розмістити відконвертовані відео- чи аудіофайли. В елементі video краще використовувати атрибут controls, який відповідає за відображення елементів керування плеєром. video controls source src=video/movie.mp4 type=video/mp4 source src=video/movie.webm type=video/webm source src=video/movie.ogv type=video/ogg /video До появи HTML5-відео стандарту використовувався елемент embed, який визначає контейнер для зовнішнього застосу- вання або інтерактивного вмісту (іншими словами, плагіна). Більшість браузерів протягом довгого часу підтримувало цей елемент. Проте даний тег не був включений у специфікацію HTML4, його додали в специфікацію HTML5. Запитання для перевірки знань Дайте означення мультимедіа. Наведіть приклади об’єктів мультимедіа. Що таке формат MIME? Поясніть необхідність конвертації відеофайлів. Які теги для яких форматів використовують? 1 2 3 4 5 Завдання для самостійного виконання Додайте на першу сторінку завдання § 11.12. два відеофайли (можна однакові), щоб вони відображалися, як наведено на рис. 11.77. Результат надішліть учителю. Підказка: використовуйте контейнер div зі стилем {display: inline-block;} Рис. 11.77. Відображення відеофайлів 1 Закінчення таблиці Наразі SWF — це основний формат для показу анімованої векторної графіки у вебі.
  • 196. 196 Розділ 3 11.15. Об’єктна модель документа Коли користувач уводить в адресний рядок назву сайта, браузер завантажує HTML-сторінку, після чого створює об’єктну модель документа — DOM. DOM є стандартом, запропонованим веб-консорціумом W3C (World Wide Web Consortium — консорціум Всесвітньої паву- тини), і регламентує спосіб подання вмісту документа (зокре- ма веб-сторінки) у вигляді набору об’єктів. DOM надає структуроване уявлення про документ та умож- ливлює доступ до цієї структури програмам, які можуть змі- нювати вміст, стиль і структуру документа. Подання DOM складається із структурованої групи вузлів і об’єктів, які ма- ють властивості і методи. Власне, DOM з’єднує веб-сторінку з мовами опису сценаріїв або мовами програмування. Веб-сторінка — це документ, який може бути поданий як у вікні браузера, так і в самому HTML-коді. У будь-якому ви- падку, це один і той самий документ. DOM надає інший спо- сіб подання, зберігання й керування цього документа. Він повністю підтримує об’єктно орієнтоване уявлення веб-сторін- ки, роблячи можливим її зміну за допомогою мови опису сце- наріїв на кшталт JavaScript. DOM подає HTML-теги у вигляді об’єктів із властивостями і методами. У кожного HTML-тега (об’єкта) на HTML-сторінці, завдяки DOM, є своя унікальна адреса. Отримуючи доступ за цією адресою, JavaScript може управляти HTML-тегом. Відкриваючи HTML-сторінку, браузер ство- рює на основі її тегів структуру DOM, де ко- жен HTML-тег постає у вигляді об’єкта зі своєю унікальною адресою. Після аналізу структу- рованого документа будується його подання у вигляді дерева (рис. 11.78, 11.79). Дерево в моделі DOM складається із мно- жини зв’язних вузлів (Node) різних типів. Усе, що є в HTML, знаходиться і в DOM. Навіть ди- ректива ! DOCTYPE ..., яку ми ставимо на по- чатку HTML, теж є DOM-вузлом і знаходиться в дереві DOM безпосередньо перед html. Рис. 11.78. DOM Document Root element: html Element: body Element: head Element: title Text: My title Element: a Attribute: href Text: My link Element: h1 Text: My header Рис. 11.79. Дерево вузлів DOM Об’єктна модель документа (англ. Document Object Model, DOM)  — це програмний інтерфейс (API) для HTML. Усі властивості, методи і  події, доступні для керування й  створення нових сторінок, організовані у  вигляді об’єктів.
  • 197. 19711.15. Об’єктна модель... DOM не є мовою програмування, але без нього JavaScript не мав би жодної моделі або уявлення про веб-сторінку, HTML-до- кумент, його елементи. Спочатку JavaScript і DOM були тісно пов’язані, але згодом розвинулися в різні сутності. Вміст сто- рінки зберігається в DOM і може бути доступним і змінюва- тися з використанням JavaScript. Таким чином, можна сказати, що DOM  — це веб-техно- логія, що дозволяє керувати HTML-тегами сторінки через мову JavaScript. Зазвичай розрізняють вузли декількох типів: Вузол Опис Документ (Document)  Корінь дерева, представляє цілий документ, інакше кажучи  — точка входу в  DOM Фрагмент документа (DocumentFragment) Вузол, який є  коренем піддерева основного документа Елемент (Element) Представляє окремий елемент HTML, можна сказати, що це основні будівельні блоки. Атрибут (Attr) представляє атрибут елемента Текст (Text) Представляє текстові дані, які містяться в  елементі або атрибуті Коментарі  Іноді можна включити інформацію, яка не буде показана, проте є доступною з  JS Стандартом визначаються деякі інші типи вузлів у моделі документа. Вузли деяких типів можуть мати гілки, інші мо- жуть бути лише листям дерева. Створення DOM-елементів: • document.create Element (tag); — створює новий тег. • document.create TextNode (text); — створює текстовий вузол. Додавання DOM-елемента: • parentElem.appendChild (elem); — додасть елемент у кінець дочірніх елементів; • parentElem.insertBefore (elem, nextSibling); — вказуємо, перед яким із дочірніх елементів додати новий вузол. Видалення DOM-елементів: • parentElem.removeChild (elem) — видалить конкретний еле- мент зі списку дітей батьківського елемента; • parentElem.replaceChild(newElem, elem) — видалить вказа- ний елемент і замінить його новим. Запитання для перевірки знань Що таке об’єктна модель документа? Яка організація і  чому запропонувала стан- дарт DOM? Як можна представити веб-сторінку? У чому перевага використання DOM? Назвіть типи вузлів. Як саме можна працювати з  веб-докумен- том завдяки DOM? 1 2 3 4 5 6 DOM  — стандарт, що розвивається і  поділяється на три рівні. Перший рівень є  першою версією стандар- ту і  поки що єдиною закінченою. Він складається з  двох розділів: перший є  ядром і  визначає прин- ципи маніпуляції зі структурою документа (генерація і  навігація), а  другий присвячений поданням у  DOM елементів HTML, що визна- чаються однойменними тегами. Другий і  третій рівні описують модель подій, доповнюють таблиці стилів, проходи по структурі.
  • 198. 198 Розділ 3 11.16. Веб-програмування та інтерактивні сторінки Ви вивчаєте основи програмування. Поміркуйте, чи можна використовувати мови, які ви вивчаєте, для розробки сайтів? Історія створення JavaScript починається в 1995 році, у са- мий розпал війни Netskape і Microsoft (див. про «першу вій- на браузерів» у § 11.11). Це був час, коли анімації, взаємодія з користувачами та інші види інтерактивності мали стати не- від’ємною частиною Інтернету майбутнього. Веб потребував легкої скриптової мови (мови сценаріїв), спроможної працювати з DOM (§ 11.15), який ще не було стан- дартизовано. Така мова, як пригадує її розробник Брендан Айк, була створена за 10 днів. Вона подавалась як скриптова для виконання невеликих клієнтських завдань у браузері. Веб-програмування  — галузь веб-розробки і  різновид дизайну, в  завдання якої входить проектування користу- вальницьких веб-інтерфейсів для сайтів або веб-додатків. JavaScript — мова програмування, що дозволяє реалізува- ти низку складних рішень у веб-документах. Вона допомагає зробити сторінки сайта більш інтерактивними, обробляє дії ко- ристувачів сайта. Це об’єктно-орієнтована клієнтська мова, яка підтримується додатками, що працюють з дизайном сайта. Разом з HTML і CSS JavaScript — третій важливий блок, на основі якого будується більшість стандартних веб-інтерфейсів Функції JavaScript дозволяють: • • зберігати дані в змінних • • активувати частину коду згідно з певними сценаріями, що реалізуються на сторінці сайта • • створювати контент, який оновлюється автоматично • • керувати мультимедійними можливостями (працювати з відео, анімувати зображення) JavaScript обробляється у веб-додатках на стороні клієнта, тобто у браузері. Завдяки цьому він може виконуватися на будь-якій операційній системі, а веб-інтерфейси, що працю- ють на його основі, є кросплатформними. Мова JavaScript має широке застосування в таких областях. AJAX (англ. Asynchronous Java Script And XML — асин- хронний JavaScript (мова програмування) і XML (мова розміт- ки веб-сторінок)) — дає змогу створювати набагато зручніші веб-інтерфейси користувача на тих сторінках сайтів, де необ- хідна активна взаємодія. Поки сервер обробляє запит, користувач може перегляда- ти вміст сайта. Браузер лише довантажує потрібні йому дані. Рівень використання AJAX значно підвищився після того, як компанія Google почала активно використовувати його у ство- ренні своїх сайтів, таких як Gmail, GoogleMaps і GoogleSuggest. Наведено деякі приклади застосування технології AJAX: відо- браження контенту, що періодично оновлюється (інтерактивні Брендан Айк — американський програміст, автор скриптової мови JavaScript. Синтаксис JS навмисно було розроблено максимально подібним до Java, який на той момент дуже активно використовувався, а динамічну типізацію запозичено від не менш популярної мови Perl. Функції в JavaScript — це просто ще один тип об'єкта. Ними можна оперувати, як і будь-якими іншими елементами. Цією особливістю JavaScript зобов’язаний Scheme. Наслідування реалізовано через прототипи, як у мові Self.
  • 199. 19911.16. Веб-програмування... карти); створення якісної анімації й графічних об’єктів у фор- маті 2D/3D. Поява формату JSON (англ. JavaScript Object Notation 0151 — запис об'єктів JavaScript) стала наступним важливим кроком. JSON був розроблений у 2001 році Дугласом Крокфордом. Цей легкий формат, який використовується для обміну даними, за- снований на підмножині мови JavaScript (спосіб створення об'єк- тів у JavaScript), яка використовувала можливості звичайного браузера та дозволяла веб-розробникам створювати веб-додатки з постійним двостороннім зв’язком із веб-сервером. Найкраще JSON працює разом із AJAX. Джеймс Гаррет за- пропонував цей формат у 2005 році. Пригадаємо, що суттєвою перевагою цього формату є можливість довантажувати дані, не перевантажуючи сторінку (про JSON і AJAX далі, у § 11.21). Comet — спосіб роботи веб-додатків, коли під час HTTP-з’єд- нання сервер відправляє дані браузеру без додаткових запитів. Браузерні ОС — код деяких браузерних операційних систем, який складається переважно (іноді понад 75 %) зі скриптів. Закладки — JavaScript має широке застосування в роботі програми, що розміщуються в закладках браузера. Браузерні скрипти — програмні модулі, які пишуться на цій мові і дають дуже багато можливостей (автозаповнення форм, зміна формату сторінок, приховування небажаного змі- сту, додавання інтерактивних елементів на сторінках). Серверні додатки — фрагменти коду, які виконуються на стороні сервера, де використовується Java 6. Мобільні додатки — JavaScript може бути корисною в цьому популярному напрямку. Віджети — на мові JavaScript пишуться різні міні-програми, які використовуються в робочому просторі і є дуже зручними. Прикладне програмне забезпечення — об’єктно-орієнтована мова JavaScript використовується для створення окремих про- грам, у тому числі нескладних ігор. Наразі JavaScript є однією з найбільш популярних клієнтських мов. Почувши словосполучення «інтерактивна сторінка», багато хто асоціює його з різними flash-ефектами, що активуються залежно від місця розташування курсору миші відвідувачів сайта. Проте цей стереотип дещо неправильний. Для реалі- зації інтерактивних «властивостей» сайтів застосовуються спеціальні програмні коди — серверні скрипти. Саме вони обробляють дані, отримані від відвідувачів сайта, і формують відповідну html-сторінку. Для написання серверних скриптів застосовуються серверні мови веб-програмування, такі як PHP, Perl, ASP.NET. Виконуєть- ся серверний скрипт на стороні сервера: відвідувач не бачить вихідного програмного коду виконуваного скрипта, а отримує тільки готову відповідь. Створити інтерактивну сторінку — означає створити сто- рінку, що вміє «спілкуватися» зі своїми відвідувачами. Про- ста статична сторінка доступна лише для перегляду. Для того щоб зв’язатися з адміністрацією сайта або зробити замовлення, Дуглас Крокфорд  — американський програміст, творець текстового формату обміну даними JSON. Джеймс Гаррет  — основоположник науки «інформаційна архітектура», засновник компанії Adaptive Path, яка займається консультаціями зі створення сайтів, дружніх до користувачів. Переваги JavaScript • • підтримує всі браузери • • перевіряє реєстраційні форми на помилки ще до відправлення на сервер • • створює яскраві й  інтер­ активні сторінки сайта • • може здійснювати різного типу обчислення
  • 200. 200 Розділ 3 відвідувачеві необхідно зателефонувати за контактним теле- фонним номером, написати електронного листа на e-mail або відправити факс. Інтерактивність сторінки насамперед забезпечується за до- помогою HTML-форм: реєстраційних, відправки повідомлень, онлайн-замовлень тощо. HTML-форми — це елементи управління для збирання ін- формації від відвідувачів веб-сайта. Такі форми є набором тек- стових полів, кнопок, списків та інших елементів управління, які активізуються клацанням миші. Завдання форми полягає в передаванні даних користувача віддаленому серверу. Для отримання й опрацювання таких даних використову- ються мови веб-програмування: PHP або Perl. У HTML5 розроблено дуже потужний інструментарій для створення форм будь-якої складності. Далі ми розглядатиме- мо лише створення найпростіших форм. Базою для форми є парний тег form — контейнер, який утримує всі елементи керування форми, — поля, що групуються залежно від призначення форми. Зага- лом можна сказати, що кожна форма є набором логічно пов’язаних елементів. Серед атрибутів тегу є два обов’язкові: action і method. Action містить url-адресу, яка визначає, куди буде надісла- но дані форми. Method визначає спосіб відправлення даних із форми. Він може набувати двох значень: get (за замовчуванням надсилає дані на сервер через адресний рядок, тобто їх видно в адрес- ному рядку браузера ) та post (приховує запит). Зазвичай використовується post, оскільки він дозволяє передавати ве- ликі обсяги даних. Елемент input є одинарним (непарним) тегом і створює більшість полів форми. Атрибути елемента відрізняються за- лежно від типу поля, для створення якого використовуєть- ся цей елемент, тому першим обов’язковим його атрибутом є  type. Розглянемо найчастіше використовувані значення атрибута type, які наведено в таблиці: Назва Опис Text Створює у формі текстові поля, виводячи однорядкове текстове поле для введення тексту Submit Створює стандартну кнопку, що активізується клацанням миші, збирає інформацію з  форми й надсилає серверу для опрацювання Reset Кнопка для повернення даних форми в початкове значення Placeholder Містить текст, який відображається в полі введення до заповнення (найчастіше це підказка), тобто в текстовому полі відображатиметься текст підказки, який зникне, щойно буде введе- но певний текст E-mail Браузери, що підтримують цей атрибут, очікують, що користувач уведе дані, відповідні син- таксису адреси електронної пошти Password Створює у формі текстові поля, при цьому символи, що вводяться користувачем, заміню- ються на зірочки (або інші значки, встановлені браузером) Під інтерактивним слід розуміти сайт, контент якого формується «на льоту». Поняття «інтерактивний» можна віднести до всіх сайтів, що мають форми відправки повідомлень, онлайн-анкети та опитування, реєстраційні форми, лічильники відвідувань, форми для онлайн- замовлень та інші подібні елементи. За допомогою css-стилів можна змінювати розмір, тип і колір шрифта, інші властивості тексту, а також додавати межі, колір тла і зображення тла. Ширина поля задається властивістю width.
  • 201. 20111.16. Веб-програмування... Слід наголосити, що type = email і type = password забез- печують специфічну семантику для введення, визначаючи, яку інформацію повинно містити поле. Другий атрибут, який необхідно зазначати, це name — ім’я поля, необхідне для правильного опрацювання даних на сервері. Зазвичай воно повинне бути унікальним, принаймні в межах форми, для його імені використовується латиниця. Для оформлення форми незайвим буде робити підписи до полів. Для цього існує спеціальний тег — парний тег label. Його завдання — створення логічного зв’язку між текстом і полем введення. Крім того, якщо клацнути на текст такого підпису, то курсор переміститься у відповідне поле. Найпростіший спосіб створити підпис — це просто оберну- ти текст підпису і тег поля на тег label таким чином: label Введіть ім’я input type = text name = username /label. Запитання для перевірки знань Що таке веб-програмування? Яка мова програмування є  базовою у  веб-розробці? Наведіть приклади використання JavaScript. Опишіть призначення форм. З яких елементів складається форма? Як досягається інтерактивність сторінок? Розгляньте такі елементи форми: текстові поля введення (textarea), розкривні списки (select), кнопки (button), прапорці (input type = checkbox), перемикачі (input type = radio). Інформацію про дані елементи оформте у вигляді презентації. 1 2 3 4 5 6 Завдання для самостійного виконання Додайте до вашого сайта HTML-сторін- ку з  назвою form.html і створіть на ній форму такого вигляду, як наведено на рис. 11.80. Рис. 11.80. Приклад форми Більш детально ознайомитися з можливостями HTML-форм можна за посиланням https:// css.in.ua/html/tag/form, https:// developer.mozilla.org/en-US/docs/ Web/HTML/Element/form
  • 202. 202 Розділ 3 11.17. Хостинг сайта Поміркуйте, як інші користувачі можуть отримати доступ до створеного вами сайта. Сайт створюється насамперед для того, щоб його відвіду- вали користувачі. Для цього якимось чином їм потрібно на- дати доступ до нього. Звісно, ми можемо розмістити наші веб-сторінки на власному комп’ютері й використовувати його як сервер. Проте це має бути потужний комп’ютер з безпе- решкодним доступом до нього в режимі «нон-стоп» (тобто 24 години на добу і 7 днів на тиждень), а також виділений канал передавання даних, який надає можливість одночасного звер- нення до серверу великій кількості осіб. Оскільки описане не завжди можливо, логічно звернутися до організацій, які спе- ціалізуються на наданні хостингу. Веб-хостинг — це послуга, що дозволяє приватним особам, підприємствам і організаціям розміщувати в Інтернеті веб- сайт або веб-сторінку. Послуги хостингу надають технології та підтримку, необхідні для перегляду веб-сайта або веб-сто- рінки в Інтернеті. Веб-сайти розміщуються або зберігаються на спеціальних комп’ютерах, які називають серверами, що обслуговуються або належать службі веб-хостингу, або передані в оренду сто- ронніми службами, які експлуатують «ферми серверів» або Дата-центри. Хостинг (англ. hosting)  — послуга, що включає надання дискового простору, підключення до мережі та інших ресурсів для розміщення фізичної інформації на сервері, що постійно перебуває в  мережі (наприклад, Інтернету). Зазвичай до послуг хостингу вже входить надання місця для поштової кореспонденції, баз даних, DNS-файлового схови- ща тощо, а також підтримка функціонування відповідних сер- вісів. Однак вони можуть надаватися і окремо. А власне послу- га може бути обмежена розміщенням поштової кореспонденції та відповідного ПЗ (поштовий хостинг), клієнтських файлів (файловий хостинг), виключно відеофайлів (відеохостинг) або інших файлів певного типу та за певних умов. Провайдерами хостингу можуть виступати як компанії, що спеціалізуються на цих послугах («хостери»), так і великі провайдери інформаційних послуг, що спеціалізуються на ін- ших послугах (такі як Google, Microsoft, Yahoo та ін.). Розрізняють такі види хостингу. • • Віртуальний хостинг • • Віртуальний виділений сервер • • Виділений сервер • • Хмарний хостинг • • Керований WordPress хостинг • • Веб-хостинг Поняття хостингу включає широкий спектр послуг із використанням різного апаратного та програмного забезпечення. Зазвичай під цим поняттям, як мінімум, мають на увазі послугу розміщення файлів сайта на сервері, на якому запущене ПЗ, необхідне для обробки запитів до цих файлів (веб-сервер). Послуги хостингу можуть надаватися у  пакеті з  іншими інформаційними послугами, такими як реєстрація доменного імені, створення сайта, надання додаткового ПЗ тощо. 2 з 5 користувачів Інтернету відмовляються від повільного завантаження веб-сайта (під по- вільним розуміється сайт, який завантажується більш ніж 3 с). 1,5 млрд доларів щорічно втра- чаються в економіці США через повільне завантаження веб-сай- тів, а затримка на 1 с знижує коефіцієнт переходів на 7 %.
  • 203. 20311.17. Хостинг сайта... Розглянемо види хостингу більш детально (рис. 11.81). Віртуальний хостинг (virtualhosting або sharedhosting) — користувачеві надається частина місця на диску для розмі- щення веб-сайтів. При цьому середовище виконання веб-сер- вісів єдине для багатьох користувачів, а апаратні і програмні ресурси розподілені між усіма користувачами на одному сер- вері, де може розміщуватись від 50 до 1000 користувачів. Перевагами віртуального хостингу є відносно низькі ціни та набір послуг, що є адекватним для функціонування не- великого та оптимізованого сайта. Недоліками віртуального хостингу можна вважати те, що через розподілення ресурсів серверу між багатьма корис­ту­вачами, надмірне споживання цих ресурсів одним сайтом може вплинути на роботу інших. Віртуальний виділений сервер (VPS або VDS) — послуга, в рамках якої користувачеві надається так званий віртуальний виділений сервер. Спосіб керування операційною системою зде- більшого відповідає управлінню фізичним виділеним сервером. Зокрема, права адміністратора, root-доступ, власні IP-адреси, порти, правила фільтрування і таблиці маршрутизації. Виділений сервер (dedicated server) — сервер надається повністю і використовується для реалізації нестандартних завдань (сервісів), розміщення «важких» веб-проектів, які не можуть співіснувати на одному сервері з іншими проектами і вимагають для себе всі ресурси сервера. Колокація (collocation) — надання місця в дата-центрі про- вайдера для обладнання клієнта (зазвичай шляхом монтажу в стійці) і підключення його до Інтернету. Надає можливість користуватися інфраструктурою дата-центру (системами охо- лодження повітря, пожежної безпеки тощо). Колокацією користуються переважно досвідчені клієнти, що мають достатньо навичок для підключення і адміністру- вання власних серверів, або компанії, що самі надають ін- формаційні послуги. Хмарний хостинг (cloudhosting або cloudstorage) — послуга з розміщення файлів користувача, за якої дані зберігаються на багатьох серверах, що розподілені в мережі (рис. 11.82). Файли зберігаються у так званій «хмарі», що фізично скла- дається із серверів, які можуть знаходитися далеко один від одного, але з точки зору користувача працюють як один по- тужний віртуальний сервер. Перевагами хмарного хостин- га є можливість колективної роботи з даними та відсутність прив’язки до ресурсів одного окремого серверу. За наведеними даними (рис. 11.83), безперечним лідером є WEB Services Amazon, скорочено AWS (https://aws.amazon.com/), із величезним набором інструментів. Платформа була піоне- ром у цій галузі й завоювала чималий ринок. Можливості Amazon вже сьогодні не мають собі рівних і продовжують зро- стати в геометричній прогресії. Microsoft Azure (https://azure.microsoft.com/en-us/) — близь- кий конкурент AWS із надзвичайно розвиненою інфраструк- турою. Система існує з 2010 року й розвивається швидкими темпами. Наразі Microsoft Azure являє собою багатогранну а б в Рис. 11.81. Деякі види хостингу: віртуальний хостинг (а); віртуальний виділений сервер (б); виділений сервер (в) Віртуальний виділений сервер надає більше можливостей і  привілеїв, а  часто і  більше ресурсів, ніж віртуальний хостинг. Водночас він є  і  більш дорогим. Виділений сервер вважається найбільш ефективним і  водночас найдорожчим серед усіх видів хостингу. Управління ним потребує від користувача найбільше технічних знань і  навичок. Рис. 11.82. Логотипи платформи хмарного хостингу
  • 204. 204 Розділ 3 складну систему, яка забезпечує підтримку багатьох видів по- слуг, мовних програм і фреймворків. Третє місце посідає Google Cloud (https://cloud.google.com/), який з’явився на ринку хмарного хостінгу пізніше, проте його провідна роль у галузі штучного інтелекту, машинного навчання й аналітики даних надає значні переваги. Рис. 11.83. Рейтинг платформ хмарного хостингу Реселлер хостинг (resellerhosting) — хостинг з послугою пере- продажу. Користувачеві надається можливість розподіляти дис- ковий простір і ресурси свого віртуального хостингу або серве- ра з метою розміщення на ньому сайтів третіх осіб, що можуть бути його клієнтами. Пакет послуг такого хостингу зазвичай включає спеціальне програмне забезпечення для управління клієнтською базою, ресурсами, що надані клієнтам, тощо. Зазвичай компанія, що надає безкоштовний хостинг, за- робляє шляхом показу реклами на сторінках, розміщених на ньому. Такий хостинг, як правило, повільніший від платно- го, надає тільки базові послуги, ненадійний. Безкоштовний хостинг часто надається для того, щоб через якийсь час пере- вести користувача на платну основу шляхом погіршення умов користування. Безкоштовний хостинг використовують приватні особи для своїх домашніх сторінок на початковому етапі їх розвитку. Громадські організації можуть використовувати як платний хостинг, так і безкоштовний. Комерційні організації прак- тично завжди користуються послугами платного хостингу. Веб-хостинг є одним із типів інтернет-хостингу, який доз- воляє окремим особам та організаціям зробити свій сайт до- ступним через World Wide Web. Сайти компаній, які надають місце на сервері, що належать або орендовані для викори- стання клієнтами, а також інтернет-з’єднання, як правило, розташовані у центрі обробки даних. • • Зараз у світі існує близько 1,94 млрд веб-сайтів. Перша мільярдна позначка була досягнута у вересні 2014 року. • • 10 найбільших хостингових компаній становлять 24 % ринку веб-хостингу, тобто кожен четвертий веб-сайт користується послугами цих компаній. Який би тип хостингу не вибрали користувачі, їм необхідна панель керування веб-хостингом, яка дозволяє: • • керувати файлами; • • здійснювати статистику трафіку; • • адмініструвати бази даних; • • зберігати облікові записи електронної пошти та конфігурацію; • • керувати протоколом FTP; • • здійснювати переадресацію; • • автоматизувати виконання задач, які повторюються (наприклад, за допомогою популярної утиліти Cron); • • формувати DNS.
  • 205. 20511.17. Хостинг сайта... Багато інтернет-провайдерів (ISP) пропонують цю послу- гу безкоштовно для абонентів. Приватні особи та організації можуть також отримати веб-сторінку хостингу від альтерна- тивних постачальників послуг. Особистий веб-сайт хостинг, як правило, безкоштовний або недорогий. Бізнес веб-сайт хостинг часто платний. Насамкінець, WordPress хостинг — це різновид загального хостінгу, який спеціально створений для розміщення сайтів на WordPress. При цьому сервер налаштований на найбільш оптимальний режим роботи саме з CMS WordPress. На сайті ві- дразу є заздалегідь встановлені плагіни для кешування, без- пеки тощо. Завдяки оптимізованій конфігурації сайт швидше завантажується, також існують додаткові функції, пов’язані з WordPress, такі як додаткові теми WordPress, конструктори сторінок простих перегортань і спеціальних інструментів роз- робки. Прикладом такого хостингу є перший спеціалізований хостинг в Україні (https://wphost.me/). Рис. 11.84. Приклад найбільш поширеної панелі керування веб- хостингом cPanel Запитання для перевірки знань Що таке хостинг? Назвіть види хостингів. Опишіть різницю між віртуальним виділе- ним сервером; виділеним сервером. Пригадайте, що таке SSL. Знайдіть в  Інтернеті відомості про укра- їнських інтернет-провайдерів. Порівняйте вартість їх послуг. Результати подайте у  ви- гляді інфографіки. Які, на вашу думку, недоліки має безкош- товний хостинг? 1 2 3 4 5 6 Існує ціла низка веб-панелей керування хостингом (Parallels Plesk Panel, DirectAdmin, Webmin тощо). Деякі хостингові компанії використовують один тип панелі керування хостингом, тоді як інші дозволяють обирати один із чотирьох варіантів. Сьогодні більшість панелей керування хостингом також дозволяють одним натисканням кнопки установлювати популярні сценарії, такі як WordPress. cPanel є найпопулярнішою панеллю керування хостингом онлайн (рис. 11.84) завдяки її легкому налаштуванню. cPanel розроблена на початку 1996 року для серверів Linux. Проте компанія пропонує панель управління хостингом під назвою Enkompass, створену й для серверів Windows. Крім того, існує додаткова панель керування, яка дає змогу адмініструвати декілька веб- сайтів і налаштувати кожен аспект сервера.
  • 206. 206 Розділ 3 11.18. Веб-сервер та бази даних Що таке протокол HTTP? Опишіть принцип його роботи. Пригадаємо, що розробка зі сторони браузера називається front-end, а розробка на стороні сервера — back-end. Наразі мова піде про розробку функціоналу на стороні сервера. Сер- верну сторону веб-сайта найчастіше пишуть такими мовами програмування, як Python, PHP, Java, C#, Ruby, JavaScript. Щоб завантажити веб-сторінку, браузер відправляє запит до веб-сервера, який приступає до пошуку запитуваного фай- ла у своєму власному просторі пам’яті. Знайшовши файл, сер- вер його зчитує, опрацьовує як йому потрібно й повертає до браузера. Отже, веб-сервер повинен містити файли веб-сайта, а саме всі HTML-документи і пов’язані з ними ресурси, вклю- чаючи зображення, CSS-стилі, JavaScript-файли, шрифти й ві- део. Веб-сервер забезпечує підтримку HTTP. Веб-сервер — це програма, яка створює і повертає від- повіді на запити веб-pecypcів клієнтами. Порядок дій опрацювання клієнтського запиту: 1) синтаксичний аналіз запиту; 2) перевірка повноважень; 3) зв'язування URL у запиті з ресурсом у файловій системі сервера; 4) побудова відповіді; 5) повернення відповіді клієнту, який звернувся із запи- том. Сервер може генерувати повідомлення-відповідь у різний спосіб. У найпростішому випадку сервер лише витягує файл, асоційований із URL, і повертає вміст клієнту. В інших випад- ках сервер може викликати сценарій, який зв’язується з ін- шими серверами або БД для побудови повідомлення-відповіді. Моніторингові компанії приводять порівняльну статистику, зіставляючи кількість наявних сайтів для різних веб-серверів. І слід зазначити, що у всіх подібних дослідженнях фігурують лише три назви: Apache, IIS (сервер компанії Microsoft) і NGINX (рис. 11.85). Саме на цих трьох китах тримається основна ча- стина мережевого світу. Безумовним лідером понад 20 років залишається Apache. Розглянемо найпопулярніші веб-сервери. Apache — кросплатформний веб-сервер (рис. 11.86), він добре працює як на Unix-, так і на Windows-серверах. Сервер і клієнт взаємодіють за протоколом HTTP, і Apache відповідаль- ний за безпечне з’єднання між двома машинами. Веб-сервер працює з різними мовами програмування (PHP, Python, Perl та ін.) за допомогою спеціального модуля Apache (mod_php, mod_ python, mod_perl та ін.). Рис. 11.85. Рейтинг популярності веб-серверів (станом на 2018 рік) Перший у світі веб-сервер, робоча станція NeXT Computer з Ethernet, 1990. На етикетці написано: «Ця машина є сервером. НЕ ВИМИКАТИ!!»
  • 207. 20711.18. Веб-сервер та бази ... Якщо отримано запит із розширенням .php, сторінки обро- бляються PHP (Hypertext Preprocessor або Personal Home Page). PHP є мовою сценаріїв, який не залежить від платформи, сце- нарії вбудовуються в HTML-код. Інтерпретатор РНР виконується під управлінням веб-сервера, інтерпретатор здійснює синтак- сичний аналіз і обробку файлів. РНР-файл може містити дані, відправлені користувачем у HTML-формах. Nginx — веб-сервер, перший реліз якого відбувся в 2004 році. Наразі він набув значної популярності. Nginx було ство- рено для розв’язувння так званої «проблеми c10k» — пробле- ми 10 тисяч з'єднань. Це означає, що веб-сервери, що вико- ристовують потоки, не можуть обробляти запити користува- чів більше ніж з 10 000 підключень одночасно. Веб-сервер Nginx має подійно-орієнтовану архітектуру, тоб- то він обробляє кожен вхідний запит в єдиному потоці. Він використовується сайтами з великою кількістю показів, таки- ми як Netflix, Pinterest і Airbnb. Apache Tomcat — ще один HTTP-сервер, проте він обробляє додатки Java замість статичних сайтів. Google Web Server, IBM HTTP Server (IHS), Oracle HTTP Server (OHS) — всі ці сервери ба- зуються на Apache і доопрацьовані відповідно компаніями Google, IBM та Oracle. Сервер Apache Tomcat, опрацьовуючи HTTP-запит, виконує: 1) перетворення URL-запиту в шлях до файла у файловій системі сервера; 2) визначення, чи має запит дозвіл на доступ до файла; 3) ідентифікацію; 4) виклик обробника для створення відповіді; 5) передачу відповіді клієнту; 6) створення запису про запит у журналі NODE.JS — також кросплатформений веб-сервер. Він пра- цює з одним потоком, і його перевага в тому, що і клієнт- ська частина, і серверна частина написані однією мовою — JavaScript. Запити до бази даних можна робити, також вико- ристовуючи цю мову. Ознайомимося з цікавими сторінками історії. У 1994 році співробітник Національного центру додатків для суперкомп’ютерів в Уні- верситеті Іллінойсу США (NCSA) Роб Мак- кул виклав у загальне користування пер- ший веб-сервер — NCSA HTTP daemon. Сервер набув поширення, а влітку 1994 року Мак- кул залишив університет і розробки припи- нилися. Невелика група зацікавлених веб-май- стрів почала спільну роботу над продуктом. Спілкуючись у дискусійному листі електро- нною поштою, вони розробляли нововведення на базі NCSA Server 1.3. Саме вони й заснува- ли Apache Group, яка розробила першу версію Apache-сервера. Сталося це у квітні 1995 року, коли з’явився перший офіційний публічний реліз Apache 0.6.2. Назва «Apache» була пов'я- зана з широким використанням розробника- ми технології «програмних латок» (patches) і є скороченням від «а patchy server». У РНР є гнучкі засоби підтримки роботи з БД. Замість того щоб вбудовувати інформацію в HTML-файл, деякі програми можуть генерувати весь ресурс. У цьому випадку URL може розв’язувати різні завдання, такі як доступ до інформації в  БД або створення відповіді, зміст якого залежить від клієнта, який звертається із запитом. Рис. 11.86. Логотипи найпопулярніших веб-серверів
  • 208. 208 Розділ 3 Робота над сервером не припинялася. Після численних випробувань 1 грудня 1995 року, з’явилася версія 1.0, стійка і на- дійна. Протягом усіх цих років і до сьогодні Apache залишається абсолютно безкоштовним. За да- ними NetCraft, Apache на сьогоднішній момент встановлено на 67% всіх серверів світу. Ми вже говорили, що у веб-серверів є досить розвинені за- соби підтримки роботи з БД. Пригадаємо, що бази даних (БД) поділяються на реляційні та нереляційні. Щоб комунікувати напряму із реляційною базою, потрібно освоїти ази мови запитів БД — SQL. Проте з часом виникла потреба у складних веб-сайтах, що повинні бути швидкими при великих об’ємах даних, у веб-чатах, можливостей реля- ційних БД уже бракувало. Були розроблені так звані нереляційні (NoSQL) БД. Вони діляться на дві підгрупи: перша група розв’язує питання швидкодії під час роботи з великими об’ємами даних, а дру- га група дозволяє будувати ефективні «живі» веб-застосунки (такі як чати і новини в соцмережах). Звернемо увагу, що поняття веб-сервера несе два змістових навантаження. З одного боку, це сервер, на якому розміщено веб-сайт з усіма файлами, з яких він складається, а з іншо- го — так називається програма, що опрацьовує запити клієн- тів, які стосуються веб-ресурсів. Сервер додатків — сервер, на якому створені додатки, які використовують вашу БД, веб-сервіс і т. д. Цей сервер додат- ків буде розміщувати бізнес-рівень (загорнутий веб-службами), заплановані завдання, служби Windows та ін. Сервер баз даних — матиме одну або кілька БД, таких як Oracle, SqlServer, MySql та ін. Програмне забезпечення веб-сервера, додатків і БД може працювати на одному фізичному сервері або розподілятися по кількох фізичних машинах. На більшості великих сайтів є кілька машин; більшість «споживчих» хостингових пакетів запускаються в одному вікні. Логічно поділ виглядає таким чином. Веб-сервер обробляє запити HTTP (S) і передає їх «обробникам». У них є вбудовані обробники для запитів файлів — HTML-сторінки, зображення, CSS, JavaScript і т. д. Якщо необхідно обробити динамічну сторінку, сервер пере- дає її спеціальній програмі, яка і формує остаточну сторінку. Така програма називається сервером додатків. Вона виконує читання коду, що знаходиться на сторінці, формує остаточ- ну сторінку відповідно до прочитаних кодів, а потім вилучає його зі сторінки. У результаті всіх цих операцій виходить статична сторін- ка, яка передається веб-сервером, який, у свою чергу, від- правляє її клієнтському браузеру. Всі сторінки, які отримує браузер, містять тільки HTML-код. До найпопулярніших реляційних БД належать MySQL, PostgreSQL, Oracle. До найпопулярніших нереляційних БД належать MongoDB, CouchDB, HBase, Redis, Cassandra. Існує багато серверів- додатків. Причому деякі з них орієнтуються на певні категорії веб-сайтів, такі як блоги, вікі- сторінки або інтернет-магазини; деякі, наприклад системи управління контентом, є більш універсальними.
  • 209. 20911.18. Веб-сервер та бази ... Сервер додатків надає можливість використовувати БД (приклад). Програмна інструкція, призначена для отримання даних із БД, називається запитом до бази даних. Запит складаєть- ся з критеріїв пошуку, записаних за допомогою мови запитів SQL. Текст SQL-запиту розташовується в сценаріях сторінок на стороні сервера або в тегах. Сервер додатків не може безпосередньо отримати дані з  БД, оскільки вони використовують специфічні формати зберігання даних. Для підключення до БД сервер додат- ків використовує посередника — драйвер бази даних. Драйвер бази даних являє собою програмний модуль, за допомогою якого встановлюється взаємодія між сервером до- датків і БД. Після того як драйвер установить з’єднання виконується запит до бази даних, у результаті чого формується набір за- писів, який повертається серверу додатків, і він використовує отримані дані для формування сторінки. Для різних завдань використовуються різні зв’язки веб-сер- вера (nginx або Apache) і БД, такі як php_fpm або spawn-fcgi. Проте зазвичай обирається PHP + MySQL. Розглянемо роботу такої зв’язки на прикладі серверної підтримки розробленої нами форми реєстрації (див. завдання для самостійного виконання § 11.16). Приклад. Відбувається надсилання форми з веб-сто- рінки у вигляді сценарію JavaScript. JS AJAX отримує дані й відправляє їх на HTML-сер- вер, сервер отримує ці дані, а також певний файл PHP. Файл PHP установлює з’єднання з БД і виконує потрібні дії. Після виконання операції БД повертає результат. PHP відправляє отримані дані назад до AJAX, де залежно від результату остаточно з’ясовуються наступні дії (якщо вже існує такий логін або набраний па- роль не відповідає заявленому, то повертається повідомлення про невідповідність і прохання повторити спробу, при підтвердженні обліко- вого запису відкривається сторінка профілю). Програмне забезпечення БД може працювати на тому само- му фізичному комп’ютері, що й веб-сервер. Але зазвичай це перше, що потрібно для розміщення на окремому фізичному обладнанні, коли сайт повинен масштабуватися. Запитання для перевірки знань Назвіть завдання серверної сторони. Чим відрізняються back-end і  front-end? Які мови програмування використовують back-end-програмісти? Наведіть приклади використання серверів. Опишіть послідовність роботи серверів. Пригадайте розвиток реляційних баз даних або знайдіть відомості в  Інтернеті. 1 2 3 4 5 6 Приклад. Динамічна сторін- ка може містити програмні інструкції для сервера додат- ків, виконуючи які, серверу необхідно отримати певні дані з БД і розмістити їх у HTML- код сторінки.
  • 210. 210 Розділ 3 11.19. Взаємодія «клієнт–сервер» Пригадайте, що таке клієнт та сервер у мережі. Які функції виконують сервери? Клієнт і сервер взаємодіють один з одним у мережі Інтер- нет або в будь-якій іншій комп’ютерній мережі за допомогою різних мережних протоколів, наприклад IP, HTTP, FTP та ін. Протоколів, як ви знаєте, досить багато, і кожен з них дозво- ляє надавати певну послугу (приклад 1). Повідомлення, які надсилають клієнти, отримали назву HTTP-запити. Вони містять певні методи, які вказують сер- веру, як саме обробляти повідомлення. Повідомлення, які надсилає сервер, отримали назву HTTP-відповіді. Крім ко- рисної інформації вони містять спеціальні коди стану, що дозволяють браузеру дізнатись, як сервер зрозумів його за- пит. Взаємодія клієнтів та серверів знайшла відображення на рис. 11.87. Веб-сервер може обмежувати доступ користувачів до пев- них ресурсів. Керування доступом потребує поєднання автен- тифікації та авторизації. Автентифікація (перевірка справжності) визначає користу- вача, який ініціював запит, а під час перевірки повноважень з’ясовується, чи може користувач мати доступ до певного ре- сурсу. Більшість систем клієнт-сервер автентифікують корис- тувача, запитуючи в нього ім’я і пароль. У цьому випадку на сервері розташовано файл, який містить імена і паролі всіх зареєстрованих користувачів. Причому, з метою захисту інформації паролі можуть зберігатися в зашифрованому ви- гляді. Процес автентифікації дає можливість серверу ідентифіку- вати користувача, який звернувся з HTTP-запитом. Для керу- вання доступом до веб-ресурсів сервер повинен реалізувати стратегію авторизації (перевірки повноважень). Йому необхід- но мати ефективний спосіб визначення, які автентифіковані користувачі можуть мати доступ до певного ресурсу. Подібні стратегії поведінки є складовою частиною нала- штування сервера й зазвичай мають вигляд списків керуван- ня доступом із переліком користувачів, яким дозволено або заборонено доступ до ресурсу. Як саме створюються списки керування доступом і як зберігаються імена користувачів і паролі, залежить від програмного забезпечення сервера. Ре- сурси, що вимагають автентифікації, можуть бути розміщені в окремому каталозі з .php. Воно прийнято для сторінок, які обробляються PHP (Hypertext Preprocessor). Замість того щоб вбудовувати інформацію в HTML-файл, деякі програми можуть генерувати весь ресурс. У цьому ви- падку URL у HTTP-запиті відповідає програмі, а не документу. Програма може реалізувати різні завдання, такі як доступ до інформації в базах даних або створення відповіді, зміст якого залежить від клієнта, що звертається із запитом. Приклад 1. За допомогою протоколу HTTP браузер надсилає спеціальне HTTP- повідомлення, в якому зазначається, яку інформацію та в якому вигляді він має отримати від сервера. Отримавши його, сервер у відповідь надсилає подібне за структурою повідомлення (або кілька), у якому міститься вся потрібна інформація, зазвичай це HTML-документ. Рис. 11.87. Взаємодія «клієнт– сервер»
  • 211. 21111.19. Взаємодія «клієнт–... Веб-браузери взаємодіють із веб-серверами за допомогою протоколу передавання гіпертексту (HTTP). Коли ви клацаєте посилання на сторінці, заповнюєте форму або запускаєте по- шук, браузер надсилає на сервер HTTP-запит. HTTP-запит включає: • • шлях, який визначає цільові сервер і ресурс (наприклад, файл, певна точка даних на сервері, що запускається сер- віс, та ін.); • • метод, який визначає необхідну дію (наприклад, отримати файл, зберегти або відновити деякі дані тощо): • методи передавання даних — GET (отримати певний ре- сурс, наприклад, HTML-файл, що містить інформацію про товар або список товарів); POST (створити новий ресурс, наприклад, нову статтю на Вікіпедії, додати новий кон- такт в базу даних); • HEAD — отримати метадані про певний ресурс без от- римання змісту, як робить GET. Можна використовувати запит HEAD, щоб дізнатися, коли в останній раз ресурс оновлювався, і тільки потім використовувати (більш «ви- тратний») запит GET, щоб завантажити ресурс, який було змінено; • PUT — оновити існуючий ресурс (або створити новий, якщо такого не існує); • DELETE — вилучити вказаний ресурс. Раніше вже наголошувалося на відмінностях роботи зі статичним і динамічним сайтами. Розглянемо взаємодію клі- єнт — сервер на прикладі статичного сайта (рис. 11.88) Файли Веб- сервер Браузер HTML CSS JavaScript Інші файли HTТР-запит HTТР-відповідь Сторона клієнтаСторона сервера Рис. 11.88. Взаємодія «клієнт–сервер» на прикладі статичного сайта Коли користувач хоче перейти на сторінку, браузер відправ- ляє HTTP-запит GET із зазначенням URL-адреси його сторінки HTML. Сервер витягає запитуваний документ зі своєї файлової системи і повертає відповідь HTTP, що містить документ, і код стану HTTP «200 OK» (із зазначенням успіху). Сервер може по- вернути інший код стану, наприклад «404 Not Found», якщо файл відсутній на сервері, або «301 Moved Permanently», якщо файл існує, але був перенаправлений в інше місце. Серверу для статичного сайта буде потрібно лише обробля- ти запити GET, тому що сервер не зберігає жодних даних, які модифікуються. Він також не змінює свої відповіді на осно- ві даних HTTP-запиту (наприклад, параметрів URL-адреси або файлів cookie). PHP — мова сценаріїв, яка не залежить від платформи, сценарії вбудовуються в  HTML- код. Інтерпретатор РНР виконується під керуванням веб-сервера, інтерпретатор здійснює синтаксичний аналіз і обробку файлів. РНР-файл може містити дані, відправлені користувачем у HTML-формах. У  РНР є гнучкі засоби підтримки роботи з базами даних. Користувач вводить ім’я і  пароль на початку сеансу роботи із сервером. Сервер перевіряє ім’я й пароль і  зберігає інформацію про користувача на даний сеанс. У певний момент користувач або сервер завершує сеанс. Для подальшого доступу користувачеві необхідно ініціювати новий сеанс роботи із сервером, що вимагає повторного введення імені та пароля.
  • 212. 212 Розділ 3 Роботу з динамічним сайтом проілюстровано на рис. 3.19.4. Файли База даних Веб- сервер Веб- додатки Браузер HTML CSS JavaScript HTML HTML- шаблони HTТР-запит HTТР-відповідь Сторона сервера Сторона клієнта Статичні ресурси CSS JavaScript Зображення Інші файли Дані на запит шифрування URL Дані GET/POST Кукі Дані Рис. 11.89. Взаємодія «клієнт — сервер» на прикладі динамічного сайта Рис. 11.90. До завдання 5 Розглянемо порядок дій для роботи з динамічним сайтом. 1. Веб-браузер створює HTTP-запит GET на сервер з використанням базової URL-ад- реси ресурсу. Запит GET використовуєть- ся, тому що запит — це лише вибірка даних (не зміна даних). 2. Веб-сервер виявляє, що запит є «дина- мічним» і пересилає його у веб-додаток для обробки (веб-сервер визначає, як об- робляти різні URL-адреси на основі пра- вил зіставлення шаблонів, визначених у його конфігурації). 3. Веб-додаток визначає мету запиту, отри- мує необхідну інформацію з бази даних (використовуючи додаткові «внутрішні» параметри). 4. Веб-додаток динамічно створює HTML-сто- рінку, поміщаючи дані (з бази даних) у наповнювачі всередині HTML-шаблону. 5. Веб-додаток повертає згенерований HTML у веб-браузер (через веб-сервер) разом з ко- дом стану HTTP 200 («успіх»). Якщо щось перешкоджає поверненню HTML, він повер- не інший код, наприклад «404», щоб вка- зати, що такого посилання не існує. 6. Веб-браузер починає обробляти поверну- тий HTML, відправивши окремі запити, щоб отримати будь-які інші файли CSS або JavaScript, на які він посилається. 7. Веб-сервер завантажує файли з файлової системи й повертає безпосередньо в браузер. Операція з оновлення запису в базі даних оброблятиметь- ся аналогічно. За винятком того, що, як будь-яке оновлення, HTTP-запит із браузера повинен бути закодований як запит POST. Запитання для перевірки знань Що таке автентифікація та авторизація? У  чому різниця? Як називають повідомлення, сформовані клієнтом; сервером? У чому різниця між методами Get і Post? Опишіть механізм автентифікації користува- ча на сервері. Поясніть повідомлення, наведене на рис.  11.90. Коли воно може з’явитися? Які протоколи (крім HTTP) використовують- ся під час взаємодії «клієнт  — сервер»? 1 2 3 4 5 6
  • 213. 21311.20. Валідація сайта... 11.20. Валідація сайта та збереження даних форм Нагадаємо, що різні браузери мають різні алгоритми обробки тегів мови розмітки гіпертексту та селекторів каскадних таблиць стилів, тому завжди існує потреба в  перевірці правильності написання коду. Валідація сайта — перевірка синтаксичних помилок, вкладеності тегів та інші критеріі. Зазвичай валідатори — це сервіси для перевірки сайтів на наявність помилок у структурі документа. Вони перевіряють HTML-код на відповідність певному стандарту, який зазначено на самому початку будь-якої HTML-сторінки першим рядком. Валідація сайта дозволяє стежити за правильним відобра- женням сайта в різних браузерах (приклад 1). Крім того, пошукові системи віддають перевагу сайтам із валідним HTML-кодом, роботи пошукових систем розпізна- ють html-код за тими самими параметрами, що й браузери (приклад 2). Якщо ви отримаєте повідомлення про те, що у  вашому коді трапляються помилки чи навіть критичні попере- дження, то потрібно ще раз ретельно оглянути код, пе- ревірити валідацію і  провести сканування заново. Такий цикл слід повторювати, доки перевірка не дасть пози- тивний результат. Потрібно також звернути увагу на кросбраузерність сайта. В ідеалі сайт повинен однаково відображатися у всіх браузе- рах. У нашому випадку цю опцію гарантує відповідність нор- мам W3C. Більша частина проблем із кросбраузерністю виникає саме через помилки відображення оформлення елементів, заданих за допомогою CSS, оскільки для розв’язання проблеми корект- ного виведення дизайну сайта в усіх браузерах доводиться за- стосовувати не зовсім «валідні» (на думку W3C) способи: • коментарі (коли в коментарях (найчастіше для IE) пропи- сується альтернативне значення властивості, що невиди- ме для інших браузерів); • хаки (маються на увазі спеціальні властивості CSS, що дозволяють розв’язати проблему некоректного відобра- ження в одному з браузерів); • за допомогою JavaScript (зміна стильової властивості елемента через об’єктну модель документа). Застосування цих способів (особливо хаків) може негатив- но впливати на валідність усього сайта, разом із тим дозво- ляє повністю розв’язувати проблему кросбраузерності. Приклад 1. Якщо не закрити тег або припуститися помилки в коді, у подальшому одна і та сама сторінка може відобража- тися в різних браузерах по-різ- ному. Приклад 2. Якщо у вашо- му коді містяться помилки, наприклад незакриті теги, биті посилання або поламана структура, все це може впли- нути на індексацію сайта по- шуковими роботами. Як на- слідок, грубі помилки в коді можуть знизити позиції ре- сурсу у видачі. Це означає, що в подальшому валідація сайта зіграє дуже важливу роль у просуванні сайта в SEO і SMM. Більш того, від валі- дації синтаксису навіть зале- жить коректність відображен- ня всіх елементів сайта.
  • 214. 214 Розділ 3 Ознайомимося з найбільш поширеними помилками, яких припускаються в коді, на прикладах. • Тег не закритий — переважна більшість тегів у html є парними, тобто склада- ються з відкриваючого та закриваючого тегів. Часто в ході верстання чи напи- сання скрипту забувають дописувати за- криває тег. А це може призвести до не- правильного відображення всього сайта. • Порушення вкладеності елементів — ця проблема виникає в разі блокового вер- стання, коли не дотримуються ієрархіч- ної вкладеності всіх блоків div. Або інших парних елементів, якщо частина тега відкрита в одному шарі, а закрива- ється в іншому. При цьому може стати- ся порушення структури дизайну сайта. Наприклад: Неправильно Правильно pbLorem/p/b pbLorem/b/p • Використання атрибута style — у сучас- ному сайтобудуванні загальноприйнятою нормою є використання для оформлення елементів дизайну каскадних таблиць стилів (CSS). Застарілий атрибут style вживається вкрай рідко: в разі його ви- користання обсяги html коду можуть збільшуватися в рази. Це не лише спо- вільнює швидкість завантаження всьо- го сайта, а й ускладнює його розуміння і подальше редагування. • Використання вкладеного CSS — впро- вадження каскадних таблиць стилів всередину html. Це також збільшує об- сяг коду й ускладнює його налагоджен- ня. Найкраще стильові описи зберігати в окремих файлах. • Missing DOCTYPE. Валідатор найчасті- ше видає це повідомлення, якщо вміст елемента !DOCTYPE і сам елемент за- писані в нижньому регістрі. Необхідно пам’ятати, що даний елемент є залеж- ним від регістру тегом. Наприклад: Неправильно Правильно !doctypehtmlpublic-// w3c//dtdxhtml 1.0 strict// en http://www.w3.org/tr/ xhtml1/dtd/xhtml1-strict. dtd !DOCTYPE html PUBLIC-//W3C//DTD XHTML 1.0 Strict//EN http://www.w3.org/ TR/xhtml1/DTD/xhtml1- strict.dtd • Thereisnosuchelement — такого елемента не існує. Така помилка виникає, якщо один або де- кілька тегів записано у верхньому регістрі. Наприклад: Неправильно Правильно PBlorem/P/B pbLorem/b/p • requiredattribute alt notspecified- обов’язковий атрибут «alt» не вказано. Як ми вже зазначали, з багатьох причин бажано використовувати атрибут alt. Наприклад: Неправильно Правильно img src=images/girl. png img src=images/girl. png alt=lorem • Missing « « — відсутні лапки. Така помилка виникає, якщо значення одного або декількох атрибутів записані не в лапках. Наприклад: Неправильно Правильно img src=images/ girl.png width=189 height=255 alt=lorem img src=images/ girl.png width=189 height=255 alt=lorem/ Найпоширеніший спосіб перевірити вихідний код сайта на валідацію — це онлайн-сервіси, оскільки вони постійно сте- жать за нововведеннями та модифікують свої алгоритми.
  • 215. 21511.20. Валідація сайта... Посилання на онлайн-сервіси (рис. 11.91) ви можете знайти на головній сторінці офіційного сайта www.w3.org. Рис. 11.91. Посилання для перевірки на сайті консорціуму W3C Форми також мають правила валідації. Наприклад, мож- на задати обов’язкові для заповнення поля форми або вка- зати, що в певні поля потрібно вводити дані тільки певного типу (наприклад, тільки букви або тільки цифри; введення email-адреси; введення url-адреси тощо). Правила валідації забезпечують правильність заповнення форми відвідувачем сайта. Після того як користувач сайта заповнив форму і відправив дані, вони потрапляють у спеці- альний скрипт на сервері — обробник форми. У ньому мо- жуть бути збережені в базі даних або відправлені електро- нною поштою. Якщо користувач заповнив веб-форму правильно, без по- милок, то після відправки даних на сервер відображається сторінка успішного заповнення форми або відбувається пере- адресація на заздалегідь задану сторінку. Якщо ж користувач заповнює форму для опитування або голосування, то після успішного заповнення форми йому ві- дразу ж відображається сторінка із загальними результатами голосування. Запитання для перевірки знань Що таке валідація сайта? Як валідність коду впливає на індексацію сайта? Наведіть приклади найбільш поширених помилок. Яка організація встановлює правила валід- ності коду? Наведіть приклади онлайн-сервісів перевір- ки на валідність. 1 2 3 4 5 Завдання для самостійного виконання Перевірте за допомогою будь-якого онлайн-сервісу сторінки, створені на попередніх уроках, на валідність. Проаналізуйте отриманий результат. 1 на попередніх уроках, на валідність. 2
  • 216. 216 11.21. Прикладний програмний інтерфейс Ви зареєструвались на сайті Прометеус? Якщо так, то помітили, що авторизуватись можна за допомогою вашого облікового запису у Facebook та Google? Це стало можливим завдяки використанню спеціального прикладного програмного інтерфейсу — API. Прикладний програмний інтерфейс (англ. Application Programming Interface, скорочено API)  — це сукупність засобів і правил, які вможливлюють взаємодію між окре- мими складниками програмного забезпечення або між програмним і  апаратним забезпеченням. У галузі веб-розробки поняття прикладного програмного інтерфейсу (API) охоплює низку засобів програмного коду (ме- тоди, події та посилання). Розробник може використовувати їх у власних застосунках задля взаємодії з програмним або апаратним оточенням — із додатками веб-переглядача, іншим програмним чи апаратним забезпеченням комп’ютера користу- вача, або навіть сторонніми сайтами чи службами. API — це готові модулі коду, які допомагають програмісту в реалізації деяких складних завдань. Зазвичай такі «заго- товки» діляться на браузерні і API третіх розробників. Ще більше можливостей надає функціонал, доступний як надбудова щодо основних складових JavaScript. Ідеться про API, що істотно розширює набір інструментів розробника. Коли ми завантажуємо сторінку в браузері, то спочатку об- робляються HTML і CSS і лише після цього скрипти. API надає безліч методів, які можуть використовувати роз- робники, а також опис того, що вони працюють. Розробнику необов’язково знати, як працює система всередині, він просто може використовувати певний функціонал у своєму додатку. API-інтерфейси дозволяють розробникам заощадити час, скориставшись вже готовим функціоналом. Це допомагає зменшити кількість виробленого коду, створювати деяку послідовність для різних додатків на тій самій платформі. API-інтерфейси можуть контролювати доступ до апаратних і програмних ресурсів. Програміст може скористатися API для отримання доступу до функціоналу сторонньої програми. API робить можливим роботу ресурсів, які використовують потенціал і потужність іншого сайта або програми. Як відомо, на онлайн-сервісах або платформах можна уві- йти через власні облікові записи в соціальних мережах. Саме це і є використанням API, коли сервіси або додатки використо- вують бази даних соціальних мереж. Сервіс може отримувати інформацію про користувача і використовувати її у своїх цілях (приклади 1–3). Використання API скорочує необхідність створюва- ти самостійно складні програми. Замість цього можна До браузерних API-інтерфейсів належать: API-інтерфейс DOM (Document Object Model), модулі геолокації, API Canvas і  WebGL, Аудіо та відео API. До сторонніх інтерфейсів належать, наприклад, API соціальних мереж Twitter і  Facebook. Приклад 1. Amazon пропо- нує користувачеві книжки, засновані на виборі книжок його друзів у Facebook.
  • 217. 21711.21. Прикладний ... використовувати готові частини існуючих ресурсів, у яких є доступ до потрібної інформації і даних. Щоразу, коли користувач відвідує якусь сторінку в мере- жі, він взаємодіє з API віддаленого сервера. API — це складова частина сервера, яка отримує запити і відправляє відповіді. Більшість сучасних сайтів використовують принаймні кілька сторонніх API. Багато задач вже мають готові рішен- ня, пропоновані сторонніми розробниками, будь то бібліотека чи послуга. Найчастіше простіше і надійніше вдатися саме до вже готового рішення. Як вже було сказано, API — це насамперед інтерфейс, який дозволяє розробникам використовувати готові блоки для по- будови програми. У випадку з розробкою мобільних додатків у ролі API може виступати бібліотека для роботи з розумним будинком — всі нюанси реалізовані в бібліотеці, і ви лише звертаєтеся до цього API у своєму коді. У разі веб-додатків API може передавати інформацію у від- мінному від стандартного HTML форматі, завдяки чому їм зручно користуватися під час написання власних програм. Сторонні загальнодоступні API найчастіше віддають дані в одному з двох форматів: XML або JSON. XML (англ. Extensible Markup Language — розширювана мова розмітки) — запропонований консорціумом World Wide Web Consortium (W3C) стандарт побудови мов розмітки ієрар- хічно структурованих даних для обміну між різними засто- сунками. XML-документ складається із текстових знаків і при- датний до читання людиною. JSON (англ. JavaScript Object Notation) — запис об’єктів JavaScript, текстовий формат обміну даними між комп’ютера- ми. Він базується на тексті й може бути прочитаний люди- ною. Формат дозволяє описувати об’єкти та інші структури даних. Цей формат головним чином використовується для пе- редавання структурованої інформації через мережу. Формат JSON знайшов своє головне призначення у напи- санні веб-програм, а саме при використанні технології AJAX. JSON досить лаконічний і простий у читанні, дозволяє складні структури в атрибутах, займає менше місця і прямо інтерпретується за допомогою JavaScript в об’єкти на відміну від XML. Сервіси, що надають доступ до даних у XML-форматі, поступово від нього відмовляються. JSON, що використовується в AJAX, виступає як заміна XML (використовується в AJAX) під час асинхронного передавання структурованої інформації між клієнтом та сервером (приклад 4). Приклад 4. Візьмемо API Twitter. Інтерфейс цього сервісу може вам видати інформацію про твіти користувача, його читачів і тих, хто його читає, і т. д. Це лише частина можливостей, які будь-хто може втілити, використовуючи API стороннього сервісу або створюючи власний. На основі API будуються такі речі, як кар- ти 2GIS, всілякі мобільні і десктопні клієнти для Twitter. Всі їх функції стали можливими саме зав- дяки тому, що відповідні сервіси мають якіс- ні і детально задокументовані API. Приклад 2. Сервіс IFFFT до- зволяє пов’язувати акаунти ко- ристувача в різних онлайн-сер- вісах і програмах так, що дія в одній програмі викликає дію в іншій програмі. Приклад 3. Відео, що сподо- балися вам у YouTube, можуть автоматично з’являтися на ва- шому сайті або у ваших соці- альних мережах. Це можливо саме завдяки API — коли одна програма використовує дані та інформацію іншої програ- ми. До речі, вбудовування YouTube-відео на свій сайт також можливо завдяки API- сервісу YouTube.
  • 218. 218 Розділ 3 API бувають публічні й приватні. Публічні API випускаються такими компаніями, як Slack і Shopify, щоб розробники використовували на своїх платфор- мах. Компанії діляться набором вступних параметрів, а роз- робники використовують, щоб досягти певного результату. Це досить легко, оскільки документація перебуває у вільному до- ступі. Приватні API використовуються всередині компанії. Якщо в компанії багато програмних продуктів, то приватне API ви- користовується, щоб програми взаємодіяли між собою. Ком- поненти API можуть змінюватися за бажанням компанії, тоді як зміни в публічному API може викликати протест. Фреймворк (framework — конструкція, структура) — про- грамне середовище спеціального призначення, своєрідний каркас, який використовується для того, щоб істотно полег- шити процес об’єднання певних компонентів під час створен- ня програм. Фреймворк — це основа, що дозволяє додавати компонен- ти залежно від потреб; база, на якій можна сформувати про- граму будь-якого призначення досить швидко і без особливих труднощів. Якщо порівнювати динамічну бібліотеку (DLL), яка відріз- няється вельми обмеженим функціоналом, і фреймворк, що вважається основою програм — можна виділити суттєву пе- ревагу фреймворків. Саме фреймворк є сполучною ланкою, яка об’єднує всі ви- користовувані програмні компоненти. Також всередині фреймворка часто є необхідні тематичні бібліотеки. • Semantic UI (https://semantic-ui.com) — використовується для створення переносимих інтерфейсів. Цей досить мо- лодий фреймворк постійно розвивається. У ньому можна знайти величезну кількість кнопок та інших елементів, необхідних для роботи — зображення, іконки, написи. • Foundation (https://foundation.zurb.com) — фреймворк, що є одним з досить популярних у сегменті front-end-фрейм- ворків. Останні версії відрізняються поліпшеним функ- ціоналом для сучасних мобільних пристроїв. Завдяки семантичному підходу є можливість використання SCSS, написання більш чистого коду в HTML. Він ідеальний для ситуації, коли потрібно швидке прототипування. Запитання для перевірки знань Наведіть означення АРІ. Запропонуйте власні приклади застосуван- ня АРІ. Наведіть переваги використання приклад- ного програмного забезпечення. Що таке фреймворк? Наведіть приклади фреймворків. Знайдіть в  Інтернеті відомості про викори- стання JSON, зробіть повідомлення. Як можна пов’язати інтерактивність сто- рінок та використання API? 1 2 3 4 5 6 Дуже популярним і  затребува- ним є  фреймворк Bootstrap (https://getbootstrap.com). Його презентували ще на початку 2011 року. Його головна пере- вага  — адаптивність (адаптивна верстка). Він дозволяє створю- вати проекти зі стильним дизайном  — проект буде автоматично підлаштовуватися, враховуючи розмір екрана комп’ютера або мобільного пристрою користувача, що переглядає сайт. До переваг Bootstrap належить велика кількість стилів, шабло- нів, посторінковий дизайн  — це істотно полегшує створення сайта. У  Bootstrap практично відсутні недоліки. Це не  тільки HTML/CSS-фреймворк, у  Bootstrap також включені плагіни й  готові стилі JS/Jquery.
  • 219. 21911.22. Правила ... 11.22. Правила ергономічного розміщення відомостей на  веб-сторінці Поміркуйте, чи достатньо створити сайт і  наповнити його контентом. Основна мета створення сайта — його спрямованість на ко- ристувача, тому зручність використання, зрозумілість і про- стота є досить важливими аспектами розробки сайта. Ергономіка (від грец. еrgon — робота, nomos — закон) — наука, яка вивчає робочі процеси з метою створення оптималь- них умов праці, що сприяє підвищенню її продуктивності. Ергономічний сайт має бути добре пристосований для зручної та безпечної роботи користувача. Щоб цього досягти, потрібно користуватися певними правилами (рис. 11.92). Юзабіліті (англ. Usability  — зручність і  простота викори- стання)  — це підхід, покликаний зробити сайт простим у  користуванні, таким, який не потребує додаткового навчання користувача, тобто мати орієнтований на ньо- го інтерфейс. Потрібно створити умови, щоб користувач мав змогу ін- туїтивно пов’язувати дії, які йому необхідно виконати на веб-сторінці. Розглянемо основні критерії ергономіки під час створення сайта (табл. 1). Таблиця 1. Критерії ергономіки Критерій Склад Лаконічність Простота викладення Неперевантаженість Чіткість Ясність Структурованість Розташування Видимість адреси Однорідність структури Швидкість Час завантаження Оптимізовані зображення Взаємодія Гіпертекстові посилання Сегментація інформації Сприяння взаємодії Адаптивність Можливість змінити розмір шрифту Доступність Доступ до всього Взаємодія Принцип прозорості Підпис Вибір кольору Правильне використання стилів Контраст Можливість змінити розмір шрифту Інформація відповідає тематиці сайта Інформація чітко структурована Навігація проста і  зрозуміла Усі сторінки мають посилання на головну Унікальні фотографії та синематограф Читабельний шрифт Колірна палітра враховує правила колористики Ознаки ергономічного сайта Рис. 11.92. Правила створення ергономічного сайта
  • 220. 220 Розділ 3 Важливо пам’ятати, що вся першочергова інформація по- винна бути зліва. Читач знайомиться з нею зліва направо, тому потрібно ретельно все продумати. Таким чином, створен- ня сайта з урахуванням ергономіки може бути визначено як здатність ефективно реагувати на потреби користувачів і за- безпечувати їм комфорт під час перегляду сторінки. Колірна палітра є одним із найважливіших елементів сай- та. Існує безліч онлайн-сервісів, які допомагають дібрати па- літру кольорів сайта, що відповідає правилам колористики (рис. 11.93). Рис. 11.93. Логотипи деяких онлайн-сервісів Рис. 11.94. Палітри IN COLOR BALANCE Запитання для перевірки знань Що таке юзабіліті; ергономіка? Що, на вашу думку, їх відрізняє? Наведіть правила створення ергономічного сайта. Які онлайн-сервіси добору палітри ви знаєте? Чому важливо правильно добирати кольори? Виберіть сайт і  проаналізуйте його з  точки зору юзабіліті. Проаналізуйте тренди поточного року та оцініть їх з  точки зору ергономіки. 1 2 3 4 5 6 Деякі загальні цілі юзабіліті: • подавати інформацію в  зрозумілій і  стислій формі; • створювати користувачам можливість робити вибір найочевиднішим шляхом; • усувати будь-яку двозначність щодо наслідків дій (наприклад, кнопка видалити/покупка); • розміщувати важливі елементи у  відповідній ділянці на веб-сторінці або веб-додатку. Найпопулярніші онлайн-сервіси можна знайти за посиланнями: • ColorExplorer (http://colorexplorer.com/) • сOLOROTATE (http://mobile.colorotate.org/) • ColorBlender (http://www.colorblender.com/) • ColorWizard (http://www.colorsontheweb. com/Color-Tools/Color-Wizard)
  • 221. 22111.23. Пошукова оптимізація... 11.23. Пошукова оптимізація та просування веб-сайтів Яким чином, на вашу думку, на першій сторінці пошуку з’являються ті чи інші сайти? Будь-який сайт створюється для того, щоб його відвідува- ли якомога більше користувачів. SEO (від англ. Search Engine Optimization — пошукова оптимізація) — маркетингове поняття, що охоплює цілий комплекс заходів. Це процес коригування HTML-коду, структу- ри та текстового наповнення (контенту) сайта; контроль зов- нішніх чинників на відповідність вимогам алгоритму пошу- кових систем. Мета SEO — підвищення рейтингу сайта в пошукових си- стемах (Google, Bing, Yahoo) та залучення трафіку. Завдання SEO — підняти веб-ресурс у топ за результатами пошукової видачі за конкурентними запитами користувачів. Складові SEO наведено на рис. 11.95. Що вищою є позиція сайта в результатах пошуку, то більшою є ймовірність пере- ходу відвідувача на нього з пошукових систем, бо зазвичай люди ідуть за першими посиланнями. Побудова зв'язків Трафік Стратегія Оптимізація Веб-дизайнРанжування Соціальні мережі SEO — пошукова оптимізація Рис. 11.95. Складові SEO Роботи з позиціонування сайта в пошукових системах — це один із найважливіших заходів щодо залучення цільової аудиторії. Особа, яка проводить роботу з оптимізації веб-сай- тів, називається оптимізатором (SEO-Manager). Основною пошуковою системою у світі нині є Google. Алго- ритм розрахунку авторитетності, який використовує Google, — це PageRank. Він застосовується до бази документів, пов’язаних гіперпосиланнями, — призначає кожному документу чисельне значення, що характеризує його «авторитетність» (що більше посилань на сторінку, то важливішою вона є). Пошукова оптимізація може бути постійним джерелом збільшення кількості відвідувачів, адже 90% користувачів знаходять нові сайти через пошукові системи. 55% онлайн-покупок здійснюються на сайтах, які знайдено через пошукові системи.
  • 222. 222 Розділ 3 Пошукова система  — повністю автоматизований меха- нізм, який глибоко сканує всі задані сервери (відкриті для сканування) і  збирає індекс-інформацію про те, що і  де (на якій веб-сторінці) виявлено. Зібрана інформація вноситься до бази даних пошукової системи, де алгоритм із ранжування реалізується у два ета- пи. Спочатку по сайтах «проходить» так званий «швидкобот» та індексує їх для того, щоб додавати новини на видачу по- шукових систем, а потім (здебільшого протягом доби) — ос- новний бот, який уже повністю індексує статтю. Пошуковий робот (webcrawler, bot, webrobots, webspider  — бот, павук)  — це спеціальна програма, що є складовою частиною пошукової системи та призначена для перебирання сторінок Інтернету з  метою занесення інформації про них у  базу даних пошукової системи. Оптимізація та просування сайтів у пошукових системах (рис. 11.96) мають забезпечити використання ключових слів у контексті, заголовках і мета-даних. Spider (павук): браузероподібна програма, яка завантажує веб-сторінки Crawler (краулер, «мандрівний» павук): програма, яка автоматично проходить по всіх посиланнях, знайдених на сторінці Indexer (індексатор): програма, яка аналізує веб-сторінки, скачані павуками Database (база даних): сховище викачаних і  оброблених сторінок Search engine results engine (система видачі результатів): система витягує результати пошуку з  бази даних Web server (веб-сервер): веб-сервер, який здійснює взаємодію між користувачем та  іншими компонентами пошукової системи Рис. 11.96. Робота пошукової системи Популярність Google у  більшості країн становить понад 60  %, в  окремих європейських країнах  — понад 90  %. За введеними користувачем словами пошуковик шукає сторінки, зіставляє їх і  ран- жує, визначає релевантність конкретної сторінки за введе- ним запитом (тобто наскільки повно документ відповідає критеріям, зазначеним у  запиті користувача).
  • 223. 22311.23. Пошукова оптимізація... Пошукова оптимізація передбачає такі етапи. Етап 1 Збирання семантичного ядра. Під час добирання всіх слів вибираються ключові словоформи, що додаватимуть відвідувачів на сайт. Водночас здійснюється аналіз ринку сайтів, які наявні в  топ-видачі. Збирання ключових слів для написання внутрішніх текстів можна виконати за допомогою як платних, так і  безкоштовних програм. Етап 2 Написання на основі семантичного ядра контенту, що відповідатиме запитам користувачів і  розв’язуватиме проблеми відвідувачів сайта. Водночас кількість ключових слів у  співвідношенні до загальної кількості тексту не має перевищувати 3–5  %. Просування сайта  — комплекс заходів щодо збільшення відвідуваності веб-ресурсу цільовими відвідувачами Метою будь-якого просування є збільшення співвідношен- ня відвідувачів сайта, які вчинили очікувану дію, до всіх відвідувачів (подається у відсотковому вираженні). Власник веб-ресурсу (комерційна компанія, державна ор- ганізація, соціальна мережа, ігровий майданчик, клуб за інтересами тощо) намагається, щоб його сайт було «видно» користувачам Інтернету, щоб була змога зібрати якомога біль- ше відвідувачів. Таким чином він прагне забезпечити собі потрапляння на перші сторінки (а ліпше — на перші рядки, у топ) пошукової видачі. Розв’язання цього завдання забезпе- чує процес SEO-просування. Існує низка прийомів, які дозволяють маніпулювати пошу- ковою системою. Вони розрізняються за своєю коректністю й легальністю. У зв’язку з цим виникло три класи пошукової оптимізації сайтів: чорна, сіра та біла (табл. 1). Таблиця 1. Класи пошукової оптимізації сайтів Оптимізація Призначення Чорна Набір прийомів, які характеризуються явною некоректністю. Багато з  них заборонені, де- які створені для введення пошукової системи в  оману Сіра Не заборонені, але потенційно некоректні прийоми. Якщо чорну або сіру оптимізацію буде виявлено пошуковою системою, до сайта будуть застосовані штрафні санкції чи на- віть бан Біла Використовує легальні професійні методи, що доповнюють один одного і  дають стабіль- ний результат. Спрямована на те, щоб і  відвідувачі, і  пошукові машини ставили сайту ви- соку оцінку Існує кілька розповсюджених методів просування сайта. До наймолодших і перспективних методів з використан- ням можливостей, що відкриваються соціальним мережам, належать SMO (Social Media Optimization), або SMM (Social Media Marketing). Методи SMO (SMM) просування сайта засновані на самостій- ній передачі даних від одного користувача до іншого за допо- могою сервісів соціальних мереж (рис. 11.97). Який відсоток відвідувачів інтернет-магазину від їх загальної кількості здійснили покупку? Аналіз дій користувачів на сайті здійснюється за допомогою спеціального програмного забезпечення. Для Google  — це Google Analytics. За даними досліджень, на другу сторінку переходять не більше ніж 85 % користувачів, далі другої  — не більше від 10%.
  • 224. 224 Розділ 3 Створення та підтримка популярної теми в  соціальних мережах Спонукання користувачів до додавання посилань на ресурс через написання інформативного й  цікавого для користувача контенту Просування за допомогою форумів Написання та просування статей у  тематичних соцмережах Створення та просування новин у  сервісах Організація конкурсів та опитувань з  матеріальним заохоченням або без нього Способи просування сайта Рис. 11.97. Способи SMO (SMM) просування сайта Ще одним методом просування сайта є так званий вірусний маркетинг — тут головними розповсюджувачами інформа- ції є самі користувачі. Один користувач передає інформацію з посиланням на ресурс знайомим, кожен із яких — кільком своїм. Таким чином спрацьовує ефект «снігової лавини», що приносить результат у вигляді тисяч, а часом і сотень тисяч унікальних відвідувачів. Основним інструментом вірусного маркетингу є створення цікавого, несподіваного, креативного контенту, який гаранто- вано зможе зацікавити максимальну кількість користувачів таким чином, аби змусити їх поділитися інформацією з ін- шими. Запитання для перевірки знань Що таке SEO? Назвіть завдання SEO. Що таке пошуковий робот? Наведіть схему роботи робота Google. Назвіть класи оптимізацій сайтів. Що таке SMM? Які ви знаєте способи просування сайта? Опиши їх. 1 2 3 4 5 6 Яскравим прикладом вірусного маркетингу є  розміщення цікавих відеороликів на YouTube і  подібних до нього сервісах, де як джерело відео вказується ресурс, що просувається. Тест 11 Тестове завдання з  автоматичною перевіркою результату на  сайті interactive.ranok.com.ua
  • 225. 12.1. Уніфікований процес розробки програмного забезпечення Пригадайте складові інформаційної системи та їхнє призначення. Назвіть види програмного забезпечення персонального комп’ютера. Наведіть приклади програмних засобів, які ви використовували на уроках інформатики. Розроблення програмного забезпечення (ПЗ) — це склад- ний процес, у якому беруть участь багато фахівців і який часто орієнтований на віддалену роботу. Розробка ПЗ як результат роботи колективу починається з аналізу вимог до нього. Під час планування проектної робо- ти з розробки ПЗ застосовують системний підхід (системний аналіз). Він полягає в здійсненні аналізу та уточненні завдан- ня, розробці загальних стратегій роботи, визначенні етапів виконання проекту. Системний аналіз розробки програмного забезпечен- ня  — це дослідження вимог до ПЗ, його можливостей і  представлення в  загальному вигляді з  подальшою де- талізацією. У результаті аналізу створюється ієрархічна структура, кожний наступний (нижчий) рівень якої описує певний аспект ПЗ більш детально, ніж попередній (вищий). Під час аналізування розглядаються й коригуються вимо- ги замовника, визначається, як ці вимоги будуть реалізовані, формулюються підзадачі та способи їх розв’язування. Пла- нування та реалізація проекту є процесом, спланованим за певною методологією. Методологія  — це принципи, сукупність ідей, методів і  засобів, які визначають підхід до розробки програмно- го забезпечення. Існує кілька методологій створення ПЗ. Кожна з них ви- значає своє планування створення ПЗ, яке передбачає певні етапи. На рис. 12.1 наведено етапи планування розробки ПЗ у загальному вигляді. Залежно від обраної методології взаємодія між етапами пла- нування й виконання різних етапів відбувається по-різному. Для злагодженої роботи та  швидкого реагування на  різні ситуації в  ІТ-фірмах формують систему діяльності, що сприятиме ефективній організації розробки ПЗ. Етапи планування розробки ПЗ Аналіз вимог до проекту Проектування Реалізація: розробка коду, програмування Тестування Упровадження та підтримка Рис. 12.1 Загальне подання про- ектування роботи з розробки ПЗ Розділ 4.Розділ 4.Розділ 4.Розділ 4.Розділ 4. ПАРАДИГМИ ТАПАРАДИГМИ ТАПАРАДИГМИ ТАПАРАДИГМИ ТА ТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯТЕХНОЛОГІЇ ПРОГРАМУВАННЯ
  • 226. 226 Розділ 4 Етапи розробки ПЗ ще називають стадіями розробки. У всіх методологіях їх зміст загалом однаковий. Ознайомимося з ними докладніше. Етап 1 З етапу аналізування вимог до розроблюваного ПЗ, їх систематизації, документування, а  також виявлення й  розв’язування суперечностей починається будь-який проект з розробки ПЗ. Створюється певна документація, що описує відповідність створеного ПЗ вимогам, на яких етапах будуть реалізовані вимоги, правила встановлення й  використання ПЗ. Проте за деякими методологіями в  документації можливі зміни в  процесі життєвого циклу ПЗ (час від моменту створення ПЗ до вилучення з  експлуатації) Етап 2 На етапі проектування (його називають також стадією дизайну й  архітектури) програмісти й  системні архітектори, керуючись вимогами, розробляють високорівневий дизайн системи. Схематично занотовуються характеристики ПЗ Етап 3 На етапі написання коду на основі попередньо визначених вимог програмісти- розробники створюють програми; системні адміністратори налагоджують взаємодію між програмами, front-end-програмісти розробляють користувацький інтерфейс і  можливості взаємодії ПЗ із серверами Етап 4 На етапі тестування здійснюється перевірка правильності роботи кодів кожної складової ПЗ, роботи ПЗ на відповідність вимогам у цілому. Тестування відбувається на основі тестів, написаних програмістами-тестувальниками Етап 5 На етапі впровадження й  підтримки ПЗ у  нього вносяться зміни для оновлення в  процесі використання Як ми вже знаємо, існує низка методологій створення ПЗ. Ознайомимося з найпоширенішими. Розглянемо сутність каскадної та ітераційної методологій. Каскадна методологія (англ. Waterfall model), її ще нази- вають «крок за кроком», «водоспад», описує послідовний про- цес виконання всіх етапів проекту (див. рис. 12.1). До кожного наступного етапу переходять тільки після повного завершення попереднього — зворотний напрямок не- можливий (саме тому метод отримав назву «водоспад» — за аналогією потоку води в одному напрямку). Внесення змін до виконаного етапу можливе тільки повторенням усіх етапів починаючи спочатку. Ітераційна методологія (від слова «ітерація» — повторення) є більш гнучкою: розробка ПЗ базується на кількох циклах повторення всіх етапів (рис. 12.2 у прикладі). На першому етапі проекту за ітераційною методологією допускається неповний перелік вимог, адже визначення всіх вимог часто є задачею, яку неможливо розв’язати. На кожно- му циклі кожен етап виконується паралельно з аналізом от- риманого результату. Це дозволяє вдосконалювати подальші етапи та корегувати вимоги при кожному повторі виконання проекту. За такої організації створюються більш сприятливі умови для замовника, бо після кожної ітерації замовник може спо- стерігати результат і розуміти, задовольняє він його чи ні, вносити зміни до вимог. Каскадною методологією користуються у  випадку, коли основні вимоги остаточно визначені, зрозумілі й  зафіксовані. Зазвичай нею користуються для виконання невеликих проектів.
  • 227. 22712.1. Уніфікований процес... Приклад. Ітераційну методологію вико- ристовують у випадках, коли вимоги до ПЗ зрозумілі, хоча деякі деталі можуть доопра- цьовуватися в ході розробки (рис. 12.2), а та- кож для реалізації дуже великих проектів. Показовим прикладом є система розпізнаван- ня голосу. Її головне завдання — ідеальне розпізнавання — ще не досягнуто, хоча ре- зультат кожної наступної ітерації покращу- ється. Аналіз Аналіз Проектування Проектування Проектування Реалізація Реалізація Реалізація Тестування Тестування Тестування Впровадження Впровадження Супроводження Рис. 12.2. Приклад структури процесу розроблення ПЗ Вибір певної методології залежить від специфіки і склад- ності проекту та інших чинників, на які впливає кількість розробників у групі, їхні особисті якості й кваліфікація або стабільність процесів у компанії та ін. У випадку каскадної методології етап аналізу вимог закріп- люється в документі — специфікації вимог до ПЗ (Software Requirement Specification, SRS), оформлення якого має бути за- вершено до переходу на наступний етап. Запитання для перевірки знань Як ви розумієте поняття методології? Назвіть загальні етапи проектування розробки ПЗ. Поясніть особливості роботи програмістів-розробників і  про- грамістів-тестувальників. На основі чого відбувається тестування ПЗ? Назвіть відомі вам моделі методологій і  поясніть, чим вони відрізняються. Наведіть приклади використання різних методологій роз- робки ПЗ. 1 2 3 4 5 6 Існують й  інші методології розробки ПЗ, наприклад V-модель (від англ. validation and verification). Вона передбачає тестування всіх параметрів ПЗ на відповідність і  запланованим вимогам, і  тим, якими вони мають бути в  дійсності. Наприклад, інтегроване ПЗ для механізмів управління аварійними подушками безпеки в  транспортних засобах, мобільний додаток для європейського стільникового оператора, який економить витрати на роумінг під час подорожей.
  • 228. 228 12.2. Програмні інструменти для проектної роботи Чи можна в  проекті з  розробки програмного забезпечення використовувати роботу з  віддаленим доступом і  залучен- ням фахівців у  територіально розподілених командах? Ефективність роботи з розробки та експлуатації програм- ного забезпечення (ПЗ) залежить від багатьох чинників: планування загальної роботи колективу, поінформованості учасників проекту про стан його виконання, внесення змін. У ході використання ПЗ відбувається удосконалення й упро- вадження нових версій. Для автоматизації процесу планування й аналізу відпо- відності реалізації проектної роботи запланованій роботі використовують спеціальні програмні засоби, які називають ­ системами комунікацій, або програмними інструментами. Для кожного типу роботи колективу існують різні про- грамні системи комунікацій. Розглянемо особливості най- більш поширених із них (на рис. 12.3 наведено їх лого­типи). Asana і Trello — системи, що використовують для від- стеження стану виконання поточних завдань проекту. Asana розрахована на введення таких даних по окремих завданнях, як назва, опис завдання, дата виконання й відповідальний. Спілкування розраховане за допомогою електронної пошти. Trello подібна до дошки, на якій прикріплені стікери із за- вданнями, вона використовує такі характеристики завдань: Заплановано, В  роботі, Виконано. Smartsheet і Мегаплан — системи, придатні для базового управління проектом і організації діяльності невеликого під- приємства. Вони базуються на табличній формі подання ін- формації, подібної до Excel: часто для відстеження виконан- ня завдань проекту користуються графіком, побудованим як діаграма Ганта (ви побудуєте її в Excel під час виконання практичної роботи). Smartsheet і Мегаплан є онлайн-інструментами, які пропону- ють необмежену кількість таблиць, збереження файлів, жур- нал змін, автоматизацію робочих процесів у вигляді діаграм Ганта, а також мобільну версію. JIRA і Clarizen — системи, що застосовують для всіх типів завдань, починаючи від організації роботи малої групи до ве- ликого підприємства. JIRA швидше застосовна для організації підтримки і розробки, Clarizen — для управління портфелем проектів. Крім того, існують також такі системи, як Redmine, Адванта, Comindwork, Liquidplanner, Innotas, AtTask та ін. (див. рис. 12.3). Одним із ключових моментів організації процесу розроб­ лення ПЗ є комунікаційний процес між учасниками проект­ ної роботи, який набуває особливої важливості, якщо в про- екті беруть участь фахівці у віддаленому доступі. Завданнями процесу комунікацій є формування й підтрим- ка постійного оперативного зв’язку між членами команди, Рис.12.3. Логотипи найбільш поширених систем комунікацій
  • 229. 22912.2. Програмні інструменти... визначення, яка інформація передаватиметься кожному з учасників проекту, проведення нарад з планування конт- ролю та роботи, організація онлайн-навчання та посилення зв’язків між членами команди. У територіально розподіленій проектній групі фахівцю важ- ливо знати, як і коли він може звернутися до інших членів групи, керівника для розв’язання проблем, які в нього мо- жуть виникнути. Залежно від завдання розрізняють кілька типів комуніка- ційних процесів (рис. 12.4). • За ознакою віддаленості: внутрішні (комунікації між членами учасників проекту); зовнішні (забезпечення зв’язку з керівництвом ІТ-компанії, замовником, зовніш- німи організаціями тощо). • За координацією спілкування: формальні (визначені в плані комунікацій проекту, наприклад документуван- ня роботи над проектом); неформальні комунікації (осо- бисті контакти між членами команди). • За організаційною спрямованістю: горизонтальні (між учасниками проекту одного статусу); вертикальні (з ура- хуванням статусу учасника проекту). У свою чергу вертикальні комунікації діляться на низ- хідні (від керівника проекту через керівника команди до безпосередніх розробників більше стосуються завдань проек- ту) і висхідні (зворотні комунікації порівняно з низхідними в основному містять інформацію про хід виконання завдань проекту). • За формою подання комунікації: аудіо-, відео-, текстові повідомлення. До інструментів комунікацій належать планувальники завдань (Task-менеджери), програми для спостереження за часом виконання роботи (тайм-трекери), системи моніторингу для забезпечення безпечної роботи людей та працездатності об’єктів, сервіси онлайн-листування (e-mail), відеоконферен- ції, відеозв’язки, групові чати, веб-конференції (текст, аудіо, відео), групи в соціальних мережах, електронні дошки оголо- шень та ін. Приклад. Порівняємо процес створення ПЗ з розв’язанням задачі на заняттях з програ- мування: написаний код програми можна вдосконалювати кілька разів, і інколи ви- никає потреба повернутися до попередніх версій коду. Так відбувається і з новим ПЗ. Прикладом є будь-яка операційна система, кожна версія якої більш досконала і зручна для користувачів, або програми офісного до- датку. У процесі створення ПЗ необхідно зберігати попередні версії програми. Щоб не задіяти безліч файлів, користуються спе- ціальним інструментом — системою контролю версій (СКВ). Вона містить протокол змін у файлі або в кількох файлах для надання можливостей працювати з попередніми версіями та викликати їх надалі. Типи комунікаційних процесів За ознакою віддаленості За координацією спілкування За організаційною спрямованістю За формою подання комунікації внутрішні формальні горизонтальні аудіо- та відео зовнішні неформальні вертикальні текстові низхідні висхідні Рис. 12.4. Типи комунікаційних процесів
  • 230. 230 Розділ 4 Існують різні типи СКВ: локальні, централізовані, розпо- ділені (на рис. 12.5–12.7 подано їхні схематичні зображення). Локальною СКВ є база даних для збереження всіх змін файлів, до яких має доступ СКВ. Прикладом є система rcs, робота її базується на зберіганні наборів патчів (різниць між файлами) у спеціальному форматі на диску та на можливості відтворення вигляду будь-якого файла. Централізовані СКВ створені для опрацювання змін у фай- лах, розташованих на різних персональних комп’ютерах. За- звичай їх робота основана на збереженні всіх версії файлів на сервері, до якого звертаються клієнти, щоб отримати не- обхідні копії. Прикладами є системи CVS, Subversion і Perforce. Розподілені СКВ відрізняються від централізованих тим, що клієнт, окрім копії необхідних версій файлів, отримує із сервера всі версії збережених файлів (створюється дзеркало репозеторія). Саме це є перевагою розподілених СКВ. Якщо сервер виходить із ладу, у централізованих СКВ губ- ляться всі дані щодо змін у файлах, а в розподілених СКВ версії файлів відновлюють із репозиторія клієнтів. Розподілені СКВ можуть надавати доступ до кількох від- далених репозиторіїв, що уможливлює одночасну співпрацю розробників. Прикладами є системи Git, Mercurial, Bazaar або Darcs. База Версій Сервера Версія n . . . Версія 2 Версія 1 ПК 1 Файл ПК 2 Файл Рис 12.6. Схематичне зображення централізованої СКВ ПК 1 База Версій Версія n . . . Версія 1 Файл ПК 2 База Версій Версія n . . . Версія 1 Файл Сервер База Версій Версія n . . . Версія 1 Рис. 12.7. Схематичне зображення розподіленої СКВ Запитання для перевірки знань Які є інструменти планування проекту? Перелічіть задачі проекту, які розв’язуються у  процесі комунікацій. Назвіть типи комунікаційних процесів? Дайте означення системи контролю версій. Які ви знаєте типи СКВ? У яких випадках доцільно використовувати певний тип СКВ? 1 2 3 4 5 6 Локальний комп’ютер База Версій Версія n . . . Версія 2 Версія 1 Переві- ряти Файл Рис. 12.5. Схематичне зображення локальної СКВ
  • 231. 231 12.3. Візуальне моделювання архітектури програмного забезпечення Наведіть означення понять моделювання, моделі. Пригадайте принципи об’єктно-орієнтованого програмування: дайте ви- значення понять класу, інкапсуляції, поліморфізму, наслідування. У створенні програмного забезпечення (ПЗ) і в зручному супроводі в процесі його експлуатації найважливішу роль відіграє побудова правильної структури. Як відомо, створене ПЗ може оновлюватися, а в розробці беруть участь багато працівників (і кожна група виконує певну задачу). З огляду на це, планування ПЗ доцільно по- чинати з його опису в загальному вигляді як системи, що складається з окремих компонентів. Архітектурою програмного забезпечення є  його структура, що складається з  програмних компонентів, їхніх інтерфейсів і  опису засобів об’єднання компонентів в  єдину систему. Архітектурний стиль визначає засоби організації компо- нентів та їх взаємозалежностей у системі ПЗ. Архітектура завжди описується в документації ПЗ, що в подальшому доз- воляє використовувати архітектурний стиль певного проекту в інших проектах як шаблон. Архітектурою визначається набір правил щодо організації п’яти структурних компонентів в єдину систему: сукуп- ність структурних компонентів системи і зв’язків між ними; взаємозв’язок окремих елементів системи; ієрархію підсис- тем, об’єднаних структурними компонентами; архітектурний стиль (використовуються методи і засоби опису архітектури, а також архітектурні образи). Для одного ПЗ існують кілька видів подання його архі- тектури залежно від мети використання. Програмне забезпе- чення є складною системою, яка у свою чергу є сукупністю взаємопов’язаних підсистем, об’єднаних одним завданням до функціонування. Для розуміння складових системи, їх функ- ціональних особливостей створюють кілька моделей архітек- тури, у яких відображені властивості, суттєві для поставле- ного завдання, та їхня взаємодія. Як у моделюванні об’єкта можна отримати кілька моделей залежно від мети дослідження (пригадайте моделі кровотвор- ної системи людського організму, модель — скелет, карта м’язів людини), так і для одного ПЗ існують кілька видів подання його архітектури залежно від мети використання. Архітектура ПЗ може мати різні форми подання, найбільш наглядною з яких є візуальна. Візуальним моделюванням називають метод розробки ПЗ, який для візуалізації, опису, проектування, докумен- тування архітектури ПЗ використовує графічні моделі. Едсгер Вібе Дейкстра — нідерландський науковець у  галузі комп’ютерних наук. У  1972 році був відзначений премією Тюрінга за вагомий внесок у розвиток мов програмування. Девід Л. Парнас — канадський учений у галузі інженерії програмного забезпечення. Вперше поняття архітектури зустрічається в  1968 році в  описах науково-дослідних робіт Едсгера Дейкстри та на початку 1970-х років у  Девіда Парнаса. Може бути подання функціональних можливостей ПЗ, опис структури програмних компонентів у  середовищі реалізації, опис фізичного розміщення програмних компонентів, відображення логічної організації компонентів у  систему тощо.
  • 232. 232 Розділ 4 Візуальне моделювання застосовується в процесі проекту- вання та аналізування системи перед написанням коду, а та- кож документування, тестування, розроблення вимог до ПЗ. Як приклад можна навести блок-схему програми розв’язування певної задачі. У блок-схемах використовуються блоки, кожний із яких має своє призначення і логічний зміст. А реалізувати блочне розв’язання задачі можна в будь-якому середовищі про- грамування. Макет сайта, для зображення якого скористалися графічним редактором, є візуальною моделлю сайта. Візуальне моделю- вання здійснюється за допомогою інструментальних засобів, до яких належать і мови візуального моделювання. Мова візуального моделювання (або візуальна мова) — це сукупність формалізованих наборів графічних симво- лів і  правил побудови з  них візуальних моделей. Універсальна мова моделювання UML є засобом моделю- вання (не програмування) для створення моделей будь-якого рівня абстракції для ПЗ будь-якого призначення. Основою UML-моделі є спеціальні графічні конструкції, які називаються діаграмами. Кожний тип діаграми має своє при- значення і дає уявлення про архітектуру ПЗ з різних точок зору: діаграми, які показують статичну структуру програми, діяльнісні аспекти системи, фізичні аспекти функціонування системи (діаграми реалізації). Діаграми містять елементи, що взаємодіють між собою, — побудова діаграм заснована на мо- делі «сутність — зв’язок». Мова UML містить нотації — правила побудови діаграм (оскільки мова не належить до мов програмування, то по- няття нотації аналогічне поняттю синтаксису при написанні програм). Елементами нотації є графічні зображення: фігури, лінії, написи. При проектуванні складного ПЗ використовують технологію CASE (англ. Сomputer Aided Software Engineering — комплекс інструментів і методів програмної інженерії для проектування ПЗ). CASE забезпечує автоматизовану допомогу в розробці ПЗ, його супроводженні, керуванні діяльністю розробників. Прикладами реалізації технології є такі програмні засоби, як RUP/USDP (використовує UML на всіх етапах розробки ПЗ), IBM Rational Rose, Borland Together, Telelogic Tau, Microsoft Visio/ UML Add-on. Запитання для перевірки знань Дайте визначення поняття архітектури про- грамного засобу. Поясніть поняття візуального моделювання. Наведіть приклади програмних засобів, які можна використати для графічного подан- ня архітектури ПЗ. Що таке універсальність мови моделювання? Поясніть, яка користь у  використанні стан- дартних мов моделювання. Наведіть приклади графу, в  якому як сут- ність є  учень. Перелічіть його зв’язки з  ін- шими сутностями. 1 2 3 4 5 6 Засоби моделювання • UML (англ. Unified Modeling Language  — уніфікована мова моделювання), використовується у  парадигмі ООП • BPMN (англ. Business Process Model and Notation  — система умовних позначень (нотація) для моделювання бізнес-процесів) • Rational Rose  — світовий лідер серед засобів візуального моделювання Технологія CASE передбачає наявність: • UML для побудови моделі ПЗ • графічні редактори для побудови діаграм • генератори для генерації коду для різних платформ • репозиторій з базою даних, у  якій зберігаються результати розробки компонентів ПЗ
  • 233. 233 12.4. Діаграми UML. Діаграми прецедентів Проектування програмного забезпечення (ПЗ) починається з формулювання вимог до нього. Вимоги до ПЗ — це саме ті функції, які має виконувати дане ПЗ, його сервіси. Саме з цієї причини процес розроблен- ня починається з оголошення й аналізу вимог, які будуть виконувати розробники, і як це буде виконуватися, знають тільки вони, а замовник оцінить кінцевий результат робо- ти — створене ПЗ (рис. 12.8). Вимоги (замовник) Розробка ПЗ (тільки розробник) Результат  — ПЗ (замовник, користувач) Рис. 12.8. Загальна схема розробки ПЗ Вимоги до нового ПЗ обов’язково документуються — ство- рюється технічне завдання (ТЗ) проекту, воно має вигляд звичайного тексту. Окремі пункти ТЗ часто подають у графіч- ному вигляді. Набір вимог мовyjuj візуального моделювання матиме вигляд діаграми вимог (прецедентів) та набору додат- кових нефункціональних вимог. Прецеденти, або варіанти використання (use­case), застосо- вуються для опису зовнішніх вимог до нового ПЗ або вимог удосконалення та зміни вже існуючого, а також правила вза- ємодії користувача з ПЗ. Нефункціональні вимоги не враховують конкретний варі- ант використання, в них може бути вказано особливості сере- довища реалізації, швидкодія, можливість додавання нових функцій та ін. Спочатку вимоги записують у текстовий документ, який надалі оформлюють як таблицю, в одному стовпці якої бу- дуть прецеденти, а в іншому — прізвища виконавців. Приклад 2. Складемо таблицю прецедентів вступу випускників у заклад вищої освіти, тобто та- блицю вимог від учня та закладу: Прецедент Виконавець Отримати атестат Учень, працівники закладу середньої освіти Отримати сертифікати ЗНО Учень Подати копії документів до вишу Учень, працівники приймальної комісії Оприлюднити результати подання документів Група 1 закладу вищої освіти Здійснити конкурсний відбір Група 2 закладу вищої освіти Оприлюднити список студентів Група 1 закладу вищої освіти Подати оригінал документів до вишу Учень, працівники приймальної комісії Видати довідку про вступ Працівники закладу вищої освіти Верифікація (англ. verification  — узгодження)  — це процес перевірки ПЗ або його компонентів на відповідність отриманих результатів визначеним вимогам. Валідація (англ. validation  — затвердження) — це визначення відповідності ПЗ очікуванням і потребам замовника (користувача). Приклад 1. Замовили програмний за- сіб, при запуску якого малю- ється фігура. При узгодженні вимог розробник розуміє, що фігура — червоний квадрат. Здійснюється розробка ПЗ. Перевіряється результат: фігура — квадрат? Колір — червоний? Це верифікація. При здачі ПЗ замовнику з’ясовується, що червоний квадрат — саме те, що він очікував. Або замовник хотів рожевий прямокутник і ПЗ слід переробляти. Це валіда­ ція.
  • 234. 234 Розділ 4 Таблицю можна подати й у вигляді графу, в якому верши- нами (сутностями) є учні, різні працівники закладів освіти, набір прецедентів. Кожне ребро графу покаже зв’язок між прецедентами та дійовими особами. Вигляд графу і буде діа- грамою прецедентів. Опис прецедентів не вказує, як досягається певний резуль- тат, ідеться лише про загальний опис дій (як учень готується до ЗНО та здає, вчиться й отримує атестат, як здійснюється вибір майбутніх студентів, не розглядається). Тому діаграми прецедентів відносять до групи діаграм, за якими візуалізу- ються динамічні аспекти архітектури системи. У діаграмі прецедентів сутності називають екторами. Ектор (від англ. аction — дія) — множина ролей, які вико- нуються в процесі взаємодії дійових осіб та прецедентів. За правилами мови візуального моделювання ектори зо- бражують у вигляді людини або як клас у програмуванні, а прецеденти описують у фігурі (еліпсі) (рис. 12.9). Прецеденти й ектори з’єднують за допомогою лінії, яка та- кож може мати стрілку — стрілка спрямована до елемента, послуги якого використовують. В описі ПЗ стрілка спрямо- вана до елемента, у якого запитується сервіс — функція ПЗ. Частково перетворимо таблицю на діаграму прецедентів за правилами мови візуального моделювання (рис. 12.10). Отримання атестату Отримання сертифікату ЗНО Подання документів (копії) Подання документів (оригінал) Оприлюднення результатів Видача довідки про  вступ Здійснення конкурсного відбору Вступ учня до вишу учень колектив учителів працівники приймальної комісії група 2 група 1 працівник вишу Рис. 12.10. Приклад діаграми прецедентів для завдання з організації вступу випускників до вишу На діаграмі відсутні деякі інші вимоги до процесу всту- пу, наприклад учню потрібно пройти співбесіду. Цю вимогу можна додати у вигляді прецедентів, що допоможе графічно показати зв’язок сутності учень та працівників різних підроз- ділів вишу. Брендан Айк — автор мови про­ грамування JavaScript, що є  стан- дартом для веб-програмування. Він брав участь у  створенні аме- риканської компанії Mozilla, яка розробляє браузер Firefox. Назва а б Рис 12.9. Вигляд ектора (а) та прецедента (б)
  • 235. 23512.4. Діаграми UML... Праворуч від прецедента можна показати відгук на нього, щоб візуалізувати ланцюжок: учень (випускник) → подання документів (копій) → працівники приймальної комісії Це означає, що випускник здав документи, а працівник комі- сії їх прийняв. Такі відгуки розміщують у фігурі прямокутної форми, вони становлять основу діаграм взаємодій. Підсумовуємо: створення діаграми прецедентів відбуваєть- ся послідовно (рис. 12.11). Екторами можуть бути предмети, наприклад функцією зовнішнього e-mail-шлюзу є надсилання рекламних повідомлень, які, у свою чергу, підготовлені пра- цівниками фірми). Визначення екторів Визначення прецедентів Опис кожного прецедента (у  потужному ПЗ може складатись з  інших) Опис моделі прецедентів Рис. 12.11. Створення діаграми прецедентів Діаграми прецедентів є потужним засобом подання архі- тектури ПЗ, засобом досягнення взаєморозуміння між за- мовниками, розробниками, експертами, користувачами (при- гадайте, що комікси набагато легше сприймаються і дають уяву про зміст, ніж простий опис у вигляді тексту). Оскільки ПЗ складаються з великої кількості складових, має велике число операцій (функцій окремих частин і всього ПЗ у цілому), то моделювання прецедентів дозволяє краще уявити функціонування ПЗ. Прецеденти є основою для тестування складових під час розроблення ПЗ, адже діаграма прецедентів описує бажані вимоги до ПЗ з точки зору замовника і користувача, а в про- цесі постійного порівняння наявних функцій складових з описаними прецедентами відбувається контроль реалізації функцій складових. Запитання для перевірки знань Як ви розумієте поняття прецедента? З яких елементів створюють діаграму пре- цедентів? Яке призначення діаграми прецедентів? Які аспекти розроблення ПЗ не враховує діаграма прецедентів? Проаналізуйте вміст рис. 12.10 та діаграми та поясніть, які прецеденти таблиці є  відгу- ком на прецеденти учня. За аналогією створення коміксів складіть діаграму поведінки учня або учениці на уроці фізкультури. 1 2 3 4 5 6 Завдання для самостійного виконання Уявіть себе розробником найпростішого графічного редактора, наприклад такого, як MS Paint. Екторами будуть інструменти редактора (назвіть їх у  загальному вигля- ді, наприклад фігури, гумка, ножиці тощо). А  прецедентами  будуть дії, які можна здій- снювати до екторів, наприклад створення, масштабування, фарбування тощо. Створіть діаграму прецедентів для цього ПЗ. Мовою UML пропонується така послідовність створення типів діаграм: • Діаграма прецедентів • Діаграма класів та діаграма об’єктів • Діаграма послідовностей • Діаграма станів • Діаграма взаємодій • Діаграма активностей...
  • 236. 236 12.5. Моделювання даних і архітектури програмного забезпечення Пригадайте визначення класів об’єктно-орієнтованого про- грамування (ООП), парадигми ООП і  модифікаторів доступу до класу. Як зображують ектор на діаграмі прецедентів? Мови візуалізації спрямовані на побудову різних моделей архітектури програмного забезпечення (ПЗ) за допомогою різ- них діаграм (приклад 1). Пригадайте, як у ході пояснення складових діаграми прецедентів наголошувалося, що ектор можна подати як клас в ООП, адже клас — це опис сукупності об’єктів із загальними атрибутами, операціями і семантикою. Діаграма класів (class diagram)  — це опис сукупності статичних складових ПЗ. Діаграма класів показує, опис яких сутностей буде опра- цьовано в коді програм. Програмний інструментарій, основа- ний на UML-моделюванні, дозволяє автоматично перетворюва- ти діаграму на код. Діаграма класів є кінцевим етапом проектування, після якого розробники приступають до написання коду. Опис кла- сів подібний до опису сутностей з їх атрибутами в проекту- ванні бази даних. За правилами мови моделювання клас на діаграмі зобра- жують у вигляді прямокутника, який розділено горизонталь- ними лініями на три частини, кожна з яких містить назву, атрибути та операції класу (рис. 12.12). Назва класу Атрибути класу Операції класу Назва Атрибуту з указанням типу Назва Операції з указанням типу Рис. 12.12. Схематичне зображення класу в діаграмі класів Як відбувається опрацювання класу, описано в загально- му вигляді, як це здійснено на рівні кодів — знає розробник коду (а користувачів ПЗ це питання не цікавить). Тут пра- цює відома вам парадигма ООП — інкапсуляція. Доступ до атрибутів і операцій класу здійснюється завдяки описаним модифікаторам доступу до класу (приклад 2). У побудові діаграм ураховують і інші парадигми ООП. Приклад 1. Одна з діаграм описує взаємодію користувача з ПЗ, інша — зміну його станів у процесі її роботи, ще одна — взаємодію складових (компонентів) ПЗ. Приклад 2. Вам необхідно надіслати СМС-повідомлення за допомогою мобільного телефону. Ви переходите до вибору адресата й вибираєте значок повідомлення, далі вводите текст і відправляєте повідомлення. Реалізація операцій відбувається у вікні, яке представляє інтерфейс об’єкта адресат. Об’єкт може мати кіль- ка інтерфейсів: в адресата є редагування його даних, надсилання повідомлень, над- силання електронного листа тощо. Якщо взяти як приклад графічний редактор, то фігура матиме інтерфейс зафарбуван- ня, копіювання, переміщення тощо.
  • 237. 23712.5. Моделювання даних... Наслідування реалізується в створенні суперкласів (кла- сів-батьків) і підкласів (класів-нащадків) (рис. 12.13), а полі- морфізм у перевизначенні операцій — методів. Назва суперкласу Атрибути суперкласу Операції суперкласу Назва підкласу Додаткові атрибути Додаткові операції Визначення узагальнення для  наслідування Рис. 12.13. Схематичне зображення властивості наслідування в діаграмі Продовжимо аналізувати приклад з графічним редактором. Суперклас Фігури матиме атрибути координат х і у роз- ташування центра фігур, для підкласу точки додаткових атрибутів не потрібні, а прямокутник матиме ще й атрибути висоти та ширини, круг — радіус. У UML назву класу записують з великої літери, перед на- звою атрибуту або операції вказують позначку, яка відпові- дає певному модифікатору доступу: для private — це _, для protected — #, для public — +. Атрибут (або властивість) записують за правилами синтак- сису мови ООП: вказують модифікатор видимості, тип, ім’я з малої літери (приклад 3). Операціями класу в ПЗ є сервіси, які надаються класом за вимогами користувачів або іншими складовими ПЗ (приклад 4). Екземпляром класу є об’єкт. Якщо клас не утримує об’єкт, його називають абстрактним класом, а його назву записують курсивом. Також створюють і діаграми об’єктів: об’єкт на діаграмі графічно поданий так само, як і клас: назва об’єкта з класом, якому він належить, та його атрибути (приклад 5). Діаграма об’єктів візуалізує екземпляри класу — об’єкти, їх стан і взаємозв’язок між ними в конкретний момент часу. На діаграмі класів зображують зв’язки між класами та об’єктами класів. У UML чотири типи зв’язку: Залежність, Асо- ціація, Узагальнення, Реалізація. Тип зв’язку візуалізується формою лінії та стрілки: Залежність Асоціація Узагальнення Реалізація Завдяки поліморфізму відбувається реалізація механізму інтерфейсів. Наприклад, щойно користувач звертається до операції масштабування фігури в  графічному редакторі через інтерфейс редагування, визначається клас об’єкта і  викликається відповідна операція класу. Приклад 3. public: колірФарбування Соlоr — (255, 0, 0). Приклад 4. Операції класу: + намалювати (фігура Прямо- кутник = квадрат, колірФарбу- вання Соlоr = (255,0,0)) Приклад 5. Формат опису об’єкта: Ім’я об’єкта : клас, якому він належить (з підкреслен- ням), наприклад, прямокутник: Фігура.
  • 238. 238 Розділ 4 Розглянемо зазначені типи зв’язків (рис. 12.14). Залежність (використання) — зв’язок, при якому зміни в описі одного класу впливають на інші класи. Один із цих класів буде незалежним, а інший — залежним, стрілка на діаграмі спрямована до залежного класу. Асоціація — набір зв’язків між класами. Стрілка лінії зв’язку Асоціація спрямована на клас, який визначає правила. Якщо звернутися до прикладу БД, у якій є сутності вчитель і учень, то Асоціація навчає, а на діаграмі стрілка буде спря- мована від учителя до учня з написом «навчає», для Асоціації «навчає» — спрямована від учителя до назви класу, в якому він є класним керівником. Асоціації можуть бути подвійними, тоді вони зображуються просто лінією без стрілки. Узагальнення — зв’язок, який реалізує властивість ООП спадковість. На діаграмі він позначається лінією із замкне- ною стрілкою, що вказує на батьківський клас. Реалізація — зв’язок, який відображає взаємодію між кла- сами. Один клас визначає правила, яких має дотримуватись інший клас. Взагалі реалізація показує зв’язки між інтер- фейсами та класами, які реалізують ці інтерфейси. У цьому зв’язку взаємозалежність зв’язків Узагальнення та Залежності. Розглянемо більш детально програмування графічного ре- дактора на прикладі 6. Приклад 6. Почнемо з найменшого елемента графічно- го зображення. Точка має параметри — коор- динати х і у. Ці параметри встановлюються вказівником для миші. Тому точка буде мати метод фіксації положення вказівника — взя- ти координати та метод встановлення цих координат для точки. Точку можна переміщувати, тому клас Точка матиме метод переміщення з параметра- ми-координатами, адже переміщення буде ви- значатися новими координатами (рис. 12.15). Точка Узяти х Узяти у Установити х Установити у Перемістити в х, у Рис. 12.15. Опис класу Точка Аналогічно створюється клас Лінія. Проте в цьому випадку встановлюється не кожна окрема координата точок її кінців, а відразу використовується точка як об’єкт, і клас Відрізок опише такі методи: • Взяти Точку1 (вона вже має координати) • Взяти Точку 2 • Установити Точку 1 (вже описано, як встановлюють координати точки) • Установити Точку 2 • Перемістити в Точку (йдеться про пере- міщення вузла лінії як точки, що вже описано) Елементи фігури складаються з точок і лі- ній, а зображення фігури створюється з еле- ментів. У такій організації класів графічного редактора будуть задіяні два типи взаємо- зв’язків: Асоціація та Узагальнення. Фігура визначається елементом — це Асо- ціація; стрілка спрямована від фігури. А еле- менти є нащадками точок і ліній (рис. 12.16). Класи графічного редактора: • Фігура • Елемент фігури • Точка • Лінія Зв’язки Залежність Узагальнення Реалізація Асоціація • бінарна • багатовимірна • агрегатна (композиція) Рис. 12.14. Зв’язки між класами на діаграмі класів
  • 239. 23912.5. Моделювання даних... Фігура Елемент Фігури Перемістити Точка Узяти х Узяти у Установити х Установити у Перемістити Точка Узяти Точку1 Узяти Точку2 Установити Точку1 Установити Точку2 Перемістити Рис. 12.16. Приклад діаграми класів для графічного редактора У ході створення діаграми класів не завжди доцільно створювати необхідні класи, оскільки їх можна взяти з уже наявних проектів інших систем та адаптувати під своє про- грамне забезпечення. Запитання для перевірки знань Що таке діаграма класів? З яких елементів на діаграмі створюють зображення класу? Які типи зв’язків існують у UML між об’єкта- ми класів? Наведіть приклади реалізації на діаграмі властивості ООП інкапсуляція, наслідуван- ня, поліморфізм. Відредагуйте діаграму (див. рис. 12.8), ука- жіть правильну назву об’єктів малювання по відношенню до класу. Опишить, як показати на діаграмі реда- гування графічної фігури за допомогою таких  операцій, як вилучити, копіювати, вирізати. 1 2 3 4 5 6 Завдання для самостійного виконання Доопрацюйте діаграму класів, наведену на рис. 12.16. З’ясуйте, який зв’язок між об’єк- тами Точка, Відрізок і  накресліть його. До- дайте атрибути у  вказані методи. Додайте методи у клас Фігура. Розгляньте діаграму класів на рис. 12.16. Вона дає уявлення про створення графіч- ного зображення взагалі. Створіть частину діаграми побудови будь-якого об’єкта по- фарбованого векторного зображення. 1 2 Діаграма класів містить і  елементи, які візуалізують інтерфейс (рис. 12.17). Після interface зазначають його ім’я, яке за аналогією з  мовою Java починається з  літери І. У  мові С++ реалізація інтерфейсу відсутня, його реалізують як перелік методів, а  зміст методів реалізовано в  конкретних класах interface ІРедагування + перемістити + замінити розмір + повернути Рис. 12.17. Зображення інтерфейсу на діаграмі класів
  • 240. 240 12.6. Діаграми послідовностей та діяльностей Пригадайте особливості діаграми прецедентів. Які вона має складові? Діаграми класів і об’єктів моделюють статичний стан сис- теми програмного забезпечення (ПЗ). Взаємодія об’єктів є ди- намічною, якщо проявляється в передачі та прийомі повідом­ лень. У проектуванні ПЗ повідомленнями є виклик методів і результат їх відпрацювання. Для графічного зображення динамічної взаємодії об’єктів користуються діаграмами послідовностей (sequence diagram), уточнюють діаграми прецедентів. На діаграмах послідовностей об’єкти позначено прямокут- никами з  підкресленими іменами (щоб відрізнити їх від класів), повідомлення  — лініями зі стрілками. Суцільними лініями показано виклики методів, а  пунктирними  — ре- зультати відпрацювання методів. Пригадайте, як ми складали таблицю прецедентів вступу випускників до закладу вищої освіти (§ 12.4). Створимо тепер діаграму послідовностей (рис. 12.18). податиЗаявуНаВступ результатиЗНО результатРейтингу результатиЗНО рейтинг ученьАбітурієнт (стан) учень1:Абітурієнт :Приймальна комісія :Конкурсна комісія Рис. 12.18. Діаграма послідовностей вступу учнів до закладу вищої освіти Зміст діаграми у словесній формі можна подати так: учень хоче стати студентом певного факультету. З цією метою він подає заяву в приймальну комісію, а та приймає від нього заяву, учень змінює стан на абітурієнта, конкурсна комісія перевіряє кількість балів і запитує результати ЗНО, приймає, визначає рейтинг учня серед абітурієнтів факультету, передає їх до приймальної комісії. Учень отримує результат з при- ймальної комісії. На діаграмі маленькі прямокутники на вертикальних пунктирних лініях під кожним об’єктом наочно показують часову послідовність їх взаємодії (їх можна не малювати). Діаграма послідовностей відображає взаємодію об’єктів, упорядкованих за часом.
  • 241. 24112.6. Діаграми ... Альтернативою діаграми послідовностей є діаграма взаємо- дій. На ній зазначається не назва операції, а її порядковий номер. Оскільки від одного об’єкта може викликатися кіль- ка методів, а між викликами отримувались результати, то в розташуванні номерів за часом не буде впорядкованості. На рис. 12.19 подано заготовку діаграми взаємодій: по- казано, як у процесі створення графічного зображення ко- ристувач зафарбовує фігуру. Замість методів і їх результатів у діаграмі взаємодій проставляється нумерація в послідов- ності виконання. вибір вибір відкрити результатиВПам’яті застосуватиРезультат повернутиЗначення(стан) повернутиЗначення(стан) :Фарбування (вікно) колір стиль :Користувач об’єкт:Фігура Рис. 12.19. Заготовка для діаграми взаємодій Часто для створення алгоритму розв’язування задачі ви користуєтеся блок-схемами. У моделюванні блок-схема є най- простішим прикладом діаграми діяльностей. Діаграми діяльностей (Activity Diagrams) є поданням ал- горитмів процесів, які виконуються в системі. Елементами такої діаграми є операції. Діаграми діяльностей уточнюють, деталізують особливість алгоритмічної і логічної реалізації операцій, візуалізують послідовність етапів складного процесу, наприклад обчислю- вального алгоритму або технологічного процесу. Для певного ПЗ діаграм діяльностей може бути кілька, і в кожній демонструється перехід однієї послідовності дій до іншої. На відміну від блок-схем, на яких одинарними стріл- ками показується послідовний перехід між алгоритмічними структурами, на діаграмі зображують паралельний потік дій між елементами. На рис. 12.20 показано, як зображуються операції до пев- ного елемента діаграми, які змінюють його стан. У випадку а прикладом є реалізація розгалуження, у випадку б показано об’єднання операцій, застосованих до певного елемента. Чер- воним (випадок в) позначено недопустимий варіант — заборо- на паралельних операцій до об’єкта та від нього. У нотаціях UML паралельний потік дій називається смуга­ ми (swimlanes) і є частиною області діаграми тільки тих дій, за які відповідає цей елемент. Діаграми діяльностей із смуж- ками мають вигляд басейну з плавальними смугами. а б в Рис. 12.20. Вигляд потоків дій на діаграмі діяльностей
  • 242. 242 Розділ 4 Кожна зі смуг відповідає за певний елемент та в області яких показано перелік дій з елементом. Основне завдання діаграми діяльностей — показати по- слідовність етапів складного процесу та деякі обмеження, накладені на ці етапи. Розглянемо діаграму діяльностей на прикладі вступу абітурієнта до вишу. Після подання доку- ментів особі цікаво, яка вона в рейтингу вступників. Абіту- рієнт виходить на сервер за відомим йому посиланням для перегляду списків і свого рейтингу (рис. 12.21). Запит Запит до БД Інформація для клієнта Вибір даних Передача даних Отримання даних Абітурієнт Веб-сервер Сервер БД Ні (відсутній) Ні Так є Доступ Повтор Рис. 12.21. Приклад діаграми діяльностей На діаграмі вертикальними смугами зображено смуги з іменами Абітурієнт, Веб-сервер, Сервер БД. Їх можна й не малювати, також смуги можуть бути горизонтальними — все зображення необхідно розвернути на 90 градусів. Початкова точка діаграми (або початковий стан об’єкта) — чорний круг, а кінцева — чорний кружечок у білому кружочку. Стрілками зображено напрями потоків даних, у зкруглених прямокут- никах — назву операції. Запитання для перевірки знань Для чого створюють діаграми послідовно- стей? Які складові відображено на діаграмі послі- довностей? Яка різниця між діаграмами послідовностей і  взаємодій? Що моделює діаграма діяльностей? Яка відмінність діаграми взаємодій від діа- грами активностей? Як показати на діаграмах процес редагу- вання графічної фігури з  операціями: вида- лити, копіювати, вирізати? 1 2 3 4 5 6 Завдання для самостійного виконання Проаналізуйте приклад, наведений на рис.  12.21, та  створіть діаграму взаємодій з  нумерацією повідомлень. Додайте на свій розсуд додаткові дії.
  • 243. 243 12.7. Проектування інтерфейсу користувача Пригадайте, що таке інтерфейс. Які типи інтерфейсів ви знаєте? Користувач або замовник працює з програмним засобом через інтерфейс, отже, за його зручністю й функціональним призначенням буде надано оцінку працездатності кінцевому продукту роботи розробників. Якщо завданням є створення нового сайта для просування й замовлення певної продукції, то оформлення сайта, враху- вання в його інтерфейсі вимог різного типу клієнтів відігра- ватиме значну роль у розповсюдженні та продажі продукції. Зручне оформлення графічного інтерфейсу є вирішенням про- блем його графічного дизайну. Інтерфейс програмного засобу має багато призначень, його називають також інтерфейсом прикладного програмування. Інтерфейс прикладного програмування (від англ. Application Programming Interface, API) — це комплекс готових класів, методів, структур, констант, які пропону- ються додатком (бібліотекою, сервісом) або операційною системою користувачу або іншим програмним засобам. Оформлення інтерфейсу, його дизайн залежить від того, для кого призначено програмний засіб, а також від функціо- нального наповнення засобу. Інтерфейс користувача (англ. user interface, UI), або ко- ристувацький інтерфейс, призначено для зручної та комфорт- ної роботи з програмним засобом. Правильно спроектований інтерфейс називають дружнім, або інтуїтивно зрозумілим. Розробка інтерфейсу користувача складається з таких ета- пів, як дослідження, проектування структури, проектування дизайну, безпосереднього розроблення. Розглянемо їх. Етап 1 На етапі дослідження відбувається аналіз призначення ПЗ, статистики використання подібного типу ПЗ, пристроїв для розміщення розроблюваного ПЗ, функціональних особливостей ПЗ, які мають бути представлені користувачу, створення списку задач, які будуть реалізовані в  інтерфейсі користувача. Етап дослідження є  основою для етапу проектування, на якому створюється структура інтерфейсу, оскільки завдання, реалізовані в  інтерфейсі, складаються з  кроків їх розв’язування, то представлений інтерфейс ПЗ може мати кілька екранів для уможливлення виконання всіх вимог до ПЗ. Етап 2 На етапі проектування структури інтерфейсу створюють прототип інтерфейсу  — зазвичай два: чорновий та фінальний. У  чорновому створюють схему інтерфейсу із зонами для груп елементів без їх детального опису. Чернетка дозволяє з’ясувати, наскільки складним буде інтерфейс, чи достатньо одного екрана для реалізації всіх вимог до ПЗ. Фінальний прототип містить опис елементів у  зонах з  їхнім призна- ченнням і  зв’язками з  іншими елементами. Цей етап часто завершується створенням діаграми взаємодій. Сучасний вигляд інтерфесу SILK-інтерфейс (від англ. Speech   — мова, промова, Image — зображення, образ, Language — мова, Knowledge  — знання) дозволяє керувати програмою на основі поведінки користувача. В  проектуванні таких інтерфейсів використо- вувалися мовні та біометричні технології: команди можна ­ давати, промовляючи їх, а  в деяких іграх можна ­ керувати персонажем через рух корис- тувача.
  • 244. 244 Розділ 4 Етап 3 Етап проектування дизайну інтерфейсу розв’язує питання оформлення інтерфейсу (кольорова гама, розмір і  вигляд елементів, їхнє взаємне розташування, наявність графічних і  анімаційних ефектів). Після створення концепції дизайну є  уявлення, яким буде інтерфейс ПЗ. Етап 4 Етап безпосереднього розроблення інтерфейсу передбачає наявність макетів усіх екранів інтерфейсу, необхідних матеріалів та документації дають можливість роз- робникам перейти до наступного етапу. Розглянемо деякі вимоги до дизайну інтерфейсу. • Загальний вигляд інтерфейсу визнача- ється взаємним розташуванням його еле- ментів. Зазвичай елементи групують за призначенням. • Для визначення розмірів груп елементів користуються правилами пропорції (на- приклад, принципом «золотого перети- ну»). Кожний елемент має своє призна- чення, про що є підказка. Зручно, коли вона з’являється у спливаючому віконці. Такі підказки не виключають наявності довідки щодо використання ПЗ. Інтерфейс має бути інтуїтивно зрозумілим, бо часте звертання до довідки уповільнює роботу. • В інтерфейсі програмних засобів для ко- лективного користування групою слід обе- режно розміщувати (а інколи є сенс і при- ховати) команди особистого налагодження засобу. Працівники звикають до певного вигляду інтерфейсу, і щоразу пристосову- ватися до змін, уведених попереднім ко- ристувачем програми, не зручно. Описані етапи розробки інтерфейсу складають основу ди- зайну інтерфейсу ПЗ, в якому поєднано: • UI-дизайн (від. англ. User Interface — користувацький інтерфейс); • UX-дизайн (від. англ. User Еxperience — досвід взаємодії); • продуктовий дизайн. Користувацький інтерфейс (інтерфейс, призначений для користувача) є більш вузьким поняттям у визначенні інтер- фейсу. Як вже наголошувалося, користувацький інтерфейс складається з певного комплексу графічно оформлених тех- нічних елементів (кнопки, селектори та інші поля). Його призначенням є допомога користувачеві в організації зручної взаємодії з програмою або сайтом. Проте призначення інтерфейсу цим не обмежуються: в ін- терфейсі також мають бути реалізовані завдання програмно- го засобу. Якщо створюється інтерфейс сайта певних послуг, то враховуються запити користувача до цих послуг, зручність у їх виклику, наявність довідкових матеріалів до послуг, ор- ганізцій, що забезпечують послуги, взаємодія з ними тощо. Якщо створюють новий програмний засіб, наприклад гра- фічний редактор, то при його запуску користувачеві забезпе- чуються зручні умови його використання та виклик функцій для роботи з ним. Інтерфейси графічних редакторів врахову- ють також досвід користувача: так, стандартний, убудований в операційну систему MS Windows растровий графічний ре- дактор Paint розрахований на менш досвідченого користувача, Правила оформлення інтерфейсу користувача • Групування елементів (меню, форми, блоки) • Вирівнювання елементів • Єдиний стиль елементів за  формою та кольором • Наявність вільного простору для розмежування блоків У 1990 році дослідники Якоб Нільсен (на фото зліва) і Рольф Молич оголосили 10  евристик  — правила, що найчастіше використовуються в проектуванні дизайну інтерфейсу.
  • 245. 24512.7. Проектування... ніж інші потужні редактори, які передбачають певний досвід для їх повнофункціонального використання. UX-дизайн враховує компоненти взаємодії «користувач — ПЗ»: інформаційну архітектуру, проектування взаємодії, інтерактівність користувацького інтерфейсу, його наповнення. Продуктовий дизайн — це весь процес створення інтер- фейсу, який починається з аналізу розв’язання проблеми представлення ПЗ користувачеві або замовнику до розробки плану тестування інтерфейсу на відповідність вимогам та оформлення декількох його концепцій. Фахівці з розробки продуктового дизайну називаються продуктовими дизайнерами (Product Designer) — цей фах з’явився в новому тисячолітті (після 2000 року). Зазвичай продуктовим дизайном опікується група фахів- ців, які підтримують зв’язок із розробниками впродовж часу створення інтерфейсу. У сфері просування продукції продук- тові дизайнери також взаємодіють із працівниками відділу маркетингу. Великі компанії ми пізнаємо за фірмовим лого- типом. Зазвичай логотип є обов’язковим елементом дизайну сайта компанії чи закладу. Пол Ренд сформулював тестові запитання, відповіді на які однозначно окреслять логотип компанії. За тестами славетного дизайнера й сьогодні визна- чають ефективність використання логотипів. Зупинимось на кількох принципах проектування. При створенні дизайну інтерфейсу на основі правил Золо- того перетину користуються співвідношенням 1 : 1.618 для розмірів та взаємного розташування елементів інтерфейсу. Поєднання симетрії і правила золотого перетину сприяє най- кращому зоровому сприйняттю і появі відчуття краси і гар- монії. Часто на основі правила золотого перетину створюють розмітку веб-сторінок. Так, логотип Apple (надкушене яблуко) побудований за принципом золотого перетину. Гаманець Міллера (закономірність виявлена американським вченим-психологом Джорджем Міллером) полягає в тому, що короткочасна людська пам’ять може запам’ятати і повторити лише 7 (± 2) елементів. Цей принцип поширено використову- ється в побудові інтерфейсів програм. Якщо кількість елемен- тів меню (пунктів меню, кнопок, закладок) більше від 7 (або насамкінець 9), то їх намагаються згрупувати. Запитання для перевірки знань Назвіть етапи розроблення інтерфейсу. Дайте визначення поняттю продуктового дизайну. Які проблеми розв’язує група продуктових дизайнерів? До якого етапу розробки інтерфейсу графіч- ного редактора можна віднести створення діаграми взаємодій для нового зображення, що створюється з  «0» або завантажується з  файла? Чим відрізняються обов’язки дизайнера і  продуктового дизайнера? Створіть макети інтерфейсу вікон графічно- го редактора. 1 2 3 4 5 6 Американського дизайнера і арт-директора Пола Ренда називають легендою епохи. Він є автором розробки логотипів відомих фірм IBM, UPS, Enron, Morningstar, Inc, Westinghouse, ABC, а також логотипа NeXT, розробленого на замовлення Стіва Джобса. Принципи проектування дизайну інтерфейсів • Золотий перетин • Гаманець Міллера • Принцип групування • Бритва Оккама або KISS • Видимість відображає корисність • Розумне запозичення
  • 246. 246 12.8. Тестування та оцінювання програмного забеспечення Пригадайте етапи розробки інтерфейсу ПЗ. Яке призначення прототипів на етапі проектування структури? Для створення інтерфейсу ПЗ розробники використовують прототипи інтерфейсу. Реалізація кожного етапу розробки ПЗ теж базується на створенні прототипів, тому прототипи діляться на типи. Ви вже дізналися про інтерфейсні прототи- пи (їх ще називають горизонтальними прототипами). Тестування ПЗ  — це процес перевірки, наскільки ПЗ від- повідає вимогам і  очікуванням. Розроблені для цього тес- ти мають основою задокументовані вимоги замовника. Горизонтальним прототип називають тому, що в ньому не передбачено реалізацію видів архітектури, функції системи, натомість у ньому втілюються особливості інтерфейсу корис- тувача. У такому прототипі під час виконання переміщення між об’ктами зазначатиметься, що саме має знаходитися в місці переміщення, оскільки здійснення функціональних операцій є особливостями іншого типу прототипів. Вертикальний (або структурний) прототип не обмежуєть- ся інтерфейсом користувача. У ньому враховано всі етапи розроб­лення ПЗ. Вертикальний прототип дозволяє перевіряти правильність архітектурних рішень. Прототипи створюють для перевірки працездатності ПЗ: на початку розроблення вимог до ПЗ не завжди є можливість встановити однозначність цих вимог. Крім того, вже в проце- сі розроблення можуть виникнути доповнення до вимог. Для з’ясування відповідності вимогам розрізняють одноразові (або дослідницькі) та еволюційні прототипи. Одноразові прототипи створюють для отримання відповіді на певне питання щодо ПЗ, для покращення певних вимог до програмного засобу. Еволюційні прототипи вважають архі- тектурним «фундаментом» для поступового створення кінце- вого результату з урахуванням появи нових вимог і з’ясуван- ня нюансів існуючих. Створення еволюційного прототипу є одним з компонентів моделі спірального циклу розробки ПЗ: розроблюється прото- тип початкової версії ПЗ, який надалі модифікується до ос- таточного результату, який відповідає меті і вимогам проекту (рис. 12.22). Створення прототипу  — це процес, який включає ство- рення чернеток, їхню демонстрацію та критичне обгово- рення. Прототипом певних етапів може бути і код, і написи на па- пері (дошці). Доопрацювання прототипу відбувається на основі тестування системи або її частини на відповідність вимогам. На кожному етапі розроблення ПЗ створюють прототипи. Горизонтальний прототип демонструє функціональні можливості ПЗ (але не забезпечує їх працездатність): показує, як виглядає користувацький інтерфейс (кольори, графічні елементи, вікна та елементи управління) і  визначає структуру навігації. Розробка прототипу ПЗ Розробка вимог Використання прототипу ПЗ Розроблене ПЗ Перевірка ПЗ Відповідає вимогам, меті Не відповідає вимогам, меті Рис. 12. 22. Схема використання еволюційного прототипу
  • 247. 24712.8. Тестування та... Прототип вимог до ПЗ — це часткова реалізація програм- ного забезпечення, створена з метою допомогти розробникам, користувачам і клієнтам краще зрозуміти вимоги до системи та з’ясувати питання, наскільки можливо здійснити задово- лення вимог та розробити ПЗ взагалі. Програмні прототипи є частковими реалізаціями ПЗ, для демонстрації та перевірки певних його функціональних мож- ливостей: модульне, інтеграційне і системне тестування. Модульним тестуванням називають перевірку працездатно- сті окремих модулів системи. Якщо модулі об’єднують в ок- ремі компоненти ПЗ, здійснюється інтегроване (або об’єднане) тестування. На цьому етапі також тестують користувацький інтерфейс. Наприкінці, коли вже всі модулі об’єднані та взає- модіють як єдина система, здійснюється системне тестування. Уведене в експлуатацію ПЗ також підлягає тестуванню, оскільки воно використовується користувачами в абсолютно різних середовищах. Можуть виникнути помилки, пов’язані саме із взаємодією ПЗ із системним і апаратним середовищем. Часто тестування на основі прототипів відповідає V-моделі, яку ще називають прототипним розробленням через тесту- вання. Свою назву V-модель отримала завдяки формі її гра- фічного подання (рис. 12.23). Планування проекту і  вимог Впровадження, супроводження Аналіз вимог, ТЗ Системне тестування Розробка архітектури Об’єднання і тестування Деталізація проекту Модульне тестування Створення Рис. 12.23. Схема V-моделі Розробка ПЗ також може здійснюватися на основі спіраль- ної моделі з використанням прототипів є циклічним проце- сом. У ньому відбувається багаторазове повторення процесів створення прототипів, тестування та коректування проекту- вання до досягнення мети розробки. План тестування — це документ, в якому описано весь об- сяг робіт із тестування: опис ПЗ, стратегія, розклад, критерії початку та закінчення тестування, а також необхідне облад- нання, спеціальні знання та оцінки ризиків з варіантами їх- нього розв’язання. Процес тестування ПЗ пов’язаний з  безпосереднім розроб­ленням ПЗ і  впливає на його життєвий цикл. Життєвий цикл розроблення ПЗ — це  період від замовлення ПЗ до його кінцевої реалізації з впровадженням, експлуатацією та супроводом. Результати роботи з  прототипом дозволяють своєчасно коригувати вимоги до ПЗ. Після цього перед розробниками постають лише перевірені й  деталізовані завдання.
  • 248. 248 Розділ 4 Тест-дизайн — це етап тестування ПЗ, на якому проекту- ються та створюються тести (тест-кейси) відповідно до визна- чених критеріїв якості ПЗ та мети тестування. У процесі здійснення тест-дизайну тест-аналітик визначає, ЩО тестувати, а тест-дизайнер  — ЯК тестувати. Існують різні методи тестування. Розглянемо деякі з них. Еквівалентний розподіл — це перевірка правильної роботи програмного засобу для допустимого діапазону значень вхід- них даних. Наприклад: є діапазон значень певних параметрів ПЗ (від 14 до 60) — під час тестування перевіряється робота ПЗ для значень діапазону та для значень, за його межами. Або під час тестування програми з визначення кореня квадратного рівняння необхідно вводити значення параметрів, при яких є розв’язок та при яких він відсутній. Аналіз граничних значень — для наведеного вище при- кладу беруться значення межі 14 та 60, а також значення, менші за 14 та більші від 60. Причина/Наслідок — під час проектування системи керу- вання базою даних необхідна функція додавання в таблицю даних: здійснюється перевірка: викликається функція дода- вання, вводиться значення, підтверджується додавання (при- чина) та перевіряється, чи присутнє в таблиці нове значення (наслідок). Передбачення помилки — при введенні нового номера те- лефону в базу даних перевіряється кількість цифр і видаєть- ся повідомлення в разі неправильної кількості. Вичерпне тестування — відбувається введення комбінацій значень всіх вхідних даних, не завжди використовується у випадку великої кількості вхідних даних. Попарне тестування — формування наборів вхідних даних, при якому значення одного параметру хоч би раз використо- вувалось із значенням кожного іншого параметру. У процесі тестування визначається якість ПЗ. Якість програмного забезпечення (Software Quality) ви- значається сукупністю його характеристик, які відповідають установленим вимогам і очікуваним потребам. Це процес оцінювання системи або її компонентів. Він здійснюється з метою визначення, чи задовольняють резуль- тати етапів розробки, сформованих на початку їх виконання такі, як мета, термін завдання кожного етапу. Запитання для перевірки знань З якою метою розробляють прототипи? Для чого розробляють прототип вимог до  ПЗ? Які завдання розв’язують вертикальні та го- ризонтальні прототипи? Яка різниця в розробці ПЗ на основі V-мо- делі та спіральної моделі? Як здійснюється тестування ПЗ? З чого складається оцінювання ПЗ? 1 2 3 4 5 6 Часто в описі процесів тестування зустрічаються абревіатури QA і QC. QA (від  англ. Quality Assurance  — гарантія якості) означає процес забезпечення якості, який охоплює всі етапи розробки програмного засобу. QA передбачає вивчення процесів і визначення всіх умов і  обставин, які можуть вплинути на якість розробки та її кінцевий результат. QC (від  англ. Quality Control) означає контроль якості ПЗ при розробці та його аналіз на відповідність вимогам на певному етапі.
  • 249. 24912.9. Системна архітектура... 12.9. Системна архітектура. Апаратні та програмні рішення Що таке архітектура ПЗ? Замовити програмне забезпечення (ПЗ) можуть організації, що мають свою структуру, обчислювальні пристрої, мережу, програмні засоби. Сучасні організації застосовують інформа- ційні технології для вдосконалення методів роботи. Ознайомимося з ПЗ, у якому враховано бізнес-діяльність організації, її зв’язки із зовнішніми структурами, а також яке задовольняє інформаційні потреби всіх співробітників, служб і підрозділів. Таке ПЗ називають інформаційною сис- темою (ІС). Системною називають архітектуру, яка визначає сукуп- ність методологічних, технологічних і  технічних рішень для забезпечення інформаційної підтримки діяльності організації. Системна архітектура визначає загальний склад ІС орга- нізації й зазвичай має такі складові: архітектуру додатків, архітектуру даних і архітектуру обладнання. Архітектуру додатків становлять функціональний і компо- нентний склад ІС. До її складу належать додатки, які під- тримують виконання бізнес-процесів, інтерфейси взаємодії підсистем та ІС із зовнішніми системами, засоби і методи розробки та супроводу додатків. Архітектурою даних є методи взаємодії складових системи і зберігання даних, безпосередньо сховища даних і правила доступу до них. Архітектуру обладнання складають мережна архітектура, програмні та апаратні засоби обчислювальної техніки. Як ви знаєте, для опису різних моделей архітектури ви- користовують графічні схеми, мови графічного моделювання, правила яких розроблені на основі стандартів. IDEF є сукупністю стандартів моделювання та проектуван- ня ІС. Кожна складова цієї сукупності описує окрему модель архітектури. Спершу був розроблений стандарт IDEF0, далі додавалися моделі, і на місці 0 з’явились цифри 1, 2, … . Стандарт ARIS (Architecture of Integrated Information System, ARIS) є сукупністю різних методів моделювання, які відображають різні аспекти ІС. ARIS призначено для розробки ІС — від визначення вимог до опису реалізації. У цій архітек- турі враховано опис організаційної структури, моделювання бізнес-процесів, документування архітектури додатків, даних тощо. ARIS пропонує діаграму eEPC (extended Event Driven Process Chain — розширений ланцюжок процесів керування подія- ми). Вона розширює можливості сукупності стандарта IDEF IDEF1 моделює інформаційні потоки, а  IDEF3 призначений для стандартизації документування процесів у  системі та для моделювання процесів, у  яких важливими є  послідовність виконання дій і  взаємозалежність між ними. Стандарт IDEF0 було розроблено в  1981 році під час виконання програми автоматизації промислових підприємств з  назвою ICAM (Integrated Computer Aided Manufacturing). У  назві IDEF ураховано назву програми: ICAM DEFinition. Моделювання за вказаними стандартами використовує графічні й  текстові засоби. З  графічних засобів  — діаграми, які й  описують різні погляди на архітектуру системи.
  • 250. 250 Розділ 4 та призначена для детального опису бізнес-процесу, модель якого являє собою послідовність подій і бізнес-функцій, спря- мованих на досягнення заданого результату. Можна також назвати міжнародний стандарт ISO — стан- дарт ISO серії 9000, розроблений на основі стандарту BS 7750 «Специфікації систем экологічного менеджменту» (Specification for Environmental Management Systems) Британською органі- зацією стандартизації. Розуміння важливості проектування архітектури організації сприяло появі стандарту ISO 15704. Системна архітектура сучасних організацій моделюється на основі дотримання низки принципів. • Серверне ПЗ функціонує в корпоративній обчислювальній мережі організації. • Клієнтське ПЗ розподілено по світу та функціонує в будь-якому мережному середовищі. • Використовує власні інструментальні за- соби розробки ІС. • Модель ІС має модульну структуру, що забезпечує поетапну розробку й упрова- дження. • Має єдиний підхід до розробки та стан- дартизації ПЗ. • Має єдиний стандартний користуваль- ницький інтерфейс. Запитання для перевірки знань Що називають  системною архитектурою? Назвіть основні складові системної архітек- тури. Навіщо створювати моделі системної архі- тектури? Поясніть призначення складових системної архітектури. Як ви розумієте поняття ІС організації? Для чого розробляють стандарти архітекту- ри ІС? 1 2 3 4 5 6 Завдання для самостійного виконання Зверніться до пошукової системи, у мережі Інтернет знайдіть і опишить нові стандарти й тренди в розробці ПК. Тест 12 Тестове завдання з  автоматичною перевіркою результату на  сайті interactive.ranok.com.ua
  • 251. 251 Комп’ютерний словник Адаптивність — особливий підхід до розробки сайта, який дозволяє вже існуючим веб-ре- сурсам підлаштовуватися під екрани різних пристроїв. Адміністрування сайта — комплекс заходів щодо підтримки чіткого функціонування сайта, його працездатності, швидкої роботи, зручності для користувача, регулярного роз- міщення матеріалів на його сторінках. Алгоритм послідовного пошуку елемента в ма- сиві — це алгоритм, що базується на прямому переборі елементів масиву. Алгоритм сортування масиву злиттям — це ал- горитм, у якому масив ділиться на дві части- ни і виконується сортування окремо кожної частини. Архітектура даних — методи взаємодії складо- вих системи і зберігання даних, безпосеред- ньо сховища даних і правила доступу до них. Архітектура програмного забезпечення — структура, яка складається з програмних компонентів, їхніх інтерфейсів та опису засо- бів об’єднання компонентів в єдину систему. База даних — це сховище даних різного типу про об’єкти та взаємозв’язки між ними. Валідація сайта — перевірка синтаксичних помилок, перевірка вкладеності тегів та інші критерії. Віджети — на JavaScript пишуться різні міні- програми, які використовуються в робочому просторі і є дуже зручними. Візуальне моделювання — метод розробки ПЗ, який для візуалізації, опису, проектування, документування архітектури ПЗ використовує графічні моделі. Віртуальний хостинг (virtualhosting або sharedhosting) — послуга, в рамках якої ко- ристувачеві надається частина місця на диску для розміщення веб-сайтів. Граф — це множина вершин і множина ліній, які з’єднують дві будь-які його вершини. Динамічне програмування — це метод розв’язу- вання задач шляхом їх розбиття на декілька однотипних підзадач, які пов’язані між собою. Діаграма класів (class diagram) — опис сукуп- ності статичних складових моделі. Ектор (від англ. аction — дія) — множина ролей, які виконуються в процесі взаємодії дійових осіб та прецедентів. Елемент (Element) — окремий елемент HTML, можна сказати, що це основні будівельні блоки. Атрибут (Attr) — представляє атрибут елемента. Жадібний алгоритм — це алгоритм, для яко- го застосовується метод розв’язування задач оптимізації, за допомогою якого на кожному етапі вибирається такий варіант, який є най- кращим на цей момент. Запит — це об’єкт бази даних, призначений для відбору з таблиці необхідних даних, вве- дення даних, їх опрацювання і подання ко- ристувачеві у зручній формі. Звіт — це об’єкт бази даних, призначений для відбору з БД необхідних даних і виведення їх на екран або принтер у зручному для корис- тувача вигляді. Каскадні таблиці стилів (англ. Cascading Style Sheets, або скорочено CSS) — спеціальна мова, що використовується для опису зовнішнього вигляду сторінок, написаних мовами розміт- ки даних. Кодування алгоритмів — це запис алгоритму мовою програмування. Кросбраузерність — правильна верстка сайта, за її допомогою сторінки сайта однаково ві- дображаються в різних браузерах. Реалізація відбувається за допомогою HTML і CSS, а та- кож різноманітних хаків, в окремих випад- ках — JavaScript. Методологія — принципи, сукупність ідей, методів і засобів, які визначають підхід до розробки програмного забезпечення. Мови візуального моделювання (або візуальні мови) — сукупність формалізованих наборів графічних символів і правил побудови з них візуальних моделей. Модель даних — це структура даних, яка ви- значає порядок зв’язків між даними.
  • 252. 252 Ком’ютерний словник Мультимедіа — комп’ютеризована техноло- гія, яка об’єднує роботу з усіма джерелами даних, засіб подання різних видів інформа- ції у цифровому вигляді. Пошукові системи — повністю автоматизо- вані механізми, які глибоко сканують усі задані сервери (відкриті для сканування) і збирають індекс-інформацію про те, що і де (на якій веб-сторінці) виявлено. Прецеденти (use-case), або варіанти викори- стання, — застосовуються для опису зов- нішніх вимог до нового ПЗ або вимог удо- сконалення та зміни вже існуючого, також правила взаємодії користувача з ПЗ. Продуктовий дизайн — весь процес створен- ня інтерфейсу, який починається з аналізу розв’язання проблеми представлення про- грамного забезпечення користувачеві або замовнику до розроблення плану тестуван- ня інтерфейсу на відповідність вимогам та оформлення декількох його концепцій. Просування сайта — комплекс заходів щодо збільшення відвідуваності веб-ресурсу ці- льовими відвідувачами Реляційна модель даних — це модель, у якій об’єкти і взаємозв’язки між даними пред- ставляються за допомогою відношень. Сервер додатків — сервер, на якому створе- ні додатки, які використовують вашу базу даних, веб-сервіс тощо. Серверні додатки — фрагменти коду, які ви- конуються на стороні сервера, де використо- вується Java 6. Серверні скрипти — спеціальні програмні коди, що застосовуються для реалізації ін- терактивних «властивостей» сайтів. Система керування вмістом (англ. Content Management System, або CMS) — програмне забезпечення для організації спільного про- цесу створення, редагування й управління контентом веб-сайтів. Система управляння базами даних — це про- грама, призначена для створення структури бази даних, уведення, оновлення, пошуку та опрацювання даних. Система числення — це сукупність правил запису чисел за допомогою символів і вико- нання операцій над ними. Системна архітектура — архітектура, яка визначає сукупність методологічних, тех- нологічних і технічних рішень для забезпе- чення інформаційної підтримки діяльності організації. Структура сайта — базис, фундамент будь- якого інтернет-ресурсу. Теги — команди мови HTML. HTML-теги — ключові слова або символи, які записують- ся в кутові дужки. Транзакція — це послідовність операцій над даними, яка сприймається СУБД як єдине ціле. Форма — це об’єкт бази даних, призначений для введення даних і відображення необхід- них даних. Хмарний хостинг (cloudhosting або cloud­ storage) — послуга з розміщення файлів користувача, за якої дані зберігаються на багатьох серверах, що розподілені в мережі. Хóстинг (англ. hosting) — послуга, що вклю- чає надання дискового простору, підключен- ня до мережі та інших ресурсів для розмі- щення фізичної інформації на сервері, що постійно перебуває в мережі (наприклад, Інтернет). Цикл графа — це шлях з одної вершини гра- фа в ту саму вершину. Чат-бот (англ. Chatbot) — комп’ютерна про- грама, розроблена на основі нейромереж та технологій машинного навчання, яка веде розмову за допомогою слухових або тексто- вих методів. Шлях графа — це послідовність його ребер, які зустрічаються при переміщенні з одної вершини в іншу. Юзабіліті (англ. Usability — зручність і про- стота використання) — підхід, покликаний зробити сайти простими у використанні для користувача, який не потребує додаткового навчання, тобто має бути орієнтований на нього інтерфейс.
  • 253. 253 Алфавітний покажчик А Адаптована верстка 178 Адміністрування сайта 151 Алгоритм — Дейстри 104 — Флойда — Уоршелла 108 — пошуку даних 81 — в глибину 100 — в ширину 102 — сортування даних 70, 78 Анімайційний ефект 190 Б База даних 4 В Валідація сайта 213 Веб-програмування 198 Візуальне програмування 231 Г Гіпертекст 159 Граф 94 Д Динамічне програмування 112 Діаграма — взаємодій 241 — діяльностей 241 — послідовностей 240 Е Ектор 234 Ергономіка 219 Ж Жадібні алгоритми 118 З Запит 11, 39–42 Звіт 11, 28 І Інструкція 49 Інтерфейс користувача 45, 243 К Каскадні таблиці стилів 164 Кодування алгоритмів 58 Кроусбраузерність 184 М Медіа-запит 174 Методологія 225 Модель даних 7 Мультимедіа 193 Н Найкоротший шлях у графі 104 О Обчислювальна геометрія 122 Оператор 31 П Пошукова система 222 Прецедент 233 Прототип 246 Р Редактор коду 154 Реляційна модель даних 8 С Сайт 139 Система керування вмістом 148 Система управління баз даних 5 Структура сайта 145 Т Таблиця11 Тег 159 Ф Форма 11 Функція 90 Х Хостинг сайта 202 Ц Цільова аудиторія 143 Цикл графу 96
  • 254. Зміст Передмова���������������������������������������������������������������������������������������������������������������������������������������������������������������������������3 РОЗДІЛ 1. БАЗИ ДАНИХ 1. Загальні відомості про бази даних 1.1. Поняття бази даних і системи управління базами даних ���������������������������������������������������������������������������� 4 1.2. Поняття моделі даних������������������������������������������������������������������������������������������������������������������������������������������������������ 7 1.3. Основні відомості про системe управління базами даних Access �������������������������������������������������������� 11 2. Таблиці 2.1. Створення й уведення структури таблиць����������������������������������������������������������������������������������������������������������14 2.2. Ключові поля, індекси, зв’язування таблиць������������������������������������������������������������������������������������������������������19 2.3. Введення, пошук і редагування даних у таблиці��������������������������������������������������������������������������������������������23 2.4. Сортування і фільтрування записів. Операції над таблицями������������������������������������������������������������������26 3. Запити 3.1. Загальні відомості про запити ���������������������������������������������������������������������������������������������������������������������������������� 29 3.2. Запити на вибірку даних����������������������������������������������������������������������������������������������������������������������������������������������32 3.3. Запити з функціями і з полями, що обчислюються����������������������������������������������������������������������������������������35 3.4. Запити з параметрами. Перехресні запити��������������������������������������������������������������������������������������������������������39 3.5. Запити на змінення даних��������������������������������������������������������������������������������������������������������������������������������������������42 4. Інтерфейс користувача. Основи мови SQL. Імпорт та експорт даних 4.1. Створення інтерфейсу користувача для введения даних у базу даних����������������������������������������������45 4.2. Основи мови запитів SQL��������������������������������������������������������������������������������������������������������������������������������������������49 4.3. Імпорт і експорт об’єктів баз даних������������������������������������������������������������������������������������������������������������������������51 РОЗДІЛ 2. АЛГОРИТМИ 5. Алгоритми і числа 5.1. Методи проектування і подання алгоритмів����������������������������������������������������������������������������������������������������55 5.2. Поняття про кодування і складність алгоритмів��������������������������������������������������������������������������������������������58 5.3. Основні поняття теорії чисел 6. Алгоритми сортування і пошуку даних 6.1. Алгоритми сортування даних 6.2. Алгоритми пошуку даних��������������������������������������������������������������������������������������������������������������������������������������������81 7. Обробка рядків 7.1. Основні відомості про рядки і операції над ними �������������������������������������������������������������������������������������� 88 7.2. Функції і методи опрацювання рядків ���������������������������������������������������������������������������������������������������������������� 90 7.3. Приклади програм обробки рядків����������������������������������������������������������������������������������������������������������������������92 8. Графи 8.1. Основні поняття і терміни теорії графів������������������������������������������������������������������������������������������������������������94 8.2. Способи подання графів у комп’ютері ���������������������������������������������������������������������������������������������������������������� 98 8.3. Пошук у глибину і ширину��������������������������������������������������������������������������������������������������������������������������������������100 8.4. Визначення найкоротшого шляху у графі��������������������������������������������������������������������������������������������������������104 9. Динамічне програмування і жадібні алгоритми 9.1. Динамічне програмування����������������������������������������������������������������������������������������������������������������������������������������112 9.2. Жадібні алгоритми��������������������������������������������������������������������������������������������������������������������������������������������������������118 10. Основи обчислювальної геометрії 10.1. Базові поняття����������������������������������������������������������������������������������������������������������������������������������������������������������������122 10.2. Операції над векторами��������������������������������������������������������������������������������������������������������������������������������������������124 10.3. Обчислення площі багатокутника������������������������������������������������������������������������������������������������������������������������127 10.4. Побудова опуклої оболонки������������������������������������������������������������������������������������������������������������������������������������131
  • 255. 255 РОЗДІЛ 3. ВЕБ-ТЕХНОЛОГІЇ 11.1. Основні тренди у веб-  дизайні �������������������������������������������������������������������������������������������������������������������������� 135 11.2. Види сайтів та цільова аудиторія ���������������������������������������������������������������������������������������������������������������������� 138 11.3. Інформаційна структура сайта������������������������������������������������������������������������������������������������������������������������������145 11.4. Системи керування вмістом �������������������������������������������������������������������������������������������������������������������������������� 148 11.5. Адміністрування сайта����������������������������������������������������������������������������������������������������������������������������������������������151 11.6. Інструменти веб-розробника��������������������������������������������������������������������������������������������������������������������������������154 11.7. Мова гіпертекстової розмітки ���������������������������������������������������������������������������������������������������������������������������� 159 11.8. Каскадні таблиці стилів ������������������������������������������������������������������������������������������������������������������������������������������ 164 11.9. Проектування та верстка веб-сторінок �������������������������������������������������������������������������������������������������������� 168 11.10. Адаптивна верстка ���������������������������������������������������������������������������������������������������������������������������������������������������� 176 11.11. Кросбраузерність ������������������������������������������������������������������������������������������������������������������������������������������������������ 182 11.12. Графіка для веб-середовища ������������������������������������������������������������������������������������������������������������������������������ 186 11.13. Анімаційні ефекти ������������������������������������������������������������������������������������������������������������������������������������������������������ 190 11.14. Мультимедіа на веб-сторінках������������������������������������������������������������������������������������������������������������������������������193 11.15. Об’єктна модель документа �������������������������������������������������������������������������������������������������������������������������������� 196 11.16. Веб-програмування та інтерактивні сторінки�������������������������������������������������������������������������������������������� 198 11.17. Хостинг сайта �������������������������������������������������������������������������������������������������������������������������������������������������������������� 202 11.18. Веб-сервер та база даних ����������������������������������������������������������������������������������������������������������������������������������� 206 11.19. Взаємодія «клієнт-сервер» ������������������������������������������������������������������������������������������������������������������������������������ 210 11.20. Валідація сайта та збереження даних форм ������������������������������������������������������������������������������������������������ 213 11.21. Прикладний програмний інтерфейс������������������������������������������������������������������������������������������������������������������216 11.22. Правила ергономічного розміщення відомостей на веб-сторінці�������������������������������������������������� 219 11.23. Пошукова оптимізація та просування веб-сайтів��������������������������������������������������������������������������������������221 РОЗДІЛ 4. ПАРАДИГМИ ТА ТЕХНОЛОГІЇ ПРОГРАМУВАННЯ 12.1. Уніфікований процес розробки програмного забезпечення ����������������������������������������������������������� 225 12.2. Інструменти для проектної роботи, системи комунікації та контролю версій ����������������������� 228 12.3. Мова візуального моделювання архітектури програмного забезпечення������������������������������������231 12.4. Діаграми UML. Діаграми прецедентів �������������������������������������������������������������������������������������������������������������� 233 12.5. Моделювання даних і архітектури програмного забезпечення ������������������������������������������������������� 236 12.6. Діаграми діяльностей та послідовностей ����������������������������������������������������������������������������������������������������� 240 12.7. Проектування інтерфейсу користувача ���������������������������������������������������������������������������������������������������������� 243 12.8. Тестування та оцінювання програмного забезпечення������������������������������������������������������������������������� 246 12.9. Системна архітектура. Апаратні та програмні рішення��������������������������������������������������������������������������249 Комп’ютерний словник������������������������������������������������������������������������������������������������������������������������������������������������������������251 Алфавітний покажчик��������������������������������������������������������������������������������������������������������������������������������������������������������������253
  • 256. Навчальне видання Руденко Віктор Д митрович РЕЧИЧ Н аталія Василівна ПОТІЄНКО Валентина О лександрівна «Інформатика (профільний рівень)» підручник для 11 класу закладів загальної середньої освіти Р екомендовано М іністерством освіти і науки України Видано за рахунок державних коштів. Продаж заборонено Редактор Л. А. К аюда. Художнє оформлення В. І. Труфена. Технічний редактор А. В. Пліско. Комп’ютерна верстка І. І. Пікальової. Коректор Н . В. К расна. Окремі зображення, що використані в оформленні підручника, розміщені в мережі Інтернет для вільного використання Підписано до друку 31.05.2019. Формат 84×108/16. Папір офсетний. Гарнітура Шкільна. Друк офсетний. Ум. друк. арк. 26,88. Обл.-вид. арк. 35,10. Тираж 78 584 прим. (1-й запуск 1–30 000). Зам. № 3206-2019/1. ТОВ Видавництво «Ранок», вул. Кібальчича, 27, к. 135, Харків, 61071. Свідоцтво суб’єкта видавничої справи ДК № 5215 від 22.09.2016. Адреса редакції: вул. Космічна, 21а, Харків, 61145. E-mail: office@ranok.com.ua. Тел. (057) 719-48-65, тел./факс (057) 719-58-67. Підручник надруковано на папері українського виробництва Надруковано у друкарні ТОВ «ТРІАДА-ПАК», пров. Сімферопольський, 6, Харків, 61052 . Свідоцтво суб’єкта видавничої справи ДК № 5340 від 15.05.2017. Тел. +38(057) 712-20-00. Е-mail: sale@triada.kharkiv.ua Відомості про користування підручником № з/п Прізвище та ім’я учня / учениці Навчаль- ний рік Стан підручника на початку року у кінці року 1 2 3 4 5