UNIVERSIDADE DO VALE DO ITAJAÍ PAULO ROBERTO LIMA

Tamanho: px
Começar a partir da página:

Download "UNIVERSIDADE DO VALE DO ITAJAÍ PAULO ROBERTO LIMA"

Transcrição

1 UNIVERSIDADE DO VALE DO ITAJAÍ PAULO ROBERTO LIMA UM SOFTWARE EDUCACIONAL PARA CONSTRUÇÃO E VALIDAÇÃO DE FORMALISMOS UTILIZADOS NA GERAÇÃO E RECONHECIMENTO DE SENTENÇAS DE UMA LINGUAGEM REGULAR São José 2006

2 2 PAULO ROBERTO LIMA UM SOFTWARE EDUCACIONAL PARA CONSTRUÇÃO E VALIDAÇÃO DE FORMALISMOS UTILIZADOS NA GERAÇÃO E RECONHECIMENTO DE SENTENÇAS DE UMA LINGUAGEM REGULAR Trabalho elaborado para obtenção de conceito na disciplina Trabalho de Conclusão de Curso, do curso de Bacharelado em Ciência da Computação da UNIVALI São José. PROF. M.ENG. ALESSANDRO MUELLER São José 2006

3 3 PAULO ROBERTO LIMA UM SOFTWARE EDUCACIONAL PARA CONSTRUÇÃO E VALIDAÇÃO DE FORMALISMOS UTILIZADOS NA GERAÇÃO E RECONHECIMENTO DE SENTENÇAS DE UMA LINGUAGEM REGULAR Este Trabalho de Conclusão de Curso foi julgado adequado para obtenção do título de Bacharel em Ciência da Computação e aprovado pelo Curso de Ciência da Computação, da Universidade do Vale do Itajaí (SC), Centro de Educação São José. São José, 14 de dezembro de Apresentada à Banca Examinadora formada pelos professores: Prof. M.Eng. Alessandro Mueller Orientador Prof. Msc. Paulo Roberto Riccioni Gonçalves, membro da banca examinadora. Prof. Esp. Marlise There Dias, membro da banca examinadora.

4 4 AGRADECIMENTOS Agradeço a Deus pelo dom da vida e por estar sempre presente ao longo deste caminho e de minha vida. Aos meus pais, Paulo e Gislaine, por todo amor e carinho, pelas palavras de conforto nas horas de dificuldade e pelo incentivo sempre dado, por tudo o que abriram mão na vida para hoje eu estar aqui. Amo vocês. A minha amada Ana Paula, por estar sempre ao meu lado apoiando ou criticando, por ter mudado tanto minha vida quando nela entrou, por ser uma grande companheira. Hoje posso dizer que sou uma pessoa bem melhor e devo isto a você. Te amo muito. Sempre. A minhas irmãs Michele e Monique, por estarem sempre tentando ajudar de alguma maneira, e agora longe continuam tentando. Saudades. À minha grande amiga Josiane, a quem devo muito esse trabalho. Não sei como te agradecer. Por fim a todos os amigos que de alguma forma contribuíram para conclusão deste trabalho.

5 5 Nosso medo mais profundo não é sermos incapazes. Nosso medo mais profundo é termos poder demais. É nossa luz, não nossa escuridão que mais nos assusta. Jogar pouco não agrada ao mundo. Não há nada de luminoso em se diminuir para que outras pessoas não se sintam inseguras à sua volta. Fomos todos feitos para brilhar como as crianças. Não está só em alguns de nós, está em todos. E ao deixarmos nossa própria luz brilhar inconscientemente permitimos que outros façam o mesmo. Já que nos livramos de nosso próprio medo nossa presença automaticamente liberta outros. (Autor Desconhecido)

6 6 RESUMO A Teoria de Linguagens Formais disponibiliza um conjunto de formalismos que podem ser utilizados para especificação e reconhecimento de sentenças de uma linguagem de programação. Os Autômatos Finitos são formalismos usualmente empregados na implementação da etapa inicial de construção de um compilador a análise léxica, responsável pela identificação e classificação das unidades léxicas e o tratamento de erros léxicos. Os Autômatos Finitos podem ser classificados em Autômatos Finitos Determinísticos, em Autômatos Finitos Não- Determinísticos e em Autômatos Finitos Não-Determinísticos com Movimento Vazio. Uma expressão Regular é um dispositivo formal denotacional de uma Linguagem Regular. Neste trabalho foi desenvolvido um software educacional para construção e validação de formalismos utilizados na geração e reconhecimento de sentenças de uma Linguagem Regular, permitindo a construção de Autômatos Finitos e a conversão de Autômatos Finitos Não-Determinísticos com Movimento Vazio para Autômatos Finitos Não-Determinísticos, de Autômatos Finitos Não- Determinísticos para Autômatos Finitos Determinísticos e de Autômatos Finitos Determinísticos para Autômatos Finitos Determinísticos Mínimos, assim como o reconhecimento de sentenças. Foi utilizada a linguagem de programação Object Pascal no ambiente de programação do Borland Delphi 7, além de fontes documentais e fontes bibliográficas. O software desenvolvido será utilizado como apoio no aprendizado de formalismos de uma Linguagem Regular na disciplina de Linguagens Formais e Compiladores dos cursos de Ciência da Computação e Engenharia da Computação da Universidade do Vale do Itajaí UNIVALI, campus São José. Palavras Chaves: Linguagem Regular, Autômato Finito, Expressão Regular.

7 7 ABSTRACT The Theory of Formal Languages makes available a group of formalisms that they can be used for specification and recognition of sentences of a programming language. The Finite Automatons are formalisms usually employed in the implementation of the initial stage of a compiler's construction. The lexical analysis, responsible for the identification and classification of the lexical units and the treatment of lexical mistakes. The Finite Automatons can be classified in Finite Automatons Deterministics, in Finite Automatons Non Deterministics and in Finite Automatons Non Deterministics with Empty Movement. A Regular expression is a device formal denote of a Regular Language. In this work a education software was developed for construction and validation of formalisms used in the generation and recognition of sentences of a Regular Language, allowing the construction of Finite Automatons and the conversion of Finite Automatons Non Deterministics with Empty Movement for Finite Automatons Non Deterministics, of Finite Automatons Non Deterministics for Finite Automatons Deterministics and of Finite Automatons Deterministics for Finite Automatons Deterministics Minimum, as well as the recognition of sentences. The programming language Object Pascal was used in the atmosphere of programming of Borland Delphi 7, besides documental sources and bibliographical sources. The developed tool will be used as support in the learning of formalisms of a Regular Language in the discipline of Formal Languages and Compilers of the courses of Science of the Computation and Engineering of the Computation of the University of the valley of Itajaí. UNIVALI, campus São José. Key Words: Regular Language, Finite Automatons, Regular Expression.

8 8 FIGURAS Figura 1: Hierarquia de Chomsky...17 Figura 2: Autômato Finito como uma máquina com controle finito...20 Figura 3: exemplo de uma máquina de estados...20 Figura 4: tabela de transição para o exemplo da Figura Figura 5: diagrama de transição de um Autômato Finito Determinístico...24 Figura 6: tabela de transição de um Autômato Finito Determinístico...24 Figura 7: diagrama de transição de um Autômato Finito Não-Determinístico...26 Figura 8: tabela de transição de um Autômato Finito Não-Determinístico...26 Figura 9: diagrama de transição de um Autômato Finito Não-Determinístico com Movimento Vazio...28 Figura 10: tabela de transição de um Autômato Finito Não-Determinístico com Movimento Vazio...28 Figura 11: Autômato Finito Não-Determinístico com Movimento Vazio...30 Figura 12: Autômato Finito Não-Determinístico equivalente...30 Figura 13: Autômato Finito Determinístico equivalente...33 Figura 14: Diagrama de transição do Autômato Finito Determinístico...35 Figura 15: Tabela de transição do Autômato Finito Determinístico com identificação dos estados acessíveis..35 Figura 16: Tabela de transição do Autômato Finito Determinístico sem os estados inacessíveis...36 Figura 17: Tabela de transição do Autômato Finito Determinístico sem transições indefinidas...36 Figura 18: Tabela de equivalência de estados finais e não finais do Autômato Finito Determinístico...37 Figura 19: Tabela de conjuntos de equivalência (1 iteração)...38 Figura 20: Tabela de conjuntos de equivalência (2 iteração)...38 Figura 21: Tabela de transição do Autômato Finito Determinístico com identificação dos estados não mortos...39 Figura 22: Tabela de transição do Autômato Finito Determinístico sem estados mortos...39 Figura 23: Tabela de transição do Autômato Finito Determinístico Mínimo...40 Figura 24: Diagrama de transição do Autômato Finito Determinístico Mínimo...40 Figura 25: Leis algébricas das Expressões Regulares...42 Figura 26: Autômato Finito Não-Determinístico com Movimento Vazio com transição ε...45 Figura 27: Autômato Finito Não-Determinístico com Movimento Vazio com transição...45 Figura 28: Autômato Finito Não-Determinístico com Movimento Vazio resultante da união...46 Figura 30: Autômato Finito Não-Determinístico com Movimento Vazio resultante do fechamento...47 Figura 31: Autômato Finito para reconhecer a...47 Figura 32: Autômato Finito para reconhecer b...48 Figura 33: Autômato Finito Não-Determinístico com Movimento Vazio para reconhecer a b...48 Figura 34: Autômato Finito Não-Determinístico com Movimento Vazio para reconhecer (a b) *...49 Figura 35: Autômato Finito Não-Determinístico com Movimento Vazio para reconhecer (a b) * a...49 Figura 36: Caso de Uso Desenhar Autômato...54

9 9 Figura 37: Caso de Uso Imprimir...54 Figura 38: Caso de Uso Reconhecer Direto...55 Figura 39: Caso de Uso Reconhecer Passo a Passo...56 Figura 40: Caso de Uso Tipo de Autômato...57 Figura 41: Caso de Uso Converte AFNE para AFN...58 Figura 42: Caso de Uso Converte AFN para AFD...59 Figura 43: Caso de Uso Converte AFD para AFDM...60 Figura 44: Diagrama de Seqüência Imprimir...61 Figura 45: Diagrama de Seqüência Converter Autômato...61 Figura 46: Diagrama de Seqüência Reconhecer...62 Figura 47: Diagrama de Seqüência Tipo Autômato...62 Figura 48: Diagrama de Classe do Sistema...64 Figura 49: Reconhecimento de um Autômato Finito Não Determinístico com Movimento Vazio...68 Figura 50: Reconhecimento de um Autômato Finito Não Determinístico...69 Figura 51: Reconhecimento de um Autômato Finito Determinístico...69 Figura 52: Reconhecimento de uma sentença aceita de forma direta...70 Figura 53: Reconhecimento de uma sentença não aceita de forma direta...71 Figura 54: Reconhecimento de uma sentença aceita passo a passo...72 Figura 55: Reconhecimento de uma sentença não aceita passo a passo...73 Figura 56: Conversão de um AFN-ε em um AFN...74 Figura 57: Conversão de um AFN-ε em um AFN com Autômato de entrada errado...75 Figura 58: Conversão de um AFN em um AFD...76 Figura 59: Conversão de um AFN em um AFD com Autômato de entrada errado...76 Figura 60: Conversão de um AFD em um AFDm...77 Figura 61: Conversão de um AFD em um AFDm com Autômato de entrada errado...78

