14 Функції повертають значення - inf - w

Функції повертають значення

Функції повертають значення мають тип, який відповідає типу значення, що повертається. Ці функції повертають значення в точку повернення операцією звернення. Відповідно функція повинна виступати як операнд у виразах з привласненням або висновком. Це відрізняє синтаксис функцій повертають і не повертають значення. У визначенні функції повинна бути інструкція return. яка приймає вираз для визначення значення, що повертається. Нижче наводиться схема розміщення в програмі функції повертає значення.

Функція в програмі

Інструкція return

Інструкція return завершує виконання функції і повертає її значення. Інструкція return повертає тільки одне значення (змінної або виразу). У деяких випадках оператор return може застосовуватися і в функціях які не повертають значення (програма 13.1 стр. 23). Але в цих функціях порожня інструкція return застосовується для виходу з функції і повернення управління в зухвалу програму.
Наведемо приклад програми з функцією повертає значення.
Складемо програму з функцією повертає випадкове значення на відрізку [a, b]. Назвемо її myRand (). Ця функція двох аргументів може застосовуватися, наприклад, для заповнення масиву.
програма 14.1

У тілі функції може бути кілька інструкцій return. В такому випадку тільки одна інструкція return поверне значення. Це можна запрограмувати за допомогою умовної інструкції. Наведемо приклад такої програми. Дано двозначне ціле число n. Якщо це число парне отримати твір його цифр, інакше отримати суму його цифр.
програма 14.2

Дану функцію можна було визначити і більш лаконічно, якщо замість умовної інструкції застосувати тернарного операцію:

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

перевантаження функцій

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

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

шаблони функцій

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

де T1. T2 - довільні імена параметрів типу шаблону. Кожному параметру типу має передувати ключове слово typename. Ці параметри застосовуються для вказівки типів різних об'єктів в заголовку і в тілі функції. Компілятор зв'яже ці параметри з відповідним типом аргументів для визначення типу параметрів функції.
Наведемо приклад завдання. Скласти програму в якій необхідно порівнювати два об'єкти одного типу. Продемонструвати використання створеної шаблонної функції для порівняння об'єктів різного типу.
програма 14.5

  1. У чому відмінність функції повертає і не повертає значення?
  2. Коли перевантаження функцій буде корисна, а в яких випадках її потрібно уникати?
  3. Коли застосовується шаблон функції?
  4. В яких випадках в одній функції застосовується дві інструкції return?
  5. В яких випадках може бути корисним як "логічний"?
Домашня робота
  1. Складіть функцію, що визначає суму чисел введеного цілого числа.
  2. Напишіть програму в якій використовується перевантажена функція розгортаються числа і слова задом-наперед. Наприклад, 7890 -> 0987. qwerty -> ytrewq.
література