Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
3
Добавлен:
02.03.2016
Размер:
78.85 Кб
Скачать
    1. Область видимості ідентифікаторів

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

Основні правила видимості ідентифікаторів

  1. Якщо ідентифікатор описаний у розділі описів основної програми, то він є глобальним. Його можуть використовувати всі процедури і функції цієї програми.

  2. Якщо ідентифікатор описаний усередині підпрограми, то він є локальним і доступний тільки усередині цієї підпрограми.

  3. Якщо ім'я глобального ідентифікатора збігається з ім'ям локального, то усередині підпрограми діє локальний ідентифікатор, тобто оголошення локального ідентифікатора усередині підпрограми скасовує дію глобального.

  4. Якщо в підпрограмі описані інші підпрограми ( чипроцедури функції), то область видимості описаних у ній ідентифікаторів поширюється і на ці вкладені підпрограми. Ідентифікатори, описані в даній підпрограмі, є глобальними для вкладених у неї підпрограм.

    1. Обмін даними між програмою і підпрограмами

Обмін даними між основною програмою і підпрограмами може виконуватися наступними шляхами:

  1. за допомогою глобальних перемінних;

  2. через параметри;

  3. через значення, що повертається, (для функцій).

Обмін даними за допомогою глобальних перемінних

Глобальні перемінні доступні усередині будь-якої підпрограми, де немає однойменних локальних перемінних. Але використовувати даний спосіб не рекомендується, тому що це утрудняє налагодження і робить підпрограму залежної від іншої програми (неможливість виділити підпрограму в окремий бібліотечний модуль).

Передача даних через параметри

У заголовку будь-якої підпрограми ( чипроцедури функції) може міститися список параметрів. Ці параметри призначені для обміну даними між підпрограмою й основною програмою. Оператори тіла підпрограми розглядають список параметрів як продовження розділу описів. Усі перемінні з цього списку можуть використовуватися у вираженнях усередині підпрограми.

Параметри, що вказуються в заголовку підпрограми при її описі, називаються формальними параметрами.

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

При виклику підпрограми обов'язково повинне дотримуватися відповідність між формальними і фактичними параметрами, тобто підпрограмі повинна бути передана стільки параметрів, скільки зазначене в її заголовку; типи фактичних параметрів повинні відповідати типам формальних параметрів.

Існує два способи передачі параметрів

  • за значенням(параметра-значення)

  • почи посиланню за адресою (параметрі-перемінні).

Заголовок процедури з параметрами-значеннямимає вид:

Procedure Ім'я(параметр1,параметр2:тип1; … параметр:тип);

При виклику процедури в комірки пам'яті формальних параметрів (параметр1 … параметр) передаються копії відповідних фактичних параметрів, тому ніякі дії в тілі процедури не в змозі змінити значення фактичних параметрів.

Як фактичні параметри-значення можуть використовуватися константи, перемінні чи вираження.

Заголовок процедури з параметр-переміннимимає вид:

Procedure Ім'я(var параметр1,параметр2:тип1; … var параметр:тип);

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

Як фактичні параметри в цьому випадку можна використовувати тільки перемінні. Використання констант, виражень і безпосередніх значень не допускається.

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

Program TestAddr;

Uses CRT;

{Процедура для обміну}

Procedure Obmen(var a,b:Integer);

Var Buffer:Integer;

Begin

Buffer:=a;

a:=b;

b:=Buffer;

End;

{Оголошення глобальних перемінних}

Var

x,y:Integer;

BEGIN

ClrScr; {Очищення екрана}

Write('Увести значення x,y=');

ReadLn(x,y); {Уведення вихідних даних}

Obmen(x,y); {Виклик процедури обміну}

WriteLn('Перемінні після обміну');

WriteLn('x=',x,' y=',y); {Виведення результатів}

ReadLn;

END.

Існує також різновид передачі по посиланню – параметра-константи. Принцип дії такої ж як і у випадку з параметрами перемінними, але зміни параметрів у тілі підпрограми не допускаються.

Заголовок процедури з параметрами-константамимає вид:

Procedure Ім'я(Const параметр1,параметр2:тип1; …Const параметр:тип);

Приклад – Програма, що містить процедуру виведення на екран прізвища автора.

Program Avt;

Uses CRT;

Const

Avtor='Іванов И.П.'; {ПІБ автора}

{Процедура виведення ПІБ автора}

Procedure PrintAvtor(Const A:String);

Begin

WriteLn('Програму розробив:',A);

End;

BEGIN

PrintAvtor(Avtor);

ReadLn;

END.

Соседние файлы в папке Алгоритмизация