ПРАКТИЧЕСКОЕ ЗАНЯТИЕ РАЗРАБОТКА ПРОГРАММ РАБОТЫ С ТЕКСТОВЫМИ ФАЙЛАМИ

  • docx
  • 11.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-00416.docx

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ

РАЗРАБОТКА ПРОГРАММ РАБОТЫ С ТЕКСТОВЫМИ ФАЙЛАМИ

 

1.                                                                                                                               ЦЕЛЬ ЗАНЯТИЯ

Научится решать задачи с использованием текстовых файлов.

 

2.     ИНФОРМАЦИОННЫЙ БЛОК

Текстовый файл – наиболее часто используемая разновидность файлов. Файлы, содержащие тексты программ на Паскале и других языках программи- рования, являются текстовыми.

В программе файловая переменная текстового типа описывается следую-

щим образом:

Var <идентификатор> : Text;

Текстовый файл представляет собой символьную последовательность, разделенную на строки. Каждая строка заканчивается специальным кодом – маркером конца строки (м.к.с.). Весь файл заканчивается маркером конца фай- ла (м.к.ф.). Схематично текстовый файл может выглядеть так:

 

S1

S2

Sk1

м.к.с.

S1

S2

Sk2

м.к.с.

S1

Sk3

м.к.с.

м.к.ф.

Здесь три строки, в первой Sk1 символов, во второй Sk2, в третьей Sk3.

 

Каждый символ представлен во внутреннем коде (ASCII) и занимает 1 байт. В текстовый файл можно записать и из него прочитать информацию лю- бого типа. Если эта информация несимвольная, то в процессе чтения или запи- си происходит ее преобразование из символьной формы во внутреннюю и об- ратно.

Процедуры и функции для работы с текстовыми файлами

Процедуры и функции

Примеры использования

Процедура Assign (ФайловаяПеременная, имяФайла) предшествует другим проце- дурам, т.к. ставит в соответствие физиче- скому файлу на внешнем устройстве логи- ческий файл — файловую переменную, к которой впоследствии будут обращаться

все другие файловые процедуры

Assign(f,’file1.txt’)

В апострофах может быть указан путь к файлу, в случае, если файл находится не в одной папке с файлом turbo.exe Assign(f,’E:\file1.txt’)

Процедура Reset (ФайловаяПеременная) открывает существующий файл на чтение (открывает входной файл) и ставит указа- тель на начало первого элемента файла

Reset(f)

При отсутствии внешнего файла с указанным именем возникает сообщение об ошибке Error 2: File not found (Файл не найден)

Процедура Append (ФайловаяПеремен- ная). Она открывает существующий файл для дозаписи. Указатель ставится не в на- чало, а в конец файла, куда и будут допи-

сываться  новые  компоненты.  Процедура

Append(f)


 

append     применима   только   к   текстовым

файлам

 

Процедура Rewrite (ФайловаяПеремен- ная) создает и открывает новый (выходной) файл для последующей записи данных. По- сле ее успешного выполнения файл готов к записи в него первого элемента

Rewrite(f)

Процедуры чтения из файла:

Read     (ФайловаяПеременная,      x1, x2,…, xN);

Readln    (ФайловаяПеременная,    x1, x2,…, xN);

Readln (ФайловаяПеременная);

Read(f, x1, x2, …, xN) Readln(f, x1, x2, …, xN) Readln(f)

где x1, x2,…,xN – список ввода, содержащий имена переменных разных типов, значения которых процедура read считывает из тек- стового файла. Readln выполняет те же действия, но еще переходит к новой строке. Readln (Файло- ваяПеременная) без параметров приводит к перемещению теку- щей позиции файла на начало

следующей строки

Процедуры записи в файл:

Write      (ФайловаяПеременная,     y1, y2,…, yN);

Writeln     (ФайловаяПеременная,    y1, y2,…, yN);

Writeln (ФайловаяПеременная);

Write(f, x1, x2, …, xN) Writeln(f, x1, x2, …, xN) Writeln(f)

где y1, y2,…, yN – список выво- да, содержащий вводимые имена переменных разных типов, зна- чения которых должны быть за- писаны в файл, начиная с пози-

ции текущего указателя

Процедура Rename (ФайловаяПеремен- ная, ИмяФайла) используется для того, чтобы переименовать неоткрытый внеш- ний файл любого типа. Новое имя задается

строкой ИмяФайла

Rename(f,’File2.txt’)

Логическая функция eof (ФайловаяПере- менная) выполняет проверку, не достигнут ли конец файла (End Of File) при чтении из него данных. Функция возвращает true, ес- ли конец файла обнаружен, и указатель те- кущей позиции находится в конце файла за его последним символом. Это значит, что последний элемент в файле уже прочитан,

