Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 52

Дніпровський національний університет

імені Олеся Гончара


__________________________________________________
Кафедра електронних обчислювальних машин

Н. В. Карпенко, В. В. Герасимов

МЕТОДИЧНІ ВКАЗІВКИ ДО ВИКОНАННЯ КУРСОВИХ РОБІТ

З ДИСЦИПЛІНИ «ПРОГРАМУВАННЯ»

Дніпро
Ліра
2020

2
УДК 004.432 (075.8)
Рекомендовано вченою радою
факультету фізики, електроніки та комп’ютерних
систем,
протокол № 3 від 14 листопада 2019 р.

Рецензенти:
Гнатушенко В. В. — доктор технічних наук, професор, професор
кафедри інформаційних систем та технологій НТУ «Дніпровська політехніка»
Бухаров С. В. — кандидат технічних наук, доцент кафедри комп’ютерних
наук та інформаційних технологій Дніпровського національного університету
імені Олеся Гончара

Карпенко Н. В., Герасимов В. В.


Методичні вказівки до виконання курсових робіт з дисципліни
«Програмування» / Н. В. Карпенко, В. В. Герасимов — Д.: Ліра, 2020. — 52 с.

Посібник містить методичні рекомендації до оформлення курсової роботи


з дисципліни «Програмування», текст завдання, а також приклад виконання
завдання.

© Карпенко Н. В., Герасимов В. В.

3
ЗМІСТ

ВСТУП.....................................................................................................................................4
1. ПОРЯДОК ВИКОНАННЯ КУРСОВОЇ РОБОТИ...........................................................5
2. СТРУКТУРА ТА СКЛАД ЗВІТУ З КУРСОВОЇ РОБОТИ.............................................6
3. ОФОРМЛЕННЯ ПОЯСНЮВАЛЬНОЇ ЗАПИСКИ.........................................................7
3.1. Загальні положення.....................................................................................................7
3.2. Вимоги до структурних елементів пояснювальної записки....................................8
3.3. Вимоги до оформлення основної частини................................................................8
3.3.1. Вимоги до тексту звіту.........................................................................................8
3.3.2. Вимоги до оформлення ілюстрацій.....................................................................8
3.3.3. Вимоги до оформлення таблиць..........................................................................9
3.3.4. Вимоги до оформлення формул..........................................................................9
3.4. Вимоги до оформлення заключної частини............................................................10
3.5. Розробка алгоритму для розв’язання задачі............................................................11
3.6. Правила та стандарти оформлення лістингів програм...........................................12
Список рекомендованої літератури....................................................................................14
Додаток А. Зразок оформлення титульної сторінки.........................................................15
Додаток Б. Приклад завдання на курсову роботу.............................................................16
Додаток В. Приклад виконання завдання з обробки символьних рядків.......................17
Додаток Г. Зразок оформлення бібліографічного опису різних видів джерел...............21
Додаток Д. Приклад запису алгоритмів для обчислень....................................................23
Додаток Е. Приклад оформлення лістингів.......................................................................25
Додаток Ж. Шкала оцінювання курсової роботи..............................................................27
Додаток З. Завдання 1. Робота з символьними рядками...................................................29
Додаток І. Завдання 2. Робота з двовимірними масивами................................................34
Додаток К. Завдання 3. Робота з бітами.............................................................................37
Додаток Л. Завдання 4. Робота зі структурами. Сортування та пошук даних................41
Додаток М. Завдання 5. Розробка інформаційної системи...............................................48

4
ВСТУП

Навчальним планом підготовки бакалаврів за спеціальністю


123 — «Комп’ютерна інженерія» передбачено вивчення на першому курсі
дисципліни «Програмування» та виконання курсової роботи з цього предмету.
Курсова робота призначена для придбання практичних навичок розробки
алгоритмів та програм на мові програмування С. Метою курсової роботи є
закріплення та поглиблення знань, отриманих студентами на лекційних,
практичних та лабораторних заняттях з дисципліни «Програмування». Під час
виконання курсової роботи студент повинен навчитися:
 працювати з літературними джерелами;
 використовувати попередньо набуті теоретичні та практичні знання під
час розробки програм, що відповідають завданням курсової роботи;
 проводити налагодження та тестування створених програм;
 аналізувати результати роботи програм;
 складати відповідну документацію до розроблених програмних продуктів.
У даному посібнику знаходяться відомості щодо порядку виконання
курсової роботи та правила оформлення пояснювальної записки. Теми завдань є
типовими задачами програмування, а саме:
 розробка функцій для обробки символьних рядків;
 робота з одновимірними та двовимірними масивами даних;
 робота з динамічними структурами та файлами;
 використання методів сортування та пошуку даних.
Матеріал посібника структурований таким чином, щоб студенти мали
можливість ознайомитись з основними етапами розробки програм, починаючи
від постановки задачі та закінчуючи документуванням результатів.

5
1. ПОРЯДОК ВИКОНАННЯ КУРСОВОЇ РОБОТИ

Курсова робота з дисципліни «Програмування» виконується кожним


студентом індивідуально відповідно до варіанту завдання, що видає керівник
курсової роботи. Текст програм повинен бути написаний на мові С.
Порядок виконання курсової роботи:
1. Ознайомлення з завданням (слід звернути увагу на рекомендації,
наведені на початку кожного розділу).
2. Аналіз одержаного завдання, а саме:
 визначення початкових даних;
 визначення того, що повинно бути результатом та у якому вигляді
слід його подати.
3. Створення математичної моделі (за потребою) та вибір методу
розв’язання задачі.
4. Розробка алгоритму розв’язання задачі (бажано його представити у
вигляді блок-схеми).
5. Складання тексту програми відповідно до розробленого алгоритму. При
виконанні завдання слід передбачити обробку виключних ситуацій, що
виникають під час роботи програми.
6. Тестування програми. Слід встановити межі застосування та особливості
функціонування програми при різних наборах вхідних даних.
7. Аналіз одержаних результатів (формулювання висновків щодо
достовірності одержаних результатів та повноти виконання окремого
завдання курсової роботи).
8. Складання звіту.
Консультації та контроль за ходом виконання курсової роботи
здійснюються керівником курсової роботи напротязі усього семестру.
Звіт з виконання курсової роботи надається не пізніше, ніж за тиждень до
закінчення семестру. Результати роботи слід захистити — показати на
комп’ютері виконання усіх завдань та відповісти на поставлені запитання.

6
2. СТРУКТУРА ТА СКЛАД ЗВІТУ З КУРСОВОЇ РОБОТИ

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


наступні розділи:
1. Титульний аркуш.
2. Завдання на курсову роботу.
3. Зміст.
4. Вступ.
5. Основна частина, яка для кожного завдання містить такі підрозділи:
 умова завдання;
 метод рішення (стислі відомості про особливості використаних
операторів та методів, опис вхідних та вихідних даних для
кожної функції);
 логічна структура програми (алгоритми роботи для кожної
функції, що складають програму, та їх опис);
 лістинг (текст) програми;
 тестування програми при різних наборах вхідних даних (дані
для тестування, результати тестування та аналіз одержаних
результатів).
6. Висновки.
7. Список використаних джерел.
8. Додатки (за необхідністю).
Кожен структурний елемент слід починати з нової сторінки. Великі за
обсягом розділи, такі як основна частина, необхідно
подробити на підрозділи, пункти, підпункти.

7
3. ОФОРМЛЕННЯ ПОЯСНЮВАЛЬНОЇ ЗАПИСКИ

3.1. Загальні положення


Звіт з курсової роботи повинен бути оформлений згідно вимог до
наукових робіт. Оптимальний обсяг курсової роботи — 30 друкованих сторінок,
список використаної літератури — приблизно 20 джерел.
Текст звіту слід набирати на комп’ютері та друкувати на одному боці
аркуша білого паперу формату А4 (210297 мм). Рекомендовані параметри
оформлення тексту:
 шрифт Times New Roman, 14 pt;
 інтервал між рядками — 1,5 без додаткових відступів;
 вирівнювання за шириною;
 абзацний відступ — 1,25 см;
 поля: ліве, верхнє та нижнє — не менше 20 мм, праве — не менше 10 мм.
Заголовки розділів слід друкувати великими літерами посередині сторінки.
Переноси та підкреслення слів у заголовках не допускаються. Крапку в кінці
заголовка не ставлять. Заголовки підрозділів, пунктів і підпунктів треба
починати з абзацу, друкувати маленькими літерами, крім першої великої, не
підкреслюючи, без крапки в кінці. Якщо заголовок містить два і більше речень,
то їх розділяють крапкою. Не можна розміщувати заголовок у нижній частині
сторінки, якщо після нього є тільки один рядок тексту.
Сторінки курсової роботи нумерують арабськими цифрами впродовж
усього тексту. Номер сторінки проставляють у правому верхньому куті
сторінки. Титульний аркуш включають до загальної нумерації, але номер
сторінки на ньому не проставляють. Ілюстрації і таблиці, що знаходяться на
окремих сторінках, включають до загальної нумерації сторінок [1].
Звіт до курсової роботи слід оформляти охайно, текст не повинен містити
орфографічних та пунктуаційних помилок.
3.2. Вимоги до структурних елементів пояснювальної записки
Титульний аркуш (перша сторінка курсової роботи) оформлюється
відповідно до стандарту ДНУ ім. О. Гончара. На титульному аркуші
обов’язково повинні бути підписи виконавця та керівника. Зразок оформлення
титульного аркушу наведено в додатку А.

