Рис.1. Физический файл и файловый указатель
Номер доступного элемента в последовательности элементов файла является значением специальной переменной. Такая переменная не определяется и явно не записывается в Паскаль-программе, но существует и называется файловым указателем (рис. 1). Значение файлового указателя и соответственно расположение доступного элемента в последовательности изменяется при выполнении подпрограмм обработки файлов.
Основными действиями при работе с файлом является чтение, т.е. копирование значения доступного элемента в “нормальные” переменные программы, и запись – копирование значения в доступный элемент. Возможность чтения и записи задается режимом доступа к файлу, или его состоянием. Таким образом, в любой момент выполнения программы файл находится в определенном состоянии – чтения, записи или чего-то еще.
Рассмотрим более детально ту часть информации о файлах, которая непосредственно и является темой нашей лабораторной работы.
2. Текстовые файлы.
Текст – это в общем смысле последовательность символов разбитая на строки, а строка – это последовательность символ с явно обозначенным концом. В языке Turbo Pascal для файлов-текстов определен специальный тип с именем TEXT. Например, можно определить:
varFi, Fo: text;
Подчеркнем, что хотя элементами текста являются символы, этот тип отличается от типа fileofchar. В текстах специальные символы, с помощью которых задаются конец строки и конец текста. Их обработка отличается от обработки других символов и задается специальными подпрограммами, неприменимыми к файлам типа fileofchar, например readln и writeln.
3. Запись в текст.
Описание работы с текстами, которые являются файлами на диске компьютера, начнем с операции записи, поскольку она имеет намного меньше “подводных камней”, чем чтение.
Пусть далее fявляется именем файловой переменной типа text. Текст, как и файлы других видов, устанавливается в начальное состояние для записи вызовом rewrite (f). После этого файл становится пустым. Для того чтобы дописывать информацию к уже существующему тексту, надо установить его в начальное состояние для дописывания вызовом процедуры APPEND:
append (f)
После этого все символы текста, кроме символа конца остаются в тексте, и новые символы будут дописываться вслед за последним из них.
Запись в текст задается вызовом процедуры WRITE или WRITELN, первым аргументом в которой является имя файловой переменной. При выполнении вызова:
write (f, выражение_базового_типа_или_строка)
сначала вычисляется значение выражения. По этому значению создается последовательность символов, которая его изображает, и копируется в текст f. Например, при выполнении вызова:
write (f, trunc(sqrt(9999)))
в файл дописываются два символа ‘9’ и ‘9’, задающие число 99. В вызове можно записать сразу несколько выражений через запятую:
write(f, выражение1, выражение2,...)
Например, при х=2 вызов:
write(f, ‘х=‘, х, ‘; х••2=‘, sqr (х) )
задает вывод в файл последовательности символов х=2; х••2=4. Кстати, такой вызов выполняется как последовательность вызовов:
write (f, выражение1) ; write (f, выражение2) ; . . .
Процедура writelnотличается лишь тем, что при вызове:
writeln (f, список_выражений_базовых_типов_или_строк)
за последней константой в текст добавляется слово eol (в Turbo Pascal – символы [13][10]). Список выражений здесь может быть пустым – тогда добавляется только eol.
В вызовах процедур write и writeln после выражения через двоеточие можно задать ширину поля W для записи значения выражения, например:
write (f, sqr (x) : 2)
Здесь W=2.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.