Automatocom Pilha Pushdown Automaton

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

Download "Automatocom Pilha Pushdown Automaton"

Transcrição

1 Automatocom Pilha Pushdown Automaton 1

2 Algoritmos Recursivos e Pilhas Princípio Geral em Computação: Qualquer algoritmo recursivo pode ser transformado em um não-recursivousando-se umapilhae um while-loop, que termina apenas quando a pilha está vazia. EX: JVM mantémosregistrosde ativaçãode cada chamada de método. Considere: long factorial(int n){ if (n<=0) return 1; return n*factorial(n-1); } Como JVM executa factorial(5)? 2

3 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); Compute 5! 3

4 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(5)= 5 f(4) 4

5 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(4)= 4 f(3) f(5)= 5 f(4) 5

6 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 6

7 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(2)= 2 f(1) f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 7

8 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(1)= 1 f(0) f(2)= 2 f(1) f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 8

9 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); f(0)= 1 f(1)= 1 f(0) f(2)= 2 f(1) f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 9

10 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); 1 1= 1 f(2)= 2 f(1) f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 10

11 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); 2 1= 2 f(3)= 3 f(2) f(4)= 4 f(3) f(5)= 5 f(4) 11

12 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); 3 2= 6 f(4)= 4 f(3) f(5)= 5 f(4) 12

13 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); 4 6= 24 f(5)= 5 f(4) 13

14 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); 5 24=

15 Algoritmos Recursivos e Pilhas long factorial(int n){ } if (n<=0) return 1; return n*factorial(n-1); Return 5! =

16 De CFG s paraautômatoscom Pilha CFG s definem procedimentos recursivos: boolean derives(strings x, y) 1. if (x==y) return true 2. for(all u y) if derives(x,u) return true 3. return false EX: S # asa bsb 16

17 De CFG s para Máquinas de Pilha Por princípios gerais, qualquer computação recursiva pode ser executada usando-se uma pilha. Isso pode ser feito em uma versão simplificada de máquina com pilha de registro de ativação, chamada Autômato de Pilha ( Pushdown Automaton PDA) Q: Qual é a linguagem gerada por S # asa bsb? 17