8
Завдання на курсову роботу визначає керівник курсової роботи. Цей
розділ містить перелік питань, що підлягають розробці, а саме: умови задач з
вказівкою номера завдання та рекомендаціями щодо виконання завдань
(приклад оформлення завдання наведено в додатку Б).
Зміст включає послідовно перелічені назви усіх розділів та підрозділів
(починаючи зі вступу) з наведенням номерів сторінок, на яких починаються
матеріали розділу чи підрозділу. До змісту також включають найменування
додатків.
Вступ повинен розкривати суть курсової роботи, обґрунтовувати її
актуальність, однак не слід наводити історичні відомості, загальновідомі
визначення, опис мови програмування тощо. У вступі також слід зазначити
мету роботи. Обсяг вступу не повинен перевищувати 1 сторінку.
3.3. Вимоги до оформлення основної частини
3.3.1. Вимоги до тексту звіту
Основна частина поділяється на окремі розділи. Підрозділи нумерують
арабськими цифрами в межах кожного розділу. Номер підрозділу складається з
номера розділу та порядкового номера підрозділу, відокремлених крапкою.
У тексті роботи обов’язково слід робити посилання на джерела, з яких
використовується інформація. Посилаючись у тексті роботи на джерело,
необхідно вказувати його порядковий номер у списку використаних джерел,
виділений двома квадратними дужками [2].
3.3.2. Вимоги до оформлення ілюстрацій
Ілюстраціями є графіки, фотографії, креслення, діаграми тощо. Ілюстрації
розміщують у тексті роботи або в додатках. Їх позначають словом «рисунок» і
нумерують послідовно арабськими цифрами.
Номер повинен складатися з номера розділу та порядкового номера
рисунку, відокремлених крапкою, наприклад: Рис. 2.3 (третій рисунок другого
розділу). У додатках ілюстрації нумерують у межах кожного додатку. У роботі
ілюстрації повинні бути розміщені так, щоб їх було зручно розглядати без
повороту або з поворотом за годинниковою стрілкою.
Ілюстрації повинні обов’язково мати назву, наприклад, «Рис. 2.3 — Блок-
схема алгоритму функції factor». Ілюстрації слід розміщувати безпосередньо
після тексту, де вони згадуються вперше, або на наступній сторінці. На всі

9
ілюстрації мають бути посилання у тексті, які вказують його порядковий номер,
наприклад «блок-схема алгоритму обчислення факторіалу показана на рис. 2.3».
3.3.3. Вимоги до оформлення таблиць
Таблиці нумерують арабськими цифрами за порядком наведення в межах
розділу. Номер таблиці ставлять над таблицею. Він складається з номера
розділу і порядкового номера таблиці, відокремлених крапкою. Назву таблиці
друкують малими літерами (крім першої великої) зразу після її номера. При
перенесенні частини таблиці на другу сторінку над перенесеною частиною
таблиці пишуть слово «Продовження» із зазначенням номера таблиці,
наприклад: «Продовження табл. 2.1». Заголовок над перенесеною частиною
таблиці не розміщують. Приклад оформлення таблиці наведено нижче.

Таблиця 2.1 — Початкові дані для тестування функції delete


№ Вміст рядку s Номер позиції n Довжина підрядку l
1 Example 3 3
2 Example 4 10

3.3.4. Вимоги до оформлення формул


Набір формул здійснюється у формульному редакторі. Їх нумерують
арабськими цифрами в межах розділу. Номер формули складається із номера
розділу і порядкового номера формули в розділі, розділених крапкою. Номер
пишуть на правому боці аркуша, на рівні формули в круглих дужках.
Пояснення значень символів та числових коефіцієнтів, які входять до
формули, необхідно наводити під формулою в тій самій послідовності, в якій
вони знаходяться у формулі. Після формули ставлять кому, а перший рядок
пояснення значень починають словом «де» без двокрапки. Наприклад: «…
елементи матриці B визначають за формулою
Bi , j= Ai , j × max A1 , …, k, (2.3)
1 ≤k ≤n

де А — матриця розміром nn; i, j =1,2,…,n — індекси, що визначають номер


рядку та стовпця відповідно.»
Посилання на формулу вказують порядковим номером формули в
круглих дужках, наприклад: «...у формулі (2.3) наводиться...».
Приклад оформлення одного з пунктів основного розділу наведено в
додатку В.
10
3.4. Вимоги до оформлення заключної частини
Висновки показують результати виконаної роботи, висвітлюють
особливості функціонування та межі застосування розроблених алгоритмів і
програм, рекомендації щодо їх використання. Обсяг цієї частини не перевищує
одну сторінку.
Список використаних джерел є обов’язковою частиною курсової
роботи. Він повинен бути оформлений відповідно до вимог, наведених у
додатку Г. Його розміщують на наступній сторінці після висновків. У верхній
частині аркуша пишуть заголовок “СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ”.
Кожне джерело повинно мати порядковий номер, який позначають арабською
цифрою. Джерела розташовують у порядку першого звернення до нього в тексті
роботи.
Додатки містять пояснювальний матеріал до роботи: окремі рисунки,
блок-схеми алгоритмів, таблиці, графіки, лістинги програм, текст допоміжного
характеру тощо. Додатки оформлюють як продовження курсової роботи,
розташовуючи їх у порядку посилання на них у тексті.
Додатки слід позначати послідовно великими літерами української
абетки, за винятком літер Ґ, Є, І, Ї, Й, О, Ч, Ь, наприклад, додаток А, додаток Б
тощо.
Текст кожного додатка за необхідності може бути поділений на розділи і
підрозділи, які нумерують у межах кожного додатка. У цьому випадку перед
кожним номером розділу чи підрозділу вказують позначення додатка (літеру) і
ставлять крапку, наприклад: А.2 — другий розділ додатка А.
Ілюстрації, таблиці і формули, розміщені в додатках, нумерують у межах
кожного додатка, наприклад: рис. Д.2 — другий рисунок додатка Д.
Нумерація сторінок тексту роботи і додатків має бути наскрізною. Усі
додатки з назвою перелічують у розділі «Зміст».
3.5. Розробка алгоритму для розв’язання задачі
Алгоритм — це набір інструкцій, що описує порядок дій виконавця для
досягнення певного результату. Перед початком розробки алгоритму необхідно
чітко уяснити, що програма повинна робити, яка інформація потрібна програмі
(які дані є в наявності та які існують обмеження на ці дані), які обчислення та
інші дії програма повинна виконати та яку інформацію видати користувачу в
якості результату роботи. Після цього треба вирішити, як програма буде це

11
робити, а саме: яким буде інтерфейс користувача, як повинна бути побудована
програма, як будуть представлені дані в програмі та які методи слід
використати для обробки даних, щоб отримати остаточний результат. Алгоритм
повинен бути універсальним, тобто придатним для широкого класу вхідних
даних [3].
При графічному представленні алгоритм зображають у вигляді
послідовності зв’язаних між собою функціональних блоків, кожний з яких
відповідає виконанню однієї або декількох дій.
Потоки даних або потоки керування на схемах показують лініями. На
схемах слід уникати перехрещення ліній. Лінії завжди мають бути направлені
до центра блоку. Лінії на схемах слід розривати для того, щоб уникнути зайвих
перехрещень, дуже довгих ліній, а також у випадках, коли схема розміщена на
декількох сторінках.
Декілька виходів із блоку можна показати кількома лініями до інших
блоків або однією лінією, яку потім розгалужують на відповідну кількість ліній.
Окремі алгоритми розробляють для різних рівнів деталізації задачі.
Кількість рівнів залежить від її розмірів та складності. Рівень деталізації
повинен бути таким, щоб різні частини та взаємозв’язок між ними були
зрозумілі в цілому.
Зазначені правила діють відповідно до ДСТУ ISO 5807:2016 «Символи та
угоди щодо документації стосовно даних, програм та системних блок-схем,
схем мережевих програм та схем системних ресурсів» та розповсюджуються на
схеми, які використовують для відображення різних видів задач обробки даних
та способів їх рішень [4]. У додатку Д наведено приклад складання алгоритму.
3.6. Правила та стандарти оформлення лістингів програм
При оформленні кодів програм рекомендується додержуватись наступних
правил:
1. Наявність горизонтальних відступів в тексті програми для
відокремлення кожного блоку та вкладених до нього блоків.
2. Наявність вертикальних відступів, якими для зрозумілості розділяють
логічні блоки (наприклад, блок підключення заголовних файлів, блок
оголошення змінних, блоки операторів вибору та циклів, функції тощо).
3. Супроводження програми коментарями. Коментарями слід починати
кожну програму або функцію, для того щоб пояснити, які дії вони виконують.

12
Коментарі не повинні перефразовувати текст програми. Їх призначення —
пояснювати мету використання групи операторів, а не описувати дії, що
виконують ці оператори.
4. Під час роботи з консоллю необхідно виводити повідомлення (підказку)
для користувача про те, які дії він повинен виконати, і про те, що виводить
програма.
5. Наявність пробілів у коді. Зазвичай їх роблять довільно для покращання
«читабельності» програм.
6. Розміщення в одному рядку одного оператора. Хоча мова С дозволяє
використання в одному рядку декількох операторів, це недоцільно робити,
оскільки погіршується «читабельність» програми та виникають труднощі
визначення синтаксичних помилок.
7. Правильний вибір імен у програмі. Всі об’єкти програми (змінні,
функції, іменовані константи тощо) повинні мати обґрунтовані імена, з яких
можна зробити висновок щодо призначення того чи іншого об’єкту. Наприклад
для позначення лічильника в програмі можна використати ім’я counter або
increment. Не рекомендується іменувати об’єкти українським транслітом. Не
слід вживати однакові на вигляд імена, наприклад, A10 та AIO [9].
Лістинги повинні мати порядкову нумерацію в межах кожного розділу.
Номер лістингу повинен складатись з номеру розділу та порядкового номеру
лістингу, розділених крапкою, наприклад «Лістинг 3.2» — другий лістинг
третього розділу.
Лістинги, розміщені в додатках, нумерують у межах кожного додатка,
наприклад: «лістинг А.2 — другий лістинг додатку А.
При посиланні на лістинг необхідно писати слово «лістинг» із
зазначенням його номеру.
При оформленні лістингів слід використовувати шрифт Courier New,
розмір — 12 пт, міжрядковий інтервал — одинарний. Назва лістингу друкується
тим самим шрифтом, що і основний текст, та розміщується над лістингом через
тире після номеру лістингу. Крапка після назви не ставиться.
Приклад оформлення лістингу програми наведено у додатку Е.
Лістинги розроблених програм повинні знаходитись в окремих додатках з
обов’язковими посиланнями на них. Якщо розмір лістингу невеликий (не
більше однієї сторінки) його можна розміщувати в основному тексті. В

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

