
Лабораторна робота №18
Тема: Використання процедур і функцій модуля CRT
Мета: Одержання практичних навичок опису модулів та їх використання в програмах на мові програмування Паскаль.
Теоретична частина.
Модуль (UNIT) – програмна одиниця, текст якої компілюється незалежно (автономно). Вона включає означення констант, типів даних, змінних, процедур та функцій, що є доступними для використання в основних визиваючих програмах. Однак їх внутрішня структура (тексти програм і т.п.) є закритою для користувача.
Розглянемо структура модуля. До цього часу ми користувались вже готовими модулями Wincrt, Windos. Сам по собі модуль складається з наступних частин:
UNIT Заголовок,
INTERFACE Інтерфейсна частина,
IMPLEMENTATON Реалізаційна частина,
BEGIN
Ініціалізаційна частина.
END;
Заголовок модуля мало відрізняється від заголовка програми. В модулі замість зарезервованого слова “PROGRAM” використовується слово “UNIT”. Однак є одна особливість у виборі імені модуля. Вибираючи ім’я програми, ми намагаємося, щоб воно не співпадало із власними іменами об’єктів (процедур, функцій тощо) всередині програми. У модулі до цієї вимоги додається ще вимога співпадання імені модуля з іменем файла, в якому він зберігається.Тому ім’яодуля не може складатисябільш ніж восьми символів.
Новою за відношенням до програми є в модулі інтерфейсна частина (INTERFACE). В цій частині описуються (декларуються) всі константи, типи даних і змінні, процедури і функції, доступні в модулі для використання зовнішніми програмами.Ця частина несе всю інформацію, необхідну для використання процедур та функцій, означених у модулі.
В інтерфейсній частині є можливість зробити доступними для використання існуючі готові модулі, вказавши їх ім’я в USES директиві.
Слідом за оператором USES в інтерфейсній частині описуються доступні ззовні й необхідні для описаних процедур та функцій означення типів даних, констант та змінних.
Всі процедури та функції, що є доступними для загального використання та означені в даному модулі, повинні бути описаними в інтерфейсній частині своїм рядком-заголовком з вказуванням типів параметрів. Сам текст програми цих процедур та функцій знаходиться (з дублем їх заголовка) в реалізаційній частині.
Немає необхідності згадувати в інтерфейсній частині всі процедури та функції, що використовуються і реалізаційній частині. На практиці можлива ситуація, коли інтерфейсна частина взагалі нічого не містить, так як показано у прикладі “Leer.pas”, що містить модуль “Leer”. цей модуль, звичайно, не несе змістового навантаження, але за формою цілком коректний та дієздатний.
UNIT Leer;
{LEER.PAS – TP версія
після 5.0} INTERFACE
{Ця
частина пуста.} IMPLEMENTATION USES
WinCrt; BEGIN
ClrScr; END.
Реалізаційна частина (IMPLEMENTATION) – це частина, в якій означуються процедури та функції. Так саме, як і в звичайній програмі, тут можна означити глобальні (для модуля) змінні, типи даних та константи разом з означення процедур та функцій. Означені тут типи даних та структури даних є недосяжними з зовні й можуть використовуватись для своїх потреб лише програмами, що входять до реалізаційної частини.
Так само, як і інтерфейсна частина, реалізаційна частина може бути пустою. Таку можливість часто використовують, коли необхідно означити деякі загальні для багатьох програм типи даних, константи та змінні. Маючи таке означення в рамках деякого проекту, легко включити його в усі програми (головну та залежні) простою директивою USES.
Ініціалізаційна частина модуля відповідає головній програмі – BEGIN .. END. Наведені тут оператори виконуються першими, тобто ще до тієї головної програми, в яку включено даний модуль.
Для ілюстрації повернемось до нашого прикладу “Leer”-модулю. Він містить в своїй ініціалізаційній частині оператор “ClrScr”, який взято в операторні дужки “BEGIN … END”. При виконанні програми “TUTWENING.PAS”
PROGRAM TutWenig; {
TUTWENING.PAS
Ілюструє правило
виконання операторів ініціалізаційної
частини включеного модуля ПЕРЕД
операторами, що входять в головну
програму.}
USES
Leer;
BEGIN
WriteLn(‘Hallo!!!’); END.
Спершу відбудеться ініціалізація включеного сюда модуля “Leer”, тобто виконається оператор “ClrScr”, й екран очиститься.далі розпочнеться виконання головної програми, й на екран буде видано повідомлення “Hallo!!!”.
Зауважимо, що при компіляції модуля генерується файл з розширенням .TPU