Лабораторная работа № 12. Обработка информации из файлов последовательного доступа.
При выполнении работы необходимо знать:
Что такое файл
Файловые типы и файловые переменные
Виды файлов: текстовые, типизированные, нетипизированные
Операции над файлами
Теоретический минимум:
Типы данных, о которых шла речь до сих пор, предназначены для манипулирования информацией, содержащейся в оперативной памяти компьютера. Однако известно, что оперативная память способна хранить информацию только временно – пока компьютер включен. Очевидно, что для эффективной работы с большим количеством данных необходим какой-то способ продолжительного хранения информации, чтобы ею можно было воспользоваться после выключения и включения компьютера снова. И такой способ существует. Для долговременного хранения информация из оперативной памяти переносится в файлы.
Файл (от англ. file-досье, документ) - это произвольная последовательность данных некоторой длины, имеющая имя. Другими словами, файл - это поименованное место на внешнем носителе.
Кроме «долговременности» у файлов имеется еще одна особенность: их неопределенный объем (или длина). Если для каждого из прочих структурированных типов всегда точно определено, сколько элементов содержит то или иное значение, то сколько элементов в файле при объявлении файлового типа не указывается. Длина файла в процессе выполнения программы может изменяться. Максимальная длина файла ограничивается только свободным пространством на диске. Длина файлов измеряется в байтах.
В языке предусмотрена возможность определять файловые типы и файловые переменные. Файлы могут быть разных видов: текстовые, типизированные, нетипизированные.
Таблица 12. Объявление файловых переменных для файлов различных видов.
Вид файла | Содержимое файла | Примеры описания переменных |
Типизированный | Совокупность элементов, принадлежащих к любому одному типу, кроме файлового | f1: file of Integer; f2: file of Real; f3: file of Boolean; |
Текстовый
| Совокупность строк | f: text; |
Нетипизированный | Последовательность элементов произвольного типа | f: file; |
Текстовые файлы можно создать в текстовом редакторе и ввести туда некоторый текст (произвольный набор символов) прямо с клавиатуры. Компонентами текстового файла являются строки. Считывать информацию из текстового файла можно построчно или посимвольно.
Текстовые файлы являются файлами последовательного доступа. Мы можем считывать их только последовательно, с первой строки до последней. Запись информации в текстовый файл происходит либо от начала файла (при этом вся информация, находившаяся там ранее, стирается), либо в конец файла (добавление информации в файл).
Текстовые файлы удобны тем, что мы можем заранее ввести в них всю необходимую информацию в редакторе.
Типизированные файлы содержат информацию определенного типа. Компонентами файла являются элементы одного типа, кроме типа файл. Типизированные файлы можно заполнить данными только из программы (не в редакторе). Числа преобразуются в двоичный вид.
Типизированные файлы являются файлами прямого доступа, то есть мы можем обратиться к любой компоненте файла с номером N (указатель текущей позиции файла настраивается на заданную компоненту).
Файл в один и тот же момент времени может находиться либо в состоянии чтение, либо в состоянии запись, либо в состоянии чтения и записи одновременно. В каждый момент может быть доступен только один элемент файла.
Схема работы с файлами в программе в любом языке программирования всегда одна и та же.
Сначала файл открывается. Это означает, что программа нашла файл и подготовила его для считывания данных или записи. Такое разделение режимов работы удобно тем, что в режиме чтения нельзя изменить содержимое файла, а в режиме записи нельзя читать данные из файла.
Осуществляется обработка данных в файле: они либо меняются, либо удаляются, либо добавляются.
Файл закрывается. Это означает, что заканчиваются все операции изменения данных и файл становится доступен для обработки другим приложением.
Рассмотрим команды работы с файлами, некоторые процедуры и функции, необходимые для обработки информации из файлов.
Команды для текстовых файлов.
Чтение из текстового файла осуществляется посимвольно или построчно:
Read(f, x); - чтение из файла одного символа в переменную x.
Read(f, x1, x2,x3,..xn); - чтение из файла нескольких символов в переменные.
Readln(f, S); - чтение из текстового файла одной строки в переменную S типа String.
Append(f); -открытие текстового файла для добавления информации в конец файла.
Writeln(f, S); - запись в текстовый файл строки S.
Используя изученные команды работы с файлами, приведем пример обработки данных из текстового файла.
Задача 12.
Из двух текстовых файлов создать третий, в котором чередуются одна строка из первого файла и по три строки из второго файла, причем в строках из первого файла точки заменить на *.
Решение: создадим в редакторе два текстовых файла: 1.txt и 2.txt и занесем в каждый из них произвольные строки, например:
Содержимое файла 1.txt
В чем измеряется длина файла?
Какой вид файла позволяет
обратиться к любой компоненте?
Содержимое файла 2.txt
В сантиметрах.
В байтах.
В битах.
Типизированный.
Текстовый. Нетипизированный.
Текст программы к задаче 12. Схема программы к задаче 12.
Program Ex_10;
Uses Crt;
Var f1, f2, f3:text;
i, j: integer;
Begin
ClrScr;
Assign(f1, ‘g:\sum\1.txt’);
Assign(f2, ‘g:\sum\2.txt’);
Assign(f3, ‘g:\sum\3.txt’);
Reset(f1);
Reset(f2);
Rewrite(f3);
While not Eof (f1) do begin
Readln (f1, x);
Readln(f2, y1);
Readln(f2, y2);
Readln(f2, y3);
For i:=1 to Length(x) do
If x[i]=’.’ then x[i]:=’*’;
Writeln(f3, x);
Writeln(f3, y1);
Writeln(f3, y2);
Writeln(f3, y3);
End;
Writeln(‘Результирующий файл:’);
Reset(f3);
While not Eof(f3) do begin
Readln(f3, x);
Writeln(x);
End;
Close(f3);
Readln;
End.
- 230401 «Информационные системы»
- 230115 «Программирование в компьютерных системах»
- Лабораторная работа №1. Организация ввода-вывода информации
- Алфавит языка Turbo Pascal.
- Переменные и константы.
- Основные типы переменных.
- Структура программы.
- Оператор присваивания, операторы ввода с клавиатуры и вывода на экран.
- Процедуры управления выводом на экран.
- Компиляция и выполнение программы.
- Лабораторная работа №2. Арифметические выражения. Программирование алгоритмов линейной структуры.
- Арифметические выражения в языке Turbo Pascal.
- Стандартные арифметические функции.
- Генератор случайных чисел.
- Составление алгоритма и программы для решения задачи.
- Лабораторная работа № 3. Программирование алгоритмов разветвленной структуры. Оператор ветвления if … then … else
- Условный оператор if … then … else.
- Составной оператор.
- Лабораторная работа № 4. Программирование алгоритмов разветвленной структуры. Оператор ветвления case.
- Условный оператор Case.
- Лабораторная работа № 5. Программирование алгоритмов циклической структуры с известным числом повторений.
- Оператор циклаWhile.
- Оператор цикла repeat.
- Вложенные циклы
- Оператор перехода
- Лабораторная работа № 6. Обработка строк с использованием операторов цикла.
- Лабораторная работа № 7. Программирование алгоритмов циклической структуры с неизвестным числом повторений.
- Лабораторная работа № 8. Обработка одномерных числовых массивов.
- Лабораторная работа № 9. Обработка двумерных числовых массивов.
- Лабораторная работа № 10. Использование процедур и функций при обработке массивов.
- Лабораторная работа № 11. Тип запись. Массивы записей.
- Лабораторная работа № 12. Обработка информации из файлов последовательного доступа.
- Лабораторная работа № 13. Обработка информации из файлов прямого доступа.
- Лабораторная работа № 14. Модуль программиста. Многомодульный проект.
- Текст модуля программиста к задаче 14.