Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция Pascal_mat №11_12.doc
Скачиваний:
7
Добавлен:
02.12.2018
Размер:
92.16 Кб
Скачать

Процедури

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

Стандартні процедури

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

До таких стандартних процедур відноситься вже відома нам команда ClrScr. Процедурами є й оператори введення/виведення Read, Readln, Write і Writeln. Поряд із цими стандартними процедурами в мові Паскаль широко використовуються також наступні:

  • Delay(i) - здійснює затримку виконання програми на i мілісекунд (тисячних часток секунди);

  • Exit — ця процедура не має параметрів. Вона здійснює вихід із процедури або функції в основну частину програми (не плутати з командою Exit меню системи програмування Турбо Паскаль, що закриває систему програмування й робить вихід у середовище операційної системи);

  • GotoXY(a,b) - переводить курсор у точку екрана з координатами (а, b);

  • Halt - ця процедура не має параметрів. Вона завершує виконання програми й передає керування операційній системі.

Створення власних процедур

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

Загальний вид опису процедури наступний:

Procedure <заголовок процедури >;

<розділ описів процедури >;

Begin <розділ операторів процедури > end;

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

Формат опису: Procedure <ім’я> (формальні параметри);

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

Формат виклику процедури: <ім’я процедури> (фактичні параметри);

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

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

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

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

Приклад заголовка процедури: рrocedure vspomog (a, b: integer; var с, d: real);

де: vspomog – ім’я процедури; a, b, с, d – імена формальних параметрів, причому а й b є параметрами-значеннями, а с і d – параметрами-змінними.

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

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