
- •Алфавіт мови включає в себе:
- •Лексеми мови. Під лексемами розуміють елементарні конструктивні елементи програми, які є неподільними:
- •Оголошення підпрограм: функцій та процедур. Структурне програмування передбачає побудову програм, яка фактично буде послідовністю звертань до підпрограм.
- •Оператор присвоєння присвоює змінній значення виразу, в якості якого може використовуватися і константа, і змінна, і результат обрахування функції, і група операцій. Оператор має вигляд:
- •Складений оператор. Якщо потрібно деяку групу команд інтерпретувати, їх як одну команду, тобто об’єднати їх в певному контексті, то використовують складені оператори.
- •Оператори вводу-виводу. В мові програмування 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; {ініціалізація графіки}
- •Віртуальним варто оголошувати лише той метод, який:
- •Постановки задачі;
- •Наявними програмними ресурсами;
- •Вимогами по швидкодії, використанням ресурсів еом.
Інші процедури і функції
В модулі System визначене також велике число процедур і функцій, які не можна віднести не до однієї з груп, описаних мною раніше.
Назва |
призначення |
Exclude |
Видаляє елемент з множини |
FillChar |
заповнює задану кількість послідовних байтів змінною вказаного значення (виразом будь-якого порядкового типу) |
Hi |
повертає старший байт аргументу |
Include |
включає елемент в множину |
Lo |
повертає молодший байт аргументу |
Move |
копіює задану кількість послідовних байтів з вихідної області пам'яті в назначену область |
ParamCount |
повертає число параметрів, переданих в програму з командного рядка |
ParamStr |
повертає вказаний параметр командного рядка |
Random |
повертає псевдо-випадкове число |
Randomize |
прив’язує стартове значення функції random до поточного системного часу |
SizeOf |
повертає число байтів, які займає аргумент |
Swap |
Міняє місцями старший і молодший байти двохбайтного аргументу |
TypeOf |
повертає вказівник на таблицю віртуальних методів аргументу типу object |
UpCase |
перетворює рядкову букву в прописну |
Змінні та константи модуля
Крім процедур і функцій в модулі System описаний ряд раніше оголошених змінних:
Змінна |
Тип |
Опис |
Input |
TEXT |
стандартна файлова змінна, яка визначає прилад вводу. По замовчуванню таким приладом являється клавіатура |
Output |
TEXT |
стандартна файлова змінна, яка визначає прилад виводу. По замовчуванню таким приладом являється екран |
SaveInt00 |
POINTER |
змінна для збереження вектора переривання $00 |
SaveInt02 |
POINTER |
Те ж, що $02 |
SaveInt1B |
POINTER |
Те ж, що $1B |
SaveInt21 |
POINTER |
Те ж, що $21 |
SaveInt23 |
POINTER |
Те ж, що $23 |
SaveInt24 |
POINTER |
Те ж, що $24 |
SaveInt34 |
POINTER |
Те ж, що $34 |
SaveInt35 |
POINTER |
Те ж, що $35 |
SaveInt36 |
POINTER |
Те ж, що $36 |
SaveInt37 |
POINTER |
Те ж, що $37 |
SaveInt38 |
POINTER |
Те ж, що $38 |
SaveInt39 |
POINTER |
Те ж, що $39 |
SaveInt3A |
POINTER |
Те ж, що $3A |
SaveInt3B |
POINTER |
Те ж, що $3B |
SaveInt3C |
POINTER |
Те ж, що $3C |
SaveInt3D |
POINTER |
Те ж, що $3D |
SaveInt3E |
POINTER |
Те ж, що $3E |
SaveInt3F |
POINTER |
Те ж, що $3F |
SaveInt75 |
POINTER |
Те ж, що $75 |
В момент завантаження середовища Turbo Pascal змінює значення 18 векторів переривання. В змінних SaveIntXX зберігається старі значення цих векторів.
Крім змінних, в модулі System також міститься ряд типізованих констант.
Константа |
Тип |
початкове значення |
Опис |
ErrorAddr |
POINTER |
NIL |
адреса помилки виконання |
ExitCode |
INTEGER |
0 |
код завершення |
ExitProc |
POINTER |
NIL |
адреса процедури завершення |
FileMode |
BYTE |
2 |
Режим доступу до файлу |
FileList |
POINTER |
NIL |
вказівник списку вільних блоків кучі |
FreeZero |
POINTER |
NIL |
зарезервована |
HeapEnd |
POINTER |
NIL |
вказівник на кінець кучі |
HeapError |
POINTER |
NIL |
вказівник на функцію обробки помилок кучі |
HeapOrg |
POINTER |
NIL |
вказівник на початок кучі |
HeapPtr |
POINTER |
NIL |
вказівник кучі |
InOutRes |
INTEGER |
0 |
буфер результату операції вводу-виводу |
OvrCodeList |
WORD |
1 |
список оверлейних сегментів |
OvrDebugPtr |
POINTER |
NIL |
вказівник відладчика оверлеєв |
OvrDosHandle |
WORD |
0 |
параметр зв’язку оверлеєв з DOS |
OvrEmsHandle |
WORD |
$FFFF |
параметр зв’язку оверлеєв з EMS |
OvrHeapEnd |
WORD |
0 |
кінець оверлейного буфера |
OvrHeapOrg |
WORD |
0 |
початок оверлейного буферу |
OvrHeapPtr |
WORD |
0 |
вказівник оверлейного буферу |
OvrHeapSize |
WORD |
0 |
початковий розмір оверлейного буферу |
OvrLoadList |
WORD |
0 |
список завантажених оверлеєв |
PrefixSeg |
WORD |
0 |
префікс програмного сегменту |
RandSeed |
LONGINT |
0 |
параметр ініціалізації генератора випадкових чисел |
Seg0040 |
WORD |
$0040 |
селектор сегменту $0040 |
SegA000 |
WORD |
$A000 |
селектор сегменту $A000 |
SegB000 |
WORD |
$B000 |
селектор сегменту $B000 |
SegB800 |
WORD |
$B800 |
селектор сегменту $B800 |
SelectorInc |
WORD |
$1000 |
перетворення селектора |
StackLimit |
WORD |
0 |
границя стеку |
Test8086 |
BYTE |
0 |
результат тестування процесора 80х86 |
Test8087 |
BYTE |
0 |
результат тестування процесора 80х87 |
Змінні OvrCodeList, OvrDebugPtr, OvrDosHandle, OvrEmsHandle, OvrHeapEnd, OvrHeapOrg, OvrHeapPtr, OvrHeapSize і OvrLoadList використовуються модулем Overlay для роботи адміністратора оверлеєв.
Змінні FreeList, HeapEnd, HeapError, HeapOrg, HeapPtr використовується адміністратором кучі для реалізації розподілу динамічної пам'яті.
Змінні ErrorAddr, ExitCode і ExitProc використовується процедурами виходу.
Змінна PrefixSeg являє собою змінну довжиною в слово, яка містить адресу префікса програмного сегменту (PSP), яка створюється при виконанні програми системою DOS.
Змінна InOutRes використовується вбудованими програмами вводу-виводу для збереження значення, яке повертається при наступному виклику функції IOResult.
В RandSeed зберігається початкове значення для вбудованого генератора випадкових чисел. Якщо присвоювати цій змінній певне значення, то функція Random буде генерувати задану послідовність випадкових чисел.
Змінна FileMode дозволяє змінити режим доступу до відкритих типізованих чи нетипізованих файлів (0 – тільки читання, 1 – тільки запис, 2 – читання і запис).
Змінна StackLimit містить мінімальне допустиме зміщення вказівника стеку.
В змінній Test8086 вноситься значення, яке визначає тип процесора (0 – процесор 8086, 1 – 80286, 2 – 80386 і вище).
В змінну Test8087 записується результат тестування співпроцесора, якщо він використовується в програмі (0 – немає співпроцесора, 1 – співпроцесор 8087, 2 – співпроцесор 80287, 3 – співпроцесор 80387 і вище).
ТЕМА: МОДУЛЬ CRT
Модуль Crt містить ряд програм, які представляють можливість програмам, які працюють під DOS, ефективно управляти такими характеристиками персонального комп’ютера, як режим екрану, розширені коди клавіатури, кольору, вікна і звукові сигнали. Модуль Crt може використовуватися тільки в програмах, які працюють на персональних комп’ютерах IBM PC чи повністю сумісних з ними.
Одним з основних переваг використання модуля Crt являється підвищення швидкості і гнучкості при виконані операцій роботи з екраном. Програми, які не працюють з модулем Crt, виводять на екран інформацію за допомогою засобів операційної системи DOS, що зв’язано з додатковими операціями, які сповільнюють вивід. При використанні модуля Crt інформація, що виводиться, посилається базовій системі вводу-виводу (BIOS) чи, для іще більшого прискорення операцій, безпосередньо у відеопам’ять.
Щоб використовувати модуль Crt, його ім'я потрібно вказати в операторі USES вашої програми:
Uses CRT;
При ініціалізації модуля Crt, для того щоб можна було звертатися до процедур і функцій модуля, замість стандартних файлів вводу і виводу DOS призначаються стандартні вхідні і вихідні текстові файли. Таке призначення здійснюється виконанням на початку програми наступних операторів:
AssignCRT (Input);
Reset (Input);
AssignCRT (Output);
Rewrite (Output);
Ці оператори виконуються автоматично при підключенні модуля Crt і вказують, що призначення вхідних і вихідних файлів далі не допускається до тих пір, поки для них не буде виконано протилежного перепризначення і не відбудеться перехід до стандартного вводу і виводу за допомогою операторів:
Assign (Input, ‘‘);
Reset (Input);
Assign (Output, ‘‘ );
Rewrite (Output);