- •Содержание
- •Раздел 1.Подпрограммы Общие сведения
- •Процедуры Описание процедур
- •Вызов процедур
- •Процедуры без параметров
- •Процедуры с параметрами
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Параметры-переменные без типа
- •Параметры процедурного типа
- •Использование производных типов в качестве параметров подпрограмм
- •Принцип локализации имен
- •Функции Описание функций
- •Вызов функции
- •Рекурсивные подпрограммы
- •Директивы
- •Библиотечные модули пользователя Общие сведения
- •Структура модуля Unit
- •Особенности работы с модулями
- •Подключение к программе внешнего файла
- •Раздел 2.Простейший ввод-вывод Процедуры ввода из стандартного текстового файла Input
- •248 15 4 70 Значения 1-й строки
- •11 Значения 2-й строки
- •Процедуры вывода в стандартный текстовый файл Output
- •Раздел 3.Записи Структура записи
- •Записи без вариантной части
- •Записи с вариантами
- •Оператор присоединения With
- •Константа-запись
- •Раздел 4.Множества Общие сведения
- •Конструктор множества
- •Задание множественного типа
- •Операции над множествами
- •Ввод / вывод значения множественной переменной
- •Типизованные константы-множества
- •Раздел 5.Файлы Общие сведения
- •Процедура Assign
- •Файлы с типом
- •Процедура Assign
- •Процедура Rewrite (f)
- •Процедура Write (f, v1 [, v2, … , vn])
- •Процедура Reset (f)
- •Процедура Read (f, V [, v2, …, vn])
- •Функция Eof(f)
- •Процедура Seek (f, n)
- •Функция Filepos (f)
- •Функция Filesize(f)
- •Процедура Close (f)
- •Текстовые файлы
- •Процедура Assign (f, Name)
- •Процедура AssignСrt(f)
- •Процедура Append (f)
- •Процедура Rewrite (f)
- •Процедура Reset (f)
- •Процедура Read ([f,] v1 [, v2, …, vn])
- •Процедура Readln [([f] [,] [v1, v2, …, vn])]
- •Процедура Write ([f,] e1 [, e2, …, en])
- •Процедура Writeln([f,][e1,e2, …,en])
- •Процедура Close(f)
- •Процедура SetTextBuf (f, Buf [, Size])
- •Процедура Flush (f)
- •Сравнительная характеристика представления информации в файлах с типом и текстовых файлах
- •I. Представление числовой информации.
- •II. Представление текстовой информации.
- •Файлы без типа
- •Процедуры Reset и Rewrite
- •Процедура Blockread
- •Процедура Blockwrite
- •Проверка операций ввода-вывода
- •Раздел 6.Ссылочный тип (тип указатель) Общие сведения
- •Методы работы с динамическими переменными
- •Процедуры New и Dispose
- •Процедуры Getmem и Freemem
- •Процедуры Mark и Release
- •Раздел 7.Динамические структуры данных Динамические цепочки Структура динамической цепочки
- •Формирование цепочки
- •Поиск элемента в цепочке
- •Удаление элемента из цепочки
- •Вставка элемента в цепочку
- •Линейный однонаправленный список
- •Двунаправленные списки
- •Вставка элемента
- •Создание двунаправленного кольцевого списка с заглавным звеном
- •Удаление элемента
- •Поиск элемента
- •Очереди и стеки
- •Очередь lifo
- •Очередь fifo
- •Общие сведения
- •Способы организации таблиц
- •Однонаправленный список.
- •Однонаправленный список с упорядоченными записями.
- •Однонаправленный список с отдельным хранением текста записи.
- •Представление в виде массива.
- •Двоичное дерево.
- •Двоичные деревья Структура двоичного дерева
- •Построение дерева
- •Поиск записи в дереве
- •Включение записи в дерево
- •Удаление записи из дерева
- •Раздел 8.Оверлеи Общие сведения
- •Правила оформления оверлейных программ
- •Инициализация работы оверлеев
- •Включение администратора оверлеев
- •Обработка ошибок администратора
- •Размещение оверлейного файла в ems-памяти
- •Управление оверлейным буфером
- •Литература Основная и дополнительная литература
- •Перечень наглядных пособий, методических указаний, методических материалов и используемых в учебном процессе технических средств
Файлы без типа
Файл без типа состоит из компонент одинакового размера. Структура этих компонент неизвестна или не имеет значения.
Такое представление позволяет стереть все различия между файлами любых типов. Любой файл, независимо от того, как он был подготовлен (текстовый файл или файл с типом), можно открыть и начать работу с ним, как с файлом без типа.
Объявление файла без типа:
Var
F: File;
Назначение файлов без типа – максимально повысить скорость обмена информацией с внешними наборами данных. Скорость обмена повышается за счет следующих факторов:
В файлах без типа отсутствует преобразование типа компонент;
Не выполняется поиск управляющих символов (типа конец строки);
В файлах без типа, как и в файлах с типом, возможна организация метода прямого доступа. Поэтому в них возможно одновременное использование операций чтения и записи независимо от того, какой процедурой (Reset или Rewrite) они были открыты.
Обмен информацией с внешними наборами данных может быть осуществлен большими блоками.
Последний фактор является основным с точки зрения повышения скорости обмена.
Для файлов без типа определены те же процедуры и функции, что и для файлов с типом, за исключением процедур Read и Write. Определены процедуры Assign, Rewrite, Reset, Seek, Close, функции Eof, Filesize, Filepos.
Процедуры Reset и Rewrite
Процедуры Reset и Rewrite имеют следующие особенности.
При вызове процедур Reset и Rewrite может быть использовано два параметра. Формат вызова данных процедур имеет вид:
Rewrite (F [,Recsize]);
Reset (F [,Recsize]);
Recsize – это необязательное выражение типа Word, определяющее размер записи (в байтах), используемый при передаче данных.
Например,
Rewrite (F, 1);
Reset (F, 1);
В данном случае второй параметр определяет длину записи в 1 байт.
Если параметр Recsize опущен, то подразумевается длина записи, равная 128 байт. Это физически минимально возможный объем информации для обмена.
Процедура Blockread
Вместо процедур Read и Write в файлах без типа используются процедуры Blockread и Blockwrite.
Процедура Blockread имеет следующий формат вызова:
Blockread (F, Buf, Count [, Result]);
Здесь F – имя файловой переменной без типа, Buf – любая переменная (в качестве формального параметра используется параметр-переменная без типа), Count – выражение типа Word, определяющее количество считываемых записей.
Процедура Blockread считывает блок информации длиной в Count или меньше записей в область памяти, занимаемую переменной Buf (начиная с ее первого байта). Действительное число считанных полных записей (оно не может превышать значение Count) заносится в параметр Result (если он есть).
Если Result меньше Count, то это значит, что конец файла достигнут до полного окончания передачи. В этом случае, если параметр Result отсутствует, возникает сообщение об ошибке ввода-вывода (поэтому лучше параметр Result использовать).
В результате выполнения процедуры Blockread “окно” файла (текущая позиция файла) передвинется на число записей, равное значению Result.
Объем блока информации, считываемый процедурой Blockread в переменную Buf, занимает
Result* Recsize
байтов. Здесь Recsize – размер записи, определенный при открытии файла. Размер блока информации не должен превышать 64К байта (это размер сегмента данных). В противном случае возникнет сообщение об ошибке ввода-вывода.