Тема 3 Регулярні та змінні типи даних. Процедури і функції

Лекція 11

 

 Процедури з параметрами. Формальні і фактичні параметри.  Параметри-значення і параметри-змінні. Принцип локалізації

Правила запису формальних параметрів:

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

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

Види формальних параметрів:

- параметри-аргументи (або параметри-значення) – це вхідні данні для процедури;

- параметри-результати (параметри-зміні) – параметри, через які можна повертати результати роботи процедури в основну програму.

Як їх відрізнити?

Перед списком параметрів-результатів кожного типу записують слово var. Параметри-аргументи оголошуються без нього.

Розглянемо приклад процедури з назвою Cina, яка визначає вартість k грамів цукерок, якщо вартість 1 кг дорівнює 28 грн 60 коп.

 

procedure Cina (k:integer; var c:real);

                   begin

                            c:=k*28.6;

                   end;

 

у наведеному прикладі k – формальний параметр-аргумент, c – формальний параметр-результат.

До процедури звертаються з розділу команд основної програми або іншої підпрограми. Процедуру викликають за допомогою команди виклику:

<ім’я  процедури> (<список фактичних параметрів>);

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

Між фактичними і формальними параметрами має бути відповідність за кількістю і типами, тобто:

- кількість формальних і фактичних параметрів повинна бути однакова;

- тип кожного фактичного параметра повинен збігатися з типом відповідного формального параметра.

Проте відповідні фактичні та формальні параметри можуть мати різні імена.

Виклик процедури здійснюється так: значення фактичних параметрів присвоюється відповідним формальним параметрам процедури, виконується процедура, визначаються параметри-результати, значення яких надаються (повертаються) відповідними фактичними параметрами у команді виклику.

Зупинимося на одному правилі описання і використання змінних.

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

Таким чином, процедури можуть отримувати і повертати значення не тільки через параметри-результати, але й через глобальні змінні (тому у процедурі може і не бути параметрів).

Наприклад, скласти програму, яка виводить на екран j рядків, що складаються із 5 зірочок.

Program Stars;

Var    i, j : integer;           {і – кількість зірочок у рядку; j –

                                       кількість  рядків зірочок}

procedure StarLine (zir:integer);  {zir –к-ть  зірочок у рядку }

         var n : integer;                 {локальна змінна процедури}

begin

         for n:=1 to zir do

write (’*’);

end;

begin

         write (’введіть кількість рядків зірочок’); read (j);

write (ведіть кі-сть зірочок у рядку ); read (і);

         for i:=1 to j do

         Starline (k);                   { виклик процедури}

readln;       

end.

 

Контрольні запитання:

1. Що тааке формальні параметри.

2. Параметри-значення і параметри-змінні.