Программный эмулятор машины Тьюринга от Никитина А. Е. представляет собой приложение, написанное на Delphi, с оконным дизайном, управляемым кнопками.
В линейке основного меню основным пунктом является меню File. Оно имеет следующие команды:
Load– позволяет загрузить программу из файла с расширением .tmp, содержимое ленты из файла с расширением .tmt в программу эмулятора.
Save – позволяет сохранить текущую активную программу (последовательность пятерок команд машины Тьюринга) или содержимое ленты.
Options – открывает окно диалога, в котором можно задать список заключителных состояний; состояния из этого списка отделяются “;” стартовое состояние – двухсимвольная комбинация, начинающаяся с заглавной латинской буквы, за которой идет латинская буква или цифра.
Меню Interpretator имеет всего две команды:
Enable – активировать режим интерпретации для выполнения текущей программы (в этом режиме нельзя редактировать команды программы или изменять содержимое ленты);
Disable – перевод эмулятора в пассивный режим, в котором возможно изменение команд программы или содержимого ленты.
В рабочей области эмулятора слева направо расположены следующие панели:
Program – панель имеет следующие элементы:
1. Слева – нередактируемый список команд машины Тьюринга – текущая программа;
2. Вверху справа – поле ввода/редактирования одной команды – пятерки из следующих элементов:
Qтек (Sтек , Sнов) Qнов | D ,
где Qтек — имя текущего состояния (двухсимвольная комбинация, начинающаяся с заглавной латинской буквы, за которой идет латинская буква или цифра), Qнов — имя состояния, в которое машина Тьюринга перейдет в следующий такт работы,
Sтек – текущий символ, считываемый с ленты, произвольный одиночный символ,
Sнов — символ, который головка машины Тьюринга записывает вместо текущего символа, т.е. это новый символ вместо текущего, произвольный одиночный символ,
D – движение головки по ленте: L- сдвиг влево, R — сдвиг вправо (т.е. единственными символами после | могут быть только L или R);
3. Ниже поля ввода находится кнопка Add, тогда, если в поле ввода записана корректная команда, тогда она добавляется в список команд (программа эмулятора автоматически упорядочивает команды списка). Если команда в поле редактирования записана неправильно, то ее можно стереть клавишей ESC. Список команд считается неправильным, если есть несколько команд, с одинаковыми парами Qтек Sтек . Программа считается неполной, если не для всех комбинаций Qтек Sтек определены команды;
4. Если какая-то команда в списке команд оказалась некорректной, то ее следует выделить и по кнопке Editкоманда переносится в поле редактирования. После изменения текста команды ее можно снова добавиь в список кнопкой Add;
5. Можно стереть команду из списка кнопкой Delete, после ее выделения в списке;
6. Кнопка Resetстирает список всех команд в поле текста программы, а также все содержимое ленты.
Interpretator – панель управления интерпретатором имеет следующие кнопки:
1. Enable Interpretator – включить режим интерпретации команд, заданных в списке команд;
2. Run – запустить программу на выполнение;
3. Step ? запустить программу на выполнение в пошаговом режиме;
4. Stop – остановить выполнение программы;
Панель имеет два нередактируемых поля:
State – показывает текущее состояние;
Symbol – показывает текущий считываемый символ.
В нижней части рабочей области эмулятора располагается панель лент. Верхняя лента отслеживает позицию головки машины Тьюринга. Однако головка не может сдвинуться влево или вправо за пределы окна ленты. В начале работы головка всегда занимает крайнее левое положение, читая символ @. Таким образом лента в этом эмуляторе не может расти за пределы отведенного ей размера. Средняя лента показывает измененное в результате выполнения команд содержимое и ,в частности, результат выполнения.
Нижняя лента показывает исходное (начальное) слово. Следует отметить, что в эмуляторе предполагается в качестве самого левого символа на ленте (который читается головкой) символ @. Этот символ допускается и в других клетках ленты или в последующие такты работы. Кроме того, в команде Options меню File можно указать список состояний, при которых машина Тьюринга останавливается (стоповые состояния, если их несколько, отделяются друг от друга символом “;”). Эмулятор также останавливается (с выдачей окна диалога диагностики), если для текущей конфигурации (Состояние, Символ) в программе нет команды, указующей действия для такой пары.