You are on page 1of 50

Aspectos Tericos da

Computao
Prof. Luiz Fernando R B Corra

O Professor

Mestre em Engenharia de Software


CESAR.EDU

Especialista em Planejamento e Gesto


Organizacional FCAP/UPE

Especialista em TI CIN/UFPE

Graduado em Cincia da Computao UNICAP

Durante as aulas

No conversar

Participar das discusses e exerccios

Celulares desligados ou no silencioso


(excees)

Pontualidade

Assiduidade

Faltas

Mximo 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/coordenao

Chamada

No fim de cada aula

Cargas Horrias

Semanal: 3 horas-aula
Semestral: 66 horas-aula

Horrio

Teras-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,
gramticas e reconhecedores.

Hierarquia de Chomsky.

Expresses regulares.

Autmatos finitos determinsticos e


no determinsticos.

Objetivos Gerais

Ao trmino desta disciplina o aluno


dever conhecer:
Tipos

de linguagens, as gramticas que


as geram e os autmatos que as
reconhecem. Visando a especificao /
implementao de linguagens de
programao.

Objetivos Especficos

Fornecer ao aluno subsdios para que o


mesmo possa definir linguagens de
programao, isto , sua sintaxe e
semntica, atravs do estudo das
gramticas formais. De tal forma que o
mesmo passe a conhecer o processo de
especificao e implementao de
linguagens de programao, a partir do
estudo dos conceitos, modelos, tcnicas
e ferramentas que compem a Teoria
das Linguagens Formais.

Contedo Programtico

Fundamentos Matemticos
Tipos

de relaes em conjuntos
Fecho de uma relao
Grafos bidirecionais.

Conceitos Bsicos de Linguagens


Alfabetos
Palavras

sobre um alfabeto
Linguagens
Gramtica Irrestrita: definio, regras
de produo e derivao.

Contedo Programtico

Gramtica Sensvel ao Contexto.

Gramticas Livres de Contexto

Linguagens Livres de Contexto.

rvores de derivao
Ambigidade.

Contedo Programtico

Linguagens Regulares
Autmatos

finitos determinsticos e nodeterminsticos


Expresses regulares
Tcnicas para identificar e descrever
linguagens regulares
Tcnicas para mostrar que uma linguagem
no regular
Propriedades de tais linguagens.

Estratgia de Trabalho

Aulas expositivas seguidas de


desenvolvimento de exerccios
prticos.

Lista de exerccios/projetos para


serem resolvidas fora da sala de
aula para fixao dos assuntos
abordados nas aulas expositivas.

Avaliao

Mdia das provas bimestrais com a


nota das listas de exerccio/projetos.
O

contedo das provas ser baseado no


que foi visto em sala de aula.

Bibliografia
Bsica

LEWIS, Harry R. & PAPADIMITRIOU, Christos H.


Elementos de Teoria da Computao. 2.ed.
Porto Alegre, Bookman, 2000.

MENEZES, Paulo Blauth. Linguagens formais


e autmatos. 2.ed. Porto Alegre, Sagra
Luzzatto, 1998. 165p.

HOPCROFT, JOHN E.; ULLMAN, Jeffrei D.;


MOTWANI, Rajeev; Introduo Teoria de
Autmatos, Linguagens e Computao; 2002;
Ed Campus.

Bibliografia
Complementar

DIVERIO, T. A. E Menezes, P.B. Teoria da Computao Mquinas


Universais e Computabilidade, Srie Livros Didticos Nmero 5,
Instituto de Informtica, da UFRGS, Editora Sagra Luzzatto, 1a
edio, 1999.

BRAINERD, W. S.; Landweber, L. H. Theory of computation.


New York: John Wiley & Sons, 1974.

SIPSER, Michael; Introduo Teoria da Computao; 2007;


Ed. Thomson Pioneira.

LEWIS, HARRY ; PAPADIMITRIOU, Christos H.; Elementos de


Teoria da Computao; 2a Ed 2004; Ed BOOKMAN COMPANHIA.

BLAUTH, Paulo; HAPULER, Edward Hermann; Teoria das


Categorias para Cincia da Computao.

Bibliografia
Suporte

Wikipedia: http://www.wikipedia.org

Scribd: http://www.scribd.com

Aluno

Nome
Expectativa
Trabalha? Com que?
Programa?
Ingls?
Perodo
J pagou a disciplina de Grafos?
J pagou a disciplina de Lgica?

