Avaliação de Expressões



Documentos relacionados
Estruturas de Dados Pilhas, Filas e Deques

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

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

ALGORITMOS E ESTRUTURAS DE DADOS Terceiro Trabalho Prático Recursividade e Pilhas

ESTRUTURA DE DADOS PILHA

Curso : Tecnologia em Desenvolvimento de Sistemas - AEMS

PROGRAMAÇÃO II 3. PILHA DINÂMICA

Estrutura de Dados Básica

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais:

Árvores e Árvores Binárias

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

Microsoft Excel 2007

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

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

ESTRUTURAS DE DADOS II MSc. Daniele Carvalho Oliveira

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

OPERADORES E ESTRUTURAS DE CONTROLE

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Algoritmos e Estrutura de Dados III. Árvores

Algoritmos com VisuAlg

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

Conceitos Importantes:

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Representação de Algoritmos - Linguagens de Programação

Tipo de Dados Abstractos: Pilha (stack)

PROGRAMAÇÃO II 3. FILA DINÂMICA

7. ESTRUTURAS DE DADOS ESTÁTICAS E DINÂMICAS

Arquitetura de Computadores. Tipos de Instruções

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Árvores. Algoritmos e Estruturas de Dados 2005/2006

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

A Estação da Evolução

3 Sistemas de Numeração:

1) Digitar o código-fonte no editor do compilador Turbo Pascal para windows, exatamente como apresentado a seguir:

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

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

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

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Resolução de problemas e desenvolvimento de algoritmos

Introdução aos cálculos de datas

Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01

PROGRAMAÇÃO II 4. ÁRVORE

ESTRUTURA CONDICIONAL

FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO (cont)

PROG. DE COMPUTADORES II SI Arquivos

Planilha (2ª parte) Capítulo 15

Tópico 2. Conversão de Unidades e Notação Científica

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

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

Aluísio Eustáquio da Silva

Linguagem de Programação

MANIPULAÇÃO DE STRINGS

PYTHON LISTAS. Introdução à Programação SI2

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição

Organização e Arquitetura de Computadores I

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E AULA TEÓRICA 4 PROF. MARCELO LUIZ SILVA (R E D)

Capítulo 2: Introdução à Linguagem C

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

ARQUIVOS. Os arquivos criados em meios magnéticos poderão ser acessados para leitura e escrita na forma seqüencial, direta ou indexada.

Aritmética Binária e. Bernardo Nunes Gonçalves

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

Aula 2: Conversão entre Bases, Aritmética

Laboratório de Programação I

INTRODUÇÃO AOS SISTEMAS LÓGICOS

1ª Lista de exercícios

Árvores Binárias e Busca. Jeane Melo

Exemplo de Subtração Binária

Programas operam sobre dados. Dados são relacionados e possuem estrutura. Como representar e manipular dados em um computador

ESTRUTURA DE DADOS -VARIÁVEIS COMPOSTAS. Prof. Angelo Augusto Frozza, M.Sc.

CIÊNCIA DA COMPUTAÇÃO I Excel. Núm1, núm2,... são argumentos de 1 a 255 cuja soma ou valor total você deseja obter.

Terceira Avaliação Visualg & Pascal

Manipulação de Arquivos em Pascal

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

INF 1005 Programação I

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Atualização De Mapas GPS Apontador. 1º Acessar site: 2º Selecione o Idioma para Português no seu canto direito.

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

SGAA AGV Gerar Senha de atendimento

EXERCÍCIOS. 2. Faça um algoritmo que receba dois números e ao final mostre a soma, subtração, multiplicação e a divisão dos números lidos.

Microsoft Office Excel 2007

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

indicadas por letras e linhas, indicadas por números. Para selecionar uma planilha para uso, devemos utilizar a guia de planilhas:

A1;A7 é o mesmo que A1 e A7 A1:A7 é o mesmo que A1 até A7 (abrange A1, A2, A3, A4, A5, A6, A7).

Princípios de funcionamento dos computadores

