Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
07.02.2016
Размер:
100.35 Кб
Скачать

3.2. Загальна структура підпрограми.

Модуль може бути оформлений у вигляді підпрограми - окремої синтактичної конструкції, яка має власне ім’я. Поняття підпрограми як окремої іменованої частини програми з своїм локальним контекстом імен є у багатьох мовах програмування основним методом структурування програм. Сучасний підхід до розробки програм заохочує явне оформлення у вигляді підпрограм будь-якого досить самостійного та закінченого програмного фрагменту. «Викликати» підпрограму - це активізувати дії, записані в її тілі. Викликати підпрограму можна в деякої точці програми через ім’я підпрограми.

Крім завдання послідовності дій, будь - яка підпрограма може містити опис деякої сукупності локальних об’єктів - констант, типів, змінних і т. д. Ці об’єкти призначені для організації дій у підпрограмі та мають сенс тільки всередині даної програми.

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

Структура підпрограми повторює структуру Pascal-програми. Для опису підпрограми в загальному випадку треба вказати три основні компоненти:

  • інтерфейс підпрограми: інформацію, яка необхідна для її виклику;

  • локальний контекст підпрограми: сукупність описів робочих об’єктів, з якими виконуються дії;

  • власно дії (оператори), які складають зміст підпрограми.

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

Підпрограми в мові програмування Pascal розділяються на два види: функції та процедури. Хоча вони мають один і той же сенс та аналогічну структуру, процедури та функції різняться призначенням та способом їх використання. Процедури слугують для завдання сукупності дій, направлених на зміну зовнішньої по відношенню до них програмного стану. Суть функції полягає в першу чергу в тому, щоб визначити алгоритм обчислення нового значення деякого типу. В цьому функції подібні до виразу, який також обчислює значення. Іноді функцію називають значенням, яке визначається за допомогою алгоритму.

Області дії імен.

Імена об’єктів, які описано в блоці підпрограми, по визначенню вважаються відомими тільки в межах даного блоку. Це ж відноситься і до імен формальних параметрів. Формальні параметри та об’єкти, що описані в блоці підпрограми, утворюють власний локальний контекст даного блоку. Серед описів блоку можуть бути також підпрограми.

В заголовку підпрограми може бути вказаний список формальних параметрів. При виклику підпрограми замість них вказують список фактичних параметрів. Між ними повинна виконуватись відповідність типів.

Параметри підпрограми в мові Pascal мають три способи їх завдання:

  • параметри - значення;

  • параметри - змінні;

  • параметри, які не мають типу.

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

При описі параметрів-змінних ставиться службове слово var, після списку параметрів слідує опис типу. Привиклику підпрограми у області пам’яті, яка виділяється для локальних даних та формальних параметрів, виконується копіювання адрес фактичних параметрів в область, що відповідає формальним параметрам. Під час роботи підпрограми зміни значень формальних параметрів прямо через адресу впливає на зміст клітинок пам’яті фактичних параметрів. При закінченні роботи підпрограми пам’ять, що виділяється під формальні параметри та локальні данні, вивільняється, а результат зразу одержуємо у відповідній області фактичних параметрів.

Проста програма демонструє використання параметрів-значень та параметрів-змінних.

procedure pr(a:integer; var b,c:integer);

begin

a:=a+3;

b:=b-2;

c:=a + b;

writeln(‘a=’,a, ‘b=’,b,’c=’,c);

end;

begin

a:=5;

b:=3;

writeln(‘a=’,a, ‘b=’,b,’c=’,c);

pr(a,b,c);

writeln(‘a=’,a, ‘b=’,b,’c=’,c);

end.

При виконанні цієї програми на екрані з’явиться наступне:

a=5b=3c=0 (перед виконанням процедури)

a=8b=1c=9 (під часвиконання процедури)

a=5b=1c=9 (післявиконання процедури)

Змінна a є параметром - значенням, тому після виконання процедури приймає старе значення 5. Змінні bтаcє параметрами-змінними, тому після виконання процедури залишають значення, які отримали під час виконання процедури. Це саме стосується і функції.

При використанні безтипових параметрів ставиться службове слово var, після якого слідує список формальних параметрів без вказівки на їх тип. Єдиним способом використання такого параметру є «надання» йому визначеного типу в тілі програми. Це можна зробити, якщо використати до нього операцію приведення типу або за допомогою опису в тілі підпрограми локальну змінну визначеного типу з суміщенням її в пам’яті з нетипізованим параметром.

procedure a(var d);

Соседние файлы в папке конспект лекцій 1 паск