Pascal/Модулі
Власні модулі
ред.Модулі на паскалі зберігаються в двох типах файлів: .pas
містять текст модуля, та .tpu
, які містять готові відкомпільовані модулі, які можуть використовуватись іншими програмами.
В Turbo Pascal модуль (unit) вважається окремою програмою і створюється як звичайний .pas - файл, оформлений за такою схемою:
unit імя_модуля; {Заголовок модуля}
interface {позначення початку розділу інтерфейсу.}
uses список_використовуваних_модулів
type …
const …
var …
procedure …
function …
implementation {Заголовок розділу реалізації}
{Опис локальних модулів, типів, констант, змінних, процедур і функцій, а також процедур і функцій, заголовки яких оголошені в розділі interface}
begin
{Розділ ініціалізації.}
end.
Як і програма, текст модуля розпочинається з заголовку і закінчується службовим словом еnd з крапкою. Але заголовок модуля розпочинається не зі слова program, а зі службового слова unit і є обов’язковим. Після слова unit вказується ім’я модуля, яке повинно співпадати з ім’ям файлу, який містить модуль (наприклад, для заголовка unit module;
текст модуля повинен зберігатися в файлі module.pas
, в результаті компілювання створюється файл module.tpu
). Завершується заголовок крапкою з комою. Наведене в заголовку ім’я модуля вказують при його підключенні до програми або іншого модуля.
За заголовком модуля йде його інтерфейсна частина, яка розпочинається зі службового слова interface
. В ній перераховуються програмні ресурси (константи, типи, змінні, заголовки процедур і функції), які призначені для використання іншими модулями і програмами. Описані тут елементи називаються видимими (зовнішніми). Вимоги до написання тут такі самі, як і в Turbo Pascal, але для процедур і функцій вказують лише заголовки, причому директиви external
, forward
і assembler
не ставляться.
Відмітимо також, що в розділі uses
перераховуються імена модулів, які використовуються в даному випадку. Але вони не доступні програмам, які використовують даний модуль. Тому щоб отримати в програмі доступ до ресурсів модуля, його необхідно оголосити явно, а не через інший модуль.
Після інтерфейсної частини йде розділ реалізації, який розпочинається зі службового слова implementation
. Тут оголошуються невідомі поза модулем внутрішні елементи (їх ще називають невидимими або схованими) - локальні змінні, константи, типи, процедури і функції, а також модулі, ресурси яких використовуються всередині даного модуля. Крім того, тут здійснюється реалізація тих процедур і функцій, заголовки яких описані в інтерфейсній частині і які відомі поза модулем. Такий метод опису процедур і функцій здійснюється за наступною причиною: користувачу для звернення до підпрограми достатньо знати її ім’я і список параметрів. Знання способу її реалізації зовсім не потрібне. Якщо здійснюється модифікація підпрограми, яка розміщена в модулі, то достатньо змінити тільки її тіло в розділі реалізації, не змінюючи заголовку інтерфейсної частини. В зв’язку з цим програми, які використовують таку підпрограму, не змінюються. Якщо підпрограма оголошена в інтерфейсній частині, то в розділі реалізації її заголовок зазвичай надається тільки у вигляді імені без вказування переліку і типів параметрів, а також типу значення що повертається для функції.
Розділи іnterface
та implementation
обов’язкові, навіть якщо вони пусті, заголовки вказати необхідно.
Після розділу реалізації в модулі розташовується розділ ініціалізації, який розпочинається зі слова begin
, за яким йдуть оператори, які будуть виконуватися до операторів з тіла програми (наприклад, встановлення початкових значень для деяких змінних, оголошених в модулі). Розділ ініціалізації не є обов’язковим, тому якщо при підключені модуля не потрібно робити ніяких початкових встановлень, він може не використовуватися (разом із службовим словом begin
).