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

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

read(f,x1,x2,…xn) или readln(f,x1,x2,…xn) – чтение информации х1,х2,…,xn из логического файла f.

write(f,x1,x2,…xn) или writeln(f,x1,x2,…xn) – запись информации х1,х2,… хn в логический файл f.

Для управления текстовыми файлами используется следующие процедуры и функции:

append(фп)

Открывает файл для дополнения.

eoln(фп)

Признак конца строки (True, если конец).

read(фп,переменные)

Считывает данные из файла.

readln(фп,переменные)

Считывает данные из файла,

переходит на следующую строку.

write(фп,переменные)

Записывает данные в файл.

writeln(фп,переменные)

Записывает данные в файл, переходит

на следующую строку.

Для нетекстовых файлов:

filesize(фп)

Число записей в файле.

filepos(фп)

Номер текущей записи.

seek(фп,номер)

Устанавливает указатель на запись с заданным номером.

truncate(фп)

Усекает файл до текущей позиции.

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

Пример 9-1.

а). Вычислить по точкам функцию y=x/2 для x=0,0.5,1.0, …4 и записать резуль­таты в текстовый файл с именем func. Текстовый файл удобен тем, что его можно просмотреть в любом текстовом редакторе и, при желании откор­ректировать данные. Файлу не обязательно иметь расширение. Мы придали ему расширение txt с тем, чтобы проще было его просматривать в файлерах Проводник или TotalCommander (эти программы для файлов с расширением txt автоматически вызывают Блокнот). Физическому файлу дадим имя func.txt, а логическому имя f, и именно с ним будем далее работать.

б). Cоставить программу чтения из файла func.txt записанной ранее в него информации.

program 9_1a;{запись вычисленной функции в файл}

var f:text; {объявлен текстовый логический файл f}

X,y:real;

begin

{логический файл f связывается с физическим func.txt}

assign(f,'func.txt');

rewrite(f); {файл f открывается для записи в него}

x:=0;

while x<=4 do begin {вычисление в цикле функции}

y:=x/2; x:=x+0.5;

writeln(f,x:3:1,y:4:1); {запись в файл переменных х и у}

end;

close(f); {закрытие файла}

end.

program 9_1b;{чтение записанных ранее данных из файла}

var f:text; {объявлен текстовый файл f}

X,y:real; I:integer;

begin

assign(f,'func.txt');

reset(f); {открытие файла для чтения}

for i:=1 to 9 do begin

read(f,y,x); {чтение из файла в память}

{вывод на монитор, считанной из файла информации}

writeln('y=',y:3:1,' x=',x:4:1);

end;

close (f); {закрытие файла}

end.

Пример 9-2. Посчитать зарплату рабочих. Сведения об их месячной выработке находятся в типизированном (типа record) файле VIR (рис. 9.1).

файл

Vir

файл

Ved

tab

im

tarif

dn

im

zar

nalog

vid

таб

имя

тариф

дни

имя

зарплата

налог

выдать

35

Иван

100

20

Иван

2000

48

Петр

150

30

Петр

4500

15

Олег

200

10

Олег

3000

Рис.

9.1


Он содержит поля: табельный номер tab, имя im (длиной до 4-х знаков), дневной тариф tarif работника, число отработанных им за месяц дней dn. Эти данные вводятся оператором. На основании их компьютером подсчитывается и заполняется файл ведомости VED, содержащий имя im, зарплату zar (=tarif*dn), налог nalog (=13%*zar) и сумму к выдаче vid (=zar-nalog). Далее содержимое файла выводится с подсчетом итоговых сумм. Здесь придется на­писать две программы. Программой Vvod выполняется следующая после­довательность действий: 1). Заполняется файл Vir. 2). Считывается содержи­мое Vir в массив V. 3). Выполняются все расчеты и заносятся в массив R. 4). Данные из R сохраняются в файле Ved. Программа Vivod реализует только два действия: вывод всей ведомости к оплате или вывод сведений только об одном работнике по запросу (по имени).

program Vvod; {ввод данных и сохранение результата к примеру 9-2}

uses crt;

const n=3;

type vr=record {объявление записи для Выработки}

tab: integer; {табель}

im: string[4]; {имя}

tarif, dn: real;

end;

vd=record {объявление записи для Ведомости}