Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 3 курс Pascal.doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
825.86 Кб
Скачать

Работа с файлами

Файл – это поименованная область на диске, содержащая некоторые данные.

В языке Паскаль допускаются следующие файловые типы:

  • типизированные файлы – файлы, состоящие из записей постоянной длины;

  • текстовые файлы - файлы, состоящие из записей неопределенной длины;

  • нетипизированный файл – файл, представляющий неструктурированный поток байтов.

Объявление файловых переменных:

типизированного файла - <идентификатор> : file of <тип>;

текстового файла - <идентификатор> : text ;

нетипизированного файла - <идентификатор> : file ;

где <идентификатор> – имя файловой переменной,

<тип> - любой тип данных, за исключением файлового.

Для доступа к файлу в программе на языке Паскаль необходимо:

  1. определить файловую переменную – логический идентификатор файла;

  2. связать эту переменную с конкретным физическим файлом;

  3. открыть файл: если для записи, то с помощью процедуры Rewrite, если для чтения – то с помощью Reset;

  4. обработать файл (прочитать или записать данные);

закрыть файл с помощью Close.

Процедуры и функции для работы с файлами.

assign(var f; name: string); - процедура связи файловой переменной с физическим файлом

где f – файловая переменная, name – переменная, определяющая имя физического файла.

Например, Assign (f, ‘spisok.dat’);

reset(var f); - процедура открывает файл, связанный с файловой переменной f для считывания данных.

rewrite(var f); - процедура открывает файл, связанный с файловой переменной f для записи данных.

read(var f; d1,d2,…dn); - процедура считывает данные из файла f в перечисленные переменные d1,d2,…,dn.

write(var f; d1,d2,…dn); - процедура записывает данные из переменных d1,d2,…dn в файл f.

seek(var f; n : longint); - процедура устанавливает текущей n-ую запись файла f. После вызова процедуры seek процедура read читает n-ую запись.

close(var f); - процедура закрывает файл f.

eof(var f) - функция возвращает результат boolean: true, если считан последняя запись файла и false – в противном случае.

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

Program primer;

Var f: text;

x, y: real;

begin

assign(f,'prim.txt');

rewrite(f);

write(‘Иванов Иван Иванович, Школа № 1, 1 «а» класс’);

Close(f);

end.

Пример 2. а) Создать файл, содержащий значения функции y= x2 + x (0= x= 2, h= 0,2). б) Вывести на экран данные в виде таблицы.

Program primer;

Var f: file of real;

x, y: real;

begin

assign(f,'prim.txt');

rewrite(f);

x:=0;

repeat

y:=sqr(x)+x;

write(f,y, х);

x:=x+0.2;

until x>2;

Close(f);

reset(f);

while not eof(f) do begin

read(f,y,x); writeln('x=',x:4:2,' y=',y:8:4);

end;

end.

Пример 3. а) Создать файл, содержащий данные:

  • ФИО работника;

  • склад;

  • стаж работы.

б) Просмотреть записи. Определить фамилию работника, имеющего самый большой стаж работы.

Program pr;

Type rabotnik=record

Fio: string [20];

sklad: char;

stag: integer;

End;

Var

X: rabotnik; f: file of rabotnik;

N, i, max: integer;

Name: string [20];

Begin

Assign(f,’pr.txt’);

Rewrite(f);

Write(‘n=’); Readln (n);

For i:=1 to n do

Begin

Write(‘fio:’); Readln(x.fio);

Write(‘sklad:’); Readln(x. sklad);

Write(‘stag:’); Readln(x. stag);

Write(f,x);

End;

Close(f);

{******************}// можно сделать две разные программы

Assign(f,’pr.txt’);

Rewrite(f);

Max:=0;

While Not EOF(f) do

Begin

Readln(f,x);

Writeln(x.fio: 20, x. sklad:3, x. stag:5);

If x. stag >max then

Begin

Max:=x. stag;

Name:=x.fio;

End;

End;

Writeln(‘max stag -‘, max, name);

Close(f);

Readln;

End.