Лаб 1 ИТ. Отчет Лаб 1. Лабораторная работа 1 Создание имитационных моделей абстрактных автоматов Тьюринга и Маркова средствами Excel ms office. Копылов И. О
![]()
|
1 2 B18=ЕСЛИ( D16=2;"конец";ЕСЛИ(D16;ЕСЛИ(C16=1;СУММ(B18;1);B18);"начало")) – ячейка, которая считает шаги выполнения работающей программы, до ее запуска выводит значение «начало», а по окончании действия «конец». C16=ЕСЛИ(D16;ЕСЛИ(C16=4;1;C16+1);1) – счетчик тактов, в каждый шаг входит 4 такта работы, на основании показаний этой ячейки изменяются значения рабочих ячеек машины. D16=ЕСЛИ(B16;ЕСЛИ(МАКС(B29:T29)>МАКС($A$3:$A$14);2;B16);) – управляющая ячейка, позволяющая вовремя остановить программу и не допустить ее зацикливания. B28(:T28)=ЕСЛИ($D$16=2;B28;ЕСЛИ($D$16;ЕСЛИ($C$16=3;B27;B28);B27)) – непосредственно рабочая лента машины. B29(:T29)=ЕСЛИ($D$16=2;B29;ЕСЛИ($D$16=1;ЕСЛИ($C$16=2;ЕСЛИ(A26=1;A25;ЕСЛИ(C26=-1;C25;));B29);B22)) – непосредственно головка машины. Рекомендации по оптимизации. В связи с тем, что исходные данные для работы программы могут быть введены некорректно, можно предусмотреть этот шаг и в ячейке, считающей шаги программы, дописать формулу для выведения соответствующего сообщения «ошибка в вводных данных». Так как суть алгоритма сводится к одному и тому же действию с разными переменными (в зависимости от символа, стоящего в начале заданного слова), можно увеличить количество символов в Алфавите и дописать в соответствующем виде таблицу и алгоритм ее работы для новых символов. НАМ.
! Если в слове Р НАМ встречает ba, то меняет его на ab, cb на bc, ca на ac; по окончании этих преобразований НАМ добавляет в начало слова символ %, который позже переносит в конец, а там заменяет его на пустой, тем самым заканчивая программу. F2=ЕСЛИ($G$2;ЕСЛИ(СЧЁТЕСЛИ(F10:F40;"Конечное слово");"конец";"начало");"1--> старт") – ячейка текущего состояния программы. H2=ЕСЛИ(G2;ЕСЛИ(H2=100;1;H2+1);0) – счетчик шагов. F11(:F25)=ЕСЛИ($H$2>=СЧЁТЗ($F$11:F11);ЕСЛИ(G10=1;"Конечное слово";ЕСЛИ(ЕЧИСЛО(ПОИСК($B$2;F10;1));ЗАМЕНИТЬ(F10;ПОИСК($B$2;F10;1);ДЛСТР($B$2);$C$2);ЕСЛИ(ЕЧИСЛО(ПОИСК($B$3;F10;1));ЗАМЕНИТЬ(F10;ПОИСК($B$3;F10;1);ДЛСТР($B$3);$C$3);ЕСЛИ(ЕЧИСЛО(ПОИСК($B$4;F10;1));ЗАМЕНИТЬ(F10;ПОИСК($B$4;F10;1);ДЛСТР($B$4);$C$4);ЕСЛИ(ЕЧИСЛО(ПОИСК($B$5;F10;1));ЗАМЕНИТЬ(F10;ПОИСК($B$5;F10;1);ДЛСТР($B$5);$C$5);"Конечное слово")))));"") – непосредственно рабочая часть алгоритма, пошагово выполняющая изменение исходного слова в соответствии с таблицей, если в предыдущей ячейке (выше) получено конечное слово, то ячейка принимает соответствующее значение «Конечное слово». E11(:E25) =ЕСЛИ($H$2>=1;"шаг " & ЕСЛИ(ЕПУСТО(F11);"";СЧЁТЗ($F$11:F11));"") – показатель шагов. Рекомендации по оптимизации. В связи с тем, что исходные данные для работы программы могут быть введены некорректно, можно предусмотреть этот шаг и в ячейке текущего состояния программы дописать формулу для выведения соответствующего сообщения «ошибка в вводных данных». Так как суть алгоритма сводится к одному и тому же действию с разными переменными (в алфавитном порядке), можно увеличить количество символов в Алфавите и дописать в соответствующем виде таблицу и алгоритм ее работы для новых символов. 1 2 |