一.实验目的
- 掌握图灵机的概念和基本结构,理解图灵机的基本指令和编码方式;
- 掌握图灵机的编程方法。
二.实验内容
对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。
三.流程图
源代码
package 作业;
import java.util.*;
public class 作业 {
public static void main (String[] args)
{
int s=0;
int [] str= {0,1,0,1,0,1,1,0,0,0};//对字符串进行赋值
int temp=0;//内态初始值为0
for(int i=0;i<9;i++)//利用循环对字符串进行操作
{
s=s+1;//判断字符运行到第几次
if(str[i]==0&temp==0)//执行00->00
{
str[i]=0;
temp=0;
for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
{
System.out.print(+str[k]);
}
System.out.println("此时第"+s+"位发生变化");
continue;//跳出当前循环
}
if(str[i]==1&temp==0)//执行01->10
{
str[i]=0;
temp=1;
for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
{
System.out.print(+str[k]);
}
System.out.println("此时第"+s+"位发生变化");
continue;
}
if(str[i]==0&temp==1)//执行10->01
{
str[i]=1;
temp=0;
for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
{
System.out.print(+str[k]);
}
System.out.println("此时第"+s+"位发生变化");
continue;
}
if(str[i]==1&temp==1)//执行11->10 0
{
temp=10;
str[i]=0;
for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
{
System.out.print(+str[k]);
}
System.out.println("此时第"+s+"位发生变化");
continue;
}
if(str[i]==0&temp==10)//执行10 0->11 1
{
str[i]=1;
temp=11;
for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
{
System.out.print(+str[k]);
}
System.out.println("此时第"+s+"位发生变化");
continue;
}
if(str[i]==0&temp==11)//执行11 0->01
{
str[i]=1;
temp=0;for(int k=0;k<str.length;k++)//将每一个字符串变化的过程输出
{
System.out.print(+str[k]);
}
System.out.println("此时第"+s+"位发生变化");
break;//步骤结束跳出循环
}
}
System.out.print("经过运算的结果为:");//输出最终结果
for(int k=0;k<str.length;k++)
{
System.out.print(+str[k]);
}
}
}
四.测试图片