пʼятницю, 12 червня 2020 р.

Інформатика для здобувачів освіти гр. №11

Тема уроку: Функції. Передавання значень у функцію та з неї. Формальні та фактичні параметри. Клас, властивості, конструктори, методи.


Функція – це частина програми, яка має такі властивості чи ознаки:

·         є логічно самостійною частиною програми;
·         має ім’я, на основі якого здійснюється виклик функції (виконання функції). Ім’я функції підпорядковується правилам задавання імен ідентифікаторів мови C++;
·         може містити список параметрів, які передаються їй для обробки або використання. Якщо функція не містить списку параметрів, то така функція називається функцією без параметрів;
·         може повертати (не обов’язково) деяке значення. У випадку, якщо функція не повертає ніякого значення, тоді вказується ключове слово void;
·         має власний програмний код, який береться у фігурні дужки { } і вирішує задачу, яка поставлена на цю функцію. Програмний код функції, реалізований в фігурних дужках, називається “тіло функції”.
·         компактна організація програми шляхом зручного виклику програмного коду за його іменем, який у програмі може зустрічатись декілька разів (повторюватись);
·         економія пам’яті, розміру вихідного та виконавчого коду і т.д.;
·         зменшення ризику виникнення помилок для великих наборів кодів;
·         підвищення читабельності програмного коду.


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

Загальна форма опису функції виглядає наступним чином:
·         тип – тип значення, яке повертає функція. Якщо поле “тип” містить ключове слово void, то функція не повертає ніякого значення;
·         ім’я_функції – це безпосередньо ім’я функції. За цим іменем відбувається виклик програмного коду, реалізованого в тілі_функції. Крім того, ім’я_функції є покажчиком на цю функцію. Значенням покажчика є адреса точки входу в функцію;
·         список_параметрів – параметри, які передаються в функцію. Функція може отримувати будь-яку кількість параметрів. Якщо описується функція без параметрів, то в дужках вказується слово void;
·         тіло_функції – набір операторів програмного коду, що реалізують алгоритм обчислення всередині функції;
·         return (вираз) – ключове слово return вказує, що функція повертає значення задане в (вираз). Слово return може зустрічатись в декількох місцях тіла функції залежно від алгоритму (повторюватись).
·         писок формальних параметрів забезпечують взаємодію процедури з головною програмою, а саме: передачу значень з головної програми в процедуру.
·         Значення, які отримує підпрограма від головної програми називають фактичними параметрами.
·         Функція може повертати деяке (одне !) значення. Це значення і є результат виконання функції, який при виконанні програми підставляється в точку виклику функції, де б цей виклик не зустрівся. Допускається також використовувати функції що не мають аргументів і функції що не повертають ніяких значень. Дія таких функцій може полягати, наприклад, в зміні значень деяких змінних, виводі на друк деяких текстів і тому подібне.
·         Вказівником на функцію є деякий вираз, значенням якого є адреса цієї функції.
·         В мовах програмування звичайно використовують два способи передачі параметрів: за значенням і за посиланням. При передачі параметра по значенню аргументом може бути довільний вираз, значення якого і передається в підпрограму. При передачі параметра по посиланню значенням може бути тільки змінна (як проста так і структурована).
·         В цьому випадку в підпрограму передається не значення змінної, а її адреса, для того, щоб в цю адресу можна було б записати нове значення і тим самим змінити значення змінної, котра передавалась в якості параметра.
·         В різних мовах використовуються різні рішення. В одних всі аргументи передаються по посиланню; в інших використовуються обидва механізми, і тоді в списку параметрів вказуються спеціальні ключові слова, котрі показують, що значення аргументу може змінюватись підпрограмою.
·         В мові Сі використано третє рішення, тобто всі аргументи передаються по значенню, а для передачі аргументу по посиланню в підпрограму передається адреса потрібної змінної з допомогою операції отримання адреси об'єкта (&).
·         Вказівники дозволяють нам в одній змінній зберігати адрес іншої змінної. Для роботи з вказівниками використовуються дві операції: отримання адреси змінної (&) та вибір значення змінної з використанням вказівника (*). Щоб вказати компілятору те, що зміна є вказівником на значення деякого типу, перед іменем змінної ставлять зірочку (*).
Формальні і фактичні параметри. Механізм параметрів
У заголовку процедури чи функції, як ми вже знаємо, може міститися список параметрів. Параметри являють собою ідентифікатори змінних і служать для обміну значеннями між підпрограмою і викликаючою її програмною одиницею. При цьому в описі підпрограми, оскільки він включається в текст програми один раз, імена параметрів вибираються певним чином і безвідносно до імен змінних які використовуються в інших частинах програми. Такі параметри, імена яких зазначені в заголовку підпрограми, називаються формальними.
З іншого боку, при кожному новому зверненні до підпрограми в неї можуть передаватися значення різних змінних. Такі змінні, імена яких підставляються в оператор виклику підпрограми при фактичному звертанні до неї, називаються фактичними параметрами.
При виклику процедури чи функції кількість і тип фактичних параметрів повинні відповідати кількості і типу формальних параметрів. З останнього, утім, є виключення.
Список формальних параметрів указується після імені підпрограми і заключається в круглі дужки. Опис формальних параметрів дуже схожий на опис змінних у блоці. Кожен параметр, заданий у заголовку вважається локальним у даній підпрограмі так само, як і змінні, описані в блоці цієї підпрограми.
Ідентифікатори формальних параметрів можна вважати умовними позначеннями в тілі підпрограми тих реальних чи ФАКТИЧНИХ параметрів, що будуть передані в підпрограму при її виклику.
Нижче приводяться синтаксичні діаграми для формальних параметрів.
Приклади заголовків процедур і функцій:
function MaxElem ( A:Vector; n=byte ): real;
Procedure Sum (А,В:Matrix; var С:Matrix );
Procedure Move ( var Source, Dest; n : word);

