- •Курс «основы алгоритмизации и программирования»
- •Тема: «создание и преобразование файлов»
- •1. Понятие файла.
- •1.1. Типизированные файлы.
- •1.1.1. Определение файлового типа.
- •1.1.2. Процедуры и функции обработки файлов.
- •П р о ц е д у р ы
- •Основные логические устройства, которые используются в Турбо Паскале
- •Ф у н к ц и и
- •1.1.3. Файлы последовательного доступа.
- •1.2. Текстовые файлы.
- •Процедуры и функции обработки текстовых файлов
- •П р о ц е д у р ы
- •Ф у н к ц и и
- •1.4. Файлы произвольного доступа.
- •1.5. Нетипизированные файлы.
- •3. Индивидуальные задания.
- •Файлы последовательного доступа
- •Текстовые файлы
- •Файлы произвольного доступа
- •Контрольные вопросы
- •Тема: «создание и преобразование файлов»
- •- Страница 17 -
1.2. Текстовые файлы.
Текстовый файл – это файл, состоящий из элементов, являющихся строками.Каждая строка в текстовом файле завершается маркером конца строки. Текстовый файл завершается маркером конца файла. Для написания файловых переменных текстового типа используется стандартный идентификаторText.
Процедуры и функции обработки текстовых файлов
В Турбо Паскале предусмотрены дополнительно следующие процедуры и функции обработки текстовых файлов.
П р о ц е д у р ы
Append()– открывает существующий файл для добавления информации в конец файла. Указатель текущего компонента файла устанавливается на конец файла.
Flush()– освобождение буера вывода и запись информации в файл.
Read(, ch)– чтение символа из файла и присваивание его значения символьной переменнойch.
Readln(, s)– чтение строки из файла и присваивание ее строковой переменнойs. При этом непрочитанная часть строки, включая признак конца строки, пропускается.
Write(, ch)– запись символьной информацииchв файл.
Writeln(, s)– запись строкиsв файл и завершение выводимой информации признаком конца строки.
Ф у н к ц и и
Eoln() – конец строки файла. Функция принимает значениеTrue, если текущим компонентом файла является признак конца строки или же функцияEof()принимает значениеTrue. В остальных случаях функция принимает значениеFalse.
SeekEof()– конец файла. Функция отличается отEof()тем, что стоящие в конце символы пробела и табуляции пропускаются.
SeekEoln()– конец строки файла. Отличается отEoln()тем, что стоящие в конце строки символы пробела и табуляции пропускаются.
Рассмотрим применение этих процедур и функций на примере программы, которая в интерактивном (диалоговом) режиме обеспечивает выполнение действий по созданию, расширению и выводу текстового файла.
Программа имеет следующий вид:
program textfiles;
uses crt;
type dlina=string[60];
varft: text;{файловая переменная}
S: dlina;{промежуточная переменная}
rej: char; {селектор режима}
filename: string[14]; {имя файла}
{процедура чтения и вывода файла}
procedure obrt(var stro:text);
begin
write('имя выводимого файла:');
readln(filename);
assign(stro,filename);
{$I-}
reset(stro);
if IOResult<>0 then
begin
writeln('файл', filename, 'не существует');
exit
end;
{$I+}
while not seekeof(stro) do
begin
readln(stro, s);
writeln(s)
end
end;
{процедура расширения файла }
procedure rasht(var stro:text);
begin
repeat
writeln('имя расширяемого файла');
readln(filename);
assign(stro, filename);
{$I-}
append(stro)
{$I+}
until ioresult=0;
while true do
begin
writeln('вводите строку');
readln(s);
ifs='zzz'then
begin
close(stro);
exit
end;
writeln(stro, s)
end
end;
{процедура создания файла }
procedure sozdt(var stro:text);
begin
writeln('имя создаваемого файла');
readln(filename);
assign(stro, filename);
rewrite(stro);
while true do
begin
writeln('введите строку (zzz – окончание ввода)');
readln(s);
if s='zzz' then
begin
close(stro);
exit
end;
writeln(stro, s)
end
end;
{основная программа}
begin
while true do
begin
clrscr;
writeln('укажите режим');
writeln('1: создание текстового файла');
writeln('2: вывод текстового файла');
writeln('3: расширение текстового файла');
writeln('4: выход из программы');
readln(rej);
writeln;
case rej of
'1': sozdt(ft);
'2': obrt(ft);
'3': rasht(ft);
'4': halt
elsewriteln('повторите ввод номера')
end;
writeln('для продолжения нажмите enter');
readln
end
end.
В программе использованы стандартные средства обработки текстовых файлов. Например, процедура Append()открывает и устанавливает указатель на маркер конца файла. Используется только для добавления элементов в текстовый файл. Встроенная функцияIOResultтипаintegerпозволяет определить попытку инициировать чтение из несуществующего файла или логического устройстваprn. В программе функцияIOResultпозволяет определить, существует или не существует файл. Логическая функцияSeelEof()пропускает все пробелы, знаки табуляции и маркеры конца строки до маркера конца файла или до первого значащего символа и возвращает значениеTrue, если маркер обнаружен. Аналогично логическая функцияSeeEoln()возвращает значениеTrue, если обнвружен маркер конца строки. Если аргументне задан, то функция проверяет стандартный файлInput. ПроцедураExitосуществляет немедленный выход из исполняемой процедуры или функции в вызывающую программу. Вызов процедурыExitв основной программе приводит к останову программы. ПроцедураHaltтакже прекращает исполнение программы, но в некоторых случаях позволяет использовать код завершения в дальнейшем. ПроцедураClrScrвходит в состав внешнего модуляCrtи становится доступной только после объявления в предложенииUses, которое открывает текст программы. ПроцедураClrScrв рассматриваемом примере используется для очистки экрана дисплея перед выводом меню режимов. Для текстовых файлов нельзя применять функцииFileSize, FilePos, Seek.