Студент під час виконання курсової роботи повинен або розв’язати та


оформити чотири стандартні задачі (завдання 1-4), або виконати та відповідним
чином оформити одне завдання з розробки інформаційної системи (лише для
студентів, які одержали
90-100 балів у попередньому семестрі). Шкала оцінювання завдань курсової
роботи знаходиться у додатку Ж.

Завдання 1 для курсової роботи знаходяться у додатку З.


Завдання 2 для курсової роботи знаходяться у додатку І.
Завдання 3 для курсової роботи знаходяться у додатку К.
Завдання 4 для курсової роботи знаходяться у додатку Л.
Завдання з розробки інформаційної системи знаходяться у додатку М.

14
Список рекомендованої літератури

1. ДСТУ 3008:2015. Звіти у сфері науки і техніки. Структура та правила


оформлення. [Чинний від 01.07.2017]. К.: ДП "УкрНДНЦ", 2016. 26 с.
(Інформація та документація).
2. ДСТУ 8302:2015. Бібліографічне посилання. Загальні вимоги та правила
складання. [Чинний від 01.07.2016]. К.: ДП "УкрНДНЦ", 2016. 16 с.
(Інформація та документація).
3. Карпенко Н. В. Розробка програм на мові С у сучасних середовищах:
навч.-метод. посіб. Д.: ЛІРА, 2016. 144 с.
4. ДСТУ ISO 5807:2016. Символи та угоди щодо документації стосовно
даних, програм та системних блок-схем, схем мережевих програм та схем
системних ресурсів (ISO 5807:1985, IDT). [Чинний від 10.10.2016]. К.: ДП
"УкрНДНЦ", 2016. 30 с. (Обробляння інформації).
5. Дейтел Х. М., Дейтел П. Дж. Как программировать на С. М.: БИНОМ-
ПРЕСС, 2009. 912 с.
6. Шилдт Г. Полный справочник по С. М.: Издательский дом “Вильямс”,
2009. 704 с.
7. Керниган Б. У., Ритчи Д. М. Язык программирования C = C programming
language. — 2-е изд. — М.: «Вильямс», 2007. — С. 304.
8. Шпак З. Я. Програмування мовою С. Львів: Видавництво Львівської
політехніки, 2011. 436 с.
9. SEI CERT C Coding Standard. URL:
https://wiki.sei.cmu.edu/confluence/display/c

15
Додаток А

Зразок оформлення титульної сторінки

ДНІПРОВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ


ІМЕНІ ОЛЕСЯ ГОНЧАРА
Кафедра електронних обчислювальних машин

КУРСОВА РОБОТА
з дисципліни «Програмування»

Студента І курсу групи ________________

Спеціальності 123 – «Комп’ютерна інженерія»

(прізвище та ініціали)
Керівник: ______________________________

Кількість балів
Національна шкала

Члени комісії:

(підпис) (прізвище та ініціали)

(підпис) (прізвище та ініціали)

(підпис) (прізвище та ініціали)

м. Дніпро

2020
16
Додаток Б

Приклад завдання на курсову роботу

Завдання 1. Робота з символьними рядками.


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

Варіант індивідуального завдання:


Функція strspn(s, s1)
Призначення: визначення довжини тієї частини рядка s, яка містить
тільки символи з рядка s1.

Рекомендації для виконання 1-го завдання:


1. Рядки для тестування функції вводити в головній програмі з
клавіатури.
2. Передбачити обробку помилок під час введення даних та особливі
випадки.
3. Розробити два варіанти заданої функції з використанням:
а) індексованих масивів;
б) вказівників.

17
Додаток В
Приклад
виконання завдання з обробки символьних рядків

1 Розробка функцій з обробки символьних рядків


1.1 Умова завдання
Скласти функцію substr(s1, s2, n, l) для обробки символьних рядків та
програму для перевірки працездатності функції. Призначення функції:
виділення з рядку s1 підрядку s2, починаючи з позиції n, довжиною l.
1.2 Опис методу рішення
Символьний рядок у мові C представляється в пам'яті як масив символів,
останнім елементом якого є символ '\0' (байт із кодом 0) — ознака кінця рядку
[3, 5-8]. Рядок, як і будь-який інший масив можна обробляти або традиційним
методом — з використанням операції індексації, або через вказівники, з
використанням операцій адресної арифметики. Довжина рядку заздалегідь
невідома, тому цикли повинні бути організовані не з лічильником, а до появи
ознаки кінця рядку.
Функція повинна реалізовувати поставлене завдання та мати
універсальний характер. Це означає, що функцію можна буде, наприклад,
перенести без змін у будь-яку іншу програму, якщо специфікації функції
задовольняють умовам завдання. При помилковому завданні параметрів
функція не повинна аварійно завершувати програму. Вона повинна повертати
якесь прогнозоване значення, за яким та функція, що викликала дану функцію,
може зробити висновок про помилку або про особливий випадок.
Визначимо склад параметрів функції:
int substr (s1, s2, n, l);
де s1 — рядок, з якого вибирають символи; s2 — рядок, у який записують
символи; n — номер символу в рядку s1, з якого починається підрядок; l —
довжина вихідного рядку.
Встановимо такі можливі значення, що буде повертати функція:
1 (завдання параметрів правильне) і 0 (завдання неправильне). Ці значення при
звертаннях до функції можна буде інтерпретувати як true або false.
Можливі такі варіанти завдання параметрів:
1) n + l <= довжини рядка s1. Повністю правильне завдання параметрів. В
масив s2 буде записано l символів.
18
2) n + l > за довжину рядка s1. За умови n < довжини рядка s1 —
правильне завдання параметрів, але довжина вихідного рядку буде
менша, ніж l.
3) n >= довжини рядка s1. Неправильне завдання параметрів. Вихідний
рядок буде порожнім.
4) n < 0 або l <= 0. Неправильне завдання параметрів. Вихідний рядок буде
порожнім.
Функція повинна точно інтерпретувати задані параметри як
правильні/неправильні та здійснювати вибір реакції на неправильне завдання
параметрів. Можливий також випадок, коли вихідний рядок вийде більшої
довжини, ніж для нього відведено місця в пам’яті. Однак, оскільки функції
невідомий розмір пам’яті, відведений для рядку s2, функція не завжди може
обробити цей випадок
[3, 5-9].
1.3 Опис логічної структури
Програма складається з одного програмного модуля — файл lab1.c. До
складу модуля входять три функції — main(), substr_mas() і substr_ptr().
Глобальних змінних у програмі немає. Макроконстантою N визначена
максимальна довжина рядку — 80.
Опис алгоритму функції main()
Функція main() є головною функцією програми, вона призначена для
введення початкових даних, виклику інших функцій і виведення результатів. У
функції визначені такі змінні:
 ss і dd — вхідний і вихідний рядки відповідно;
 n — номер символу, з якого повинен починатися вихідний рядок;
 l — довжина вихідного рядка.
Функція видає запит користувачу та ініціалізує значеннями, введеними
користувачем з клавіатури, змінні ss, n та l. Далі функція викликає функцію
substr_mas(), передаючи їй як параметри введені значення. Якщо функція
substr_mas() повертає 1, виводяться на екран вхідний і вихідний рядки, якщо 0
— виводиться повідомлення про помилку. Ті ж самі дії виконують для функції
substr_ptr(). Блок-схема алгоритму функції main() наведена у додатку Д.
Опис алгоритму функції substr_mas()

19
Функція substr_mas() виконує поставлене завдання через індексовані
масиви. Її параметри: s1 і s2 —вказівники на вхідний і вихідний рядки ss[N] та
dd[N], відповідно. Локальні змінні i та j використовуються як індекси в масивах.
Функція перевіряє значення параметрів. Якщо n < 0 або l <= 0, у перший
елемент масиву s2 записується ознака кінця рядку і функція повертає 0.
При правильному завданні (n >= 0 або l > 0), функція переглядає n
символів вхідного рядку. Якщо при цьому буде знайдена ознака кінця рядку, це
— випадок 3, описаний вище. При цьому в перший елемент масиву s2
записується ознака кінця рядку і функція substr_mas() повертає 0.
Якщо ознака кінця в перших n символах не знайдена, виконується цикл.
Кожна ітерація цього циклу копіює один елемент вхідного масиву у вихідний.
Якщо елемент є ознакою кінця рядку (випадок 2), то функція негайно
закінчується, повертаючи 1. Якщо в циклі не зустрінеться кінець рядку, цикл
завершиться після l ітерацій. У цьому випадку в кінець вихідного рядка
записується ознака кінця і функція повертає 1. Схема алгоритму функції
substr_mas() наведена у додатку Д.
Опис алгоритму функції substr_ptr()
Функція substr_ptr() працює аналогічно функції substr_mas(). Лістинги
функцій substr_mas() та substr_ptr() наведені у додатку Е.
1.4 Дані для тестування
Тестування повинне забезпечити перевірку працездатності функцій для
всіх варіантів вхідних даних. Вхідні дані, на яких проводилось тестування,
зведені в таблицю 1.1. Результати тестування програми у тому вигляді, в якому
вони представлені на екрані після виконання програми, наведені на рис. 1.1 та
1.2.
Аналіз результатів проведеного тестування дозволяє зробити висновок,
що програма коректно працює при всіх варіантах завдання початкових даних.
Обмеження на роботу програми: вхідний та вихідний рядки не повинні
перевищувати 80 символів.
Таблиця 1.1 — Початкові дані для тестування функцій substr_mas() та
substr_ptr()

20
Варіант s1 n l s2
012345 2 2 23
1 012345 0 1 0
012345 0 6 012345
012345 5 3 5
2 012345 2 6 2345
012345 0 7 012345
3 012345 8 2 пусто
012345 -1 2 пусто
4 012345 5 0 пусто
012345 5 -1 пусто

