Процедуры и функции для работы с файлами
Подпрограммы для работы со всеми типами файлов.Процедуры:
assign(var fp; filename :string) -связывает фай, ловую переменную f р с физическим файлом, имя которого задано в строке filename. Если путь к файлу не задан, предполагается, что он находится в текущем каталоге.rewrite(var fp) -открывает новый файл для записи данных. Если физический файл, с которым связана переменная f р, существовал ранее, он очищается, то есть вся информация из него теряется.reset(var fp)- открывает существующий файл для последующего чтения или записи данных.close(var fp) -закрывает открытый файл. Типизированные файлы Формат типизированного файла: type<имя типа> =flie of <тип компонента>;var <имя файловой переменной>:<имя типа>;Для ввода информации из файла, открытого для чтения, используется оператор:read(<имя файловой переменной>,<список ввода>);При этом происходит считывание данных из файла в переменные, имена которых указаны в списке ввода. Переменные должны быть того же типа, что и компоненты файла. Вывод информации выполняется оператором: write (<Имя файловой переменной>,<список вывода>);Примеры описания файлов:type n =file of integer;{тип-файл целых чисел};с =file of char;{тип- файл символов};massiv=array[1..5]of real;var fl:n; f2:c;z : file of word;f: file of massiv;{файл, компонентами которого являются массивы вещественных чисел}
Текстовые файлы
Для описания текстовых файлов в Паскале имеется стандартный файловый тип text,например: var in_file:text;Доступ к текстовому файлу организуется последовательно, то есть программа не может в любой момент времени считать из него произвольную порцию информации или произвести запись в произвольное место файла.Для работы с текстовым файлом используются процедуры assign, rewrite, reset, close.Однако текстовый файл, открытый процедурой reset,доступен только для чтения, в отличие от типизированных файлов.Для записи в текстовый файл или чтения из него можно использовать процедуры Write, WriteLn, Readи ReadLn.В этом случае в качестве первого параметра в этих процедурах указывается файловая переменная, напримерReadln(in_file, а, х);Здесь происходит присваивание переменным а и хзначений двух очередных элементов из файла, связанного с файловой переменной in_f ile. Текстовыйфайл может использоваться для хранения численных значений. При считывании значений или их записи в файл происходит автоматическое преобразование из числового формата в символьный, и наоборот. Оператор вывода допускает описание формата вывода. Если а является выражением целого, булевого или строкового типа, то оператор WriteLn (in_f ile, a: n); означает запись значения переменной а в правые позиции поля размером в ппозиций.Append(var fp)-Открывает существующий файл, связана ный с файловой переменной f р, для добавления в него новых записей; Eoln(var fp)-Возвращает Т rue, если указатель файла достиг маркера конца строки. В противном случае False.;SeekEoln(var fp)-Аналогична предыдущей, но указатель файла пропускает все знаки табуляции, предшествующие маркеру конца строки.
Модули
Для размещения в памяти большой программы может не хватить одного сегмента памяти (его размер - до 64 кбайт). включили в язык механизм так наз модулей, котор размещ в разных сегментах. Модули позволяют созд библиотеки проц и функц, кот можн подкл к разн прог.Модуль - это автономно компилир прог единица, включ в себя спец образом оформлен библиотеку описаний (типы, конст, перемен, проц и фун).Модуль мож быть запущен только из прог или из другого модуля. Он компилир независимо от использ их прог. Результ компиляц явл файл с тем же именем и расширением .TPU, кот заносится на диск.Общий объем модульн прог может быть много более 64 кбайта, но каждый .TPU-файл не может превышать этот предел.Структура модуля.Модуль можно разделить на несколько разделов: заголовок; интерфейсная часть; исполняемая часть; инициализационная часть.UNIT <имя> {заголовок модуля}interface {интерфейсная часть} uses <список> {используемые при объявлении модули} label {блок объявлений библиотечных меток}const {блок объявлений библиотечных констант}type {блок объявлений библиотечных типов}var {блок объявлений библиотечных переменных}заголовки доступных процедур и функций с указанием парамет-ров> implementation {секция реализации} uses {используемые при реализации модули} label {блок объявлений внутренних меток} const {блок объявлений внутренних констант}type {блок объявлений внутренних типов}var {блок объявлений внутренних переменных}заголовки безпараметров и тела процедур и функции>Begin {секция инициализации}<операторы>EndВсе блоки, составляющие разделы интерфейса, реализации и инициализации необязательны и могут отсутствовать.Заголовок модуля состоит из зарезерв слова unit и имени модуля. Это имя должно совпад с именем дискового файла, в кот помещается исх текст модуля. В интерфейсной части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), кот должны стать доступн любой прог. При объявлен библиотеч подпрог в интерфейс части указ только их заголовок.В разделе реализац можно исп все объекты, описан в разделе interface. Он, содерж описан подпрог, объявлен в интерфейсн части. Описанию подпрогр, объявлен в интерфейсной части модуля, в исполняем части должен предшествовать заголовок, в кот можно опускать список формальных перемен. В разделе реализации могут объявл локальн для модуля объекты - типы, конст, перемен. Они будут глобальн по отношению к подпрогр этого раздела и инициирующей части. В проге, подкл модуль, объявленные при реал данн и типы недоступны.Завершает модуль инициирующая часть. Она может отсутств вместе с начинающим еесловом Begin. Тогда сразу после раздела реализац следует признак конца модуля End. В инициир часта размешают исполняем операт, котор вып до передачи управлен основн проге и обычно исп для подготовки ееработы. Обычно в ней вып присваивание нач значен библиотечн переменным, открытие файлов и т.п