Лекции.Орг


Поиск:




Программирование алгоритмов работы с текстовыми файлами




Цель работы: Разработка алгоритмов и написание приложений циклической структуры с использованием подпрограмм и текстовых файлов. 

       Текстовые файлы являются последовательными файлами, доступ к элементам которых может быть получен только последовательно от начала до конца файла. Термин доступ означает как чтение из файла, так и запись в файл. Ввод из файла – это операция чтения информации из файла, хранящегося на диске, а вывод в файл – это операция записи информации в файл. Текстовый файл состоит из символов и может быть создан с помощью текстового редактора или программно. Информация в текстовом файле разделяется на строки при нажатии клавиши <Enter>, и в конец строки размещаются управляющиесимволы (коды 10 и 13), а весь файл завершается управляющим символом (код 26). Указатель файла ссылается на текущую позицию в открытом файле, с которой начинается чтение или запись. Для получения доступа к текстовому файлу в Turbo Delphi необходимо объявить переменную типа TextFile, которая называется дескриптором (в дескрипторе хранятся атрибуты и указатель файла).

Для работы с текстовыми файлами в Turbo Delphi используются встроенные функции и процедуры (таблица 7):

                                                                                                                   Таблица 7

                     Функция                      Назначение
Eof (fv) Возвращает True, если указатель файла находится в конце файла и False – в противном случае
EoLn (fv) Возвращает True, если указатель файла находится в конце строки и False – в противном случае
SeekEof (fv) Возвращает True, если до конца файла остались только символы-разделители (пробелы, символы табуляции, символы перехода на новую строку) и False – в противном случае
SeekEoLn (fv) Возвращает True, если до конца текущей строки остались только символы-разделители (пробелы, символы табуляции, символы перехода на новую строку) и False – в противном случае
FileExists(<путь + имя файла >) Возвращает True, если файл существует и False – в противном случае
                 Процедура                    Назначение
Append (fv) Открывает существующий файл для добавления текста в его конец
AssignFile(fv,<путь +имя файла >)                      Связывает имя файла с дескриптором (файловой переменной)
CloseFile (fv) Разрывает связь между файлом и дескриптором (файловой переменной)
Erase (fv) Удаляет закрытый файл
Delete(<путь +имя файла >) Удаляет закрытый файл
Read(fv,<список имен переменных>) Читает данные из текущей строки файла
ReadLn(fv,<списокимен переменных >)            Читает данные из текущей строки файла и переводит указатель файла на начало новой строки
Reset (fv) Открывает существующий файл для чтения
Rewrite (fv) Создает и открывает новый файл
Write(fv,<список имен переменных >)              Записывает данные в строку текстового файла
WriteLn(fv, <список имен переменных >)                   Записывает в строку текстового файла, данные и символы конца строки, и переводит указатель файла на начало следующей строки

Примечание: В скобках функций и процедур, перечисленных в таблице 7 параметр fv – файловая переменная.

      Для получения доступа к файлу его нужно открыть. Текстовый файл можно открыть или для ввода, или для вывода, но не для обеих операций одновременно. Процедура Reset() открывает или повторно открывает текстовый файл в режиме ввода, а процедуры Rewritе() и Append() открывают или повторно открывают текстовый файл в режиме вывода. Причем, процедура Rewrite() или создает новый файл, или уничтожает информацию в существующем файле.

     Процедура Read() выполняет следующие операции:

- считывает из файла, ассоциированного с дескриптором, порцию данных, на которую показывает указатель файла;

- сохраняет считанные данные в переменной соответствующего типа (символьного, строкового или числового);

- перемещает указатель файла на начало следующей порции данных.

     При выводе в текстовый файл данные можно форматировать. Например, оператор write (Fil, 10:5, 10.45678:8:2) выведет в текстовый файл, ассоциированный с дескриптором Fil, следующий текст: 10 10.46.

     Когда работа с файлом завершена, его необходимо закрыть процедурой CloseFile(). Если файл был в режиме вывода (его можно создавать и во время работы приложения), то эта процедура перед закрытием файла записывает в его конец символ конца файла Eof.

         Пример 19. В текстовом файле «записей» содержится расписание авиарейсов. Вывести номера авиарейсов, которым соответствуют заданные время и город.

Содержимое текстового файла Flight.txt. сформировано с помощью текстового редактора Turbo Delphi в соответствии с типом tRec, используемым в коде приложения Example _19 (рис.12).

 

 

Рис.12. Содержимое текстового файла Flight.txt

Program Example_19;

{$APPTYPE CONSOLE}

Uses SysUtils;

Type

  tRec = record                   // запись

              city: string[10];  

              time: real48        

              num: word;         

              end;

Var

Name_File: string;

  ch: char;

  fv: textFile;

Procedure Find (Var f: textFile);

Var

city_Find: string[10];

time_Find: real48;

                n: word;

                r: tRec;

                  i: integer;

Begin

 if not FileExists(Name_File) then

                                              begin

                                              writeln ('Файл отсутствует!');

                                          Exit

                                              end