a) б)
Рис. 1.1. — Результати тестування програми
з коректними значеннями початкових даних:
а — випадок 1 (n=6, l=5); б — випадок 2 (n=3, l=6)

а) б)
Рис. 1.2 — Результати тестування програми
з некоректними значеннями початкових даних:
а — випадок 3 (n=10, l=3); б — випадок 4 (n=2, l=–1)

21
Додаток Г
Зразок оформлення бібліографічного опису
різних видів джерел

Книги

Один автор
1. Шилдт Г. Полный справочник по С. М.: Издательский дом “Вильямс”,
2002. 704 с.

Два або три автори


2. Керниган Б., Ритчи Д. Язык программирования Си. М., СПб., Киев:
Издательский дом «Вильямс», 2009. 289 с.
3. Дейтел, Х. М., Дейтел П. Дж. Как программировать на С. М.: БИНОМ-
ПРЕСС, 2009. 912 с.
4. Бабак В. П., Хандецький В. С., Шрюфер Е. Обробка сигналів. К.: Либідь,
1996. 392 с.

Чотири автори
5. Клименко М. І., Панасенко Є. В., Стреляєв Ю. М., Ткаченко І. Г.
Варіаційне числення та методи оптимізації: навч. посіб. Запоріжжя: ЗНУ,
2015. 84 с.

П’ять і більше авторів


6. Операційне числення: навч. посіб. / С. М. Гребенюк та ін. Запоріжжя:
ЗНУ, 2015. 88 с.

Автори та редактори/упорядники
7. Дахно І. І., Алієва-Барановська В.М. Право інтелектуальної власності:
навч. посіб. / за ред. І. І. Дахна. Київ: ЦУЛ, 2015. 560 с.

Без автора
8. Антологія української літературно-критичної думки першої половини
ХХ століття / упоряд. В. Агеєва. Київ: Смолоскип, 2016. 904 с.

22
Стандарти
9. ДСТУ 7152:2010. Видання. Оформлення публікацій у журналах і
збірниках. [Чинний від 2010-02-18]. Вид. офіц. Київ, 2010. 16 с.
(Інформація та документація).
10.ДСТУ 3582:2013. Бібліографічний опис. Скорочення слів і
словосполучень українською мовою. Загальні вимоги та правила (ISO
4:1984, NEQ; ISO 832:1994, NEQ). [На заміну ДСТУ 3582-97; чинний від
2013-08-22]. Вид. офіц. Київ: Мінекономрозвитку України, 2014. 15 с.
(Інформація та документація).

Статті в журналах на наукових збірках


11.Соколова Ю. Особливості впровадження проблемного навчання хімії в
старшій профільній школі. Актуальні проблеми та перспективи розвитку
медичних, фармацевтичних та природничих наук: матеріали III регіон.
наук.-практ. конф., м. Запоріжжя, 29 листоп. 2014 р. Запоріжжя, 2014. С.
211–212.
12.Левчук С. А., Хмельницький А. А. Дослідження статичного
деформування складених циліндричних оболонок за допомогою матриць
типу Гріна. Вісник Запорізького національного університету. Фізико-
математичні науки. Запоріжжя, 2015. № 3. С. 153–159.

Електронні ресурси
13.Влада очима історії : фотовиставка. URL:
http://www.kmu.gov.ua/control/uk/photogallery/gallery?
galleryId=15725757& (дата звернення: 15.11.2017).
14.Шарая А. А. Принципи державної служби за законодавством України.
Юридичний науковий електронний журнал. 2017. № 5. С. 115–118. URL:
http://lsej.org.ua/5_2017/32.pdf.
15.Яцків Я. С., Маліцький Б. А., Бублик С. Г. Трансформація наукової
системи України протягом 90-х років ХХ століття: період переходу до
ринку. Наука та інновації. 2016. Т. 12, № 6. С. 6–14. DOI:
https://doi.org/10.15407/scin12.06.006.

23
Додаток Д
Приклад запису алгоритмів для обчислень

Рис. Д.1. — Блок-схема алгоритму функції main()


24
Рис. Д.2 — Блок-схема алгоритму виділення підрядка
з використанням методу індексованих масивів
25
Додаток Е
Приклад оформлення лістингів
Лістинг Е.1 — Лістинг алгоритму розв’язання задачі
з обробки символьних рядків

#include "stdafx.h"
#include <stdio.h>
#include <clocale>
#include <conio.h>
#define N 80
int substr_mas(char s1[N], char s2[N], int n, int l);
int substr_ptr(char *s1, char *s2, int n, int l);

/* Головна функція програми */

int main()
{
char ss[N], dd[N];
int n, l;
setlocale(LC_ALL, "Russian");
printf(" Введіть рядок:\n ");
gets_s(ss);
printf(" початок=");
scanf_s("%d", &n);
printf(" довжина=");
scanf_s("%d", &l);
printf(" Масиви:\n");
if (substr_mas(ss, dd, n, l))
printf(" %s\n", dd);
else
printf(" Помилка! %s\n", dd);
dd[0] = '\0';
printf(" Адресна арифметика:\n");
if (substr_ptr(ss, dd, n, l))
printf(" %s\n", dd);
else
printf(" Помилка! %s\n", dd);
_getch();

return 0;
}

/********************************************************/
/* Функція виділення підрядка (масиви) */

/********************************************************/

int substr_mas(char s1[N], char s2[N], int n, int l)


{
int i, j;
if ((n < 0) || (l <= 0)) //перевірка випадку 4
{
26
s2[0] = 0;
return 0;
}
for (i = 0; i <= n; i++) //вихід на n-ий символ
if (s1[i] == '\0') //перевірка випадку 3
{
s2[0] = 0;
return 0;
}
for (i--, j = 0; j<l; j++, i++) //перезапис символів
{
s2[j] = s1[i];
if (s2[j] == '\0') //перевірка випадку 2
return 1;
}
s2[j] = '\0'; //запис ознаки кінця у вихідний рядок
return 1;
}

/********************************************************/
/* Функція виділення підрядка (адресна арифметика) */

/********************************************************/
int substr_ptr(char *s1, char *s2, int n, int l)
{
if ((n<0) || (l <= 0)) //перевірка випадку 4
return s2[0] = 0;
//вихід на n-ий символ або на кінець рядка
while (n-- && *s1++)
if (!*s1) //перевірка випадку 3
return s2[0] = 0;
while (l-- && *s1) //перезапис символів
*s2++ = *s1++;
*s2 = 0; //запис ознаки кінця у вихідний рядок
return 1;
}

27
Додаток Ж
Шкала оцінювання курсової роботи

Таблиця Ж.1.  Максимальна кількість балів


для оцінювання курсової роботи
Захист
1 2 3 4
курсової роботи Разом
завдання завдання завдання завдання
(чотири завдання)
10 14 16 20 40 100

або

Завдання з розробки ІС (додаток М) Захист курсової роботи Разом


60 40 100

Оцінювання кожного завдання складається з оцінювання окремих видів


робіт та захисту цього завдання. Розподіл балів за окремими видами робіт
можна побачити в таблицях Ж.2-Ж.5.

Таблиця Ж.2.  Розподіл балів для оцінювання


виконання 1 завдання (за умови його працездатності)
Оформлення
Функція з Функція з Наочна форма
завдання в звіті Захист
індексованими вказівникам представленн Разом
(повнота, завдання
масивами и я результатів
стандарти)
4 4 3 3 6 20

Таблиця Ж.3.  Розподіл балів для оцінювання


виконання 2 завдання (за умови його працездатності)
Наочна
Обробка Рандомне Введення Оформлення
форма
виключної заповнення значень завдання в Захист
представлен Разом
ситуації числами з елементів з звіті (повнота, завдання
ня
5<N<11 інтервалу клавіатури стандарти)
результатів
3 4 4 3 3 7 24

28
29
Таблиця Ж.4.  Розподіл балів для оцінювання виконання 3 завдання
(за умови його працездатності)
Збереження Наочна
Оформлення
Обробка Введення результатів форма
завдання в Захист
виключних даних з роботи представлен Разом
звіті (повнота, завдання
ситуацій файлу програми в ня
стандарти)
файл результатів
4 4 4 3 4 7 26

Таблиця Ж.5.  Розподіл балів для оцінювання виконання 4 завдання


(за умови його працездатності)
Обробка Збереженн
Наочна
виключних я Оформлення
Робота з Введення форма
ситуацій, у результатів Сортуванн завдання в Захист
командним даних з Пошук представлен Разом
тому числі, роботи я звіті (повнота, завдання
рядком файлу ня
звільнення програми в стандарти)
результатів
пам’яті файл
2 3 2 3 3 3 3 4 7 30
Додаток З
Завдання 1. Робота з символьними рядками
Мета: поглиблення і закріплення теоретичних знань та набуття
практичних навичок роботи з символьними рядками та забезпечення
функціональної модульності програми.
Постановка задачі: Скласти функцію для обробки символьних рядків та
програму для перевірки працездатності функції. За зразок можна брати
бібліотечні функції обробки рядків мови С, але не використовувати їх в своїй
функції.

При виконанні 1-го завдання необхідно:


1. Рядки для тестування функції вводити в головній програмі з клавіатури.
2. Передбачити обробку помилок в завданні параметрів та особливі випадки.
3. Розробити два варіанти заданої функції з використанням:
а) індексованих масивів;
б) вказівників.

