
- •Алфавіт мови включає в себе:
- •Лексеми мови. Під лексемами розуміють елементарні конструктивні елементи програми, які є неподільними:
- •Оголошення підпрограм: функцій та процедур. Структурне програмування передбачає побудову програм, яка фактично буде послідовністю звертань до підпрограм.
- •Оператор присвоєння присвоює змінній значення виразу, в якості якого може використовуватися і константа, і змінна, і результат обрахування функції, і група операцій. Оператор має вигляд:
- •Складений оператор. Якщо потрібно деяку групу команд інтерпретувати, їх як одну команду, тобто об’єднати їх в певному контексті, то використовують складені оператори.
- •Оператори вводу-виводу. В мові програмування 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; {ініціалізація графіки}
- •Віртуальним варто оголошувати лише той метод, який:
- •Постановки задачі;
- •Наявними програмними ресурсами;
- •Вимогами по швидкодії, використанням ресурсів еом.
5.Комбіновані структури даних.
а)Записи
Масиви, рядки, множини давали складені структури даних, елементи яких були одного і того ж типу. Кількість елементів в них могла б бути різною. В масивах фіксованою, в рядках і множинах могла б змінюватися, але тип був би спільним. Часто виникає проблема у формування структур даних, елементи яких мають різний тип.
Об’єднання цих типів в одну структуру
Оголошуються записи за допомогою слова record. Після нього слідує перелік окремих елементів запису. Елементи описуються через ідентифікатор і тип, що розділюється двокрапкою.
В кінці запис закривається службовим словом end.
TYPE
<ім’я типу запису> = RECORD
<ідентифікатор1>: <тип поля>;
<ідентифікатор2>: <тип поля>;
...
END;
Наприклад
Type
Student = record
Name: string;
Yy, mm, dd: word;
Pol: (female, male);
Educ: (state, pay);
Usp:real;
End;
Під величини в пам’яті відводиться, розмір якого дорівнює сумі розмірів кожного поля.
Оскільки записи є комбінаціями різних полів, то доступ до окремого поля повинен здійснюватися при допомозі складеної ідентифікації, кожне поле має своє ім’я.
Якщо весь запис позначається деяким ідентифікатором деякої змінної, то кожне ім’я поля має вигляд
<ідентифікатор запису>.<ідентифікатор поля запису>
Наприклад
a.name , a.year, a.pol, a.educ
Враховуючи, що запис є комбінацією різних типів, можна будувати записи із записів.
Наприклад
Дату народження можна оголосити не трьома цілими числами, а записом трьох чисел.
Type
Date = record
Yy: integer;
Mm, dd: byte;
Таким чином ми отримуємо запис в записі.
Для доступу до окремих полів дати народження, в цьому випадку теж використовуються складені ідентифікатори.
Враховуючи скомбінованість структури, ввід і вивід даних можливе лише по окремих полях.
Якщо запис містить невелику кількість полів, то використання складених ідентифікаторів не є обтяжливим, але коли полів багато і щоразу використовується звернення до більшості з них, то використання загального імені запису в кожному випадку вимагає конструктивної роботи по набору тексту. Тому в таких випадках використовуються спеціальні оператори приєднання або оператори надзапису.
WITH <ім’я запису>DO <оператор над полями>;
Наприклад
With a do
Begin
Readln(name);
With date born do
Readln(yy, mm, dd);
Readln(usp);
Операції над записами зводяться до операцій відношення до порівняння на рівність і не рівність.
Рівні – записи, в яких структура і значення всіх полів однакові.
Наприклад
Програма формування бази даних про студентів у вигляді масиву із п записів.
Type
Student = record
{}
end;
var
a: array[1..n] of student;
i, j: byte;
begin
for i:=1 to n do
with a[i] do
begin
writeln(‘введіть ім’я’);
readln(name);
with date born do
begin
writeln(‘введіть дату народження’);
readln(yy,mm,dd);
end;
writeln(‘введіть стать: 0-жін; 1-чол’);
readln(j);
if j=1 then pol:=male else pol:=female;
writeln(‘введіть форму навчання: 0-держ; 1-плат’);
readln(j);
if j=1 then educ:=pay else educ:=state;
writeln(‘введіть успішність’);
readln(usp);
end;
Формування баз даних має свої переваги і недоліки. До переваг відносять те, що масив розміщується у швидкій оперативній пам’яті, а це значно зменшує час роботи.
Крім того, розміри масивів є фіксованими, а отже збільшити кількість записів не вдасться.
Набагато зручніше реалізовувати бази даних у вигляді файлів.
б) Записи з варіантами
Часто бази даних повинні містити інформацію, структура якої залежить від значень окремих полів.
Наприклад
В базі даних про студентів для хлопців актуальним може бути відношення до військової служби (придатний, непридатний) і зріст (в танкові війська до 175 см), а для дівчат інтерес може мати колір волосся, очей, улюблена косметика.
Таким чином, якщо поле pol має значення male, то запис повинен мати два додаткових поля (армія, зріст). Якщо ж pol дорівнює female, то потрібно три додаткові поля. Решта ж полів мають бути однакові.
Для реалізації таких комбінованих типів використовуються записи із варіантними частинами. Вони будуються подібно до звичайних записів, але використовують оператор case.
Зауваження