/*Rodrigo Fernando da Luz*/
/*Faculdades SPEI*/
#include <conio.h>
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
/*..........................................................................*/
/* Estados -> 0 1 2 3 4 5 6 */
/* 1 0 0 0 0 0 1 */
/*..........................................................................*/
int numero;
int i,e;//contador //
int *ponteiro; //ponteiro em um vetor //
main()
{
printf("..............................................................\n\n");
printf ("\t(1)- Entrar no programa Maquina de estados!\n");
printf ("\t(2)- Sair do programa!\n\n");
printf("..............................................................\n\n");
printf ("\tEscolha uma opcao: ");
scanf ("%d", &e);
while ((e<1)||(e>2));//Condição do menu//
switch (e){
case 1://Entra no programa do menu.//
ponteiro= (int*) malloc( numero *sizeof(int));//Atribui valor ao ponteiro//
int estado = 1;
printf("\n _____________________________________________________\n\n");
printf("\nDIGITE O TAMANHO DO VETOR :\n\n ");
printf("\n _____________________________________________________\n\n");
scanf("%d", &numero);
/* Será digitado os valores da fita somente com o numero um(1) e varios
zeros(0), para termino na última a POSIÇÃO coloque (1).*/
printf("Digite somente [1] ou [0]!\n\n");
for(i=0;i<numero;i++) {
printf("[(FITA):] [%d] ", i + 1);
scanf("%d", &ponteiro [i]); //Irá ler o valor do vetor em um ponteiro//
}
while(estado < 6) {//6 ESTADOS O PONTEIRO VAR LER.//
switch (estado) {
case 1:
if (*ponteiro == 1) {//PROCURA PONTEIRO igual estado 1//
*ponteiro = 1;
estado = 2;
printf("%d",*ponteiro);
}
break;
case 2:
if(*ponteiro == 0) {
//PROCURA PONTEIRO igual estado 0//
*ponteiro = 0;
estado = 2;
printf("%d",*ponteiro);
} else {
*ponteiro = 0;
estado = 3;
printf("%d",*ponteiro);
}
break;
case 3:
if(*ponteiro == 0) { //PROCURA PONTEIRO igual estado 1//
*ponteiro = 0;
estado = 3;
printf("%d",*ponteiro);
} else {
*ponteiro = 1;
estado = 4;
printf("%d");
printf("%d",*ponteiro);
printf("%d",*ponteiro);
}
break;
}
if ( estado <= 4) {//ponteiro esta na posição 0 no estado 4!//
//inverte ponteiro a direita e a esquerda//
ponteiro++;//INCREMENTO A DIREITA//
} else {
ponteiro--; //DECREMENTO A ESQUERDA//
*ponteiro = 1;
estado = 5; //PROCURA DIGITO 0 EM SUBSTITUE POR 1//
printf("%d", *ponteiro);/*Alocar valor do estado 5*/
estado = 6; /*fecha o programa*/
printf("\n\n"); //stop//
break;
}
}
break;
case 2://Sai do menu do programa//
printf (" \tSair do programa MAQUINA DE ESTADOS!\n\n");
break;
}
system("PAUSE");
}
A máquina de Turing é um dispositivo teórico conhecido como máquina universal, que foi concebido pelo matemático britânico Alan Turing (1912-1954), muitos anos antes de existirem os modernos computadores digitais (o artigo de referência foi publicado em 1936). Num sentido preciso, é um modelo abstrato de um computador, que se restringe apenas aos aspectos lógicos do seu funcionamento (memória, estados e transições) e não à sua implementação física. Numa máquina de Turing pode-se modelar qualquer computador digital.
ResponderExcluirTuring também se envolveu na construção de máquinas físicas para quebrar os códigos secretos das comunicações alemãs durante a II Guerra Mundial, tendo utilizado alguns dos conceitos teóricos desenvolvidos para o seu modelo de computador universal.