- •Понятие формального языка. Описание синтаксиса языка.
- •Понятия тестирования и отладки. Принципы тестирования.
- •Полнота тестирования. Критерии черного ящика.
- •Критерии белого ящика.
- •Мгт. Ошибкоопасные ситуации при работе с файлами.
- •Ошибкоопасные ситуации при обращении к данным.
- •Ошибкоопасные ситуации при вычислениях.
- •Ошибкоопасные ситуации при передаче управления и вызовах подпрограмм.
- •Безмашинное тестирование.
- •Оценка количества ошибок в программе.
- •Мера доверия к миллсовой модели оценки количества ошибок в программе. Оценка количества необходимых тестов.
- •Отладка. Отладочные операторы.
- •Методы поиска ошибки. Принципы отладки. Анализ обнаруженной ошибки.
- •Отладочные средства авс-Паскаля.
- •Нисходящее программирование. Нисходящее тестирование.
- •Стиль программирования
- •Понятие алгоритма. Свойства алгоритма.
- •Операторы Паскаля
- •Замкнутые подпрограммы.
- •Открытые подпрограммы.
- •Передача параметров.
- •Рекурсия.
- •Рекуррентные вычисления. Вычисления рекурсивные и итеративные. Реализация одного и того же алгоритма рекурсивно и итеративно.
- •Блочная структура.
- •Понятие типа данных. Классификация языков по типизации.
- •Классификация типов данных. Числовые типы.
- •Перечисления. Диапазоны.
- •Массивы.
- •Моделирование массивом последовательностей: стек.
- •Моделирование массивом последовательностей: очереди
- •Моделирование массивом последовательностей: деки
- •Записи. Присоединяющий оператор.
- •Файлы. Виды файлов. Методы доступа. Триада для работы с файлом.
- •Синхронизация. Буферизация. Блокирование.
- •Двоичные файлы в авс-Паскале.
- •Строки Тип string в авс Паскале.
- •Множества.
- •Процедурные типы.
- •1 ) Описание процедурной константы в Паскале:
- •2 ) Не в Паскале:
- •Типовая безопасность. Идентичность типов.
- •Абстракция данных. Модули в Турбо-Паскале и в авс-Паскале.
- •Подходы к созданию универсального языка программирования
- •Запись с вариантами
- •Классы памяти
- •Понятие конечного автомата и мп-автомата
- •Понятие Машины Тьюринга, нормальных алгоритмов Маркова
Классы памяти
Операции – выделение и освобождение памяти
Характеризует время выделения и освобождения памяти под данные
1) автоматический класс памяти
Блочная структура – память виртуальной машины разбита на участки с указанием имени и типа, при входе в блок выделяется память в стеке под все локальные переменные
2) статический класс памяти
Память выделяется при запуске программы и освобождается при выходе
Если в Паскаль добавить понятие класс памяти:
Procedure P;
Var x automatic;
Var y static;
Begin
x:=x+1;
y:=y+1;
End;
При входе в процедуру создается участок памяти в стеке для х, при выходе из процедуры он уничтожается и данные теряются.
Память под у выделена не в стеке, при входе в процедуру мы берем «предыдущее» значение, после выхода из процедуры у сохраняет свое значение.
То, что под у выделена память, не означает, что она видна везде (правило видимости)
Проблема: как инициализировать статические переменные? – в главной программе? Разделять первые и последующие вызовы процедуры?
Понятие конечного автомата и мп-автомата
Конечный автомат — абстрактный автомат без выходного потока, число возможных состояний которого конечно. Результат работы автомата определяется по его конечному состоянию.
Существуют различные варианты задания конечного автомата. Например, конечный автомат может быть задан с помощью пяти параметров:
Q — конечное множество состояний автомата;
q0 — начальное состояние автомата ();
F — множество заключительных (или допускающих) состояний
Σ — допустимый входной алфавит (конечное множество допустимых входных символов), из которого формируются строки, считываемые автоматом;
δ — заданное отображение множества во множество подмножеств Q:
(иногда δ называют функцией переходов автомата).
Автомат начинает работу в состоянии q0, считывая по одному символу входной строки. Считанный символ переводит автомат в новое состояние из Q в соответствии с функцией переходов. Если по завершении считывания входного слова (цепочки символов) автомат оказывается в одном из допускающих состояний, то слово «принимается» автоматом. В этом случае говорят, что оно принадлежит языку данного автомата. В противном случае слово «отвергается».
Конечные автоматы широко используются на практике, например в синтаксических, лексических анализаторах, и тестировании программного обеспечения на основе моделей.
Автомат с магазинной памятью — это конечный автомат, который использует стек для хранения состояний.
В отличие от конечных автоматов, автомат с магазинной памятью является набором:
где
K — конечное множество состояний автомата
— единственно допустимое начальное состояние автомата
— множество конечных состояний, причём допустимо F=Ø, и F=K
Σ — допустимый входной алфавит, из которого формируются строки, считываемые автоматом
S — алфавит памяти (магазина)
— нулевой символ памяти.
Память работает как стек, то есть для чтения доступен последний записанный в неё элемент.
Автомат с магазинной памятью может распознать любой контекстно-свободный язык.
В чистом виде автоматы с магазинной памятью используются крайне редко. Обычно это модель используется для наглядного представления отличия обычных конечных автоматов от синтаксических грамматик. Реализация автоматов с магазинной памятью отличается от конечных автоматов тем, что текущее состояние автомата сильно зависит от любого предыдущего.