O que ?
Computao

WordNet
the

procedure of calculating; determining


something by mathematical or logical
methods
problem solving that involves numbers or
quantities

Houaiss
cmputo,

clculo, contagem; operao


matemtica ou lgica realizada por regras
prticas preestabelecidas

O que ?
Computao

Wikipedia
Soluo

de um problema ou, formalmente,


o clculo de uma funo, atravs de um
algoritmo

O que ?
Cincia da Computao

Sabha
conhecimento

sistematizado relativo

computao
O estudo das bases e modelos que
fundamentam o funcionamento de
processamentos computacionais.

O que ?
Teoria da Computao

Sub-campo da cincia da computao


(CC) e matemtica, que busca
determinar quais problemas podem
ser computados em um dado modelo
de computao.

Fundamentao terica para a CC

Tratamento matemtico da CC

O que ?
Teoria da Computao: Contextualizao

Questes Centrais
Quais

as capacidades e limitaes
fundamentais dos computadores?
O que pode e o que no pode (problema)
ser resolvido por computadores?
O que faz alguns problemas serem
computacionalmente mais difceis que
outros?

O que ?
Teoria da Computao: Contextualizao

reas Centrais
Teoria

definio e propriedades de modelos


matemticos de computao

Teoria

da Computabilidade

tese de Church-Turing (algoritmos),


decidibilidade e indecidibilidade

Teoria

dos Autmatos

da Complexidade Computacional

classificao de problemas como fceis ou


difceis (polinomiais x exponenciais).

Tipos de Problemas

No-Tratveis: No existe algoritmo


que resolva o problema.

Tratveis: Existe um algoritmo que


resolve o problema.

Como comeou ?

Com as perguntas:
1.

COMO ? (as linguagens so definidas)


Estudo de gramticas de Noam Chomsky

Fonte: HARA, 2009

Como comeou ?
Continuao
2.

O QUE ? (o que conseguimos computar? o


que um algoritmo?)
I.
O algoritmo deve ser completo, finito e
determinstico.
completo: sempre produz um resultado
finito: tem uma seqncia finita de
instrues
determinstico: sempre produz o
mesmo resultado para a mesma
entrada

Como comeou ?
Continuao
2.

O QUE ? (o que conseguimos computar? o


que um algoritmo?)
II. necessidade de um modelo formal e
abstrato de computao
III. Exemplo: funes recursivas, clculo
lambda, mquinas RAM, mquinas de
Turing (provado que so todos
equivalentes)

Como comeou ?
Continuao
2.

O QUE ? (o que conseguimos computar? o


que um algoritmo?)
IV. Hiptese de Church-Turing: um problema
tem uma soluo algortmica se, e
somente se, pode ser resolvido por um
dos sistemas computacionais
mencionados na transparncia anterior

Como comeou ?
Continuao
2.

O QUE ? (o que conseguimos computar? o


que um algoritmo?)
V. Problemas com soluo computacional ou
sem soluo computacional
IV.
.

Exemplo de problemas sem soluo:


Determinar se um programa termina para
todas as entradas possveis
Determinar se dois programas computam a
mesma funo

Como comeou ?
Continuao
2.

O QUE ? (o que conseguimos computar? o que


um algoritmo?)
Um Modelo de Computao: Mquina Abstrata.
Deve capturar aspectos relevantes

conj. de smb. para representar dados finito (fin).


Cada dado representado de forma fin.
A ao a ser executada em cada momento
determinada com base no dado que est sendo
observado e no estado interno.
Cada ao executada mecanicamente, em tempo
fin.
O nm de possveis estados internos distintos fin.

Como comeou ?
Continuao
2.

O QUE ? (o que conseguimos computar? o que


um algoritmo?)
Um Modelo de Computao: Mquina Abstrata.

E abstrair aspectos irrelevantes


A

velocidade de execuo.
A capacidade da memria.

Como comeou ?
Continuao
O QUE ? (o que conseguimos computar? o que
um algoritmo?)
Um Modelo de Computao

2.

Deve ser to simples quanto possvel


Conj.

de smbolos para representar dados: {0; 1}.


Apenas 1 smbolo observado de cada vez.
Uma ao consiste simplesmente em:
ler um smbolo
Verificar o estado atual
mudar o estado interno
mudar a posio de leitura do prximo smbolo
Um estado interno pode ser um estado de parada.

Como comeou ?
3.

