30
3.2. Составные типы данных
на экран, а будет выполнять операции над заданными ей при ее стартировании файлами.
Иногда необходимо чтобы некоторые из сообщений не могли быть
перенаправленными, а так же чтобы чтение совершалось обязательно с клавиатуры
(например, когда сообщается об ошибке пользователю программы и ожидаются его
указания о продолжении работы). В таком случае нужно явно указать, что необходимо
использовать файл Message. С другой стороны может быть программе будет
необходимо работать всегда с файлом Message и реже с файлами Input и Output.
Необходимо ли каждый раз указывать явным образом использование файла Message в
каждом вызове процедур READ и WRITE? В UniPascal-е реализована возможность
указывать который из файлов будет подразумеваться как параметр стандартных
процедур для работы с текстовыми файлами, когда параметр будет опущен.
Задание параметров программы перечислением используемых внешних файлов
имеет существенное значение для программы. Точнее, особое значение имеет
порядок перечисления этих файлов. Когда используется некоторая из процедур READ,
READLN, ... без никакого файла, подразумевается использование первого из
перечисленных внешних файлов с необходимым доступом для чтения или записи.
Например, пусть рассмотрим следующую программу:
program Example1(input, output);
var s: string;
begin
readln(s);
writeln(s);
end.
Эта программа считывает строку со стандартного входного файла Input и потом
записывает ее в стандартный выходной файл Output. Если заголовок программы имеет
вид:
program Example2(input, message);
процедура READLN будет использовать по умолчанию файл Input, но WRITELN будеть
использовать файл Message. Если заголовок имеет вид:
program Example3(message, input);
то READLN и WRITELN будут использовать файл Message, потому что он удовлетворяет
обоим типам доступа (для чтения и записи) и задан первым в списке внешних файлов. Задание
других файлов после Message в списке не укажет влияния на программу. Считается
признаком хорошего стиля программирования, если в заголовке программы перечисляются
только все внешние файлы, которые используются программой. С этой точки зрения
перечисления файла Input в заголовке программы Example3 не только ненужно, но и не
хорошо, потому что этот файл вообще не используется программой.
Существует еще одна разница между файлами Output и Message. Если
происходит запись символов, выходящая за правой границей строки, при файле Output
текст переносится автоматически в следующую строку, а при файле Message такой
перенос не происходит, т.е. все символы пишутся только в последней позиции строки
экрана (тем самым остается только последний символ). Работа с стандартными
файлами Input и Output описывается более подробно в Приложении D.
3.2.6. Упаковка в UniPascal-е
Как уже было сказано, в Pascal-е префикс packed может предшествовать
описанию каждого составного типа. Это значит, что внутреннее представление будет
упакованным для экономии памяти. К сожалению, такое представление может привести
<<  <  GO  >  >>

Вернуться к началу сайта