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

    Тема:

    Процедури і функції

    ПЛАН

    3ЛЕКЦІЯ №3

    3.1Загальні відомості

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

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

    3.4Рекурсія

    3.5Процедурні (функціональні) типи

    Час:

    4 год.

    Література:

    [1], [2], [3], [4], [5]

    1. Загальні відомості

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

Підпрограма– відносно самостійний фрагмент програми, оформлений особливим образом і має ім'я.

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

У мові Паскаль існує два види підпрограм:

  • процедури;

  • функції.

Структура опису будь-якої підпрограми (процедури або функції) аналогічна структурі програми і містить наступні розділи:

  1. заголовок;

  2. розділ описів;

  3. розділ операторів.

Розділ описів і розділ операторів утворять тіло підпрограми (процедури або функції).

Заголовок процедуримає вид:

Procedure ім'я(список параметрів);

Заголовок функціїмає вид:

Function ім'я(список параметрів): тип результату;

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

Функція– це підпрограма, що повертає значення. Тому в її розділі операторів завжди присутній присвоювання виду:

ім'я функції:=вираження;

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

Функція може повертати значення тільки простих типів (символьний, речовинний, цілий, логічний), строкового чи вказівного типів.

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

Program NWrt;

{Опис процедури}

Procedure NWrite(Ch:Char;N:Integer);

Var

i:Integer;

Begin

For i:=1 to N do Write(Ch);

End;

Var

X:Char;

N:Integer;

{Розділ операторів програми}

BEGIN

Write('Увести символ=');

ReadLn(X);

NWrite(X,10); {Виклик процедури}

END.

При складанні блок-схем алгоритмів подібних програм керуються наступним:

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

  2. після блок схеми основної програми приводять блок-схеми її підпрограм;

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

Таким чином, блок-схема алгоритму приведеної вище програми:

Блок-схема алгоритму процедури NWrite

Приклад використання функції(обчислення кореня ступеня N з числа X)

Program NRoot;

{Опис функції}

Function Root(X:Real;N:Byte):Real;

Begin

If X=0 then Root:=0

Else Root:=Exp(Ln(X)/N);

End;

Var R:Real;

BEGIN

R:=Root(27,3); {Обчислення за допомогою заданої функції}

WriteLn(‘Корінь=’,R:8:4);

END.

Виклик підпрограм

При виклику процедури або функції приводиться її ім'я й у дужках – список параметрів (якщо він є).

Виклик процедури в основній програмі є оператором.

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

Виклик функції є не оператором, а елементом вираження.

Семантика виклику функції:припиняється обчислення вираження, обчислюються значення передані функції параметрів (якщо вони є), виконуються оператори в тілі функції, потім повернуте функцією значення використовується для продовження обчислення вираження.

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