русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Функції. Структура функції


Дата додавання: 2014-04-22; переглядів: 1172.


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

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

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

Функція описується синтаксичною конструкцією такого виду:

 

тип_значення_функції ім’я_функції ( оголошення_параметрів ) {

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

}

 

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

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

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

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

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

Функція завершує свою роботу, коли виконані всі оператори її тіла та досягнуто кінця функції або коли зустрінеться оператор return. Якщо тип значення функції – це void, то вона не повертає значення і оператор return для неї не обов’язковий. Але при необхідності його можна використовувати для переривання роботи функції. Наприклад:

 

#include <iostream>

using namespace std;

void PrintSqrt( double x ) {

if ( x < 0 ) {

cout << "x < 0" << endl;

return;

}

cout << sqrt( x ) << endl;

}

int main() {

PrintSqrt( -1. );

PrintSqrt( 4 );

}

 

В цьому прикладі при виконання умови x < 0 на екран буде виведене відповідне повідомлення, після цього виконання функції буде завершене, управляння передане в точку її виклику.

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

 

#include <iostream>

using namespace std;

int sum( int a, int b ) {

int t;

t = a + b;

return t;

}

int max( int a, int b ) {

if ( a > b )

return a;

return b;

}

int main() {

int x = 3, y = 4;

cout << sum( x, y ) << endl;

cout << max( 2, 3 ) << endl;

}

 


<== попередня лекція | наступна лекція ==>
Директиви #ifdef, #ifndef | Виклик функцій. Прототипи функцій


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн