Professional Documents
Culture Documents
----_2020
----_2020
Н. В. Карпенко, В. В. Герасимов
З ДИСЦИПЛІНИ «ПРОГРАМУВАННЯ»
Дніпро
Ліра
2020
2
УДК 004.432 (075.8)
Рекомендовано вченою радою
факультету фізики, електроніки та комп’ютерних
систем,
протокол № 3 від 14 листопада 2019 р.
Рецензенти:
Гнатушенко В. В. — доктор технічних наук, професор, професор
кафедри інформаційних систем та технологій НТУ «Дніпровська політехніка»
Бухаров С. В. — кандидат технічних наук, доцент кафедри комп’ютерних
наук та інформаційних технологій Дніпровського національного університету
імені Олеся Гончара
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
ВСТУП
5
1. ПОРЯДОК ВИКОНАННЯ КУРСОВОЇ РОБОТИ
6
2. СТРУКТУРА ТА СКЛАД ЗВІТУ З КУРСОВОЇ РОБОТИ
7
3. ОФОРМЛЕННЯ ПОЯСНЮВАЛЬНОЇ ЗАПИСКИ
8
Завдання на курсову роботу визначає керівник курсової роботи. Цей
розділ містить перелік питань, що підлягають розробці, а саме: умови задач з
вказівкою номера завдання та рекомендаціями щодо виконання завдань
(приклад оформлення завдання наведено в додатку Б).
Зміст включає послідовно перелічені назви усіх розділів та підрозділів
(починаючи зі вступу) з наведенням номерів сторінок, на яких починаються
матеріали розділу чи підрозділу. До змісту також включають найменування
додатків.
Вступ повинен розкривати суть курсової роботи, обґрунтовувати її
актуальність, однак не слід наводити історичні відомості, загальновідомі
визначення, опис мови програмування тощо. У вступі також слід зазначити
мету роботи. Обсяг вступу не повинен перевищувати 1 сторінку.
3.3. Вимоги до оформлення основної частини
3.3.1. Вимоги до тексту звіту
Основна частина поділяється на окремі розділи. Підрозділи нумерують
арабськими цифрами в межах кожного розділу. Номер підрозділу складається з
номера розділу та порядкового номера підрозділу, відокремлених крапкою.
У тексті роботи обов’язково слід робити посилання на джерела, з яких
використовується інформація. Посилаючись у тексті роботи на джерело,
необхідно вказувати його порядковий номер у списку використаних джерел,
виділений двома квадратними дужками [2].
3.3.2. Вимоги до оформлення ілюстрацій
Ілюстраціями є графіки, фотографії, креслення, діаграми тощо. Ілюстрації
розміщують у тексті роботи або в додатках. Їх позначають словом «рисунок» і
нумерують послідовно арабськими цифрами.
Номер повинен складатися з номера розділу та порядкового номера
рисунку, відокремлених крапкою, наприклад: Рис. 2.3 (третій рисунок другого
розділу). У додатках ілюстрації нумерують у межах кожного додатку. У роботі
ілюстрації повинні бути розміщені так, щоб їх було зручно розглядати без
повороту або з поворотом за годинниковою стрілкою.
Ілюстрації повинні обов’язково мати назву, наприклад, «Рис. 2.3 — Блок-
схема алгоритму функції factor». Ілюстрації слід розміщувати безпосередньо
після тексту, де вони згадуються вперше, або на наступній сторінці. На всі
9
ілюстрації мають бути посилання у тексті, які вказують його порядковий номер,
наприклад «блок-схема алгоритму обчислення факторіалу показана на рис. 2.3».
3.3.3. Вимоги до оформлення таблиць
Таблиці нумерують арабськими цифрами за порядком наведення в межах
розділу. Номер таблиці ставлять над таблицею. Він складається з номера
розділу і порядкового номера таблиці, відокремлених крапкою. Назву таблиці
друкують малими літерами (крім першої великої) зразу після її номера. При
перенесенні частини таблиці на другу сторінку над перенесеною частиною
таблиці пишуть слово «Продовження» із зазначенням номера таблиці,
наприклад: «Продовження табл. 2.1». Заголовок над перенесеною частиною
таблиці не розміщують. Приклад оформлення таблиці наведено нижче.
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
основній частині роботи для ілюстрації матеріалу, що викладається, повинні
наводитись лістинги фрагментів програм, які треба розміщувати безпосередньо
після тексту, в якому вони вперше згадуються або на наступній сторінці. На всі
лістинги мають бути посилання в тексті роботи.
14
Список рекомендованої літератури
15
Додаток А
КУРСОВА РОБОТА
з дисципліни «Програмування»
(прізвище та ініціали)
Керівник: ______________________________
Кількість балів
Національна шкала
Члени комісії:
м. Дніпро
2020
16
Додаток Б
17
Додаток В
Приклад
виконання завдання з обробки символьних рядків
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 с.
Чотири автори
5. Клименко М. І., Панасенко Є. В., Стреляєв Ю. М., Ткаченко І. Г.
Варіаційне числення та методи оптимізації: навч. посіб. Запоріжжя: ЗНУ,
2015. 84 с.
Автори та редактори/упорядники
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 с.
(Інформація та документація).
Електронні ресурси
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
Додаток Д
Приклад запису алгоритмів для обчислень
#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_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
Додаток Ж
Шкала оцінювання курсової роботи
або
28
29
Таблиця Ж.4. Розподіл балів для оцінювання виконання 3 завдання
(за умови його працездатності)
Збереження Наочна
Оформлення
Обробка Введення результатів форма
завдання в Захист
виключних даних з роботи представлен Разом
звіті (повнота, завдання
ситуацій файлу програми в ня
стандарти)
файл результатів
4 4 4 3 4 7 26
Варіанти завдання:
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 за наступним правилом:
ab
bc
cd
...
za
інший символ *
Наприклад, рядок 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). Реалізувати його обробку, як вказано у варіанті завдання.
Варіанти завдання:
1. Отримати нову матрицю шляхом ділення всіх елементів даної матриці
на її найменший елемент.
2. Сформувати вектор з добутків елементів стовпців та знайти середнє
арифметичне цього вектору.
3. Знайти мінімальне з чисел, що зустрічається у матриці більше одного
разу.
4. Знайти максимальне з чисел, що зустрічається у матриці більше одного
разу.
5. Знайти найбільші за модулем елементи кожного рядку матриці та їх
координати. Сформувати з цих елементів вектор та визначити суму
елементів вектору.
6. Знайти найменші за модулем елементи кожного стовпця матриці та їх
координати. Сформувати з цих елементів вектор та визначити суму
елементів вектору.
7. Знайти середнє арифметичне елементів кожного з парних стовпців
матриці.
8. Замінити нулями всі елементи матриці, що розташовані на головній
діагоналі та вище неї (головна діагональ на рис. І.1 позначена чорним
кольором + області 1 і 4).
35
Рисунок І.1. – Матриця до завдань № 8-15
36
а) б)
Рисунок І.2. – Матриця до завдань № 17 (а) та № 18 (б)
а) б)
Рисунок І.3. – Матриця до завдань № 22 (а) та № 23 (б)
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-
ковому форматах.
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. Телефонна книга містить наступні відомості: номер телефону, прізвище
людини, якій належить даний номер телефону, приналежність даної людини до
групи (родичі, співробітники, друзі), місце роботи, електронну адресу. Для
перегляду контактів, що записані у телефонній книзі, слід виконати їх
сортування за прізвищем. Пошук слід здійснювати за прізвищем (у тому числі і
за окремими літерами), за номером телефону, за приналежністю окремій групі
та за місцем роботи. Слід мати на увазі, що у контактів можуть залишатися
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