Aula 3 Alocação Dinâmica

Listas Duplamente Encadeadas

Variáveis Compostas Heterogêneas. Variável Composta Heterogênea. Variável Composta Heterogênea

Busca. Pesquisa sequencial

Tutorial de Matlab Francesco Franco

Programa ConsoleRPN. PUC-Rio CIV Sistemas Gráficos para Engenharia Luiz Fernando Martha & André Maués Brabo Pereira

Introdução à Linguagem

Organização e Arquitetura de Computadores I

Resumo da Matéria de Linguagem de Programação. Linguagem C

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Processamento da Informação Teoria. Algoritmos e Tipos de dados

Transcrição:

valiação de Expressões valiação de Expressões - Como efetuar o cálculo de uma expressão em um computador? Exemplo: / B C D + E Regras usuais da matemática. Os parênteses alteram a ordem das expressões: O que dificulta a avaliação das expressões: 1º - a existência de prioridades diferentes. Exemplo: +BC 2º - a existência de parênteses Exemplo: B+C Jan Lukasienwicz conseguiu criar uma representação para expressões onde não existem prioridades e nem a necessidade de uso dos parênteses. Notação Polonesa Para somar dois números normalmente escrevemos +B, entretanto existem três formas: Na NPR: Infixa: +B Prefixa: +B Notação Polonesa Posfixa: B+ Notação Polonesa Reversa Cada operador aparece imediatamente após os valores que ele deve operar. ordem que o operador aparece é a mesma que ele deve ser efetuado. Não há necessidade do uso de parênteses. Exemplos: Notação Infixa Normal +BC B+C +B/C-D +B/C-DE Notação Posfixa BC+ BC+ B+CD-/ B+CD-/E Página 1

valiação de Expressões Conversão de Expressões Infixa em Posfixa: Parentetizar completamente a expressão definir a ordem de avaliação; Varrer a expressão da esquerda para a direita e, para cada símbolo: a. Se for parêntese de abertura, ignorar; b. Se for operando, copiá-lo para a expressão posfixa saída; c. Se for operador, fazê-lo aguardar; d. Se for parêntese de fechamento, copiar o último operador acessado. Conversão da Expressão +BC-D: 1º Etapa: Parentetização a + B C D efetua multiplicação b + B C D efetua adição c + B C D efetua subtração 2º Etapa: Varredura Símbolo dição ignora ignora copia + aguarda ignora B copia aguarda C copia remover remove aguarda D copia remove Pilha P:[,+] P:[,+] P:[ ] P:[ ] Saída B B B C B C B C + B C + B C + D B C + D Exercícios 1. B D C Etapa 1: B D C B D C Etapa 2: BDC Página 2

valiação de Expressões 2. B + C D / E + F Etapa 1: B + C D / E + F Etapa 2: B C D E F + / + function NprE:String:String; var P:Pilha; S:String; i:integer; InitP; S:= ; for i:=1 to lengthe do case E[i] of.. Z : S :=S+E[i]; {copia} +,,, / : PushP,E[i]; {aguarda} : S := S + PopP; {remove} Npr := S; lgoritmo de Conversão Infixa para Posfixa: Fundamentos para criação de algoritmos - ordem dos operandos não é alterada quando a expressão é convertida. - Os operadores devem mudar de ordem. - O que determina a posição do operador na posfixa é a prioridade que ele possui na infixa os de maior procedência aparecem primeiro. - Quando um operador é encontrado no processo de varredura, ele de aguardar até que apareça outro operador com prioridade menor ou igual a dele, somente então ele poderá ser copiado na saída. - Quando um parêntese de abertura é encontrado no processo de varredura, ele deve ser imediatamente empilhado. Uma vez empilhado, sua ordem de prioridade deve ser a menor possível para não influenciar o resultado. Página 3

