- •Історична довідка
- •Характеристика й особливості мови
- •Алфавіт мови
- •Службові (зарезервовані) слова.
- •Структура програми мови 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. Лінійний пошук у списку
- •Змішані таблиці
- •Об’єктно-орієнтоване програмування. Що таке об’єктно-орієнтоване програмування
- •Інкапсуляція
- •Спадкування
- •Віртуальні методи і поліморфізм
- •Конструктори, динамічні об'єкти і деструктори
- •Поля і методи: сховані і загальнодоступні
- •Системно- залежні розширення
- •Налагодження змінних
- •Оверлеї
- •Переривання і системні виклики
- •Доступ до пам'яті і портів
- •Перевизначення переривань
1. Оголошення файлової змінної і прив'язка до файлу на диску
Для того щоб програма могла працювати з текстовим файлом, нам буде потрібно змінна спеціального файлового типу text:
var f: text;
Ця змінна не містить у собі весь текст із файлу, вона служить для читання даних з файлу і для запису нових даних у нього.
Перш ніж працювати з конкретним файлом на диску, файлову змінну варто зв'язати з цим файлом, використовуючи таку процедуру:
assign(TxtFile: text, name: string);
Перший параметр (TxtFile) — файлова змінна, другий — рядок, що містить ім'я файлу на диску. Якщо файл лежить у поточному каталозі, то досить указати тільки його ім'я і розширення, якщо в якому-небудь іншому, то потрібно вказувати шлях до цього файлу, наприклад:
assign(f,'Z:\SCHOOL\text1.txt');
2. Читання даних з файлу
Перед тим як розглядати процедури читання, помітимо що файл можна обходити тільки послідовно. Гарною аналогією файлу може послужити магнітна стрічка, з якої данні можна зчитувати тільки по черзі, а для повернення до початку блоку даних потрібно додаткове зусилля (перемотування).
Щоб відкрити для читання файл, що був зазначений при виклику assign, потрібно використовувати процедуру
reset(TxtFile: text);
Після такої дії «читаючий покажчик» буде встановлений на початок файлу. Зрозуміло, зазначений файл повинний існувати на диску, у противному випадку в програмі виникне помилка.
Після відкриття файлу можна починати читання даних. Для цього використовуються процедури read і readln, що використовуються в наступному форматі:
read(TxtFile: text, v1: type1, v2: type2, ... vN: typeN);
readln(TxtFile: text, v1: type1, v2: type2, ... vN: typeN);
Перша процедура читає послідовно з файлу значення і поміщає їх у змінні v1, v2, ... v. Після кожного прочитаного значення покажчик файлу зміщується до початку наступного значення. Процедура readln робить те ж саме, після чого переміщує покажчик на початок наступної рядка; readln з одним лише першим параметром переводить покажчик на початок нового рядка. Як параметри для процедур read і readln можна використовувати змінні наступних типів:
цілі: integer, byte, shortint, word, longint;
дійсні: real, single, double, extended, comp;
рядкові (string);
символьні (char).
При читанні рядкових значень з файлу береться вся послідовність символів від позиції покажчика до кінця рядка. Якщо після цього спробувати знову прочитати рядок, то результат буде порожнім рядком ( ' ' ). Якщо спробувати прочитати число, коли покажчик файлу стоїть наприкінці рядка, то буде прочитаний 0.
При читанні чисел read і readln працюють так: спочатку покажчик пропускає всі пробіли і символи табуляції, а потім, знайшовши перший значущий символ, намагається прочитати число. Якщо це неможливо (зустрілася буква чи число записане невірно), то відбудеться помилка.
Приклад використання процедури читання:
var f: text; s: string; n: integer;
...
readln(f,n,s);
Необхідно пам'ятати, що якщо файл не був відкритий для читання за допомогою reset, то будь-яка спроба прочитати з нього дані приведе до помилки.
Досить часто в програмі буває необхідно визначити, чи дійшов покажчик файлу до кінця рядка чи до кінця файлу. У цьому випадку корисно використовувати такі функції:
eoln(TxtFile: text): boolean;
eof(TxtFile: text): boolean;
Перша приймає значення true (істина), якщо покажчик стоїть на кінці рядка, друга — те ж саме для кінця файлу.
Після того як всі операції читання закінчені, файл необхідно закрити за допомогою процедури
close(TxtFile: text);
якщо цього не зробити, то уміст файлу може виявитися зіпсованим після виконання нашої програми.
Приклад 1 (процедури читання). Нехай мається текстовий файл, наприклад програма на Паскалі. Потрібно роздрукувати його вміст на екрані:
program ShowFile;
var f: text;
c: char;
begin
assign(f,'showfile.pas');
reset(f);
while not eof(f) do begin
while not eoln(f) do begin read(f,c); write(c); end;
readln(f);
writeln;
end;
close(f);
readln;
end.