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).