Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота 13-14.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
93.7 Кб
Скачать

Виконання роботи

  1. Запустіть середовище С++Builder.

  2. Запустіть консольний додаток.

  3. У вікні редактора коду наберіть програму Приклад 1.

  4. Для компіляції і запуску програми клацніть на кнопці Run оперативної панелі.

  5. Напишіть функцію procent, що повертає відсоток від отриманого як аргумент числа.

  6. Напишіть функцію, що повертає максимальне з двох цілих чисел, отриманих як аргументи.

Контрольні питання

  1. В чому різниця між об'явленням прототипу функції і визначенням функції?

  2. Якщо функція не повертає значення, як слід об'явити таку функцію?

  3. Чи повинні імена параметрів, зазначені в прототипі, визначенні і виклику функції відповідати один одному?

Домашнє завдання

  1. Напишіть функцію, що приймає два параметри типу unsigned int і повертає результат ділення першого параметра на другий. Функція не повинна виконувати операцію ділення, якщо друге число дорівнює 0, але в цьому випадку вона повинна повернути –1.

  2. Напишіть програму, що запитує в користувача два числа і викликає функцію з завдання 1. Виводить результат чи повідомлення про помилку, якщо функція поверне –1.

Лабораторна робота №14

Огляд мови С++. Функції

Мета роботи: навчитися створювати і використовувати inline-функції та рекурсивні функції.

Теоретичні відомості

Inline-функції, або функції що підставляються

Звичайно при визначенні функції компілятор резервує в пам'яті тільки один блок комірок для збереження операторів функції. Після виклику функції керування програмою передається цим операторам, а після повернення з функції виконання програми відновлюється з рядка, наступного після виклику функції. Якщо цю функцію викликати 10 разів, то щораз ваша програма буде слухняно відпрацьовувати той самий набір команд. Це означає, що існує тільки одна копія функції, а не 10.

Але кожен перехід до області пам'яті, що містить оператори функції, сповільнює виконання програми. Виявляється, що, коли функція невелика (тобто складається з одного-двох рядків), можна одержати деякий виграш в ефективності, якщо замість переходів від програми до функції і назад просто дати компілятору команду вмонтувати код функції безпосередньо в програму за місцем виклику. Коли програмісти говорять про ефективність, вони звичайно мають на увазі швидкість виконання програми.

Якщо функція оголошена з ключовим словом inline (тобто є функцією, що підставляється), компілятор не створює функцію в пам'яті комп'ютера, а копіює її рядки безпосередньо в код програми за місцем виклику. Це рівнозначно вписуванню в програму відповідних блоків замість викликів функцій.

Зверніть увагу, що використання функцій, що підставляються, веде до деяких витрат. Якщо функція викликається 10 разів, то під час компіляції до програми буде додано 10 копій цієї функції. За збільшення швидкості виконання програми потрібно буде розплатитися розмірами програмного коду, в наслідок чого очікуваного підвищення ефективності програми може і не відбутися.

Так який же напрошується висновок? Якщо в програмі часто викликається маленька функція, що складається з одного-двох рядків, то це перший кандидат у функції, що підставляються. Але якщо функція велика, то краще утриматися від її багаторазового копіювання в програмі.

Приклад 1.// inline-функції, що підставляються

#include <iostream. h>

inline int Double(int);

int main()

{

int target;

cout <<"Enter a number : ";

cin >> target;

cout <<"\ n";

target = Double(target);

cout <<" Target " << target << endl;

target = Double(target);

cout <<" Target "<< target << endl;

target = Doub]e(target);

cout <<" Target "<< target << endl;

return 0;

}

int Double(int target)

{

return 2*target;

}

Ключове слово inline служить для компілятора рекомендацією користувача скопіювати код функції в програму за місцем виклику. Компілятор вільний проігнорувати ваші рекомендації і зберегти звичайне звертання до функції.