Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Модульність, розподіл пам'яті, підпрограми.doc
Скачиваний:
2
Добавлен:
25.11.2018
Размер:
764.42 Кб
Скачать

Стандартні бібліотечні модулі.

Це модулі, що поставляються разом із системою ТР. До складу бібліотеки модулів Borland Pascal входять модулі System, Dos, Crt, PrInter, Graf, тощо.

System. Містить підпрограми: файлового введення-виведення (Write, WriteLn, Read, ReadLn, ...), обробки рядків (Delete, Str, ...); керування виконанням програм (Exit, Break, Continue, Halt, ...), математичні функції (Abs, Cos, Round, ...) і т.д. Підключається до програм автоматично.

Crt. Містить засоби керування екраном у текстовому режимі (TextMode, TextColor, LowVideo, ClrScr, ...), клавіатурою (GoToXY, Where, KeyPressed, ReadKey, ...) і звуком (Sound, NoSound). У Crt визначені також константи режимів екрана, константи кольорів тощо.

  • Функція ReadKey - зчитує код символу натиснутої клавіші (#77). При необхідності очікує натискання клавіші.

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

Коди сканування символьних клавіш складаються з одного значення (#77) і тому є простими, коди керуючих клавіш складаються з двох значень (#0+#75) і вважаються розширеними. При аналізі натиснутої керуючої клавіші функція ReadKey повинна бути викликана двічі: окремо для зчитування кожного значення двосимвольного ланцюжка. Наприклад,

var Kod : char;

. . .

Kod := ReadKey;

If Kod = #0 then

begin

Kod := ReadKey;

If Kod = #75 then WriteLn (‘ Натиснута клавіша ’);

end {if}

 Читання символу функцією ReadKey не супроводжується його відображенням на екрані.

  • KeyPressed - перевіряє факт натискання якої-небудь клавіші; повертає значення true, якщо клавіша була натиснута, і false - у противному випадку.

Наприклад,

i := 0;

repeat

i := i+1;

until KeyPressed;

WriteLn (‘ До натискання клавіш було виконано’, i, ‘ітерацій’);

Її використовують для організації циклу чекання натискання клавіші:

repeat until KeyPressed;

while KeyPressed do

ch := ReadKey;

Dos. Містить процедури опитування і установки параметрів MS-DOS; процедури обслуговування переривань; процедури і функції перевірки стану диска (аналіз ресурсів дисків); засоби організації резидентних програм і т.д.

Graph. Бібліотека підпрограм для роботи з графікою.

Бібліотечні модулі користувача

Служать для збереження описів користувача.

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

Unit <ім'я модуля>; заголовок модуля

----------------------------------------------------------------------------------------------------

interface

uses <список модулів>; інтерфейсний розділ

<глобальні оголошення>;

<заголовки процедур і функцій>;

----------------------------------------------------------------------------------------------------

implementation

uses <список модулів>; розділ реалізації

<локальні оголошення>;

<тіла процедур і функцій>;

----------------------------------------------------------------------------------------------------

begin

<коди ініціалізації>; розділ ініціалізації

End.

Заголовок модуля вводить ім'я, яке потім використовується для посилань на модуль. Воно повинне співпадати з ім'ям файлу (.pas), в якому зберігається текст модуля.

У інтерфейсному (зовнішньому) розділі описуються глобальні константи, типи, змінні, які будуть доступні основній програмі і іншим модулям, що визивають даний модуль, а також заголовки процедур і функцій, що складають бібліотеку підпрограм.

Якщо при їх оголошенні використовуються дані, описані в інших модулях, то ці модулі підключаються в директиві Uses інтерфейсного розділу.

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

Ці описи недоступні основній програмі і модулям, що визивають даний модуль.

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

Обов'язкової є структура:

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

interface

implementation

End.

За відсутності розділу ініціалізації begin не ставиться.

Наприклад,

unit FileText;

interface

Procedure Write_F (s : string);

implementation

var f: text;

const name = ' output .txt';

Procedure Write_F;

begin

WriteLn (f, s)

end;

begin { Початок розділу ініціалізації }

Assign (f, name);

Rewrite (f);

end. { Кінець розділу ініціалізації }

Program Prog1;

Uses FileText ;

Var s : string;

Begin

Write (“Enter string: ”); ReadLn (s);

Write_F (s);

End.

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