Aspectos Teóricos da
Computação
Prof. Luiz Fernando R B Corrêa
O Professor




Mestre em Engenharia de Software –
CESAR.EDU
Especialista em Planejamento e Gestão
Organizacional – FCAP/UPE
Especialista em TI – CIN/UFPE
Graduado em Ciência da Computação UNICAP
Durante as aulas

Não conversar

Participar das discussões e exercícios

Celulares desligados ou no silencioso
(exceções)

Pontualidade

Assiduidade
Faltas



Máximo 25% das aulas
Justificativa até a aula seguinte ou 7
dias úteis. O que ocorrer primeiro
Depois do prazo de justificativa de
faltas, só com a secretaria/coordenação
Chamada

No fim de cada aula
Cargas Horárias


Semanal: 3 horas-aula
Semestral: 66 horas-aula
Horário

Terças-feiras



Primeira Aula: 19:10h - 20:25h
Intervalo: 20:25h – 20:40h
Segunda Aula: 20:40h - 21:55h
Ementa

Elementos de linguagens formais,
cadeias, alfabetos, linguagens,
gramáticas e reconhecedores.

Hierarquia de Chomsky.

Expressões regulares.

Autômatos finitos determinísticos e
não determinísticos.
Objetivos Gerais

Ao término desta disciplina o aluno
deverá conhecer:

Tipos de linguagens, as gramáticas que
as geram e os autômatos que as
reconhecem. Visando a especificação /
implementação de linguagens de
programação.
Objetivos Específicos

Fornecer ao aluno subsídios para que o
mesmo possa definir linguagens de
programação, isto é, sua sintaxe e
semântica, através do estudo das
gramáticas formais. De tal forma que o
mesmo passe a conhecer o processo de
especificação e implementação de
linguagens de programação, a partir do
estudo dos conceitos, modelos, técnicas
e ferramentas que compõem a Teoria
das Linguagens Formais.
Conteúdo Programático

Fundamentos Matemáticos




Tipos de relações em conjuntos
Fecho de uma relação
Grafos bidirecionais.
Conceitos Básicos de Linguagens




Alfabetos
Palavras sobre um alfabeto
Linguagens
Gramática Irrestrita: definição, regras
de produção e derivação.
Conteúdo Programático

Gramática Sensível ao Contexto.

Gramáticas Livres de Contexto

Linguagens Livres de Contexto.


Árvores de derivação
Ambigüidade.
Conteúdo Programático

Linguagens Regulares





Autômatos finitos determinísticos e nãodeterminísticos
Expressões regulares
Técnicas para identificar e descrever
linguagens regulares
Técnicas para mostrar que uma linguagem
não é regular
Propriedades de tais linguagens.
Estratégia de Trabalho


Aulas expositivas seguidas de
desenvolvimento de exercícios
práticos.
Lista de exercícios/projetos para
serem resolvidas fora da sala de
aula para fixação dos assuntos
abordados nas aulas expositivas.
Avaliação

Média das provas bimestrais com a
nota das listas de exercício/projetos.

O conteúdo das provas será baseado no
que foi visto em sala de aula.
Bibliografia
Básica



LEWIS, Harry R. & PAPADIMITRIOU, Christos H.
Elementos de Teoria da Computação. 2.ed.
Porto Alegre, Bookman, 2000.
MENEZES, Paulo Blauth. Linguagens formais
e autômatos. 2.ed. Porto Alegre, Sagra
Luzzatto, 1998. 165p.
HOPCROFT, JOHN E.; ULLMAN, Jeffrei D.;
MOTWANI, Rajeev; Introdução À Teoria de
Autômatos, Linguagens e Computação; 2002;
Ed Campus.
Bibliografia
Complementar





DIVERIO, T. A. E Menezes, P.B. Teoria da Computação
Máquinas Universais e Computabilidade, Série Livros Didáticos
Número 5, Instituto de Informática, da UFRGS, Editora Sagra
Luzzatto, 1a edição, 1999.
BRAINERD, W. S.; Landweber, L. H. Theory of computation.
New York: John Wiley & Sons, 1974.
SIPSER, Michael; Introdução à Teoria da Computação; 2007;
Ed. Thomson Pioneira.
LEWIS, HARRY ; PAPADIMITRIOU, Christos H.; Elementos de
Teoria da Computação; 2a Ed 2004; Ed BOOKMAN
COMPANHIA.
BLAUTH, Paulo; HAPULER, Edward Hermann; Teoria das
Categorias para Ciência da Computação.
Bibliografia
Suporte