10 10 SUMÁRIO 1 INTRODUÇÃO CONTEXTUALIZAÇÃO PROBLEMA OBJETIVOS Objetivo geral Objetivos específicos Escopo e delimitação do trabalho RESULTADOS ESPERADOS JUSTIFICATIVA ASPECTOS METODOLÓGICOS Metodologia FUNDAMENTAÇÃO TEÓRICA LINGUAGENS FORMAIS E SUAS REPRESENTAÇÕES AUTÔMATO FINITO Autômatos Finitos Determinísticos Autômatos Finitos Não-Determinísticos Autômatos Finitos Não-Determinísticos com Movimento Vazio Autômatos Finitos Determinísticos Mínimos Equivalência dos autômatos finitos Equivalência entre um Autômato Finito Não-Determinístico e um Autômato Finito Não-Determinístico com Movimento Vazio Equivalência entre um Autômato Finito Não-Determinístico e um Autômato Finito Determinístico EXPRESSÃO REGULAR Propriedades das Expressões Regulares Simplificação de Expressões Regulares Definição Regular AUTÔMATO FINITO X EXPRESSÃO REGULAR Conversão de Expressões Regulares em Autômatos Finitos Conversão de Autômatos Finitos em Expressões Regulares Aplicações de Autômatos Finitos e Expressões Regulares DESENVOLVIMENTO DO SOFTWARE MODELAGEM Casos de Uso Diagramas de Seqüência...60

11 Diagrama de Classe IMPLEMENTAÇÃO Ambiente CONSIDERAÇÕES FINAIS REFERÊNCIAS BIBLIOGRAFICAS...81 APÊNDICE...83

12 12 1 INTRODUÇÃO 1.1 CONTEXTUALIZAÇÃO A Teoria de Linguagens Formais disponibiliza um conjunto de formalismos que podem ser utilizados na especificação e reconhecimento de sentenças de uma linguagem. De acordo com o lingüista Noam Chomsky, as linguagens podem ser hierarquizadas em Linguagens Regulares, Linguagens Livres de Contexto, Linguagens Sensíveis ao Contexto e Linguagens Enumeráveis Recursivamente ou Irrestritas, em ordem crescente de abrangência e complexidade. (MENEZES, 2002). Um reconhecedor é um sistema que a partir de um conjunto de símbolos que constituem a sentença, aceita ou rejeita a sentença como sendo ou não uma sentença válida para uma determinada linguagem. Os Autômatos Finitos são dispositivos formais utilizados no reconhecimento de sentenças de uma Linguagem Regular. (AHO; SETHI; ULLMAN, 1995). Os Autômatos Finitos podem ser classificados em Autômatos Finitos Determinísticos, em Autômatos Finitos Não-Determinísticos e em Autômatos Finitos Não-Determinísticos com Movimento Vazio, existindo uma equivalência de poder de reconhecimento entre os grupos de Autômatos Finitos. (AHO; SETHI; ULLMAN, 1995). Ainda, para qualquer Autômato Finito Não-Determinístico existe sempre outro Autômato Finito Determinístico que reconhece a mesma linguagem. (HOPCROFT; ULLMAN; MOTWANI, 2002). Toda Linguagem Regular pode ser descrita por uma expressão simples, denominada Expressão Regular. (AHO; SETHI; ULLMAN, 1995; HOPCROFT; ULLMAN; MOTWANI, 2002; MENEZES, 2002; PRICE; TOSCANI, 2001). As Expressões Regulares são formalismos denotacionais que estabelecem um modo declarativo descrição algébrica de representar sentenças de uma linguagem, sendo também consideradas dispositivos geradores, pois a partir de uma Expressão Regular é possível inferir como gerar sentenças de uma determinada linguagem. Uma Linguagem Regular pode ser denotada por uma ou mais Expressões Regulares. Apesar da abordagem de Expressão Regular para denotar linguagens ser fundamentalmente distinta da abordagem de Autômatos Finitos, estes dispositivos representam o mesmo conjunto de linguagens, as Linguagens Regulares. (HOPCROFT; ULLMAN; MOTWANI, 2002).

13 13 Dentro deste contexto, este trabalho procura fazer uma contribuição na geração e reconhecimento de sentenças de uma Linguagem Regular a partir dos formalismos de Expressão Regular e Autômato Finito. 1.2 PROBLEMA As Expressões Regulares e os Autômatos Finitos são formalismos usualmente empregados na implementação da etapa inicial de construção de um compilador a análise léxica, responsável pela identificação e classificação das unidades léxicas e o tratamento de erros léxicos. (AHO; SETHI; ULLMAN, 1995; JOSÉ NETO, 1987). Na análise léxica, os Autômatos Finitos são construídos a partir das especificações feitas com o uso das Expressões Regulares. Existe uma correspondência natural entre estes dispositivos, visto que toda linguagem aceita por um Autômato Finito é definida por uma Expressão Regular e toda linguagem denotada por uma Expressão Regular também é reconhecida por um Autômato Finito. (HOPCROFT; ULLMAN; MOTWANI, 2002). Os Autômatos Finitos Não-Determinísticos e os Autômatos Finitos Não-Determinísticos com Movimento Vazio são mais abrangentes e menos restritivos que os Autômatos Finitos Determinísticos. No entanto, exigem técnicas de backtracking quando de sua implementação, o que implica em um tempo maior para efetuar a análise da sentença. Os Autômatos Finitos Determinísticos em geral são mais difíceis de serem especificados, mas mais eficientes no reconhecimento de sentenças. (AHO; SETHI; ULLMAN, 1995; HOPCROFT; ULLMAN; MOTWANI, 2002). Todo Autômato Finito Não-Determinístico com Movimento Vazio pode ser convertido em um Autômato Finito Não-Determinístico e todo Autômato Finito Não-Determinístico pode ser convertido em um Autômato Finito Determinístico. Entretanto, o Autômato Finito Determinístico resultante dessa conversão pode apresentar um número consideravelmente maior de estados que o Autômato Finito Não-Determinístico equivalente, exigindo, portanto, mais espaço para sua representação. Contudo, também é possível, sempre, encontrar um Autômato Finito Determinístico Mínimo equivalente a qualquer Autômato Finito Determinístico, apresentando um número reduzido de estados e ainda assim reconhecendo as mesmas sentenças aceitas pelo Autômato Finito Determinístico.

14 OBJETIVOS Objetivo geral Desenvolver um software educacional para construção e validação de formalismos utilizados na geração e reconhecimento de sentenças de uma Linguagem Regular Objetivos específicos realizar um estudo sobre Autômatos Finitos e Expressão Regular, bem como as suas equivalências, conversões e algoritmos; realizar a modelagem do software; implementar e testar o software; estimular o aprendizado autônomo através de um aplicativo que possibilite a autoaprendizagem; assistir e servir de apoio aos alunos da disciplina de Linguagens Formais e Compiladores dos cursos de Ciência da Computação e Engenharia de Computação da Universidade do Vale do Itajaí UNIVALI, campus São José, na construção e validação dos formalismos utilizados para reconhecer e gerar sentenças de uma Linguagem Regular, complementando discussões e exercícios resolvidos em sala de aula Escopo e delimitação do trabalho Assim como os Autômatos Finitos e as Expressões Regulares, as Gramáticas Regulares são sistemas formais de uma Linguagem Regular. Através de uma Gramática Regular é possível obter um conjunto de sentenças de uma linguagem particular, sendo, portanto, um dispositivo gerador de sentenças. Este trabalho estabelece a elaboração de um software educacional que permita a construção de Autômatos Finitos e a conversão de Autômatos Finitos Não-Determinísticos com Movimento Vazio para Autômatos Finitos Não-Determinísticos, de Autômatos Finitos Não-Determinísticos para Autômatos Finitos Determinísticos e de Autômatos Finitos Determinísticos para Autômatos Finitos Determinísticos Mínimos. Através do software também será possível encontrar o

15 15 Autômato Finito equivalente a uma Expressão Regular qualquer, assim como reconhecer sentenças de uma Linguagem Regular. Não pertence ao escopo deste trabalho abordar o formalismo de Gramática Regular. 1.4 RESULTADOS ESPERADOS O desenvolvimento do trabalho possibilitará a especificação de uma Linguagem Regular através de Autômatos Finitos e Expressões Regulares com o uso de um software educacional. A expectativa com o uso sistematizado do software é que a aprendizagem da Teoria de Linguagens Formais, em particular dos formalismos de Linguagens Regulares, seja facilitada aos alunos e que o aplicativo possa ser uma complementação às discussões promovidas em sala de aula. Este trabalho apresenta ainda uma contribuição para a aplicação de uma prática pedagógica inovadora. 1.5 JUSTIFICATIVA Os formalismos de Expressão Regular e Autômatos Finitos são amplamente utilizados na construção de compiladores, em particular, na implementação do analisador léxico. Apesar de serem considerados dispositivos formais simples, o forte caráter matemático que os sustenta impõe resistência para o seu uso e se observa dificuldade para se fazer a sua validação. Em geral, não é fácil verificar se uma Expressão Regular tem um determinado Autômato Finito como correspondente ou se dado um Autômato Finito qualquer uma Expressão Regular o representa ou ainda se um Autômato Finito Determinístico é mínimo e equivalente a um Autômato Finito Não-Determinístico ou a um Autômato Finito Não-Determinístico com Movimento Vazio. Também para muitas situações é complexo diagnosticar se uma sentença pertence ou não à linguagem definida por uma Expressão Regular ou por um Autômato Finito. O desenvolvimento deste trabalho permitirá construir Autômatos Finitos e Expressões Regulares e validar os diferentes tipos de Autômatos Finitos (Autômatos Finitos Determinísticos, Autômatos Finitos Não-Determinísticos e Autômatos Finitos Não-Determinísticos com Movimento Vazio), possibilitando verificar se para uma dada Expressão Regular o correspondente Autômato Finito foi construído. As sentenças serão reconhecidas a partir de um Autômato Finito que representa uma Linguagem Regular particular.