Варіанти завдання:
1. Функція insert_space(s, l)
Призначення: доведення рядку s до довжини l шляхом рівномірного вставлення
пробілів між словами.
2. Функція remove_spaces(s)
Призначення: вилучає в заданому рядку символів всі зайві пробіли, замінюючи
декілька підряд розташованих пробілів на один пробіл.
3. Функція change_letter(s)
Призначення: замінює в рядку символів s першу букву кожного слова на
велику, якщо вона є малою літерою. Функція повинна повертати кількість
зроблених замін.
4. Функція conversion_2_to_10(s)
Призначення: обчислює десяткове значення цілого числа за заданим рядком
символів s, який є записом цього числа в двійковій системі числення.
5. Функція conversion_10_to_2(s)
Призначення: обчислює двійкове значення цілого десяткового числа, що задане
рядком символів s.
6. Функція conversion_2_to_16(s)
Призначення: обчислює шістнадцяткове значення цілого числа за заданим
рядком символів s, який є записом цього числа в двійковій системі числення.
7. Функція conversion_2_to_8(s)
Призначення: обчислює вісімкове значення цілого числа за заданим рядком
символів s, який є записом цього числа в двійковій системі числення.
8. Функція type(s)
Призначення: визначає тип рядка s (можливі типи — рядок букв, десяткове
число, шістнадцяткове число, вісімкове число, двійкове число).
9. Функція simile_count(s1, s2)
Призначення: порівнює рядки s1 та s2 з метою визначення кількості однакових
символів у цих рядках (кожен символ потрібно враховувати тільки один раз).
Наприклад, є рядки qwerty та qwwrr. Кількість однакових символів = 3.
10. Функція try_simile(s1, s2)
Призначення: порівнює рядки s1 та s2 з метою визначення — чи можна з
символів, що знаходяться в рядку s2, утворити рядок s1. Наприклад, є рядки
qwerty та ewqryt, тоді відповідь — можна.
11. Функція centre(s1, s2)
Призначення: центрування — розміщення рядку s1 в середині рядку s2.
12. Функція index(s, n)
Призначення: визначає номер позиції символу, що стоїть на початку n-го слова
в рядку s.
13. Функція paste(s, s1, n)
Призначення: вставляє в рядок s підрядок s1, починаючи з позиції n.
14. Функція length(s, n)
Призначення: визначає довжину слова з номером n в рядку s.
15. Функція word(s, n, l)
Призначення: виділяє кольором l слів в рядку s, починаючи зі слова з номером
n.
16. Функція rotation(s, n, l)
Призначення: у рядку s, починаючи з позиції n виділити підрядок s1 (довжиною
l) та обернути його. Наприклад, рядок s – qwerty. Починаючи з позиції n=2
виділяємо підрядок s1 довжиною l=3 (ert). При обертанні підрядка s1 отримаємо
рядок qwtrey.

32
17. Функція quantity(s)
Призначення: обчислює довжину найдовшої послідовності підряд
розташованих пробілів.
18. Функція latin(s)
Призначення: обчислює кількість слів в заданому рядку символів, що
складаються тільки з латинських букв.
19. Функція digit_histogram(s)
Призначення: побудова гістограми кількості однакових символів-цифр
(гістограми малювати горизонтальними лініями). Наприклад, гістограма рядку
3sqw34ad30033r733wer7 має вигляд:
0  **
3  *******
4*
7  **
20. Функція coding(s)
Призначення: кодує символьний рядок s за наступним правилом:
ab
bc
cd
...
za
інший символ  *
Наприклад, рядок qwerty234 після кодування прийме вигляд: rxfsuz***
21. Функція find(s, s1)
Призначення: пошук входження в рядок s заданої фрази (послідовності
символів) s1.
22. Функція position(s, t)
Призначення: повертає номер останнього входження символу t в рядок s. Якщо
символ в рядок не входить, то функція повертає значення -1.
23. Функція digit(s)
Призначення: визначає довжину найдовшої послідовності цифр в символьному
рядку.
24. Функція quantity(s, p)
Призначення: підраховує кількість входжень підрядку p у рядок s.
33
25. Функція сonversion(s)
Призначення: перетворює всі літери v, за якою стоїть літера a, на символ *.
Повертає загальну кількість замін.
26. Функція pairwise_replace(s)
Призначення: у рядку s поміняти місцями кожні два символи. Наприклад, є
рядок s – 123456789. Після роботи функції отримаємо рядок – 214365879. Якщо
кількість символів непарна, то останній символ залишається на своєму місці.
27. Функція letter_histogram(s)
Призначення: побудова гістограми кількості однакових символів-літер
(гістограми малювати горизонтальними лініями). Наприклад, гістограма рядку
3srw34ad300aar733wer7 має вигляд:
a  ***
d*
e*
r  ***
s*
w  **
28. Функція replace_hi(s)
Призначення: заміна у рядку s окремо розташованих слів hi на hello.
Наприклад, є рядок:
hi Yulia, hi Helen, I just started hiking.
Після заміни одержимо:
hello Yulia, hello Helen, I just started hiking.
29. Функція replace_pc(s)
Призначення: заміна у рядку s окремо розташованих слів computer на PC.
Наприклад, є рядок:
Protects your computer as you are working, surfing and playing.
Після заміни одержимо:
Protects your PC as you are working, surfing and playing.
30. Функція number_conversation(s)
Призначення: записує словами ціле число n (n<1000). Наприклад, введено число
251. У результаті виконання програми маємо «двісті п’ятдесят один».

34
Додаток І
Завдання 2. Робота з двовимірними масивами
Мета: поглиблення і закріплення теоретичних знань та набуття
практичних навичок роботи з двовимірними масивами.
Постановка задачі: Задано двовимірний масив дійсних чисел розміром N
 N (6 <= N <= 10). Реалізувати його обробку, як вказано у варіанті завдання.

При виконанні 2-го завдання необхідно:


1. Передбачити функцію для ручного введення елементів масиву.
2. Передбачити функцію для автоматичного заповнення масиву А даними
через використання генератору випадкових чисел.
3. Передбачити обробку помилок під час введення даних та особливі
випадки.

Варіанти завдання:
1. Отримати нову матрицю шляхом ділення всіх елементів даної матриці
на її найменший елемент.
2. Сформувати вектор з добутків елементів стовпців та знайти середнє
арифметичне цього вектору.
3. Знайти мінімальне з чисел, що зустрічається у матриці більше одного
разу.
4. Знайти максимальне з чисел, що зустрічається у матриці більше одного
разу.
5. Знайти найбільші за модулем елементи кожного рядку матриці та їх
координати. Сформувати з цих елементів вектор та визначити суму
елементів вектору.
6. Знайти найменші за модулем елементи кожного стовпця матриці та їх
координати. Сформувати з цих елементів вектор та визначити суму
елементів вектору.
7. Знайти середнє арифметичне елементів кожного з парних стовпців
матриці.
8. Замінити нулями всі елементи матриці, що розташовані на головній
діагоналі та вище неї (головна діагональ на рис. І.1 позначена чорним
кольором + області 1 і 4).
35
Рисунок І.1. – Матриця до завдань № 8-15

9. Замінити нулями всі елементи матриці, що розташовані нижче головної


діагоналі (області 2 і 3).
10. Замінити нулями всі елементи матриці, що розташовані вище побічної
діагоналі (вище клітинок матриці, позначених на рис. І.1 синім
кольором — області 1 і 2).
11. Замінити нулями всі елементи матриці, що розташовані нижче побічної
діагоналі (нижче клітинок матриці, позначених на рис. І.1 синім
кольором — області 3 і 4).
12. Замінити нулями всі елементи матриці, що знаходяться в області 1
матриці, наведеної на рис. І.1).
13. Замінити нулями всі елементи матриці, що знаходяться в області 2
матриці, наведеної на рис. І.1).
14. Замінити нулями всі елементи матриці, що знаходяться в області 3
матриці, наведеної на рис. І.1).
15. Замінити нулями всі елементи матриці, що знаходяться в області 4
матриці, наведеної на рис. І.1).
16. Поміняти місцями значення елементів, що стоять на головній та
побічній діагоналях.
17. Поміняти місцями рядки матриці, як показано на рис. І.2 (а).
18. Поміняти місцями стовпці матриці, як показано на рис. І.2 (б).
19. Для кожного елемента матриці визначити позиції елементів з такою же
сумою цифр.
20. Замінити всі додатні парні числа на числа, які сформовані їх записами в
оберненому порядку.
21. Упорядкувати рядки матриці за зростанням значень максимальних
елементів у рядках.

36
а) б)
Рисунок І.2. – Матриця до завдань № 17 (а) та № 18 (б)

22. Виконати поворот двомірної квадратної матриці на 90° за рухом


годинникової стрілки, як показано на рис. І.3 (а).

а) б)
Рисунок І.3. – Матриця до завдань № 22 (а) та № 23 (б)

23. Виконати поворот двомірної квадратної матриці на 90° проти руху


годинникової стрілки, як показано на рис. І.3 (б).
24. Сформувати вектор з різниць найбільших та найменших значень
елементів рядків.
25. Сформувати вектор з різниць найбільших та найменших за модулем
значень елементів стовпців.
26. Поміняти місцями рядок, що містить максимальний елемент матриці з
рядком, що містить мінімальний елемент.
27. Знайти суму додатних парних елементів у кожному рядку та
сформувати з них вектор.
28. Знайти суму елементів, що стоять під головною діагоналлю у рядках,
що починаються з від’ємного числа.
29. Знайти суму елементів, що стоять над головною діагоналлю у рядках,
що починаються з парного числа.
30. Отримати нову матрицю шляхом множення всіх елементів даної
матриці на її найбільший за модулем елемент.

37
Додаток К
Завдання 3. Робота з бітами
Мета: поглиблення і закріплення теоретичних знань та набуття
практичних навичок роботи з порозрядними логічними операціями та
операціями зсуву.
Постановка задачі: в завданні передбачається використання побітових
операцій. Дані вводяться з файлу. Результат роботи програми слід вивести на
монітор та записати в файл. Імена вхідного та вихідного файлів слід задавати в
командному рядку.
Рекомендації для виконання 3-го завдання:
1. При відкритті чи створенні будь-яких файлів необхідно перевіряти
наявність помилок введення-виведення.
2. Результат виконання завдання на моніторі повинен бути представлений
в наочній формі. Наприклад, виконання побітової операції «І» між числами
57894 і 2 можна представити наступним чином:
57894 = 11100010 00100110
& 2 = 00000000 00000010
Результат: 2 = 00000000 00000010

