28
3.2. Съставни (структурирани) типове данни
Задаването на параметри на програмата чрез изброяване на външните файлове
има съществено значение за програмата. По-точно, от особено значение е редът на
изброяването на тези файлове. Когато се използва някоя от конструкциите 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 виж приложение "Сведения за клавиатурата и
екрана на микрокомпютъра Пълдин".
3.2.6. Пакетиране в UniPascal
Както беше споменато, в Pascal описанието на всеки структуриран тип може да
бъде предшествувано от префикса packed. Това означава, че при вътрешното
представяне ще се използва пакетиране, за да се пести памет за данните. За съжаление,
такова представяне може да доведе в някои случаи до по-големи разходи на памет
поради усложнения достъп до такива пакетирани компоненти, т.е. ще се спести памет
за данни, но ще се изразходва памет за код на програмата.
Затова в UniPascal е възприето компромисно решение. Пакетирането се прави на
граница на байт, като по този начин са необходими значително по-прости средства за
поддръжката на пакетираните компоненти.
При използването на пакетирани типове трябва да се има предвид това, че техните
компоненти не могат да бъдат предавани като VAR параметри (по адрес) (виж главата
за описание на процедури и функции - раздел параметри).
<<  <  GO  >  >>

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