16 16 Assim, com este trabalho será possível realizar a validação das especificações de uma linguagem de programação feitas através de Expressões Regulares e a subseqüente construção dos correspondentes Autômatos Finitos e a implementação de analisadores léxicos dos compiladores da disciplina de Linguagens Formais e Compiladores dos cursos de Ciência da Computação e Engenharia de Computação da Universidade do Vale do Itajaí UNIVALI, campus São José. 1.6 ASPECTOS METODOLÓGICOS Metodologia Cervo e Bervian (1996) estabelecem que em um trabalho de natureza aplicada o pesquisador busca uma solução mais imediata para o problema proposto. De acordo com Jung (2005), uma pesquisa que utiliza conhecimentos básicos, tecnologias existentes, conhecimentos tecnológicos e que tenha como objeto um novo produto ou processo é caracterizado como tecnológica. Tendo em vista que o trabalho proposto visa o desenvolvimento de um software educacional, o mesmo se adequa em um trabalho de natureza aplicada ou tecnológica. Ainda, Silva e Menezes (2000) afirmam que do ponto de vista do problema, o trabalho pode ser classificado como qualitativo, pois não serão utilizados métodos estatísticos como amostragem probabilística, amostragem não-probabilística entre outras. Considerando os objetivos definidos no trabalho, a pesquisa exploratória foi a que se mostrou mais adequada para o seu desenvolvimento. Como definem Cervo e Bervian (1996), a pesquisa exploratória não elabora hipóteses e sim se limita à definição de objetivos e a busca de informações sobre um determinado assunto, a qual se realiza através de fontes documentais e fontes bibliográficas.

17 17 2 FUNDAMENTAÇÃO TEÓRICA 2.1 LINGUAGENS FORMAIS E SUAS REPRESENTAÇÕES Entende-se por Teoria das Linguagens Formais e dos Autômatos o estudo de modelos matemáticos que possibilitam a especificação e o reconhecimento de linguagens 1 (no sentido amplo da palavra), suas classificações, estruturas, propriedades, características e inter-relacionamentos. (FURTADO, p.6). As Linguagens Formais são dispositivos com sustentação matemática baseadas na Teoria da Computação, usadas na especificação e representação de linguagens. A teoria das Linguagens Formais foi desenvolvida a partir dos anos 50 para possibilitar estudos relacionados com as linguagens naturais. No entanto, foi verificado que essa teoria tinha aplicação no estudo das linguagens artificiais, como em linguagens de programação. O lingüista Noam Chomsky apud (MENEZES, 2002) definiu uma classificação para as linguagens, conhecida como hierarquia de Chomsky conforme Figura 1. LINGUAGEM ENUMERÁVEL RECURSIVAMENTE LINGUAGEM SENSÍVEL AO CONTEXTO LINGUAGEM LIVRE DE CONTEXTO LINGUAGEM REGULAR Figura 1: Hierarquia de Chomsky Fonte: (MENEZES, 2002) 1 Uma linguagem é um conjunto de elementos (símbolos) e métodos (regras) para combinar estes elementos na formação de sentenças, usado e entendido por uma comunidade. As linguagens podem ser finitas ou infinitas. Uma linguagem finita pode ser definida pela enumeração das sentenças constituintes ou através de uma descrição algébrica. Uma linguagem infinita é definida com uma representação finita. Reconhecedores e geradores são representações finitas para linguagens. (WIKIPEDIA, 2005).

18 18 As Linguagens Regulares compreendem o conjunto de linguagens mais simples, sendo possível desenvolver algoritmos de reconhecimento ou geração de pouca complexidade, grande eficiência e de fácil implementação. (MENEZES, 2002, p.32). Essas linguagens podem ser denotadas por Expressões Regulares, reconhecidas por Autômatos Finitos e geradas através de Gramáticas Regulares. De acordo com HOPCROFT; ULLMAN; MOTWANI (2002), muitos problemas podem ser desenvolvidos mais facilmente a partir da especificação feita em termos de Expressões Regulares e a subseqüente transformação para o Autômato Finito correspondente. O desenvolvimento de analisadores léxicos, editores de texto, sistemas de pesquisa, linguagens de comunicação homem-máquina são algumas das possibilidades de aplicação dos formalismos das Linguagens Regulares. As Linguagens Livre de Contexto permitem a adequada especificação das estruturas sintáticas de linguagens de programação, visto que a maioria das linguagens de programação são classificadas como Linguagens Livre de Contexto e podem, portanto, ser geradas e reconhecidas através dos formalismos de Gramática Livre de Contexto e Autômato de Pilha, respectivamente. Assim, dentre as possíveis aplicações das Linguagens Livre de Contexto estão a especificação de linguagens de programação e a implementação de analisadores sintáticos e de tradutores de linguagens. As Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente permitem explorar os limites da capacidade de desenvolvimento de reconhecedores ou geradores de linguagens. Máquina de Turing com fita limitada e Gramática Sensível ao Contexto são os formalismos reconhecedores e geradores das Linguagens Sensíveis ao Contexto. As Linguagens Enumeráveis Recursivamente são geradas através de Gramáticas Enumeráveis Recursivamente e reconhecidas por Máquina de Turing. 2.2 AUTÔMATO FINITO Os Autômatos Finitos são dispositivos reconhecedores de grande importância na computação. Usualmente os Autômatos Finitos são utilizados na identificação, classificação das unidades léxicas ou tokens 2 e tratamento dos erros léxicos de uma linguagem e na implementação da parte 2 Um token é uma seqüência de caracteres com um significado coletivo (AHO; SETHI; ULLMAN, 1995). As palavras reservadas, os identificadores, as constantes numéricas e literais, os símbolos especiais e comentários são exemplos de unidades léxicas ou tokens.

19 19 inicial de um compilador a análise léxica. O analisador léxico é o componente responsável por obter as unidades mínimas significativas do programa-fonte (lexemas 3 ) que está sendo analisado e classificá-las apropriadamente. Nesta fase da análise, o programa é lido caractere a caractere e por isso, o desempenho de um analisador léxico tem impacto direto sobre o desempenho do compilador. (AHO; SETHI; ULLMAN, 1995; JOSÉ NETO, 1987). Segundo MENEZES (2002) um Autômato Finito pode ser visto como uma máquina de estados composta essencialmente de três partes (Figura 2): fita: dispositivo de entrada que contém a sentença 4 a ser analisada. A fita é finita à esquerda e à direita e divide-se em células onde cada célula armazena um símbolo 5, o qual pertence a um alfabeto 6 de entrada. A fita não permite gravação e nem possui memória auxiliar. Inicialmente a fita encontra-se totalmente ocupada pela palavra a ser processada (informação de entrada da máquina); unidade de controle: reflete o estado corrente da máquina e realiza seus movimentos. A leitura é realizada através da cabeça da fita, a qual acessa uma unidade da fita de cada vez, movimentando-se apenas para a direita. A posição inicial da cabeça de leitura é o mais a esquerda possível da fita. A unidade de controle possui um número finito e predefinido de estados 7 ; função de transição: função que comanda a leitura dos símbolos da fita e define o estado da máquina. Dependendo do estado corrente e do símbolo lido, um novo estado é determinado para o autômato. Como os autômatos não têm memória de trabalho para armazenar informações para o próximo processamento é necessário trabalhar com o conceito de estados. 3 Lexema é um conjunto de caracteres no programa fonte que é reconhecido pelo padrão de algum token (AHO; SETHI; ULLMAN, 1995). 4 Sentença é uma seqüência finita de símbolos retirados do mesmo alfabeto (AHO; SETHI; ULLMAN, 1995). 5 Um símbolo é uma entidade abstrata elementar que não possui uma definição formal. Um símbolo pode ser qualquer caractere uma letra, um dígito, um caractere de pontuação, acentuação, um caractere especial etc. 6 Alfabeto é qualquer conjunto finito de símbolos (AHO; SETHI; ULLMAN, 1995). 7 Um estado corresponde a uma situação particular no processo de reconhecimento.

20 20 Figura 2: Autômato Finito como uma máquina com controle finito Fonte: (MENEZES, 2002) Para uma melhor compreensão da definição de máquina de estado finito ou Autômato Finito pode-se admitir a existência de uma máquina imaginária que possa assumir os estados de repouso, atividade e manutenção. A representação através de um Autômato Finito pode ser observada na Figura 3. OK manutenção PANE início repouso OFF ON atividade Figura 3: exemplo de uma máquina de estados Fonte: (ZILLER, 1997) Inicialmente a máquina está em repouso. A máquina entra em atividade quando é acionado o evento ON e volta para o repouso quando seu evento OFF é acionado automaticamente após a produção. Assim o correto funcionamento da máquina é caracterizado por uma seqüência de eventos ON e OFF. No entanto, pode ser que durante o período de atividade da máquina ocorra um problema e neste caso, o evento PANE será acionado, mudando o estado da máquina para manutenção. Após a resolução do problema a máquina volta para o estado repouso com o evento OK. Os Autômatos Finitos têm a capacidade de reconhecer uma sentença e retornar se esta pertence ou não a uma determinada Linguagem Regular. Assim, pode-se dizer que o Autômato Finito é o

21 21 tipo mais simples de reconhecedor de linguagens. (MENEZES, 2002; PRICE; TOSCANI, 2001; HOPCROFT; ULLMAN; MOTWANI, 2002). Existem três notações ou formas de representação de Autômatos Finitos: representação formal, diagramas de transição e tabelas de transição. Representação Formal Formalmente um Autômato Finito é uma quíntupla M = (Q, Σ, δ, q 0, F), onde: Q - conjunto finito e não vazio de estados possíveis; Σ - alfabeto de símbolos de entrada; δ - função de transição 8 ; q 0 - estado inicial (q 0 Q); F - conjunto de estados finais (F Q). A máquina de estados da Figura 3 pode ser representada formalmente através do Autômato Finito M máquina = (Q, Σ, δ, q 0, F), onde: Q = {repouso, atividade, manutenção} Σ = {ON, OFF, PANE, OK} δ = {δ (repouso, ON) = atividade, δ (atividade, OFF) = repouso, δ (atividade, PANE) = manutenção, δ (manutenção, OK) = repouso} q 0 = repouso F = {repouso} Representação através de diagrama de transição Um diagrama de transição é um grafo direcionado onde os vértices (círculos) representam os estados e as arestas (linhas) representam as transições 9 (Figura 3). (HOPCROFT; ULLMAN; 8 A função de transição ou de mapeamento δ determina o estado q novo a partir do estado q atual e do símbolo de entrada x. Simbolicamente, δ (q atual, x) = q novo.

22 22 MOTWANI, 2002; MENEZES, 2002). O estado inicial é representado com uma seta na frente do respectivo estado e o (s) estado (s) final (is) é (são) representado por um círculo duplo. Entre dois estados q i, q j existirá uma aresta direcionada de q i para q j com rótulo x se x Σ e δ (q i, x) = q j. Na Figura 3 existe uma aresta rotulada com ON do estado repouso para o estado atividade porque δ (repouso, ON) = atividade. Representação através de tabela de transição A tabela de transição é uma tabela onde as linhas representam os estados (o estado inicial é indicado com uma seta em frente do estado referente a ele e o estado final é indicado por um asterisco em frente do estado referente a ele), as colunas representam os símbolos de entrada e o conteúdo da posição (q i, x) será igual à q j, se δ (q i, x) = q j ; caso contrário será indefinido. (HOPCROFT; ULLMAN; MOTWANI, 2002; MENEZES, 2002). A Figura 4 ilustra a tabela de transição do Autômato Finito correspondente à máquina hipotética da Figura 3. δ ON OFF PANE OK * repouso atividade atividade - repouso manutenção - manutenção repouso Figura 4: tabela de transição para o exemplo da Figura 3 Fonte: (ZILLER, 1997) Os Autômatos Finitos podem ser classificados em Autômatos Finitos Determinísticos, Autômatos Finitos Não-Determinísticos, e Autômatos Finitos Não-Determinísticos com Movimento Vazio. (PRICE; TOSCANI, 2001; HOPCROFT; ULLMAN; MOTWANI, 2002; AHO; SETHI; ULLMAN, 1995). 9 Uma transição de estado é a mudança de um estado para outro (MENEZES, 2002).

