Рассмотрим пример программы, которая в интерактивном диалоговом режиме обеспечивает выполнение действий по созданию, расширению и выводу текстового файла. Алгоритм программы приведен на рис. 7.1.
да |
нет |
Начало |
Вывод меню |
true |
k |
Конец |
Ввод k |
создание |
выход |
расширение |
вывод |
Рис. 7.1. Схема работы алгоритма основной программы обработки текстовых файлов.
Для того чтобы иметь возможность многократно выполнять различные действия по обработке файлов, в программе организован бесконечный цикл, выход из которого обеспечивается специальной процедурой прерывания программы. В выводимом в начале каждого шага цикла небольшом меню предлагается выбрать режим работы с файлом и в зависимости от значения введенной переменной k осуществляется создание, вывод или расширения файла.
Текст программы будет иметь следующий вид:
{Цель: создание, расширение и вывод текстовых файлов }
{Подпрограммы: obrt- чтения и вывода файла}
{ rasht – расширение файла }
|
|
{ sozdt – создание файла }
program textfiles;
uses
crt;
type
dlina=string[60];
var
ft: 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
write ('имя расширяемого файла');
readln(filename);
assign(stro, filename);
{$I-}
Append(stro);
{$I+}
until IOResult=0;
while true do
begin
writeln('введите строку');
if s='zzz' then
begin
close(stro);
exit;
end;
writeln(stro, s);
end;
end;
{процедура создания файла}
procedure sozdt (var stro:text);
begin
write ('имя создаваемого файла');
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);
case rej of
'1': sozdt(ft);
'2': obrt(ft);
'3': rasht(ft);
'4': halt;
else writeln('повторите ввод номера');
end;
writeln('для продолжения нажмите Enter');
readln;
end;
end.