ПРАКТИЧЕСКОЕ ЗАНЯТИЕ
РАЗРАБОТКА ПРОГРАММ РАБОТЫ С ТЕКСТОВЫМИ ФАЙЛАМИ
Научится решать задачи с использованием текстовых файлов.
Текстовый файл – наиболее часто используемая разновидность файлов. Файлы, содержащие тексты программ на Паскале и других языках программи- рования, являются текстовыми.
В программе файловая переменная текстового типа описывается следую-
щим образом:
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) Описать в разделе Var файловую переменную f как текстовый файл, ос- тальные переменные опишите по своему усмотрению;
2) Процедурой Assign установите связь между файловой переменной f и внешним файлом, например, «file1.txt»;
3) Процедурой Rewrite откройте файл для записи;
4) Организуйте цикл на 10 раз, содержащий два оператора: ввод строки с клавиатуры и запись строки в файл;
(он вам пригодится в следующем задании)
6) После запуска программы убедитесь, что введенные вами строки появи- лись в файле «file1.txt».
1) Исходным файлом будем считать файл с текстом программы для зада- ния 1. Процедурой Assign установите связь между файловой перемен- ной и файлом «zadanie1.pas»;
2) Процедурой Reset установите указатель файла на его начало;
3) Т.к. неизвестно сколько строк составляет текст программы задания 1, то неизвестно на какое количество повторений необходимо организовать цикл. Поэтому воспользуемся циклом While not eof(f) (пока не конец файла f);
4) В цикле необходимо считывать строки из файла, например, в перемен- ную S, выводить ее на экран и увеличивать счетчик числа строк на 1;
5) Вывести счетчик числа строк на экран.
1) Запустить программу «Блокнот», в столбец (через «Enter») ввести не- сколько целых чисел.
2) В программе в цикле (While not eof(f)), используя процедуру Read или Readln, считывать каждое число, добавлять его к сумме. Т.к. количество чисел в файле может быть не известным, необходимо вести также под- счет количества чисел в файле для определения среднего арифметиче- ского.
1) В программу из примера 1 внесите изменения так, чтобы запись в файл происходила в отдельной процедуре.
2) В программу из примера 1 добавьте процедуру подсчета количества имен начинающихся на букву А.
3) В ту же программу добавьте процедуру добавления к первым трем именам фамилии. (При решении задачи лучше использовать массив строкового типа и изменения сначала произвести с массивом, а затем массив записать в файл).
4) В существующем файле определить длину каждой строки. Вывести со- держимое файла на экран.
5) В текстовом файле записана последовательность целых чисел. Найти наибольшее из них. Вывести содержимое файла на экран.
6) В текстовом файле записана последовательность целых чисел. Найти сколько среди них четных. Вывести содержимое файла на экран.
7) В текстовом файле записана последовательность целых чисел. Опреде- лить сумму и количество нечетных чисел. Вывести содержимое файла на экран.
8) Заполнить текстовый файл последовательностью чисел с помощью ге- нератора случайных чисел, определить сколько среди них находятся в диапазо- не от 10 до 20. Вывести содержимое файла на экран.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.