Программа чтения данных из файла

Тема: «Работа с файлами»

Общие сведения

В большинстве языков программирования, в том числе и в Pascal, предусмотрены инструменты для сохранения информации на внешних носителях , а также ее извлечению (чтению) оттуда.

Данные, хранящиеся на внешних устройствах, «организовываются в виде файлов». Под файлом понимается область памяти на внешнем запоминающем устройстве, хранящая (содержащая) определенную информацию. В эту конкретную область памяти можно помещать данные (операции ввода, записи), так и извлекать их оттуда (операции вывода, чтения).

В языке программирования Паскаль для работы с данными, хранящимися в файлах, должны быть определены переменные файлового типа, через которые далее обеспечивается связь между файлом на диске и программой.

Типизированный файл в Паскале интерпретируется как последовательность (список) значений определенного (одного и того же) базового типа. Например, если в файле на диске хранится список вещественных чисел, то переменная в языке Pascal, через которую можно получить к ним доступ, может быть описана так:

f: file of real;

Файловый тип определяется служебными словами file of, далее идет указание базового типа, который может быть любым, кроме файлового.

Тут следует понимать такую особенность. В файле могут храниться числа, но в pascal-программе они могут быть интерпретированы как символы или строки. Все зависит от выбранного базового типа при определении файловой переменной. Возможны разные ситуации.

При определении переменной файлового типа также в программе появляется скрытый (неявный) текущий указатель файла. Его назначение – указывать на конкретный элемент файла (обеспечивать доступ к нему).

В языке программирования Паскаль все действия с файлом (чтение, запись) производятся поэлементно. Действия совершаются именно над тем элементом файла, на который указывает текущий указатель файла. После того как действие будет завершено, указатель перемещается к следующему элементу. Все элементы файла пронумерованы, начиная с нуля.

 

Для того, чтобы конкретный файл стал доступен, его необходимо как-то связать (ассоциировать) с ранее объявленной переменной. Такое связывание осуществляется с помощью процедуры Assign

                         Заголовок процедуры выглядит следующим образом:

                                                                      Assign(var f; file_name:string);

 

 Здесь F- имя файловой переменной любого вида, с котрой ассрциируется файл с диска, имеющий имя file_name (параметр file_name принадлежит типу string)

 

Программа создания файла и и запись данных в него

Var

f: file of char;

c: char;

i, n: byte;

 

Begin

assign (f, 'c:\file.txt');

rewrite (f);

 

write ('Количество символов: ');

readln (n);

 

for i:=1 to n do begin

   write ('Введите символ: ');

   readln (c);

   write (f, c);

end;

 

close (f);

 

end.

 

Грамма

Процедура assign обеспечивает связь файловой переменной программы с реальным файлом на диске. Первым аргументом указывается переменная, вторым – адресное имя файла.

Процедура rewrite открывает файл в режиме записи, т.е. мы можем вводить данные в файл с помощью процедуры вывода из программы write. Если указанный файл отсутствует на диске, то он будет создан. Если файл существует и содержит данные, то все они будут удалены и заменены в дальнейшем новыми (перезаписаны).

Запись данных в файл – результат выполнения процедуры write (f, c), где f – файловая переменная, а с – выводимый из программы, но вводимый в файл символ.

В конце требуется закрыть файл и «освободить» переменную f. Это делается с помощью процедуры close.

егоvar

f: file of char;

c: char;

 

Begin

assign (f, 'c:\file.txt');

reset (f);

 

while not eof (f) do begin

   read (f, c);

   writeln (c);

end;

 

close (f);

 

readln

end.

Процедура reset открывает файл для чтения. Т.е. мы можем в дальнейшем в программе извлекать данные из файла с помощью процедуры read. Файал должен уже существовать.

Данные извлекаются «порциями» базового типа. В данном примере – это char (символы).

Чтение данных из файла продолжается до тех пор, пока не будет достигнут конец файла. Функция eof проверяет достигнут ли конец файла, переданного ей в качестве аргумента и, если достигнут, возвращает true. Выражение not eof (f) проверяет обратное – то, что конец файла еще не достигнут.

Программа чтения данных из файла

 

Var

f: file of char;

c: char;

 

Begin

assign (f, 'c:\file.txt');

reset (f);

 

while not eof (f) do begin

   read (f, c);

   writeln (c);

end;

 

close (f);

 

readln

end.

 

Функция  IOResult

                                   Общий вид записи функции :

                                                                              Function IOResuln ; Integer;

Файл, из которого мы собираемся ввести данные в программу, может отсутствовать или быть недоступным. В этом случае, при запуске программы на выполнение происходит аварийный выход из нее.

Чтобы избежать преждевременного выхода из программы, можно отключить автоматический контроль ошибок ({$I-}) и воспользоваться функцией IOResult.

Функция IOResult возвращает ноль лишь в том случае, если файл существует.

Программа :

 

Var

f: file of char;

c: char;

r: integer;

 

Begin

assign (f, 'c:\file1.txt');

 

{$I-}

reset (f);

{$I+}

 

r := ioresult;

 

if r <> 0 then

   writeln ('Такого файла нет')

Else

   while not eof (f) do begin

       read (f, c);

       writeln (c);

   end;

 

close (f);

 

readln

end.       

 

Редактирование файла

 

В языке программирования Pascal для редактирования файлов предназначена процедура seek. В качестве аргументов она принимает файловую переменную и номер заменяемого элемента. В это место помещается текущий указатель файла. Далее с помощью write производится запись в файл.

                     Вид заголовка этой процедуры:

                                                                                   Procedure Seek(Var f; n: LongInt);

 

Предварительно файл необходимо открыть для чтения (reset).

 

Программа:

 

Var

f: file of char;

c: char;

n: integer;

 

Begin

assign (f, 'c:\file.txt');

reset (f);

 

write ('Номер элемента: ');

readln (n);

 

seek (f, n);

 

write ('Новый символ: ');

readln (c);

write (f, c);

 

close (f);

 

readln

end.       

 

 

Запись табличных данных в файл и их чтение оттуда

Таблица представляет собой двумерный массив – матрицу. Многие данные хранятся именно в виде двумерной таблицы.

На языке программирования Pascal можно организовать запись матриц в файл, а также их чтение оттуда.

В примере сначала происходит запись данных в файл. Внутренний цикл for формирует содержание каждой строки и тем самым определяет количество столбцов, внешний цикл определяет количество строк. При выходе из внутреннего цикла производится запись в файл перехода на новую строку.

При чтении данных из файла внутренний цикл while читает содержимое каждой строки. Завершение строки текстового файла определяется функцией eoln. Во внешнем цикле while выражение readln (f) переводит файловый указатель на новую строку с тем, чтобы последующее чтение началось именно оттуда.

 

 

Программа:

 

Const

K = 10;

L = 20;

 

Var

f: text;

n: byte;

i, j: integer;

 

Begin

assign (f, 'c:\tabl.txt');

rewrite (f);

 

randomize;

 

  for i := 1 to K do begin

   for j :=1 to L do begin

       n := random (100);

       write (f, n:4)

   end;

   writeln (f)

end;

 

close (f);

{------------------------------------}

reset (f);

 

while not eof (f) do begin

   while not eoln (f) do begin

       read (f, n);

       write (n:4)

   end;

   readln (f);

   writeln;

end;

 

close (f)

end.

 

Процедура Append (var f: Text);

Где F- файловая переменная (типа (текст) с которой ассоциирован файл , который требуется открыть. Предназначена для добавления информации в уже существующий файл.

 

 


Дата добавления: 2018-04-05; просмотров: 347; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!