Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тема 6(теорія).doc
Скачиваний:
3
Добавлен:
13.07.2019
Размер:
324.1 Кб
Скачать

ТЕМА : ПІДПРОГРАМИ, ЇХ РІЗНОВИДИ ТА СПОСОБИ ВИКОРИСТАННЯ. ПРОЦЕДУРИ ТА ФУНКЦІЇ КОРИСТУВАЧА

(теоретичний матеріал)

Структура процедур і функцій

При створенні програми для розв’язування складної задачі виконується декомпозиція (поділ) цієї задачі на підзадачі, які в свою чергу поділяються на ще менші підзадачі і так далі, до елементарних підзадач, які легко програмуються. У мові Паскаль є різні засоби поділу програми на частини. На верхньому рівні поділу (великих задач) – це модулі, на нижньому рівні (елементарних підзадач) – це процедури і функції. Об’єктно-орієнтована методологія охоплює як верхній так і нижній рівень створення програм.

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

Структура опису процедури:

Структура опису функції:

procedure Назва(Список формальних параметрів);

function Назва(Список формальних параметрів): Тип результату;

label

const

type

var

Опис локальних міток, констант, типів і змінних

label

const

type

var

Опис локальних міток, констант, типів і змінних

procedure

function

Опис внутрішніх процедур і функцій

procedure

function

Опис внутрішніх процедур і функцій

begin

end;

Оператори

begin

end;

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

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

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

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

Слід зазначити, що поняття "глобальний" і "локальний" потрібно розуміти відносно деякої підпрограми. Розглянемо це на прикладі:

program SubProc;

var A0, B0, C0 : Integer;

procedure P1;

var A1, B1, C1 : Integer;

procedure P2;

var A2, B2, C2 : Integer;

begin

Можна використовувати як

глобальні змінні A0, B0, C0, A1, B1, C1

так і локальні A2, B2, C2

end;

begin

Можна використовувати як

глобальні змінні A0, B0, C0

так і локальні A1, B1, C1

end;

begin

Можна використовувати тільки A0, B0, C0

end.

В даному прикладі ідентифікатори A0, B0, C0 будуть глобальними для всіх підпрограм, які використовуються в програмі –  P1, P2. Іідентифікатори A1, B1, C1 будуть глобальними для всіх підпрограм, які описані в процедурі P1 (в даному прикладі для процедури P2), і одночасно локальними для процедури P1.

A2, B2, C2 оголошені у внутрішній процедурі P2 і тому є тільки локальними.

Правила визначення області дії для ідентифікаторів підпрограм:

  • діють всі ідентифікатори, визначені в підпрограмі;

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

  • локальні ідентифікатори підпрограми діють лише в межах цієї підпрограми;

  • у випадку однакових імен глобального і локального ідентифікаторів діятиме тільки внутрішній локальний ідентифікатор.

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

Класифікація способів передавання параметрів

При викликові підпрограми їй можна передавати параметри.

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

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

Для задання списку параметрів потрібно дотримуватися правил:

  • список формальних параметрів вказується при описанні підпрограми в круглих дужках;

  • список фактичних параметрів визначає кількість, порядок слідування і тип параметрів;

  • будь-якому фактичному параметру може бути надано початкове значення (за замовчуванням), яке вказується після знака рівності "="; фактичні параметри, які мають значення за замовченням, мають завершувати список формальних параметрів;

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

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

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

  • порядок задання фактичних параметрів має відповідати порядку опису формальних параметрів;

  • при наданні значень фактичних параметрів формальним має виконуватись сумісність їх типів.

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

  1. за механізмом передавання:

    1. передавання за значенням;

    2. передавання за адресою;

  2. за взаємодією підпрограми, яка викликає, і підпрограми, яку викликають:

    1. вхідний параметр;

    2. вихідний параметр;

    3. вхідний і вихідний параметр.

Відповідно до цього теоретично можливі 6 способів передавання параметрів:

  1. вхідний параметр за значенням;

  2. вихідний параметр за значенням;

  3. вхідний і вихідний параметр за значенням;

  4. вхідний параметр за адресою;

  5. вихідний параметр за адресою;

  6. вхідний і вихідний параметр за адресою.