23 Autômatos Finitos Determinísticos Um Autômato Finito Determinístico (AFD) é um caso especial do Autômato Finito Não- Determinístico, no qual nenhum estado possui ε-transições 10 e para todos os estados independentes do símbolo de entrada existe apenas uma transição possível para cada símbolo do alfabeto. (HOPCROFT; ULLMAN; MOTWANI, 2002; AHO; SETHI; ULLMAN, 1995). Uma definição formal para Autômato Finito Determinístico é estabelecida através da quíntupla M = (Q,, δ, q 0, F). (PRICE; TOSCANI, 2001; MENEZES, 2002; HOPCROFT; ULLMAN; MOTWANI, 2002), onde: Q - conjunto finito e não vazio de estados possíveis; - alfabeto de símbolos de entrada; δ - função de transição δ : Q x Q, a qual é uma função parcial 11 ; q 0 - estado inicial (q 0 Q); F - conjunto de estados finais (F Q). A função de transição δ : Q x Q corresponde a δ (q i, x) = q j e a interpretação é reconhecer x se x for o próximo símbolo da entrada, o estado atual for q i e avançar para o estado q j. A representação de Autômatos Finitos Determinísticos através de diagramas de transição e através de tabelas de transição pode ser observada nas Figuras 5 e 6, respectivamente. O referido Autômato Finito Determinístico M = ({q 0, q 1, q 2, q 3 }, {a, b}, δ, q 0, {q 3 }) reconhece a linguagem dada por L = {w w 2 e w possui aa ou bb como subsentença}, ou seja, toda sentença w tomada sobre um alfabeto {a, b}, de tamanho maior ou igual a dois e que tem as seqüências aa ou bb como subsentenças. (MENEZES, 2002; HOPCROFT; ULLMAN; MOTWANI, 2002). 10 ε-transições são transições rotuladas por ε. A semântica dessas transições é de que o estado se altera, sem que seja consumido um símbolo da entrada. 11 Função parcial é uma relação onde cada elemento do domínio está relacionado com, no máximo, um elemento do contradomínio (MENEZES, 2002).

24 24 início a q 0 b q 1 b a q 2 a q 3 b a, b Figura 5: diagrama de transição de um Autômato Finito Determinístico Fonte: (MENEZES, 2002) δ a b q 0 q 1 q 2 q 1 q 3 q 2 q 2 q 1 q 3 * q 3 q 3 q 3 Figura 6: tabela de transição de um Autômato Finito Determinístico Fonte: (MENEZES, 2002) Autômatos Finitos Não-Determinísticos Analogamente ao Autômato Finito Determinístico, o Autômato Finito Não-Determinístico (AFN) é um modelo matemático definido através de uma quíntupla que difere do Autômato Finito Determinístico apenas no tipo da função de transição. Para um Autômato Finito Não- Determinístico, como nos Autômatos Finitos Determinísticos, δ é uma função de transição que recebe um estado e um símbolo como argumentos, mas diferentemente do Autômato Finito

25 25 Determinístico retorna um conjunto de zero, uma ou mais transições de estados. (HOPCROFT; ULLMAN; MOTWANI, 2002; AHO; SETHI; ULLMAN, 1995). A facilidade do não-determinismo nem sempre aumenta o poder de reconhecimento de linguagens, pois o Autômato Finito Não-Determinístico aceita apenas Linguagens Regulares, assim como o Autômato Finito Determinístico. A grande vantagem que o Autômato Finito Não- Determinístico tem sobre o Autômato Finito Determinístico é a facilidade de seu projeto, visto que são menos restritivos. (HOPCROFT; ULLMAN; MOTWANI, 2002; MENEZES, 2002). Um Autômato Finito Não-Determinístico é definido pela quíntupla M = (Q,, δ, q0, F). (PRICE; TOSCANI, 2001; MENEZES, 2002; HOPCROFT; ULLMAN; MOTWANI, 2002), onde: Q - conjunto finito e não vazio de estados possíveis; - alfabeto de símbolos de entrada; δ - função de transição δ : Q x 2 Q, a qual é uma função parcial; q 0 - estado inicial (q 0 Q); F - conjunto de estados finais (F Q). A função de transição δ : Q x 2 Q corresponde a δ (q i, x) = {q j1, q j2,..., q jn } e a interpretação é reconhecer x se x for o próximo símbolo de entrada, o estado atual for q i e avançar para o estado q j1 ou para o estado q j2 ou... ou para o estado q jn. Assim como os Autômatos Finitos Determinísticos, os Autômatos Finitos Não-Determinísticos podem ser representados através de diagramas de transição e de tabelas de transição. (MENEZES, 2002; HOPCROFT; ULLMAN; MOTWANI, 2002; AHO; SETHI; ULLMAN, 1995). No diagrama de transição a representação se realiza de maneira análoga a dos Autômatos Finitos Determinísticos. A única diferença é que a partir de um determinado estado pode-se assumir mais de uma transição (mais de um caminho) para um mesmo símbolo do alfabeto (Figura 7). (AHO; SETHI; ULLMAN, 1995).

26 26 a início q 0 a q 1 b q 2 b q 3 b Figura 7: diagrama de transição de um Autômato Finito Não-Determinístico Fonte: (AHO; SETHI; ULLMAN, 1995) A linguagem reconhecida pelo Autômato Finito Não-Determinístico representado na Figura 7 corresponde ao conjunto de sentenças formadas pelos símbolos {a, b} e que terminam com a seqüência abb. O não-determinísmo é observado na transição do estado q 0 com o símbolo a. A tabela de transição do Autômato Finito Não-Determinístico é análoga a do Autômato Finito Determinístico. A diferença está no conteúdo de cada posição (q i, x) que poderá conter um conjunto de zero ou mais estados q j. (HOPCROFT; ULLMAN; MOTWANI, 2002; AHO; SETHI; ULLMAN, 1995). A representação através de tabelas de transição oferece uma grande vantagem por dar acesso rápido às transições; entretanto, pode ocupar muito espaço quando o alfabeto for grande e as transições forem na maioria indefinidas. (HOPCROFT; ULLMAN; MOTWANI, 2002; AHO; SETHI; ULLMAN, 1995). A tabela de transição correspondente ao Autômato Finito Não-Determinístico da Figura 7 é apresentada na Figura 8. δ a b q 0 {q 0, q 1 } q 0 q 1 - q 2 q 2 - q 3 * q Figura 8: tabela de transição de um Autômato Finito Não-Determinístico Fonte: (AHO; SETHI; ULLMAN, 1995)

27 Autômatos Finitos Não-Determinísticos com Movimento Vazio Um Autômato Finito Não-Determinístico pode ser generalizado incluindo transições com o movimento vazio ou ε, que segundo MENEZES (2002) podem ser vistas como um nãodeterminismo interno dos Autômatos. Como os Autômatos Finitos Não-Determinísticos, os Autômatos Finitos Não-Determinísticos com Movimento Vazio (AFN-ε) não aumentam o poder de reconhecimento de linguagens. Entretanto possuem a vantagem de serem mais fáceis de projetar e facilitar algumas construções e demonstrações relacionadas ao formalismo de Autômatos Finitos. (MENEZES, 2002; HOPCROFT; ULLMAN; MOTWANI, 2002). Um Autômato Finito Não-Determinístico com Movimento Vazio pode ser definido formalmente como uma quíntupla M = (Q,, δ, q 0, F). (PRICE; TOSCANI, 2001; MENEZES, 2002; HOPCROFT; ULLMAN; MOTWANI, 2002), onde: Q - conjunto finito e não vazio de estados possíveis; - alfabeto de símbolos de entrada; δ - função de transição δ : Q x ( U {ε}) 2 Q, a qual é uma função parcial; q 0 - estado inicial (q 0 Q); F - conjunto de estados finais (F Q). A função de transição do Autômato Finito Não-Determinístico com Movimento Vazio é equivalente à função de transição do Autômato Finito Não-Determinístico, diferenciando-se apenas em relação ao alfabeto de entrada que admite o símbolo ε. O diagrama de transição e a tabela de transição correspondentes ao Autômato Finito Não- Determinístico com Movimento Vazio que reconhece a linguagem L = {w w {a, b} e w é formado por qualquer quantidade de a s, seguida por qualquer quantidade de b s} são apresentados nas Figuras 9 e 10, respectivamente.

28 28 início q 0 ε q 1 a b Figura 9: diagrama de transição de um Autômato Finito Não-Determinístico com Movimento Vazio Fonte: (MENEZES, 2002) O Autômato Finito Não Determinístico com Movimento Vazio representado pelo diagrama de transição da Figura 9, reconhece a linguagem denotada por L = {w qualquer número de símbolos a seguidos de um ou mais símbolos b}. δ a b ε q 0 {q 0 } - {q 1 } * q 1 - q 1 - Figura 10: tabela de transição de um Autômato Finito Não-Determinístico com Movimento Vazio Fonte: (MENEZES, 2002) Autômatos Finitos Determinísticos Mínimos A transformação de um Autômato Finito Determinístico para um Autômato Finito Determinístico Mínimo (AFDm) tem como objetivo gerar um Autômato Finito equivalente que possui um número reduzido de estados. Para cada linguagem existe um único Autômato Finito Determinístico Mínimo, ou seja, dois Autômatos Finitos Determinísticos diferentes, mas que aceitam a mesma linguagem, ao serem minimizados resultam no mesmo Autômato Finito Determinístico Mínimo, diferenciando-se apenas na identificação dos estados. (MENEZES, 2002) Equivalência dos autômatos finitos A equivalência entre Autômatos Finitos é a forma de demonstrar que Autômatos Finitos Determinísticos podem reconhecer uma mesma Linguagem Regular que os Autômatos Finitos Não-Determinísticos.

