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

Буфер ввода-вывода.

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

1)закрытие файла

2) заполнение буфера

3)принудительная очистка буфера

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

Для текстовых и безтиповых файлов существуют команды управления размерами буфера. Для типизированных файлов размер буфера устанавливается равным размеру компоненты файла.

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

Эти файлы состоят из совокупности ASCII кодов, включая управляющие коды. Такие файлы характеризуются совокупностью строк различной длины, признаками конца строк и конца файла. В конце каждой строки текстового файла установлен признак конца строки, который обозначается EOLN(f); или совокупностью кодов #13#10. В конце файла ставиться признак конца файла eoF(f); или код #26;

Текстовые файлы являются файлами с последовательным доступом, т.е. нельзя обратиться к i-той записи, не прочитав первых i-1 записей. При записи в текстовый файл информация преобразуется в символьный вид, поэтому единицей информации являются символ. Для доступа и записи файла используется процедуры: write, writeln, read,readln;

Запись данных в файл.

writе(<ф.п.>, <список ввода>); - процедура записи в файл, список ввода – последовательность 1 и более переменных или значений типа char, string или любого другого целого или вещественного типа. Процедура writeln после записи информации в файл переводит указатель на следующую строку, т.е. добавляет код #13#10;

пример записи в текстовый файл:

var

f:text;

a:byte;

c:char;

.

.

a:=100;

c:=’z’;

assign(f,’t.txt’);

rewrite(f);

write(f,a,c);

writeln(f,’a’,’b’);

close(f);

Чтение данных из файла(read,readln).

read(<ф.п.>, <список вывода>); - процедура чтения, список вывода – список из 1 и более переменных вышеуказанного типа.

Пример чтения из файла.

Reset(f);

Read(f,c);

Readln(f,c);

Read(f,c);

Close(f);

Reset(f);

Read(f,a);

Close(f);

Декция №12

Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.

SettextBuf(<ф.п.>, <буферная переменная> [,<размер буфера>]); размер буфера по умолчанию: 128 байт.

вызов этой процедуры происходит после связи файловой переменной с файлами, и до открытия. Если размер буфера не указан то он устанавливается равным буферной переменной.

Пример использования буфера.

f:text;

b: array [1..100] of byte;

begin

Assign(f, ‘t.txt’);

SettextBuf(f,b);

rewrite(f);

write(f, ‘z’);

***

close(f);

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

Пример:

f:text;

b: pointer;

begin

Assign(f, ‘t.txt’);

Getmem(b,100);

SettextBuf(f,b);

***

Fremem(b,100)

Flush(<ф.п.>); - используется для открытых для записи файлов и принудительной записи данных из буфера ввода /вывода в файл, независимо от степени его заполнения, обычно используется в «узких» местах программы.

Eoln(<ф.п.>); - возвр. true ,если указатель в файле достиг конца строки, работает для открытого на чтение файла.

Пример чтения из текстового файла и вывод читаемой информации на экран.

Reset(f);

While not eoln(f) do

Begin

Read(f,ch);

Write(ch);

End;

Seekeoln(<ф.п.>); - возвр. true,если до конца строки или файла остались одни разделители(пробелы и символы табуляции). Эта функция через эти символы «видит» конец строки или файла.

Eoln- читает весь файл, Seekeoln- пропускает пробелы.

Seekeof(<ф.п.>); - возвр. true,если до конца файла остались одни разделители(пробелы и символы табуляции)