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

Операции – выделение и освобождение памяти

Характеризует время выделения и освобождения памяти под данные

1) автоматический класс памяти

Блочная структура – память виртуальной машины разбита на участки с указанием имени и типа, при входе в блок выделяется память в стеке под все локальные переменные

2) статический класс памяти

Память выделяется при запуске программы и освобождается при выходе

Если в Паскаль добавить понятие класс памяти:

Procedure P;

Var x automatic;

Var y static;

Begin

x:=x+1;

y:=y+1;

End;

При входе в процедуру создается участок памяти в стеке для х, при выходе из процедуры он уничтожается и данные теряются.

Память под у выделена не в стеке, при входе в процедуру мы берем «предыдущее» значение, после выхода из процедуры у сохраняет свое значение.

То, что под у выделена память, не означает, что она видна везде (правило видимости)

Проблема: как инициализировать статические переменные? – в главной программе? Разделять первые и последующие вызовы процедуры?

  1. Понятие конечного автомата и мп-автомата

Конечный автомат — абстрактный автомат без выходного потока, число возможных состояний которого конечно. Результат работы автомата определяется по его конечному состоянию.

Существуют различные варианты задания конечного автомата. Например, конечный автомат может быть задан с помощью пяти параметров:

Q — конечное множество состояний автомата;

q0 — начальное состояние автомата ();

F — множество заключительных (или допускающих) состояний

Σ — допустимый входной алфавит (конечное множество допустимых входных символов), из которого формируются строки, считываемые автоматом;

δ — заданное отображение множества во множество подмножеств Q:

(иногда δ называют функцией переходов автомата).

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

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

Автомат с магазинной памятью — это конечный автомат, который использует стек для хранения состояний.

В отличие от конечных автоматов, автомат с магазинной памятью является набором:

 где

K — конечное множество состояний автомата

 — единственно допустимое начальное состояние автомата

 — множество конечных состояний, причём допустимо F=Ø, и F=K

Σ — допустимый входной алфавит, из которого формируются строки, считываемые автоматом

S — алфавит памяти (магазина)

 — нулевой символ памяти.

Память работает как стек, то есть для чтения доступен последний записанный в неё элемент.

Автомат с магазинной памятью может распознать любой контекстно-свободный язык.

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