Виведення тексту у графічному режимі
Процедура 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 «Визначник дня тижня»: Ви вводите будь-яку дату. Комп'ютер повинен визначити день тижня і надрукувати його у вигляді "понеділок", "вівторок" і т.д. При цьому ви не повинні зіпсувати календар, тобто після того, як ваша програма завершить роботу, календар комп'ютера повинен показувати правильну дату, а не ту, що ви запровадили.