Процедури і функції

Процедури і функції - методи класу

Процедури і функції - функціональні модулі

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

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

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

В даному контексті поняття клас поширюється і на всі його окремі випадки - структури, інтерфейси, делегати.

Колишню роль бібліотек процедур і функцій тепер грають бібліотеки класів. Бібліотека класів FCL (статична компонента Framework .Net.), Доступна в мові C #, істотно розширює можливості мови. Знання класів цієї бібліотеки і методів цих класів абсолютно необхідно для практичного програмування на C # з використанням всієї його потужності.

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

· Завжди обчислює деяке значення, що повертається в якості результату функції;

· Викликається в виразах.

Процедура C # має свої особливості:

· Повертає формальний результат void. вказує на відсутність результату;

· Виклик процедури є оператором мови;

· Має вхідні і вихідні аргументи, причому вихідних аргументів - її результатів - може бути досить багато.

Добре відомо, що одночасне існування в мові процедур і функцій в якомусь сенсі великій кількості. Додавши ще один вихідний аргумент, будь-яку функцію можна записати у вигляді процедури. Справедливо і зворотне. Якщо допускати функції з побічним ефектом, то будь-яку процедуру можна записати у вигляді функції. У мові С - дідусеві C # - так і зробили, залишивши тільки функції. Однак значно зручніше мати обидві форми реалізації методу: і процедури, і функції. Зазвичай метод вважають за краще реалізувати у вигляді функції тоді, коли він має один вихідний аргумент, що розглядається як результат обчислення значення функції. Можливість виклику функцій у виразах також впливає на вибір на користь реалізації методу у вигляді функції. В інших випадках метод реалізують в вигляді процедури.

Схожі статті