Варіанти завдання:
1. Задано масив цілих чисел. Скласти функцію unpack_char(), яка
приймає цілу двобайтову змінну типу unsigned та «розпаковує» з неї два
символи. Програма повинна друкувати початкові змінні в десятковому та
двійковому представленні, а отримані символи — у символьному, десятковому
та двійковому представленні.
2. Скласти функцію, яка переставляє розряди в двійковому представленні
цілого додатного числа М в зворотному порядку. Отримане число приймається
за значення функції В(М). Скласти програму для виведення у файл значень
функції В(М) на відрізку [512, 1023].
3. Задано одномірний масив чисел. Визначити суму тих елементів масиву,
двійкові коди яких одночасно містять одиницю у 1 та 5 бітах. В двійковому
представленні суми визначити кількість розрядів, що дорівнюють 0.
4. Задано масив з 12 беззнакових чисел. Скласти функцію, що визначає,
чи містить двійковий код цілого беззнакового числа М нулі в розрядах m та n.
38
За допомогою цієї ж функції визначити кількість елементів масиву, двійкові
коди яких містять 0 у 1 та 5 бітах.
5. Задано масив зі знакових чисел. Біти від’ємних чисел зсунути вправо на
два розряди, а 0 та 4 біти додатних чисел встановити в 0. Елементи отриманого
масиву представити у шістнадцятковому, десятковому та двійковому вигляді.
6. Задано масив з 10 чисел. Скласти функцію, що інвертує біти
молодшого байту цілого числа М, який є параметром функції. Застосувати цю
функцію до всіх елементів масиву. Результати представи-ти у
шістнадцятковому, десятковому та двійковому вигляді.
7. Скласти функцію, що переставляє півбайти в двійковому представленні
символу. Застосувати цю функцію до всіх символів заданого рядку. Результати
представити у символьному, шістнадцятковому та двійковому вигляді.
8. Задано масив беззнакових чисел. Коди парних елементів масиву
зсунути на 2 розряди вліво, а в непарних елементах встановити в 1 біти
молодшого півбайта. Елементи отриманого масиву представити у
шістнадцятковому, десятковому та двійковому форматі.
9. Задано масив чисел. Визначити суму додатних елементів, що містять 1
у 7, 5 та 3 бітах та суму від’ємних елементів. Перевірити наявність 0 у від’ємній
сумі в 6-му, 4-ому та 2-му бітах.
10. Скласти програму, що кодує текстовий файл шляхом перестановки
парних та непарних бітів. Передбачити можливість декодування.
11. Скласти програму, що кодує текстовий файл, шляхом зсуву бітів
символу вправо на m позицій. Передбачити можливість декодування.
12. Визначити елементи заданого масиву цілих чисел, в двійковому
представленні яких міститься найбільша та найменша кількість одиниць. Для
підрахунку кількості одиниць в двійковому представленні цілого числа
потрібно скласти функцію.
13. Задано масив цілих чисел. Скласти функцію, що визначає символ,
утворений бітами числа, які у двійковому його представленні займають з 4 по
11 позицію. Результат представити у вигляді символьного масиву.
14. Задано масив цілих чисел. Скласти функцію, яка циклічно зсуває біти
кожного елементу масиву вліво на n розрядів.
15. Виконати сортування масиву цілих чисел у порядку зростання кількості
нулів, що містяться у двійковому представленні кожного елемента масиву.

39
16. Встановити 1 в четвертих бітах та 0 — в сьомих бітах всіх елементів
масиву цілих чисел та визначити суму елементів отриманого масиву. Для
установлення n-го біта цілого числа в 1 та m-го біта в 0 скласти функцію.
17. Скласти функцію inv(x, q, m), що повертає значення числа x з
інвертованими m бітами, починаючи з позиції q.
18. Скласти програму, що кодує текстовий файл шляхом перестановки
першого та останнього бітів у байті. Передбачити можливість декодування. Для
кодування символу скласти функцію.
19. Байти елементів масиву цілих чисел, в сьомих бітах яких міститься 1,
зсунути вправо на один розряд. Визначити середнє арифметичне елементів
отриманого масиву. Для перетворення цілого числа, в n-му біті якого міститься
одиниця, зсувом вправо на m розрядів, скласти функцію.
20. Виконати сортування масиву символів у порядку зменшення кількості
одиниць, що містяться у двійковому представленні кожного символу.
21. Встановити 0 в 5-му біті всіх елементів масиву цілих чисел з парним
індексом та 1 в 4-му біті всіх непарних елементів масиву. Визначити суму
елементів отриманого масиву.
22. Задано масив з 10 цілих чисел. Інвертувати біти всіх додатних чисел
(окрім знакового біту) та знайти суму елементів отриманого масиву. Визначити,
чи містить результат одиницю у 2 та 4 бітах.
23. Скласти програму кодування/декодування текстового файлу за
наступним алгоритмом: над кожним символом з файлу виконується побітова
операція «виключне або» з заданим паролем, тобто Свих=Свх ^ p, где Свих —
символ, що одержано після кодування, Свх — символ, що потрібно закодувати, p
— пароль (число). Пароль та вибір режиму роботи (кодування/декодування)
слід задавати з клавіатури.
24. Скласти програму, що одержує два символи з клавіатури та передає їх
функції pack_char(), яка упаковує їх в одну змінну типу unsigned int. Програма
повинна виводити початкові символи та результат в десятковому та двійковому
представленні.
25. Скласти функцію, що переставляє старший та молодший півбайти в
символі. Використати цю функцію в програмі, що кодує текстовий файл,
шляхом перестановки півбайтів в кожному символі текстового файлу.

40
Передбачити можливість декодування. Режими роботи
(кодування/декодування) вводяться з клавіатури.
26. Задано 2 масиви по 10 цілих чисел. Потрібно порозрядно порівняти
відповідні елементи масивів та сформувати новий масив, за наступним
правилом: якщо у елементів, що порівнюють, в однакових розрядах стоять
однакові числа (0 та 0 або 1 та 1), то у відповідному розряді нового числа слід
поставити 1, інакше -- 0 (рис. К.1). Результат представити в 10-ковому та 16-
ковому форматах.

Рисунок К.1. Утворення нового числа з двох заданих


(до завдання № 26)

27. Перемножити елементи масиву цілих чисел, коди яких містять в 6-му
біті 0. З результату виділити молодший байт та визначити символ, якому він
відповідає.
28. Задано масив з 10 цілих чисел. Інвертувати біти всіх від’ємних чисел
(окрім знакового біту) та знайти суму елементів отриманого масиву. Визначити,
чи містить результат нуль у 2 та 4 бітах.
29. Задано масив з 10 цілих чисел. Інвертувати біти молодших півбайтів
всіх елементів масиву, знайти суму елементів отриманого масиву та визначити
кількість нулів у даному числі.
30. Скласти програму, що кодує рядок символів шляхом перестановки
першого та останнього бітів у байті, 2-го та передостаннього тощо.
Передбачити можливість декодування.

41
Додаток Л
Завдання 4. Робота зі структурами. Сортування та пошук даних
Мета: поглиблення і закріплення теоретичних знань та набуття
практичних навичок роботи зі складними типами даних, що зберігаються в
файлі; ознайомлення з методами сортування та пошуку даних.
Постановка задачі: Дані зберігаються в файлі на диску. Слід реалізувати
їх обробку, сортування та пошук даних, як вказано у варіанті завдання.
При виконанні завдання необхідно:
1. Ім’я файлу задається в командному рядку. Якщо воно там не було
задано, то після відповідного запиту вводиться користувачем.
2. Використовувати динамічне виділення пам’яті (розмір масиву
задається користувачем після відповідного запиту). Після використання масиву
слід обов’язково звільнити пам’ять.
3. Пошук інформації здійснювати двома методами — лінійним та
бінарним.
4. Вихідну інформацію виводити у вигляді таблиці і записувати до
файлу.
5. Інформацію для пошуку слід вводити з клавіатури.

Варіанти завдання:
1.Є інформація про групу туристів: прізвище, ім’я, стать, вік, місце роботи,
адреса (місто). Упорядкувати туристів за прізвищем методом вставок (Insertion
sort). Надрукувати усіх жінок і чоловіків, вік яких перевищує 30 років.
Організувати пошук туристів за прізвищем.
2.Є інформація про деталь: назва, вага однієї деталі в кг, кількість, статус
(замовлена чи ні). Визначити назви деталей, екземпляри яких найважчі та
найлегші та розташувати інформацію за вагою у зростаючому порядку методом
бульбашки (Bubble sort). Організувати пошук деталі за назвою.
3.Є інформація про альбоми, видані музичним гуртом: назва альбому, рік
випуску, кількість пісень, кількість кліпів, компанія, що виконувала звукозапис,
тираж. Знайти компанію (компанії), з якою група працювала найбільше (за
кількістю альбомів) та обчислити загальну кількість пісень і кліпів.
Упорядкувати інформацію за тиражом методом вибору (Selection sort).
Організувати пошук за назвою альбому.
42
4.Є інформація про видачу журналу читачам: назва журналу, номер, рік
видання, прізвище читача, вік, адреса, телефон. Знайти журнал, що видавався
найбільшій кількості читачів. Упорядкувати інформацію за прізвищем читачів
методом швидкого сортування (Quick sort). Організувати пошук за назвою
журналу.
5.Є інформація про книги: прізвище автора, назва книги, рік видання, назва
видавництва, кількість сторінок. Знайти книги даного автора, видані з 1990 по
1997 рік включно. Упорядкувати інформацію за роком видання методом Шелла
(Shell sort). Організувати пошук за прізвищем автора.
6.У комп’ютерній фірмі є інформація про товари (процесори, материнські
плати, відеокарти, модулі пам’яті, жорсткі диски, корпуси, DVD-RW, монітори)
в такому вигляді: назва товару, кількість одиниць товару, вхідна вартість
одиниці товару, роздрібна ціна, гарантія (число місяців). Надрукувати
конфігурації найдешевшого і найдорожчого комплектів (по роздрібній ціні) з
цих груп товарів та знайти прибуток фірми від продажу таких комплектів.
Упорядкувати інформацію за кількістю одиниць товару методом шейкерного
сортування (Cocktail sort). Організувати пошук за назвою товару.
7.Є інформація про експорт товарів: назва товару, країна-експортер, країна-
імпортер, кількість (од.), ціна за одиницю товару, місяць поставки. Надрукувати
країни, до яких експортувався даний товар (вводиться з клавіатури) з квітня по
вересень. Знайти країну, яка імпортує найбільшу кількість товару.
Упорядкувати інформацію за назвою товару методом швидкого сортування
Quick Sort. Організувати пошук за країною-експортером.
8.Є група футболістів. Для кожного футболісту групи визначено: прізвище,
громадянство, вік, зріст, вага, спеціалізація, країна, за яку він грає на даний
момент. Знайти наймолодшого нападника і найстаршого захисника та
упорядкувати групу футболістів за віком методом бульбашки (Bubble sort).
Організувати пошук за громадянством.
9.Є інформація про автомобілі: номер (4 букви і 4 цифри, наприклад,
АІ7695ЕК), прізвище власника, марка автомобіля, рік випуску, об’єм двигуна.
Знайти прізвища власників автомобілів заданої марки. Упорядкувати
інформацію за роком випуску автомобіля методом шейкерного сортування
(Cocktail sort). Організувати пошук за номером автомобіля.

