Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы ТП.doc
Скачиваний:
7
Добавлен:
01.04.2025
Размер:
562 Кб
Скачать
☆
  1. Стеки и очереди.

Стек является простейшей динамической структурой. Добавление элементов в стек и выборка из него выполняются из одного конца, называемого вершиной стека. Другие операции со стеком не определены. При выборке элемент исключается из стека. Говорят, что стек реализует принцип обслуживания LIFO (last in — first out, последним пришел — первым обслужен). Кстати, сегмент стека назван так именно потому, что память под локальные переменные выделяется по принципу LIFO. Стеки широко применяются в системном программном обеспечении, компиляторах, в различных рекурсивных алгоритмах. Реализовать стек можно любым удобным для программиста способом: например, массивом. Тогда началом стека (его «верхним» элементом) будет последний компонент массива, а освобождение стека будет происходить в направлении от конца массива к его началу. При такой реализации нет необходимости в постоянном перемещении компонент массива.

Для стека должны быть определены следующие операции:

empty(<нач_стека>) : Boolean

— проверка стека на пустоту;

add(<нач_стека>, <новый_элемент>) : <нач_стека>

— добавление элемента в стек;

take(<нач_стека>) : <тип_элементов_стека>

— считывание значения верхнего элемента;

del(<нач_стека>) : <нач_стека>.

— удаление верхнего элемента из стека.

Очередь — это динамическая структура данных, добавление элементов в которую выполняется в один конец, а выборка — из другого конца. Другие операции с очередью не определены. При выборке элемент исключается из очереди. Говорят, что очередь реализует принцип обслуживания FIFO (first in — first out, первым пришел — первым обслужен). В программировании очереди применяются очень широко — например, при моделировании, буферизованном вводе-выводе или диспетчеризации задач в операционной системе.

  1. Модули.

Модули – это программные единицы, служащие для размещения фрагментов программ, работают они совместно с основной программой, но компилироваться могут отдельно. Используемые модули указываются в разделе Uses.

Модуль имеет следующую структуру:

Unit <имя>;

interface

<интерфейсная часть> implementation

<исполняемая часть> initialization <нициирующая часть> finalization <завершающая часть>

end.

Заголовок модуля Unit<имя>; для правильной работы имя модуля должно совпадать с именем дискового файла в котором записан модуль.

В разделе interface мы сообщаем компилятору, какие типы, переменные, конс-танты, подпрограммы должны стать доступными основной программе и/или другим модулям.

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

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

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

Инициирующая и завершающая части используются редко. При старте программы выполняются сначала инициирующие части всех модулей в порядке их перечисления в основной программе в разделе Uses, а после завершения также выполняются завершающие части модулей.