К текстовым файлам относятся и стандартные файлы INPUT и OUTPUT. Рассмотренные ранее операторы ввода-вывода с консоли Readln и Writeln являются частным случаем операторов обмена с текстовыми файлами, когда используются стандартные файлы ввода-вывода INPUT и OUTPUT.
Работа с указанными файлами имеет свои особенности, такие как:
· имена этих файлов в списках ввода-вывода не указываются;
· применение процедур Reset, Rewrite и Close к стандартным файлам ввода-вывода запрещено.
1. Что такое текстовые файлы?
2. Как описываются текстовые файлы в языке Паскаль?
3. Какие операции над текстовыми файлами Вы знаете?
4. Какие дополнительные процедуры и функции для работы с текстовыми файлами Вы знаете?
5. Что такое файлы Input и Output?
Каждая переменная, описанная в разделе var, имеет свое имя и описание. Описание, среди прочего, позволяет компилятору определить, сколько байтов памяти необходимо выделить в памяти для переменной. Имя же позволяет обратиться к зарезервированной под переменную ячейке памяти.
Однако каждая переменная, кроме своего имени, имеет и физический адрес: номер ячейки памяти, в которой хранится значение переменной.
Указатель представляет собой переменную целого типа, которая интерпретируется как адрес байта памяти, содержащей некоторый элемент данных. Этим элементом может быть переменная, константа, адрес другой переменной и т.д.
Адрес интерпретируется двумя шестнадцатибитными словами BA:BS, где BA – сегментный адрес, BS – смещение. Сегмент – участок памяти длиной 64 Кбайта.
При обращении к переменной по имени программа сама определяет, по какому адресу находится ее значение. Указатель же позволяет хранить адрес произвольной ячейки памяти, в которой могут храниться те или иные данные.
Существует два типа указателей: типизированные и нетипизированные.
Типизированные указатели хранят адрес данных первого байта какого-либо конкретного типа. Для объявления таких указателей обычно используется символ ^, который размещается непосредственно перед типом данных, на значения которого ссылается типизированный указатель:
Пример:
type
IntPtr = ^Integer;
var
P1 = IntPtr;
P2 = ^Integer;
Отметим, что типизированные указатели – это единственный тип в языке Паскаль, который может ссылаться на еще не описанный тип.
Пример:
type
Link = ^Node; {тип Node будет описан только в следующей строке!}
Node = record
Key: Integer;
Next: Link;
end;
Нетипизированные указатели хранят адрес данных, не связанные с каким-либо конкретным типом данных. Они могут ссылаться и на целочисленные данные, и на символьные, и т.д. В этом случае используется ключевое слово Pointer.
Пример:
var
P: Pointer;
Такая переменная представляет собой адрес байта данных, начиная с которого хранятся какие-либо данные произвольной длины.