Baixe o app para aproveitar ainda mais
Prévia do material em texto
TRABALHO PRÁTICO II – PRÁTICA DE ENSINO DE COMPUTABILIDADE DATA DE ENTREGA: 13/06/2014 OBS: O TRABALHO PODERÁ SER REALIZADO EM GRUPO OU INDIVIDUAL CÓPIAS DE TRABALHO SERÁ ATRIBUIDA NOTA ZERO O TRABALHO DEVERÁ CONTER A DESCRIÇÃO DA ESTRUTURA DE DADOS UTILIZADA. PARA SABER MAIS SOBRE SOMADOR E SUBTRATOR CONSULTAR O LIVRO DE ARQUITETURA DE COMPUTADORES. Problema: ( Autômatos Finitos Determinísticos ) Seja um AFD M = ( V, , , I, F ). V é o conjunto dos estados. é o alfabeto. é a função de transição de estado . I é o estado inicial e F o conjunto de estados de aceitação. Elabore um programa em QUALQUER LINGUAGEM DE PROGRAMAÇÃO que utilize o conceito de AFD desenvolvido em classe para criação de uma máquina de estado finito que leia um conjunto de entrada e um símbolo representando a operação matemática ( S – Somador, M - Subtrator ). Retornando o resultado da operação através da saída de seu estado. (OBS: o resultado fornecido pela AFD deve ser interpretado através do bit menos significativo até o mais significativo. Cada conjunto de entrada é formado por dois bits, sendo o primeiro representa o bit do primeiro número e o segundo representa o bit do segundo número, que dever ser somado). Descrição: Os dados de entrada devem ser lidos do teclado. Na primeira linha o número de operações. Para cada operação temos uma letra que representa a operação e a linha seguinte estão os conjuntos de bits. Exemplo: 2 – número de operações (somador e subtrator) S - somador M - subtrator Implementação: Desenvolva duas funções, uma para o somador e outra para subtrator que recebe um conjunto de bits para a soma ou subtração. Esta função recebe o conjunto de bits e muda as transições do AFD que gera uma saída a cada transição. Os valores somados em bits e o resultado fornecido pelo AFD. (obs: Utilize uma pilha para guardar estes bits para facilitar em sua representação) Saida: A saída do programa deve conter o tipo de operação, os valores utilizados para operação e seu resultado escrito na tela. Exemplo Operação Somador Entrada: 0111 + 1101 0 1 1 1 + 1 1 0 1 ------------ 1 0 1 0 0 O que entregar para avaliação: Relatório com a descrição do problema, implementação dos AFD. Programa fonte e o executável em cd. Script da saída, utilizando o arquivo de teste disponível abaixo. ******** SUBTRATOR ********* 1 1 1 0 1 1 1 1 1 1 1 1 0 0 --------------------- Colocar o resultado da operação aqui. ********* SOMADOR ********* 1 1 1 0 1 1 0 1 1 0 0 0 1 1 -------------------- Colocar o resultado da operação aqui. ********* SOMADOR ********* 1 1 1 1 1 1 1 1 1 1 -------------------- Colocar o resultado da operação aqui. ******** SUBTRATOR ********* 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --------------------- Colocar o resultado da operação aqui. ********* SOMADOR ********* 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -------------------- Colocar o resultado da operação aqui. ******** SUBTRATOR ********* 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 --------------------- Colocar o resultado da operação aqui. ********* SOMADOR ********* 1 1 1 1 -------------------- Colocar o resultado da operação aqui. ******** SUBTRATOR ********* 1 0 0 0 1 1 --------------------- Colocar o resultado da operação aqui. ******** SUBTRATOR ********* 0 0 0 1 1 1 --------------------- Colocar o resultado da operação aqui. ******** SUBTRATOR ********* 0 0 0 0 1 1 1 1 --------------------- Colocar o resultado da operação aqui. ********* SOMADOR ********* 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 -------------------- Colocar o resultado da operação aqui. ******** SUBTRATOR ********* 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 --------------------- Colocar o resultado da operação aqui. ******** SUBTRATOR ********* 0 1 --------------------- Colocar o resultado da operação aqui. ********* SOMADOR ********* 1 1 -------------------- Colocar o resultado da operação aqui. ******** SUBTRATOR ********* 1 1 --------------------- Colocar o resultado da operação aqui. http://robolivre.org/conteudo/maquina-de-estados-finitos http://www.academia.edu/2543590/Implementando_Automatos_Finitos_em_Java
Compartilhar