Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Решение задач. Процедуры и функции работы с файлами



Изменение имени файла производится процедурой

rename(МуFilе, FileName);

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

Уничтожение части файла от текущего положения до конца производится процедурой

truncate(МуFilе).

Уничтожение всего файла производится процедурой

erase(МуFilе),

действие которой эквивалентно удалению файла в операционной системе DOS.

Примечание. Физические файлы на магнитных дисках и переменные файлового типа в программе на Паскале - объекты различные. Переменные файлового типа в Паскале соответствуют не только физическим файлам, но и логическим устройствам, связанным с вводом и выводом информации. Клавиатуре и экрану дисплея соответствуют файлы со стандартными именами Input и Output.

Задание. Рассмотрите предложенный ниже текст программы. Сформулируйте решенную задачу. Создайте расширенный вариант подобной задачи. результат покажите учителю для оценки.

Program Files;
Uses
Crt;
Var
F,Fnew: file of string;
Name,NewName: string[12];
Text: string;
Ch: char;
Procedure ReadText;
Begin
repeat
write('Введите имя файла>');
readln(Name);
assign(F,Name);
reset(F);
if IOresult<>0
then
begin
writeln('Ошибка чтения');
close(F);
end;
until IOresult=0;
writeln('Содержание файла ',Name,':');
while not Eof(F) do
begin
readln(F,Tеxt);
writeln(Tеxt);
end;
close(F);
End;
Procedure EraseFile;
Begin
erase(F);
writeln('Файл удален');
End;
Procedure ReNameFile;
Begin
write('Введите новое имя файла:');
readln(NewName);
rename(F,NewName);
writeln('Файл ',Name,' переименован в файл ',NewName);
End;
Procedure CopyFile;
Begin
write('Введите имя копии файла ',Name,'>');
readln(NewName);
reset(F);
assign(Fnew,NewName);
rewrite(Fnew);
while not Eof(f) do
begin
readln(F,Text);
writeln(Fnew,Text);
end;
close(F);
close(F_new);
writeln('Файл',Name,' скопирован в файл ',NewName);
End;
Begin
ClrScr;
readTеxt;
repeat
writeln('Удаление файла (D),переименование файла(R)');
writeln('Копирование файла (C), выход из программы (Е)');
write('Введите символ нужной операции - ');
readln(ch);
case ch of
'D','d': EraseFile;
'R','r': ReNameFile;
'C','c': CopyFile;
end;
until (ch='E') or (ch='e');
read;
End.

Выберите с учителем одну из предложенных ниже задач.

  1. Даны два отсортированных типизированных файла (тип выбрать произвольно). Получить новый типизированный файл слиянием двух исходных в отсортированном виде. Алгоритм слияния должен предусматривать, что исходные файлы могут содержать очень большое число элементов.
  2. Проверить, является ли один типизированный файл частью другого. Если является, то его распечатать на принтере.
  3. Сделать один типизированный файл частью другого, начиная с N-ой позиции (N задает пользователь).
  4. Один типизированный файл вставить в другой, чередуя элементы обоих файлов. Элементы вставляемого файла начинайте вводить с конца файла.
  5. Сравнить содержание файлов. Количество сравниваемых файлов задает пользователь.

Приготовьте листинги решенных и проверенных учителем задач. Проверьте свои знания, ответив на ниже следующие вопросы.

Контрольные вопросы

  1. Что называется файлом? как его описать в программе?
  2. Какие действия можно производить с файлами?
  3. Как записать файл? Какие процедуры или функции надо применить? Как производится запись?
  4. Как прочитать файл? Какие процедуры или функции используются? Как происходит чтение данных из файла?
  5. Как закончить работу с файлом?
  6. Как обратиться к компоненте с заданным номером?
  7. Как подсчитать, сколько элементов в данном файле?
  8. Верно ли, что элементы файла должны быть одного типа и что файл отличается от массива только тем, что размер (количество элементов) файла произволен, а размер массива фиксирован?
  9. Можно ли, считав из файла пятый элемент, затем сразу же считать второй? Если нет, то какой можно?
  10. Верно ли, считав из файла пятый элемент, затем уже никогда нельзя считать его второй элемент?
  11. В какое место файла можно добавлять новые элементы: в начало, в середину, в конец, куда угодно, никуда?
  12. Если не переписывать файл заново, то значения каких его элементов можно менять: только первого, только последнего, каких угодно, никаких? А какие элементы можно удалять?
  13. Верно ли, что в одно и то же время нельзя считывать из файла и записывать в него? верно ли, что, начав считывать из файла, затем уже никогда нельзя записывать в него? А наоборот?
  14. Можно ли сравнивать файлы или присваивать один файл другому?




Дата публикования: 2015-10-09; Прочитано: 187 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.06 с)...