Слайд 2 Модуль Паскаля - це автономно компільована програмна одиниця, що включає
в себе різні компоненти розділу описів (типи, константи, змінні, процедури
й функції) і, можливо, деякі виконавчі оператори ініціюючої частини.
Основним принципом модульного програмування є принцип «розділяй і пануй». Модульне програмування - це організація програми як сукупності невеликих незалежних блоків, які називають модулями, структура й поводження яких підкоряються певним правилам.
Слайд 3Будь-який модуль Паскаля має наступну структуру:
Unit
виконавча частина, >;
begin
;
end .
Слайд 4 Тут UNIT - зарезервоване слово; починає заголовок модуля;
ім'я модуля (ідентифікатор); INTERFACE - зарезервоване слово; починає інтерфейсну частину
модуля; IMPLEMENTATION - зарезервоване слово; починає виконавчу частину модуля; BEGIN - зарезервоване слово; починає ініціюючу частину модуля; причому конструкція begin <ініціююча частина> необов'язкова; END - зарезервоване слово - ознака кінця модуля.
Таким чином, модуль Паскаля складається із заголовка й трьох складових частин, кожна з яких може бути порожня.
Слайд 5 Заголовок модуля Паскаля складається із зарезервованого слова unit і наступного
за ним імені модуля. Для правильної роботи середовища Турбо Паскаля
й можливості підключення засобів, що полегшують розробку більших програм, ім'я модуля Паскаля повинне збігатися з ім'ям дискового файлу, у якому міститься вихідний текст модуля. Якщо, наприклад, маємо заголовок модуля Паскаля
Unit pryklad;
то вихідний текст цього модуля повинен розміщатися на диску у файлі pryklad.pas .
Слайд 6 Ім'я модуля Паскаля служить для його зв'язку з іншими модулями
й основною програмою. Цей зв'язок встановлюється спеціальною конструкцією:
Uses
Тут USES - зарезервоване слово;
<список модулів> - список модулів, з якими встановлюється зв'язок; елементи списку - імена модулів через кому. Конструкція uses <список модулів> повинна стояти відразу після заголовка програми , тобто повинна відкривати розділ описів основної програми.
Слайд 7 Інтерфейсна частина відкривається зарезервованим словом INTERFACE . У цій частині
містяться оголошення всіх глобальних об'єктів модуля (типів, констант, змінних і
підпрограм), які повинні бути доступні основній програмі й (або) іншим модулям Паскаля. При оголошенні глобальних підпрограм в інтерфейсній частині вказується тільки їхній заголовок, наприклад:
Слайд 8Unit complexn;
Interface Type Complex= record
Re, im: real;
End;
Procedure Add(x,y: complex, var z: complex);
Procedure Mul (x,y:
complex, var z: complex);
Слайд 9Якщо тепер в основній програмі написати:
Uses complexn ;
то в
програмі стануть доступними тип cоmplex і дві процедури - Add
і Mul з модуля complexn .
Слайд 10 Виконавча частина модуля Паскаля починається зарезервованим словом Implementation і містить
описи підпрограм, оголошених в інтерфейсній частині. У ній можуть оголошуватися
локальні для модуля об'єкти - допоміжні типи, константи, змінні й блоки, а також мітки.
Опису підпрограми, оголошеної в інтерфейсній частині модуля Паскаля, у виконавчій частині повинен передувати заголовок, у якому можна опустити список формальних параметрів і тип результату для функції, тому що вони вже описані в інтерфейсній частині. Але якщо заголовок підпрограми приводиться в повному вигляді, тобто зі списком параметрів і оголошенням типу результату для функції, то він повинен повністю збігатися із заголовком підпрограми в інтерфейсній частині, наприклад:
Слайд 11Unit complexn;
{---------------------------------------}
Interface
Type
Complex= record
Re,
im: real;
End;
Procedure Add(x,y: complex, var z: complex);
{---------------------------------------}
Слайд 12Implementation
Procedure Add;
begin
z.re:= x.re
+ y.re;
z.im:= x.im + y.im;
end ;
end .
Слайд 13 Ініціююча частина завершує модуль Паскаля. Вона може бути відсутня разом
з починаючим її словом BEGIN або бути порожня - тоді
слідом за BEGIN відразу слідує ознака кінця модуля.
В ініціюючій частині розміщуються оператори, які містять деякий фрагмент програми. Ці оператори виконуються до передачі керування основній програмі й звичайно використовуються для підготовки її роботи. Наприклад, в ініціюючій частині можуть ініціюватися змінні, відкриватися файли, встановлюватися зв'язки з іншими комп'ютерами й т.п.:
Слайд 14Приклад модуля Паскаля
Unit fileText;
{------------------------------}
Interface
Procedure
print(s: string);
{------------------------------}
Слайд 15Implementation
var f: text;
Const name= 'output.txt';
procedure print;
begin
writeln(f, s)
end ;
{--------------------------------}
Слайд 16 {початок ініціюючої частини}
begin
assign(f, name);
rewrite ( f );
{кінець ініціюючої частини}
end .
Слайд 17 У середовищі Турбо Паскаль є засоби, що управляють способом компіляції
модулів і полегшують розробку великих програм. Визначено три режими компіляції:
Compile , Make , Build. Режими відрізняються способом зв'язку модуля, що компілюється або основної програми з іншими модулями, оголошеними в USES .
При компіляції модуля або основної програми в режимі COMPILE всі модулі, що згадані в USES, повинні бути попередньо відкомпільовані, і результати компіляції повинні бути поміщені в однойменні файли з розширенням TPU (від англ. Turbo Pascal Unit). Файл із розширенням TPU створюється автоматично при компіляції модуля Паскаля.
Слайд 18 У режимі MAKE компілятор перевіряє наявність TPU - файлів для
кожного оголошеного модуля. Якщо який-небудь файл не знайдений, система шукає
однойменний файл із розширенням PAS , тобто файл із вихідним текстом модуля Паскаля. Якщо такий файл знайдений, система приступає до його компіляції. Крім того, у цьому режимі система стежить за можливими змінами вихідного тексту будь-якого модуля, що використовується. Якщо в PAS -файл внесені зміни, то незалежно від того, чи є в каталозі відповідний TPU файл - чи ні, система відкомпілює його перед компіляцією основної програми.
Слайд 19 Більше того, якщо зміни внесені в інтерфейсну частину, то будуть
відкомпільовані всі інші модулі, що звертаються до нього. Режим MAKE
істотно полегшує процес розробки великих програм із багатьма модулями Паскаля: програміст позбувається від необхідності стежити за відповідністю TPU - файлів їхньому вихідному тексту, тому що система робить це автоматично.
Слайд 20 У режимі BUILD існуючі TPU - файли ігноруються, система намагається
відшукати й відкомпілювати відповідні PAS - файли для кожного модуля
Паскаля. Після компіляції можна бути впевненим, що враховано всі зроблені в текстах модулів Паскаля виправлення й зміни.
Підключення модулів Паскаля до основної програми і їхня компіляція відбувається в порядку їхнього оголошення в USES . При переході до чергового модуля Паскаля система попередньо шукає всі модулі, на які він посилається. Забороняється явне або непряме звернення модуля до самого себе.
Слайд 21 Нехай, наприклад, ми створюємо модуль Паскаля, що реалізує додавання й
віднімання комплексних чисел за допомогою процедур.
Приклад модуля, що реалізує додавання
й віднімання комплексних чисел
Слайд 22Unit complexn;
Interface
type
complex= record
re, im: real;
end;
procedure Add (x, y:
complex; var z: complex);
procedure Sub (x, y: complex; var z: complex);
const c: complex= (re: 0.1; im: -1);
Слайд 23Implementation
procedure Add;
begin
z.re:= x.re + y.re;
z.im:= x.im + y.im;
end; {Add}
procedure Sub;
begin
z.re:= x.re - y.re;
z.im:= x.im - y.im;
end; {Sub}
end .
Слайд 24 Текст цього модуля варто помістити у файл complexn.pas . Ви
можете його відкомпілювати, створивши TPU -файл.
У наступній програмі здійснюються
арифметичні операції над комплексними числами:
Слайд 25Program pryklad ;
Uses complexn;
Var
a,b,c: coplex;
begin
a.re:= 1; a.im:= 1;
b.re:=
1; b.im:= 2;
Add(a, b, c);
Writeln (' додавання :', c.re: 5:1, c.im: 5:1, 'i');
Слайд 26Sub (a, b, c);
Writeln (' віднімання :',
c.re: 5:1, c.im: 5:1, 'i');
End.
Після оголошення Uses complexn
програмі стали доступні всі об'єкти, оголошені в інтерфейсній частині модуля complexn .
Слайд 27Стандартні модулі Паскаля
У Турбо Паскалі є 8 стандартних модулів, у
яких міститься багато різних типів, констант, процедур і функцій. Цими
модулями є SYSTEM, DOS, CRT, GRAPH, OVERLAY, TURBO3, GRAPH3. Модулі Паскаля GRAPH , TURBO 3, GRAPH 3 виділені в окремі TPU -файли, а інші входять до складу бібліотечного файлу TURBO . TPL . Лише один модуль Паскаля SYSTEM підключається до будь-якої програми автоматично, всі інші стають доступні тільки після вказівки їхніх імен у списку модулів, що підключають.
Слайд 28 Модуль Паскаля SYSTEM. У нього входять всі процедури й функції
стандартного Паскаля, а також убудовані процедури й функції, які не
ввійшли в інші стандартні модулі (наприклад, INC , DEC , GETDIR і т.п.). Модуль Паскаля SYSTEM підключається до будь-якої програми незалежно від того, чи оголошений він у пропозиції USES чи ні, тому його глобальні константи, змінні, процедури й функції вважаються убудованими в Турбо Паскаль.
Слайд 29 Модуль Паскаля CRT. У ньому зосереджені процедури й функції, що
забезпечують керування текстовим режимом роботи екрана. З його допомогою можна
переміщати курсор у будь-яку крапку екрана, міняти кольори виведених символів і тла, створювати вікна. Крім того, у даний модуль включені також процедури «сліпого» читання клавіатури й керування звуком.
Слайд 30 Модуль Паскаля GRAPH . Містить набір типів, констант, процедур і
функцій для керування графічним режимом роботи екрана. Цей модуль дозволяє
створювати різні графічні зображення й виводити на екран напису стандартними або створеними програмістом шрифтами.