Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архив1 / docx54 / отчет1 (2)

.docx
Скачиваний:
26
Добавлен:
01.08.2013
Размер:
244.29 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ

Чорноморський державний університет імені Петра Могили

Факультет комп’ютерних наук

Кафедра інтелектуальних інформаційних систем

ЗВІТ

з лабораторної роботи №1

Побудова машини Тюрінга

Дисципліна “Теорія алгоритмів та математична логіка”

Спеціальність “Інтелектуальні системи прийняття рішень”

6.050101–ЛР.ПЗ.01–303.2910302

Студент___________К.О.Баранов

(підпис)

____________

(дата)

Викладач___________Д.О.Назаренко

(підпис)

____________

(дата)

Миколаїв – 2012

Варіант 1

Побудувати машину Тюрінга, що обчислює функцію . Описати систему команд та алгоритм.

Варiант

1

7

8

12

Блок- схема алгоритму:

Зчитування першого символу

Знаходження знака “+” та його прибирання

Перехід на кінець першого числа та додавання до нього “1”

Знаходження знака “-” та його прибирання

Перехід на кінець першого числа та прибирання “1”

Знаходження “.”

Кінець програми

Перехід до першого елемента другого числа та його прибирання

Перехід до першого елементу третього числа та його прибирання

Лістинг програми:

public class Lab1 {

static void turing(char[] tape) {

int state = 0;

int currentposition = 0;

char currentsymbol;

boolean flag;

while (state != 6) {

flag = false;

currentsymbol = tape[currentposition];

switch (state) {

case 0:

switch (currentsymbol) {

case '1':

currentposition++;

break;

case '+':

tape[currentposition] = ' ';

currentposition++;

state = 1;

flag = true;

break;

case '.':

state = 6;

break;

} break;

case 1:

switch (currentsymbol) {

case '1':

tape[currentposition] = ' ';

currentposition--;

state = 2;

break;

case '-':

tape[currentposition] = ' ';

currentposition++;

state = 4;

flag = true;

break;

case '.':

state = 6;

break;

case ' ':

currentposition++;

break;

}break;

case 2:

switch (currentsymbol) {

case '1':

currentposition++;

state = 3;

break;

case ' ':

currentposition--;

break;

case '.':

state = 6;

break;

}break;

case 3:

switch (currentsymbol) {

case ' ':

tape[currentposition] = '1';

currentposition++;

state = 1;

flag=true;

break;

case '.':

state = 6;

break;

}break;

case 4:

switch (currentsymbol) {

case '1':

tape[currentposition] = ' ';

currentposition--;

state = 5;

break;

case ' ':

currentposition++;

break;

case '.':

state = 6;

break;

}break;

case 5:

switch (currentsymbol) {

case '1':

tape[currentposition] = ' ';

currentposition++;

state = 4;

flag = true;

break;

case ' ':

currentposition--;

break;

case '.':

state = 6;

break;

}break;

}

if (flag) {

System.out.println(tape);

}

}

}

public static void main(String[] args) {

char[] tape = {'1', '1', '1', '1', '1', '1', '1', '+', '1','1', '1', '1', '1', '1', '1', '1', '-', '1', '1', '1', '1', '1','1', '1', '1', '1', '1', '1', '1', '.'};

System.out.println(tape);

turing(tape);

}

}

Соседние файлы в папке docx54