18 De CFG s para Máquinas de Pilha R: Palíndromos em {a,b,#}* contendo exatamente um símbolo #. Q: Usando uma pilha, como podemos reconhecer tais strings? 18

19 De CFG s para Máquinas de Pilha A: Usamos um processo com três fases: 1. modo Push : Antes de ler #, emplihe qualquer símbolo lido. 2. Ao ler # troque de modo de operação. 3. modo Pop : Leia os símbolos restantes garantindo que cada novo símbolo lido é idêntico ao símbolo desempilhado. Aceite se for capaz de concluir com a pilha vazia. Caso contrário, rejeite; e rejeite se não for possível desempilhar em algum caso. 19

20 De CFG s para Máquinas de Pilha read ==a ou b? Push it read == top? Pop else: CRASH! (1) PUSH (2) read == #? (ignore stack) (3) POP empty stack? ACCEPT 20

21 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa 21

22 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a 22

23 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a a 23

24 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a a a 24

25 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa b a a a 25

26 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa b a a a 26

27 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a a a 27

28 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a a 28

29 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baa a REJECT (nonempty stack) 29

30 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaa a a 30

31 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaa a 31

32 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaa Pause input 32

33 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaa ACCEPT 33

34 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaaa a a 34

35 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaaa a 35

36 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaaa Pause input 36

37 De CFG s para Máquinas de Pilha read a or b? Push it read == peek? Pop Else: CRASH! (1) PUSH (2) read #? (ignore stack) (3) POP empty stack? ACCEPT aaab#baaaa CRASH 37

38 PDA s àla Sipser Para facilitar a análise, máquinas de pilha teóricas têm um conjuntorestritode operações. Cadalivro-author tem sua própria versão. PDAs descritos em Sipser são assim: Push/Pop agrupadosemúnicaoperação: substituiro símbolono topoda pilha Nenhum teste intrínsico de pilha vazia Epsilon é usadoparaaumentara funcionalidade: máquinas não deterministas. 38

39 Torna-se: read a or b? Push it Versão Sipser s (1) PUSH (2) read #? (ignore stack) a, ε a b, ε b read == peek? Pop Else: CRASH! (3) POP a, a ε b, b ε empty stack? ACCEPT ε, ε $ #, ε ε ε, $ ε 39

40 Versão Sipser s p x, y z q Significado da convenção do rótulo: Se está no estado p eo próximo símbolo é x e o topo da pilha é y, então vá para q e substitua ypor z na pilha. x = ε: ignore a entrada, não leia y = ε: ignore o topo da pilha e empilhe z z = ε: desempilhe y 40

41 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ #, ε ε ε, $ ε push $ para detectar pilha vazia 41

42 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ #, ε ε ε, $ ε aaab#baaa 42

43 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε $ 43

44 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a $ 44

45 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a a $ 45

46 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a a a $ 46

47 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε b a a a $ 47

48 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε b a a a $ 48

49 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a a a $ 49

50 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a a $ 50

51 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε a $ 51

52 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε $ 52

53 Versão Sipser s a, ε a b, ε b a, a ε b, b ε ε, ε $ aaab#baaa #, ε ε ε, $ ε ACCEPT! 53

54 PDA Definição Formal DEF: Um autômatode pilha(pda) é uma6- tupla M = (Q, Σ, Γ, δ, q 0, F ) ondeq, Σe q 0, são comoparaum AF. Γ é o alpfabetoda pilha. δé uma função: δ : Q Σ Γ P ( Q Γ ε ε Portanto, dado um estadop,umasímbololido x e um símbolode pilhay, δ(p,x,y) retornatodo (q,z) talqueq é um estadoalvoe z é um símboloque deve substituir y. ε ) 54

55 PDA Definição Formal a, ε ε a, ε a b, ε b a, a ε b, b ε ε, ε $ b, ε $ ε, $ ε Q: O que é δ(p,x,y) em cada caso? 1. δ(0,a,b) 2. δ(0,ε,ε) 3. δ(1,a,ε) 4. δ(3,ε,ε) 3 55

56 PDA Definição Formal a, ε ε a, ε a b, ε b a, a ε b, b ε ε, ε $ b, ε $ ε, $ ε R: 1. δ(0,a,b) = 2. δ(0,ε,ε) = {(1,$)} 3. δ(1,a,ε) = {(0,ε),(1,a)} 4. δ(3,ε,ε) = 3 56

57 PDA -Exercício Forneça PDA spara reconhecer as seguintes linguagens: {a n b n n ℵ} {a n b 2n n ℵ} {a 2n b n n ℵ} {a i b j c k i = j ou i=k} {w w R w {0,1}* } {w {0,1} * o número de 0 s é igual ao de 1 s }

Linguagens Livres de Contexto

Linguagens Livres de Contexto Linguagens Livres de Contexto 1 Roteiro Gramáticas livres de contexto Representação de linguagens livres de contexto Formas normais para gramáticas livres de contexto Gramáticas ambíguas Autômatos de Pilha

Leia mais

Universidade Federal de Alfenas

Universidade Federal de Alfenas Universidade Federal de Alfenas Linguagens Formais e Autômatos Aula 13 Autômato com Pilha [email protected] Última aula Linguagens Livres do Contexto P(S*) Recursivamente enumeráveis Recursivas

Leia mais

Autômato com pilha. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz

Autômato com pilha. IBM1088 Linguagens Formais e Teoria da Computação. Evandro Eduardo Seron Ruiz Autômato com pilha IBM1088 Linguagens Formais e Teoria da Computação Evandro Eduardo Seron Ruiz [email protected] Departmento de Computação e Matemática FFCLRP Universidade de São Paulo E.E.S Ruiz (DCM USP)

Leia mais

Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira Pilha SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Pilha O que é? Para que serve? 2 Problema: chamada de sub-rotinas Rotina A 1 print A 2 call C 3 call B 4 call D 5 return Rotina B 1 call

Leia mais

Linguagens Livres do Contexto. Adaptado de H. Brandão

Linguagens Livres do Contexto. Adaptado de H. Brandão Linguagens Livres do Contexto Adaptado de H. Brandão Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres do Contexto; Linguagens Livres do Contexto Para as LLC, temos as Gramáticas Livres

Leia mais

Equivalênciaentre PDA e CFG

Equivalênciaentre PDA e CFG Equivalênciaentre PDA e CFG CFG PDA Gramáticas Lineares à direita podem ser convertidasparanfa s. Emgeral, CFG s podemserconvertidasparapda s. Em NFA REX foiútilconsiderargnfa s comoestágiointermediário.

Leia mais

08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve?

08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve? Pilha SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Pilha O que é? Para que serve? 2 1 Rotina A 1 print A 2 call C 3 call B 4 call D Rotina B 1 call C 2 print B 3 call D 4 call C

Leia mais

Teoria da Computação

Teoria da Computação Ciência da Computação Teoria da Computação (ENG10395) Profa. Juliana Pinheiro Campos E-mail: [email protected] Máquinas Universais Máquinas Universais podem ser entendidas de duas formas: Se é capaz

Leia mais

Máquinas de Turing - Computabilidade

Máquinas de Turing - Computabilidade BCC244-Teoria da Computação Prof. Lucília Figueiredo Lista de Exercícios 03 DECOM ICEB - UFOP Máquinas de Turing - Computabilidade 1. Seja L uma linguagem não livre de contexto. Mostre que: (a) Se X uma

Leia mais

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios 1. Escreva a expressão regular para as seguintes linguagens sobre o alfabeto {0, 1}: strings começando

Leia mais

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica) SCC 202 Algoritmos e Estruturas de Dados I Pilhas (Stacks) (implementação dinâmica) Operações alocação encadeada dinâmica typedef struct elem{ tipo_info info; struct elem *lig; tipo_elem; typedef struct{

Leia mais

Aula 9: Máquinas de Turing

Aula 9: Máquinas de Turing Teoria da Computação Aula 9: Máquinas de Turing DAINF-UTFPR Prof. Ricardo Dutra da Silva Uma máquina de Turing é uma máquina de estados finitos que pode mover o cabeçote em qualquer direção, ler e manipular

Leia mais

Autômatos de Pilha (AP)

Autômatos de Pilha (AP) Linguagens Formais e Autômatos Autômatos de Pilha (AP) Andrei Rimsa Álvares Material extraído do livro e slides do Prof. Newton Vieira (h@p://dcc.ufmg.br/~nvieira) Sumário Introdução Autômatos de pilha

Leia mais

Estados Equivalentes. Exemplo R: Sim, b e f. Note que se estamos em b ou f então:

Estados Equivalentes. Exemplo R: Sim, b e f. Note que se estamos em b ou f então: Minimização de AFD Estados Equivalentes. Exemplo Considere os estados de aceitação c e g. Eles são ambos estados que, uma vez atingidos, nunca se sai deles, desde que se leia 0 ou 1. Q: Precisamos desses

Leia mais

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra

Leia mais

Linguagens Formais e Autômatos (LFA)

Linguagens Formais e Autômatos (LFA) INF1626 Linguagens Formais e Autômatos (2013- Linguagens Formais e Autômatos (LFA) Aula de 30/10/2013 Autômatos de Pilha Modelo Conceitual; JFLAP Modelos de Implementação: Ruby Clarisse S. de Souza, 2013

Leia mais

Aula 7: Autômatos com Pilha

Aula 7: Autômatos com Pilha Teoria da Computação Segundo Semestre, 2014 Aula 7: Autômatos com Pilha DAINF-UTFPR Prof. Ricardo Dutra da Silva Vamos adicionar um memória do tipo pilha ao nossos autômatos para que seja possível aceitar

Leia mais

Teoria da Computação. Máquinas Universais Máquina com Pilhas

Teoria da Computação. Máquinas Universais Máquina com Pilhas Máquinas Universais Máquina com Pilhas Cristiano Lehrer Introdução A Máquina com Pilhas diferencia-se das Máquinas de Turing e de Post principalmente pelo fato de possuir uma memória de entrada separada

Leia mais

a n Autômatos com Pilha: Definição Informal e Definição Formal Linguagem Aceita por um ACP ACPDet X ACPND Notação gráfica para ACP

a n Autômatos com Pilha: Definição Informal e Definição Formal Linguagem Aceita por um ACP ACPDet X ACPND Notação gráfica para ACP a n Autômatos com Pilha: Definição Informal e Definição Formal Linguagem Aceita por um ACP ACPDet X ACPND Notação gráfica para ACP 1 ACP Assim como LR tem um autômato equivalente (AF) as LLC tem também

Leia mais

Folha 4.1 Análise sintática descendente

Folha 4.1 Análise sintática descendente 1. Dada a seguinte gramática G = (Σ, T, P, S), onde : Σ = { S, A, B } T = { a, b, c } S a b A c A A a S b S c B B a B b S b) Verifique que G é do tipo LL(1). c) Construa a tabela sintática predicativa

Leia mais

Avaliação de expressões. Prof: Sérgio Souza Costa

Avaliação de expressões. Prof: Sérgio Souza Costa Avaliação de expressões Prof: Sérgio Souza Costa Avaliação de expressões Como efetuar o cálculo de uma expressão em um computador? A / B * (D + C) Avaliação de expressões - Notações Avaliação de expressões

Leia mais

Análise Sintática Bottom-up

Análise Sintática Bottom-up MAB 471 2011.2 Análise Sintática Bottom-up http://www.dcc.ufrj.br/~fabiom/comp Recapitulando parsers top-down Constróem árvore sintática da raiz até as folhas Recursão à esquerda faz parsers entrarem em

Leia mais

Compiladores - Autômatos

Compiladores - Autômatos Compiladores - Autômatos Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp Especificação x Implementação Usamos expressões regulares para dar a especificação léxica da linguagem Mas como podemos

Leia mais

Modelos de Computação Folha de trabalho n. 10

Modelos de Computação Folha de trabalho n. 10 Modelos de Computação Folha de trabalho n. 10 Nota: Os exercícios obrigatórios marcados de A a D constituem os problemas que devem ser resolvidos individualmente. A resolução em papel deverá ser depositada

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferencia-se das máquinas de Turing e Post principalmente pelo fato de possuir a memória de entrada separada

Leia mais

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000) Teoria da Computação Referência Teoria da Computação (Divério, 2000) 1 L={(0,1)*00} de forma que você pode usar uma Máquina de Turing que não altera os símbolos da fita e sempre move a direita. MT_(0,1)*00=({0,1},{q

Leia mais

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO 2. Linguagens Livres-do-Contexto Referência: SIPSER, M. Introdução à Teoria da Computação. 2ª edição, Ed. Thomson Prof. Marcelo S. Lauretto [email protected]

Leia mais

Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler

Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler Aula 5 e 6 Pilhas e suas Aplicações prof Leticia Winkler 1 Definição de Pilha (Stack) São estruturas de dados do tipo LIFO (last-in first-out) - o último elemento a ser inserido, será o primeiro a ser

Leia mais

Estruturas de Dados Encadeadas

Estruturas de Dados Encadeadas CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos

Leia mais

SCC Algoritmos e Estruturas de Dados I

SCC Algoritmos e Estruturas de Dados I SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Sequencial Estática e Encadeada Dinâmica 17 e 19/8/2010 Exercício: Implementação da pilha sequencial e estática Declaração em C escondendo a ED do

Leia mais

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Draft-v0.1. Máquinas de Turing Máquinas de Turing 13 Máquinas de Turing A necessidade de formalizar os processos algorítmicos levou, nas décadas 20 e 30 do século XX, a diversos estudos, entre os quais os de Post, Church e Turing, com vista a estudo formal

Leia mais

Propriedades de Fecho de Linguagens Regulares.

Propriedades de Fecho de Linguagens Regulares. Propriedades de Fecho de Linguagens Regulares. Gerando Linguagens Regulares Recorde a seguinte teorema: THM: Linguagens regulares são aquelas que podem ser geradas a partir de linguagens finitas pela aplicação

Leia mais

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO 2. Linguagens Livres-do-Contexto Referência: SIPSER, M. Introdução à Teoria da Computação. 2ª edição, Ed. Thomson Prof. Marcelo S. Lauretto [email protected]

Leia mais

SCC Algoritmos e Estruturas de Dados I

SCC Algoritmos e Estruturas de Dados I SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Lembrem...TADs são tipos definidos em termos de seu comportamento e não de sua representação (que pode variar na busca de eficiência) 12/8/2010 Pilha

Leia mais

Análise sintática. Análise sintática. Top-down ou descendente. Com retrocesso: por tentativa e erro. Preditiva: para gramáticas LL(1) 09/04/2012

Análise sintática. Análise sintática. Top-down ou descendente. Com retrocesso: por tentativa e erro. Preditiva: para gramáticas LL(1) 09/04/2012 Análise sintática Função, interação com o compilador Análise descendente e ascendente Especificação e reconhecimento de cadeias de tokens válidas Implementação Tratamento de erros Prof. Thiago A. S. Pardo

Leia mais

Estruturas de Dados Aula 11: TAD Pilha

Estruturas de Dados Aula 11: TAD Pilha Estruturas de Dados Aula 11: TAD Pilha Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 10; Estruturas

Leia mais

Algoritmos e Estrutura de Dados Aula 08 Pilhas

Algoritmos e Estrutura de Dados Aula 08 Pilhas Algoritmos e Estrutura de Dados Aula 08 Pilhas Profa. Alana Oliveira e Prof. Davi Viana [email protected] e [email protected] Se não entender, pergunte! Dados e Tipos de Dados Um dado é uma informação

Leia mais

Estruturas de Dados Pilhas, Filas, Listas

Estruturas de Dados Pilhas, Filas, Listas Estruturas de Dados Pilhas, Filas, Listas Fabio Gagliardi Cozman Thiago Martins PMR3201 Escola Politécnica da Universidade de São Paulo Estruturas de Dados Pilhas, Filas, Listas Introdução Estruturas de

Leia mais

Autômatos com Pilha. Douglas O. Cardoso docardoso.github.io

Autômatos com Pilha. Douglas O. Cardoso docardoso.github.io Autômatos com Pilha [email protected] docardoso.github.io Autômatos com Pilha 1/18 Roteiro 1 Autômatos com Pilha 2 APDs 3 APNs Autômatos com Pilha 2/18 Roteiro 1 Autômatos com Pilha 2 APDs 3

Leia mais

Pilhas Filas e Listas

Pilhas Filas e Listas Pilhas Filas e Listas Sumário Pilha: interface, aplicações e implementação Fila: interface, aplicações e implementação Lista Ligada: interface, aplicações e implementação Pilha Estrutura LIFO (last in,

Leia mais

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada.

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada. Autómatos de Pilha Um autómato de pilha (não determinístico) (AP) é um autómato finito não determinístico com transições ɛ, acrescido de uma memória infinita a pilha mas em que o modo de acesso à informação

Leia mais

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07

Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07 Licenciatura em Engenharia Informática DEI/ISEP Linguagens de Programação 2006/07 Ficha 3 Autómatos Finitos Objectivos: Introdução ao conceito de Autómato Finito e notações utilizadas na sua representação;

Leia mais

BCC242. Auômato Finito Determinístico

BCC242. Auômato Finito Determinístico BCC242 Auômato Finito Determinístico Máquinas de Estados Finitos As máquinas de estados finitos são máquinas abstratas que capturam partes essenciais de algumas máquinas concretas. Tipos Tradutores máquinas

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferentes computadores podem ter diferentes arquiteturas e os diversos tipos de linguagem de programação.

Leia mais

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista Pilha SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto de Ciências

Leia mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos P. Blauth Menezes Linguagens Formais e Autômatos P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens

Leia mais

Teoria da Computação. Expressões Regulares e Autômatos Finitos. Thiago Alves

Teoria da Computação. Expressões Regulares e Autômatos Finitos. Thiago Alves Teoria da Computação Expressões Regulares e Autômatos Finitos Thiago Alves 1 Introdução Expressões Regulares e Autômatos Finitos são bem diferentes Será que são equivalentes com relação as linguagens que

Leia mais

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C ompiladores Análise Léxica Bruno Lopes Bruno Lopes ompiladores 1 / 31 Front-end Lida com a linguagem de entrada Teste de pertinência: código fonte linguagem fonte? Programa está bem formado? Sintaticamente?

Leia mais

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática

COMPILADORES. Análise sintática. Prof. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Análise sintática Parte 05 Prof. [email protected] Data Conteúdo 23/09/2013 3. Análise Sintática: 3.1 analisadores

Leia mais

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos P. Blauth Menezes Linguagens Formais e Autômatos P. Blauth Menezes [email protected] Departamento de Informática Teórica Instituto de Informática / UFRGS Linguagens Formais e Autômatos - P. Blauth Menezes 1 Linguagens

Leia mais

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas. SCC-502 Algoritmos e Estruturas de Dados I

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas. SCC-502 Algoritmos e Estruturas de Dados I Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas SCC-502 Algoritmos e Estruturas de Dados I Lista com nó de cabeçalho Nó de cabeçalho Header, sentinela, etc. Para que? Sentinela Beth

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 5 a Aula Definições recursivas Programação Funcional 5 a Aula Definições recursivas Pedro Vasconcelos DCC/FCUP 2014 Definições usando outras funções Podemos definir funções usando outras previamente definidas (e.g. do prelúdio-padrão).

Leia mais

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

A Pilha. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria Engenharia de CONTROLE e AUTOMAÇÃO A Pilha Aula 02 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria [email protected] 1/5

Leia mais

Máquinas de Turing 1

Máquinas de Turing 1 Máquinas de Turing 1 Alan Turing Alan Turing é um dos pais da Computação. Seu modelo computacional a Máquina de Turing inspirou/anteviu o computador eletrônico, que veio algumas décadas depois. Foi usado

Leia mais

Revisão: Tipo Abstrato de Dados Recursividade

Revisão: Tipo Abstrato de Dados Recursividade Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira [email protected] Introdução Estudo das estruturas de dados envolve dois objetivos complementares:

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Primeiro Teste 29 de Março de 2014 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo

Leia mais

Geração de Código para LALG

Geração de Código para LALG Geração de Código para LALG Ambiente de execução para LALG Máquina hipotética Repertório de instruções Prof. Thiago A. S. Pardo 1 Geração de código para LALG Código-alvo será um código de montagem Portanto,

Leia mais

Arvores, Percursos não recursivos, Arvores heterogêneas. Aula 19

Arvores, Percursos não recursivos, Arvores heterogêneas. Aula 19 Arvores, Percursos não recursivos, Arvores heterogêneas Aula 19 Arvores binárias encadeadas Percorrer uma árvore é uma operação muito comum e seria útil encontrar um método mais eficiente para implementar

Leia mais

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 05: Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação O QUE SÃO PROCEDIMENTOS? Procedimentos são um conjunto

Leia mais

Questão 1 Analise o trecho do código abaixo, escrito na linguagem C#:

Questão 1 Analise o trecho do código abaixo, escrito na linguagem C#: Programação para Games I Questão 1 Analise o trecho do código abaixo, escrito na linguagem C#: String[] vetor= { E, A, Z, D, W }; for(int i=4; i

Leia mais

IV Gramáticas Livres de Contexto

IV Gramáticas Livres de Contexto IV Gramáticas Livres de Contexto Introdução Definições de GLC 1 G = (Vn, Vt, P, S) onde P = {A α A Vn α (Vn Vt) + } 2 GLC ε - LIVRE : S ε pode pertencer a P, desde que: S seja o símbolo inicial de G S

Leia mais

Compiladores Ambiente de Execução

Compiladores Ambiente de Execução Compiladores Ambiente de Execução Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica

Leia mais

PCS Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 5: Encapsulamento e Tipo Abstrato de Dados

PCS Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 5: Encapsulamento e Tipo Abstrato de Dados PCS 3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 5: Encapsulamento e Tipo Abstrato de Dados Escola Politécnica da Universidade de São Paulo Agenda Questões Típicas

Leia mais

AFNs, Operações Regulares e Expressões Regulares

AFNs, Operações Regulares e Expressões Regulares AFNs, Operações Regulares e Expressões Regulares AFNs. OperaçõesRegulares. Esquematicamente. O circulo vermelho representa o estado inicial q 0, a porção verde representa o conjunto de estados de aceitação

Leia mais

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias SCC 124 - Introdução à Programação para Engenharias Comandos Professor: André C. P. L. F. de Carvalho, ICMC-USP Pos-doutorando: Isvani Frias-Blanco Monitor: Henrique Bonini de Britto Menezes 1 Aula de

Leia mais

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

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador Estrutura de um compilador programa fonte Compiladores Análise lexical () Expressões Regulares analisador léxico analisador sintático analisador semântico análise gerador de código intermediário otimizador

Leia mais

Compiladores - Análise Ascendente

Compiladores - Análise Ascendente Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,

Leia mais

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ [email protected] Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

BCC244. Alfabeto, String, Linguagem, Gramática. Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste materal.

BCC244. Alfabeto, String, Linguagem, Gramática. Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste materal. BCC244 Alfabeto, String, Linguagem, Gramática Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste materal. Exemplo: Máquina de Venda A máquina de venda retorna uma cocacola

Leia mais

Compiladores - Análise Ascendente

Compiladores - Análise Ascendente Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,

Leia mais

Autômatos com Pilha: Reconhecedores de LLCs

Autômatos com Pilha: Reconhecedores de LLCs Autômatos com Pilha: Reconhecedores de LLCs 1 Autômatos com Pilha (AP) Definições alternativas para Linguagens Livres de Contexto Extensão de AFND com uma pilha, que pode ser lida, aumentada e diminuída

Leia mais

Linguagens de Programação Aula 14

Linguagens de Programação Aula 14 Linguagens de Programação Aula 14 Celso Olivete Júnior [email protected] Na aula passada Linguagem Haskell Funções Tipos básicos Expressões 2 Na aula de hoje Linguagem Haskell Listas 3 Listas e Tuplas

Leia mais

Linguagens Livres-do-Contexto

Linguagens Livres-do-Contexto Linguagens Livres-do-Contexto Mário S. Alvim ([email protected]) Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02) Mário S. Alvim ([email protected]) Linguagens Livres-do-Contexto DCC-UFMG

Leia mais

Lista de exercícios 1

Lista de exercícios 1 UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO DE CIÊNCIAS AGRÁRIAS CCA/ UFES Departamento de Engenharia Rural Lista de exercícios 1 Disciplina: Linguagens Formais e Autômatos Professora: Juliana Pinheiro

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Linguagem de Montagem Slide 1 Operações Lógicas Embora os primeiros computadores se concentrassem em words completas, logo ficou claro que era útil atuar sobre

Leia mais

Exemplos. Alocação Dinâmica de Pilhas. Pilhas. Pilhas. Implementação Seqüencial X Encadeada. SCE 182 Algoritmos e Estruturas de Dados I

Exemplos. Alocação Dinâmica de Pilhas. Pilhas. Pilhas. Implementação Seqüencial X Encadeada. SCE 182 Algoritmos e Estruturas de Dados I SCE 182 Algoritmos e Estruturas de Dados I Uma pilha é uma lista linear em que a inserção ou eliminação de elementos somente pode ocorrer em uma das extremidades, que é chamada de TOPO da PILHA. D C B

Leia mais