- •Содержание
- •Раздел 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-памяти
- •Управление оверлейным буфером
- •Литература Основная и дополнительная литература
- •Перечень наглядных пособий, методических указаний, методических материалов и используемых в учебном процессе технических средств
Размещение оверлейного файла в ems-памяти
EMS-память – это расширенная память.
Для размещения оверлейного файла в EMS-памяти используется процедура OvrInitEMS (без параметров). Она проверяет, есть ли в компьютере расширенная память и установлена ли программа-драйвер этой памяти. Если эти условия выполняются, то ovr-файл целиком загрузится в EMS-память и программа будет работать значительно быстрее по сравнению с хранением ovr-файла на диске.
Вызов процедуры OvrInitEMS не является обязательным. При ее использовании предварительно все равно необходимо использовать процедуру OvrInit. Использование OvrInitEMS не отменяет необходимости в буфере оверлеев.
Управление оверлейным буфером
Размер оверлейного буфера назначается автоматически. Для управления размером оверлейного буфера используется функция
OvrGetBuf: LongInt,
а также процедуры
OvrSetBuf (Size: LongInt),
OvrClearBuf.
Функция OvrGetBuf возвращает размер текущего буфера в байтах.
Автоматически под буфер выделяется память такого размера, который необходим для загрузки наибольшего оверлейного модуля. Но если оверлейный модуль вызывает другой оверлейный модуль, то оба оверлейных модуля одновременно активны, то есть должны находиться в буфере. В этом случае размер буфера должен соответствовать суммарному размеру этих оверлейных модулей.
Процедура OvrSetBuf (Size: Longint) регулирует размер буфера. Она должна вызываться после процедур OvrInit и OvrInitEMS. Параметр Size задает требуемую величину буфера в байтах.
Дополнительная память для буфера выделяется из области динамической памяти. Процедура OvrSetBuf требует, чтобы динамическая память была пустой. Если же динамические переменные уже были распределены с помощью процедур New или GetMem, то будет выдано сообщение об ошибке (возможные ошибки OvrNoMemory и OvrError) В этом случае необходимо определить min-ый размер динамической памяти директивой {$M…}.
Если процедура OvrSetBuf приводит к ошибке, программа не останавливается, а размер буфера не изменяется.
Наиболее удобно менять значение буфера относительно текущего значения. Например,
OvrSetBuf (OvrGetBuf + 2048);
В данном случае размер буфера увеличился на 2Кб.
Процедура OvrClearBuf служит для принудительной очистки буфера. Это может быть полезно, например, если выполняется фрагмент программы, не использующий оверлейных подпрограмм. Тогда этот участок памяти можно использовать для размещения динамических переменных.
Литература Основная и дополнительная литература
ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.
Глухова Л.А., Бахтизин В.В. Основы алгоритмизации и структурного проектирования программ: Учеб. пособие по курсам «Основы алгоритмизации и программирования» и «Технология разработки программного обеспечения» для студ. спец. 40 01 01 “Программное обеспечение информационных технологий” дневной формы обучения. – Мн.: БГУИР, 2003.
Голицына О., Попов И. Основы алгоритмизации и программирования. – СПб, 2003.
Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. – М.: ДМК, 1999.
Жаров С. Shareware. Профессиональная разработка и продвижение программ. – СПб, 2003.
Йодан Э. Структурное программирование и конструирование программ. – М.: Мир, 1979.
Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: Построение и анализ. – СПб, 2003.
Одинцов И. Профессиональное программирование. Системный подход. – СПб, 2003.
Орлов С.А. Технологии разработки программного обеспечения: Учеб. Пособие. – СПб, 2003.
Поляков Д.Б., Круглов И.Ю. Программирование в среде Турбо Паскаль (версия 5.5): справочно-метод. пособие. - М.: МАИ, 1992.
Соммервилл И. Инженерия программного обеспечения. – СПб, 2003.
Сурков Д.А. и др. Программирование в среде Borland Pascal для Windows: справочное пособие. - Мн.: Выс. шк., 1996.
Уилсон С. Принципы проектирования и разработки программного обеспечения. Учебный курс. – СПб, 2003.
Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учеб. Пособие. – М.: Нолидж, 2007.
Шелест В.Д. Программирование: Структурный подход. Алгоритмы. Turbo Pascal. Borland C++. Современный Fortran. – СПб, 2003.