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

13.2.3. Модуль Overlay

Он необходим при разработке больших программ с перекрытиями. Максимальный размер модуля не может превышать 64 кб, однако количество модулей не ограничено, что дает возможность разрабатывать очень крупные программы (до 580 кб оперативной памяти). И все же в некоторых случаях и этот объем может оказаться недостаточным. С помощью оверлея можно создавать программы практически неограниченной длины (имеется в виду длина кода программы; длина сегмента данных и размер программного стека не могут превышать 64 кб независимо от структуры программы).

Оверлей – это такой способ использования оперативной памяти, при котором в один и тот же участок памяти (оверлейный буфер) попеременно по мере надобности загружаются различные оверлейные модули. При этом все оверлейные модули хранятся на диске, а в оперативной памяти в каждый момент времени находится лишь один активный модуль и, возможно, несколько неактивных. При исполнении оверлейной программы в память загружается главная часть и один из модулей, например, модуль А. Если в процессе исполнения программы встретится обращение к модулю В, то с диска в оверлейный модуль будет загружен этот модуль (модуль А при этом частично разрушается), после чего программа продолжит свою работу.

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

Алгоритм создания оверлейных программ:

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

  2. В главной части программы указать с помощью директив компилятора {$O <имя>} те модули, которые будут оверлейными.

Program Over;

Uses DOS, Overlay, UnitA, UnitB;

{$O UnitA}

{$O UnitB}

{$O DOS}

Прим: из всех стандартных модулей только модуль DOS может быть оверлейным.

  1. Осуществить вызов процедуры инициализации оверлея OVRINIT перед первым обращением к оверлейному модулю.

  2. В начале главной программы и каждого оверлейного модуля поместить директивы компилятора {$O+} {$F+} (разрешить создание оверлейной структуры и использовать дальнюю модель вызова), после чего откомпилировать программу на диск (Destination Disk).

Ниже приведены задания, решение которых позволит вам овладеть основными приемами работы с Турбо Паскалем.

Задания для самостоятельной работы по теме «линейные алгоритмы»

Составить программы, используя для оформления модуль CRT. На экране отобразить два окна: в одном произвести ввод исходных данных, в другом – вывести результаты. Ввод и вывод снабдить пояснениями.

Варианты заданий :

  1. Прямоугольный треугольник задан гипотенузой и одним из катетов. Найти второй катет и площадь треугольника.

  2. Треугольник задан величинами своих углов (в градусах) и радиусом описанной окружности. Найти длины сторон треугольника.

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

  4. Вычислить длину окружности, площадь круга и объем шара одного и того же заданного радиуса.

  5. Вычислить периметр и площадь прямоугольного треугольника по заданным катетам треугольника.

  6. Вычислить периметр и площадь треугольника по заданным координатам трех его вершин.

  7. Треугольник задан длинами своих сторон. Найти длины его высот.

  8. Треугольник задан длинами своих сторон. Найти длины его медиан.

  9. Треугольник задан длинами своих сторон. Найти длины его биссектрис.

  10. Треугольник задан длинами своих сторон. Найти радиусы описанной и вписанной окружностей треугольника.

  11. По длинам двух сторон треугольника и углу (в градусах) между ними найти длину третьей стороны и площадь этого треугольника.

  12. Найти сумму цифр заданного трехзначного числа.

  13. Определить число, получаемое выписыванием в обратном порядке цифр трехзначного числа.

  14. Идет К-ая секунда суток. Определить, сколько полных часов и полных минут прошло к этому моменту. Например, если К=13231, то прошло 3 часа и 40 минут.

  15. Определить угол в градусах между положением часовой стрелки в начале суток и ее положением в h часов, m минут и s секунд (0 h 11; 0 m, s 59).