- •1. Лабораторна робота 1. "Структури: складені типи даних"
- •Теоретичні відомості
- •1.1.1. Структури
- •1.1.2. Робота з масивом структур
- •1.2. Постановка задачі
- •1.3. Варіанти
- •1.4. Методичні вказівки
- •Постановка задачі.
- •2. Лабораторна робота 2 "Динамічні структури даних"
- •2.1. Теоретичні відомості
- •2.1.1. Списки
- •2.1.2. Стеки
- •2.1.3. Черги
- •2.2. Постановка задачі
- •2.3. Варіанти завдань
- •3.1.2. Члени класу
- •3.1.3. Доступ до членів класу
- •3.1.4. Черги-масиви
- •3.1.5. Стеки-масиви
- •3.2. Постановка задачі
- •3.3. Варіанти завдань
- •3.4. Методичні вказівки
- •4. Лабораторна робота 4. "Перезавантаження конструкторів"
- •4.1. Теоретичні відомості
- •4.1.1. Перезавантаження конструкторів
- •4.1.3. Операції з матрицями
- •4.2. Постановка задачі
- •4.3. Варіанти завдань
- •4.4. Методичні вказівки
- •5. Лабораторна робота 5. "Перезавантаження операторів. Дружні функції"
- •5.1. Теоретичні відомості
- •5.1.1. Дружні функції
- •5.1.1. Перезавантаження операторів
- •5.1.2. Операторні функції для комплексних чисел
- •5.2. Постановка задачі
- •5.3. Варіанти завдань
- •5.4. Методичні вказівки
- •6. Лабораторна робота 6. "Спадкування. Віртуальні функції"
- •6.1 Теоретичні відомості
- •6.1.1. Спадкування й модифікатори спадкування
- •6.1.2. Віртуальні функції
- •6.1.3. Відділення інтерфейсу від реалізації
- •6.2. Постановка задачі
- •6.3. Варіанти завдань
- •6.4. Методичні вказівки
- •7. Лабораторна робота 7. "Шаблони"
- •7.1. Теоретичні відомості
- •7.1.1. Шаблони функцій
- •7.1.2. Шаблони класів
- •7.1.3. Приклад. Методи шаблона вектора
- •7.1.4. Приклад. Шаблон класу зв'язного списку
- •7.2. Постановка задачі
- •7.3. Варіанти завдань
- •7.4. Методичні вказівки
- •8. Лабораторна робота 8. "Файловий введення-виведення"
- •8.1. Теоретичні відомості
- •8.1.2. Потоки й файли
- •8.1.3. Текстові файли. Форматоване введення-виведення
- •8.1.4. Неформатоване двійкове введення-виведення
- •8.1.5. Файли довільного доступу
- •8.2. Постановка задачі
- •8.3. Варіанти завдань
- •8.4. Методичні вказівки
- •Література
5.2. Постановка задачі
Відповідно до свого варіанта завдання скласти програму для обчислення ряду, членами якого є функції комплексного аргументу. Для операцій над комплексними числами визначити клас Complex і передбачити в ньому перезавантажені дружні оператори.
Алгоритм обчислення ряду налагодити для певного значення , з урахуванням 100 членів ряду. Результати обчислення ряду при зміні дійсної й уявної частин аргументу вивести у вигляді таблиці (мал. 3.1).
Рис. 3.1 Зразок виведення результатів перевірочних обчислень і значень ряду
5.3. Варіанти завдань
№ |
Ряд |
Перевірочна функція (позначення: ) |
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
, |
8 |
|
, |
9 |
|
, |
10 |
|
, |
11 |
|
, |
12 |
|
, |
13 |
|
, |
14 |
|
, |
15 |
|
, |
16 |
|
, |
17 |
|
, |
18 |
|
, |
19 |
|
|
20 |
|
|
21 |
|
|
22 |
|
|
23 |
|
|
24 |
|
|
5.4. Методичні вказівки
При визначенні перезавантажених операторів використати звичайні правила дій над комплексними числами:
;
;
;
.
Виведення результатів на екран (у тому числі таблиці) супроводжувати заголовками. Для побудови таблиці використати функцію printf.
5.5. Зміст звіту
Постановка завдання.
Код програми.
Скриншот з результатами роботи програми.
Пояснення принципів використання дружніх функцій і перезавантаження операторів.
6. Лабораторна робота 6. "Спадкування. Віртуальні функції"
Ціль роботи: Вивчення спадкування, створення базових і похідних класів. Відпрацьовування визначення й застосування віртуальних функцій. Використання механізму віртуальних функцій при роботі з геометричними об'єктами.
6.1 Теоретичні відомості
Спадкування в С++ – це механізм, за допомогою якого один клас може успадковувати властивості іншого. Спадкування дозволяє будувати ієрархію класів, переходячи від більше загальних до більше спеціальних класів.
6.1.1. Спадкування й модифікатори спадкування
Коли один клас успадковується іншим, клас, що успадковується, називається базовим класом. Клас, що успадковує, називають похідним класом.
Новый клас Child будується на базі існуючого Parent за допомогою конструкції виду:
class Parent {...}; class Child : [модифікатор спадкування] Parent {...};
Модифікатор спадкування визначає, які права доступу до змінних і методів класу-батька будуть "делеговані" класу-нащадкові. Права доступу до елементів базового класу з методів похідного класу, залежно від значення модифікаторів спадкування, наведені в табл. 4.1. У похідному класі доступ до елементів базового класу може бути зроблений більше обмеженим, але ніколи не можна зробити його менш обмеженим.
Таблица 4.1. Права доступу до елементів базового класу
|
Модифікатор спадкування |
|||
public |
protected |
private |
||
Модифікатор у базовому класі |
public |
public |
protected |
private |
protected |
protected |
protected |
private |
|
private |
немає доступу |
немає доступу |
немає доступу |
Оголосимо у базовому класі дві закритих змінних і функції введення й виведення змінних, а у похідному класі – функції множення й ділення:
class Base {
protected:
int i,j;
public:
void get(){cout<<"Input two numbers:"; cin>>i>>j;}
void put(){cout<<"i="<<i<<" j="<<j<<endl;}
};
class Deriv:public Base {
public:
void mult(){cout<<"i*j="<<i*j<<endl;};
void div(){cout<<"i/j="<<i/j<<endl;};
};
Тоді до об'єкта похідного класу можна застосовувати функції як похідного, так и базового класів:
void main(){
Deriv var;
var.get();
var.put();
var.mult();
var.div();
}