valiação de Expressões Ordem de Prioridades na tualização da Expressão: function PrioS:char : integer; case S of : Prio := 1; +, : Prio := 2;, / : Prio := 3; Operador Prioridade 1 + 2 / 3 O Processo de conversão infixa para posfixa pode ser efetuado da seguinte forma: Inicie com uma pilha vazia; Realize uma varredura na expressão infixa, copiando todos os identificadores encontrados diretamente para a expressão de saída. a o encontrar um operador: 1. Enquanto a pilha não estiver vazia e houver no seu topo um operador com prioridade maior ou igual ao encontrado, desempilhe o operador e copie-o na saída; 2. Empilhe o operador encontrado; b o encontrar um parêntese de abertura, empilhe-o; c o encontrar um parêntese de fechamento, remova um símbolo da pilha e copieo na saída, até que seja desempilhado o parêntese de abertura correspondente. o final da varredura, esvazie a pilha, movendo os símbolos desempilhados para a saída. Veja o funcionamento da versão final do algoritmo na conversão da expressão B+C/D: Página 4

valiação de Expressões Símbolo ção Pilha Saída B + C / D Pilha vazia, empilha Sempre deve ser empilhado Prioridade maior, empilha Desempilha até achar Prioridade igual, desempilha Final, esvazia pilha P:[] P:[,] P:[,] P:[+,,] P:[+,,] P:[] P:[/] P:[/] B B B C B C + B C + B C + D B C + D / function PosfixaE:string : string; var P : Pilha; S : string; i : integer; x : char; InitP; S:= ; for I:=1 to lengthe do case E[i] of.. Z : S := S + E[I]; +.. -,.. / : while not IsEmptyP and PrioTopP>=PrioE[i] do S := S + PopP; PushP, E[i]; : PushP, E[i]; : while TopP<> do S := S + PopP; x:= PopP; while not IsEmptyP do S := S + PopP; Posfixa := S; valiando uma Expressão Posfixa: Percorrendo uma expressão posfixa da esquerda para a direita, ao encontrarmos um operador, sabemos que ele deve operar as duas últimas variáveis encontradas, ou seja, as duas últimas serão as primeiras a serem processadas. Página 5

valiação de Expressões Seja a expressão: B+CD-/E Supondo =7, B=3, C=6, D=4 e E=9 Podemos proceder da seguinte maneira: Iniciamos com uma pilha vazia; Varremos a expressão e, para cada elemento encontrado, fazemos: a Se for operando, então empilhar seu valor; b Se for operador, então desempilhar os dois últimos valores, efetuar a operação com eles e empilhar de volta o resultado obtido; No final do processo, o resultado da avaliação estará no topo da pilha. nalise o funcionamento do algoritmo de conversão no exemplo a seguir: Expressão Elemento ção Pilha B+CD-/E B+CD-/E +CD-/E CD-/E D-/E -/E /E E B + C D - / E Empilha valor de Empilha valor de B Desempilha y=3 Desempilha x=7 Empilha x+y Empilha valor de C Empilha valor de D Desempilha y=4 Desempilha x=6 Empilha x-y Desempilha y=2 Desempilha x=10 Empilha x/y Empilha valor de E Desempilha y=9 Desempilha x=5 Empilha xy P:[7] P:[3,7] P:[7] P:[10] P:[6,10] P:[4,6,10] P:[6,10] P:[10] P:[2,10] P:[10] P:[5] P:[9,5] P:[5] P:[45] Implementação da NPR: Em Pascal é possível implementar um vetor cujo índice é um caracter. Exemplo: Página 6

valiação de Expressões var V = rray[.. Z ] of Real; Dessa forma, os elementos do vetor V poderão ser acessados conforme sugere a figura: Representação interna das variáveis B C D E F... Z V: 7 3 6 4 9?...? Usando um vetor desse tipo é possível criar uma rotina para receber os valores de uma expressão, conforme a seguir: procedure tribuivar V:Valores; var N:char; Writeln Digite. para finalizar... ; repeat write Nome: ; readlnn; if N in [.. Z ] then write Valor: ; readlnv[n]; until N =. ; Página 7