29 Equivalência entre um Autômato Finito Não-Determinístico e um Autômato Finito Não-Determinístico com Movimento Vazio Segundo MENEZES (2002), a classe dos Autômatos Finitos Não-Determinísticos com Movimento Vazio é equivalente à classe dos Autômatos Finitos Não-Determinísticos. Ainda segundo MENEZES (2002), a prova para esta equivalência é mostrar que se pode obter um Autômato Finito Não-Determinístico que reconheça as mesmas sentenças que são reconhecidas por um Autômato Finito Não-Determinístico com Movimento Vazio. Algoritmo para transformação de um Autômato Finito Não-Determinístico com Movimento Vazio para um Autômato Finito Não-Determinístico O algoritmo consiste em construir uma função de transição sem movimentos vazios, onde o conjunto de estados destino de cada transição não vazia é aumentada com todos os estados possíveis de serem atingidos com transições vazias. (MENEZES, 2002). ENTRADA: um AFN-ε M = (Q,, δ, q 0, F). SAÍDA: um AFN M = (Q,, δ, q 0, F ), tal que M M. δ função de transição tal que δ : Q x Σ 2 Q, onde δ (q, x) = δ ({q}, x); F conjunto de todos os estados q Q tal que algum elemento de FECHO 12 -ε (q) pertence a F. Exemplo de transformação de um Autômato Finito Não-Determinístico com Movimento Vazio para um Autômato Finito Não-Determinístico Seja o Autômato Finito Não-Determinístico com Movimento Vazio M = (Q,, δ, q 0, F) representado pela Figura A função FECHO-ε (q) é dada por: i. FECHO-ε (q) = {q}, se δ (q, ε) é indefinida; ii. FECHO-ε (q) = {q} δ (q, ε) ( p em c FECHO-ε (p)), caso contrário.

30 30 início ε ε q 0 q 1 q 2 a b a Figura 11: Autômato Finito Não-Determinístico com Movimento Vazio Fonte: (MENEZES, 2002) O Autômato Finito Não-Determinístico M = (Q,, δ, q 0, F ) equivalente pode ser observado na Figura 12. a, b início q 0 a, b q 1 a, b q 2 a b a Figura 12: Autômato Finito Não-Determinístico equivalente Fonte: (MENEZES, 2002) Equivalência entre um Autômato Finito Não-Determinístico e um Autômato Finito Determinístico Embora existam muitas linguagens para as quais os Autômatos Finitos Não-Determinísticos as representam mais adequadamente, sua construção e implementação é mais complexa e custosa, pois requer algoritmos de backtracking (recursivos). (HOPCROFT; ULLMAN; MOTWANI, 2002). Geralmente um Autômato Finito Determinístico possui um número de estados semelhante a um Autômato Finito Não-Determinístico, embora seu número de transições frequentemente seja maior. Considerando o pior caso, o menor Autômato Finito Determinístico possível pode ter 2 n estados, para um Autômato Finito Não-Determinístico de n estados. (HOPCROFT; ULLMAN; MOTWANI, 2002).

31 31 Para provar que os Autômatos Finitos Determinísticos são equivalentes aos Autômatos Finitos Não-Determinísticos basta provar que é possível a construção de um Autômato Finito Determinístico a partir de um Autômato Finito Não-Determinístico para uma mesma Linguagem Regular. (MENEZES, 2002). Algoritmo de transformação de um Autômato Finito Não-Determinístico para um Autômato Finito Determinístico A construção de Autômato Finito Determinístico a partir de um Autômato Finito Não- Determinístico que reconheça a mesma linguagem é feita pela aplicação de um algoritmo chamado construção de conjuntos o qual objetiva construir todos os subconjuntos do conjunto de estados do Autômato Finito Não-Determinístico. (HOPCROFT; ULLMAN; MOTWANI, 2002; AHO; SETHI; ULLMAN, 1995). ENTRADA: um AFN M = (Q,, δ, q 0, F). SAIDA: um AFD M = (Q,, δ, q 0, F ), tal que M M. A construção dos subconjuntos a partir do Autômato Finito Não-Determinístico M = (Q,, δ, q 0, F), produz o Autômato Finito Determinístico M = (Q,, δ, q 0, F ), onde M M e a linguagem reconhecida pelo Autômato M é também aceita pelo Autômato M, sendo: Q conjunto de subconjuntos de Q (conjunto potência de Q); se Q tem n estados, Q terá 2 n estados (usualmente nem todos esses estados serão acessíveis a partir do estado inicial de Q e poderão ser eliminados); Σ' alfabeto dos símbolos de entrada, tal que Σ' = Σ; δ função de transição para cada conjunto C Q e para cada símbolo de entrada x em Σ, δ (C, x) = p em c δ (p, x) (o mapeamento δ (C, x) é a união dos estados que M alcança a partir de p com a entrada x, para todos os estados p em C para os quais δ (p, x) ); q 0 estado inicial conjunto que contém q 0 ;

32 32 F conjunto de estados finais conjunto de subconjuntos C para os quais C F Ø (são todos os conjuntos de estados que incluem ao menos um estado final F de M). Exemplo de transformação de um Autômato Finito Não-Determinístico para um Autômato Finito Determinístico Seja M = ({q 0, q 1, q 2, q 3, q 4 }, {a, b}, δ, q 0, {q 2, q 4 }), onde: δ = {δ (q 0, a) = (q 0, q 3 ), δ (q 0, b) = (q 0, q 1 ), δ (q 1, b) = q 2, δ (q 2, a) = q 2, δ (q 2, b) = q 2, δ (q 3, a) = q 4, δ (q 4, a) = q 4, δ (q 4, b) = (q 4 )} O Autômato Finito Determinístico M equivalente é representado pela tabela de transição da Figura 13. δ a b q 0 {q 0, q 3 } {q 0, q 1 } {q 0, q 3 } {q 0, q 3, q 4 } {q 0, q 1 } {q 0, q 1 } {q 0, q 3 } {q 0, q 1, q 2 } * {q 0, q 3, q 4 } {q 0, q 3, q 4 } {q 0, q 1, q 4 } * {q 0, q 1, q 2 } {q 0, q 2, q 3 } {q 0, q 1, q 2 } * {q 0, q 1, q 4 } {q 0, q 3, q 4 } {q 0, q 1, q 2, q 4 } * {q 0, q 2, q 3 } {q 0, q 2, q 3, q 4 } {q 0, q 1, q 2 }

33 33 * {q 0, q 1, q 2, q 4 } {q 0, q 2, q 3, q 4 } {q 0, q 1, q 2, q 4 } * {q 0, q 2, q 3, q 4 } {q 0, q 2, q 3, q 4 } {q 0, q 1, q 2, q 4 } Figura 13: Autômato Finito Determinístico equivalente Para transformar um Autômato Finito Determinístico para um Autômato Finito Determinístico Mínimo equivalente o Autômato Finito não pode possuir estados inacessíveis (estados que nunca são alcançados a partir de um estado inicial), não pode possuir transições indefinidas (a partir de qualquer estado com qualquer símbolo do alfabeto de entrada não pode existir transições não previstas) e não pode possuir estados mortos (estados não finais a partir dos quais não se alcança algum estado final.). (AHO; SETHI; ULLMAN, 1995). O algoritmo subseqüente demonstra os passos que devem ser seguidos para transformar um Autômato Finito Determinístico para um Autômato Finito Determinístico Mínimo. Algoritmo de transformação de um Autômato Finito Determinístico para um Autômato Finito Determinístico Mínimo ENTRADA: um AFD M = (Q, Σ, δ, q 0, F); SAÍDA: um AFDm M = (Q, Σ, δ, q 0, F ), tal que M M passo 1. eliminação dos estados inacessíveis 1. assinalar inicialmente o estado inicial como estado acessível; 2. para cada estado q i assinalado, marcar os estados q j alcançáveis por uma transição x partir de q i ; 3. eliminar os estados que não foram assinalados. passo 2. eliminação das transições indefinidas 1. incluir um novo estado não-final Φ, onde são colocadas transições para ele mesmo com todos os símbolos do alfabeto; 2. com a inclusão do novo estado não-final Φ, as transições não previstas são trocadas por uma transição para este novo estado não-final. passo 3. determinação dos estados equivalentes

34 34 1. dividir Q em duas classes de equivalência, a primeira contendo os estados finais e a segunda contendo os demais estados de Q; 2. realizar sucessivas divisões nas classes obtidas até nenhuma nova classe seja obtida. É necessário considerar nesse passo que um conjunto de estados q 0, q 1,..., q n está na mesma classe de equivalência se todas as transições que partem destes estados levam o Autômato aos estados q i, q i+1,..., q n estando estes em uma mesma classe equivalente também. passo 4. eliminação dos estados mortos 1. assinalar inicialmente os estados finais como não mortos; 2. assinalar os estados q j que alcançam um estado assinalado q i ; 3. eliminar os estados que não foram assinalados, tornando indefinidas as transições que levam a um estado eliminado. passo 5. construção do Autômato Finito Determinístico Mínimo M = (Q, Σ, δ, e0, F ), onde: Q - conjunto finito de estados equivalentes; - alfabeto de símbolos de entrada, tal que Σ = Σ; δ' - função de transição: Q x Q, tal que δ' ({p}, x) = {q} δ(p i, x) = q i, sendo p i e q i são elementos de {p} e {q}, respectivamente, e {p} e {q} são conjuntos de estados equivalentes; q 0 - estado equivalente que contém o estado inicial q 0 ; F - conjunto de estados equivalentes (F Q ), tal que algum estado componente de F é um estado final de M. Exemplo de transformação de um Autômato Finito Determinístico para um Autômato Finito Determinístico Mínimo Considerando o Autômato Finito Determinístico da Figura 14

