- •Курс «основы алгоритмизации и программирования»
- •Тема: «создание и преобразование файлов»
- •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.
