Смекни!
smekni.com

Програмування в середовищі Pascal (стр. 7 из 16)

означає, що викликається вищенаведена процедура INP4 для введення k цілих чисел в масив М. У цьому випадку параметр k – типу Integer, а M –

масив типу MASSIV, тобто ці змінні описані в зовнішній програмі так:

var k:inreger; M:MASSIV;

Природно, до звернення до процедури змінній k має бути привласнено певне значення.

3.7.2 Функції

Функція призначена для обчислення якого-небудь значення. У цієї підпрограми дві основні відмінності від процедури.

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

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

Приклад. Функція обчислення факторіала числа N

FUNCTION FAKTORIAL (N:Integer):Integer; var fakt:Integer; I:Integer;

Begin fakt:=1; for I:=2 to N do fakt:=fakt*I; faktorial:=fakt;

end;

Виклик функції також відрізняється від виклику процедури. Для виклику функції в основній програмі або іншій підпрограмі слід у виразі, в якому необхідно використати значення функції, вказати ім'я цієї функції із списком фактичних параметрів, які повинні співпадати за кількістю, типом і значенням з формальними параметрами функції. Наприклад:

P:=SQR(T)/FAKTORIAL(I);

У цьому операторі SQR(T) – виклик стандартної функції піднесення до квадрату з фактичним параметром T; FAKTORIAL(I) – виклик функції обчислення факторіалу з фактичним параметром I, він має бути типу Integer.

3.7.3 Формальні і фактичні параметри

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

При зверненні до підпрограми формальні параметри замінюються на еквівалентні їм фактичні параметри головної (зовнішньої) програми (підпрограми). Типи відповідних фактичних і формальних параметрів мають бути ідентичними.

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

параметри-значення (ці параметри в зовнішній програмі підпрограма не

може змінити);

параметри-змінні (ці параметри підпрограма може змінити в зовнішній програмі).

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

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

Наприклад, в описаній вище процедурі INP4 параметр MAS є параметром-змінною, а параметр N – параметром-значенням. Тому до цієї процедури допустимі такі звернення:

INP4(M,20)

INP4(M,k+2)

INP4(A,k+SQR(m))

Змінні k і m повинні мати тип Integer, а M і А - тип MASSIV, тобто в основній програмі ці змінні мають бути описані, наприклад, так:

var k,m: integer; M,A: MASSIV;

3.8 Зовнішні модулі

3.8.1 Призначення модулів

Наявність модулів в Turbo Pascal дозволяє створювати і

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

Модуль (UNIT) є сукупністю констант, типів, змінних, процедур і функцій, відповідним чином оформлених і записаних на магнітний диск у вигляді окремого файла.

За допомогою ключового слова USES, за яким йде ім'я модуля, цей модуль (точніше, його текст) можна зробити доступним в будь-якій програмі або іншому модулі.

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

3.8.2 Структура модуля

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

Заголовок модуля складається з ключового слова UNIT, за яким йде унікальний ідентифікатор (ім'я) модуля:

UNIT <ім'я модуля>;

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

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

Потім слідують описи підпрограм модуля звичайної структури (див. п.3.7).

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

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

3.8.3 Використовування модуля

Як вже наголошувалося, описи модуля можна використовувати в будьякій програмі, заявивши про це за допомогою ключового слова USES:

USES <ім'я 1> ,...,<ім'я n> ;

Усі описи констант, типів, змінних, а також усі підпрограми, що містяться в інтерфейсній частині модулів <ім'я i>, стають доступними основній програмі так, якби вони були визначені в самій програмі.

3.8.4 Стандартні модулі

У системі Turbo Pascal є вісім стандартних модулів. Два з них – Turbo3 і Graph3 – призначені для сумісності з більш ранніми версіями Pascal (3.0) і практично не використовується. Інші шість забезпечують:

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

2 Crt – управління введенням з клавіатури, виводом на екран дисплея, генератором звуку.

3 Dos – виконання деяких, найбільш вживаних, функцій операційної системи.

4 Overlay – побудову величезних програм, що не поміщаються повністю в пам'яті.

5 Graph – роботу екрану в графічному режимі, виконання графічного виводу.

6 Printer – оголошення змінної текстового файла lst і зв’язування її з драйвером принтера. Після цього можна виводити інформацію на принтер за допомогою оператора WRITE . Наприклад:

WRITE(lst,’ Друкування на принтері’);

Модуль Graph знаходиться у файлі Graph.tpu . Решта п'ять модулів – у файлі Turbo.tpl .

3.8.5 Стандартний модуль Crt

Звичайно екран дисплея використовується в текстовому режимі, в якому екран розглядається як таблиця, що складається з 25 рядків і 80 колонок (можливі і інші розміри таблиці). У кожну позицію цієї таблиці (клітину) можна помістити будь-який з 256 символів, що є в ЕОМ.

Для ідентифікації символів на екрані використовується система координат, початок якої розташований в лівому верхньому кутку, а вісь У направлена вниз. Координати вимірюються цілими числами. Відлік починається з 1. Фактично, перша координата – це номер стовпця, а друга – номер рядка. Розглянемо деякі підпрограми стандартного модуля Crt.