35 35 a q 4 b a, b início q 0 a q 1 a q 2 b c q 3 q 5 a, b a, b, c Figura 14: Diagrama de transição do Autômato Finito Determinístico e aplicando o algoritmo de minimização de Autômatos Finitos. passo 1. eliminação dos estados inacessíveis (Figura 15). δ a b c acessíveis q 0 q X * q 1 q 2 q 3 q 5 X * q 2 q 2 q 2 - X * q 3 q 3 q 3 - X * q 4 q 4 q 1 - q 5 q 5 q 5 q 5 X Figura 15: Tabela de transição do Autômato Finito Determinístico com identificação dos estados acessíveis A tabela de transição do Autômato Finito Determinístico resultante da eliminação dos estados inacessíveis pode ser observada na Figura 16.

36 36 δ a b c q 0 q * q 1 q 2 q 3 q 5 * q 2 q 2 q 2 - * q 3 q 3 q 3 - q 5 q 5 q 5 q 5 Figura 16: Tabela de transição do Autômato Finito Determinístico sem os estados inacessíveis passo 2. eliminação das transições indefinidas. As transições δ (q 0, b), δ (q 0, c), δ (q 2, c) e δ (q 3, c) são indefinidas; e portanto, eliminar tais transições implica em adicionar ao Autômato Finito Determinístico um novo estado não final Φ e substituir as transições indefinidas por transições para Φ e estabelecer transições de Φ para Φ com todos os símbolos do alfabeto. A Figura 17 demonstra a eliminação das transições indefinidas para o Autômato Finito Determinístico. δ a b c q 0 q 1 Φ Φ * q 1 q 2 q 3 q 5 * q 2 q 2 q 2 Φ * q 3 q 3 q 3 Φ q 5 q 5 q 5 q 5 Φ Φ Φ Φ Figura 17: Tabela de transição do Autômato Finito Determinístico sem transições indefinidas passo 3. determinação dos estados equivalentes. Para determinar os estados equivalentes é necessária a construção dos conjuntos de equivalência.

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário

Leia mais

Compiladores. Análise léxica. Plano da aula. Vocabulário básico. Motivação para análise léxica. Estrutura de um compilador

Compiladores. Análise léxica. Plano da aula. Vocabulário básico. Motivação para análise léxica. Estrutura de um compilador Estrutura de um compilador Compiladores Análise lexical (1) Expressões Regulares 1 2 Plano da aula 1. Motivação do uso de E.R. e definições Linguagens, tokens, lexemas... 2. Regras de formação e exemplos

Leia mais

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto Capítulo 6. Autômatos com Pilha 6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto Nos exemplos da seção anterior, vimos que os autômatos com pilha existem para

Leia mais

Linguagem Formais e Autômatos

Linguagem Formais e Autômatos Linguagem Formais e Autômatos Apresentação da disciplina, metodologia de ensino, conteúdos, avaliações e bibliografia Prof. MSc. Hugo Vieira L. Souza Este documento está sujeito a copyright. Todos os direitos

Leia mais

Outras Máquinas de Turing

Outras Máquinas de Turing Capítulo 10 Outras Máquinas de Turing 10.1. Pequenas variações da TM padrão 10.2. MT s com dispositivos de armazenamento mais complexos 10.3. MT s não-determinísticas 10.4. A Máquina de Turing Universal

Leia mais

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá. INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,

Leia mais

1. NÍVEL CONVENCIONAL DE MÁQUINA

1. NÍVEL CONVENCIONAL DE MÁQUINA 1. NÍVEL CONVENCIONAL DE MÁQUINA Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0

Leia mais

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

Autómatos Finitos Determinísticos

Autómatos Finitos Determinísticos Ficha 2 Autómatos Finitos Determinísticos 2.1 Introdução Se olharmos, de forma simplificada, para um computador encontramos três componentes principais: a) A unidade de processamento central b) As unidades

Leia mais

FUNÇÕES POLINOMIAIS DO SEGUNDO GRAU MEDIADOS PELO SOFTWARE GEOGEBRA NA PERSPECTIVA DOS REGISTROS DE REPRESENTAÇÃO SEMIÓTICA

FUNÇÕES POLINOMIAIS DO SEGUNDO GRAU MEDIADOS PELO SOFTWARE GEOGEBRA NA PERSPECTIVA DOS REGISTROS DE REPRESENTAÇÃO SEMIÓTICA FUNÇÕES POLINOMIAIS DO SEGUNDO GRAU MEDIADOS PELO SOFTWARE GEOGEBRA NA PERSPECTIVA DOS REGISTROS DE REPRESENTAÇÃO SEMIÓTICA Modalidade: Relato de experiência Izaias Cordeiro Néri Mestrando em Educação

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto ALGORITMOS PARTE 01 Fabricio de Sousa Pinto Algoritmos: Definição 2 É uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Algoritmos 3

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática

Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Pesquisa com Professores de Escolas e com Alunos da Graduação em Matemática Rene Baltazar Introdução Serão abordados, neste trabalho, significados e características de Professor Pesquisador e as conseqüências,

Leia mais

Autómatos finitos não determinísticos (AFND)

Autómatos finitos não determinísticos (AFND) Autómatos finitos não determinísticos (AFND) [HMU00](Cap 2.3) Computações não determinísticas: o estado seguinte não é univocamente determinado pelo estado actual.num autómato finito (não-determínistico):

Leia mais

Resolução de problemas e desenvolvimento de algoritmos

Resolução de problemas e desenvolvimento de algoritmos SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Resolução de problemas e desenvolvimento de algoritmos Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário Análise e solução de

Leia mais

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO Capítulo 1 INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO 1.1 Histórico de Linguagens de Programação Para um computador executar uma dada tarefa é necessário que se informe a ele, de uma maneira clara, como ele

Leia mais

Registro e Acompanhamento de Chamados

Registro e Acompanhamento de Chamados Registro e Acompanhamento de Chamados Contatos da Central de Serviços de TI do TJPE Por telefone: (81) 2123-9500 Pela intranet: no link Central de Serviços de TI Web (www.tjpe.jus.br/intranet) APRESENTAÇÃO

Leia mais

ALUNOS DO 7º ANO CONSTRUINDO GRÁFICOS E TABELAS

ALUNOS DO 7º ANO CONSTRUINDO GRÁFICOS E TABELAS ALUNOS DO 7º ANO CONSTRUINDO GRÁFICOS E TABELAS Introdução Paulo Marcos Ribeiro pmribeirogen2@hotmail.com Betânia Evangelista mbevangelista@hotmail.com Fabíola Santos M. de A. Oliveira fabiprestativa@hotmail.com

Leia mais

3 Dicas MATADORAS Para Escrever Emails Que VENDEM Imóveis

3 Dicas MATADORAS Para Escrever Emails Que VENDEM Imóveis 3 Dicas MATADORAS Para Escrever Emails Que VENDEM Imóveis O que é um e- mail bem sucedido? É aquele e- mail que você recebe o contato, envia o e- mail para o cliente e ele te responde. Nós não estamos

