Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Карта памяти Turbo Pascal.




Вариант №4 (5 баллов)

Сформировать список L, включив в него по одному разу элементы, которые входят хотя бы в один из списков L1 и L2.

Вариант №5 (6 баллов)

Дана непустая последовательность непустых слов из букв; между соседними словами – запятая, за последним словом точка. Напечатать все слова максимальной длины. (Выбрать для представления данных подходящую списковую структуру).

Вариант №6 (5 баллов)

Сформировать список L, включив в него по одному разу элементы, которые входят одновременно в оба списка L1 и L2.

Вариант №7 (5 баллов)

Дано целое n>1, за которым следует n вещественных чисел. Напечатать эти числа в порядке их неубывания (Выбрать для представления данных подходящую списковую структуру).

Вариант №8 (5 баллов)

Сформировать список L, включив в него по одному разу элементы, которые входят в список L1, но не входят в список L2.

Вариант №9 (5 баллов)

Дано целое n>1, за которым следует n вещественных чисел. Напечатать порядковые номера тех чисел последовательности, которые имеют наименьшую величину (Выбрать для представления данных подходящую списковую структуру).

Вариант №10 (5 баллов)

Сформировать список L, включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в тоже время не входят в другой.

Вариант №11 (5 баллов)

Расположить элементы списка L в обратном порядке.

Вариант №12 (5 баллов)

Добавить в конец списка L1 все элементы списка L2

Вариант №13 (5 баллов)

Объединить два упорядоченных по неубыванию списка L1 и L2 в один упорядоченный по неубыванию список.

Вариант №14 (5 баллов)

Дано целое n>1, за которым следует n вещественных чисел. Напечатать порядковые номера тех чисел последовательности, которые имеют наибольшую величину (Выбрать для представления данных подходящую списковую структуру).

Вариант №15 (5 баллов)

Вставить в список L новый элемент E1 перед первым вхождением элемента E, если E входит в L.

Вариант №16 (5 баллов)

Вставить в непустой список L пару новых элементов E1 и E2 перед его последним элементом.

Вариант №17 (5 баллов)

Вставить в непустой список L, элементы которого упорядочены по неубыванию, новый элемент E так, чтобы сохранилась упорядоченность.

Вариант №18 (5 баллов)

Проверить, есть ли в списке L хотя бы два одинаковых элемента.

Вариант №19 (5 баллов)

Проверить, входит ли список L1 в список L2.

Вариант №20 (5 баллов)

Дано целое n>1, за которым следует n вещественных чисел. Напечатать эти числа в порядке их невозрастания (Выбрать для представления данных подходящую списковую структуру).

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ №4.

«Динамические переменные»

 

Карта памяти Turbo Pascal.

Префикс сегмента программы (Program Segment Prefix - PSP) - это 256-ти байтовая область, создаваемая DOS при загрузке программы. Адрес сегмента PSP хранится в переменной PrefixSeg. Каждый модуль (и главная программа и каждый модуль) имеет свой кодовый сегмент. Главная программа занимает первый кодовый сегмент; кодовые сегменты, которые следуют за ним, занимают модули (в порядке, обратном тому, как они следовали в операторе uses), и последний кодовый сегмент занимает библиотека времени выполнения (модуль System). Размер одного кодового сегмента не может превышать 64К, но общий размер кода ограничен только имеющейся памятью.

 

Рис. 16.1. Распределение памяти в Turbo Pascal.

HeapEnd -->-----------------------------

¦ ¦

¦ свободная память¦

¦ ¦

HeapPtr -->¦...........................¦

¦ куча (растет вверх) ¦

HeapOrg -->+ >- - OvrHeapEnd

¦ оверлейный буфер ¦

+------------------------+ >- - OvrHeapOrg

¦ стек (растет вниз) ¦

SSeg:SPtr -->¦............................¦

¦ свободный стек ¦

SSeg:0000 -->+ ----------------------------+

¦ глобальные переменные ¦

¦ типированные константы ¦

DSeg:0000 ->+--------------------- -------+

¦ кодовый сегмент ¦¦

¦ модуля System ¦ ¦

¦............................¦ ¦

¦ кодовый семент ¦ ¦

¦ первого модуля ¦ ¦. кодовый сегмент содержат образ других модулей.EXE файла

¦ кодовый сегмент ¦ ¦

¦ последнего модуля ¦ ¦

+------------------------- -- -+ ¦

¦ кодовый сегмент ¦ ¦

¦ главной программы ¦ ¦

¦ префикс сегмента программы ¦

Нижняя граница памяти DOS

Сегмент данных (адресуемый через DS) содержит все глобальные переменные и затем все типированные константы. Регистр DS никогда не изменяется во время выполнения программы. Размер сегмента данных не может превышать 64К.

При запуске программы регистр сегмента стека (SS) и указатель стека (SP) устанавливаются так, что SS:SP указывает на первый байт после сегмента стека. Регистр SS никогда не изменяется во время выполнения программы, а SP может передвигаться вниз пока не достигнет конца сегмента. Размер стекового сегмента не может превышать 64К; размер по умолчанию - 16К, он может быть изменен директивой компилятора $M.

Буфер оверлеев используется стандартным модулем Overlay для хранения оверлейного кода. Размер оверлейного буфера по умолчанию соответствует размеру наибольшего оверлея в программе; если в программе нет оверлеев, размер буфера оверлеев равен 0. Размер буфера оверлеев может быть увеличен с помощью вызова программы OvrSetBuf модуля Overlay; в этом случае размер кучи соответственно уменьшается, смещением вверх HeapOrg.

Куча хранит динамические переменные, то есть переменные, распределенные через вызов стандартных процедур New и GetMem. Куча занимает всю или часть свободной памяти, оставшейся после загрузки программы. Фактически размер кучи зависит от минимального и максимального значений кучи, которые могут быть установлены директивой компилятора $M. Размер кучи никогда не будет меньше минимального значения и не превысит максимального. Если в системе нет памяти равного минимальному значению, программа не будет выполняться. Минимальное значение кучи по умолчанию равно 0 байт, максимальное - 640К; это означает, что по умолчанию куча будет занимать всю оставшуюся память.

Ссылочные типы.

До сих пор рассматривались только статические объекты. Это объекты, которые порождаются непосредственно перед выполнением программы, существуют в течении всего времени ее выполнения и размер которых (объем памяти необходимой для их размещения) не изменяется по ходу выполнения программы. Место в памяти машины, необходимое для хранения их значений, можно выделить еще на этапе трансляции исходного текста на язык машины.

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

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

В Паскале для работы с динамическими объектами определен специальный тип значений – ссылочный тип. Значение этого типа – ссылка на какой либо программный объект, по которой осуществляется непосредственный доступ к этому объекту. Для описания действий над динамическими объектами каждому такому объекту в программе сопоставляется статическая переменная ссылочного типа – в терминах этих ссылочных переменных и описываются действия над динамическими объектами. Значения же переменных ссылочного типа определяются уже в процессе выполнения программы.





Поделиться с друзьями:


Дата добавления: 2016-12-18; Мы поможем в написании ваших работ!; просмотров: 423 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Своим успехом я обязана тому, что никогда не оправдывалась и не принимала оправданий от других. © Флоренс Найтингейл
==> читать все изречения...

2378 - | 2186 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.