43
10. Є інформація про автомобілі: номер (4 букви і 4 цифри, наприклад,
АІ7695ЕК), прізвище власника, марка автомобіля, рік випуску, об’єм двигуна.
Знайти власників автомобілів з номером, в якому сума перших 2-ох цифр
дорівнює сумі останніх 2-ох цифр. Упорядкувати послідовність за об’ємом
двигуна методом Шелла (Shell sort). Організувати пошук за прізвищем власника
автомобіля.
11. Для групи футболістів визначено: прізвище, громадянство, вік, зріст,
вага, амплуа, країна, де грає. Знайти найвищого воротаря і футболістів, які
грають не в своїй країні та упорядкувати групу за схемою: 1) воротарі; 2)
захисники; 3) напівзахисники; 4) нападники.
Організувати пошук за прізвищем футболіста.
12. Для групи спортсменів визначено: прізвище, громадянство, вік, зріст,
вага, вид спорту, країна, за яку виступає. Обчислити середній зріст і середню
вагу всіх футболістів та знайти всіх спортсменів, вік яких не перевищує 30
років. Упорядкувати групу в алфавітному порядку за прізвищами методом
вставок (Insertion sort). Організувати пошук спортсменів за видом спорту.
13. Є інформація про альбоми, що випустив музичний гурт: назва, рік
виходу, кількість пісень, кількість кліпів, компанія, що виконувала звукозапис,
тираж. Знайти найпопулярніший альбом гурту (з максимальним тиражом),
сумарну кількість пісень і кліпів. Упорядкувати альбоми за датою виходу
методом вибору (Selection sort). Організувати пошук за компанією, яка
виконувала звукозапис.
14. Є інформація про експорт товарів: країна, товар, кількість (од.), місяць
поставки. Визначити країну, до якої даного товару експортувалося найбільше.
Упорядкувати інформацію за назвою країн-експортерів методом швидкого
сортування (Quick Sort). Організувати пошук товарів за місяцем поставки.
15. Є інформація про навчальний процес: номер групи (наприклад, КІ-19-1),
день тижня, вид заняття (лекція, практика чи лабораторні роботи), назва
предмета, прізвище викладача. Знайти прізвища викладачів, які не читають
лекцій. Упорядкувати інформацію про навчальний процес за номерами груп
методом Шелла (Shell sort). Організувати пошук за прізвищем викладача.
16. Є інформація про навчальний процес: номер групи (наприклад, КІ-19-1),
день тижня, вид заняття (лекція, практика чи лабораторні роботи), назва
предмета, прізвище викладача. Знайти прізвища викладачів, які не проводять

44
практичних занять. Упорядкувати інформацію за прізвищем викладача методом
швидкого сортування (Quick Sort). Організувати пошук за номером групи.
17. Є інформація про речовину: назва, питома вага, провідність (провідник,
напівпровідник, ізолятор). Знайти назви і вагу всіх напівпровідників.
Упорядкувати дані про всі провідники за зменшенням їх ваги методом вставок
(Insertion sort). Організувати пошук речовини за питомою вагою.
18. Є інформація про міжміські телефонні розмови: дата, код міста,
тривалість розмови (в хвилинах), тариф. Знайти місто, з яким у вересні
розмовляли найчастіше та упорядкувати коди міст за зростанням методом
бульбашки (Bubble sort). Організувати пошук телефонних розмов за датою.
19. Є інформація про одяг: тип одягу (пальто, плаття, костюм тощо), колір
(чорний, сірий, коричневий тощо), розмір (36-52), кількість одиниць та ціна у
гривнях. Знайти кількість та вартість усіх костюмів. Упорядкувати інформацію
за зростанням розмірів методом шейкерного сортування (Cocktail sort).
Організувати пошук одягу за назвою та розміром.
20. Є набір кубиків, для кожного з яких задано розмір (довжина ребра у
сантиметрах), колір (червоний, жовтий, зелений, синій), матеріал (дерево,
картон, залізо). Знайти кількість кубиків кожного кольору, сумарний об’єм
кубиків та упорядкувати кубики за матеріалом методом швидкого сортування
(Quick Sort). Організувати пошук кубиків за розміром.
21. Є послідовність транспортних засобів, що переправляються паромом.
Для кожного транспортного засобу задано: порядковий номер, вид, кількість
пасажирів та вартість переправи. За переправу паромом встановлена така ціна:
велосипед -- 1 грн, мотоцикл — 2 грн, автомобіль — 5 грн, вантажівка — 10
грн. Визначити кількість транспортних засобів кожного виду та загальний
прибуток паромника. Упорядкувати транспортні засоби за найбільшою
кількістю пасажирів методом Шелла (Shell sort). Організувати пошук
транспортних засобів за їх видом.
22. Є інформація про номери готелю: порядковий номер кімнати, кількість
місць у кімнаті (одномісний, двомісний, тримісний), комфортність проживання
(стандарт, стандарт плюс, напівлюкс, люкс), ціна за проживання однієї людини
(стандарт — 480 грн./добу, стандарт плюс — 580 грн./добу, напівлюкс — 850
грн./добу, люкс — 1250 грн./добу), кількість номерів відповідної категорії.
Визначити суму, яку заплатять постояльці готелю за добу та кількість повністю

45
зайнятих тримісних номерів. Упорядкувати інформацію про номери готелю за
комфортністю проживання методом Шелла (Shell sort). Організувати пошук
номерів за кількістю місць проживання.
23. Є інформація щодо продажу зонтів: країна-виробник, тип механізму
(механічний, напівавтомат, автомат), колір, наявність рисунку на зонті (так чи
ні), ціна за одиницю товару, дата продажу. Визначити загальну кількість
проданих зонтів без рисунку з вересня 2018 року по травень 2019 року.
Впорядкувати інформацію про зонти за датою продажу методом бульбашки
(Bubble sort). Організувати пошук зонтів за типом механізму.
24. Є інформація щодо продажу телевізорів: країна-виробник, марка, розмір
діагоналі, ціна за одиницю товару, дата продажу. Визначити кількість проданих
телевізорів марки LG за останні три місяці. Впорядкувати інформацію за датою
продажу телевізору методом шейкерного сортування (Cocktail sort).
Організувати пошук телевізорів за розміром діагоналі.
25. Є інформація щодо продажу мобільних телефонів: країна-виробник,
модель, розмір діагоналі екрану, ціна за одиницю товару, дата продажу.
Визначити кількість проданих мобільних телефонів iPhone за перший квартал
2019 року. Впорядкувати інформацію за датою продажу мобільного телефону
методом швидкого сортування (Quick Sort). Організувати пошук мобільних
телефонів за розміром діагоналі та моделлю (одночасно).
26. Є інформація про продаж мобільних телефонів: країна-виробник,
модель, розмір діагоналі екрану, ціна за одиницю товару, кількість одиниць
даного товару. Визначити загальну кількість мобільних телефонів Samsung, що
є у продажу. Знайти найкращу пропозицію на телефон з екраном 6.
Впорядкувати інформацію за ціною мобільного телефону методом вибору
(Selection sort). Організувати пошук мобільних телефонів за ціною з заданого
проміжку (наприклад, від 1000 до 3000 грн.).
27. Є інформація про квіти: назва, ціна за одиницю товару, кількість
одиниць даного товару, період цвітіння, термін життя (однорічник,
багаторічник). Визначити загальну кількість квітів-багаторічників, що є у
продажу. Знайти найменшу суму, яку потрібно витратити для озеленення
ділянки, щоб квіти цвіли з травня по жовтень включно та назву квітів, які
потрібно купити. Впорядкувати інформацію за назвою квітів методом швидкого
сортування (Quick Sort). Організувати пошук квітів за періодом цвітіння.

46
28. Є інформація про каву: назва, ціна за одиницю товару, кількість одиниць
даного товару, маса нетто, вид (зерно, молота, розчинна), країна-виробник.
Визначити, чи вистачить грошей (кількість вводиться з клавіатури) для купівлі
2 упаковок по 500 г зернової кави ILLY Monoarabica Гватемала, 3 упаковок по
250 г молотої кави Lavazza Qualita Oro та 1 упаковки по 200 г розчинної кави
Tchibo Exclusive. У випадку, коли грошей буде мало, вказати, якої суми не
вистачає. Обробити випадок, коли недостатньо товару на складі для виконання
вищевказаного замовлення. Впорядкувати інформацію за назвою у наступному
порядку: зернова кава, молота кава, розчинна кава. Організувати пошук кави за
країною-виробником.
29. Є інформація про туристичні тури: назва, ціна за тур, дата початку туру,
кількість днів туру, ПІБ керівника групи. При замовленні 3 путівок однією
людиною діє знижка 5 %, при замовленні понад 10 путівок (для групи туристів)
знижка — 10 %. Розрахувати винагороду керівників груп, якщо вони мають 4,2
% від загальної суми, яку зібрав відповідний тур. Впорядкувати інформацію за
датою початку туру методом вставок (Insertion sort). Організувати пошук туру
за кількістю днів поїздки.
30. Є перелік країн: назва, площа (км2), кількість населення, на якому
материку розташована. Визначити країни, які займають площу, більшу, ніж
Великобританія, та меншу за ту, що займає Україна. Розрахувати сумарну
площу країн, що знаходяться на материку Африка та занесені до переліку.
Впорядкувати інформацію про країни за кількістю населення методом вставок
(Insertion sort). Організувати пошук країн, в назві яких зустрічаються літери,
наприклад, 'k' і 'u'.