Wikipedia: http://www.wikipedia.org

Scribd: http://www.scribd.com
Aluno








Nome
Expectativa
Trabalha? Com que?
Programa?
Inglês?
Período
Já pagou a disciplina de Grafos?
Já pagou a disciplina de Lógica?
O que é?
Computação

WordNet



the procedure of calculating; determining
something by mathematical or logical
methods
problem solving that involves numbers or
quantities
Houaiss

cômputo, cálculo, contagem; operação
matemática ou lógica realizada por regras
práticas preestabelecidas
O que é?
Computação

Wikipedia

Solução de um problema ou, formalmente,
o cálculo de uma função, através de um
algoritmo
O que é?
Ciência da Computação

Sabha

conhecimento sistematizado relativo à
computação
 O estudo das bases e modelos que
fundamentam o funcionamento de
processamentos computacionais.
O que é?
Teoria da Computação

Sub-campo da ciência da computação
(CC) e matemática, que busca
determinar quais problemas podem
ser computados em um dado modelo
de computação.

Fundamentação teórica para a CC

Tratamento matemático da CC
O que é?
Teoria da Computação: Contextualização

Questões Centrais



Quais as capacidades e limitações
fundamentais dos computadores?
O que pode e o que não pode (problema)
ser resolvido por computadores?
O que faz alguns problemas serem
computacionalmente mais difíceis que
outros?
O que é?
Teoria da Computação: Contextualização

Áreas Centrais

Teoria dos Autômatos


Teoria da Computabilidade


definição e propriedades de modelos
matemáticos de computação
tese de Church-Turing (algoritmos),
decidibilidade e indecidibilidade
Teoria da Complexidade Computacional

classificação de problemas como fáceis ou
difíceis (polinomiais x exponenciais).
Tipos de Problemas


Não-Tratáveis: Não existe algoritmo
que resolva o problema.
Tratáveis: Existe um algoritmo que
resolve o problema.
Como começou ?

Com as perguntas:
1.
COMO ? (as linguagens são definidas)
Estudo de gramáticas de Noam Chomsky
Fonte: HARA, 2009
Como começou ?
Continuação
2.
O QUE ? (o que conseguimos computar? o
que é um algoritmo?)
I.
O algoritmo deve ser completo, finito e
determinístico.
 completo: sempre produz um resultado
 finito: tem uma seqüência finita de
instruções
 determinístico: sempre produz o
mesmo resultado para a mesma
entrada
Como começou ?
Continuação
2.
O QUE ? (o que conseguimos computar? o
que é um algoritmo?)
II. necessidade de um modelo formal e
abstrato de computação
III. Exemplo: funções recursivas, cálculo
lambda, máquinas RAM, máquinas de
Turing (provado que são todos
equivalentes)
Como começou ?
Continuação
2.
O QUE ? (o que conseguimos computar? o
que é um algoritmo?)
IV. Hipótese de Church-Turing: um problema
tem uma solução algorítmica se, e
somente se, pode ser resolvido por um
dos sistemas computacionais
mencionados na transparência anterior
Como começou ?
Continuação
2.
O QUE ? (o que conseguimos computar? o
que é um algoritmo?)
V. Problemas com solução computacional ou
sem solução computacional
IV.


Exemplo de problemas sem solução:
Determinar se um programa termina para
todas as entradas possíveis
Determinar se dois programas computam a
mesma função
Como começou ?
Continuação
2.
O QUE ? (o que conseguimos computar? o que
é um algoritmo?)
Um Modelo de Computação: Máquina Abstrata.
Deve capturar aspectos relevantes
O
conj. de símb. para representar dados é finito (fin).
Cada dado é representado de forma fin.
A ação a ser executada em cada momento é
determinada com base no dado que está sendo
observado e no estado interno.
Cada ação é executada mecanicamente, em tempo
fin.
O núm de possíveis estados internos distintos é fin.
Como começou ?
Continuação
2.
O QUE ? (o que conseguimos computar? o que
é um algoritmo?)
Um Modelo de Computação: Máquina Abstrata.
E abstrair aspectos irrelevantes
A
velocidade de execução.
A capacidade da memória.
Como começou ?
Continuação
2.
O QUE ? (o que conseguimos computar? o que
é um algoritmo?)
Um Modelo de Computação
Deve ser tão simples quanto possível
Conj.
de símbolos para representar dados: {0; 1}.
Apenas 1 símbolo é observado de cada vez.
Uma ação consiste simplesmente em:
ler um símbolo
Verificar o estado atual
mudar o estado interno
mudar a posição de leitura do próximo símbolo
Um estado interno pode ser um estado de parada.
Como começou ?
3.
QUANTO CUSTA? (computar)
 problemas tratáveis ou intratáveis
 Ex: intratáveis (tem solução com
recursos ilimitados): computar todas
as possíveis jogadas de xadrez com
1000 movimentos
Histórico/Evolução

