Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 7 (Функції).docx
Скачиваний:
18
Добавлен:
16.05.2015
Размер:
74.76 Кб
Скачать

Функції

Розробка програмного забезпечення на практиці є досить непростим процесом. Програмісту потрібно врахувати всі тонкощі і нюанси як всього програмного комплексу в цілому, так і окремих його частин. Системний підхід до програмування ґрунтується на тому, що поставлена ​​перед розробником завдання попередньо розбивається на пару-трійку менших питань, які, в свою чергу, діляться ще на дещо менш складні завдання, і так до тих пір, поки самі дрібні завдання не будуть вирішені за допомогою стандартних процедур. Таким чином здійснюється так звана функціональна декомпозиція.

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

Функція – поіменована послідовність описів і операторів, яка виконує деяку закінчену послідовність дій.

Функція може приймати параметри і повертати значення.

Оголошення, визначення та виклик функцій

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

Оголошення функції описує її прототип (іноді кажуть "сигнатура").

Прототип функції оголошується наступним чином:

ТипПовернення Ім’яФункції (СписокОголошенихПараметрів);

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

СписокОголошенихПараметрів задає тип і ім'я кожного з параметрів функції, розділених комами (ім'я параметра можна опускати). Список параметрів функції може бути порожнім. Наведемо приклади прототипів функцій:

double мах (double parl, double par2);

Int swap(int, int) ;

Void func() ;

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

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

ТипПоверн Ім’яФункції (Список Оголошених Параметрів)

{

// тіло функції

}

Для того щоб функція виконала певні дії, вона повинна бути викликана в програмі. При зверненні до функції вона виконує поставлене завдання, а по закінченні роботи повертає в якості результату деяке значення.

Виклик функції являє собою вказівку ідентифікатора функції (її імені), за яким в круглих дужках слід список аргументів, розділених комами:

double maxValue = мах (2.5, 1235.2);

int j = swap(10, 2);

func();

Кожна програма на С/С++ обов’язково включає в себе головну функцію main(). Саме з цієї функції починається виконання програми.

Схематичний порядок виклику функцій:

!!! Будь-яка невідповідність між прототипом (оголошенням) функції та її визначенням (заголовком) призведе до помилки компіляції.

!!! В середині функцій можливий виклик будь-яких інших функцій, але неможливо оголосити функцію в середині тіла іншої функції.

Параметри і аргументи функцій

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

Передача параметрів функції:

Місце функції у програмі може бути різним.

Приклад 1.

long MySquare(int x)

{

return x * x;

}