else

  begin

  reset(f);

  writeln ('Укажите:');

  write ('город: '); readln (city_Find);

  write ('время вылета: '); readln (time_Find);

  writeln (' Результат поиска:');

  if Length (city_Find) < 10 then

                                               for i:=1 to 10-Length (city_Find) do

                                                    city_Find:= Concat (city_Find,' ');

n:=0;

with r do

     begin

     while not Eof(f) do

          while not Eoln (f) do

          begin

           read (f,city);

           read (f,time);

           readln (f,num);

           if (city_Find = city) and (time_Find <= time) then

                           begin

                           n:=n+1;

                           writeln (n:3,' ',city:10,time:10:2,' № ',num:5)

                           end;

          end;

      end;

end;

CloseFile(f);

if n = 0 then writeln ('Рейс отсутствует!!!');

End; {Find}

Begin

write ('Введите имя файла:');

readln (Name_File);

repeat

assignFile (fv,Name_File);

Find (fv);

write ('Продолжить поиск?(y / n)');

readln (ch);

until UpCase(ch)='N';

writeln ('Програма завершена!');

readln

End.

Результат работы приложения представлен в окне вывода (рис.13).

 

Рис. 13. Результат работы приложения (пример 19)

 

Варианты заданий

С помощью текстового редактора сформировать исходный файл (F1), каждаястрока которого содержит слова разделенные пробелом. Вывести его содержимое на экран. Далее   программно создать второй текстовый файл (F2) в соответствии с заданием варианта и  вывести  его содержимое на экран. Формирование второго файла, вывод файла, решение задачи варианта оформить в виде отдельных подпрограмм c параметрами.

1. Скопировать в файл F2 только те строки из F1, в которых встречается хотя бы одно слово из первой строки F1.

2. Скопировать в файл F2 только те строки из F1, в которых имеется заданное слово.

3. Скопировать в файл F2 только те строки из F1, которые начинаются и заканчиваются на одну и ту же букву, и подсчитать количество символов в F2.

4. Скопировать из файла F1 в файл F2 те строки, в которых встречается хотя бы одно слово из последней строки F1.

5. Скопировать из файла F1 в файл F2 те строки, в которых имеются слова- палиндромы.

6. Скопировать из файла F1 в файл F2 строки, оставив в каждой строке только слова максимальной длины.

7. Скопировать из файла F1 в файл F2 все строки, в которых встречаются слова- идентификаторы из заданного списка.

8. Скопировать из файла F1 в файл F2 все слова строки, которые содержат цифры, и подсчитать количество строк, которые начинаются на заданную букву в файле F2.

9. Скопировать из файла F1 в файл F2 все строки, которые содержат только одно слово и найти самое длинное слово в файле F2.

10. Скопировать из файла F1 в файл F2 все строки, которые не содержат заданного слова, и найти самое короткое слово в файле F2.

11. Скопировать из файла F1 в файл F2 все строки, кроме той строки, которая содержит самое короткое слово, и вывести номер этой строки.

12. Скопировать из файла F1 в файл F2 все строки, кроме той строки, в которой содержится слово-палиндром максимальной длины.

13. Скопировать из файла F1 в файл F2 все строки, упорядочив слова в каждой строке по алфавиту. 

14. Скопировать из файла F1 в файл F2 все строки, содержащие симметричные слова, упорядочив слова в этих строках по алфавиту.

15. Скопировать из файла F1 в файл F2 строки, в которых не встречаются слова- идентификаторы из заданного списка.

16. Скопировать из файла F1 в файл F2 строки, в которых встречаются по два одинаковых слова.

17. Скопировать из файла F1 в файл F2 строки, в которых нет одинаковых слов.

 18. Скопировать из файла F1 в файл F2 строки максимальной длины, упорядочив в них слова по алфавиту.

19. Скопировать из файла F1 в файл F2 все строки, в которых содержится не менее двух одинаковых слов, и определить номер слова, в котором больше всего цифр.

20. Скопировать из файла F1 в файл F2 все строки, в которых содержатся только слова, состоящие из чисел. Дописать в конце строк сумму чисел в строке.

21. Скопировать из файла F1 в файл F2 все строки, в которых не содержатся слова, состоящие из чисел. Дописать в конце строки длину строки.

 22. Скопировать из файла F1 в файл F2 все строки, в которых содержатся больше заданного числа слов. Дописать в конце строки сумму цифр в строке.

23. Скопировать из файла F1 в файл F2 все строки, в которых есть слова, совпадающие с первым словом строки. Дописать в конце строки количество слов в строке.

24. Скопировать из файла F1 в файл F2 все строки, в которых нет повторяющихся слов. Дописать в конце строки номер строки в файле.

25. Скопировать из файла F1 в файл F2 все строки, в которых есть слова, которые повторяются заданное число раз. Дописать в конце строки количество символов в слове максимальной длины.

 

 





Поделиться с друзьями:


Дата добавления: 2018-10-15; Мы поможем в написании ваших работ!; просмотров: 1121 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Даже страх смягчается привычкой. © Неизвестно
==> читать все изречения...

986 - | 847 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.