Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
30.05.2020
Размер:
1.35 Mб
Скачать

Логічний тип

Логічний тип характеризується двома значеннями: false (хибність) та true (істинність).

Під час опису цих величин у програмі на Паскалі використовується слово boolean, наприклад,

var

Pozit, Sel: boolean;

Символьний тип

Змінні, які набуваютьсимвольних значень з таблиці ASCII, належать до символьного

типу – char. Для розміщення таких змінних у памяті потрібний лише один байт.

До програми на Паскалі символьні змінні вводяться за допомогою такого опису:

var

Wx, Ux: char;

Якщо в програмі є значення символьних змінних, їх слід взяти в апострофи, наприклад, Х= ’В’.

Усі наведені вище типи даних є стандартними. Їх не треба описувати у розділі типів. До простих нестандартних типів належать перерахований, діапазонний та рядковий типи.

Перерахований тип

Перерахований тип утворюють з ідентифікаторів (імен користувача) шляхом їх

об’єднання у список, який записують у круглих дужках:

type <ім’я типу> = (<значення 1>, <значення 2>,..., <значення n>);

Приклад. Опишемо два перераховані типи (дні тижня та кольори):

type week = (mon, tue, wed, the, fri, sat, sun);

colors = (red, green, yellow, white);

та оголосимо дві змінні – day та mycolor цих типів:

var day: week; mycolor: colors;

Номер першого елемента списку завжди є 0. Дані перерахованого типу не можна вводити з клавіатури чи виводити. Даними перерахованого типу не можуть бути числові чи символьні значення.

Діапазонний тип

Діапазонний тип – це звуження деякого базового упорядкованого типу. Його описують наступним чином:

type <ім’я> = <значення 1> .. <значення 2>;

3 Графіка в Паскаль

У графічному режимі мінімальним об'єктом, яким може управляти програміст, є так званий піксел. Його геометричні розміри визначаються дозволом монітора. Дозвіл монітора звичайно задається у вигляді rх х rу , де rх - кількість пікселів на екрані по горизонталі, а rу - кількість пікселів по вертикалі. Навіть у випадку самого грубого дозволу зображення в графічному режимі формується за допомогою 64 000 графічних елементів, що набагато перевищує можливості текстового режиму. Будь-яке зображення формується з досить простих геометричних фігур. Це точки, відрізки прямих, окружності і т.д. З геометрії відомо, що положення геометричного об'єкта і його форма задаються координатами його точок. Отже, для того щоб запрограмувати графічний об’єкт, треба навчитися задавати координати графічних об'єктів.

Графічні координати задають положення точки на екрані дисплея. Оскільки мінімальним елементом, до якого має доступ програміст, є піксел, природно як графічні координати використати порядкові номери пікселів. Припустимий діапазон зміни графічних координат становить [0, rх - 1] для x-координати й [0, rу - 1] для y-координати. Точкою відліку є верхній лівий кут екрана. Значення y-координати відлічуються з ліва праворуч, а у-координати - зверху вниз. Останнє відрізняє графічні координати від звичайних декартових координат, прийнятих у математиці, і служить джерелом помилок для початківця програміста. Проблема полягає в тім, що при розробці програми графік або інше зображення звичайне проектується у звичній для нас декартовій системі координат. Але для правильного відображення такого графіка на екрані необхідно врахувати розходження між декартовой і графічної системами координат. Підкреслю, що таких розходжень три:

1. Графічні координати приймають тільки цілочисленні значення.

2. Графічні координати приймають значення, обмежені як знизу

(нульовим значенням), так і зверху (значенням дозволу).

3. Графічна координата у відлічується зверху вниз.

Таким чином, геометричні декартові координати точки (х, у) для відображення її на екрані варто перерахувати в графічні (xg, yg) по формулах

xg = [rx х x] + dx,

yg = ry -[ry x y]- dy,

де [x] - ціла частина х; rx і ry - масштабні множники, обрані з умови

rx - [rx x x max ]+1

rу = [sy x y max ]+1.

Тут х max і у mах - максимальні значення геометричних координат. Перерахування координати в по такій же формулі, що й для х, привів би до дзеркально відбитого щодо горизонтальної лінії зображенню. Що складають dx і dy забезпечують зсув зображення щодо лівого верхнього кута екрана. Зображення буде зміщено в центр екрана при dx = [rx / 2],

