Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






Нестрогим математичним визначенням поняття «функція» можна прийня­ти таке визначення.

Функція – це закон, що визначає однозначну відповідність кожному елементу деякої множини X одного елемента деякої множини Y.

У C++ функція відповідає наведеному вище математичному визна­ченню, а саме, – це оформлена спеціальним чином самостійна програмна одиниця, яка проектується для розв’язання конкретної задачі, перетворюючи одне або де­кілька значень не обов’язково того самого типу в одне значення деякого типу[1].

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

Таким чином, використання функцій дає такі дві основних переваги:

1) відокремлюється хід розв’язання від конкретної реалізації функції – немає потреби знати, як реалізована функція, потрібно тільки вміти до неї звернутися;

2) опис функції в програмі дається один раз, а використовувати її можна багаторазово.

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

Заголовок функції
Тіло функції

Розглянемо деякі особливості опису функції і звертання до неї.

1. Заголовок функції має такий формат:

тип ім’я_функції (специфікація_формальних_параметрів)

Тут тип – це тип значення, яке є результатом роботи функції (char, int, double і т. д.). Тип може бути не вказаним; у такому разі функція має тип int. Якщо функція не повертає ніяке значення, то її тип задається службовим сло­вом void;

ім’я_функції – довільно вибраний ідентифікатор, за допомогою якого здійс­нюється звертання до функції;

специфікація_формальних­_параметрів – це список описів формальних пара­метрів, кожен з яких у найпростішому випадку має такий вигляд:

позначення_типу ім’я_параметру

Окремі специфікації у списку розділяються комою. Список формальних параметрів може закінчуватися комою з наступними трьома крапками (...), які вказують на те, що при звертанні до функції можна вказати більше фактич­них пара­метрів, ніж їх зазначено в специфікації_формальних­_параметрів.

Наприклад:

double fun(double a, double b, int d)

Параметри можуть мати значення за умовчанням. Значення за умовчанням задається після імені параметру і символу =; наприклад:

double fun(double a, double b = 1.2, int d = 0)

2. Тіло функції – це послідовність операторів, укладена у фігурні дужки, тобто це блок (тіло функції може містити описи і визначення). Всередині тіла функції не можна визначити іншу функцію (функції не можуть бути вкла­деними одна в одну). Наприклад:

{
double r;
//...
r = d * (a + b);
//...
}

3. Змінні, типи, константи тощо, оголошені в тілі функції, називаються локальними. Ці змінні поза функцією не існують, оскільки під них виділяється пам’ять щоразу при виклику функції, а при виході з функції ці змінні зни­щуються[2].

4. Формальні параметри є локальними змінними.

5. Імена локальних змінних, за винятком тих, що описані або визначені у вкладених блоках тіла функції, не можуть збігатися з іменами формаль­них параметрів (це є наслідком попереднього).

6. Якщо функція не має формальних параметрів, то специфіка­ція_фор­маль­них_параметрів або відсутня, або задається службовим словом void. Дужки в заголовку вказуються в обов’язковому порядку.

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

return вираз;

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

8. Всі змінні, описані у файлі, що містить текст програми, до визначення функції, також відомі усе­редині функції. Ці змінні називаються глобальними. У зв’язку із загально­доступністю глобальних змінних у складних випадках мож­лива ситуація, коли одна функція може змінити значення глобальної змін­ної «непомітно» для іншої, результатом чого стає поява помилок, які досить важко виявляються. Щоб уникнути цього, рекомендується обмежувати вико­ристання глобальних змін­них. Глобальні змінні необхідні в тому випадку, коли програ­місту потрібно зро­бити дані доступними для декількох функцій, а пере­дача даних з однієї функції в іншу є проблематичною.

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

10. Для звертання до функції використовується вираз з операцією «круглі дужки»:

позначення_функції(список_фактичних_параметрів)

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

double z = fun(a, 1.5, 2 * n) – 0.2;

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

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


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал