Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОАП.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆
    1. Нетипизированные файлы

Нетипизированные файлы объявляются как файловые переменные типа FILE и отличаются тем, что для них не указан тип компонентов. Отсутствие типа делает эти файлы, с одной стороны, совместимыми с любыми другими файлами, а с другой - позволяет организовать высокоскоростной обмен данными между диском и памятью.

При инициации нетипизированного файла процедурами RESET или REWRITE можно указать длину записи нетипизированного файла в байтах. Например, так:

var

f: file;

Begin

.........

assign (f, ‘myfile.dat’);

reset (f, 512);

.........

end.

Длина записи нетипизированного файла указывается вторым параметром при обращении к процедурам RESET или REWRITE, в качестве которого может использоваться выражение типа WORD. Если длина записи не указана, она принимается равной 128 байтам.

Турбо Паскаль не накладывает каких-либо ограничений на длину записи нетипизированного файла, за исключением требования положительности и ограничения максимальной длины 65535 байтами (емкость целого типа WORD).

При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключением READ и WRITE, которые заменяются соответственно высокоскоростными процедурами BLOCKREAD и BLOCKWRITE. Для вывоза этих процедур используются следующие предложения:

BLOCKREAD (<ф.п.>, <буф>, <[,<NN>] )

BLOCKWRITE (<ф.п.>, <буф>, <[,<NN>] )

Здесь <буф> - буфер: имя переменной, которая будет участвовать в обмене данными с дисками;

<D> - количество записей, которые должны быть прочитаны или записаны за одно обращение к диску;

<NN> - необязательный параметр, содержащий при выходе из процедуры количество фактически обработанных записей.

За одно обращение к процедурам может быть передано до N*RECS байт, где RECS - длина записи нетипизированного файла. Передача идет, начиная с первого байта переменной <буф>. Программист должен позаботится о том, чтобы длина внутреннего представления переменной <буф> была достаточной для перемещения всех N*RECS байт при чтении информации с диска. Если при чтении указана переменная <буф> недостаточной длины или если в процессе записи на диск не окажется нужного свободного пространства, возникнет ошибка ввода-вывода, которую можно заблокировать, указав необязательный параметр <NN> (переменная типа WORD).

После завершения процедуры указатель смещается на <NN> записей. Процедурами SEEK, FILEPOS и FILESIZE можно обеспечить доступ к любой записи нетипизированного файла.

Тема № 11: «Процедуры и функции»

В языке Паскаль определяются два типа подпрограмм - процедуры и функции. Любая подпрограмма обладает той же структурой, которой обладает и вся программа.

При вызове подпрограммы выполнение основной программы приостанавливается и управление передается в подпрограмму. По окончании работы подпрограммы управление предается остальной программе.

Основное различие между процедурой и функцией состоит в том, что процедура только выполняет какую - либо законченную последовательность действий, не возвращая результата работы в основную программу, а функция и выполняет действия, и возвращает результат.

Любая подпрограмма должна быть описана до того, как она будет вызвана в программе или в другой подпрограмме Все переменные, которые использует подпрограмма, могут быть либо глобальными, т.е. объявленные в основной программе и доступные как программе, так и всем ее подпрограммам, либо локальными, т.е. объявленные внутри подпрограммы и доступные только ей собой. Обмен данными между основной программой и подпрограммой может осуществляться только с помощью глобальных переменных.

Подпрограмма может непосредственно использовать любые глобальные переменные за исключением тех, которые имеют те же имена, что и ее локальные переменные.