Leia mais

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010 Construção de Compiladores Prof. Raimundo Santos Moura (http://www.ufpi.br/rsm) Construção de Compiladores Livro-Texto: AHO, Alfred V.; ULLMAN, Jeffrey D.; SETHI, R. Compiladores: princípios, técnicas

Leia mais

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos 1. INTRODUÇÃO A ALGORITMOS O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do tempo, entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas de calcular

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi Apostila de Fundamentos de Programação I Prof: André Luiz Montevecchi Introdução O mundo atual é dependente da tecnologia O uso intenso de diversos aparatos tecnológicos é parte integrante do nosso dia-a-dia

Leia mais

Fundamentos em Informática (Sistemas de Numeração e Representação de Dados)

Fundamentos em Informática (Sistemas de Numeração e Representação de Dados) 1 UNIVERSIDADE DO CONTESTADO / UnC CAMPUS CONCÓRDIA/SC CURSO DE SISTEMAS DE INFORMAÇÃO Fundamentos em Informática (Sistemas de Numeração e Representação de Dados) (Apostila da disciplina elaborada pelo

Leia mais

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às

Leia mais

Sistemas de Numerações.

Sistemas de Numerações. Matemática Profº: Carlos Roberto da Silva; Lourival Pereira Martins. Sistema de numeração: Binário, Octal, Decimal, Hexadecimal; Sistema de numeração: Conversões; Sistemas de Numerações. Nosso sistema

Leia mais

3. Tipos de Dados, Constantes e Variáveis.

3. Tipos de Dados, Constantes e Variáveis. 3. Tipos de Dados, Constantes e Variáveis. O computador realiza a sua tarefa trabalhando as informações contidas em sua memória, essas podem ser classificadas em dois tipos básicos: as instruções e os

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

UNIVERSIDADE DE SÃO PAULO E S C O L A D E A R T E S, C I Ê N C I A S E H U M A N I D A D E

UNIVERSIDADE DE SÃO PAULO E S C O L A D E A R T E S, C I Ê N C I A S E H U M A N I D A D E UNIVERSIDADE DE SÃO PAULO E S C O L A D E A R T E S, C I Ê N C I A S E H U M A N I D A D E Trabalho proposto pela disciplina de Orientado por Professor Dr. Fernando Coelho Mário Januário Filho 5365372

Leia mais

Pró-Reitoria de Ensino de Graduação P L A N O D E E N S I N O

Pró-Reitoria de Ensino de Graduação P L A N O D E E N S I N O Pró-Reitoria de Ensino de Graduação P L A N O D E E N S I N O Curso: Ciência da Computação Unidade Curricular: Linguagem Formais e Autômatos Modalidade: Presencial (X ) Semipresencial ( ) Período: 4º Ano/

Leia mais

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: davidmr@ifce.edu.br CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento

Leia mais

EXPLORANDO ALGUMAS IDEIAS CENTRAIS DO PARÂMETROS CURRICULARES NACIONAIS ENSINO MÉDIO. Giovani Cammarota

EXPLORANDO ALGUMAS IDEIAS CENTRAIS DO PARÂMETROS CURRICULARES NACIONAIS ENSINO MÉDIO. Giovani Cammarota UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE MATEMÁTICA PRÁTICA DE ENSINO DE MATEMÁTICA IV EXPLORANDO ALGUMAS IDEIAS CENTRAIS DO PARÂMETROS CURRICULARES NACIONAIS ENSINO MÉDIO Giovani Cammarota - Divisão

Leia mais

11 de maio de 2011. Análise do uso dos Resultados _ Proposta Técnica

11 de maio de 2011. Análise do uso dos Resultados _ Proposta Técnica 11 de maio de 2011 Análise do uso dos Resultados _ Proposta Técnica 1 ANÁLISE DOS RESULTADOS DO SPAECE-ALFA E DAS AVALIAÇÕES DO PRÊMIO ESCOLA NOTA DEZ _ 2ª Etapa 1. INTRODUÇÃO Em 1990, o Sistema de Avaliação

Leia mais

COMPILADORES E INTERPRETADORES

COMPILADORES E INTERPRETADORES Aula 16 Arquitetura de Computadores 12/11/2007 Universidade do Contestado UnC/Mafra Curso Sistemas de Informação Prof. Carlos Guerber COMPILADORES E INTERPRETADORES Um compilador transforma o código fonte

Leia mais

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual

Algoritmos: Lógica para desenvolvimento de programação de computadores. Autor: José Augusto Manzano. Capítulo 1 Abordagem Contextual Algoritmos: Lógica para desenvolvimento de programação de computadores Autor: José Augusto Manzano Capítulo 1 Abordagem Contextual 1.1. Definições Básicas Raciocínio lógico depende de vários fatores para

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Microsoft Office PowerPoint 2007

Microsoft Office PowerPoint 2007 INTRODUÇÃO AO MICROSOFT POWERPOINT 2007 O Microsoft Office PowerPoint 2007 é um programa destinado à criação de apresentação através de Slides. A apresentação é um conjunto de Sides que são exibidos em

Leia mais

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:

Leia mais

Análise semântica. Análise Semântica. Estrutura de um compilador. Anotação da árvore sintática. Tipos de comunicação de atributos?

Análise semântica. Análise Semântica. Estrutura de um compilador. Anotação da árvore sintática. Tipos de comunicação de atributos? Estrutura de um compilador Análise semântica Tradução orientada pela sintaxe 1 2 Análise Semântica Anotação da árvore sintática Análise semântica: Tipos (& Declarações) Escopo Checagens estáticas: Idéia:

Leia mais

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática 3ºAno Disciplina de Desenvolvimento de Sistemas de Software Ano Lectivo de 2009/2010 GereComSaber Sistema de

Leia mais

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE

MÓDULO 6 INTRODUÇÃO À PROBABILIDADE MÓDULO 6 INTRODUÇÃO À PROBBILIDDE Quando estudamos algum fenômeno através do método estatístico, na maior parte das vezes é preciso estabelecer uma distinção entre o modelo matemático que construímos para

Leia mais

Linguagens Formais e Autômatos

Linguagens Formais e Autômatos Linguagens Formais e Autômatos SLIDE 1 Professor Júlio Cesar da Silva juliocesar@eloquium.com.br site: http://eloquium.com.br/ twitter: @profjuliocsilva facebook: https://www.facebook.com/paginaeloquium

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

Introdução aos critérios de consulta. Um critério é semelhante a uma fórmula é uma cadeia de caracteres que pode consistir em

Introdução aos critérios de consulta. Um critério é semelhante a uma fórmula é uma cadeia de caracteres que pode consistir em Material retirado do site Office online. Introdução aos critérios de consulta Um critério é semelhante a uma fórmula é uma cadeia de caracteres que pode consistir em referências de campo, operadores e

Leia mais

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Cálculo Numérico Aula : Computação numérica. Tipos de Erros. Aritmética de ponto flutuante Computação Numérica - O que é Cálculo Numérico? Cálculo numérico é uma metodologia para resolver problemas matemáticos

Leia mais

Um software para auxílio a aprendizagem de Linguagens Regulares

Um software para auxílio a aprendizagem de Linguagens Regulares Um software para auxílio a aprendizagem de Linguagens Regulares Marlon José Dognini dognini@uol.com.br André Luís Alice Raabe araabe@cttmar.univali.br Ciência da Computação - CTTMar - Universidade do Vale

Leia mais

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3 A LEGO Education tem o prazer de trazer até você a edição para tablet do Software LEGO MINDSTORMS Education EV3 - um jeito divertido

Leia mais

Lista n 0 1 de Exercícios de Teoria da Computação

Lista n 0 1 de Exercícios de Teoria da Computação Lista n 0 1 de Exercícios de Teoria da Computação UFU-Curso de Bacharelado em Ciência da Computação - 7 0 período Profa. Sandra de Amo Exercícios de Revisão : Autômatos e Gramáticas 1. Mostre que a linguagem

Leia mais

Aula 8 Circuitos Integrados

Aula 8 Circuitos Integrados INTRODUÇÃO À ENGENHRI DE COMPUTÇÃO PONTIFÍCI UNIVERSIDDE CTÓLIC DO RIO GRNDE DO SUL FCULDDE DE ENGENHRI ula Circuitos Integrados Introdução Portas Lógicas em Circuitos Integrados Implementação de Funções

Leia mais

Exercícios Teóricos Resolvidos

Exercícios Teóricos Resolvidos Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Matemática Exercícios Teóricos Resolvidos O propósito deste texto é tentar mostrar aos alunos várias maneiras de raciocinar

Leia mais

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 3.2 O Espaço Nulo de A: Resolvendo Ax = 0 11 O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2 Esta seção trata do espaço de soluções para Ax = 0. A matriz A pode ser quadrada ou retangular. Uma solução imediata

Leia mais

FUNÇÃO REAL DE UMA VARIÁVEL REAL

FUNÇÃO REAL DE UMA VARIÁVEL REAL Hewlett-Packard FUNÇÃO REAL DE UMA VARIÁVEL REAL Aulas 01 a 04 Elson Rodrigues, Gabriel Carvalho e Paulo Luís Ano: 2015 Sumário INTRODUÇÃO AO PLANO CARTESIANO... 2 PRODUTO CARTESIANO... 2 Número de elementos

Leia mais

CURSO: LICENCIATURA DA MATEMÁTICA DISCIPLINA: PRÁTICA DE ENSINO 4

CURSO: LICENCIATURA DA MATEMÁTICA DISCIPLINA: PRÁTICA DE ENSINO 4 CAMPUS CARAGUATUBA CURSO: LICENCIATURA DA MATEMÁTICA DISCIPLINA: PRÁTICA DE ENSINO 4 PROFESSOR: ANDRESSA MATTOS SALGADO-SAMPAIO ORIENTAÇÕES PEDAGÓGICAS PARA A PRÁTICA DE ESTÁGIO SUPERVISIONADO NO CURSO

Leia mais

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva Algoritmos Estruturas Seqüenciais José Gustavo de Souza Paiva 1 Introdução Objetivo básico da computação auxiliar os seres humanos em trabalhos repetitivos e braçais, diminuindo i i d esforços e economizando

Leia mais

O PAPEL DA CONTAÇÃO DE HISTÓRIA NA EDUCAÇÃO INFANTIL

O PAPEL DA CONTAÇÃO DE HISTÓRIA NA EDUCAÇÃO INFANTIL 0 O PAPEL DA CONTAÇÃO DE HISTÓRIA NA EDUCAÇÃO INFANTIL 1 O PAPEL DA CONTAÇÃO DE HISTÓRIA NA EDUCAÇÃO INFANTIL Renato da Guia Oliveira 2 FICHA CATALOGRÁFICA OLIVEIRA. Renato da Guia. O Papel da Contação

Leia mais

AVALIAÇÃO DE INTERFACES UTILIZANDO O MÉTODO DE AVALIAÇÃO HEURÍSTICA E SUA IMPORTÂNCIA PARA AUDITORIA DE SISTEMAS DE INFORMAÇÕES

AVALIAÇÃO DE INTERFACES UTILIZANDO O MÉTODO DE AVALIAÇÃO HEURÍSTICA E SUA IMPORTÂNCIA PARA AUDITORIA DE SISTEMAS DE INFORMAÇÕES AVALIAÇÃO DE INTERFACES UTILIZANDO O MÉTODO DE AVALIAÇÃO HEURÍSTICA E SUA IMPORTÂNCIA PARA AUDITORIA DE SISTEMAS DE INFORMAÇÕES Rafael Milani do Nascimento, Claudete Werner Universidade Paranaense (Unipar)

Leia mais

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA Jeferson Boesing 1 ; Tiago Heineck 2 ; Angela Maria Crotti da Rosa 3 ; Leila Lisiane Rossi 4 INTRODUÇÃO Alunos

Leia mais

3. O NIVEL DA LINGUAGEM DE MONTAGEM

3. O NIVEL DA LINGUAGEM DE MONTAGEM 3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também

Leia mais

Programação para Computação

Programação para Computação Universidade Federal do Vale do São Francisco Programação para Computação Professor: Marcelo Santos Linder E-mail: marcelo.linder@univasf.edu.br Ementa Conceito de algoritmo. Lógica de programação e programação

Leia mais

PROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS

PROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS 1 PROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS INTRODUÇÃO O processamento interno do CLP é digital e pode-se, assim, aplicar os conceitos de lógica digital para compreen8 der as técnicas e as linguagens

Leia mais

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis Ciência da Computação Arq. e Org. de Computadores Máquinas Multiníveis Prof. Sergio Ribeiro Computador digital máquina que resolve problemas executando uma série de instruções. Programa conjunto de instruções

Leia mais

Implementação de um analisador léxico: a primeira etapa na construção do compilador Marvel

Implementação de um analisador léxico: a primeira etapa na construção do compilador Marvel Implementação de um analisador léxico: a primeira etapa na construção do compilador Marvel Cláudio Lopes (peso 0.3), Gildo Leonel (peso 0.3), Sérgio Rossini (peso 0.3) 1. Visão Geral Departamento de Ciência

Leia mais

$XWyPDWRV)LQLWRV'HWHUPLQLVWDV$)' A= (Q, È, G,q 0,F)

$XWyPDWRV)LQLWRV'HWHUPLQLVWDV$)' A= (Q, È, G,q 0,F) &DStWXOR,,$XWyPDWRV)LQLWRV $XWyPDWRV)LQLWRV'HWHUPLQLVWDV$)' 'HILQLomR: Um $XWyPDWR)LQLWR'HWHUPLQLVWD é um quíntuplo ordenado, onde: A= (Q, È, G,q 0,F) Q é um conjunto finito, não vazio, de HVWDGRV, È é

Leia mais

SERVIÇO PÚBLICO FEDERAL UNIVERSIDADE FEDERAL DA FRONTEIRA SUL COMISSÃO PERMANENTE DO PROCESSO SELETIVO DÚVIDAS FREQUENTES

SERVIÇO PÚBLICO FEDERAL UNIVERSIDADE FEDERAL DA FRONTEIRA SUL COMISSÃO PERMANENTE DO PROCESSO SELETIVO DÚVIDAS FREQUENTES DÚVIDAS FREQUENTES A UFFS abre mais de um Processo Seletivo no mesmo ano? Não. Há apenas um Processo Seletivo por ano. Nele, você pode optar por cursos que começam no primeiro ou no segundo semestre, mas

Leia mais

Introdução às Linguagens de Programação

Introdução às Linguagens de Programação Introdução às Linguagens de Programação Histórico de Linguagens de Programação O computador não faz nada sozinho Precisamos informar, de forma clara, como ele deve executar as tarefas Ou seja, o computador

Leia mais