O que os computadores podem
calcular? (~1930)


~1935




Resposta necessitava de um modelo
formal de computabilidade
Kurt Göedel : funções μ-recursivas
Alonso Church: λ-Calculus
Alan Turing: Máquina de Turing
~1940 - Baseado nessas e em
outras idéias foram construídos os
primeiros computadores
Exemplos de Aplicação



Análise léxica e análise sintática de
linguagens de programação
Modelagem de circuitos lógicos ou
redes lógicas
Modelagem de sistemas biológicos
Sintaxe e Semântica

Linguagens Formais


problemas sintáticos das linguagens
Sintaxe e Semântica
Sintaxe e Semântica

Historicamente, o problema sintático


Mais simples que o semântico
Reconhecido/tratado antes do problema
semântico
Sintaxe e Semântica

Conseqüência



Maior ênfase à sintaxe
Criando a impressão que as questões
relativas às resumiam-se às questões da
sintaxe
Teoria da sintaxe possui construções
matemáticas


Bem definidas e universalmente
reconhecidas
Exemplo: Gramáticas de Chomsky
Sintaxe e Semântica

Linguagem de programação (ou
qualquer modelo matemático) pode ser
vista como uma entidade


livre, sem qualquer significado associado
juntamente com uma interpretação do seu
significado
Sintaxe e Semântica


Sintaxe
 Trata das propriedades livres da
linguagem
 Ex: verificação gramatical de
programas
Semântica
 objetiva dar uma interpretação para a
linguagem
 Ex: significado ou valor para um
determinado programa
Sintaxe e Semântica

Ou seja, a sintaxe:



manipula símbolos
Não considera os seus significados
Para problemas reais


Necessário interpretar semanticamente os
símbolos
exemplo: estes símbolos representam os
inteiros
Sintaxe e Semântica

Sintaticamente "errado“



não existe tal noção de programa
simplesmente não é um programa da
linguagem
Sintaticamente válido ("correto")

pode não ser o programa que o
programador esperava escrever
Sintaxe e Semântica

Programa "correto" ou "errado“


se o mesmo modela adequadamente o
comportamento desejado
Limites entre a sintaxe e a semântica



nem sempre são claros
exemplo: ocorrência de um nome em um
programa pode ser tratado facilmente com
um problema sintático ou semântico
entretanto, em linguagens artificiais

distinção entre sintaxe e semântica é (em
geral) óbvia para a maioria dos problemas
relevantes
Sintaxe e Semântica

Análise Léxica






tipo especial de análise sintática
centrada nas componentes básicas da
linguagem
portanto, também é ênfase das Linguagens
Formais
Processo de converter uma sequência de
caracteres em uma sequência de tokens
(símbolos léxicos)
Verifica determinado alfabeto
Vem antes da análise sintática
propriamente dita
Ferramentas

JFLAP


SCTMF


http://www.jflap.org/
http://www.din.uem.br/~yandre/sctmf/
Visual Automata Simulator

http://www.cs.usfca.edu/~jbovet/vas.html
Instalação do JFlap


Ferramenta visual usada para criar e
simular diversos tipos de autômatos, e
converter diferentes representações de
linguagens.
JFLAP JAVA Formal Language and
Automata Package http://homepages.dcc.ufmg.br/~nvieir
a/cursos/tl/a05s2/relatorio_curso.doc
Instalação do JFlap

JFLAP 7.0 Tutorial:

http://www.cs.duke.edu/csed/jflap/tutorial/
Referências
Aula







WordNet - http://wordnet.princeton.edu/
Dicionário Houaiss da Lingua Portuguesa http://houaiss.uol.com.br
Wikipedia – http://www.wikipedia.org
http://en.wikipedia.org/wiki/Theory_of_computation
CI059 - Introdução a Teoria da Computação - Segundo
Semestre de 2009 - Profa. Carmem Hara .
http://www.inf.ufpr.br/carmem/ci059/
Teoria da Computação. Prof. Fabiano Sabha.
http://www.fabianosabha.com.br
Linguagens Formais e Automatos. Prof. Eduardo Araujo
Oliveira. http://sites.google.com/site/eaoufpe/
Download

Aspectos Teóricos da Computação