- •21)Рекурсія. Рекурсивні означення та підпрограми.
- •22)Типи файлів і оголошення файлових змінних
- •23)Процедурні типи
- •24)Відкриття та закриття файлів
- •25)Підпрограма-функція. Стандартні процедури та функції.
- •26)Послідовний запис і зчитування компонентів файла.
- •27)Формальні та фактичні параметри. Параметри-значення, параметри-змінні.
- •Прямий доступ до компонентів файла.
- •29)Поняття про процедуру з параметрами та без параметрів. Локальні та глобальні змінні.
- •30)Буферизація даних. Нетипізовані файли.
- •31)Переривання циклу. Створення циклу на основі вказівки безумовного переходу.
- •32)Поняття про запис. Доступ до компонентів та операції над записам.
- •33)Масив записів. Записи з варіантами.
- •34)Цикл з передумовою та післяумовою. Вкладені цикли.
- •35)Множини та множинний тип даних. Оголошення змінних множинного типу. Зображення множин в оперативній пам'яті.
- •36)Оператори циклів. Цикл з лічильником (з параметром).
- •37)Операції над множинами.
- •38)Оперативний блок. Поліваріантний вибір (Вказівка варіанту). Вказівка безумовного переходу.
- •Поняття про рядок. Функції та процедури обробки рядків.
- •40)Вибір з двох альтернатив (Вказівка розгалуження). Вкладеність конструкцій розгалуження. Логічні операції.
- •41) Загальні відомості про сортування. Сортування методом вибору.
- •42)Вказівки присвоєння, введення та виведення. Форматоване виведення. Арифметичні вирази та стандартні функції.
- •43)Загальні відомості про сортування. Сортування методом вставки.
- •44)Константа. Типізована константа. Змінна. Вирази
- •45)Загальні відомості про сортування. Сортування методом обміну.
- •46)Прості типи даних.
- •47)Загальні відомості про сортування. Швидке сортування.
- •48)Структура та розділи програми на мові Паскаль.
- •49)Загальні відомості про сортування. Сортування методом злиття.
- •50)Походження та розвиток мови Паскаль. Алфавіт та словник мови.
- •51)Класифікація мов програмування. Перетворення програм і система програмування. Мови програмування
- •53)Одновимірні масиви: поняття, його властивості, оголошення, ініціалізація, введення та виведення масиву.
- •54) Відкриті масиви
- •55)Побудова математичної моделі. Основні алгоритмічні структури.
- •Основні властивості масивів, притаманні як одновимірним, так і багатовимірним масивам:
- •Базовими операціями є:
- •Ініціалізація масиву:
- •57) Основні операції обробки одновимірних масивів: вставка та видалення елемента масиву, циклічний зсув елементів масиву.
- •58)Поняття алгоритму, властивості, способи опису.
- •59)Багатовимірні масиви: оголошення, доступ до елементів.
- •Оголошення багатовимірних масивів. Доступ до елементів
- •Можна і так:
- •60) Базові операції обробки двовимірних масивів
22)Типи файлів і оголошення файлових змінних
Файли класифікують за типом компонентів і за методом доступу до них. За типом компонентів розрізняють текстові та бінарні (двійкові) файли, а за методом доступу — файли послідовного і прямого доступу. Текстові файли призначені для збереження текстів (наприклад, текстів Pascal-програм), а бінарні файли використовуються для збереження даних різних типів. Відмінності між послідовним і прямим доступом до компонентів файлів буде роз'яснено у розділах 9.2.4 і 9.2.5.
Текстовий файл є сукупністю символьних рядків змінної довжини. Кожен рядок завершується маркером кінця рядка — спеціальною парою керуючих символів: #13 (повернення каретки) та #10 (переведення рядка). Наприкінці файла записується маркер кінця файла — керуючий символ #26. Приклад текстового файла, що складається з двох рядків, наведено на рис. 9.1.
Рис. 9.1. Текстовий файл, що є сукупністю рядків
Бінарні файли в мові Pascal поділяються на типізовані та нетитзовані. Типізований файл складається з компонентів одного типу. Кожний компонент має порядковий номер, номер першого компонента дорівнює нулю. Інформація в типізованих файлах зображується в тому самому вигляді, що і в пам'яті комп'ютера, і тому відпадає потреба у використанні керуючих символів типу кінця рядка або повернення каретки. Приклад зображення даних у файлі, що містить компоненти рядкового типу, наведено на рис. 9.2.
Рис. 9.2. Текстовий файл, що містить компоненти рядкового типу
Нетипізований файл у мові Pascal розглядається як сукупність байтів. Компонентом нетипізованого файла вважається запис, довжина якого за замовчуванням становить 128 байт.
Класифікуймо файли за методом доступу. Файли послідовного доступу забезпечують доступ до поточного компонента тільки після вибору попереднього, а файли прямого доступу забезпечують вибір компонента за його номером. Текстові файли можуть бути лише файлами з послідовним доступом. До компонентів бінарних файлів можливий прямий доступ.
Синтаксис оголошення файлової змінної залежить від типу файла. Далі наведено синтаксис оголошення змінної текстового, типізованого та нетипізованого файла.
var <ім'я файлової змінної>: text; var <ім'я файлової змінної>: file of <тип компонентів>; var <ім'я файлової змінної>: file;
Приклади оголошення файлових змінних наведено нижче.
УВАГА
Якщо формальний параметр підпрограми має файловий тип, то він має бути параметром-змінною. Передача файлової змінної до підпрограми як параметра-значення спричинить синтаксичну помилку, оскільки значення цієї змінної не можна скопіювати у стек.
9.2.2. Установка відповідності між фізичним і логічним файлами |
Файл будь-якого типу може бути оброблений у програмі лише після того, як певна файлова змінна буде зв'язана з певним фізичним файлом. Це зв'язування виконується за допомогою процедури Assign, що має такий синтаксис:
Аssіgn(<файлова змінна>;<рядковий вираз>);
Значенням рядкового виразу має бути ім'я фізичного файла. Формат цього імені визначається операційною системою. Нагадаємо, що повне ім'я файла в операційних системах MS-DOS та Windows має такий вигляд:
<ім'я логічного диска>:\<ім'я каталогу 1>\<ім'я каталогу 2>\...\ <ім'я файла>.<розширення>
Файл має знаходитися в робочому каталозі програми, якщо в його імені не вказано шлях до нього. Якщо ім'я файла задається порожнім рядком, то файлова змінна зв'язується зі стандартними файлами і nput та output, про які йтиметься нижче.
Виклик процедури Assign має передувати викликам усіх інших процедур обробки файлів. У прикладі 9.2 виконано зв'язування файлових змінних із фізичними файлами.
9.2.3. Відкриття та закриття файлів |
Фізичний файл, із яким була зв'язана файлова змінна, може перебувати в одному з таких станів.
Файл відкритий для читання: читання даних із файла дозволено, а запис до файла — заборонено.
Файл відкритий для запису: дозволений лише запис даних до файла.
Файл відкритий для читання і запису: дозволено як читання, так і запис до файла. У цьому стані не можуть перебувати текстові файли.
Файл закритий: із файлом не можна виконувати жодних дій.
Операції відкриття та закриття файлів виконуються відповідними процедурами, які розглянемо детальніше.
Відкриття файла для читання або для читання і запису виконується процедурою Reset, для якої є два варіанти синтаксису:
Reset(<файлова змінна>); Reset(var <файлова змінна> : File; <розмір запису> : Word);
Перший варіант процедури використовується для текстових і типізованих файлів, другий — для нетипізованих. Текстові файли процедура Reset відкриває лише для читання, а бінарні файли — для читання і запису.
Параметр <розмір запису> використовується під час обміну даними з нети-пізованим файлом. Розмір запису нетипізованого файла впливає на швидкість обміну даними між диском і пам'яттю. Найбільшу швидкість можна забезпечити, якщо задати розмір запису рівним розміру кластера. Нагадаємо, що кластер складається з фіксованого числа секторів дискового носія. Кластер може бути прочитаний або записаний протягом одного звернення до диска.
Із кожним відкритим файлом зв'язаний файловий покажчик, що вказує на той компонент файла, над яким буде виконано наступну операцію зчитування або запису. У разі виконання такої операції файловий покажчик зсувається на наступний компонент. Під час відкриття файла файловий покажчик встановлюється на початок файла, тобто на компонент із порядковим номером 0.
В результаті спроби відкрити файл, якого немає на диску, виникне помилка Error #2: File not found (Файл не знайдено). Щоб запобігти перериванню програми внаслідок спроби відкрити неіснуючий файл, використовують директиву компілятора {$I-}. Вона вимикає автоматичний контроль помилок введення та виведення. Директиву {$I+} використовують для ввімкнення такого контролю. Якщо контроль помилок введення-виведення вимкнено, то для перевірки наявності файла на диску можна використовувати функцію IOResult. Коли файл існує на диску, функція IOResult повертає значення 0. Приклад 9.3 показує, як використовуються директиви компілятора {$I-}, {$I+} і функція IOResult під час відкриття файла.
