- •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. Методичні вказівки
- •Література
6.4. Методичні вказівки
При визначенні функцій-членів у деяких варіантах завдань урахувати наступні формули для геометричних фігур:
Куля: – площа, – об'єм.
Сектор: -площа.
Сегмент: - площа.
Еліпс: - площа: – довжина.
Еліпсоїд: – об'єм;
Піраміда й конус: - об'єм, – площа основи, – висота.
Круговий конус: – площа, – утворююча.
6.5. Зміст звіту
Постановка завдання.
Код програми.
Скриншот з результатами роботи програми.
Пояснення принципів використання однойменних функцій для доступу до членів базового й похідного класів.
7. Лабораторна робота 7. "Шаблони"
Ціль роботи: Вивчення технології параметризації функцій і класів за допомогою шаблонів. Створення шаблонів і їхнє застосування в роботі з об'єктами різного типу.
7.1. Теоретичні відомості
7.1.1. Шаблони функцій
У практиці програмування багато алгоритмів не залежать від типів даних, з якими вони працюють (наприклад, пошук, сортування, обчислення рядів і т.д.). Тому природно бажання параметризувати алгоритм таким чином, щоб його можна було використати для різних типів даних. Потужний засіб параметризації, являють собою шаблони. За допомогою шаблонів можна визначити алгоритм, що буде застосовуватися до даних різних типів, а конкретний тип даних буде передаватися у функцію у вигляді параметра на етапі компіляції. Компілятор автоматично згенерує правильний код, що відповідає переданому типу. У результаті створюється функція, що перезавантажує сама себе, і при цьому не потрібно додаткових визначень функції для кожного типу. Таким чином, шаблони функцій дозволяють відокремити алгоритм від конкретних типів даних, з якими він працює, передаючи тип як параметр.
Формат визначення функції-шаблона записується в такий спосіб:
template <class Тип_функції> Тип_значення_що_повертає_функція Ім'я_функції (Список_параметрів) {
/*Тіло_функції*/
}
Приведемо приклад функції-шаблона, що виконує пошук мінімального елемента в цілочисельному масиві або в рядку (символа з мінімальним кодом). Використаємо також функцію-шаблон для ініціалізації масиву:
#include <iostream>
#include <cstring>
using namespace std;
//-------Шаблон функції пошуку елемента------
template <class T> int find(T *a, int n){
int res=0;
for (int i=0; i<n; i++)
if (a[i]<a[res])
res=i;
return res;
}
//-------Шаблон функції ініціалізації масиву--------
template <class T> void in(T *a, int n){
cout<<"Enter elements: ";
for (int i=0; i<n; i++)
cin>>a[i];
};
void main(){
int n, im;
cout<<"Enter size of array"<<endl;
cin>>n; //Введення розміру масиву
int *a=new int[n];
in(a,n); //Введення значень у цілочисельный масив
im = find(a,n); //Пошук мінімального елемента
cout<<"min: a["<<im<<"]="<<a[im]<<endl;
delete [] a;
cout<<"Enter string length"<<endl;
cin>>n; //Введення довжини рядка
char *str=new char[n];
in(str,n); //Введення символів у рядок
im = find(str,n); //Пошук мінімального елемента
cout<<"min: str["<<im<<"]="<<str[im]<<endl;
delete [] str;
}
У визначеннях функцій-шаблонів Т є параметром, що при виклику функції задає тип даних (у даному прикладі – int або char).