MODELO DE APRESENTAÇÃO DE PROJETO DE PESQUISA

MODELO DE APRESENTAÇÃO DE PROJETO DE PESQUISA MODELO DE APRESENTAÇÃO DE PROJETO DE PESQUISA PÓS-GRADUAÇÃO EM CIÊNCIA E ENGENHARIA DE MATERIAIS Elaborado por Prof. Dr. Rodrigo Sampaio Fernandes Um projeto de pesquisa consiste em um documento no qual

Leia mais

Autômatos a pilha. UFRN/DIMAp/DIM0330 Linguagens formais. David Déharbe. http://www.consiste.dimap.ufrn.br/ david/enseignement/2003.

Autômatos a pilha. UFRN/DIMAp/DIM0330 Linguagens formais. David Déharbe. http://www.consiste.dimap.ufrn.br/ david/enseignement/2003. UFRN/DIMAp/DIM0330 Linguagens formais http://www.consiste.dimap.ufrn.br/ david/enseignement/2003.1/dim0330 1/36 Autômatos a pilha David Déharbe UFRN/DIMAp Campus Universitário, Lagoa Nova, 59072-970 Natal,

Leia mais

PERGUNTAS MAIS FREQÜENTES FEITAS PELO ALUNO. 1. O que são as Atividades Complementares de Ensino do NED-ED?

PERGUNTAS MAIS FREQÜENTES FEITAS PELO ALUNO. 1. O que são as Atividades Complementares de Ensino do NED-ED? PERGUNTAS MAIS FREQÜENTES FEITAS PELO ALUNO 1. O que são as Atividades Complementares de Ensino do NED-ED? O Centro Universitário de Goiás (Uni-Anhangüera) estabeleceu no início letivo de 2006 que todo

Leia mais

UNIVERSIDADE DE PASSO FUNDO FACULDADE DE ENGENHARIA E ARQUITETURA CURSO DE ENGENHARIA DE ALIMENTOS REGULAMENTO DO PROJETO DE CONCLUSÃO DE CURSO

UNIVERSIDADE DE PASSO FUNDO FACULDADE DE ENGENHARIA E ARQUITETURA CURSO DE ENGENHARIA DE ALIMENTOS REGULAMENTO DO PROJETO DE CONCLUSÃO DE CURSO REGULAMENTO DO PROJETO DE CONCLUSÃO DE CURSO O curso de Engenharia de Alimentos da UPF, através do seu Projeto Pedagógico, se propõe a oportunizar ao egresso uma série de habilidades pessoais e profissionais,

Leia mais

2 Diagrama de Caso de Uso

2 Diagrama de Caso de Uso Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

Casos de teste semânticos. Casos de teste valorados. Determinar resultados esperados. Gerar script de teste automatizado.

Casos de teste semânticos. Casos de teste valorados. Determinar resultados esperados. Gerar script de teste automatizado. 1 Introdução Testes são importantes técnicas de controle da qualidade do software. Entretanto, testes tendem a ser pouco eficazes devido à inadequação das ferramentas de teste existentes [NIST, 2002].

Leia mais

Geração de código intermediário. Novembro 2006

Geração de código intermediário. Novembro 2006 Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas

Leia mais

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

Leia mais

Um espaço colaborativo de formação continuada de professores de Matemática: Reflexões acerca de atividades com o GeoGebra

Um espaço colaborativo de formação continuada de professores de Matemática: Reflexões acerca de atividades com o GeoGebra Um espaço colaborativo de formação continuada de professores de Matemática: Reflexões acerca de atividades com o GeoGebra Anne Caroline Paim Baldoni Universidade Estadual Paulista Júlio de Mesquita Filho,

Leia mais

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE Fabiana Gomes Marinho Faculdade Lourenço Filho Resumo: Na UML, a modelagem conceitual dos dados é descrita pelo diagrama de classes, que através

Leia mais

UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES

UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES UMA BREVE INTRODUÇÃO AO ESTUDO E IMPLEMENTAÇÃO DE COMPILADORES 1 BRANCO; Guido Aparecido Junior, 2 TAMAE, Rodrigo Yoshio 1-Discente do Curso Sistemas de Informação FAEG/Garça 2-Docente do Curso Sistemas

Leia mais

Geração e Otimização de Código

Geração e Otimização de Código Geração e Otimização de Código Representação de código intermediária Código de três endereços, P-código Técnicas para geração de código Otimização de código Prof. Thiago A. S. Pardo 1 Estrutura geral de

Leia mais

A inserção de jogos e tecnologias no ensino da matemática

A inserção de jogos e tecnologias no ensino da matemática A inserção de jogos e tecnologias no ensino da matemática Michel da Silva Machado e-mail: michel_nick25@hotmail.com Isaque Rodrigues e-mail: isaque.max@hotmail.com Márcia Marinho do Nascimento Mello e-mail:

Leia mais

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA Autores : Jeferson BOESING; Tiago HEINECK; Angela Maria Crotti da ROSA; Leila Lisiane ROSSI Identificação

Leia mais

Introdução à Computação

Introdução à Computação Aspectos Importantes - Desenvolvimento de Software Motivação A economia de todos países dependem do uso de software. Cada vez mais, o controle dos processos tem sido feito por software. Atualmente, os

Leia mais

Organização e Arquitetura de Computadores I. de Computadores

Organização e Arquitetura de Computadores I. de Computadores Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização Básica B de Computadores

Leia mais

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária 1- Apresentação Binária Os computadores funcionam e armazenam dados mediante a utilização de chaves eletrônicas que são LIGADAS ou DESLIGADAS. Os computadores só entendem e utilizam dados existentes neste

Leia mais

DESENVOLVIMENTO DE UM SOFTWARE NA LINGUAGEM R PARA CÁLCULO DE TAMANHOS DE AMOSTRAS NA ÁREA DE SAÚDE

DESENVOLVIMENTO DE UM SOFTWARE NA LINGUAGEM R PARA CÁLCULO DE TAMANHOS DE AMOSTRAS NA ÁREA DE SAÚDE DESENVOLVIMENTO DE UM SOFTWARE NA LINGUAGEM R PARA CÁLCULO DE TAMANHOS DE AMOSTRAS NA ÁREA DE SAÚDE Mariane Alves Gomes da Silva Eliana Zandonade 1. INTRODUÇÃO Um aspecto fundamental de um levantamento

Leia mais

Matemática - UEL - 2010 - Compilada em 18 de Março de 2010. Prof. Ulysses Sodré Matemática Essencial: http://www.mat.uel.

Matemática - UEL - 2010 - Compilada em 18 de Março de 2010. Prof. Ulysses Sodré Matemática Essencial: http://www.mat.uel. Matemática Essencial Equações do Segundo grau Conteúdo Matemática - UEL - 2010 - Compilada em 18 de Março de 2010. Prof. Ulysses Sodré Matemática Essencial: http://www.mat.uel.br/matessencial/ 1 Introdução

Leia mais

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd.

Para construção dos modelos físicos, será estudado o modelo Relacional como originalmente proposto por Codd. Apresentação Este curso tem como objetivo, oferecer uma noção geral sobre a construção de sistemas de banco de dados. Para isto, é necessário estudar modelos para a construção de projetos lógicos de bancos

Leia mais

www.leitejunior.com.br 29/06/2012 14:30 Leite Júnior QUESTÕES CESPE BACKUP

www.leitejunior.com.br 29/06/2012 14:30 Leite Júnior QUESTÕES CESPE BACKUP QUESTÕES CESPE BACKUP QUESTÃO 01 - Analise as seguintes afirmações relativas a cópias de segurança. I. No Windows é possível fazer automaticamente um backup, em um servidor de rede, dos arquivos que estão

Leia mais

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira

MICROSOFT ACCESS MICROSOFT ACCESS. Professor Rafael Vieira Professor Rafael Vieira MICROSOFT ACCESS MICROSOFT ACCESS Professor Rafael Vieira Professor Rafael Vieira - Access - Programa de base de dados relacional funciona em Windows Elementos de uma Base de Dados: Tabelas Consultas Formulários

Leia mais

as citações devem ser apresentadas conforme a norma NBR 10520/2002; citação: é a menção de uma informação extraída de alguma fonte.

as citações devem ser apresentadas conforme a norma NBR 10520/2002; citação: é a menção de uma informação extraída de alguma fonte. COMO FAZER CITAÇÕES? as citações devem ser apresentadas conforme a norma NBR 10520/2002; citação: é a menção de uma informação extraída de alguma fonte. REGRAS GERAIS DE APRESENTAÇÃO citação pelo sobrenome

Leia mais

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto Conceitos de Linguagens de Roteiro: Apresentação do plano de ensino; Apresentação do plano de

Leia mais

UNIÃO EDUCACIONAL DO NORTE UNINORTE AUTOR (ES) AUTOR (ES) TÍTULO DO PROJETO

UNIÃO EDUCACIONAL DO NORTE UNINORTE AUTOR (ES) AUTOR (ES) TÍTULO DO PROJETO UNIÃO EDUCACIONAL DO NORTE UNINORTE AUTOR (ES) AUTOR (ES) TÍTULO DO PROJETO RIO BRANCO Ano AUTOR (ES) AUTOR (ES) TÍTULO DO PROJETO Pré-Projeto de Pesquisa apresentado como exigência no processo de seleção

Leia mais

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007 ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007 CURITIBA 2015 2 SUMÁRIO INTRODUÇÃO AO MICROSOFT POWERPOINT 2007... 3 JANELA PRINCIPAL... 3 1 - BOTÃO OFFICE... 4 2 - FERRAMENTAS DE ACESSO

Leia mais

Aula 10 Introdução à Algoritmos. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www3.ifrn.edu.

Aula 10 Introdução à Algoritmos. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www3.ifrn.edu. Aula 10 Introdução à Algoritmos Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www3.ifrn.edu.br/~brunogomes Agenda da Aula Introdução aos Algoritmos: Conceitos Iniciais; Programa

Leia mais

A Educação Bilíngüe. » Objetivo do modelo bilíngüe, segundo Skliar:

A Educação Bilíngüe. » Objetivo do modelo bilíngüe, segundo Skliar: A Educação Bilíngüe Proposta de educação na qual o bilingüismo atua como possibilidade de integração do indivíduo ao meio sociocultural a que naturalmente pertence.(eulália Fernandes) 1 A Educação Bilíngüe»

Leia mais

Sumário. Uma visão mais clara da UML

Sumário. Uma visão mais clara da UML Instituto Federal de Santa Catarina Câmpus Chapecó Ensino Médio Integrado em Informática Módulo V Unidade Curricular: Engenharia de Software Professora: Lara P. Z. B. Oberderfer Uma visão mais clara da

Leia mais

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar

Leia mais