Модулі в Турбо Паскалі

У Турбо Паскалі допускається розбивати програми на частині і зберігати ці частини в окремих файлах на диску. Крім основної програми з'являються так називані модулі, що надають основній програмі чи іншим модулям свої змінні, константи, типи, процедури, функції і т.п. Щоб використовувати модуль у програмі, потрібно вказати його ім'я після uses.
При написанні модуля спочатку описується те, що він надає для загального користування (секція інтерфейсу), а потім – як він улаштований (секція реалізації). Іноді існує секція ініціалізації, де записані дії, що виконуються при підключенні цього модуля. Записується це все так:
unit MyUnit;
interface
(*Интерфейсная секція*)
uses ...;
const ...;
type ...;
procedure ...; {Тільки
function ...; заголовки}
implementation
(*Секція реалізації*)
uses ...;
const ...;
type ...;
procedure ...; {Реалізація всіх описаних
begin процедур і функцій}
...
end;
function ...;
begin
...
end;
[begin]
(*Секція ініціалізації*)
end.
Розглянемо частини модуля докладніше. Uses у интерфейсній секції може бути потрібний, якщо в ній використовуються які-небудь ресурси з інших модулів. Процедури і функції тут тільки описуються, але не реалізуються, тобто не записуються тіла процедур і функцій (begin ... end;). У секції реалізації можна також підключати інші модулі; створювати змінні, константи, типи, процедури і функції, що «видні» тільки усередині цього модуля, ніякий інший модуль чи програма на може ними користатися. Тут же обов'язково повинні бути записані всі процедури і функції (цілком). Параметри (у дужках) після імені процедури і функції в секції реалізації можна не вказувати.
Секція ініціалізації містить ті дії, що повинні виконуватися коли наш модуль підключається до програми, тобто до того як почне працювати сама програма. Модуль graph, наприклад встановлює в секції ініціалізації значення за замовчуванням кольору ліній і фону, стиль ліній, стиль заливання т.п.
При збереженні модуля йому потрібно дати таке ж ім'я, як і після unit у тексті модуля. Імена файлів, що містять модулі, повинні мати розширення «pas», також як і програми.



Немає коментарів:

Дописати коментар