Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Paskal_metodichka.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
807.42 Кб
Скачать

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

Процедуры

assign ( f : file; name : string );

rewrite ( f : file );

reset ( f : file);

close ( f : file);

и функция

eof(f : file ):boolean;

которые используются при обработке текстовых файлов, так и при обработке типизированных файлов, описаны в Теме 9 «Текстовые файлы».

Процедура

read( f: file, s: tp );

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

Процедура

write ( f : file, s : tp);

выполняет запись значения переменной s в очередной элемент файла f, на который показывает текущий указатель. После выполнения записи указатель файла смещается на следующий элемент файла.

Прямой доступ к элементам файла

Процедура

seek( f : file, n : longint );

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

Для сложной обработки файла без перезаписи элементов в массив используются две функции.

Функция

filesize ( f :file ): longint;

определяет количество элементов файла f.

Например, сместить указатель на конец файла можно так:

seek( f, filesize( f ));

так как нумерация элементов файла начинается с нуля, то значение функции filesize( f ) будет на единицу больше номера последнего элемента файла.

Функция

filepos(f :file):longint;

возвращает номер элемента, на который установлен текущий указатель.

Например, установить указатель на начало предыдущего элемента можно так:

seek( f, filepos( f ) – 1);

Примеры выполнения задания 11

Пример 1. Создать файл f.dat из целых чисел. Переписать в файл g.dat из файла f.dat отрицательные элементы.

Первая программа создает файл f.dat.

program lab10_1;

uses CRT;

var f :file of integer;

i, n, x :integer;

begin clrscr;

assign{f, ‘f.dat’);

rewrite(f);

writeln(‘введите число элементов в файле’);

readln(n);

for i := 1 to n do

begin

 writeln(‘введите значение’, i,‘ –го элемента’);

readln(x);

write(f,x)

end;

close(f)

end.

Следующая программа будет читать элементы файла f.dat, выбирать только те элементы, значения которых отрицательны, переписывать их в файл g.dat. Выводить элементы файла g.dat на экран ПК.

program lab10_11;

uses CRT;

var f ,g: file of integer;

i, x: integer;

begin clrscr;

assign{f, ‘f.dat’);

reset(f);

assign{g, ‘g.dat’);

rewrite(g);

while not eof (f) do

begin

read(f, x);

if x<0 then write (g, x)

end;

{вывод элементов файла g.dat на экран}

reset (g);

while not eof (g) do

begin

read(g, x);

writeln(x)

end;

close(f);

close(g)

end.

Пример 2. Содержимое файла f.dat не изменилось. Заменить элементы данного файла с отрицательными значениями на -1. Остальные элементы оставить без изменения.

program lab10_2;

uses сrt;

var f: file of integer;

 i, x: integer;

begin clrscr;

assign(f, ‘f.dat’);

reset(f);

while not eof (f) do

begin

read(f, x);

if x<0 then

begin

x := -1;

seek(f, filepos (f) -1);

write(f, x)

end

end;

{вывод элементов файла f.dat на экран}

reset (f);

while not eof (f) do

begin

read(f, x);

writeln(x)

end;

close(f)

end.

Пример 3. На диске в файле с именем FV размещены вектора, каждый из которых содержит по 8 действительных элементов. Вычислить максимальные значения для каждого из векторов, записать их в файл GM и вывести на экран ПК.

program file12;

type vect = array [ 1..8 ] of real;

 fil1 = file of vect;

 fil2 = file of real;

var a: vect;

 i: integer;

 аmax, b: real;

 f1: fil1;

 f2: fil2;

begin clrscr;

assign ( f1, ' FV.DAT ');

assign ( f2, ' GM.DAT ');

reset ( f1 );

rewrite ( f2 );

while not eof ( f1 ) do

begin

read ( f1, a); amax := a[1];

for i := 1 to 8 do

if a[i] > amax then amax := a[i];

write( f2, amax );

end;

close( f2 );

reset( f2 );

while not eof ( f2 ) do

begin read ( f2, b );

writeln ( b : 7 : 2 )

end;

close(f1);

close(f2);

end.

ОГЛАВЛЕНИЕ

Тема 1.

Основы построения программы.

Вычисление значения арифметического

выражения

3

Тема 2.

Логические выражения. Условный оператор

16

Тема 3.

Использование циклических структур. Операторы цикла с предусловием и с постусловием.

24

Тема 4.

Использование циклических структур.

Оператор цикла с параметром.

29

Тема 5.

Использование и обработка одномерного

массива.

33

Тема 6.

Использование и обработка двумерного

массива.

40

Тема 7.

Организация программ с использованием функций.

49

Тема 8.

Организация программ с использованием

процедур.

55

Тема 9.

Текстовые файлы.

64

Тема 10.

Работа с комбинированными типами данных (записями)

80

Тема 11.

Типизированные файлы.

88

Редактор Н.Н. Калинина

Изд. лиц. ИД №02558 от 18.08.2000 г.

Подписано в печать       2010 г. Формат 60*84 1/16

Бумага офсетная. Объем п. л. Уч.-изд. л.

Тираж 350 экз. Заказ

Редакционно-издательский отдел СПбГУКиТ

192102. Санкт-Петербург, ул. Бухарестская, 22

Подразделение оперативной полиграфии СПбГУКиТ

192102. Санкт-Петербург, ул. Бухарестская, 22

4 5

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]