QUANTO CUSTA? (computar)


problemas tratveis ou intratveis
Ex: intratveis (tem soluo com
recursos ilimitados): computar todas
as possveis jogadas de xadrez com
1000 movimentos

Histrico/Evoluo

O que os computadores podem


calcular? (~1930)
Resposta

necessitava de um modelo
formal de computabilidade

~1935
Kurt

Gedel : funes -recursivas


Alonso Church: -Calculus
Alan Turing: Mquina de Turing

~1940 - Baseado nessas e em


outras idias foram construdos os
primeiros computadores

Exemplos de Aplicao

Anlise lxica e anlise sinttica de


linguagens de programao

Modelagem de circuitos lgicos ou


redes lgicas

Modelagem de sistemas biolgicos

Sintaxe e Semntica

Linguagens Formais
problemas

sintticos das linguagens

Sintaxe e Semntica

Sintaxe e Semntica

Historicamente, o problema sinttico


Mais

simples que o semntico


Reconhecido/tratado antes do problema
semntico

Sintaxe e Semntica

Conseqncia
Maior

nfase sintaxe
Criando a impresso que as questes
relativas s resumiam-se s questes da
sintaxe

Teoria da sintaxe possui construes


matemticas
Bem

definidas e universalmente
reconhecidas
Exemplo: Gramticas de Chomsky

Sintaxe e Semntica

Linguagem de programao (ou


qualquer modelo matemtico) pode ser
vista como uma entidade
livre,

sem qualquer significado associado


juntamente com uma interpretao do seu
significado

Sintaxe e Semntica

Sintaxe
Trata das propriedades livres da
linguagem
Ex: verificao gramatical de
programas
Semntica
objetiva dar uma interpretao para a
linguagem
Ex: significado ou valor para um
determinado programa

Sintaxe e Semntica

Ou seja, a sintaxe:
manipula

smbolos
No considera os seus significados

Para problemas reais


Necessrio

interpretar semanticamente os

smbolos
exemplo: estes smbolos representam os
inteiros

Sintaxe e Semntica

Sintaticamente "errado
no

existe tal noo de programa


simplesmente no um programa da
linguagem

Sintaticamente vlido ("correto")


pode

no ser o programa que o


programador esperava escrever

Sintaxe e Semntica

Programa "correto" ou "errado


se

o mesmo modela adequadamente o


comportamento desejado

Limites entre a sintaxe e a semntica


nem

sempre so claros
exemplo: ocorrncia de um nome em um
programa pode ser tratado facilmente com
um problema sinttico ou semntico
entretanto, em linguagens artificiais

distino entre sintaxe e semntica (em


geral) bvia para a maioria dos problemas
relevantes

Sintaxe e Semntica

Anlise Lxica
tipo

especial de anlise sinttica


centrada nas componentes bsicas da
linguagem
portanto, tambm nfase das Linguagens
Formais
Processo de converter uma sequncia de
caracteres em uma sequncia de tokens
(smbolos lxicos)
Verifica determinado alfabeto
Vem antes da anlise sinttica
propriamente dita

Ferramentas

JFLAP
http://www.jflap.org/

SCTMF
http://www.din.uem.br/~yandre/sctmf/

Visual Automata Simulator


http://www.cs.usfca.edu/~jbovet/vas.html

Instalao do JFlap

Ferramenta visual usada para criar e


simular diversos tipos de autmatos, e
converter diferentes representaes de
linguagens.

JFLAP JAVA Formal Language and


Automata Package http://homepages.dcc.ufmg.br/~nvieira
/cursos/tl/a05s2/relatorio_curso.doc

Instalao do JFlap

JFLAP 7.0 Tutorial:


http://www.cs.duke.edu/csed/jflap/tutorial/

Referncias
Aula

WordNet - http://wordnet.princeton.edu/
Dicionrio Houaiss da Lingua Portuguesa http://houaiss.uol.com.br
Wikipedia http://www.wikipedia.org
http://en.wikipedia.org/wiki/Theory_of_computation
CI059 - Introduo a Teoria da Computao - Segundo
Semestre de 2009 - Profa. Carmem Hara .
http://www.inf.ufpr.br/carmem/ci059/
Teoria da Computao. Prof. Fabiano Sabha. http://
www.fabianosabha.com.br
Linguagens Formais e Automatos. Prof. Eduardo Araujo
Oliveira. http://sites.google.com/site/eaoufpe/

You might also like