- •Методичні вказівки
- •Практична робота №1 Шаблонні функції Мета роботи
- •Основні теоретичні відомості
- •Завдання на практичну роботу
- •Завдання на практичну роботу
- •Завдання на практичну роботу
- •Завдання на практичну роботу
- •Завдання на практичну роботу
- •Завдання на практичну роботу
- •Контрольні запитання
- •Література
- •Додаток а Титульний аркуш
Практична робота №1 Шаблонні функції Мета роботи
Навчитись використовувати шаблонні функції при розробці програм.
Основні теоретичні відомості
Шаблонна функція – це узагальнений опис поведінки функції, що може визватися для об’єктів різних типів, іншими словами шаблон це сім`я функцій.
Об’ява шаблонних функцій має наступний вигляд:
template <список_параметрів_шаблону>
тип ім’я функції(параметри_функції)
Наприклад:
template <class T>
T abs(T x)
{
return x>0?+x:-x;
}
void main()
{
int a=-20,a1;
float f=-10.5,f1;
a1= abs(a); // T приймає значення int
f1= abs(f); // T приймає значення float
}
Існує два виду параметрів шаблонних функцій:
параметри шаблону, що об’являють в дужках “<>” перед ім’ям шаблонної функції:
template <typename T> або template <class T>,
де T – параметр шаблону, що задає ім`я заповнювача типа;
параметри виклику функції, що об’являють у круглих дужках:
max (T const& a, T const& b).
Параметрів шаблону може бути декілька, тоді вони перераховуються через кому. Наприклад:
template <class T1, class T2> T1 max (T1 a, T2 b);
де T1 та T2 – заповнювачі типів.
Звичайно шаблони не компілюються у деякий один об’єкт, що має здатність обробляти деякий тип даних. Замість цього з шаблону генеруються різні об’єкти для кожного типу для якого використовується шаблон.
Процес підстановки конкретних типів замість параметрів шаблону називається інстанцируванням або конкретизацією шаблону (instantiation). Результат інстанцирування – екземпляр шаблону (instance).
Отже шаблони компілюються два рази:
до конкретизації: код самого шаблону перевіряється на коректність синтаксису. Виконується пошук синтаксичних помилок;
під час інстанцирування: перевіряється коректність усіх викликів.
Шаблони можуть бути перевантажені аналогічно звичайним функціям.
Завдання на практичну роботу
1. Використовуючи рекомендовану літературу та дані методичні вказівки, вивчити основні принципи роботи з шаблонними функціями.
2. Створити шаблонну функцію віподвідно до індивідуального завдання (табл.1.1).
3. Оформити звіт (назва і мета роботи, індивідуальне завдання, текст програми, результати роботи програми, висновки).
4. Відповісти на контрольні запитання.
Таблиця 1.1 – Індивідуальні завдання
№ |
Завдання |
1 |
Створити шаблонну функцію, що обчислює суму елементів одновимірного масиву довільного типу. |
2 |
Створити шаблонну функцію, що знаходить суму від’ємних елементів одновимірного масиву довільного типу. |
3 |
Створити шаблонну функцію, що знаходить суму додатних елементів одновимірного масиву довільного типу. |
4 |
Створити шаблонну функцію, що обчислює суму квадратів елементів одновимірного масиву довільного типу. |
5 |
Створити шаблонну функцію, що знаходить мінімальне значення елемента одновимірного масиву довільного типу. |
6 |
Створити шаблонну функцію, що знаходить максимальне значення елемента одновимірного масиву довільного типу. |
7 |
Створити шаблонну функцію, що обчислює середнє арифметичне елементів одновимірного масиву довільного типу. |
8 |
Створити шаблонну функцію, що обчислює добуток елементів одновимірного масиву довільного типу. |
9 |
Створити шаблонну функцію, що обчислює добуток додатних елементів одновимірного масиву довільного типу. |
10 |
Створити шаблонну функцію, що обчислює добуток від’ємних елементів одновимірного масиву довільного типу. |
11 |
Створити шаблонну функцію, що повертає індекс мінімального елемента одновимірного масиву довільного типу. |
12 |
Створити шаблонну функцію, що повертає індекс максимального елемента одновимірного масиву довільного типу. |
13 |
Створити шаблонну функцію, що повертає кількість додатних елементів одновимірного масиву довільного типу. |
14 |
Створити шаблонну функцію, що повертає кількість від’ємних елементів одновимірного масиву довільного типу. |
15 |
Створити шаблонну функцію, що обчислює суму кубів елементів одновимірного масиву довільного типу. |
Контрольні запитання
1. Наведіть поняття шаблонної функції.
2. Які існують правила оголошення шаблонної функції?
3. Які існують параметри шаблонної функції?
4. Що таке інстанцирування (конкретизація шаблону)?
5. Як компілюються шаблонні функції?
6. Чи можна перевантажити шаблонні функції?
Практична робота №2 Шаблонні динамічні структури
Мета роботи
Навчитись використовувати шаблонні динамічні структури при розробці програм.
Основні теоретичні відомості
Лінійний однозв’язний список – це динамічний список, кожний елемент якого складається з двох полів. Одне поле містить інформацію (або посилання на неї), інше поле містить посилання на наступний елемент списку. Елемент списку називають «ланкою» списку. Таким чином, список – це ланцюг пов’язаних між собою ланок від першого до останнього. Остання ланка (рис. 2.1) не вказує на наступний елемент, тому поле посилання має значення NULL – порожній покажчик.
Приклад 1 (рядок символів ВЕТА представимо у вигляді списку):
Рисунок 2.1 – Рядок символів ВЕТА у вигляді списку
В односпрямованому списку можна рухатися тільки в одному напрямку – від першої ланки до останньої.
Щоб задати динамічний список треба описати його ланку. Так як ланка складається з полів різних типів, то описати її можна неоднорідним типом – структурою (або класом).
Щоб працювати зі списком як з єдиним об’єктом, треба використовувати змінну-покажчик, значення якої – це адреса першої ланки списку. Якщо список порожній, то вона повинна мати значення NULL.
Динамічний список, у якому кожний елемент (окрім першого і останнього) пов’язаний з попереднім і наступним за ним елементами, називається двозв’язним. Кожний елемент такого списку має два поля з покажчиками: одне поле містить посилання на наступний елемент, інше поле – посилання на попередній елемент і третє поле – інформаційне. Наявність посилання на наступну ланку і на попереднє дозволяє рухатися по списку від кожної ланки у будь-якому напрямку: від ланки до кінця списку або від ланки до початку списку, тому такий список ще називають двоспрямованим. Наприклад, рядок символів BETA представлений двоспрямованим списком (рис.2.2):
Рисунок 2.2 – Рядок символів BETA представлений двоспрямованим списком
Над списками можна виконувати наступні операції:
– пошук заданого елемента за його значенням або порядковим номером;
– занесення (вставка) до списку нового елемента перед чи після заданого елемента (перед першим елементом або після останнього);
– виключення (видалення) заданого елемента зі списку (в т.ч. видалення першого елемента або останнього);
– визначення числа ланок списку;
– упорядкування елементів списку за значенням інформаційного поля.