47
Додаток М
Завдання 5. Розробка інформаційної системи
Мета: поглиблення і закріплення теоретичних знань та набуття
практичних навичок роботи з розробки інформаційних систем.
Постановка задачі: Дані зберігаються в файлі на диску. Будь-яка
інформаційна система (ІС) повинна мати інтерфейс користувача, де можна
обирати потрібні дії. Функції, які повинна підтримувати ІС:
 додавання даних;
 редагування даних;
 видалення даних;
 сортування даних за обраним критерієм;
 пошук даних за обраним критерієм;
 виконання інших дій з даними (передбачається специфікою
інформаційної системи).
Програма повинна виконувати будь-яку дію без перезапуску.

При виконанні завдання необхідно:


1. Ім’я файлу задається в командному рядку. Якщо воно там не було
задано, то після відповідного запиту вводиться користувачем з клавіатури.
2. Використовувати динамічне виділення пам’яті (розмір масиву
задається користувачем після відповідного запиту). Після використання масиву
слід обов’язково звільнити пам’ять.
3. Програма повинна мати зручне меню, в якому реалізовані всі функції,
наведені у постановці завдання.
4. Інформацію для пошуку слід вводити з клавіатури.

Варіанти завдання:
1. Телефонна книга містить наступні відомості: номер телефону, прізвище
людини, якій належить даний номер телефону, приналежність даної людини до
групи (родичі, співробітники, друзі), місце роботи, електронну адресу. Для
перегляду контактів, що записані у телефонній книзі, слід виконати їх
сортування за прізвищем. Пошук слід здійснювати за прізвищем (у тому числі і
за окремими літерами), за номером телефону, за приналежністю окремій групі
та за місцем роботи. Слід мати на увазі, що у контактів можуть залишатися
48
незаповненими деякі поля, окрім поля з прізвищем та номером телефону. Деякі
контакти можуть належати одночасно до декількох груп. Обробити ситуацію,
коли під час пошуку контакт не знайдено.
2. Магазин з продажу кави. Є інформація про каву: назва, ціна за одиницю
товару (поставка), ціна за одиницю товару (продаж), кількість одиниць даного
товару1, маса нетто, вид кави (зерно, молота), країна-виробник, склад кави
(арабіка, робуста). Для перегляду інформації про каву слід реалізувати
можливість сортування за назвою та ціною (продаж). Окрім цього, програма
повинна виконувати пошук за назвою, за ціною (продаж), за масою, за видом
кави, за складом кави та за країною-виробником. У випадку, коли покупець
хоче здійснити покупку, кількість упаковок і назву кави він повинен вводити з
клавіатури. Програма повинна розрахувати суму покупки та обробити випадок,
коли недостатньо товару на складі для виконання замовлення. Після здійснення
продажу, програма повинна поновити кількість одиниць відповідного товару.
3. Домашня бібліотека. Є інформація про автора книги, назву книги,
розділ, до якого належить література даного виду (фантастика, пригоди,
наукова, кулінарія тощо), місце, де стоїть книга, а також про те, чи знаходиться
книга вдома. Якщо книга була комусь позичена, то слід передбачити поле, де
буде вказано прізвище позичальника. Для перегляду книг слід передбачити їх
сортування за вибором — або за прізвищем автора або за назвою книги. Пошук
слід здійснювати за прізвищем автора, назвою книги (у тому разі і за окремими
літерами) та за видом. Обробити ситуацію, коли під час пошуку за введеними
даними нічого не знайдено. Передбачити ситуацію, коли позичена книга буде
повернута або книгу побажають позичити.
4. Автосалон. Є інформація про автомобілі: марка, модель, ціна за
стандартну комплектацію, колір, об’єм двигуна, вид корпусу (седан, хечбек

1
В реальних ІС не передбачають поля для величин, які можна розрахувати у
будь-який час. До таких величин слід віднести і кількість одиниць товару на
складі. Так, існують дві події, різниця яких саме і визначає цю величину. Ці події
– поставка товару (кількість одиниць, дата, постачальник тощо) і подія продажу
(кількість одиниць, дата).
Для того, щоб в реальних ІС такого виду розрахунки не займали багато часу та
ресурсів, вводять експертні дані – це стан складу на визначену дату (початок
року, початок місяця тощо). В бухгалтерії навіть існує термін для цього –
закрити місяць. Тому для визначення кількості товару на даний момент часу
слід взяти експертні дані на початок місяця та додати різницю поставок і продаж
до цього моменту.
49
тощо), вид палива (бензин, дизель, газ, електрика), кількість одиниць даного
товару на складі (див. посилання на стор. 52). Слід мати на увазі те, що деякі
автомобілі можуть працювати на двох видах палива, наприклад, бензин та газ. Є
опції, які можна обрати та оплатити додатково, наприклад, кондиціонер,
підігрів сидіння водія, регулювання по висоті сидіння водія тощо. Колір
автомобіля, який не є базовим, також оплачується додатково. Для перегляду
інформації про автомобілі слід реалізувати можливість сортування та пошуку за
маркою та за об’ємом двигуна, за видом палива, за видом корпусу, за ціною з
проміжку (задається мінімальне та максимальне значення). Запропонувати
покупцю автомобіль стандартної комплектації та надати можливість вибору
додаткових опцій та кольору. Розрахувати вартість авто з врахуванням 20 %
податку на додану вартість. У тому випадку, коли покупець здійснив покупку і
на складі більше не залишилося авто такої моделі, у таблиці для перегляду авто
замість ціни повинно з’явитися повідомлення по те, що даний автомобіль
постачається за попереднім замовленням.
5. Автосервіс. ІС повинна підтримувати запис автомобіля у сервіс. Для
цього власник авто повинен надати наступну інформацію: прізвище власника,
марка автомобіля та модель, державний номер авто (наприклад, АЕ3456АІ),
причина звернення до сервісу. Менеджер автосервісу повинен повідомити про
дату і час запису відповідного авто до сервісу. Для кожного авто, залежно від
причини звернення, менеджер резервує відповідний час (наприклад, заміна
масла — 30 хв., заміна фільтрів — 30 хв., розвал-сходження — 1 год. тощо).
Загальний час роботи сервісу — 8 годин на день, тобто, якщо сумарний час
перевищує робочий день, то слід планувати роботу майстра на потрібну
кількість днів. Зверніть увагу на те, що на час, коли майстер зайнятий, не можна
записати ще одне авто (ІС повинна повідомити про це та знайти найближчий
час для запису). Передбачити сортування авто за датою та часом запису. ІС
повинна здійснювати пошук за прізвищем власника авто, за маркою та моделлю
авто, за державним номером авто.
6. Автопарковка. ІС повинна підтримувати запис автомобіля на парковку.
Для цього власник авто повинен надати наступну інформацію: прізвище
власника, його номер телефону, марка автомобіля та модель, державний номер
авто (наприклад, АЕ3456АІ) та вказати термін зберігання авто. Менеджер
повинен зафіксувати дату та час надходження автомобіля на парковку та номер

50
місця парковки. Оплата здійснюється за різними тарифами: день (не перевищує
12 годин) — 7 грн./год., ніч (з 20.00 до 7.00) — 25 грн., доба (понад 12 годин) —
35 грн. Зверніть увагу на те, що на одному й тому самому місці паркування не
може одночасно перебувати 2 автомобіля (або пусто, або зайнято 1 авто).
Передбачити сортування авто за датою паркування та за місцем стоянки. ІС
повинна здійснювати пошук за прізвищем власника авто, за маркою та моделлю
авто, за державним номером авто. У випадку, коли власник прийшов забирати
машину, йому потрібно розрахувати вартість паркування (з клавіатури
вводиться дата і час). Після того, як машина покинула стоянку, місце повинно
бути звільнено.
7. Доставка піци. ІС повинна підтримувати наступні функції: прийом
заказу на доставку піци (прізвище замовника, адреса, телефон, назва піци,
кількість одиниць, час прийому замовлення), виконання заказу (прізвище того,
хто доставлятиме піцу, час доставки піци замовнику), розрахунок вартості
замовлення. Вартість доставки — 30 грн. У випадку, коли вартість замовлення
перевищує 500 грн., доставка виконується безкоштовно. Якщо піца була
доставлена замовнику більше, ніж за 1 год., то вартість доставки не
враховується. Замовлення може мати наступні статуси: підготовка замовлення
для доставки, доставка, доставлено. Після того, як був введений час доставки
піци замовнику, система повинна автоматично змінювати статус замовлення з
доставки на доставлено. Передбачити сортування за часом замовлення піци, за
статусом замовлення та за прізвищем людини, яка виконує доставку піци
замовнику. ІС повинна здійснювати пошук за прізвищем кур'єра, за прізвищем
замовника, за статусом заказу та за назвою піци, яку було замовлено. Зробити
замовлення та розрахувати його вартість. Вивести інформацію про те, яку піцу
замовляють найчастіше та у який район міста.

51
Навчальне видання

Карпенко Надія Валеріївна


Герасимов Володимир Володимирович

Методичні вказівки до виконання курсових робіт


з дисципліни «Програмування»

___________________________________________________________
Підписано до друку Формат 60х84/16 Папір офсетний.
Друк офсетний. Ум.друк.арк. Наклад 100 пр. Зам. №
Видавництво і друкарня ПП «Ліра ЛТД»
49107, м Дніпро, вул. Наукова, 5
Свідоцтво про внесення до Держреєстру
ДК № 6042 від 26.02.2018

52

You might also like