
- •Алфавіт мови включає в себе:
- •Лексеми мови. Під лексемами розуміють елементарні конструктивні елементи програми, які є неподільними:
- •Оголошення підпрограм: функцій та процедур. Структурне програмування передбачає побудову програм, яка фактично буде послідовністю звертань до підпрограм.
- •Оператор присвоєння присвоює змінній значення виразу, в якості якого може використовуватися і константа, і змінна, і результат обрахування функції, і група операцій. Оператор має вигляд:
- •Складений оператор. Якщо потрібно деяку групу команд інтерпретувати, їх як одну команду, тобто об’єднати їх в певному контексті, то використовують складені оператори.
- •Оператори вводу-виводу. В мові програмування 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; {ініціалізація графіки}
- •Віртуальним варто оголошувати лише той метод, який:
- •Постановки задачі;
- •Наявними програмними ресурсами;
- •Вимогами по швидкодії, використанням ресурсів еом.
Заголовок.
UNIT <ім'я модуля>;
На відмінну від програм, заголовок модуля є обов’язковим. Ім'я модуля повинно співпадати з іменем відповідного *.pas-файлу, що містить текст модуля (8 букв).
Інтерфейс на частина.
ІNTERFACE
TYPE
compl=record
re,im:real
END;
PROCEDURE SUMA (a,b:compl; var d:compl);
PROCEDURE RIZNUTSYA (a,b:compl; var d:compl);
PROCEDURE DOBYTOK (a,b:compl; var d:compl);
PROCEDURE CHASTKA (a,b:compl; var d:compl);
FUNCTION MODYL (a:compl):real;
FUNCTION ARGYMENT (a:compl):real;
В розділі інтерфейс оголошуються всі компоненти модуля, структура яких і самі вони мають бути „видимими” зовнішнім програмам, що використовують цей модуль.
В інтерфейсі можуть оголошуватися: uses- специфікація всіх модулів, що використовуються даним модулем; константи; типи; мітки; змінні; заголовки підпрограм. Всі перелічені компоненти будуть доступними, тобто „видимими” іншим програмам.
Підпрограми зовні модуля будуть видимі лише своїм інтерфейсом, причому описується, що це за підпрограма: процедура чи функція; ім'я, повний список формальних параметрів та тип результату для функції.
Такий спосіб оголошення підпрограм приховує внутрішню реалізацію відповідних підпрограм, а залишає доступним лише перелік параметрів та ім'я.
Розділ реалізації. В реалізації описуються всі компоненти мови, які мають бути невидимі зовні.
Тут можуть бути оголошення констант, типів змінних, підпрограм для внутрішнього використання, а також використовуються реалізації всіх підпрограм, заголовки яких містяться в інтерфейсі.
При описі реалізації підпрограм в цьому розділі може задаватися лише скорочений заголовок без списку формальних параметрів.
implementation
PROCEDURE SUMA;
BEGIN
d.Re:=a.Re+b.Re;
d.Im:=a.Im+b.Im;
END;
PROCEDURE RIZNUTSYA;
BEGIN
d.Re:=a.Re-b.Re;
d.Im:=a.Im-b.Im;
END;
Розділ ініціалізації початкових значень змінних. Цей розділ є необов’язковим і містить оператори присвоєння змінним із розділу інтерфейс, якщо вони є деяких початкових значень, якщо вони відмінні від значень по-замовчуванню.
Якщо в інтерфейсі не оголошувалася жодна змінна або їй не потрібно надавати певного значення відмінного від замовчування, то розділ ініціалізації може бути пустим.
Розділ ініціалізації обмежується операторними дужками. Якщо модуль не містить жодної ініціалізації змінних, то слово begin може бути відсутнім.
Тема: Компіляція модулів.
Після того, як модуль повністю заповнений відповідними оголошеннями, його ще не можна використовувати іншими програмами, адже програми користуються не текстовим описанням, а вже відкомпільованими компонентами.
Компіляція модуля повинна здійснюватися не у пам'яті, а на диск у вигляді *.TPU-файла. Це можна здійснити, вибравши відповідний пункт меню інтегрованої оболонки та підпункт Destination disk (по замовчуваннюBest nation memory). Після цього компіляція буде здійснюватися на диск у вигляді типового файла.
Компільований модуль може бути підключений до будь-якої програми, при цьому він має бути в тому самому каталозі звідки запускається інтегрована оболонка turbo.exe, або в підпункті directories.
В підпункті directories має бути вказаний шлях до каталогу, де знаходиться цей модуль.
Тема: Видимість ідентифікаторів у модулях.
Часто виникає ситуація, коли деякий модуль А використовується в програмі Р, в свою чергу модуль А використовує ресурси іншого модуля В, а той в свою чергу користується модулем С, крім цього кожен з модулів С, В, А і сама програма Р можуть містити оголошення деяких навіть різних компонентів, але з одним іменем. Якщо має місце таке вкладене використання модулів, то як правильно оголосити uses- специфікацію в кожному модулі і програмі, а також як отримати доступ до однойменних об’єктів різних рівнів. Для цього потрібно користуватись такими правилами:
Якщо програма явно користується ресурсами модуля А (не явно, тобто через ресурси модуля А) ресурсами модуля В. Модуль А явно використовує модуль В і неявно (тобто через модуль В) використовує модуль С і т. д. То в uses- специфікації потрібно вказувати всі модулі, які використовуються явно або неявно, причому у порядку, який є зворотним до порядку вкладення модулів. Таким чином матимемо оголошення:
UNIT C;
INTERFACE
... ... ...
IMPLEMENTATION
... ... ...
BEGIN
END
UNIT B; UNIT A;
INTERFACE INTERFACE
USES C; USES B,C;
... ... ...
PROGRAM P;
USES C,B,A;
VAR
xx: real;
Якщо в декількох модулях і програмах є однойменні об’єкти, то доступним вважається той з об’єктів, який, або оголошений в поточному модулі, або у першому по-порядку в uses- специфікації з право наліво, якщо у поточному модулі чи програмі його оголошення відсутнє.
ТЕМА: СТАНДАРТНІ МОДУЛІ
Модуль – це бібліотека, яка містить константи, опис типів даних, змінні, процедури і функції. Кожний модуль транслюється відмінно і може використовуватися в програмі користувача. Турбо Паскаль включає 10 модулів для реального режиму DOS. Найчастіше модулі, які використовуються, знаходяться в файлі TURBO.TPL. останні модулі містяться в файлах з розширенням .TRU.
Файл TURBO.TPL містить модулі System, Overlay, Dos, CRT і Printer. Останні модулі (Graph, String, WinDos, Turbo3 і Graph3) розміщуються в окремих файлах з розширенням .TRU. Також в Турбо Паскаль є модулі бібліотеки Turbo Vision.
Модуль System – це бібліотека підтримки Турбо Паскаля. Модуль забезпечує виконання програм низького рівня підтримки для всіх вбудованих можливостей, таких як файловий ввід-вивід, обробка рядків, операції з плаваючою комою і роботи з динамічною пам’яттю. Всі модулі і програми автоматично використовують модуль System.
Модулі Dos і WinDos підтримують більшість найбільш часто використовуваних функцій операційної системи і функцій обробки файлів. На відмінну від Dos модуль WinDos використовує особливий тип рядків – рядки з завершуючим нулем – і призначений для написання програм, які взаємодіють з Windows.
Модуль CRT містить підпрограми управління екранним режимом, читання розширених кодів клавіатури, використання кольорів, вікон і звуку. Він дозволяє писати програми, які направляють вивід на екран, безпосередньо в BIOS чи відео пам’ять. Модуль CRT можна використовувати тільки в програмах, призначених для роботи на комп’ютерах IBM PC і сумісних з ними.
Модуль Printer дозволяє перенапрямляти стандартний вивід Турбо Паскаля на принтер, використовуючи оператори Write і Writeln.
Модуль Overlay містить процедури, функції і змінні, які використовує програма управління оверлеями Турбо Паскаль. Він дозволяє зменшити об’єм пам’яті, яка потребується програмам, які виконуються в реальному режимі Dos. Фактично, він дозволяє писати програми, яким треба більше пам'яті, чім реально доступно на машині, оскільки під час роботи програми в пам'яті буде знаходитися тільки її частина.
Модуль Strings дає можливість програмі використовувати рядки з останнім нулем, що разом з розширеним синтаксисом дозволяє писати програми, сумісні з Windows-додатками.
Модуль Graph являє собою бібліотеку швидких і потужних підпрограм універсального призначення для роботи з графікою. Модуль містить апаратно-незалежні графічні майстри обробки, які підтримують найбільш поширені графічні адаптери IBM- сумісних персональних комп’ютерів, такі як CGI, EGA, VGA, Hercules, AT&T 400, MCGA, 3270 PC і IBM-8514. для роботи модуля також потрібен набір файлів автономних драйверів графічного адаптера (BGI-файли), а у випадку використання штрихових шрифтів – файли з цими шрифтами ( CHR-файли).
ТЕМА: МОДУЛЬ SYSTEM