Студопедия

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

Разделы сайта

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






BEGIN Основний блок програми; END.






Загальний вигляд процедури:
procedure < Ім'я процедури> (< список формальних параметрів>);
< описова частина>
begin
< виконувана частина або тіло процедури>
end;

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

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

Procedure Syma (x, y: integer; Var s: integer); begin s: = x+y; end;... a: = 23; b: = -5; Syma (a, b, sym);... алг Сума (ціл х, у, ціл s) арг х, у рез s поч s: = x+y кін... a: = 23; b: = -5; Сума (a, b, sym);...

У нашому прикладі змінні x, y, s - формальні параметри, a, b, sym - фактичні. Причому при викликові процедури описано 3 змінних і в заголовку процедури теж 3 змінних, до того ж однакових типів.
Запис типу Procedure Syma (x, y: integer; Var s: real); при умові, що a, b, sym: integer, буде некоректний.

Що ж відбувається при викликові процедури?

При викликові процедури змінні a= 23, b= -5.
У процедурі виділяється пам'ять для змінних х та у, і вони набувають відповідно значень 23 і-5. Для змінної ж s нове місце в пам'яті не виділяється, а використовується та частина пам'яті, яку займає зміна sym. Тому всі операції, які будуть здійснені над змінною s, впливатимуть і на значення змінної sym.
Після завершення роботи процедури змінні х, у і s знищуються. Значення змінних х і у буде втрачено, а значення змінної s збережеться в фактичному образі змінної sym.

У зв'язку з цим з'являються 2 нових поняття: парметри-значення та параметри-змінні.
Під час виконання процедури параметрам-значенням відводиться нове місце в пам'яті, тобто створюється їх копія, куди передаються відповідні значення фактичних параметрів; над ними виконуються дії, вказані в процедурі. Після завершення роботи процедури всі ці значення знищуються, а їх значення втрачаються.

Зрозуміло, що параметри-значення слід використовувати тоді, коли у процедуру передаються величини, які будуть брати участь в ній у деяких обчисленнях і які після повернення в основну програму повинні зберегти свої початкові значення.
При звертанні до процедури параметрам-значенням можна передавати сталі величини. Наприклад, Syma (-23, 678, sym).

Параметри-змінні, на відміну від параметрів-значень, які вони одержали в процедурі. Справа в тому, що при звертанні до процедури для них не створюються нові місця в пам'яті і вони використовують ті самі області пам'яті, які відведені відповідним фактичним параметрам. Тому всі змінні, які відбуваються над відповідними фактичними параметрами, насправді відбуваються і над їхніми фактичними образами. Щоб відрізняти параметри-значення від параметрів-змінних, перед останніми вказують службове слово Var.
При звертанні до процедури параметрам-змінним не можна передавати значення сталих величин.

Зверніть увагу, що допоміжний алгоритм, який ми перекладаємо як процедуру, нічим не відрізняється від того, який перекладаємо як основну програму. Змінні, які вказані в заголовку алгоритму описуються в тому ж порядку і з вказівкою типів. Змінні, описані як аргументи, є змінними-значеннями. Перед змінними, які описуються як результати, в заголовку обов'язково вказується службове слово Var (вони є параметрами-змінними).






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.