DEPARTAMENTO DE ENGENHARIAS E CIÊNCIA DA COMPUTAÇÃO Disciplina: Linguagens Formais Código: 30-474 Carga Horária: 80h (60h Teórica + 20h Prática) Nº de Créditos: 04
EMENTA Gramáticas, Linguagens e formalismo, Autômatos e Reconhecedores.
OBJETIVOS Compreender e identificar gramáticas gerativas, construir máquinas reconhecedoras baseadas em autômatos e classificar as linguagens de acordo com a hierarquia de Chomsky. Capacitar o aluno para construir analisadores léxicos baseados em autômatos finitos.
CONTEÚDOS CURRICULARES Classes de Solucionabilidade de Problemas Problema Solucionável Problema Não-Solucionável Problema Parcialmente Solucionável ou Computável Problema Não-Solucionável ou Não-Computável Definições de Linguagens Formais O que é uma Linguagem Formal Símbolo Alfabeto Cadeia Linguagem Hierarquia de Chomsky Linguagens Regulares Expressões Regulares Gramática Gerativa Elementos de uma Gramática Notação Backus-Naur Form para Gramáticas Derivação de Gramáticas Tipos de Gramáticas Gramáticas Regulares Reconhecedores Autômatos Finitos Determinísticos e Não Determinísticos Determinização de Autômatos Finitos Não Determinísticos Minimização de Autômatos Finitos Gramáticas Livres do Contexto Ambiguidade Simplificações Eliminação de Símbolos Inúteis e Inalcançáveis Eliminação de Épsilon Produções Eliminação de Produções Unitárias Fatoração Eliminação de Recursão à Esquerda
METODOLOGIA Os alunos desenvolverão Trabalhos Discente Efetivos (TDE) no total de 20h, de acordo com o planejamento do professor: estudos de caso, pesquisas bibliográficas, resolução de problemas e lista de exercícios. O desenvolvimento dos conteúdos será feito através de aulas expositivas no quadro, acompanhada da apostila da disciplina para a discussão dos itens de cunho teórico. A seguir, dar-se-á a realização de exercícios práticos para fixação do conteúdo estudado. A resolução de exercícios será seguida da correção dos mesmos pelo professor, com a participação dos alunos, a fim de demonstrar e fixar os conceitos estudados. No decorrer do semestre, serão utilizadas metodologias ativas com o objetivo de potencializar o processo de ensino-aprendizagem.
AVALIAÇÃO Para esta disciplina a avaliação semestral deve considerar a média ponderada entre as notas, que serão definidas através das seguintes avaliações: Parte da avaliação da disciplina, com peso 20%, será referente às atividades desenvolvidas nas TDEs, conforme previsto pelas regras da graduação Ativa da URI; Comporá também uma das notas da disciplina a avaliação do aluno conforme o projeto integrador, com peso a ser definido pelo professor de acordo com o tema norteador e projeto aplicado no semestre; O restante das notas consistirá em provas e trabalhos (teóricos e/ou práticos), com assuntos específicos da disciplina. A atribuição de notas para a avaliação do desempenho do acadêmico, segue o prescreve o Regimento Geral da Universidade, Art. 88 a 92.
|
BIBLIOGRAFIA BÁSICA PRICE, A. M. A. Implementação de Linguagens de Programação: Compiladores. São Paulo: Bookman. 2007. HOPCROFT, J.; ULLMAN, J. MOTWANI, R. Introdução à Teoria de Autômatos, Linguagens e Computação. Edição Traduzida. São Paulo: Campus. Menezes, P. B. Blauth. Linguagens Formais e Autômatos. 6. ed. Porto Alegre: Bookman, 2011. (Biblioteca Virtual).
BIBLIOGRAFIA COMPLEMENTAR AHO, A. V.; Sethi, R.; LAM, Monica S. e ULLMAN, J. D. Compiladores: Princípios, Técnicas e Ferramentas. 2. ed. São Paulo: Prentice Hall. 2010. RAMOS, M. V., JOSÉ NETO, J., VEJA, I. S. Linguagens Formais: Teoria, Modelagem e Implementação. Porto Alegre: Bookman, 2011. (Biblioteca Virtual). DELAMARO, Márcio Eduardo. Como construir um compilador utilizando ferramentas Java. São Paulo: Novatec, 2004. GRUNE, Dick (Et al.). Projeto moderno de compiladores: implementação e aplicações. Rio de Janeiro: Campus, 2001. LOUDEN, Kenneth C. Compiladores: princípios e prática. São Paulo: Pioneira Thomson Learning, 2004.
|