или файл после открытия оказался пуст. В

While not eof(f) do Read(f)


 

противном     случае    функция    возвращает

false

 

Для контроля конца строки файла исполь- зуется                                                функция

Еоln(ФайловаяПеременная), принимаю- щая значение true, если указатель текущей позиции находится на маркере конца стро- ки, иначе false. Если eof true, то и eoln

true

While not eoln(f) do Read(f)

Функция Seekeoln (ФайловаяПеремен- ная) аналогична функции eoln, но пропус- кает пробелы и позиции табуляции перед проверкой на конец строки. Функцию мож- но использовать только для открытых тек-

стовых файлов

While not seekeoln(f) do Read(f)

Функция Seekeof (ФайловаяПеременная) аналогична eof, но пропускает пробелы, по- зиции табуляции и маркеры конца строки перед проверкой на конец файла. Функцию можно использовать только для открытых

текстовых файлов

While not seekeof(f) do Read(f)

Процедура Erase (ФайловаяПеременная) удаляет неоткрытый внешний файл любого типа, задаваемый параметром ФайловаяПе-

ременная

Erase(f)

Процедура Close (ФайловаяПеременная). Используя процедуру close, программист должен закрыть файл, после того как в про- грамме будет завершена его обработка. В противном случае может произойти потеря

данных.

Close(f)



 

 

3.     ИСПОЛНИТЕЛЬНЫЙ БЛОК

 

Задание 1. Заполнить текстовый файл 10 строками последовательно вводимыми с клавиатуры.

1)     Описать в разделе Var файловую переменную f как текстовый файл, ос- тальные переменные опишите по своему усмотрению;

2)     Процедурой Assign установите связь между файловой переменной f и внешним файлом, например, «file1.txt»;

3)     Процедурой Rewrite откройте файл для записи;

4)     Организуйте цикл на 10 раз, содержащий два оператора: ввод строки с клавиатуры и запись строки в файл;

5)    Обязательно сохраните текст программы, например, «zadanie1.pas»

(он вам пригодится в следующем задании)

6)     После запуска программы убедитесь, что введенные вами строки появи- лись в файле «file1.txt».

 

Задание 2. Вывести из существующего файла все содержимое на экран и определить количество строк.

1)     Исходным файлом будем считать файл с текстом программы для зада- ния 1. Процедурой Assign установите связь между файловой перемен- ной и файлом «zadanie1.pas»;

2)     Процедурой Reset установите указатель файла на его начало;

3)     Т.к. неизвестно сколько строк составляет текст программы задания 1, то неизвестно на какое количество повторений необходимо организовать цикл. Поэтому воспользуемся циклом While not eof(f) (пока не конец файла f);

4)     В цикле необходимо считывать строки из файла, например, в перемен- ную S, выводить ее на экран и увеличивать счетчик числа строк на 1;

5)     Вывести счетчик числа строк на экран.

 

Задание 3. С помощью текстового редактора «Блокнот» создать файл, содержащий некоторое количество целых чисел. Написать программу, вычисляющую среднее арифметическое этих чисел.

1)     Запустить программу «Блокнот», в столбец (через «Enter») ввести не- сколько целых чисел.


2)     В программе в цикле (While not eof(f)), используя процедуру Read или Readln, считывать каждое число, добавлять его к сумме. Т.к. количество чисел в файле может быть не известным, необходимо вести также под- счет количества чисел в файле для определения среднего арифметиче- ского.

 

4.     ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ

1)       В программу из примера 1 внесите изменения так, чтобы запись в файл происходила в отдельной процедуре.

2)       В программу из примера 1 добавьте процедуру подсчета количества имен начинающихся на букву А.

3)       В ту же программу добавьте процедуру добавления к первым трем именам фамилии. (При решении задачи лучше использовать массив строкового типа и изменения сначала произвести с массивом, а затем массив записать в файл).

4)       В существующем файле определить длину каждой строки. Вывести со- держимое файла на экран.

5)       В текстовом файле записана последовательность целых чисел. Найти наибольшее из них. Вывести содержимое файла на экран.

6)       В текстовом файле записана последовательность целых чисел. Найти сколько среди них четных. Вывести содержимое файла на экран.

7)       В текстовом файле записана последовательность целых чисел. Опреде- лить сумму и количество нечетных чисел. Вывести содержимое файла на экран.

8)       Заполнить текстовый файл последовательностью чисел с помощью ге- нератора случайных чисел, определить сколько среди них находятся в диапазо- не от 10 до 20. Вывести содержимое файла на экран.