Вивчення Turbo Pascal

Вивчення Turbo Pascal у школі - це просто,
якщо користуватися цим сайтом

  

   
  Головна
  Вступ до програмування
  Основи програмування мовою Паскаль
  Алгоритмічні структури
  Підпрограми
  Структуровані типи даних
  Графіка
  Автор сайту
  Карта сайту
   
 
 

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

 

Підпрограмою називається іменована, логічно закінчена група операторів мови, яку можна викликати для виконання будь-яку кількість разів із різних місць програми.
У мові Паскаль для організації підпрограм використовуються процедури і функції.
Процедура - це незалежна поіменована частина програми, призначена для виконання визначених дій. Вона складається з тіла і заголовка. За структурою її можна розглядати як програму в мініатюрі. Після однократного опису процедуру дозволяється викликати за іменем з наступних частин програми. Використання імені процедури в програмі називається викликом процедури. Ім'я процедури не може знаходитися у виразі у якості операнду.
Функція відрізняється від процедури тим, що, по-перше, передає в точку виклику скалярне значення (результат своєї роботи), а по-друге, ім'я функції може входити у вирази, як операнд. Функція, якщо вона зустрічається у виразі, називається покажчиком функції або звертанням до функції.
Усі процедури і функції мови Паскаль підрозділяються на дві групи:
вбудовані;
визначені користувачем.
Вбудовані (стандартні) процедури і функції є частиною мови і можуть викликатися за іменем без попереднього опису в розділі описового блока. З багатьма з них ви вже знайомилися в попередніх розділах.
Процедури і функції користувача організовуються самим програмістом відповідно до синтаксису мови і являють собою локальні блоки. Попередній опис процедур і функцій користувача є обов'язковим.
Функція, визначена користувачем, складається з заголовка і тіла функції. Заголовок містить зарезервоване слово Function, ідентифікатор (ім'я) функції та, укладений у круглі дужки, необов'язковий список формальних параметрів і тип значення, що повертається функцією.
Формат опису:
Function <ім'я> [(формальні параметри)]:<тип результату>;
Ім'я функції - унікальний у межах блока ідентифікатор. Результат, що повертається, може мати будь-який простий тип і тип string.
Тіло функції являє собою локальний блок, за структурою аналогічний програмі:
Function <ім'я> [(формальні параметри)]:<тип результату>;
[<розділи описів>;]
begin
<розділ операторів>
end;

У розділі операторів повинен перебувати хоча б один оператор, що присвоює ідентифікатору функції значення. Якщо таких операторів декілька, то результатом виконання функції буде значення останнього оператора присвоювання.
Звертання до функції здійснюється за іменем з необов'язковою вказівкою списку аргументів. Кожен аргумент повинен відповідати формальним параметрам, зазначеним у заголовку, і мати той же тип.
Формат звертання:
Y:=<ідентифікатор функції > [(фактичні параметри)];
Функції можуть повертати значення цілих, дійсних, булівских, літерних і рядкових типів.
Опис процедури включає заголовок (ім'я) і тіло процедури. Заголовок складається з зарезервованого слова Procedure, ідентифікатора (імені) процедури і необов'язкового списку формальних параметрів із вказівкою їх типу, який укладається в круглі дужки .
Формат опису:
Procedure <ім'я> [(формальні параметри)];
Приклад:
Procedure Korrekt;
Procedure Sort (A:byte);

Ім'я процедури - ідентифікатор, унікальний у межах програми. Тіло процедури являє собою локальний блок, за структурою аналогічний програмі:
Procedure <ім'я> [(формальні параметри)];
[<розділи описів>;]
begin
<розділи операторів>
end;

Зверніть увагу, що як формальні параметри, так і розділ описів у процедурі може бути відсутній.
Щоб звернутися до процедури, треба використати оператор виклику процедури. Він складається з ідентифікатора (імені) процедури і списку фактичних параметрів, що відділені один від одного комами і знаходяться у круглих дужках. Якщо процедурі не передається ніяких параметрів, то фактичні параметри не вказуються.
Формат виклику процедури:
<ідентифікатор> [(фактичні параметри)];
Параметри забезпечують механізм заміни, який дозволяє виконувати процедуру з різними початковими даними. Між фактичними параметрами в операторі виклику процедури і формальними параметрами у заголовку опису процедури встановлюється взаємо-однозначна відповідність у результаті їхнього перебору зліва направо. Фактичні параметри за кількістю і типами повинні дорівнювати кількості і типам формальних параметрів.
Параметри, за допомогою яких здійснюється обмін значеннями змінних між підпрограмами та програмою, що їх викликає, можуть мати будь-який тип, в тому числі структурований. Існують два типи параметрів:
параметр-значення;
параметр-змінна.
Група параметрів, перед якими відсутнє зарезервоване слово Var, називається параметрами-значеннями.
Наприклад, в описі Procedure Korrect(S,K:real) S і K - параметри-значення. Формальний параметр-значення обробляється, як локальна стосовно процедури або функції, змінна. Зміни формальних параметрів-значень не впливають на відповідні значення фактичних параметрів.
Група параметрів, перед якими знаходиться ключове слово Var, називається параметрами-змінними. Наприклад, в описі Procedure Obr(Var A,B:integer); А та В - параметри-змінні. Параметр-змінна використовується в тому випадку, якщо значення повинно бути передане з процедури в блок, що її викликає. При активізації процедури або функції формальний параметр-змінна заміщується фактичною змінною, а тому будь-які зміни в значенні формального параметра-змінної відбиваються на фактичному параметрі.
І в тому, і в іншому випадку тип фактичного параметра повинен збігатися з типом формального. Якщо формальний параметр має рядковий тип, йому надається атрибут довжини, рівний 255, а тому і фактичний параметр в цьому випадку повинен також мати рядковий тип з атрибутом довжини, що дорівнює 255. У якості параметра-змінної може використовуватися будь-який тип, в тому числі файловий.
Область дії ідентифікаторів.
Для правильного визначення області дії ідентифікаторів при використанні в програмі процедур і функцій необхідно притримуватися наступних правил:

    1. Кожний ідентифікатор повинен бути описаний перед тим, як він буде використаний.
    2. Ідентифікатор діє у межах блоку, в якому він описаний.
    3. Всі ідентифікатори в одному блоці повинні бути унікальними, тобто не повторюватися.
    4. Однакові ідентифікатори можуть бути по-різному визначені у кожному окремому блоці, але це вважається поганим стилем програмування і тому не рекомендується в різних блоках програми використовувати змінні з однаковими іменами..
    5. Якщо ідентифікатор підпрограми користувача збігається з ім'ям стандартної процедури або функції, то вони стають недоступними в межах області дії підпрограми, оголошеної користувачем, тобто стандартна функція ігнорується, а виконується програма користувача.