
- •Алфавіт мови включає в себе:
- •Лексеми мови. Під лексемами розуміють елементарні конструктивні елементи програми, які є неподільними:
- •Оголошення підпрограм: функцій та процедур. Структурне програмування передбачає побудову програм, яка фактично буде послідовністю звертань до підпрограм.
- •Оператор присвоєння присвоює змінній значення виразу, в якості якого може використовуватися і константа, і змінна, і результат обрахування функції, і група операцій. Оператор має вигляд:
- •Складений оператор. Якщо потрібно деяку групу команд інтерпретувати, їх як одну команду, тобто об’єднати їх в певному контексті, то використовують складені оператори.
- •Оператори вводу-виводу. В мові програмування 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; {ініціалізація графіки}
- •Віртуальним варто оголошувати лише той метод, який:
- •Постановки задачі;
- •Наявними програмними ресурсами;
- •Вимогами по швидкодії, використанням ресурсів еом.
Наприклад
Var
x1: integer; x2: char; x3: boolean; x3: rainbow;
…
x1: =32766;
x2: =’A’;
x3: =true;
x4: = red;
inc (x1); { x1=32767 }
inc (x1,2); { x1=-32767 }
dec (x3,2); { x3=true }
dec (x4); { x4=magenta }
4.Структурокані типи даних:
Раніше розглядалися скалярні дані. Це означає, що здійснювалася обробка неподільних значень деякого типу. Навіть, якщо в програмі викликається багато скалярних величин одного типу, але вони не є незалежними, то їх не можна вважати деякими структурами даних. Структурування передбачає об’єднання складених даних в єдині складені структури, що обробляються і розміщуються в пам’яті як одне ціле. Одним із способів структурування є формування так званих регулярних структур даних. До них відносять масиви, рядки, множини.
а) Регулярні типи – масиви
Масиви – структури даних, які є об’єднанням в одне ціле деякої фіксованої кількості однотипних елементів. Оголошуються масиви за допомогою службового слова array, після якого вказується розмір масиву, кількість елементів, а також тип самих елементів масиву.
TYPE<ідентифікатор типу >= ARRAY[<діапазон індексів>,<діапазон індексів >,…] OF<тип елементів > ;
В якості діапазонів індексів можуть викликатися інтервали одного із дискретних типів.
Кількість діапазонів визначає розмірність масиву:
1 Діапазон – одновимірний масив;
2 Діапазони – двовимірний ( таблиці, матриці);
п діапазонів – п-вимірний.
Діапазони індексів задаються аналогічно інтервальним типам, через .. . В якості типу елементів може бути виключно один із стандартних типів або будь-який раніше оголошений скалярний чи структурний тип даних.
Наприклад
Type
rainbow =(red, orange, yellow, blue, dark blue, magenta);
vector = array [1..3] of real;
mas1 = array[‘A’..’Z’] of byte;
mas2 = array[1..8,’A’..’H’] of byte;
mas3 = array[false,true, red..yellow] of char;
mas4 =array[-100..-50] of vector;
Оголошення змінних типу масив може здійснюватися або використанням ідентифікаторів раніше описаних
x:= mas1; y:= mas4;
або явним чином
a: array[1..26] of byte;
Доступ до елементів масиву для надання їм значень або навпаки для отримання їх, здійснюється через складену ідентифікацію, для цього задається ідентифікатор масиву, а в квадратних дужках задається значення відповідних ідентифікаторів.
В пам’яті під змінні масивних типів відводяться поля, розмір яких у байтах є сумою розмірів всіх елементів.
У випадку багатовимірних масивів елементи їх розміщуються послідовно в пам’яті в порядку задання розмірностей.
Якщо масиви використовуються в якості типізованих констант, то їх константні значення задаються переліком значень всіх елементів по кожній розмірності, елементи 1-ї розмірності обмежуються дужками. Якщо ж більше ніж одна, то кожен наступний рівень передбачає зовнішньою парою дужок.
б) Регулярний тип – рядки символів:
Структура даних, елементи якої є символами у Pascal є рядки символів. По способу організації і розміщення у пам’яті подібні до масивів. Їх відносять до однієї групи складених типів – регулярних.
Рядок – це деякий набір однотипних елементів. Проте їх кількість може змінюватися, але не перевищує деякої фіксованої межі
В ранніх версіях Pascal рядки навіть оголошувалися як масиви( упорядковані масиви символів).
В Turbo Pascal рядки символів оголошуються службовим словом STRING. При оголошенні може задаватися граничне значення довжини рядка, що слідує після слова string у квадратних дужках.
Це значення може лежати в межах від 0 до 255.
Реальна довжина рядка може бути меншою, але не більшою. Якщо така ситуація виникає, то залишок, що перевищує граничну довжину, втрачається.
Величини записуються в апострофах.
Наприклад
Var
S1: string;
S2: string[6];
…
S1:=’ABCDEFGH’;
S2:=S1; {S2=’ABCDEF’}
Для того, щоб апостроф сам став символом, а не лише його обмеженням, він повинен бути записаний двічі.
В пам’яті під рядки символів відводяться ділянки, кількість байт яких на одиницю більше від вказаної граничної довжини. Додатковий байт, який має нульовий номер, містить символ, код якого дорівнює реальній межі рядка. Якщо реальна менша від граничної, відведенні, але не використанні байти містять пусті символи, код яких дорівнює нулю.
Реальну довжину рядка легко змінити, при цьому інформація, яка знаходиться в хвості ділянки не втрачається і відновлюється, якщо повернутися до початкової довжини.
Рядки по структурі подібні до масивів, то можна легко оперувати символами рядка, користуючись індексацією елементів. Нульовий байт відповідає довжині.
При роботі із окремими елементами рядка слід пам’ятати, що цей елемент матиме типу char і для окремих стандартних підпрограм, що працюють з рядками він буде незастосовний.
Зауваження Рядок з одного символу і окремий символ типу char не одне і теж.
Для роботи із рядками символів, крім операцій індексного доступу можуть виконуватися операції об’єднання та порівняння та ряд дій, що реалізуються стандартними процедурами і функціями.
Об’єднання (конкатенація).
Конкатенація – приєднання одного рядка в кінець іншого.
Наприклад
S:=’і’ + ‘ стань’ + ‘ зіркою’; {і стань зіркою}
Якщо результат конкатенації перевищує граничну довжину, то надлишок просто ігнорується.
Операція порівняння
Два рядки рівні, якщо вони мають однакову кількість елементів і елементи відповідні рівні.
Наприклад
S1: string;
S2:string;
…
S1:= ‘ABCD’; {S1=S2}
S2:= ‘ABCD’;
Порівняння рядків порівнюється по-байтно, починаючи з першого символа.
в) Регулярний тип – множини
Множини і тип даних теж відносяться до регулярних складених типів. Це означає, що елементи таких структур даних будуть однотипні значення (цілі числа, символи, перелічувальні типи). На відмінну від масивів, де кількість елементів є фіксованою і незміною, множини можуть змінювати свій склад, проте кількість елементів не може перевищувати деякого фіксованого значення. І масиви, і рядки можуть мати декілька однакових елементів, у множині всі елементи різні.
Оголошення множини, при доповненні стандартних слів set of, після яких вказується ідентифікатор елементів множини. В якості базових типів можуть бути лише порядкові типи і кількістю елементів до 256. це цілі byte, shorting, символи char, логічні boolean.
Наприклад
Var
A: set of byte;
B: set of 0..100;
C: set of char;
D: set of rainbow;
Значення множинних величин задається в парі квадратних дужок, переліком через кому або інтервалом.
Наприклад
A:=[109,100,0,5..50];
B:=[100,0..99];
C:=[‘A’,’Z’];
D:=[red];
Множини можуть бути пустими[ ].
В пам’яті множини представляються у вигляді чисел достатньо великого розміру. Кожне із цих чисел в своєму подвійному записі матиме одиничний біт у позиції, що відповідає присутньому елементу. Таким чином множини займають у пам’яті 256 бітів і до 32 байт.
Якщо базовий тип є перелічувальний або інтервальний із меншою ніж 256 елементів, то і відповідне поле в пам’яті буде менше. Заданя перелічувальних типів визначає порядок бітів, що відповідають кожному елементу.