Робота дісплея неможлива без спеціальних мікросхем, керуючих його роботою. Відеоадаптер повинен підтримувати роботу дисплея в графічному режимі. Турбо Паскаль забезпечує роботу з наступними відеоадаптерами: CGA, MCGA, EGA, VGA, Hercules, AT&T 400, 3270 PC, ІBM-8514.

Роботою відеоадаптера управляє спеціальна програма, що називається драйвером. Драйвер зберігається в окремому файлі на диску з кодом що необхідний йому для роботи. Ознака файлу із драйвером - розширення .bgі імені файлу. Ім'я файлу із драйвером відповідає типу відеоадаптера вашого комп'ютера.

Перемикання в графічний режим і робота в ньому реалізовані в Турбо Паскалі у вигляді набору процедур, що перебувають у спеціальному модулі graph.tpu. Цей модуль повинен явно підключатися до програми за допомогою оператора використання uses. У модуль graph входить приблизно 50 процедур.

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

gd := value;

де value - це або деяке число, або убудована константа (убудовані константи не треба

описувати спеціально, тому що їхні описи втримуються в модулях).

При автоматичному розпізнаванні відеоадаптера в правій частині оператора присвоювання використається константа Detect (або нульове значення).

Друге, що повинна зробити програма, - задати певний графічний режим. Для цього варто ввести ще одну змінну цілого типу, назвемо її gm, і привласнити їй значення.

Перемикання в графічний режим роботи дисплея виконується викликом процедури ІnіtGraph з модуля graph:

ІnіtGraph(gd, gm. 'c:\tp\bgі');

Перший параметр у цій процедурі задає тип відеоадаптера, другий визначає режим, а третій являє собою рядок із вказівкою розташування драйвера на диску. Порожній рядок означає, що графічний драйвер перебуває в тім же каталозі, що й програма. Процедура ІnіtGraph переводить систему в графічний режим, а потім повертає керування викликаючій програмі. Завершення роботи в графічному режимі виробляється за допомогою процедури CloseGraph, що вивантажує драйвер з пам'яті й відновлює попередній відеорежим.

За допомогою процедур RestoreCrtMode і SetGraphMode можна перемикатися між текстовим і графічним режимами, не закриваючи графічний режим.

Перемикання в графічний режим звичайно супроводжується обробкою можливих помилок ініціалізації. Ці помилки можуть бути пов'язані з відсутністю графічного драйвера або неправильних значень параметрів. При наявності помилки процедура ІnіtGraph виробляє відповідний, відмінний від нуля, результат - код помилки. Цей код можна одержати за допомогою функції GraphResuіt.

Щоб зображення не залежало від дозволу, потрібно использувать функції GetMax і GetMax, що повертають найбільший номер пиксела по горизонталі й по вертикалі відповідно. Графічні координати правого нижнього кута екрана рівні (GetMax, GetMax). Процедура SetBkColor установлює колір тла, а процедура SetColor - колір графічного об'єкта. Процедура Lіne(xl, yl, х2. в2) виводить відрізок прямої, що задає початковою крапкою (x1, y1) і кінцевою крапкою (х2,y2). Окружність виводиться процедурою Cіrcle(x, в, r),параметрами якої є графічні координати центра х и в, а також радіус r (у пикселах).

Прямокутник будується процедурою Rectangle(xl. yl, х2, в2), перші два параметри якої задають графічні координати верхнього лівого кута прямокутника, а останні два параметри - координати нижнього правого кута. Процедура Bar(xl, yl, х2, в2) також призначена для висновку прямокутника й відрізняється від процедури Rectangle тим, що в цьому випадку внутрішня частина прямокутника зафарбовується заздалегідь певним чином. У випадку процедури Rectangle для заповнення внутрішньої області фігури доводиться використати додатковий виклик процедури модуля Graph. Колір заповнення може бути заданий за допомогою процедури SetColor(Color). Аргументом цієї процедури є константа або змінна типу Word, що є кодом кольору. Цей код може приймати значення з інтервалу 0. .15. У Турбо Паскале є 12 стилів заповнення, а вибрати кожної з них можна за допомогою процедури SetFіll Style (Style, Color). Перший параметр цієї процедури задає стиль заповнення, а другий - колір. У числі припустимих стилів зафарбування - суцільна, штрихова й т.д.

Соседние файлы в папке Курсовая1