Pascal/Turbo Pascal
Стандартні модулі
[ред.]В Turbo Pascal є вісім стандартних модулів (System, Dos, Crt, Printer, Overlay, Graph, Turbo3, Graph3). Модуль System підключається автоматично, і його не потрібно згадувати у розділі uses. Всі останні модулі необхідно оголошувати в програмі для забезпечення доступу до їх ресурсів. В модулі System зберігаються типи, константи, змінні і підпрограми авторської версії мови, стандартної мови, а також ряд додаткових підпрограм. Відсутність цього модуля призводить до неможливості компіляції програми. Модуль Crt використовується при роботі з екраном у текстовому режимі, під час читання з клавіатури, а також забезпечує деякі інші функції. Модуль Dos забезпечує звернення до засобів операційної системи MS DOS. Модуль Printer дозволяє здійснювати вивід на принтер за допомогою процедур Write і WriteLn. Для цього оголошена файлова змінна Lst типу Text, яка зв’язана з логічним пристроєм prn. Модуль Graph забезпечує роботу з екраном у графічному режимі. Модуль Overlay використовують для ефективної роботи великих програм. Модулі Turbo3 і Graph3 застосовують дуже рідко, їх використовують для забезпечення сумісності пізніших версій мови з програмами, які написані на мові Turbo Pascal 3.0. Перші п’ять згадані модулі часто включають в файл turbo. tp1. Є також цілий ряд інших модулів, які стали практично стандартні. Це модулі, які входять в бібліотеку Turbo Vision (Objects, Views, Dialogs, App і ін) і призначені для побудови інтерфейс них частин розроблювальних програм. Для роботи з довгими (більше 255 символів) строками розроблений модуль Strings.
МОДУЛЬ CRT
[ред.]Одним з найбільш часто використовуваних стандартних модулів є модуль Crt. В ньому є багато процедур і функцій для роботи з текстом. Серед них: засоби вводу, виведення і форматування тексту, створення і робота з вікнами та багато іншого.
Основним засобом відображення інформації, яка вводиться і виводиться під час роботи прикладних і системних програм є екран. В Turbo Pascal є можливість працювати з екраном у текстовому і графічному режимах.
Текстовий режим призначений для відображення символів кодової таблиці і характеризується максимальним числом символів в рядку і кількістю рядків на екрані. Крім того, монохромні дисплеї характеризуються кількістю степенем яскравості, а кольорові - можливою кількістю використовуваних кольорів. Мінімальною одиницею керування в текстових режимах є символ. Він складається з декількох пікселів, перетворення яких відбувається на апаратному рівні. Для зберігання символу, який виводиться на екран в текстовому режимі необхідно 2 байта. Перший байт містить безпосередньо символ кодової таблиці, а другий визначає, як символ має бути виведений на екран (його колір, колір фону, мерехтіння).
Засоби, які працюють з екраном в текстовому режимі зібрані в модулі Crt, який підключається звичайним способом:
uses Crt;
Встановлення текстового режиму відбувається за допомогою процедури TextMode, виконання якої призводить до очищення екрану і активації вказаного режиму. В таблиці запропоновані константи, які визначені в модулі Crt для встановлення текстових режимів.
Для встановлення того чи іншого текстового режиму необхідно звернутися до процедури TextMode:
TextMode (режим); Константи, визначені для текстових режимів екрана
Константа | Текстовий режим |
---|---|
BW40 | Розмір 40 стовпців на 25 рядків (40х25) для кольорового монітора (BW40=0) |
BW80 | Чорно-біле зображення з розміром екрана 80х25 (BW80=2) |
CO40 | Кольоровий текстовий режим 40х25 (СО40=1) |
CO80 | Кольоровий текстовий режим з розміром екрану 80х25 (СО80=3) |
Mono | Монохромний режим 80х25 |
C40 і C80 | Константи СО40 і СО80 відповідно. Введені для сумісності з Turbo Pascal 3.0 |
Тут в якості параметра задається одна з перерахованих в таблиці констант. Наприклад, для встановлення кольорового режиму з розміром екрану 40х25 можна використати один з наступних варіантів:
TextMode(СО40); TextMode(С40); TextMode(3);
Процедура TextMode може бути використана без параметрів. В такому випадку активується режим, який зустрічався останнім до поточного режиму. За замовчуванням прийняті режими BW80 і С80.
В модулі Crt є константа Font8x8 зі значенням 256. Якщо додати її до основної константи, то кількість рядків буде збільшено до 43 для адаптерів EGA і 50 для адаптерів VGA. Наприклад:
TextMode(СО80+Font8x8);
МОДУЛЬ DOS
[ред.]Існує цілий клас задач, рішення яких потребує застосування засобів операційної системи. Без цього не можливе написання практично майже ні однієї професійної програми. В модулі Dos зосереджені функції і процедури, які забезпечують доступ до засобів MS DOS.
Модуль graph
[ред.]Підключення модуля
[ред.]Перші дисплеї були монохромними. Їх представниками є монітори MDA (Mono Digitals Adapter) та Hercules, які зустрічаються зараз досить рідко. Із кольорових моніторів були розповсюджені монітори CGA (Color Graphics Adapter) та EGA (Enhanced Graphics Adapter), зараз - VGA (Video Graphics Adapter) та SVGA (Super-VGA). Кольорове зображення отримуємо за рахунок підсвічення люмінофорних крапок трьох кольорів (червоний, зелений, синій). При цьому кожна точка зображення (піксель) утворюється трьома поряд розташованими люмінофорними цятками.
Монітори EGA i VGA фактично стали стандартом для тих додатків, які забезпечуються графічними можливостями мови Turbo Pascal. Особливість моніторів VGA в тому, що в них велика роздільна здатність, і відстань між сусідніми пікселями по вертикалі і горизонталі співпадають.
Роботу модуля забезпечує драйвер для графіки. Зазвичай, це файл з розширенням BGI, який зберігається в папці BGI, яка, у свою чергу, знаходиться у папці із середовищем (наприклад — C:\\TurboPascal\BGI\).
Для роботи з модулем graph необхідно підключити цей модуль та ініціювати його. Для ініціації потрібно викликати процедуру InitGraph, яка приймає три параметри.
Першим параметром є змінна, яка задає тип графічного драйвера.
Для задання типу графічного драйверу існують такі константи:
const
Detect=0; {Режим автовизначення типу драйвера}
CGA=1;
MCGA=2;
EGA=3;
EGA64=4;
EGAMono=5;
IBM8514=6;
HercMono=7;
ATT400=8;
VGA=9;
PC3270=10;
Другим параметром є змінна, яка задає режим роботи драйвера. Для задання режиму роботи драйвера існують такі константи:
const
{ Для драйверу CGA: }
CGACO = 0; {Мале розширення, палітра0}
CGAC1 = 1; {Мале розширення, палітра1}
CGAC2 = 2; {Мале розширення, палітра2}
CGAC3 = 3; {Мале розширення, палітра3}
CGAHi = 4; {Високе розширення}
{ Для драйверу MCGA: }
MCGACO = 0; {Аналогічно режиму CGACO}
MCGAC1 = 1; {Аналогічно режиму CGAC1}
MCGAC2 = 2; {Аналогічно режиму CGAC2}
MCGAC3 = 3; {Аналогічно режиму CGAC3}
MCGAMed = 4; {Аналогічно режиму CGAHi}
MCGAHi = 5; {Розширення 640x480}
{ Для драйверу EGA:}
EGALo = 0; {640x200, 16 кольорів}
EGAHi = 1; {640x350, 16 кольорів}
EGAMonoHi = 3; {640x350, 2 кольорів}
{ Для драйверів HGC та HGC+: }
HercMonoHi = 0; {720x348}
{ Для драйверу АТТ400:}
ATT400CO = 0; {Аналогічно режиму CGACO}
ATT400C1 = 1; {Аналогічно режиму CGAC1}
ATT400C2 = 2; {Аналогічно режиму CGAC2}
ATT400C3 = 3; {Аналогічно режиму CGAC3}
ATT400Med = 4; {Аналогічно режиму CGAHi}
ATT400H1 = 5; {640x400, 2 кольори}
{ Для драйверу VGA: }
VGALo = 0; {640x200}
VGAMed = 1; {640x350}
VGAHi = 2; {640x480}
PC3270H1 = 0; {Аналогічно режиму HercMonoHi}
{ Для драйверу 1ВМ8514: }
IBM8514LO = 0; {640x480, 256 кольорів}
IBM8514H1 = 1; {1024x768, 256 кольорів}
Третя змінна вказує шлях до папки, в якій міститься драйвер (наприклад, — C:\\TP\BGI), проте якщо цей файл знаходиться в стандартній папці для BGI-файлів (.../BGI), то можна замість шляху вказати пустий рядок.
Для більшості випадків код для роботи з модулем graph буде такий:
Uses Graph;
var Driver, Mode : Integer;
begin
Driver := detect; {Драйвер}
Mode := 0; {Режим роботи}
InitGraph(Driver, Mode, '');
end.
Загальні відомості щодо роботи із графікою
[ред.]Координати пікселів задаються двома цілими числами:
- координата x — номер пікселю в рядкові. Нумерація рахуються з ліва на право починаючи з нуля.
- координати y — номер рядка пікселя. Нумерація рахується з верху вниз починаючи з нуля.
Таким чином верхній лівих піксель задається координатами (0;0).