Операції уведення-виведення
Уведення-виведення - це операції-процедури, за допомогою яких читають і записують інформацію у файл:
Read - читання;
Write - записування.
Процедура read(f.,v) присвоює змінній v значення компоненти файла f, на яку вказує вікно, і пересуває вікно на наступну позицію файлу.
Параметрів процедури Read(f,v1,v2,...) може бути декілька. Компоненти файлу послідовно присвоюються цим змінним. Після читання кожного компонента вікно файлу зміщується на одну позицію.
Процедура Write(f,x) записує в файл f позицію, на яку вказує вікно, черговий компонент, що дорівнює значенню виразу х, а вікно зсувається на наступну позицію файлу. Зрозуміло, що тип виразу чи змінної х повинен збігатися з типом компонентів файлу f.
Пересування по файлу
З метою пересування по файлу використовують дві процедури Seek і Truncate та додатково три функції FileSize, FilePos і Eof.
Процедура Seek змінює положення вікна, поміщаючи його на елемент файлу з заданим номером. Звертання до процедури таке:
Seek(<ім'я_файлової_змінної>,<номер_елемента>)
Другий параметр - ціле число типу longint. Після виконання процедури Seek подальше читання чи записування можна виконувати з позиції, на яку перенесене вікно файлу.
Функція FileSize повертає кількість елементів файлу.
Функція FilePos повертає номер елемента, на якому розміщене вікно. Обидві функції мають один параметр - ім'я файлової змінної. Наприклад:
Seek(f, FilePos(f)+1) - пропуск одного елемента;
Seek(f, 0) - розміщення вікна на початку;
Seek(f, FileSize(f)) - розміщення вікна після останнього елемента для дописування файлу.
Функція Eof перевіряє кінець файлу. Оскільки кількість компонентів у файлі ніде не фіксується, то під час опрацювання файлів важливо мати змогу визначати, чи не вийшло вікно за межі файлу. Для цього в мові Паскаль використовують логічну функцію Eof. Значення цієї функції Eof(f) дорівнює true, якщо вікно вказує на кінець файлу, тобто на позицію, що є після останнього компонента файлу. В протилежному випадку значення функції Eof(f) дорівнює false. Якщо значення функції Eof(f) дорівнює true, то звертання до процедури читання з цього файлу спричинить помилку.
Процедура Truncate(f) відтинає частину файлу, починаючи з позиції вікна файлу включно з нею.
Є ще такі спеціальні операції з файлами:
Erase - вилучити файл на диску;
Rename - перейменувати файл;
Chdir - задати поточний каталог;
Mkdir- створити новий підкаталог;
Rmdir - вилучити порожній підкаталог.
Текстові файли
У мові Паскаль окремо виділяють текстові файли, яким відповідає стандартне ім'я text. Наприклад:
type
T=text;
Тип text є стандартним і тому в програмі не описаний.
Текстовий файл - це послідовність літер, однак він не еквівалентний типу
type
T=file of char;
У текстовому файлі послідовність літер розділена на рядки. В кінці кожного рядка є символ "кінець рядка", внутрішнє відображення якого залежить від реалізації. Звичайно, "кінець рядка" - це комбінація коду "переведення каретки" (символ #13), за яким може бути код «переведення рядка» (символ #10). Символ # використовують для позначення символів, які не мають графічного відображення. Наприклад, #10 - це символ з кодом 10. Для програмування переважно немає потреби знати коди символів "кінець рядка" і "кінець файлу" (#26). З символом "кінець рядка" пов'язана логічна функція Eoln. Функція Eoln(t) набуває значення true, якщо вікно вказує на кінець рядка, і false - у протилежному випадку.
Для записування ознаки кінця рядка застосовують стандартну процедуру Writeln. З текстовими файлами використовують також процедуру Readln, результатом виконання якої є пропуск усіх символів до кінця рядка, тобто перенесення вікна файлу з поточного символу на наступний після кінця рядка. Якщо ж після поточного символу нема символу "кінець рядка", то буде зафіксована помилка.
Операції читання і записування з текстовими файлами є чітко послідовними. Крім того, текстовий файл не можна одночасно використати для читання і записування. Для текстових файлів використовують ті ж процедури ініціалізації, відкривання і закривання, що й для звичайних файлів. Однак операція Reset відкриває текстовий файл тільки для послідовного читання, a Rewrite - для його оновлення, тобто для записування в файл. Якщо треба змінити режим роботи, то потрібно знову відкрити файл, використовуючи відповідну процедуру.
Додатково для текстових файлів визначені такі процедури.
Append – відкриває файл для записування в його кінець (дописування). Звертання:
Арреnd(<ім'я_файлової_змінної>).
Процедура не очищає файл, а тільки розміщує вікно файлу в його кінець, її зручно використовувати для додавання нових рядків у кінець вже створеного текстового файлу.
SetTextBuf – визначає буфер для обміну з текстовим файлом, її застосовують для прискорення обміну з файлом. Під час відкривання файлу з файловою змінною пов'язується системний буфер розміром 128 байтів, через який і відбувається обмін. Цей буфер виділяється автоматично і доступ до нього неможливий. Процедура SetTextBuf дає змогу сформувати його не в системній області, а в самій програмі й у разі потреби задати його ємність. Звертання таке:
SetTextBuf(var F: text; var Buf; Size: word).
Тут F – файлова змінна, файл не повинен бути відкритий; Buf – змінна для розміщення буфера (нетипований параметр); Size – ємність буфера, байт. Цей параметр не обов'язковий. Якщо його нема, то за замовчуванням ємність становить 128 байтів.
Для читання і записування використовують процедури Read, Readln і Write, Writeln. Оскільки текстовий файл містить символьну інформацію, то під час записування даних іншого типу чи читання змінних іншого типу ці дані й змінні іншого типу автоматично будуть перетворені в символьні і навпаки.
З метою перевірки кінця файлу застосовують функцію Eof, як і для нетекстових файлів.
До текстових файлів не використовують процедуру Seek, оскільки довжина рядків не визначена, зате користуються функціями SeekEoLn і SeekEoF.
SeekEoLn - пошук кінця поточного рядка. Пропускає всі символи-розділювачі (прогалини і табуляції) в рядку і розміщує вікно у кінці рядка, якщо його знайдено, і вертає true. Якщо ж кінця рядка не знайдено, то вікно буде на першому значущому символі і вертає false.
SeekEoF - пошук кінця файлу. Пропускає всі символи-розділювачі, в тому числі символи "кінець рядка", і розміщує вікно файлу на кінці файлу, якщо його знайдено, повертаючи в програму true. Якщо ж кінець файлу не відшукано, то вікно розміститься на першому значущому символі і вертає у програму false.
- Інформація та інформаційні процеси Поняття інформації.
- Одиниці вимірювання інформації.
- Подання інформації та типи комп'ютерів.
- Способи пересилання інформації.
- Будова комп'ютера
- Пристрої введення-виведення інформації.
- Процесор
- Принципи функціонування комп'ютера Фізичні принципи
- Програмний принцип
- Поняття про середовища програмування
- Загальна характеристика мови паскаль
- Поняття інтегрованого середовища
- Команда New
- Команда Open
- Основи алгоритмізації Алгоритми та їх властивості
- Блок-схеми
- Загальна характеристика Паскаль-програми
- Структура Паскаль-програми
- Елементи мови Паскаль
- Прості типи даних
- Стандартні типи даних
- Дійсний тип
- Логічний тип
- Символьний тип
- Конструйовані типи
- Перелічуваний тип
- Оператори надання значень змінним Оператор присвоєння
- Уведення-виведення
- Порядок виконання операцій
- Складений оператор
- Стиль запису програми
- Структури керування
- Структура послідовного виконання
- Структура розгалуження
- Умовний оператор
- Оператор варіанта
- Оператор безумовного переходу
- Структура повторення
- Цикл з параметром
- Цикл з передумовою
- Цикл з післяумовою
- Ітераційні цикли
- Обчислення суми знакозмінного ряду із заданою точністю
- Процедури і функції
- Процедури з параметрами. Параметри-значення
- Одномірні масиви
- Поняття масиву. Одномірний масив та його опис в програмі
- Обчислення скалярного добутку двох векторів
- Знаходження найбільшого (найменшого) значень серед елементів масиву
- Обчислення суми та добутку елементів масиву
- Перетворення масиву по заданому закону
- Впорядкування одномірних масивів
- Впорядкування шляхом вибору
- Впорядкування обмінами
- Впорядкування вставками
- Зливання впорядкованих масивів
- Двомірні масиви Поняття двомірного масиву та його опис у програмі
- Ввід та вивід значень елементів двомірного масиву Ввід значень елементів двомірного масиву
- Вивід значень елементів двомірного масиву a[m,n]
- Рядковий тип (string)
- Комбіновані типи Організація комбінованих типів у Паскалі
- Оператор приєднання
- Множинні типи Організація множин
- Файлові типи Організація файлів
- Підготовчі та завершальні операції
- Операції уведення-виведення
- Стандартні файли input і output
- Модулі Модуль і його структура
- Стандартні модулі
- Наближене знаходження коренів рівнянь Дослідження рівняння. Відокремлення коренів
- Метод поділу проміжку пополам
- Метод хорд
- Метод дотичних
- Чисельне інтегрування
- Квадратурні формули прямокутників
- Загальні формули прямокутників
- Квадратурна формула трапецій
- Практичні оцінки точності квадратурних формул. Вибір кроку інтегрування
- Список літератури