
- •Алфавіт мови включає в себе:
- •Лексеми мови. Під лексемами розуміють елементарні конструктивні елементи програми, які є неподільними:
- •Оголошення підпрограм: функцій та процедур. Структурне програмування передбачає побудову програм, яка фактично буде послідовністю звертань до підпрограм.
- •Оператор присвоєння присвоює змінній значення виразу, в якості якого може використовуватися і константа, і змінна, і результат обрахування функції, і група операцій. Оператор має вигляд:
- •Складений оператор. Якщо потрібно деяку групу команд інтерпретувати, їх як одну команду, тобто об’єднати їх в певному контексті, то використовують складені оператори.
- •Оператори вводу-виводу. В мові програмування Turbo Pascal ввід-вивід здійснюється насправді не операторами, а стандартними
- •Оператор розгалуження. В ряді випадків алгоритм розв’язку задачі передбачає розгалуження, тобто можливість виконання декількох різних дій в залежності від значення певної логічної умови.
- •Оператори циклу.
- •Програма знаходження суми чисел 1..10.
- •Програма друкування символів ‘a’..’z’.
- •Програма побудови таблиці істинності для and.
- •Скалярні / прості / стандартні типи даних:
- •Скалярні типи користувача:
- •Наприклад
- •4.Структурокані типи даних:
- •1 Діапазон – одновимірний масив;
- •2 Діапазони – двовимірний ( таблиці, матриці);
- •Наприклад
- •5.Комбіновані структури даних.
- •Варіантна частина у записі може бути лише одна і лише в кінці. Службове слово end є спільним для конструкції record і варіантної частини.
- •Приклади задач з масивами
- •Знайти середнє арифметичне додатніх і від’ємних елементів масиву цілих чисел.
- •Стандартні підпрограми обробки рядків
- •Операції над множинами
- •1. Процедури являють собою дію, тому їх можна використовувати в якості окремого оператора в розділі операторів програми.
- •2. Функції являють собою значення певного типу, крім цього вони можуть використовувати деяку дію, але значення їх є головним. Тому функції використовують як окремі оператори у виразах.
- •Параметри-змінні
- •Без типові параметри
- •Наявність умови зупинки, при якій деякому параметру рекурсії передається деяке значення рекурсії.
- •Чітко визначений алгоритм, при обчисленні кожного вищого рівня рекурсії через попередній рівень.
- •Типізовані.
- •Текстові.
- •Безтипові.
- •Процедура зв’язування певної файлової змінної із конкретним файлом на диску
- •Процедура відкриття файлу для читання
- •Процедура відкривання файлу для запису
- •Процедура закривання файлу
- •Процедура примусового очищення внутрішнього буфера обміну
- •Розглянуті раніше встановлюючи та завершальні підпрограми
- •Процедура читання
- •Процедура запису у файл
- •Функція визначення розміру файла у записі
- •Процедура відсікання хвостової частини файлу
- •Процедура читання з текстового файлу
- •Процедура запису
- •1. Процедура для перейменування файлів
- •2. Процедура видалення файлу
- •Xxxx0 адреса
- •35 Квартира з номером 34 у 13 будинку з номером 12.
- •Файли розміщуються в зовнішній пам'яті, а динамічні структури в оперативній.
- •Типізовані файли фактично є файлами прямого доступу, що означає довільний доступ до елементів. В динамічних структурах доступ до елементів виключно послідовний.
- •Здійснюватиметься рух по дереву до крайнього лівого елемента (найменшого).
- •Це значення друкується.
- •Робиться один крок вправо і послідовність 1-3 повторюється відносно нової поточної вершини.
- •Заголовок.
- •Інтерфейс на частина.
- •Розділ реалізації. В реалізації описуються всі компоненти мови, які мають бути невидимі зовні.
- •Процедури управління виконанням програм
- •Функції перетворення типів
- •Процедури і функції для змінних порядкового типу
- •Математичні функції
- •Процедури та функції роботи з рядками
- •Процедури та функції управління динамічною пам’яттю
- •Функції роботи з вказівниками і адресні функції
- •Процедури вводу-виводу і роботи з файлами і каталогами
- •Інші процедури і функції
- •Змінні та константи модуля
- •Змінні модуля crt
- •Процедури і функції модуля crt
- •Перепризначення файлів вводу-виводу
- •Процедури роботи з екраном
- •Процедури і функції управління курсором
- •Процедури роботи з рядками
- •Функції допиту клавіатури
- •Процедури управління кольором
- •Процедури управління вбудованим динаміком і таймером
- •Використання клавіш редагування рядків
- •Використання командних символі
- •Типи драйверів
- •Типи шрифтів
- •Ініціалізація графіки класифікація типів драйверів і відео режимів
- •Ініціалізація і завершення відеорежиму
- •Обробка помилок ініціалізації
- •Процедури роботи з відеорежимами
- •Переключення між текстовим і графічним режимами
- •Побудова зображень на екрані система координат
- •Управління поточним вказівником
- •Графічні вікна
- •Відображення точки на екрані
- •Відображення відрізків прямих ліній
- •Побудова прямокутників
- •Побудова многокутників
- •Побудова дуг, еліпсів і кіл
- •Робота з текстом
- •Відображення рядків
- •Відображення числової інформації
- •Управління параметрами зображення встановлення кольору
- •Встановлення палітри
- •Функції управління операційним середовищем
- •Процедури управління процесами
- •Процедури обслуговування переривань
- •Програми, резидентні в пам'яті
- •Процедури роботи з датою і часом
- •Процедури і функції перевірки стану диску
- •Процедури і функції роботи з файлами
- •Інші процедури і функції
- •Поля даних оголошуються на початку, а методи після них.
- •При оголошенні методів у структурі задаються лише заголовок відповідної підпрограми (подібно до інтерфейсу в модулях).
- •Окремі методи можуть використовувати інші методи цього ж об’єкта, тому вони повинні бути оголошенні в певному порядку.
- •Ini; {ініціалізація графіки}
- •Віртуальним варто оголошувати лише той метод, який:
- •Постановки задачі;
- •Наявними програмними ресурсами;
- •Вимогами по швидкодії, використанням ресурсів еом.
Перепризначення файлів вводу-виводу
На початку даного розділу вже була згадана процедура
AssignCRT (Var f: TEXT);
яка перенаправляє стандартний ввід-вивід на деякий логічний пристрій Crt, який починає виконувати функції пристрою вводу-виводу, використовуючи засоби бібліотеки Turbo Pascal замість стандартних процедур MS-DOS. При підключенні модуля Crt стандартний вивід автоматично зв’язується з пристроєм Crt. Але такий же зв’язок можна встановити для обміну інформацією з файлами, відмінними від стандартних. Це також здійснюється за допомогою процедури AssignCRT:
AssignCRT (f); {файл f зв’язується з пристроєм CRT}
Rewrite (f); {файл f відкривається для виводу}
Необхідно відмітити, що зв’язати файл з пристроєм Crt можна тільки за допомогою процедури AssignCRT, і було б помилкою пробувати здійснити це за допомогою процедури Assign, вказуючи в якості імені файла ‘CRT’, так як Turbo Pascal не розпізнає файл з таким ім’ям.
Процедури роботи з екраном
Для роботи з екраном в модулі Crt призначений цілий ряд процедур, функцій і змінних. Однією з основних являється процедура
Window (x1, y1, x2, y2: WORD);
яка відображає на екран вікно в текстовому режимі, визначене як поточне. Координати вікна x1, y1, x2, y2 завжди відраховуються від лівого верхнього кута екрану і повинні задовольняти наступні властивості:
1 <= x1 < x2 <= xmax;
1 <= y1 < y2 <= ymax;
Якщо ці умови не виконуються, то вікно не буде створене. Xmax може приймати два значення – 40 і 80 (для відео-адаптера MDA і Hercules перше не використовується). Ymax для більшості відео-адаптерів приймає тільки значення 25, він може приймати іще одне значення – 43 чи 50 відповідно.
Як уже було сказано, після виконання процедури Window вікно робиться поточним. Це означає, що всі операції з екраном відносяться до тієї його частини, яка визначена координатами x1, y1, x2, y2. При цьому зміщення курсору відбувається тільки в границях поточного вікна (відносно переміщення), і позиція з координатами (1,1) являється лівим верхнім кутом вікна. Частина екрану поза вікна становиться недоступною, тобто ніби-то „невидимою” для інших процедур і функцій модуля.
Після виконання процедури Window додатково здійснюється зміщення курсору в позицію з координатами (1,1) поточного (тобто тільки для створеного) вікна.
Слід пам’ятати, що сама процедура Window інтерпретує власні параметри в абсолютних координатах, а не у відносних координатах попереднього текстового вікна.
Так само, як і при роботі з повним екраном, при використанні для виводу інформації процедур Write і WriteLn в поточному вікні може проходити „прокрутка” чи зміщення інформації у вікні на один рядок вверх. Це проходить, коли при виводі рядків досягнута нижня межа вікна. Такий же ефект може спостерігатися, якщо за допомогою процедур Read чи ReadLn інформація вводиться в останньому рядку вікна.
При завершенні роботи програми, яка використовує вікна, відбувається автоматичне відновлення параметрів текстового режиму, встановлених перед запуском програми, і поточним вікном стає весь екран.
Для отримання координат поточного вікна використовується оголошення в модулі змінних WindMin і WindMax, які мають тип WORD і містять інформацію про розмір поточного вікна. Оскільки максимальні значення координат X і Y текстових вікон не перевищують 255, тобто можуть зберігатися в одному байті, то в кожній зі змінних зберігаються координати X і Y в молодшому і старшому байтах відповідно. Отримати значення X і Y можна, використовуючи стандартні функції Lo і Hi, наступним чином:
X1:=Lo (WindMin) +1; X2:=Lo (WindMax) +1;
Y1:=Hi (WindMin) +1; Y2:=Hi (WindMax) +1;
де X1, Y1, X2, Y2 – координати поточного вікна. Одиниця добавляється через те, що змінні WindMin і WindMax містять абсолютні координати, які рахуються від позиції (0,0), в той час як початок екранних координат являється (1,1).
Дуже часто при роботі з вікнами застосовується процедура ClrScr, яка не має параметрів. Вона застосовується або для очищення поточного вікна, встановленого процедурою Window, або, якщо вікно не використовується, для очищення всього екрану. При цьому вікно (чи екран) зафарбовується поточним кольором фону. Також, як і для процедури Window, після виконання ClrScr курсор стає в позицію з координатами (1,1).
Для задання різних текстових режимів виводу інформації застосовується процедура
TextMode (Mode: WORD);
Нижче заданий список констант текстових режимів модуля:
ім'я константи |
значення |
розширення екрану |
кольоровий режим |
BW40 |
0 |
40 х 25 |
чорно-білий для кольорового адаптера |
CO40 чи C40 |
1 |
40 х 25 |
кольоровий |
BW80 |
2 |
80 х 25 |
чорно-білий для кольорового адаптера |
CO80 чи C80 |
3 |
80 х 25 |
Кольоровий |
Mono |
7 |
80 х 25 |
монохромний для адаптерів MDA і Hercules |
Font8x8 |
256 |
80/40 х 43 |
кольоровий для адаптера EGA |
|
|
80/40 х 50 |
кольоровий для адаптера VGA |
В якості параметрів процедури TextMode можна задати як імена наведених вище констант, так і їх числові еквіваленти. Якщо в якості параметрів вказати число, не еквівалентне ні одній з наведених констант, то буде встановлений режим CO80 чи Mono (для монохромних адаптерів).
Константа Font8x8 використовується в адаптерах EGA і VGA і вмикає текстові режими, в яких замість стандартних шрифтів з матрицями 8х14 і 8х16 підключаються шрифти з матрицею 8х8,що дає збільшення числа рядків до 43 (EGA) чи 50 (VGA). Ця константа не є самостійною, тобто вона повинна добавлятися до вибраного коду режиму, наприклад:
TextMode (C40+Font8x8);
В цьому випадку встановиться кольоровий режим С40, але кількість рядків буде не 25, а 43 чи 50. якщо основний режим не заданий, по замовчуванню мається на увазі режим BW40.
Крім заміни текстового режиму, команда TextMode виконує ряд додаткових дій в наступній послідовності:
Поточне вікно встановлюється рівним всьому екрану.
Встановлюється режим прямого запису в відеопам’ять (змінній DirectVideo присвоюється значення True).
Вимикається режим контролю „снігу” (змінній CheckSnow присвоюється значення False).
Встановлюється режим нормальної яскравості символів.
Проходить очищення екрану.
В змінній LastMode запам’ятовується наступний встановлений режим.
Далі з допомогою змінної LastMode можна відновити останній використовуваний текстовий режим.
Змінні CheckSnow і DirectVideo встановлюють специфічні для модуля Crt режими контролю „снігу” і прямого відображення у відеопам’ять.
Режим контролю „снігу” використовується тільки для відео-адаптерів типу CGA. „Снігом” називають білі штрихи, які з’являються при виводі інформації на екран. Це відбувається через те, що символи записуються у відеопам’ять не під час горизонтальної розгортки променя ЕЛТ. При використанні відеоадаптерів інших типів цей ефект не спостерігається.
Коли встановлюється кольоровий текстовий режим, змінна CheckSnow стає рівною True, і прямий запис у відеопам’ять буде проходити тільки під час горизонтальної розгортки променя. При використанні більш нових моніторів CGA має сенс на початку програми встановлювати змінну CheckSnow у False, так як ефект „снігу” в них відсутній і заборона перевірки значно прискорить вивід текстової інформації на екран.
Режим прямого запису у відеопам’ять встановлюється автоматично при підключені модуля Crt і визначає спосіб запису інформації при виконані процедур Write і WriteLn.
По замовчуванню значення змінної DirectVideo рівне True. Таке ж значення цієї змінної встановлюється після кожного виклику процедури TextMode. При цьому вивід інформації на екран відбувається дещо швидше. Якщо значення змінної DirectVideo рівне False, то вивід на екран проходить повільніше.
Значення змінної DirectVideo впливає на дію змінної CheckSnow. Якщо перша рівна False, то значення CheckSnow ігнорується.