Geração de Código para LALG
|
|
|
- Vagner Leal
- 6 Há anos
- Visualizações:
Transcrição
1 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, requer interpretação posterior 2 1
2 Geração de código para LALG Técnica para geração de código Ad hoc: geração de código atrelada aos procedimentos sintáticos Geração diretamente dos procedimentos sintáticos ou... via chamada a procedimentos/funções de geração com argumentos específicos Tabela de símbolos dará o suporte necessário para a geração 3 Geração de código para LALG Máquina hipotética e seu ambiente de execução MaqHipo, com ambiente baseado em pilhas simplificado Basicamente, área de código e de dados Área de código: simulada em um vetor nomeado C Área de dados: simulada em um vetor nomeado D Ponteiros/registradores Contador de programa i Topo da pilha s 4 2
3 Geração de código para LALG Área de código C A geração consiste no preenchimento deste vetor conforme o programa for sendo compilado Posição atual marcada por C[i] Ao final, o vetor C é gravado em um arquivo de saída As instruções não podem ir direto para o arquivo conforme forem sendo geradas Ainda poderão ser modificadas O processo pode parar por algum motivo e o tempo de escrita em arquivo seria perdido 5 Geração de código para LALG Área de código C Cada posição do vetor contém uma instrução na linguagem de montagem Tabela de símbolos acrescida de 2 campos para suporte à geração Endereço relativo de identificadores na pilha Endereço da primeira instrução de procedimentos Esse vetor será interpretado posteriormente 6 3
4 Geração de código para LALG Área de dados D Vetor que se comporta como uma pilha Topo marcado por D[s] Só existirá realmente durante a execução As instruções funcionarão sobre seu topo e, muitas vezes, sobre a posição imediatamente abaixo do topo (no caso de uma operação binária) 7 Geração de código para LALG Uma vez gerado código no vetor C, a execução é simples (via um interpretador) As instruções indicadas pelo registrador i são executadas até que seja encontrada a instrução de parada ou ocorra algum erro Conforme as instruções são executadas, a pilha é manipulada A execução de cada instrução aumenta de 1 o valor de i, exceto as instruções que envolvem desvios Como só há os tipos inteiro e real na LALG, a pilha D pode ser um vetor de reais 8 4
5 Geração de código para LALG Interpretador Dados de entrada Programa em LALG Compilador Código de montagem (vetor C) Interpretador (com vetor D + registradores) Tabela de símbolos Dados de saída 9 Repertório de instruções Grupos de instruções que funcionam para LALG, mas que funcionariam também para o básico de outras linguagens, como Pascal e C Avaliação de expressões Atribuição Comandos condicionais e iterativos Entrada e saída Alocação de memória Inicialização e finalização de programa Procedimentos Junto com cada instrução interpretação durante a execução em cor verde ações durante compilação em cor vermelha 10 5
6 Instruções para avaliação de expressões CRCT k {carrega constante k na pilha D} s:=s+1 D[s]:=k CRVL n {carrega valor de endereço n na pilha D} s:=s+1 D[s]:=D[n] 11 Instruções para avaliação de expressões SOMA {soma topo da pilha com seu antecessor, desempilha-os e empilha resultado} D[s-1]:=D[s-1]+D[s] SUBT {subtrai o elemento do topo do antecessor, desempilha-os e empilha o resultado} D[s-1]:=D[s-1]-D[s]; s:= s
7 Instruções para avaliação de expressões MULT {multiplica elemento do topo pelo antecessor, desempilha-os e empilha resultado} D[s-1]:=D[s-1]*D[s] DIVI {divide elemento do antecessor pelo do topo, desempilha-os e empilha resultado } D[s-1]:=D[s-1] div D[s] 13 Instruções para avaliação de expressões INVE {inverte sinal do topo} D[s]:= - D[s] CONJ {conjunção de valores lógicos: F=0 e V=1} se D[s-1]=1 e D[s]=1 então D[s-1]:=1 senão D[s-1]:=0 14 7
8 Instruções para avaliação de expressões DISJ {disjunção de valores lógicos} se D[s-1]=1 ou D[s]=1 então D[s-1]:=1 senão D[s-1]:=0 NEGA {negação lógica} D[s]:=1-D[s] 15 Instruções para avaliação de expressões CPME {comparação de menor} se D[s-1]<D[s] então D[s-1]:=1 senão D[s-1]:=0 CPMA {comparação de maior} se D[s-1]>D[s] então D[s-1]:=1 senão D[s-1]:=0 16 8
9 Instruções para avaliação de expressões CPIG {comparação de igualdade} se D[s-1]=D[s] então D[s-1]:=1 senão D[s-1]:=0 CDES {comparação de desigualdade} se D[s-1]<>D[s] então D[s-1]:=1 senão D[s-1]:=0 17 Instruções para avaliação de expressões CPMI {comparação <= } se D[s-1]<=D[s] então D[s-1]:=1 senão D[s-1]:=0 CMAI {comparação >= } se D[s-1]>=D[s] então D[s-1]:=1 senão D[s-1]:=0 18 9
10 Instruções para avaliação de expressões Exemplo 1 - a + b CRCT 1 CRVL a* SUBT CRVL b* SOMA * endereços na pilha D obtidos da tabela de símbolos 19 Instrução de atribuição ARMZ n {armazena o topo da pilha no endereço n de D} D[n]:=D[s] 20 10
11 Instrução de atribuição Exemplo a := a + 1 CRVL a* CRCT 1 SOMA ARMZ a* 21 Instruções para comandos condicionais e iterativos DSVI p {desvio incondicional para a instrução de endereço p} i:=p DSVF p {desvie para a instrução de endereço p caso a condição resultante seja falsa}??? 22 11
12 Instruções para comandos condicionais e iterativos DSVI p {desvio incondicional para a instrução de endereço p} i:=p DSVF p {desvie para a instrução de endereço p caso a condição resultante seja falsa} se D[s]=0 então i:=p senão i:=i+1 23 Instruções para comandos condicionais e iterativos Seqüência de instruções If E then C1 else C2 Seqüência de instruções? 24 12
13 Instruções para comandos condicionais e iterativos Seqüência de instruções If E then C1 else C2... } E DSVF k1...} C1 DSVI k2 k1... } C2 k2... No lugar de k1 e k2 devem aparecer índices reais de C k1 é determinado quando se encontra o else, e k2 quando termina o comando if necessidade de se voltar no vetor C para substituir k1 e k2 por índices reais 25 Instruções para comandos condicionais e iterativos Seqüência de instruções If E then C... } E DSVF k1... } C k
14 Instruções para comandos condicionais e iterativos Seqüência de instruções While E do C k1... } E DSVF k2... } C DSVI k1 k Instruções para comandos condicionais e iterativos Seqüência de instruções Repeat C until E??? 28 14
15 Instruções para comandos condicionais e iterativos Seqüência de instruções Repeat C until E k1... } C E DSVF k1 29 Instruções para entrada e saída LEIT {lê um dado do arquivo de entrada} s:=s+1 D[s]:=próximo valor da entrada IMPR {imprime valor inteiro no arquivo de saída} Imprime D[s] 30 15
16 Instruções para entrada e saída Exemplo Read a, b LEIT ARMZ a* LEIT ARMZ b* 31 Instruções para entrada e saída Exemplo Write x, x*y CRVL x* IMPR CRVL x* CRVL y* MULT IMPR 32 16
17 Instrução de alocação de memória ALME m {reserva m posições na pilha D, sendo que m depende do tipo da variável} o valor de s é armazenado no campo de endereço relativo da variável correspondente na tabela de símbolos (em tempo de compilação) s:=s+m Na LALG, por simplicidade, todos os tipos ocuparão uma única posição m=1 33 Instrução de alocação de memória Exemplo program p1; var x, y: integer;... ALME 1 ALME 1 Tabela de símbolos Cadeia Token... End. relativo x id 0 y id
18 Instruções para inicialização e finalização de programas INPP {inicia programa - será sempre a 1ª instrução} s:= -1 PARA {termina a execução do programa} 35 Exemplo completo No lugar dos rótulos simbólicos l1 e l2 devem aparecer endereços reais que serão calculados após sua geração, tendo-se que voltar no vetor C 36 18
19 Exercício Gere código para o programa abaixo e interprete o código gerado program exemplo1; var a, b: integer; begin read(a,b); write(a,b); end. 37 Exercício Gere código para o programa ao lado e interprete o código gerado program exemplo2; var a, b: integer; var c: real; begin read(a,b); c:=5; while a<b do begin a:=a+1; c:=c*a; end; write(c); end
20 Exercício Gere código para o programa ao lado e interprete o código gerado program exemplo3; var x, y: integer; begin read(x); y:=x*x; if (x<y) then while (x<y) do begin y=y-2; write(y); end; else write(x); write(x*y); end. 39 Instruções para procedimentos Características da LALG Passagem de parâmetros por valor Somente procedimentos globais 40 20
21 Instruções para procedimentos Ao chamar procedimento Empilha-se endereço de retorno (ainda não definido, pois depende do número de parâmetros) Empilham-se valores de parâmetros Salta-se para 1ª instrução de procedimento No início do procedimento Desvia-se para programa principal Copia valores dos parâmetros passados No fim do procedimento Libera memória (variáveis locais e parâmetros) Retorna do procedimento 41 Instruções para procedimentos PUSHER e {empilha endereço de retorno} s:=s+1 D[s]:=e CHPR p {desvia para instrução de índice p no vetor C, obtido na tabela de símbolos} i:=p 42 21
22 Instruções para procedimentos DESM m {desaloca m posições de memória, a partir do topo s de D, restaurando os valores do topo a partir de m} deve retirar (ou tornar inacessível) da tabela de símbolos as posições desalocadas (em tempo de compilação) s:=s-m RTPR {retorna do procedimento} i:=d[s] 43 Instruções para procedimentos COPVL sem efeito na execução coloca na tabela de símbolos o endereço do parâmetro, associando parâmetros atuais com formais (em tempo de compilação) PARAM n {aloca memória e copia valor da posição n de D} s:=s+1 D[s]:=D[n] 44 22
23 Instruções para procedimentos Ao chamar procedimento PUSHER e {PARAM n} {...} CHPR p No início do procedimento {DSVI k} {COPVL} {...} No fim do procedimento DESM n RTPR Deve levar em conta a posição usada pelo endereço de retorno na pilha D, isto é, soma-se 1 ao endereço obtido para o primeiro parâmetro ou variável local 45 Exemplo: sem parâmetros 46 23
24 Exemplo: com parâmetros 47 Instruções para procedimentos Ao se gerar código para um procedimento, coloca-se o endereço de sua primeira instrução na tabela de símbolos Ao se retornar do procedimento, a pilha deve estar exatamente como estava antes da chamada do procedimento 48 24
25 Exercício Gere código para o programa ao lado e interprete o código gerado program exemplo2; var a: real; var b: integer; procedure nomep(x: real); var a, c: integer; begin read(c,a); if a<x+c then begin a:=c+x; write(a); end else c:=a+x; end; begin {programa principal} read(b); nomep(b); end
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,
Compiladores Aula 13. Celso Olivete Júnior.
Aula 13 Celso Olivete Júnior [email protected] Na aula de hoje Análise léxica Tabela de símbolos Análise sintática Análise semântica Geração de código intermediário Manipulação de erros Tabela de palavras
Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica
Geração de Código para uma Máquina Hipotética a Pilha Detalhes da geração de código Usando a técnica ad hoc, amarrada aos procedimentos sintáticos, igual à análise semântica É composta de 3 Regiões MEPA
CAP. VII GERAÇÃO DE CÓDIGO
CAP. VII GERAÇÃO DE CÓDIGO VII. 1 - INTRODUÇÃO Léxica Análise Sintática Semântica Compilação G.C. intermediário Síntese Otimização de código Geração de código Síntese Tradução do programa fonte (léxica,
CAP. VII GERAÇÃO DE CÓDIGO
CAP. VII GERAÇÃO DE CÓDIGO VII. 1 - INTRODUÇÃO Léxica Análise Sintática Semântica Compilação G.C. intermediário Síntese Otimização de código Geração de código Síntese Tradução do programa fonte (léxica,
Máquina Virtual. MEPA: Máquina de Execução para Pascal. Expressões. Características gerais
MEPA: Máquina de Eecução para Pascal Máquina Virtual Máquina virtual Permite separar idiossincrasias da arquitetura real Concentração nos aspectos semânticos da linguagem Facilita portabilidade Facilita
Geração de Código para uma Máquina Hipotética a Pilha. MEPA Máquina de Execução para Pascal e sua linguagem de montagem
Geração de Código para uma Máquina Hipotética a Pilha MEPA Máquina de Execução para Pascal e sua linguagem de montagem É composta de 3 Regiões MEPA Não tem HEAP, pois o PS não permite variáveis dinâmicas
Geração de Código para uma Máquina Hipotética a Pilha
Geração de Código para uma Máquina Hipotética a Pilha MEPA Máquina de Execução para Pascal e sua linguagem de montagem (capítulo 8 e capítulo 9.5 do livro Kowaltowski) É composta de 3 Regiões MEPA Não
Construção de Compiladores Aula 5 - Variáveis
Construção de Compiladores Aula 5 - Variáveis Bruno Müller Junior Departamento de Informática UFPR 26 de Agosto de 2014 1 Declaração de Variáveis Escopo das Variáveis Exemplo de Programa Esquema Instruções
Aulas Anteriores. Detalhes da linguagem de programação
Aulas Anteriores Detalhes da linguagem de programação Elementos básicos (identificadores, constantes, símbolos gráficos) Estrutura básica de um programa (cabeçalho, parte declarativa, parte de execução)
Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)
Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Não-terminais são nomes mnemônicos colocados entre parênteses angulares. Vocabulário terminal formado por
Geração e Otimização de Código
Geração e Otimização de Código Representação de código intermediária Código de três endereços, P-código Técnicas para geração de código Otimização de código Prof. Thiago A. S. Pardo 1 Estrutura geral de
Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string
Pascal -Cabeçalho do programa Áreas do programa -Área de declarações -Corpo do programa - label - const - type - var - procedure - function - integer - real - byte - boolean - char - string Program
Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.
Teoria da Computação e Algoritmos Introdução à Linguagem Pascal 1 Estrutura de um programa INÍCIO FIM. PROGRAM END.
INE5421 LINGUAGENS FORMAIS E COMPILADORES
INE5421 LINGUAGENS FORMAIS E COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer a teoria das linguagens formais visando sua aplicação na especificação de linguagens de programação e na construção de
Linguagem de programação: Pascal
Aula 04 Linguagem de programação: Pascal Prof. Tecgº Flávio Murilo 26/03/2013 1 Pascal Introdução Pascal é uma linguagem de programação estruturada, criada em 1970 pelo suíço Niklaus Wirth, dando este
Introdução à Programação
Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira
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
Linguagem de Montagem do NeanderX
Universidade Estácio de Sá Curso de Informática Arquitetura de Computadores Linguagem de Montagem do NeanderX 11.5.2006 Geração Programa Executável Linguagens de Programação As linguagens de programação
Compiladores Aula 12. Celso Olivete Júnior.
Aula 12 Celso Olivete Júnior [email protected] Na aula de hoje Análise léxica Tabela de símbolos Análise sintática Análise semântica Geração de código intermediário Manipulação de erros Tabela de palavras
Compiladores Prof. a Mariella Berger. Trabalho 2 Analisador Léxico
Compiladores Prof. a Mariella Berger Trabalho 2 Analisador Léxico 1. Objetivo O objetivo deste trabalho é a criação de um analisador léxico para a linguagem Pascalito, um subconjunto modificado da linguagem
Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)
Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Análise Léxica A primeira fase da compilação Recebe os caracteres de entrada do programa e os converte em um fluxo de
Compiladores. Análise Léxica
Compiladores Análise Léxica Cristiano Lehrer, M.Sc. Introdução (1/3) Análise léxica é a primeira fase do compilador. A função do analisador léxico, também denominado scanner, é: Fazer a leitura do programa
Algoritmos. Prof. Jonatas Bastos Site:
Algoritmos Prof. Jonatas Bastos Email: [email protected] Site: http://jonatasfbastos.wordpress.com/ 1 Dúvidas! p p p Como os computadores entendem os algoritmo? Os computadores não entendem os passos
Prof. Adriano Maranhão COMPILADORES
Prof. Adriano Maranhão COMPILADORES LINGUAGENS: INTERPRETADAS X COMPILADAS Resumo: Linguagem compilada: Se o método utilizado traduz todo o texto do programa, para só depois executar o programa, então
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução [email protected] Processadores de linguagem Linguagens de programação são notações para se descrever
NEANDERWIN. Algumas características do processador Neander são:
NEANDERWIN O NeanderWin é um simulador da máquina Neander, definida no livro do Raul F. Weber (UFRGS), Fundamentos de Arquitetura de Computadores, Ed. Sagra Luzzatto. A máquina original foi estendida aqui
Compiladores. Gerência de Memória
Compiladores Gerência de Memória Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Arquivo de destino Análise Otimização Geração de Código Intermediário Geração de Código Final Síntese
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{
Resolução Exe 2.12 Monolítico Recursivo
Resolução Exe 2.12 Monolítico Recursivo Recursivo P R é R 1 onde R 1 def (se T1 então R 2 senão R 3 ) R 2 def F; R 3 R 3 def (se T2 então R 4 senão R 7 ) R 4 def G; R 5 R 5 def (se T1 então R 7 senão R
Programação de Computadores:
Instituto de C Programação de Computadores: Introdução a Linguagens de Programação Luis Martí Instituto de Computação Universidade Federal Fluminense [email protected] - http://lmarti.com Seis Camadas Problema
Infraestrutura de Hardware. Funcionamento de um Computador
Infraestrutura de Hardware Funcionamento de um Computador Computador: Hardware + Software Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é
Elementos básicos das linguagens de programação
Elementos básicos das linguagens de programação Objetivos: Apresentar os últimos elementos básicos das linguagens de programação Elementos básicos já estudados Entrada (read, readln) Saída (write, writeln)
Introdução ao Pascal. Computação I. Níveis de Linguagens de Programação. Níveis de Linguagens de Programação. Como um Programa é Executado?
Computação I Introdução ao Pascal Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Linguagens de Programação DEL-Poli/UFRJ Níveis de Linguagens de Programação Linguagens declarativas Linguagens
Geração de Código Intermediário
UPE Caruaru Sistemas de Informação Disciplina: Compiladores Prof.: Paulemir G. Campos Geração de Código Intermediário Um compilador pode ser considerado como um modelo de: Análise("front-end modules")
TÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
Compiladores e Computabilidade
Compiladores e Computabilidade Prof. Leandro C. Fernandes UNIP Universidade Paulista, 2013 GERAÇÃO DE CÓDIGO INTERMEDIÁRIO Geração de Código Intermediário Corresponde a 1ª etapa do processo de Síntese
PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95
PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95 Exercícios de revisão Lista 01: a) Monte um mapa conceitual indicando as relações entre os seguintes conceitos, no contexto do assunto visto em aula:
Capítulo 8. Estruturas de Controle no Nível de Sentença
Capítulo 8 Estruturas de Controle no Nível de Sentença Níveis de fluxo de controle Computações são realizadas por meio da avaliação de expressões e da atribuição dos valores a variáveis Para tornar a computação
Compiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 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
Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores
Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente
Linguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior [email protected] Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Procedimento. Função. Selecção Condicional - a instrução if-then-else. expressão if lógica then instrução else instrução
Métodos de Programação I 2. 20 2.2.8 ESTRUTURAS DE CONTROLO Estruturas de controlo são instruções especiais em Pascal que permitem controlar o fluxo de sequência de instruções, alterando a ordem sequencial
Noções de compilação
Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Compilação: por que estudar? (parte 1) Compiladores:
Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves
Informática II Linguagem Computacional Estruturas de Controle: Estruturas de Repetição Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves 1 Sumário q Estruturas de Controle de Fluxo Repetição Enquanto
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
Apostila de Fortran. É uma pseudo-linguagem a qual oferece recursos para que o programador possa codificar e testar os seus algoritmos.
Apostila de Fortran Fortran Uma das linguagens de programação mais velhas, o FORTRAN foi desenvolvido por uma equipe de programadores conduzida por John Backus na IBM, e foi primeiramente publicada em
Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1
Definição de uma Linguagem Linguagem= sintaxe + semântica Especificação da sintaxe: gramática livre de contexto, BNF (Backus-Naur Form) Especificação Semântica: informal (textual), operacional, denotacional,
Introdução ao Fortran 90-1
Introdução ao Fortran 90-1 Departamento de Física UFPel Definição de Programa em Fortran 90 Programa ou Código-fonte Programa ou código-fonte é um conjunto de instruções, também chamadas de comandos, escritas
Programação de Computadores II
Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para
Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)
Algoritmos e Programação Informática II Ciência da Computação Prof. Dr. Leandro Alves Neves Aula 10 1 Sumário Estruturas de Controle de Fluxo q Repetição Enquanto (Teste no início) Repeat (Teste no final)
Introdução à Ciência da Computação
Introdução à Ciência da Computação Variáveis Conceitos Básicos Variáveis x Constantes a = x + 5 a, x e 5 são variáveis ou constantes? Variáveis As variáveis são recipientes de valores É um espaço reservado
Ambientes de Execução
Ambientes de Execução Organização da memória Ambientes totalmente estáticos, baseados em pilhas e totalmente dinâmicos Passagem de parâmetros Prof. Thiago A. S. Pardo 1 Ambientes de execução na estrutura
Ambientes de Execução
Ambientes de execução na estrutura do compilador programa-fonte Ambientes de Execução Tabela de símbolos analisador léxico analisador sintático Organização da memória Ambientes totalmente estáticos, baseados
Linguagem Pascal. Prof. Antonio Almeida de Barros Junior
Linguagem Pascal Prof. Antonio Almeida de Barros Junior 1 Linguagem Pascal Criada para ser uma ferramenta educacional (Década de 70); Prof. Niklaus Wirth (Universidade de Zurique); Blaise Pascal (Matemático
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 TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando
VARIÁVEIS NUMÉRICAS : integer - Números inteiros entre e real - Números reais de 11 algarismos significativos.
TURBO PASCAL Histórico Origem: desenvolvida nos anos entre 1968 e 1970 por Nicklaus Wirth na Universidade Técnica de Zurique, Suíça. Em 1970 é disponibilizado o primeiro compilador para a linguagem. Objetivo:
Aula Anterior. Decomposição algorítmica (continuação)
Aula Anterior Decomposição algorítmica (continuação) Degenerescência da decomposição básica da solução em três etapas Método de decomposição modificado à entrada Associação de diferentes valores de entrada
LFA Aula 09. Gramáticas e Linguagens Livres de Contexto 18/01/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.
LFA Aula 09 Gramáticas e Linguagens Livres de Contexto (Hopcroft, 2002) 18/01/2016 Celso Olivete Júnior [email protected] www.fct.unesp.br/docentes/dmec/olivete/lfa 1 Classes Gramaticais Linguagens
2.2.5 EXPRESSÕES - Regras para o cálculo de valores
Métodos de Programação I Departamento de Matemática, FCTUC 30 2.2.5 EXPRESSÕES - Regras para o cálculo de valores As expressões fornecidas ao computador, quer tenham variáveis, constantes ou apenas literais,
Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO
Linguagem de Montagem Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO 1 Introdução Independente da linguagem de programação utilizada, todo programa
LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Compiladores - Análise SLR
Compiladores - Análise SLR Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Um exemplo que funciona Todo estado com um item de redução e algum outro item causa conflito LR(0)! A técnica LR(0)
Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I
Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Algoritmos de busca Basicamente podem ser citadas duas estratégias para procurar (ou buscar) algo em uma coleção de dados: Busca
PROGRAMAÇÃO I. Introdução
PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação
Linguagem de Programação
Linguagem de Programação Aula 2 Introdução Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Técnico em Informática Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno O que
PLANO DE ENSINO. Súmula:
INF01211 NOME DA DISCIPLINA: Algoritmos e Programação Semestre: 2009/2 Carga horária: 4 h Créditos: 4 Professor: Luis de França G. Ferreira Súmula: Formulação de problemas, construção de algoritmos e implementação
Estrutura do programa
Linguagem C Estrutura do programa Exemplo: #include #include main() { printf( Ola, mundo! ); system( pause ); }
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Síntese. Prof. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Síntese Prof. [email protected] Data 18/11/2013 Análise sintática Parte 01 25/11/2013 Análise sintática Parte 02
Compiladores Análise Semântica
Compiladores Análise Semântica Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Árvores Sintáticas Abstratas (ASTs) A árvore de análise sintática tem muita informação redundante Separadores,
I1, I2 e In são instruções simples ou estruturadas da linguagem Pascal.
Capítulo 4 TESTES, ESCOLHAS E MALHAS DE REPETIÇÃO 1. INTRODUÇÃO Em muitos exemplos e exercícios realizados nos capítulos anteriores, não foram raras as vezes em que fizemos uso de elementos disponíveis
Trabalho de Desenho de Linguagens de Programação e de Compiladores. Mini Pascal
Trabalho de Desenho de Linguagens de Programação e de Compiladores Mini Pascal (cod. 11482) Departamento de Informática Universidade da Beira Interior Ano lectivo 2015/2016 1 Introdução Este trabalho é
Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação
Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Compilação, Montagem, Link-edição,
ao paradigma imperativo
PARADIGMA FUNCIONAL PARADIGMA FUNCIONAL: INTRODUÇÃO G Exemplos de linguagens funcionais LISP - Início: LP puramente funcional - Depois: acréscimo de alguns recursos imperativos (aumentaram eficiência de
Modularidade. Objetivos: Introduzir noções básicas de modularidade. Funções e procedimentos
Modularidade Objetivos: Introduzir noções básicas de modularidade Funções e procedimentos Motivação É muito difícil manter um código quando ele tende a ser grande (com muitas linhas) É preciso organizar
Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.
Análise léxica Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros Prof. Thiago A. S. Pardo 1 Estrutura geral de um compilador programa-fonte analisador
tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo;
Métodos de Programação I Departamento de Matemática, FCTUC 38 type var tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo;
Análise sintática. Prof. Thiago A. S. Pardo Tratamento de erros sintáticos
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
Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios
Microprocessadores I ELE 1078 Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios Grupos de Instruções do 8085 As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência da
Esta pseudomáquina foi criada em homenagem ao homem de Neandertal, o antecessor do homo sapiens.
Documentação Neander C O Neander C O computador hipotético Neander Características Modos de endereçamento Conjunto de instruções Obtendo o Neander C Compilando o Neander C Executando o Neander C Programando
