Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_2 часть_укр.doc
Скачиваний:
1
Добавлен:
09.11.2019
Размер:
938.5 Кб
Скачать

6.4. Методичні вказівки

При визначенні функцій-членів у деяких варіантах завдань урахувати наступні формули для геометричних фігур:

Куля: – площа, – об'єм.

Сектор: -площа.

Сегмент: - площа.

Еліпс: - площа: – довжина.

Еліпсоїд: – об'єм;

Піраміда й конус: - об'єм, – площа основи, – висота.

Круговий конус: – площа, – утворююча.

6.5. Зміст звіту

  1. Постановка завдання.

  2. Код програми.

  3. Скриншот з результатами роботи програми.

  4. Пояснення принципів використання однойменних функцій для доступу до членів базового й похідного класів.

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).