- •Історична довідка
- •Характеристика й особливості мови
- •Алфавіт мови
- •Службові (зарезервовані) слова.
- •Структура програми мови Turbo Pascal
- •Розділ оголошень і угод
- •Розділ текстів процедур і функцій
- •Розділ основного блоку програми
- •Процедури введення-виведення. Деякі вбудовані функції Турбо-Паскаля.
- •Функції числових параметрів.
- •Базові управляючі конструкції Турбо-Паскаля Оператори умовного переходу.
- •1. Оператор if.
- •2. Оператор вибору (case)
- •Оператори циклів у Паскалі
- •1. Цикл із післяумовою (Repeat)
- •2. Цикл із предумовою (While)
- •3. Цикл із лічильником або параметром (For)
- •Концепція типів даних. Типи даних в мові Pascal
- •Дійсні типи
- •Бульовий (логічний) тип
- •Символьні і рядкові змінні
- •1. Символьний тип
- •2. Рядковий тип
- •Перерахований та обмежений типи
- •1. Перерахований тип
- •2. Обмежений тип
- •1. Поняття масиву. Одномірні масиви
- •2. Багатомірні масиви
- •3. Сортування і пошук
- •Множинний тип
- •Тип запис
- •Процедури і функції
- •Формальні і фактичні параметри. Механізм параметрів
- •Параметри - значення
- •Параметри-змінні
- •Безтипові параметри
- •Приведення типів.
- •Процедурні типи
- •Рекурсія Рекурсивні визначення
- •Рекурсивні підпрограми
- •Алгоритми з поверненням. Розв’язок задачі про рух коня
- •Алгоритми з поверненням. Розв’язок задачі про вісьмох ферзів
- •If підходить тнеn
- •Модулі в Турбо Паскалі
- •Модуль crt
- •1. Керування екраном
- •2. Робота з клавіатурою
- •3. Інші можливості
- •Графіка в Турбо Паскалі
- •1. Включення і вимикання графічного режиму.
- •2. Побудова елементарних зображень
- •3. Виведення текстової інформації.
- •Файли в мові програмування Pascal
- •Установчі і завершальні операції
- •Операції введення-виведення
- •Обробка помилок введення-виведення
- •Переміщення по файлу
- •Спеціальні операції
- •Текстові файли
- •1. Оголошення файлової змінної і прив'язка до файлу на диску
- •2. Читання даних з файлу
- •3. Запис даних у файл
- •Двійкові файли
- •1. Типізовані файли
- •2. Нетипізовані файли
- •Статичні і динамічні змінні
- •Покажчики
- •Стан покажчика
- •Установка розмірів динамічної пам'яті
- •Сумісність і перетворення посилкових типів
- •Динамічні структури даних
- •Динамічні змінні: інші види списків, стек і черга.
- •1. Інші види списків
- •2. Стек і черга
- •Дерева і пошук у деревах
- •1. Визначення й описи структур даних
- •1. Масив
- •2. Список
- •3. Дерево
- •2. Алгоритми
- •1. Лінійний пошук у масиві
- •2. Двійковий пошук
- •3. Лінійний пошук у списку
- •Змішані таблиці
- •Об’єктно-орієнтоване програмування. Що таке об’єктно-орієнтоване програмування
- •Інкапсуляція
- •Спадкування
- •Віртуальні методи і поліморфізм
- •Конструктори, динамічні об'єкти і деструктори
- •Поля і методи: сховані і загальнодоступні
- •Системно- залежні розширення
- •Налагодження змінних
- •Оверлеї
- •Переривання і системні виклики
- •Доступ до пам'яті і портів
- •Перевизначення переривань
Операції введення-виведення
У цю групу входять дві операції (процедури), що власне, і реалізують дії по читанню інформації з файлу і запису інформації в файл:
Read
Write
На відміну від багатьох інших процедур, Read і Write можуть викликатися з РІЗНИМ ЧИСЛОМ ПАРАМЕТЮВ, і ці параметри можуть мати РІЗНІ ТИПИ.
Процедура Read призначена для читання значень з файлу в програму. Першим параметром повинно бути ім'я файлової змінної, до якої була застосована одна з операцій відкриття (Reset чи Rewrite). Далі повинні визначатись змінні, у які будуть розташовуватись значення, що читаються з файлу. Тип цих змінних повинний збігатися з базовим типом файлу з першого параметра.
Виконання процедури Read відбувається так. Починаючи з поточної позиції покажчика файлу буду послідовно читатися значення, що містяться у файлі. Кожне прочитане значення буде присвоюватись черговий змінний з тих, котрі зазначені у виклику процедури. Після кожного акта читання покажчик файлу буде зміщатися на наступну позицію.
Якщо в процесі виконання процедури Read поточний покажчик файлу буде встановлений на позицію, що не містить інформації (тобто буде досягнутий кінець файлу), то читання буде припинено, процедура Read завершиться передчасно, і виникне ситуація “кінець файлу". Виникнення цієї ситуації можна перевірити за допомогою вбудованої функції eof.
Процедура Write має зворотний сенс, дозволяючи записувати у файл інформацію з програми. Першим параметром цієї процедури повинно бути ім’я файловою змінною, відкритої процедурою Reset чи Rewrite. Далі повинний йти список виразів, тип яких збігається з базовим типом файлу з першого параметра.
Виконання процедури Write досить очевидно. Значення чергового виразу буде поміщено у файл в місце, відзначене поточним покажчиком. Після цього поточний покажчик буде пересунений на одну позицію і дії повторяться для наступного виразу зі списку параметрів виклику процедури Write.
Обробка помилок введення-виведення
Виконання операцій, що здійснюють дії з файлами на зовнішніх пристроях, з досить високою імовірністю може викликати виникнення тих чи інших помилкових ситуацій. Тому при програмуванні фрагментів, зв'язаних з такими діями, необхідно виявляти підвищену акуратність і намагатися передбачати обставини, при яких та чи інша операція може привести до помилки.
У програмі мовою Turbo Pascal установлені наступні правила обробки помилкових ситуацій, зв'язаних із введенням-виведенням. За замовчуванням при виконанні будь-якої такої операції автоматично виробляється перевірка на виникнення помилки. При виявленні помилки виконання програми припиняється, а на екран дисплея виводиться коротке діагностичне повідомлення, що містить умовний номер помилки.
Поряд з такою стандартною формою реакції на помилки, у системі мається можливість передбачити власну реакцію на помилкові ситуації в самій програмі. Для цього необхідно на початку "небезпечного" фрагмента програми відключити автоматичну перевірку на виникнення помилки. Це робиться внесенням директиви компілятора {$-}. У цьому випадку виникнення помилки при виконанні програми не буде приводити до негайного її завершення; замість цьго код (умовний номер) виниклої помилки буде запам’ятований системою. За допомогою стандартної функції IoResult без параметрів можна одержати цей код і побудувати подальші дії в залежності від його значення, наприклад:
Assign (F,'з:\myfile');
{$I-} { відключаємо автоматичний контроль }
Reset (P) ;
{$I+} { включаємо автоматичний контроль }
if IOResult <> 0 then { виникла помилка}
Write('Помилка при відкритті файлу');
У випадку використання функції IoResult потрібно твердо пам'ятати наступну особливість: якщо відключений режим автоматичного контролю (спрацювала директива {$I-}), то після виникнення помилки всі наступні операції. З БУДЬ-ЯКИМ ФАЙЛОМ будуть ігноруватися, поки не відбудеться звертання до функції IoResult. Тому гарним правилом є виклик функції й аналіз коду помилки ВІДРАЗУ ПІСЛЯ виконання операції, зв'язаної з файлом. Крім того, варто пам'ятати, що виклик функції IoResult, повертаючи в програму код помилки, обнулює цей код, тому наступні звертання до цієї функції будуть завжди давати нульовий результат, поки яка-небудь файлова операція не закінчиться аварійно.
Вважається, що при успішному виконанні операції звертання до IoResult дає в результаті 0; ненульовий результат свідчить про виникнення помилки. При необхідності можна провести більш детальний аналіз коду помилки, наприклад:
Assign(F,'з:\myfile');
{$І-} { відключаємо автоматичний контроль }
Reset(F) ;
Code := IoResult; { одержали код результату }
if Code <> 0 then begin { виникла помилка! }
Write('Помилка при відкритті файлу: ');
case Code of
1 : Write('Файл не знайдений') ;
3 : Write('Маршрут не знайдений') ;
4 : Write('Занадто багато відкритих файлів') ;
5 : Write('Заборона доступу до файлу');
6 : Write('Некоректний хід доступу до файлів') else
end
end;
{$!+) { включаємо автоматичний контроль }
Повний список можливих помилкових ситуацій і відповідних кодів приводиться у фірмовій документації по системі Turbo Pascal.