Виведення тексту у графічному режимі

Процедура WriteLn друкує невеликі букви нудного зображення. У модулі Graph є процедури SetTextStyle та OutTextXY, які спільними зусиллями друкують літери різного розміру (у тому числі і дуже великого) кількох витончених обрисів, причому процедура SetTextStyle задає стиль і розмір літер, а процедура OutTextXY друкує рядок літер заданого стилю та розміру в заданому . Наприклад, у результаті виконання фрагмента

на екрані з'явиться рядок Hello!, виконаний шрифтом4 (готичний) розміру 8. Лівий верхній кут рядка буде в точці (200,300). Число 0 означає звичайне горизонтальне напрям тексту, 1 - вертикальне, 2 - горизонтальне з літерами. Колір тексту, як і колір фігур визначається процедурою SetColor.

Всього в Паскалі є 5 стандартних шрифтів:

0 - звичайний растровий (інші - векторні)

Розмір букв залежить від шрифту. Можна незалежно змінювати висоту та ширину літер. Існує процедура SetUserCharSize. Наприклад, SetUserCharSize(7,3, 9,4) встановлює ширину літер у 7/3 рази більше за нормальну, а висоту - у 9/4.

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

Недолік OutTextXY - вона виводить лише строкові вирази. Покажу, як обдурити її та надрукувати значення числового виразу. Нехай змінна aописана, як Integer, і дорівнює 937. Оператор OutTextXY(200,200, a) не захоче її друкувати. Тоді придумаємо змінну as і опишемо її, як String. Наступний фрагмент робить справу:

Процедура Strперетворює число a=937 у рядок із трьох символів as='937'.

Для симетрії покажу і зворотну процедуру Val:

VAR a, err: Integer;

Begin

End.

Пояснення: Процедура Val перетворює рядок з трьох символів 937 на число 937. В результаті оператор WriteLn (a+1) друкує число 938. На сенсі змінної err зупинятись я не буду.

Завдання 132: У вас є текстовий файл із довільної кількості рядків. Організуйте виведення цього файлу на екран векторним шрифтом. Якщо у вас є час, організуйте керування з клавіатури: перегортання тексту, вибір шрифту, вибір кольору шрифту та фону.

Керування кольором у текстовому режимі(модуль CRT)

Якщо вам не потрібно малювати на екрані картинки, вам не потрібен і графічний режим. Тим більше, що виведення тексту в текстовому режимі можна зробити досить красиво та зручно. Це робиться за допомогою модуля CRT. Ось які процедури він пропонує для цього:

TextColor(Yellow)Вибір кольору тексту
TextBackground(Blue)Вибір кольору тла під текстом. Я маю на увазі колір не всього екрану, а тієї вузенької смужки, на якій з'являється поточний текст
ClrScrОчищення екрана. Якщо в програмі попередньо було виконано оператора TextBackground (Blue), то після виконання ClrScr весь екран стане синім
GotoXY(61,14)Помістити курсор у 61 стовпець 14 рядки

Ви не вміли керувати положенням текстового курсору на екрані. За допомогою процедуриGotoXY ви зможете поміщати курсор у довільну точку екрана, а значить текст друкувати в довільному місці екрана. Пригадаємо, що у текстовому режимі екран зазвичай розділений на 25 рядків по 80 стовпців. Рядки пронумеровані зверху донизу, стовпці - зліва направо. Щоб помістити курсор у 61 стовпець 14 рядки, достатньо записатиGotoXY (61,14).

Завдання:Зафарбувати екран червоним кольором і посередині екрана жовтими літерами на блакитному тлі написати “Вхід”.

USES CRT;

BEGIN

END.

Робота з датами та часом (модуль DOS)

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

GetTimeДізнатися час
SetTimeВстановити час
GetDateДізнатись дату
SetDateВстановити дату

Щоб скористатися цими процедурами, ви повинні придумати імена змінним, що означає дату та час:

God рік (з 1980 до 2099)

Den день місяця

Den_Ned номер дня тижня (від 0 (неділя) до 6 (субота))

Sotki соті частки секунди

Всі ці змінні повинні бути цілими, проте не типу Integer, до якого ви звикли, а типуWord. Такою є вимога згаданих процедур. Змінна типу Word має бути цілим числом з діапазону 0 – 65535.

Ось програма, яка дізнається біля комп'ютера, яке сьогодні число і скільки часу:

USES DOS;

VAR God, Mes, Den, Den_Ned, Chas, Min, Sec, Sotki : Word;

Begin

GetDate(God, Mes, Den, Den_Ned);

WriteLn('Сьогодні', Den, '.', Mes, '', God, 'року');

WriteLn('Зараз', ​​Chas, 'год.', Min, 'хв. і ',Sec, 'сек.')

End.

Можливо, вас не задовольнить робота GetTime у цій програмі. Спробуйте зробитивизначник швидкості реакції, не пов'язуючись із процедурами модуля DOS. Наприклад, засікайте по секундоміру, скільки часу комп'ютер виконує порожній цикл for i:=1 to 10000000 do; та створіть на цій основі свою одиницю часу.

А ось як встановити дату та час:

SetDate (1997, 5, 22) - встановити дату 22 травня 1997 року

SetTime(23, 58, 32, 93) -встановити час 23 години 58 хв 32 сек і 93 сотих

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

Завдання 134 «Визначник дня тижня»: Ви вводите будь-яку дату. Комп'ютер повинен визначити день тижня і надрукувати його у вигляді "понеділок", "вівторок" і т.д. При цьому ви не повинні зіпсувати календар, тобто після того, як ваша програма завершить роботу, календар комп'ютера повинен показувати правильну дату, а не ту, що ви запровадили.