Professional Documents
Culture Documents
Іnformatyka (profilnyi riven) - pidruchnyk PDF
Іnformatyka (profilnyi riven) - pidruchnyk PDF
Міністерство освіти і науки України http://mon.gov.ua/ та Інститут модернізації змісту освіти https://imzo.gov.ua
Віктор Руденко,
Наталія Речич, Валентина Потієнко
Iнформатика
профільний рівень
рекомендовано
міністерством освіти і науки україни
харків
видавництво «ранок»
2019
Руденко В. Д.
Р83 Інформатика (профільний рівень) : підруч. для 11 кл. закл. загал. серед. освіти /
В. Д. Руденко, Н. В. Речич, В. О. Потієнко. — Харків : Вид-во «Ранок», 2019. — 256 c. : іл.
ISBN 978-617-09-5237-0
УДК 004:37.016 (075.3)
Інтернет-підтримка
Електронні матеріали
до підручника розміщено на сайті
interactive.ranok.com.ua
— питання на повторення
— означення, висновок
— зверніть увагу
— цікаво знати
Бази даних
Документальні Фактографічні
Зберігають звичайні документи Зберігають дані про об’єкти предметної галузі у вигляді фактів
(закони, інструкції до ліків, юридич- за чітко встановленою формою. Наприклад, основні дані про дві
ні документи, статті, рецепти області України можуть зберігатися за такою формою:
тощо). Найчастіше з таких БД мож
на отримати перелік документів Площа,
Область Центр Населення Районів
або тексти документів, у яких слід км2
відшукати відповідь на поставлене Полтавська Полтава 28 748 1 466 768 25
запитання. Пошук може здійснюва
Хмельни
тися за назвою, ключовими слова Хмельницька 20 600 1 303 776 13
цький
ми або фрагментом тексту
повнофункціональні
Оскільки до БД може звертатися велика кількість користу-
вачів, то важливою функцією СУБД є забезпечення цілісності
серверні
й безпечності даних. Окрім функцій, безпосередньо пов’яза-
них зі створенням і підтримкою БД, окремі СУБД виконують
клієнтські
також функцію підтримки спеціалізованих мов програмуван-
ня, що мають загальну назву «мови баз даних». Наприклад,
СУБД Access 2016 підтримує мову запитів SQL. Отже, для ство- Модель даних
рення якісних БД і кваліфікованої роботи з ними необхідно
добре опанувати СУБД. реляційні
СУБД класифікують за багатьма ознаками. До найголовні-
ших можна віднести призначення, модель даних, спосіб досту- мережеві
пу. Спрощену схему класифікації СУБД подано на рис. 1.2.
Нині фактичним стандартом мови БД є мова SQL. Однак ієрархічні
у деяких випадках доводиться користуватися й іншими мо-
вами програмування, наприклад мовою VBA. Розробники БД Спосіб доступу
засобами СУБД та іншими мовами програмування можуть
розробляти прикладні програми, за допомогою яких користу-
персональні
вач натисканням однієї кнопки може отримати з БД необхід-
ні дані або опрацювати їх за певним алгоритмом. Наприклад,
обчислити суму реалізованих у супермаркеті певних товарів багатокористувацькі
за добу, нарахувати заробітну платню працівникам фірми або
отримати інформацію про наявність вільних місць у готелях Рис. 1.2. Класифікація систем
міста Відня, що не дорожчі ніж 200 євро за добу. управління базами даних
Модель даних
Ієрархічна Мережева
Один-до-одного Багато-до-одного
Будьякому запису першої таблиці відповідає Будьякому запису першої таблиці відпові
тільки один запис другої таблиці, і навпаки. дає тільки один запис другої таблиці, але
будьякому запису другої таблиці відповідає
Одним автомобілем може керувати лише кілька записів першої таблиці.
один водій, і керувати цим автомобілем
може тільки один водій Водій працює тільки на одному
тролейбусі, але цим тролейбусом можуть
Види зв’язку
керувати кілька водіїв
між двома
Один-до-багатьох таблицями
Багато-до-багатьох
Будьякому запису першої таблиці відпо
відає кілька записів другої таблиці, але Будьякому запису першої таблиці
будьякому запису другої таблиці відповідає відповідає кілька записів другої таблиці,
тільки один запис першої таблиці. і будьякому запису другої таблиці
відповідає кілька записів першої таблиці.
Учень може мати з предмета «Інформатика»
багато оцінок, і кожна з цих оцінок належить Учень Рябко навчається у кількох вчителів,
тільки одному учневі і кожний учитель працює з кількома учнями
Таблиці Форми
Надання користувачеві
Збереження даних зручних засобів для уве
дення даних до таблиці
Основні об’єкти
СУБД Звіти
Запити Access 2016 Виведення на екран
Пошук необхідних або папір даних у зруч
даних у таблицях ному для користувача
та їх опрацювання вигляді
Крок 1
У рядок Ім’я файлу ввести ім’я файла майбутньої БД, наприклад atb, натис
Крок 2 нути кнопку Знайти розташування для бази даних, що розташована право
руч від цього рядка.
У вікні Створення бази даних, що відкриється, вибрати місце збереження
Крок 3 файла БД, наприклад диск F:, і натиснути кнопку ОК, а потім — кнопку
Створити.
Приклад 3.
1. Запустимо систему Access 2016 і відкри- 3. На стрічці натиснемо кнопку Конструктор
ємо вже створену БД з іменем atb. Для таблиць. У результаті до БД додасться
цього в стартовому вікні системи в об- порожня таблиця (рис. 2.3).
ласті Останні натиснемо кнопку миші на Зверніть увагу на те, що вміст стрічки
імені atb. змінився, і тепер на екрані відкрито вкладку
2. У вікні, що відкриється, активуємо вклад- Конструктор (рис. 2.4).
ку Створення. Відкриється вікно зі стріч- 4. Введемо ім’я поля в порожню таблицю
кою (рис. 2.2). (див. рис. 2.3) стандартним способом.
5. Введемо типи полів. Їх краще не вводити Описувати поля не обов’язково. Опис потрі-
з клавіатури, а вибрати зі списку типів бен для уточнення призначення поля та його
(див. рис. 2.1). Щоб відкрити цей список, допустимих значень.
необхідно у певній клітинці поля Тип да 6. Уведемо у відкриту на екрані порожню
них клацнути кнопку Прапорець, вибрати таблицю (див. рис. 2.3) дані з табл. 2.3
потрібний тип даних і встановити його Структура таблиці МАГАЗИНИ. Вміст
властивість. Перелік властивостей наве- таблиці набуде вигляду, як наведено на
дено нижче від імен полів (рис. 2.5). рис. 2.6.
Рис. 2.6. Структура таблиці в режимі конструктора Рис. 2.7. Віконце для збереження таблиці
8. Клацнувши кнопку Так, ми зумовимо ство- 9. Закриємо таблицю МАГАЗИНИ, для чо-
рення первинного ключа типу Лічильник. го відкриємо її контекстне меню і вико-
Але на цьому кроці встановлювати пер- наємо команду Закрити.
винний ключ не обов’язково, тому клац- 10. Аналогічно введемо і збережемо структу-
немо кнопку Ні. Таблицю буде збережено, ру таблиці КАДРИ. Після цього закриє-
а її ім’я з’явиться в області переходів. мо таблицю.
1 Опишіть способи створення таблиць. 5 Чому для створення таблиці найчастіше ко
2 Чому таблиці бажано спочатку створювати ристуються конструктором таблиць?
на папері? 6 Назвіть основні типи даних таблиць Access.
3 Які дії слід виконати для збереження струк 7 Поясніть порядок уведення структури таб
тури таблиці? лиць Access.
4 Що розуміють під терміном «структура таб 8 Поясніть порядок уведення типу даних
лиці»? поля та його властивостей.
1 Запустіть СУБД Access 2016 і cтворіть БД 2 Розробіть на папері структуру табл. 2.5
skola з таблицями КЛАСИ (табл. 2.5) й УЧНІ КЛАСИ і табл. 2.6 УЧНІ. Типи даних полів
(табл. 2.6). і їхні властивості виберіть самостійно.
Таблиця 2.5. КЛАСИ 3 Уведіть і збережіть структуру табл. 2.5
КЛАСИ і табл. 2.6 УЧНІ.
Класний Займаються
Клас Учнів
керівник спортом Зі створеними БД ви працюватимете про
9 27 Зотов А. М. 5 тягом періоду їх вивчення, тому працюй
10 24 Дерев’янко Н. С. 11 те акуратно, не забувайте зберігати дані,
11 25 Терещенко Б. В. 14 не порушуйте структуру таблиць.
Дата Улюблений
Прізвище Адреса Зріст Інформатика Історія Клас
народження предмет
Ларін Л. К. Лугова, 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. Індексна таблиця для поля (Борзов А. С.), цифра 1 — що другим за ал-
Директор таблиці МАГАЗИНИ матиме такі фавітом є перше прізвище (Коцюба П. М.),
значення: а цифра 3 — що третім за алфавітом є третє
2 прізвище (Середа К. М.).
1 Індексних таблиць для певної таблиці БД
3 може бути кілька, наприклад за кількістю
працівників, за номерами магазинів тощо.
Цифра 2 в першому рядку означає, що пер-
шим за алфавітом у таблиці є друге прізвище
1 Створіть просту індексну таблицю для поля 3 Виконайте зв’язування таблиці КЛАСИ
Учнів таблиці КЛАСИ й індексну таблицю і таблиці УЧНІ. Доведіть, що зв’язок дійсно
для поля Адреса таблиці УЧНІ. встановлений. Вилучіть зв’язок між табли
2 Створіть у таблиці КЛАСИ БД skola первин цями й установіть його ще раз.
ний ключ і збережіть таблицю. Переконай
теся, що ключ встановлено правильно.
Приклад 1.
1. Відкриємо таблицю МАГАЗИНИ в ре- даних, які збігаються з оголошеним ти-
жимі таблиці. Для цього двічі клацнемо пом поля.
кнопкою миші ім’я в області Усі об’єкти. 3. У такому самому порядку введемо дані
Можна також скористатися контекстним всіх інших записів таблиці й збереже-
меню цієї таблиці. мо таблицю. Після введення останнього
2. Уведемо дані першого запису таблиці запису вміст таблиці набуде вигляду, як
МАГАЗИНИ, який позначено зірочкою. наведено на рис. 2.14.
Щойно дані будуть уведені, курсор авто- Зверніть увагу на те, що записи виведені
матично переміститься на наступний за- в іншому порядку, ніж уводилися (записи
пис, що означає готовність до уведення вводили в порядку, який подано у табл. 2.1).
даних у другий рядок. Слід пам’ятати, На рис. 2.14 записи впорядковано в поряд-
що вводити в поля можна лише ті типи ку значень ключового поля.
1 Уведіть у таблиці КЛАСИ й УЧНІ БД skola 4 Знайдіть у таблиці УЧНІ запис за прізвищем
наведені в них дані. Пека П. О.
2 Виконайте навігацію по таблиці УЧНІ за до 5 Використайте метасимволи для пошуку запи
помогою кнопок навігації. сів у таблиці УЧНІ за значенням поля Адреса.
3 Додайте в таблицю УЧНІ новий запис, а по 6 Вилучте з таблиці УЧНІ будьякий запис,
тім вилучте його. Збережіть таблицю. а потім відновіть його. Збережіть таблицю.
Приклад 3.
1. У розділі Сортування й фільтр відкриє- вводитиметься критерій. Для цього до-
мо меню кнопки Параметри розширеного статньо двічі клацнути його в таблиці.
фільтра й виконаємо команду Розширений Перенесемо, наприклад, ім’я поля Стаж.
фільтр/сортування. Відкриється перелік 3. У таблиці конструктора в запис Критерії
полів таблиці, а в нижній частині вік- цього поля введемо умову, наприклад,
на — таблиця конструктора. > 16. Далі відкриємо меню кнопки Пара
2. У таблицю конструктора, наприклад, із метри розширеного фільтра, у якому ви-
відфільтрованої таблиці КАДРИ (див. конаємо команду Застосувати фільтр/сорту
рис. 2.21) перенесемо ім’я поля, у яке вання. Отримаємо записи (рис. 2.22).
1 Упорядкуйте записи таблиці УЧНІ БД skola 4 Використайте фільтр за формою для філь
за значенням поля Зріст. трування записів таблиці УЧНІ за одним зі
2 Упорядкуйте записи таблиці УЧНІ за зна значень поля Дата народження.
ченнями полів Прізвище й Історія. 5 Надайте таблиці КЛАСИ нове ім’я. Відновіть
3 Виконайте фільтрування записів таблиці ім’я КЛАСИ.
УЧНІ за одним зі значень поля Улюблений 6 Виконайте копіювання таблиці УЧНІ й створіть
предмет. на її основі нову таблицю з іменем ПЕРША.
ЗАПИТИ
Перехресні запити
Приклад 2. Складний запит для таб- Таблиця 3.1. Результат виконання складного запиту
лиць МАГАЗИНИ і КАДРИ, за яким Мага-
формуються дані, наведено в табл. 3.1. Адреса Прізвище Посада
зин
Тут із таблиць МАГАЗИНИ і КАДРИ
21 вул. Паркова, 33 Семко М. М. диспетчер
відібрано прізвища осіб, які працюють
31 вул. Печерська, 21 Таран В. Д. диспетчер
диспетчерами в магазинах 21 і 31.
31 вул. Печерська, 21 Горошко Ф. Р. диспетчер
Приклад 1. Створити простий запит з іменем Запис Сортування використовується для сор-
Запит_1, за допомогою якого з таблиці КАДРИ тування даних у таблиці, яку буде отримано
виводяться дані про співробітників зі стажем після виконання запиту. Сортувати дані мож-
понад 16 років. Результуючий набір записів на за значенням кількох полів. Прапорець,
повинен містити такі поля: Справа, Прізвище, установлений на перетині запису Відображен
Рік народження, Стаж, Номер магазину. ня й певного поля, означає, що це поле буде
1. Для створення запиту відкриємо БД atb виведено на екран, інакше воно виводитися
і виконаємо команду Створення → Макет не буде. Запис Критерії призначено для запису
запиту. Відкриються вікно конструкто- виразу, на основі якого відбираються записи.
ра запитів і вікно Відображення таблиці, Запис Або слугує для визначення додаткової
у якому виберемо таблицю КАДРИ. Для умови відбору записів.
цього встановимо курсор на імені цієї 3. У запис Критерії поля Стаж уведемо вираз
таблиці й клацнемо кнопку Додати. Піс- >16. Збережемо запит, для чого на пане-
ля цього вікно Відображення таблиці мож- лі швидкого доступу натиснемо кнопку
на буде закрити. Зберегти й у вікні, що відкриється, уве-
2. У записі Поле таблиці конструктора за- демо ім’я Запит_1 і натиснемо кнопку ОК.
питів послідовно розмістимо зазначені У результаті ім’я цього запиту з’явиться
імена полів (Справа, Прізвище, Рік на в області переходів.
родження, Стаж, Номер магазину) таблиці 4. Виконаємо запит. Для цього на стрічці
КАДРИ (рис. 3.2). Для цього достатньо в групі Результати натиснемо кнопку За
двічі клацнути кнопкою миші на імені пуск!. Отримаємо результат, як подано на
певного поля цієї таблиці. рис. 3.3.
Рис. 3.3. Дані про працівників магазинів зі стажем роботи понад 16 років
1 Які запити називають запитами на вибірку 5 Як можна змінити порядок розміщення по
даних? лів у запиті?
2 Як зберігається запит? 6 Поясніть різницю між створенням запиту
3 Опишіть режими, у яких можна відкрити для однієї таблиці та кількох таблиць.
запит. 7 Як створити запит на вибірку даних?
4 Для чого призначено запис Критерії табли 8 Які дії можна виконувати під час редагуван
ці конструктора запиту? ня запиту?
1 Створіть Запит41 на основі таблиці УЧНІ, 4 Створіть Запит44 на основі таблиць КЛАСИ
за допомогою якого вибираються прізвища й УЧНІ, за допомогою якого вибираються прі
учнів, улюбленим предметом яких є історія. звища класних керівників учнів, які з інформа
Записи повинні мати поля Прізвище, Клас, тики та історії мають бали, більші від 10.
Улюблений предмет.
5 Створіть Запит45 на основі таблиці УЧНІ,
2 Створіть Запит42 на основі таблиці УЧНІ, за допомогою якого вибираються прізвища
за допомогою якого вибираються прізвища учнів, які народилися у 2002 році.
учнів, зріст яких більший від 170.
6 Створіть Запит46 на основі таблиць КЛА
3 Створіть Запит43 на основі таблиці УЧНІ, СИ й УЧНІ, за допомогою якого для класів,
за допомогою якого вибираються прізвища у яких учнів більше ніж 24, вибираються
учнів, улюбленими предметами яких є ма прізвища учнів, які з історії мають більше
тематика та інформатика. від 9 балів.
Приклад 2.
1. Створимо звичайний запит на вибірку й виконаємо команду Підсумки ( ∑ ).
в режимі конструктора, наприклад за- У конструкторі запиту з’явиться рядок
пит, за допомогою якого з таблиці КА- Підсумок, а в кожному полі цього запису
ДРИ вибираються прізвища працівників буде зазначено Групування за.
з окладом понад 4 000 грн і підрахову- 4. У записі Підсумок клацнемо те поле,
ється їх кількість. Результуючий перелік за яким потрібно виконати підраху-
записів має містити поля Справа, Прізви нок кількості записів (наприклад, поле
ще, Стаж, Оклад. Справа).
2. Уведемо в рядок Критерії поля Оклад ви-
раз >4000. У списку, що відкриється, виберемо
функцію Кількість (рис. 3.8).
3. На вкладці Конструктор відкриємо меню
кнопки Відображення або приховання 5. Збережемо запит та виконаємо.
Приклад 3.
Припустимо, що за кожен рік стажу понад 5 років пра-
Френсіс Елізабет Аллен — аме
цівники отримують надбавку у розмірі 1 % від посадового
риканська вчена, піонерка в га
окладу. Тоді надбавку можна обчислити за формулою:
лузі оптимізації компіляторів,
Доплата = Оклад*(Стаж–5)/100. стала перша жінка, яка отрима
ла премію Тюрінга.
Приклад 4.
1. Відкриємо БД atb, активуємо вкладку щоб прізвища виводилися в алфавітному
Створення й клацнемо кнопку Макет порядку. Створений запит зображено на
запиту. Із таблиці КАДРИ перенесемо рис. 3.9.
в конструктор запиту поля Прізвище, 3. Збережемо запит з іменем Запит_5 (зга-
Стаж, Оклад, а в наступне поле введе- даємо, що для цього потрібно натиснути
мо вираз: Доплата:[Оклад]*([Стаж]–5)/100. кнопку Зберегти, у вікні, що відкриєть-
Зверніть увагу на те, що імена полів, ся, ввести ім’я запиту й клацнути кноп-
які входять у вираз, беруться у ква- ку ОК). У результаті виконання запиту
дратні дужки. має з’явитися результат, як наведено на
2. Установимо в записі Сортування поля рис. 3.10.
Прізвище значення За зростанням для того, 4. Закриємо Запит_5.
1 Назвіть основні вбудовані функції для опра 5 Опишіть порядок створення запитів із функ
цювання даних у запиті. ціями.
2 Які запити називають запитами з полями, 6 Як додати до запиту підсумковий запис
що обчислюються? у режимі таблиці?
3 Яке призначення має функція Caunt (Кіль 7 Поясніть порядок створення підсумкового
кість)? запиту.
4 Назвіть способи використання вбудованих 8 Поясніть порядок створення запиту з поля
функцій у запитах. ми, що обчислюються.
1 Створіть Запит51 на основі таблиці УЧНІ, за 4 Створіть Запит54 на основі таблиць КЛАСИ
допомогою якого підраховується кількість й УЧНІ, за допомогою якого обчислюється
учнів, улюбленими предметами яких є гео спільний середній бал успішності з інфор
графія та фізика. матики та історії учнів класу, яким керує
Записи повинні містити поля Прізвище, Дерев’янко Н. С.
Клас, Улюблений предмет.
5 Створіть Запит55 на основі таблиці УЧНІ,
2 Створіть Запит52 на основі таблиці УЧНІ, за допомогою якого обчислюється середній
за допомогою якого обчислюється серед зріст учнів кожного класу.
ній бал успішності учнів 11 класів окремо
6 Створіть Запит56 на основі таблиць КЛА-
з інформатики й окремо з історії.
СИ й УЧНІ, за допомогою якого для учнів
3 Створіть Запит53 на основі таблиці УЧНІ, 10 класу, улюбленим предметом яких є ін
за допомогою якого обчислюється кількість форматика, обчислюється різниця середньо
учнів, які мешкають на вул. Лугова. го бала успішності з інформатики та історії.
Приклад 1.
Розробити запит з іменем Запит_6, за допо- 3. В умові завдання визначено, що за допо-
могою якого з БД atb вибиратимуться прізвища могою запиту мають відбиратися записи
працівників за посадами диспетчер і експерт із тільки за посадами диспетчер і експерт,
магазинів, номери яких уводяться при вико- тобто ця умова є незмінною. Тому в клі-
нанні запиту. Результуючі записи мають місти- тинку на перетині запису Критерії і поля
ти поля Номер магазину й Адреса таблиці МАГА- Посада уводимо вираз "диспетчер" Or "екс
ЗИНИ і поля Прізвище й Посада таблиці КАДРИ. перт".
Порядок створення запиту може бути таким. Щоразу після запуску при виконанні за-
1. Відкриємо БД atb і виконаємо коман- питу користувач може вводити будь-який
ду Створення → Макет запиту. Виділимо номер магазину. Тому на перетині запи-
обидві таблиці, клацнемо кнопку Додати су Критерії та поля Номер магазину можна
й закриємо вікно Відображення таблиці. увести, наприклад, текст [У якому магазині?].
2. Із таблиці МАГАЗИНИ перенесемо в таб- Головне, щоб текст містився у квадратних
лицю конструктора поля Номер магазину дужках.
й Адреса, а з таблиці КАДРИ — поля У результаті отримаємо запит у режимі
Прізвище й Посада. конструктора, як наведено на рис. 3.11.
Приклад 2.
1. Відкриємо Форму_6 у режимі форми.
Перейдемо на порожній запис, для чого
клацнемо, наприклад, кнопку Створити
запис, розташовану на панелі навігації.
2. Уведемо в порожній рядок форми дані,
наприклад такі: Номер магазину — 6;
Адреса — вул. Річкова, 24; Директор —
Середа К. М.; Телефон — 2346792
(рис. 4.7).
3. Збережемо й закриємо форму. Таблиця
МАГАЗИНИ, відкрита в режимі подан-
ня таблиці, набуде вмісту, як наведено
на рис. 4.8.
Рис. 4.7. Запис, доданий у таблицю
У поле Ім’я файла цього вікна можна та знайдемо ім’я atb, увімкнемо перемикач
ввести повне ім’я файла БД-джерела. Мож- Імпортувати таблиці, запити… і клацнемо
на також скористатися кнопкою Огляд… кнопку ОК. Відкриється вікно Імпортувати
і вибрати файл atb. Клацнемо кнопку Огляд об’єкти (рис. 4.13).
У цьому вікні містяться вкладки об’єктів 4. Можна налаштувати деякі параметри ім-
БД-джерела atb. На вкладці Таблиці виберемо портування вибраних об’єктів. Для цього
таблицю КАДРИ, для чого встановимо курсор клацнемо кнопку Параметри>>. У резуль-
на її імені й клацнемо праву кнопку миші. таті у вікні відобразиться область нала-
Потім на вкладці Запити виберемо Запит_1. штування параметрів імпорту (рис. 4.14).
Для виконання завдання створіть на жор- persha форму з іменем Форма_1 із БД atb.
сткому диску БД persha. Імпортуйте в БД Перевірте правильність імпортування.
Тестові завдання
з автоматичною перевіркою
результату на сайті
interactive.ranok.com.ua
Тест 1 Тест 2 Тест 3 Тест 4
Право для безоплатного розміщення підручника в мережі Інтернет має
Міністерство освіти і науки України http://mon.gov.ua/ та Інститут модернізації змісту освіти https://imzo.gov.ua
5.1. Методи проектування... 55
Розділ 2. АЛГОРИТМИ
5. Алгоритми і числа
5.1. Методи проектування і подання алгоритмів
Пригадайте, у якій формі ви подавали алгоритми, яких
правил дотримувались у процесі розроблення програм.
Метод Опис
Його сутність полягає в тому, що задача поступово (за кроками) ділиться на ряд
Спадний
допоміжних підзадач (підалгоритмів), кожна з яких може бути реалізована сукупні-
(згори вниз)
стю простих і елементарних операцій (процедур).
Вже наявні й заздалегідь розроблені допоміжні алгоритми розв’язування окремих
Висхідний
підзадач поступово об’єднуються в загальну структуру доти, доки не буде досягну-
(знизу догори)
то розв’язання поставленого завдання.
Модуль — це окрема самостійна частина алгоритму (деякий блок), що має свою
назву, функціональну цілісність і завершеність. Посилання на модуль здійснюється
за допомогою його імені. Виклик і актуалізація модуля можливі лише через його
Модульний заголовок.
Перевага модульного методу полягає в тому, що різні модулі одночасно можуть
розробляти різні фахівці. Кожний модуль може тестуватися і налагоджуватися ок-
ремо від інших.
Спосіб Опис
Передбачає опис алгоритму природною мовою, широко застосовується у повсяк-
денному житті (наприклад, у вигляді інструкцій з експлуатації приладів, рецептів
виготовлення ліків тощо). Інструкція складається з указівок, форма запису яких
довільна.
Словесний
Головне, щоб указівки були точними й зрозумілими всім користувачам.
Словесний спосіб є досить простим і доступним, проте опис алгоритмів часто
є громіздким, а їхні вказівки можуть сприйматися різними виконавцями неодно-
значно.
Використовує природну мову, а також спеціальні символи, що застосовуються
в певній науковій галузі (наприклад, хімічні формули, математичні вирази та ін.).
Наприклад, широко застосовується оператор присвоювання (:=). У мові Python, що
застосовується в певній науковій галузі (наприклад, хімічні формули, математичні
вирази та ін.), цей оператор позначається символом «=» (дорівнює).
Наприклад, розв’яжемо квадратне рівняння ax2 + bx + c = 0.
1. Уведемо значення змінних a, b, c.
Словесно- 22
2. Обчислимо дискримінант dd::==bb −−44ac
ac.
формульний
3. Якщо d < 0, то виконаємо пункт 6, інакше — пункт 4.
−b − d −b + d
4. Знайдемо корені рівняння: x1 = ; x2 = .
2a 2a
5. Перейдемо до пункту 7.
6. Дискримінант від’ємний. Рівняння не має розв’язків.
7. Кінець.
Передбачає подання алгоритму у вигляді геометричних фігур (блоків), з’єднаних
стрілками (лініями зв’язку).
Графічний Подання алгоритмів за допомогою блоків називають блок-схемами, вони мають
високу наочність.
Початок Введення
Так Умова Ні
Дія (процес)
Кінець Виведення
а б в г
Рис. 5.2. Основні графічні позначення на блок-схемах:
термінатори (а); дані (б); процес (в); перевірка умови (г)
Поєднує в собі подання алгоритмів, засноване на словесному, словесно-формуль-
Комбінований
ному і графічному методах.
1 Який вигляд мають десяткові цифри у двій- 4 Як записуються десяткові числа у вісімко-
ковій системі числення? вій системі числення?
2 Як нумеруються розряди чисел? 5 Чому двійкова система є основною в техніці?
3 Як записуються шістнадцяткові символи 6 Доведіть, чому не може бути двійково-де-
у двійковій системі числення? сятковим число 10 1111 0111, 0111 1000.
1 Запишіть десяткове число 93,64 у вигляді 5 Чому число 1 011 101 101,001 001 01 не
многочлена. може бути двійково-десятковим значенням.
2 Запишіть двійкове число 110 111,011 у ви- 6 Замініть розгорнутий запис двійкового числа
гляді суми. 1 * 24 + 0 * 23 + 1 * 22 + 0 * 21 + 1 * 20 + 0 * 2 −1 + 1 * 2 −2
3 Запишіть десяткове
1 * 24 + 0число
* 23 + 1170,25 21 + 1 * 20 + 0 * 2 −1 + 1 * 2 −2 на скорочений.
* 22 + 0у *шістнад-
цятковій системі числення. 7 Запишіть двійково-десяткове число
4 Шістнадцяткове число A0E,B запишіть 1 011 000,001 001 01 у десятковій системі
у двійковій системі числення. числення, а потім у вигляді суми.
Право для безоплатного розміщення підручника в мережі Інтернет має
Міністерство освіти і науки України http://mon.gov.ua/ та Інститут модернізації змісту освіти https://imzo.gov.ua
63
` 5.3.2. Робота з великими числами
Приклад 3. Розглянемо подання двох Якщо числа цілого або дійсного типу до-
15-розрядних десяткових цілих чисел у мові сить великі, то результат виконання операції
Python і результат виконання над ними опе- над ними подається в експоненціальній формі:
рації множення:
Подання двох дійсних чисел і результат Проте навіть у тому випадку, якщо почат-
виконання над ними операції множення по- кові числа подано в експоненціальній формі,
яснюється таким прикладом: результат виконання операції над ними може
бути отриманий цілого або дійсного типу.
Така ситуація виникає тоді, коли початкові
числа мають невеликі значення.
Далі наведено такий варіант:
Якщо перевірити точність обчислення цих
чисел, то побачимо, що отриманий результат
відрізняється від абсолютно точного на одну
десятитисячну.
1 Які назви великих чисел вам відомі? 3 У яких випадках результат виконання мате-
2 Як записуються числа мовою Python в екс- матичних операцій подається в експоненці-
поненціальному вигляді? альному вигляді?
1 Число 4.375 помножте на 10 у степені 20. 4 Краща врожайність пшениці в Україні до-
Результат виведіть на екран. сягається при нормі висіву зерна 3–4 млн
2 Розробіть програму перетворення градусів насінин, або 120–200 кг, на гектар. При цьо-
му з кожного гектара збирають 3–3,5 тон-
Фаренгейта у градуси Цельсія за допомо-
ни зерна. Розробіть програму визначення
гою формули C = 5/9*(F–32).
мінімального і максимального посіву зерна
3 Перетворіть за допомогою функції float() в насінинах і кілограмах на площі 100 га,
рядок ‘234.25’ у число. Доведіть, що отри- а також мінімальний і максимальний вро-
маний результат є правильним. жай у насінинах і кілограмах.
Право для безоплатного розміщення підручника в мережі Інтернет має
Міністерство освіти і науки України http://mon.gov.ua/ та Інститут модернізації змісту освіти https://imzo.gov.ua
65
` 5.3.3. Факторизація чисел
Якщо залишок дорівнює нулю, то множником є цей дільник, а частка ділиться на зна-
Крок 2 чення цього самого елемента масиву. Цей процес продовжується доти, поки залишок
від ділення чергової частки на значення елемента масиву не буде дорівнювати нулю.
Якщо залишок не дорівнює нулю, вибирається черговий елемент масиву і далі
Крок 3 продовжуються аналогічні процеси доти, поки остання частка не буде дорівнювати
значенню елемента масиву.
Цикл
№ Алгоритм
1-й 2-й 3-й 4-й 5-й 6-й
Створити mas1 =
1
mas1 = [2, 3, 5, 7] [2, 3, 5, 7]
k1 — довжина
2 k1 := 4
масиву mas1
Створити порожній
3 mas2[]
масив mas2
4 Увести n n := 90
I := 0
5 I := 0
(лічильник циклів)
Якщо n = mas1[i], 90 = 2, 45 = 3, ні, 5 = 5, так,
6
то п. 7, інакше — п. 9 ні, п. 9 п. 9 п. 7
Додати елемент mas1[i]
7 mas2 [3] := 5
до масиву mas2
Перервати цикл
8 до п. 15
(до п. 15)
45%2 ==
Якщо n%mas1[i] == 0, 90%2 == 45%3 == 15%3 == 5%3 ==
0,
9 то п. 10, інакше — 0, 0, так, до 0, так, до 0, ні, до
ні, до п.
п. 13 так, п. 10 п. 10 п. 10 п. 13
13
Додати mas1[i] mas2[0]
10 mas2[1] := 3 mas2[2] := 3
до масиву mas2 := 2
11 n := n//mas1[i] n := 45 n := 15 n := 5
12 Перейти до п. 9 до п. 9 до п. 9 до п. 9
13 i := i+1 i := 1 i := 2
Якщо i <= k1, то п. 6, i <= 4, так, i <= 4, так
14
інакше — п. 15 до п. 6 до п. 6
Виведення масиву Виведення
15
mas2 2 3 3 5
Приклад 1.
Швейцарець Ніклаус
Вірт — жива легенда в світі
програмування. Це блискучий
інженер і глибокий дослідник,
Якщо для підстановки потрібні декілька аргументів, то
який у 1984 році був
удостоєний премії Тюрінга. значеннями є всі аргументи з рядками підстановки (звичай-
ними або іменованими) (приклад 2).
Приклад 2.
Приклад 4.
Цикл
Інструкції Пуск
1-й 2-й 3-й 4-й 5-й 6-й 7-й 8-й
x = 60,
def func1 (x, d = 2)
d=2
while x > 1 True True True True True True True False
q = 30, q = 15, q = 7, q = 5, q = 1, q = 1, q = 1,
q, r = divmod(x, d)
r=0 r=0 r=1 r=0 r=2 r=1 r=0
if r False False True False True True False
d += 1 d=3 d=4 d=5
Else
2 у кор- 2 у кор- 3 у кор- 5 у кор-
yield d
теж теж теж теж
x=q x = 30 x = 15 x=5 x=1
n = int(input(«увести»)) n = 60
print(‘ () = ()’.format(n’*’. Звернення 60 = 2 * 2 *
join(map(str, func1(n))))) до func1 *3*5
1 Проаналізуйте програму (рис. 5.5). Доведіть, 4 Внесіть у програму (рис. 5.6) такі зміни, щоб
для якого максимального числа вона гаран- прості множники виводилися не в рядок,
товано правильно реалізує факторизацію. а в один стовпець. Чи вдалося за рахунок
2 Виконайте кілька разів програму (рис. 5.5) цього спростити програму?
для різних натуральних чисел. Для яких 5 Розробіть таблицю виконання алгоритму
чисел програма надасть правильний ре- факторизації числа 40 на основі методу
зультат? Обґрунтуйте, від чого це залежить. повного перебору.
3 Який необхідно мати мінімальний за довжи- 6 Розробіть таблицю виконання програми,
ною масив простих чисел для факторизації зображеної на рис. 5.6, на прикладі факто-
числа 489? Обґрунтуйте свою відповідь. ризації числа 30.
Крок 1 8 4 9 7 2
Крок 2 8 4 2 7 9
Крок 3 7 4 2 8 9
Крок 4 2 4 7 8 9
Крок 13 Кінець.
Масив 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]. Щоразу, коли попередній елемент
Крок 1
більший від наступного, елементи міняються місцями. Зрозуміло, що після повного
завершення першого перегляду всього масиву на останній позиції перебуватиме
елемент із максимальним значенням.
Після цього елемент mas[n] із подальшого розгляду виключається, переглядається
Крок 2 масив mas[0], mas[1], …, mas[n – 1] і над його елементами виконуються аналогічні дії.
У результаті на позицію n – 1 буде переміщено другий за величиною елемент.
Процедура повторюється для масиву mas[0], mas[1], …, mas[n – 2], потім — для масиву
Крок 3
mas[0], mas[1], …, mas[n – 3] і т. д.
Крок 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
1 Як здійснюється обмін значеннями між дво- 4 Поясніть сутність алгоритму сортування ма-
ма змінними? сиву методом обміну.
2 Які існують найпростіші методи сортування 5 Наведіть приклад алгоритму сортування
масиву? масиву методом вибору.
3 Поясніть сутність алгоритму сортування ма- 6 Наведіть приклад алгоритму сортування
сиву методом вибору. масиву методом обміну.
3 5 6 8 9 12
Відомий фахівець у галузі Приклад. Нехай дано масив цілих чисел: 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 4 7
2 4 7 9 11 17 20 44 44 50
1 Для яких масивів можна виконувати сорту- 5 Поясніть сутність алгоритму сортування ма-
вання вставками? сиву вставленням.
2 Для яких масивів доцільно використовува- 6 Поясніть сутність алгоритму сортування ма-
ти сортування підрахунком? сиву злиттям.
3 Як можна поділити масив на дві приблизно 7 Поясніть сутність алгоритму сортування ма-
рівні частини? сиву підрахунком.
4 Наведіть приклад сортування масиву злит- 8 За якими характеристиками зазвичай аналі-
тям. зуються методи сортування?
Крок 3 Далі аналогічний процес може повторюватися над елементом a[2] і так далі до a[n].
Приклад 3. Нехай дано масив комп’ютер- визначення, чи є в цьому масиві термін, який
них термінів: алгоритмізація, біт, змінна, після запуску програми вводиться з клавіатури.
масив, миша, файл. Розробимо програму Далі наведено алгоритм розв’язування.
Приклад 5.
У багатьох джерелах як класичний при- 2. Далі ставляться інші так, щоб його не
клад алгоритму пошуку з поверненням опи- били вже поставлені ферзі.
сується задача про 8 ферзів, яку можна сфор- 3. Якщо на черговому кроці так поставити
мулювати так. фігуру не можна, повертаються на крок
Необхідно на шаховій дошці розмістити назад і намагаються поставити раніше
8 ферзів так, щоб жодний із них не був під встановленого ферзя на інше місце.
боєм іншого.
За допомогою методу з поверненням можна
1. Спочатку ставиться на дошку один
отримати всі перестановки і комбінації даної
ферзь.
множини.
1 Які існують найпростіші методи пошуку да- 5 Поясніть сутність алгоритму бінарного по-
них у масиві? шуку даних у масиві.
2 Поясніть сутність алгоритму пошуку макси- 6 Наведіть приклад послідовного пошуку да-
мального числа в масиві. них у масиві.
3 Поясніть сутність послідовного методу по- 7 Наведіть приклад бінарного пошуку даних
шуку даних у масиві. у масиві.
4 Сформулюйте алгоритм обчислення кілько- 8 Наведіть приклад тернарного пошуку да-
сті заданих чисел у масиві. них у масиві.
1 Дано масив рядків: ‘байт’, ‘принтер’, ‘проце- 4 Дано масив рядків: ‘блок’, ‘файл’, ‘біт’, ‘ко-
сор’, ‘монітор’. Розробіть програму визна- лонка’, ‘миша’. Розробіть програму пошуку
чення позиції слова, що уводиться з клаві- максимального і мінімального значень еле-
атури. ментів.
2 Дано масив цілих чисел: 13, 7, 6, 7, 9, 7, 6, 5. 5 Розробіть програму створення масиву, що
Розробіть програму обчислення кількості містить 10 випадкових чисел у діапазоні від
числа, значення якого вводиться з клавіа- 3 до 9 і визначення, чи є у ньому число 6.
тури. 6 Знайдіть в Інтернеті відомості про 5 найви-
3 Дано масив цілих чисел: 6, 8, 13, 17, 19, 30, щих вершин в Україні. Розробіть програму
13, 8. Розробіть програму визначення всіх визначення наявності у цьому переліку
позицій, на яких знаходиться число, зна- назви вершини, яка вводиться з клавіатури.
чення якого вводиться з клавіатури.
1 Який основний тип мають рядки? 4 Яке призначення мають символи \n?
2 Як можна звернутися до символу рядка? 5 Для чого в рядках використовують слеш
3 Наведіть приклад об’єднання двох рядків (\)?
в один. 6 Як у рядку можна виділити фрагмент?
1 Об’єднайте рядки "Створення анімації мето- 4 Об’єднайте рядки "Як у рядку можна"
дом" і "трансформації руху" в один рядок. і "виділити його фрагмент" в один рядок,
2 Визначте символ, розташований на 13-й по- а потім перетворіть його у рядок "у рядку
зиції рядка "Операція конкатенації". можна виділити його фрагмент".
3 У рядку "Змінити символ за індексом не- 5 Перетворіть рядок "Усі параметри тут
можливо" виділіть фрагмент із 9-ї до 26-ї є необов’язковими" у рядок "Параметри
позиції. є обов’язковими".
Функція Призначення
Визначення кількості символів у рядку:
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
Метод Опис
Перетворює рядкові елементи послідовності в один рядок. Він має таку структуру:
<відокремлювач>.join (послідовність):
join ()
>>>" ".join (("Рядкові", "елементи", "послідовності"))
‘Рядкові елементи послідовності’
Замінює у рядку всі малі букви великими:
upper () >>>print ("комп’ютер".upper ())
КОМП’ЮТЕР
Замінює у рядку великі букви малими:
lower () >>> print ("КОМП’ЮТЕР".lower ())
комп’ютер
Замінює першу букву рядка великою:
capitalize () >>> print ("комп’ютер".capitalize ())
Комп’ютер
Метод Опис
Здійснює пошук підрядка в рядку. Якщо підрядок знайдено, повертається номер позиції,
після якої починається підрядок. Інакше — повертається значення –1. Формат методу:
<рядок>.find (підрядок, [початок [, кінець]])
Якщо параметри початок і кінець не вказані, здійснюється пошук від самого початку рядка
find ()
до його кінця:
>>>sl = "пошук підрядка в рядку"
>>>sl.find ("шук"), sl.find ("підряд"), sl.find ("кут")
(2, 6, –1)
Відрізняється від методу find () лише тим, що у випадку, коли підрядок у рядку відсутній,
index ()
генерується виняток ValueError
Відрізняється від методу find () лише тим, що повертається номер позиції рядка, на якій
rfind ()
закінчується підрядок
Визначає кількість входжень підрядка в рядок:
>>>sl = "пошук підрядка в рядку"
count ()
>>>sl.count ("ряд"), sl.count ("шук"), sl.count ("мас")
(2, 1, 0)
Виконує заміну всіх входжень заданого підрядка в рядку на новий підрядок і повертає но-
вий рядок. Формат методу:
replace () <рядок>.replace (<підрядок заміни>, <новий підрядок>)
>>>print ("старий комп’ютер".replace ("старий", "новий"))
новий комп’ютер
Мова Python реалізує також складний пошук і заміну.
Для цього існує низка методів, які містяться у модулі re (тут
не розглядається).
1 Для чого призначена функція len()? 5 Для чого призначений метод count ()?
2 Яке призначення має функція chr()? 6 Поясніть сутність методу upper ().
3 Для чого призначений метод find ()? 7 Для чого призначений метод join ()?
4 Поясніть сутність методу replace (). 8 Порівняйте методи find () і rfind ().
1 Дано рядки: "Операційна" і "система". Ви- і кількість входжень підрядка столиця в ря-
значте довжину кожного рядка, об’єднайте док.
їх в один рядок і визначте його загальну 4 Дано рядок "microsoft Word". Замініть пер-
довжину. шу букву великою буквою М, визначте кіль-
2 Дано чотири рядки: "Великі річки України:", кість букв о в рядку і код букви на п’ятій
"Дніпро", "Дністер", "Десна". Визначте дов- позиції.
жину кожного рядка, об’єднайте їх в один 5 Дано рядок "Інструкція для користувача".
і визначте довжину нового рядка. Замініть слово "користувача" словом "учня"
3 Дано рядок "Рим — столиця Італії, Київ — і визначте позицію, з якої починається під-
столиця України". Визначте код букви м рядок для.
Приклад 1. Дано два рядки: "Рядок є незмін- довжини створеного рядка, виділення підряд-
ним" і "типом даних". На рис. 7.1 зображено ка і заміни одного підрядка іншим.
програму об’єднання цих рядків, визначення
Приклад 2. Дано рядки: ("кількість", "вхо- визначення кількості входжень у рядок слова
джень") і ("підрядка", "в рядок"). Розробити підрядка і коду букви к.
програму об’єднання їх в один рядок і пере- Програму реалізації цього завдання зобра-
творення рядкових елементів в один рядок, жено на рис. 7.2.
Оскільки початкові рядки складаються частину рядкового елемента, інакше буде ви-
з рядкових елементів, то підрядком у методі дано повідомлення про синтаксичну помилку.
count може бути повністю один із них. У цьо-
му випадку не можна розглядати як підрядок Результат виконання програми:
Приклад 3. Дано рядок: "рядок є незмінним починається слово «типом», і кількість букв
типом даних". Замінити першу букву рядка на у слові «незмінним».
велику, визначити код букви на 8-й позиції, Програму реалізації завдання зображено
кількість букв м у рядку, позицію, з якої на рис. 7.3.
1 Складіть програму, за допомогою якої ря- Windows". Визначте довжину нового рядка
док "Львів — гарне місто для екскурсій" і кількість входжень слова "система" в цей
перетворіть на рядок "Львів — гарне місто рядок.
для екскурсій та подорожей".
5 Складіть програму, за допомогою якої
2 Складіть програму, за допомогою якої у рядку "програма медіапрогравач Windows
рядки "Річка Сіверський Донець" і "впадає поєднує багато функцій" перша буква за-
у річку Дон" об’єднуються в один рядок мінюється великою буквою, визначаєть-
і визначається його довжина. ся код букви на 10-й позиції і кількість
3 Складіть програму, за допомогою якої ряд- букв «о» в рядку.
ки "Найвища вершина", "України Говерла" 6 Складіть програму, за допомогою якої
і "належить до", "Карпатських гір" об’єд-
у рядку "Київський ботанічний сад" визна-
нуються в один рядок і рядкові елементи
чається довжина слова "ботанічний", пози-
перетворюються в один рядок.
ція, з якої починається слово "сад", кількість
4 Складіть програму об’єднання рядків "Фай- букв н у слові "ботанічний" і код букви на
лова система" та "операційної системи 5-й позиції.
Право для безоплатного розміщення підручника в мережі Інтернет має
Міністерство освіти і науки України http://mon.gov.ua/ та Інститут модернізації змісту освіти https://imzo.gov.ua
94
8. Графи
8.1. Основні поняття і терміни теорії графів
Чи доводилося вам розв’язувати задачі, в яких розглядається
деяка сукупність об’єктів, між якими заданий певний зв’язок?
ребро
дуга 1 3
петля
2 4
B C
висяча
1
1 3 2
5 2
ізольована 3
5
0
4 3
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;
має таку історію. У 1736 році 2–3–4–5–1–2.
в місті Кенігсберзі було два
острови, з’єднані 7 мостами Довжиною циклу називають кількість ребер у циклі.
з берегами річки Преголь Графи, які можна намалювати, не відриваючи олівця від
і один з одним. Сутність задачі: паперу, називають ейлеровими. Щоб визначити, чи є граф
здійснити прогулянку містом ейлеровим, треба визначити степені 5 кожної вершини.
таким чином, щоб, пройшовши
один раз по кожному мосту, Якщо в графі більше двох непарних вершин, то намалю-
повернутися в те саме місце, вати фігуру неможливо. Такі завдання можна виконати за
звідки починалася прогулянка. допомогою графу.
Якщо всі вершини графу парні, то намалювати фігуру
можливо, і починати можна з будь-якої вершини.
Якщо в графі дві непарні вершини, то намалювати фігу-
ру можна, але тільки починати необхідно в одній з цих
двох непарних вершин, а закінчувати в іншій непарній
вершині.
Граф, який не має жодного циклу, називають деревом.
Приклад такого графу зображено на рис. 8.7.
Ребро називають мостом, якщо воно є єдиним шляхом, що
зв’язує дві вершини. Прикладом моста на графі, зображеному
на рис. 8.7, є ребро 1–2.
6 5 1
1
4
2 3
2
3
4 5 6 7 8
3 B
2 A 7
8 B C 4 2 5
А D
C
F E 5 8
1 D
3
Мінська
Завдання для самостійного виконання
Оболонь
1 Накресліть повний граф із п’ятьма верши- 6 Розробіть граф для станцій метро Києва: По-
Петрівка
нами. Сирець штова площа, Майдан Незалежності, площа
2 На графі, зображеному на рис. 8.9, визначте Льва Толстого, Університетська, Театральна,
Дорогожичи
3 5 Вершини
Вершини
1 2 3 4 5
1 0 1 1 0 0
2 0 0 0 1 0
4 3 0 1 0 0 0
4 0 0 1 0 0
Рис. 8.12. Орієнтований 5 0 1 0 1 0
незважений граф
Рис. 8.13. Матриця суміжності для орієнтованого
незваженого графу
1 Які способи подання графів у комп’ютері? 4 Поясніть порядок подання графу списком
2 Яка структура даних використовується суміжних вершин.
в матриці суміжності? 5 Як створюється матриця суміжності для
3 Поясніть порядок створення матриці су- орієнтованого зваженого графу?
міжності для неорієнтованого незваженого 6 Наведіть приклад подання зваженого графу
графу. списком суміжних вершин.
1 Складіть матрицю суміжності для графу, з кількістю населення понад 50 000 осіб
зображеного на: а) рис. 8.4; б) рис. 8.6; і довжину автомобільних шляхів між ними.
в) рис. 8.8.; г) рис. 8.9. Розробіть граф автомобільних шляхів між
2 Знайдіть в Інтернеті відомості про насе- цими населеними пунктами та список су-
лені пункти, розташовані у вашій області, міжних вершин.
Приклад 1. Перегляд вершин можна розпо- Потім перейдемо до вершини 2, з якої ру-
чати з будь-якої вершини, наприклад із вер- хаємося до вершини 1. Але у вершини 1 від-
шини 3. Із неї можна рухатися і у вершину 2, сутня суміжна для неї вершина, яка ще не
і у вершину 7. розглядалася.
7 5
Приклад 2. Список [[1, 2], [0, 2], [0, 1]] вказує, що вершина Рис. 8.16, а. Неорієнтований
0 має зв’язок із вершинами 1 і 2, вершина 1 — з вершинами незважений граф, стрілкою
0 і 2, а вершина 2 — з вершинами 0 і 1. позначено напрям руху,
цифрою — номер кроку
Приклад 3. Нехай дано граф із шістьма Програму обходу вершин графу в глибину,
вершинами, які мають між собою такі зв’яз- починаючи з нульової вершини, зображено на
ки: [[4, 5], [5], [3, 4], [2, 4], [0, 2, 3], [0, 1]]. рис. 8.17.
Приклад 4. Нехай дано граф із шістьма вер- На рис. 8.18 зображено програму обходу
шинами, які мають такі зв’язки між собою: вершин графу в ширину, починаючи з нульо-
[[1, 3], [0, 3, 4, 5], [4, 5], [0, 1, 5], [1, 2], [1, 2, 3]]. вої вершини.
3
7
4
6
1 Список суміжних вершин графу має такий 5 Виконайте програму, зображену на рис. 8.18,
зміст: [[1, 3], [0, 2, 3], [1, 3], [0, 1, 2]]. Розро- для нового списку суміжних вершин, роз-
біть граф, який відповідає цьому списку. робленого самостійно. Доведіть правиль-
2 Модифікуйте програму, зображену на ність отриманих результатів.
рис. 8.18, так, щоб обхід починався з вер- 6 Розробіть граф залізничних шляхів між
шини 2. Виконайте програму і доведіть пра- шістьма населеними пунктами України, які
вильність отриманих результатів. виберіть на власний розсуд або за вказів-
3 Для списку суміжності вершин, який вико- кою вчителя. Створіть для цього графа спи-
ристовується в програмі (рис. 8.17), розро- сок суміжних вершин і використайте його
біть відповідний граф. у програмі, зображеній на рис. 8.17. Вико-
найте програму і доведіть правильність
4 Модифікуйте програму (рис. 8.17) так, щоб
отриманих результатів.
обхід починався з вершини 3.
Приклад
1. Будемо вважати стартовою вершину 0, 2. Визначимо вершину, до якої можна пе-
а фінішною — вершину 5. Із вершини 0 рейти з вершини 0. Такими є вершини
видимими є вершини 1 і 4, відстані до 1 і 4. Відстань до вершини 4 менша,
яких відповідно дорівнюють 9 і 6. Інші тому переходимо у вершину 4. Із верши-
вершини є невидимими, відстань до них ни 4 можна потрапити у вершини 2 і 3
невідома, що позначається великим чис- (вершина 0 є відвідуваною, тому вона не
лом, яке гарантовано буде більше чисел, аналізується), відстані до яких відповід-
які використовуються у процесі розв’я- но дорівнюють 15 і 11. Перераховуємо
зання цієї задачі (ми використали число відстані до вершин 2 і 3 з вершини 4.
9999). Цей стан зафіксовано у табл. 8.1. Отримані дані відображено в табл. 8.2.
Таблиця 8.1. Відстані з вершини 0 Таблиця 8.2. Відстані з вершини 4
Номер Номер
вершини 0 1 2 3 4 5 вершини 0 1 2 3 4 5
графу графу
Поточна від- Відстань від
стань від стар- 0 9 9999 9999 6 9999 стартової 0 9 21 17 6 9999
тової вершини вершини
Вершина, з якої
було зробле- Вершина, з якої
но останній було зроблено
0 0 0 0 0 0 0 0 4 4 0 0
перерахунок останній
найменшої перерахунок
відстані Таким чином, після цього кроку відві-
Отже, у результаті реалізації першого кро- дуваними є вершини 0 і 4. Найближчою
ку відвідуваною є вершина 0 і визначено най- до вершини 4 є вершина 3, тому перейдемо
менші відстані до видимих вершин. у вершину 3.
5. Далі наведено детальний аналіз обчис- 6. Таким чином, після заміни значень еле-
лення довжини шляху між усіма верши- ментів D[1][2] і D[0][1] матриця суміжності
нами i та j через усі вершини k. матиме такий зміст:
Вершини Між якими вершинами Номер
0 1 2
обчислюється довжина шляху вершини
к i j
і через які вершини Вершина 0 0 9 3
0 0 0 D[0][0] Не змінюється Вершина 1 2 0 5
0 0 1 D[0][1] Не змінюється Вершина 2 3 6 0
0 0 2 D[0][2] Не змінюється
0 1 0 D[1][0] Не змінюється
0 1 1 D[1][1] Не змінюється
З 1 → 2 через 0;
0 1 2
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] Не змінюється Розроблений в 1962 году
2 0 0 D[0][0] Не змінюється Робертом Флойдом і Стівеном
З 0 → 1 через 2; Уоршеллом.
2 0 1
D[0][1] змінюється на 9 Уперше алгоритм розробив
2 0 2 D[0][2] Не змінюється і опублікував Бернард Рой у 1959
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] Не змінюється
Крок 8 Кінець.
1 2
A
H G 5
2
B 0
F 6 3
C
D E 3
Рис. 8.25. Неорієнтований незважений граф Рис. 8.26. Орієнтований зважений граф
Приклад 4. Нехай потрібно повернути здачу повернення першої монети номіналом 1 ко-
10 копійок монетами номіналом 1, 2 і 5 ко- пійка необхідно повернути ще 8 копійок;
пійок. Позначимо F(10) кількість способів по- якщо першою повертають 2 копійки, то необ-
вернення здачі. хідно повернути 7 копійок; якщо повернуто
Спочатку розглянемо окремі випадки. 5 копійок, то слід повернути ще 4 копійки.
Очевидно, що здачу в одну копійку можна Таким чином, кількість способів повернен-
повернути одним способом, тобто повернути ня здачі в 9 копійок дорівнює:
1 копійку. Дві копійки можна повернути дво- F (9) = F (8) + F (7 ) + F (4).
ма способами, а саме: 1 + 1 і 2 копійки. Три Звідси випливає, що повернення суми роз-
копійки можна повернути трьома способами: міром k копійок монетами номіналом 1, 2
1 + 2 , 2 + 1 і 1 + 1 + 1. Здачу в чотири копійки і 5 копійок обчислюється за формулою:
можна повернути п’ятьма способами: 2 + 2 , F (k) = F (k − 1) + F (k − 2) + F (k − 5) за умови, що
2 + 1 + 1, 1 + 2 + 1, 1 + 1 + 2 і 1 + 1 + 1 + 1. k 5 і F (0) = 1, F (1) = 1, F (2) = 2 , F (3) = 3
Отже, ми визначили початкові значення: і F (4) = 5.
F (1) = 1, F (2) = 2 , F (3) = 3 і F (4) = 5. Продемонструємо порядок реалізації цієї
Спробуємо тепер узагальнити процес по- формули:
вернення здачі. Кількість способів, якими F (5) = F (0) + F (3) + F (4) = F (0) + F (3) + F (4) = 1 + 3 + 5 = 9
можна повернути 10 копійок, залежить від
того, яку F (5монету
) = F (0) + F (3) + F (4) = F (0) + F (3) + F (4) = 1 + 3 + 5 = 9.
повернуто першою. Якщо
першою повернуто 1 копійку, то необхідно F (6) = F (1) + F (4) + F (5) = 1 + 5 + 9 = 15.
повернути ще 9 копійок; якщо першою повер-
F (7 ) = F (2) + F (5) + F (6) = 2 + 9 + 15 = 26.
нуто 2 копійки, то слід повернути ще 8 ко-
пійок; якщо першою повернуто 5 копійок, F (8) = F (3) + F (6) + F (7 ) = 3 + 15 + 26 = 44.
то слід повернути ще 5 копійок. Кількість
F (9) = F (4) + F (7 ) + F (8) = 5 + 26 + 44 = 75.
способів повернення 10 копійок дорівнює:
F (10) = F (9) + F (8) + F (5). F (10) = F (5) + F (8) + F (9) = 9 + 44 + 75 = 128 .
Отже, для визначення F (10) необхід- Програму реалізації цього алгоритму по-
но знайти F (9). Зрозуміло, що у випадку вернення здачі подано на рис. 9.4.
1 Які задачі можна розв’язувати за допомо- 3 Які типи задач можна розв’язувати за допо-
гою динамічного програмування? могою динамічного програмування?
2 У чому полягає сутність властивості спів- 4 Поясніть на прикладі сутність динамічного
оптимальності? програмування.
1 Визначте, скількома способами можна спла- млн. У таблиці показано приріст продукції
тити суму 60 грн купюрами номіналом 5, (у млн грн) залежно від розміру інвестицій.
10, 20 і 50 грн.
Приріст продукції від компаній
2 Виконайте програму, зображену на рис. 9.3, Сума
1-ша 2-га 3-тя
інвестицій
для отримання суми перших 15 чисел Фібо- компанія компанія компанія
наччі. Доведіть, що отримано правильний 0 9 14 12
результат. 50 12 19 16
3 Модифікуйте програму, наведену на 100 15 21 20
рис. 9.2, таким чином, щоб обчислювалася 150 20 24 25
тільки сума перших 12 чисел Фібоначчі. 200 24 29 27
4 Модифікуйте програму, наведену на Розподіліть між компаніями 200 млн грн
рис. 9.4, таким чином, щоб вона підрахову- так, щоб отримати максимальний загальний
вала всі варіанти повернення здачі 17 ко- прибуток.
пійок монетами 2, 5 і 10 копійок і кількість 6 Поле розбито на клітинки з n стовпцями
варіантів. і m рядками. По полю можна крокувати
5 У корпорації три компанії. На початку на одну клітинку вправо і вгору. Розробіть
року між компаніями розподіляються програму обчислення кількості способів
200 млн грн інвестицій у сумі, кратній 50 потрапляння з нижнього лівого кута в пра-
вий верхній.
Приклад 1. Банкомат може видавати купю- максимального номіналу з числа тих, які
ри номіналом 500, 200, 100, 50 і 20 грн. Яки- можна вибрати, щоб їх загальна кількість
ми купюрами і в якій кількості повинен ви- була мінімальною. Для цієї суми спочат-
дати банкомат суму 2 340 грн, щоб кількість ку слід вибрати чотири купюри номіналом
купюр була мінімальною? 500 грн, потім одну купюру номіналом
Відповідно до методу жадібних алгорит- 200 грн, далі одну купюру номіналом 100 грн
мів програма обслуговування банкомата на і, нарешті, дві купюри номіналом 20 грн.
кожному кроці повинна вибирати купюри Усього 8 купюр.
Увести значення змінних n, gruz і списків nazva, zina, vaga і сформувати порожній
Крок 1
список kilkist довжиною n.
Крок 9 i = i + 1.
1 До яких задач можна застосовувати жадібні 4 Наведіть приклад задачі, для якої жадібні
алгоритми? алгоритми не забезпечують оптимальне
2 Чи завжди жадібні алгоритми дозволяють розв’язання.
отримати оптимальне розв’язання? 5 Поясніть сутність жадібних алгоритмів на
3 У чому полягає сутність жадібних алгорит- конкретному прикладі.
мів?
(y +знайти
by )
протилежним вектору b . Різницю векторів (рис. 10.4, в) мож-
a + b = ax + bx ; aна також за правилом трикутника
або паралелограма.
У цьому випадку напрям вектора b змінюють на протилеж-
ний, потім отриманий вектор переносять паралельно самому
( )
a + b = ax + bx ; ay + by собі в кінець вектора a . Початок вектора a з’єднують із кін-
цем вектора b .
б
( )
a − b = ax − bx ; ay − by Приклад 1. Дано вектори a і b і
кут між ними 90 °, модулі
векторів a = 3 і b = 4 . Тоді c = a + b = 9 + 16 = 5.
)( )
(
a − b = ax − bx ; aay+−bb=y ax + bxМноження
; ay + by вектора на число. У результаті множення век-
тора a на число k кожна координата вектора множиться на
число k. У результаті отримаємо вектор завдовжки k ⋅ a .
в Його напрям збігається з напрямом a , якщо k > 0 , і має про-
Рис. 10.4. Додавання і віднімання тилежний напрям, якщо k < 0 (приклад 2).
векторів
Скалярний добуток. Скалярним добутком векторів a і b
є число, що дорівнює добутку їх довжин на косинус кута між
ними. Тобто скалярний добуток визначається за формулою
a ⋅ b = a ⋅ b cos α, де α — кут між даними векторами (при-
клад 3).
Приклад 2. Дано вектор
Векторний добуток. Векторним добутком вектора a на век-
a = (5; − 3). Тоді вектор
тор b називаєтья вектор c , c = a ⋅ b ⋅ sin α , де α — кут між
2a = 2 (5; −3) = (2 ⋅ 5;2 ⋅ ( −3)) = (10; − 6) векторами a і b. Отже, модуль векторного добутку векторів
2 ⋅ −3 ) = (10; − 6) .
( )
a і b чисельно дорівнює площі паралелограма (рис. 10.5),
побудованого на цих векторах.
Право для безоплатного розміщення підручника в мережі Інтернет має
Міністерство освіти і науки України http://mon.gov.ua/ та Інститут модернізації змісту освіти https://imzo.gov.ua
10.2. Операції над ... 125
Векторний добуток найчастіше позначається так: c = a × b ,
або у квадратних дужках: c = a, b , c = [ a × b ].
Приклад 3. Дано: a = 4 ,
Під час виконання добутку вектора b на вектор a знак bb ==55, a==30
,a 30° °, тоді
вектора c змінюється на протилежний. a ⋅ b = a ⋅ b ⋅ cos30° = 10 3 .
Якщо два вектори задані
Вектор c перпендикулярний
(ортогональний) до площини, своїми координатами (x1; y1 )
у якій лежать вектори a і b, і напрямлений так, що поворот
і (x2 ; y2 ) , то a ⋅ b = x1x2 + y1y2 .
від вектора a до вектора b здійснюється проти ходу годин- Наприклад,
никової стрілки, якщо дивитися з кінця вектора c . У такому
якщо a = (2; 5) і b = ( −3; 4),
випадку говорять, що трійка векторів a, b і c — права.
то a ⋅ b = 2 ⋅ ( −3) + 5 ⋅ 4 = 14 .
Для визначення напрямку вектора c на практиці кори-
стуються правилом правої руки. Для цього вказівний палець
слід направити у напрямку вектора a , а середній — у на-
прямку вектора b (рис. 10.6). Якщо великий палець направ-
лений вгору, то це означає, що вектор направлений від нас,
а якщо вниз, то до нас (приклад 4).
c = a × b
Приклад
4. Нехай довжина вектора
a дорівнює 5, довжина
вектора b — 10, а кут між ними становить 30° Тоді довжина (
a + b = ax + bx ; ay + by )
вектора c = 5 ⋅10 ⋅ sin (30°) = 25 . Його напрям можна визначи-
ти за правилом правої руки.
Векторний добуток довільного вектора на нульовий вектор (
a + b = ax + bx ; ay + by )
дорівнює нульовому вектору. Векторний добуток двох коліне-
Рис. 10.5. Графічне зображення
арних векторів також дорівнює нульовому вектору. векторного добутку
c = a × b
Приклад 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 ( c1, c2 , c3 ) , то його дов- Рис. 10.6. Правило правої руки
жину можна визначити за формулою c = c12 + c22 + c32 . Дов-
жина вектора c зі знайденими вище координатами дорівнює:
c = ( −10) + 12 + 42 = 3 13 .
2
1
2
3
4 5
5
6 0 4
7
8
9
10
1 3
11
12
2
13
14
15
y
Тернопіль Київ
Львів Полтава Харків
Хмельницький
Івано- Черкаси
Франківськ Вінниця Дніпро Луганськ
Ужгород Донецьк
Чернівці Кіровоград
Запоріжжя
Миколаїв
Одеса Херсон
Сімферополь
Номер точки 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
1 Які оболонки називають опуклими? 4 Яку точку вибирають, якщо умові «косий
2 Які опуклі оболонки називають мінімальними? добуток» відповідають декілька векторів?
3 Накресліть мінімальну опуклу оболонку. 5 Сформулюйте сутність алгоритму Джарвіса.
Тестові завдання
Тест 5 Тест 6 Тест 7 з автоматичною перевіркою
результату на сайті
interactive.ranok.com.ua
Сайти-хостинги
sale
% Мотивація при покупці, лояльність,
Поведінковий принцип
інформованість про товар
Головна
Послуга 1 Акція 1
Дизайн 1
Послуга 1а Акція 2
Дизайн 2
Послуга 1б Акція 3
Дизайн 2а
Послуга 1в
Дизайн 2б
Послуга 2
Дизайн 2в
Послуга 3
Рис. 11.18. Структура комерційного сайта
1 Чим відрізняється front-end від back-end? 5 Що таке WYSIWYG? Наведіть приклади без-
2 Що таке CMS? коштовних візуальних редакторів.
3 Назвіть функції систем керування вмістом. 6 Дослідіть CMS і зробіть висновки. Ско-
ристайтеся посиланням websitesetup.org/
4 Що таке шаблон сторінки?
cmscomparison-wordpress-vs-joomla-drupal
Вид Опис
Регулярне додавання новин, статей, товарів, оголошень та інших матеріалів залежно від
тематики сайта:
•• робота з наповнення сайта матеріалами;
Інформаційне •• р едагування матеріалів і виправлення помилок;
•• о птимізація й підвищення зручності використання розміщеного контенту;
•• п ідтримка актуальності та практичної цінності матеріалів;
•• с воєчасне вилучення й архівація застарілої інформації
Notepad++ 30.4 %
Vim 25.9 %
Сторінка завжди починається з відкриваю- систем, а саме: опис сайта, ключові слова
чого тега <html> та закінчується закриваючим тощо. Інформація є зазвичай невидимою для
тегом </html> і складається з двох обов’язко- пересічного користувача, крім тега <title>,
вих блоків — голови (head) і тіла (body), які в якому відображається назва сторінки сайта.
записуються послідовно. Увесь контент, який відображається на сто-
У блоці <head> </head> зберігається служ- рінці, розміщується між відкриваючим і за-
бова інформація, призначена допомогти брау- криваючим тегами <body>.
зеру в роботі з даними. Тут розташовані ме- Кожен абзац починається з тега <p> (від
та-теги, які використовуються для зберіган- слова «параграф»).
ня інформації, призначеної для пошукових
Код HTML Відображення браузером
Рис. 11.37. Приклад запису навігаційного контейнера та його відображення браузером
Приклад 3.
Приклад 4.
№ Назва
Опис
з/п модуля
CSS- CSS-позиціонування (positioning) дозволяє вказати, де з’явиться блок елемента,
1 позиціону- а вільне переміщення (floating) переміщує елементи до лівого або правого краю
вання блока-контейнера, дозволяючи решті вмісту «обтікати» його
2 CSS-текст Керують перетворенням вихідного тексту у форматований і перенесенням рядків
Вибір шрифту (font-family), його насиченість (font-weight), ширина (font-stretch),
3 CSS-шрифт
накреслення( font-style), розмір ( font-size)
Веб-сторінки спочатку були просто набором досить багато сайтів, які зверстано у вигляді
тегів. Елементи відображалися в тому поряд- таблиць.
ку, в якому записувалися в HTML-коді. Щоб Таблична верстка має низку недоліків: при
візуально розділити інформацію, використо- складній структурі важко розібратися в коді,
вувалися горизонтальні лінії або відступи. браузери відображають таблицю на екрані
Кроком вперед була так звана таблична лише після повного завантаження, а склад-
верстка веб-сторінки: елементи структурува- ний дизайн з перекриттям елементів узагалі
лися за допомогою таблиці, інформація встав- неможливо реалізувати. Таблична верстка не-
лялась у клітинку. Створити сайт за допомо- прийнятна для побудови адаптивних сайтів.
гою таблиці було досить просто — достатньо Наразі найпопулярнішим способом верстки
мати початкові знання HTML і CSS і вико- є так званий блочний. При цьому використо-
ристовувати мінімум правил CSS. вуються блоки, які або розташовують один під
Таблична верстка була дуже популярною одним, або керують порядком їх відображення
на початку 2000-х років. До сьогодні існує за допомогою позиціонування в CSS.
аб
в
Рис. 11.45. Приклад використання контейнера на веб-сторінці:
код HTML (а); правила СSS (б); відображення в браузері (в)
аб
вг
Рис. 11.50. Приклади сайта: з навігацією в лівому стовпці (а); навігацією в правому стовпці (б);
горизонтальною навігацією (в); технологією Mobile First (г)
1 Сформулюйте правила структурування й іме- 4 Яке місце в дизайні сайта, на вашу думку,
нування файлів. посідає колірна гама?
2 Які типи макетів веб-сторінок ви знаєте? Які 5 Чим корисні фрейворки?
переваги та недоліки вони мають? 6 Опишіть етапи верстки веб-сторінки.
3 Опишіть етапи створення сайта.
1 Створіть теку для вашого майбутнього сай- 5 У файлі index.html виправте посилання на
та з назвою Site. файл style.css так, щоб ви могли знайти
2 У створеній теці задайте ще відповідно його у новоствореній теці. Для цього у за-
теки images, css, js. пису <link rel = "stylesheet" type = "text/css"
href = "style.css"> пропишіть шлях до файла
3 Перенесіть у теку Site файл index.html, мо-
наступним чином href = "css/style.css".
дифікований на минулому уроці.
6 Перегляньте отриманий результат у брау-
4 У теку сss перенесіть файл style.css.
зері.
Більш детально з модулем Рис. 11.58. Приклад адаптивної верстки на основі медіа-запитів
Flexbox можна ознайомитися за
посиланням
https://css-tricks.com/snippets/
css/a-guide-to-flexbox/
Для розуміння роботи адаптивного шабло- 2 Опишіть зміни у відображенні сторінки під
ну відкрийте сторінку Google (https://about. час застосування режиму інспекції.
google/). 3 Перегляньте код (рис. 11.62). Який механізм
1 Зменшуйте розмір вікна браузера і слідкуйте використовують розробники сайта для до-
за тим, як змінюються положення блоків, зни- сягнення адаптивності?
кають зображення, як перетворюється меню
в результаті зменшення вікна браузера.
11.11. Кросбраузерність
Кожний користувач віддає перевагу певному браузеру.
Хтось полюбляє вогняну лисичку, комусь до вподоби хром,
а хтось не уявляє собі життя без сафарі. Поміркуйте, чи
однаково обробляють браузери код сайта, який ви хочете
переглянути?
Як свідчить статистика, переважна більшість користувачів
Слово «браузер» (від англ. надає перевагу браузерам, які працюють на рушії Webkit, —
Вrowser — гортати) в англомовних Google Chrome і Safari (рис. 11.63).
програмах можна побачити на
кнопках у діалогових вікнах. Крім
браузера, найпопулярнішими
варіантами перекладу є (веб-)
перекладач або оглядач, а також
(веб-) навігатор.
Рік Опис
З’явився один з перших вдалих браузерів Netscape Navigator, створений на основі пер-
1994
шого браузера з графічною оболонкою NCSA Mosaic
Компанія Microsoft розробила браузер Internet Explorer, однак перші три версії широко-
го розповсюдження не отримали. Тривалий час браузери Netscape Navigator і Internet
Explorer розвивалися паралельно, доки останній не захопив 95 % ринку.
1994–1996 Далі в 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
<img src="images/2.jpg">
а б в
Приклад.
1 <img src="images/02.jpg" alt="Розміри зобра- 3 <img src="images/02.jpg" alt="Вказані ши-
ження не вказані"> рина та висота зображення" width="400"
2 <img src="images/02.jpg" alt="Вказана шири- height="400">
на зображення" width="400">
1 Які графічні формати та якими командами 4 Які стилі використовують для відображення
мови розмітки відображаються? графічного об'єкта на веб-сторінці?
2 Що таке скрін-рідер? Для чого він призна- 5 Обґрунтуйте використання атрибутів шири-
чений? ни та висоти зображення.
3 Які обов’язкові атрибути має тег для відобра- 6 Який вид комп'ютерної графіки краще вико-
ження графічних об’єктів на веб-сторінці? ристовувати для фотографій?
а б в
Рис. 11.71. До завдання 4
Визначає зміну напрямку анімації та його чергування залежно від кількості про-
animation-direction ходів анімації, може задавати повернення в початковий стан і починати прохід
заново
animation-iteration- Визначає кількість проходів (повторів) анімації; можна також обрати значення
count infinite для нескінченного повтору анімації
Задає ім’я для анімації @keyframes через at-правило, яке описує анімаційні клю-
animation-name
чові кадри
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 секунд НЕСКІН-
ЧЕННА.
Document
Root element:
<html>
Element: Element:
<head> <body>
Вузол Опис
Документ
Корінь дерева, представляє цілий документ, інакше кажучи — точка входу в DOM
(Document)
Фрагмент
документа Вузол, який є коренем піддерева основного документа
(DocumentFragment)
Представляє окремий елемент HTML, можна сказати, що це основні будівельні
Елемент (Element)
блоки. Атрибут (Attr) представляє атрибут елемента
Текст (Text) Представляє текстові дані, які містяться в елементі або атрибуті
Коментарі Іноді можна включити інформацію, яка не буде показана, проте є доступною з JS
<label>
Введіть ім’я <input type = "text" name
= "username">
</label>.
cPanel є найпопулярнішою
панеллю керування хостингом
онлайн (рис. 11.84) завдяки її
легкому налаштуванню. cPanel
розроблена на початку 1996
року для серверів Linux. Проте
компанія пропонує панель
управління хостингом під
назвою Enkompass, створену
й для серверів Windows. Крім
того, існує додаткова панель
керування, яка дає змогу
адмініструвати декілька веб-
сайтів і налаштувати кожен
аспект сервера.
Робота над сервером не припинялася. Протягом усіх цих років і до сьогодні Apache
Після численних випробувань 1 грудня залишається абсолютно безкоштовним. За да-
1995 року, з’явилася версія 1.0, стійка і на- ними NetCraft, Apache на сьогоднішній момент
дійна. встановлено на 67 % всіх серверів світу.
Приклад.
Відбувається надсилання форми з веб-сто- отримані дані назад до AJAX, де залежно від
рінки у вигляді сценарію JavaScript. JS AJAX результату остаточно з’ясовуються наступні дії
отримує дані й відправляє їх на HTML-сер- (якщо вже існує такий логін або набраний па-
вер, сервер отримує ці дані, а також певний роль не відповідає заявленому, то повертається
файл PHP. Файл PHP установлює з’єднання з повідомлення про невідповідність і прохання
БД і виконує потрібні дії. Після виконання повторити спробу, при підтвердженні обліко-
операції БД повертає результат. PHP відправляє вого запису відкривається сторінка профілю).
Рис. 11.89. Взаємодія «клієнт — сервер» на прикладі динамічного сайта Рис. 11.90. До завдання 5
Приклад 4. Візьмемо API Twitter. Інтерфейс На основі API будуються такі речі, як кар-
цього сервісу може вам видати інформацію про ти 2GIS, всілякі мобільні і десктопні клієнти
твіти користувача, його читачів і тих, хто його для Twitter.
читає, і т. д. Це лише частина можливостей, Всі їх функції стали можливими саме зав-
які будь-хто може втілити, використовуючи API дяки тому, що відповідні сервіси мають якіс-
стороннього сервісу або створюючи власний. ні і детально задокументовані API.
Потрібно створити умови, щоб користувач мав змогу ін- Навігація проста
туїтивно пов’язувати дії, які йому необхідно виконати на і зрозуміла
веб-сторінці.
Розглянемо основні критерії ергономіки під час створення Усі сторінки мають
сайта (табл. 1). посилання на головну
Таблиця 1. Критерії ергономіки
Критерій Склад Унікальні фотографії та
Простота викладення синематограф
Лаконічність
Неперевантаженість
Ясність Читабельний шрифт
Структурованість
Чіткість Розташування
Видимість адреси Колірна палітра враховує
правила колористики
Однорідність структури
Час завантаження Рис. 11.92. Правила створення
Швидкість
Оптимізовані зображення ергономічного сайта
Гіпертекстові посилання
Взаємодія Сегментація інформації
Сприяння взаємодії
Адаптивність Можливість змінити розмір шрифту
Доступ до всього
Взаємодія
Принцип прозорості
Підпис
Доступність
Вибір кольору
Правильне використання стилів
Контраст
Можливість змінити розмір шрифту
Найпопулярніші онлайн-сервіси
можна знайти за посиланнями:
• ColorExplorer
(http://colorexplorer.com/)
• сOLOROTATE
(http://mobile.colorotate.org/)
• ColorBlender
(http://www.colorblender.com/)
• ColorWizard
(http://www.colorsontheweb.
com/Color-Tools/Color-Wizard)
1 Що таке юзабіліті; ергономіка? Що, на вашу 4 Чому важливо правильно добирати кольори?
думку, їх відрізняє? 5 Виберіть сайт і проаналізуйте його з точки
2 Наведіть правила створення ергономічного зору юзабіліті.
сайта. 6 Проаналізуйте тренди поточного року та
3 Які онлайн-сервіси добору палітри ви знаєте? оцініть їх з точки зору ергономіки.
Право для безоплатного розміщення підручника в мережі Інтернет має
Міністерство освіти і науки України http://mon.gov.ua/ та Інститут модернізації змісту освіти https://imzo.gov.ua
11.23. Пошукова оптимізація... 221
Соціальні мережі
Ранжування Веб-дизайн
SEO —
пошукова
Оптимізація Трафік
оптимізація
Spider (павук):
браузероподібна програма, яка завантажує веб-сторінки
Збирання семантичного ядра. Під час добирання всіх слів вибираються ключові
словоформи, що додаватимуть відвідувачів на сайт. Водночас здійснюється аналіз ринку
Етап 1
сайтів, які наявні в топ-видачі. Збирання ключових слів для написання внутрішніх текстів
можна виконати за допомогою як платних, так і безкоштовних програм.
Написання на основі семантичного ядра контенту, що відповідатиме запитам користувачів
Етап 2 і розв’язуватиме проблеми відвідувачів сайта. Водночас кількість ключових слів
у співвідношенні до загальної кількості тексту не має перевищувати 3–5 %.
Оптимізація Призначення
Набір прийомів, які характеризуються явною некоректністю. Багато з них заборонені, де-
Чорна
які створені для введення пошукової системи в оману
Не заборонені, але потенційно некоректні прийоми. Якщо чорну або сіру оптимізацію
Сіра буде виявлено пошуковою системою, до сайта будуть застосовані штрафні санкції чи на-
віть бан
Використовує легальні професійні методи, що доповнюють один одного і дають стабіль-
Біла ний результат. Спрямована на те, щоб і відвідувачі, і пошукові машини ставили сайту ви-
соку оцінку
Тестове завдання
з автоматичною перевіркою
результату на сайті
interactive.ranok.com.ua
Тест 11
Впровадження Супроводження
Приклад. Порівняємо процес створення ПЗ версій коду. Так відбувається і з новим ПЗ.
з розв’язанням задачі на заняттях з програ- Прикладом є будь-яка операційна система,
мування: написаний код програми можна кожна версія якої більш досконала і зручна
вдосконалювати кілька разів, і інколи ви- для користувачів, або програми офісного до-
никає потреба повернутися до попередніх датку.
Сервер
ПК 1 ПК 2
База Версій База Версій
Сервера Файл Файл
ПК 1 Версія n
Версія n
Файл База Версій База Версій
...
... Версія n Версія n
ПК 2 Версія 1
Версія 2 ... ...
Файл
Версія 1 Версія 1 Версія 1
Отримання атестату
колектив учителів
Отримання сертифікату ЗНО
учень
працівники
Подання документів (копії)
приймальної комісії
Оприлюднення результатів
група 2
Подання документів (оригінал)
Рис. 12.10. Приклад діаграми прецедентів для завдання з організації вступу випускників до вишу
Уявіть себе розробником найпростішого А прецедентами будуть дії, які можна здій-
графічного редактора, наприклад такого, снювати до екторів, наприклад створення,
як MS Paint. Екторами будуть інструменти масштабування, фарбування тощо.
редактора (назвіть їх у загальному вигля- Створіть діаграму прецедентів для цього
ді, наприклад фігури, гумка, ножиці тощо). ПЗ.
Право для безоплатного розміщення підручника в мережі Інтернет має
Міністерство освіти і науки України http://mon.gov.ua/ та Інститут модернізації змісту освіти https://imzo.gov.ua
236
12.5. Моделювання даних і архітектури програмного
забезпечення
Пригадайте визначення класів об’єктно-орієнтованого про-
грамування (ООП), парадигми ООП і модифікаторів доступу
до класу.
Як зображують ектор на діаграмі прецедентів?
Мови візуалізації спрямовані на побудову різних моделей
архітектури програмного забезпечення (ПЗ) за допомогою різ-
Приклад 1. Одна з діаграм них діаграм (приклад 1). Пригадайте, як у ході пояснення
описує взаємодію користувача складових діаграми прецедентів наголошувалося, що ектор
з ПЗ, інша — зміну його можна подати як клас в ООП, адже клас — це опис сукупності
станів у процесі її роботи, ще об’єктів із загальними атрибутами, операціями і семантикою.
одна — взаємодію складових
(компонентів) ПЗ. Діаграма класів (class diagram) — це опис сукупності
статичних складових ПЗ.
Назва суперкласу
Реалізація
Приклад 6.
Почнемо з найменшого елемента графічно- Аналогічно створюється клас Лінія.
го зображення. Точка має параметри — коор- Проте в цьому випадку встановлюється
динати х і у. Ці параметри встановлюються не кожна окрема координата точок її кінців,
вказівником для миші. Тому точка буде мати а відразу використовується точка як об’єкт,
метод фіксації положення вказівника — взя- і клас Відрізок опише такі методи:
ти координати та метод встановлення цих • Взяти Точку1 (вона вже має координати)
координат для точки. • Взяти Точку 2
Точку можна переміщувати, тому клас • Установити Точку 1 (вже описано, як
Точка матиме метод переміщення з параметра- встановлюють координати точки)
ми-координатами, адже переміщення буде ви- • Установити Точку 2
значатися новими координатами (рис. 12.15). • Перемістити в Точку (йдеться про пере-
міщення вузла лінії як точки, що вже
Точка описано)
Класи графічного
Елементи фігури складаються з точок і лі-
редактора:
Узяти х
ній, а зображення фігури створюється з еле-
• Фігура
Узяти у ментів. У такій організації класів графічного
• Елемент фігури
• Точка Установити х редактора будуть задіяні два типи взаємо-
• Лінія Установити у зв’язків: Асоціація та Узагальнення.
Перемістити в х, у Фігура визначається елементом — це Асо-
ціація; стрілка спрямована від фігури. А еле-
Рис. 12.15. Опис класу Точка менти є нащадками точок і ліній (рис. 12.16).
Точка Точка
Фігура <<interface>>
ІРедагування
+ перемістити
+ замінити розмір
+ повернути
Рис. 12.16. Приклад діаграми класів для графічного редактора
Рис. 12.17. Зображення
інтерфейсу на діаграмі класів
У ході створення діаграми класів не завжди доцільно
створювати необхідні класи, оскільки їх можна взяти з уже
наявних проектів інших систем та адаптувати під своє про-
грамне забезпечення.
податиЗаявуНаВступ
ученьАбітурієнт (стан)
результатиЗНО
результатиЗНО
рейтинг
результатРейтингу
вибір
:Фарбування (вікно) колір
повернутиЗначення(стан)
вибір
повернутиЗначення(стан)
відкрити стиль
результатиВПам’яті
застосуватиРезультат
:Користувач об’єкт:Фігура
Доступ
Запит
є
Так Ні
Запит
Повтор (відсутній)
до БД
Ні
Інформація
Вибір даних
для клієнта
Отримання Передача
даних даних
Об’єднання
Розробка архітектури
і тестування
Модульне
Деталізація проекту
тестування
Створення
Тестове завдання
з автоматичною перевіркою
результату на сайті
interactive.ranok.com.ua
Тест 12
Алгоритм послідовного пошуку елемента в ма- Жадібний алгоритм — це алгоритм, для яко-
сиві — це алгоритм, що базується на прямому го застосовується метод розв’язування задач
переборі елементів масиву. оптимізації, за допомогою якого на кожному
етапі вибирається такий варіант, який є най-
Алгоритм сортування масиву злиттям — це ал- кращим на цей момент.
горитм, у якому масив ділиться на дві части-
ни і виконується сортування окремо кожної Запит — це об’єкт бази даних, призначений
частини. для відбору з таблиці необхідних даних, вве-
дення даних, їх опрацювання і подання ко-
Архітектура даних — методи взаємодії складо-
ристувачеві у зручній формі.
вих системи і зберігання даних, безпосеред-
ньо сховища даних і правила доступу до них. Звіт — це об’єкт бази даних, призначений для
Архітектура програмного забезпечення — відбору з БД необхідних даних і виведення їх
структура, яка складається з програмних на екран або принтер у зручному для корис-
компонентів, їхніх інтерфейсів та опису засо- тувача вигляді.
бів об’єднання компонентів в єдину систему. Каскадні таблиці стилів (англ. Cascading Style
База даних — це сховище даних різного типу Sheets, або скорочено CSS) — спеціальна мова,
про об’єкти та взаємозв’язки між ними. що використовується для опису зовнішнього
вигляду сторінок, написаних мовами розміт-
Валідація сайта — перевірка синтаксичних ки даних.
помилок, перевірка вкладеності тегів та інші
критерії. Кодування алгоритмів — це запис алгоритму
мовою програмування.
Віджети — на JavaScript пишуться різні міні-
програми, які використовуються в робочому Кросбраузерність — правильна верстка сайта,
просторі і є дуже зручними. за її допомогою сторінки сайта однаково ві-
Візуальне моделювання — метод розробки ПЗ, дображаються в різних браузерах. Реалізація
який для візуалізації, опису, проектування, відбувається за допомогою HTML і CSS, а та-
документування архітектури ПЗ використовує кож різноманітних хаків, в окремих випад-
графічні моделі. ках — JavaScript.
Реляційна модель даних — це модель, у якій Хóстинг (англ. hosting) — послуга, що вклю-
об’єкти і взаємозв’язки між даними пред- чає надання дискового простору, підключен-
ставляються за допомогою відношень. ня до мережі та інших ресурсів для розмі-
щення фізичної інформації на сервері, що
Сервер додатків — сервер, на якому створе- постійно перебуває в мережі (наприклад,
ні додатки, які використовують вашу базу Інтернет).
даних, веб-сервіс тощо.
Цикл графа — це шлях з одної вершини гра-
Серверні додатки — фрагменти коду, які ви- фа в ту саму вершину.
конуються на стороні сервера, де використо-
вується Java 6. Чат-бот (англ. Chatbot) — комп’ютерна про-
грама, розроблена на основі нейромереж та
Серверні скрипти — спеціальні програмні технологій машинного навчання, яка веде
коди, що застосовуються для реалізації ін- розмову за допомогою слухових або тексто-
терактивних «властивостей» сайтів. вих методів.
Система керування вмістом (англ. Content Шлях графа — це послідовність його ребер,
Management System, або CMS) — програмне які зустрічаються при переміщенні з одної
забезпечення для організації спільного про- вершини в іншу.
цесу створення, редагування й управління
Юзабіліті (англ. Usability — зручність і про-
контентом веб-сайтів.
стота використання) — підхід, покликаний
Система управляння базами даних — це про- зробити сайти простими у використанні для
грама, призначена для створення структури користувача, який не потребує додаткового
бази даних, уведення, оновлення, пошуку навчання, тобто має бути орієнтований на
та опрацювання даних. нього інтерфейс.
РОЗДІЛ 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
Навчальне видання
Руденко Віктор Дмитрович
РЕЧИЧ Наталія Василівна
ПОТІЄНКО Валентина Олександрівна