Compiladores Aula 13. Celso Olivete Júnior.
|
|
|
- Martín de Abreu Galindo
- 8 Há anos
- Visualizações:
Transcrição
1 Aula 13 Celso Olivete Júnior
2 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 e símbolos reservados Otimização de código Geração de código Dados de entrada Programa alvo Saída 2
3 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 e símbolos reservados Otimização de código Geração de código Dados de entrada Programa alvo Saída 3
4 4
5 Geração de código intermediário Objetivos Gerar o Bytecode (código de montagem) para LALG Formato de código intermediário entre o código fonte, o texto que o programador consegue manipular, e o código de máquina, que o computador consegue executar. Requer interpretação posterior Executar obytecode com a máquina virtual MEPA 5
6 Geração de código para LALG Geração de código será feita de forma Ad hoc, 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 6
7 Geração de código intermediário MEPA: MÁQUINA DE EXECUÇÃO PARA PASCAL (OU C) É uma máquina virtual para execução dos programas escritos em Pascal Simplificado. Dado um programa, o objetivo será apresentar as instruções assembly que causam o efeito esperado 7
8 MEPA - Arquitetura Máquina a pilha (Stack Machine), dividida em: Área de Código simulado em um vetor (C) Área de Dados - simulado em um vetor (D) Dois registradores Contador de programa - i Topo da Pilha - s 8
9 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 Código (C) 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 9
10 Geração de código para LALG Área de Dados (D) Código (C) 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) 10
11 MEPA Arquitetura e interpretação Código (C) Dados (D) Topo da Pilha - s Contador de programa - i Micro código da CPU Enquanto (i válido and (not FIM) ) do Executa C[i] Se C[i] indica desvio então i := endereço do desvio senão i := i + 1 FimSe FimEnquanto 11
12 Geração de código Vetor de código (C) O código intermediário é gerado em conjunto com a análise sintática Registradoriindica a posição atual; Cada posição contém uma instrução - gerada de acordo as instruções da MEPA; No final da compilação C[i] conterá o código intermediário. Código (C) Dados (D) 12
13 Geração de código Vetor de código (C) O código intermediário é gerado em conjunto com a análise sintática Necessário acrescentar na tabela de símbolos um novo atributo Endereço relativo de um identificador na pilha (D) Código (C) Dados (D) 13
14 Geração de código Vetor de código (C) O código intermediário armazenado no vetor C será interpretado posteriormente Código (C) Dados (D) 14
15 Geração de código Vetor de dados (D) Características Vetor que se comporta como uma pilha Topo acessado via D[s] Só existe em tempo de execução Instruções operam sobre o topo (e/ou topo -1) Código (C) Dados (D) 15
16 Interpretação do código O código armazenado no vetor C é executado a partir de um interpretador Instruções C[i] são executadas, manipulando os dados do vetor D, até encontrar uma instrução de parada (neste caso, a inst. PARA) ou 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 Código (C) Dados (D) 16
17 MEPA Instruções Código (C) Dados (D) Significado Carrega Constante cno Topo (pilha) Instrução Execução CRCT c Carrega valor de end. n no Topo CRVL n Armazena valor do Topo no end.n de D ARMZ n s:=s+1; D[s]:=c; s:=s+1; D[s] := D[n]; D[n ] := D[s]; s := s -1; Soma SOMA D[s-1]:=D[s-1]+D[s]; s:=s-1; Subtração (SUBT), Multiplicação (MULT), Divisão (DIVI) e Resto da divisão Inteira (MODI) Idem a SOMA Efetua a soma dos dois valores do topo da pilha. Desempilha os dois valores do topo da pilha e empilha o resultado no topo da pilha 17
18 MEPA Instruções Código (C) Dados (D) Significado Instrução Execução Inverte Sinal do Topo INVR D[s]:= D[s]; Conjunção ( and) de valores lógicos CONJ SeD[s-1]=1 andd[s]=1 entãod[s-1]:=1; -> Falso=0; Verdadeiro=1 senãod[s-1]:=0; s:=s-1; Disjunção (or) de valores lógicos DISJ SeD[s-1]=1 or D[s]=1 entãod[s-1]:=1; senãod[s-1]:=0; s:=s-1; Negação (not) NEGA D[s]:= 1 - D[s] Compara se Menor CMME Se D[s-1] < D[s] então D[s-1]:=1 senão D[s-1]:=0; s:=s-1; Compara se Maior (CMMA), Compara se Igual (CMIG), Compara se Desigual (CMDG), Compara se Maior ou Igual (CMAG) e Compara se Menor ou Igual (CMEG) todas instr. idem a CMME 18
19 MEPA exemplo 1 a = a + b * c Considerando a tabela de símbolos com os atributos endereço de memória e valor. 19
20 a = a + b * c MEPA Exemplo de Comando de atribuição Tradução CRVL a* CRVL b* CRVL c* MULT SOMA ARMZ a* * endereço na Pilha obtido na Tabela de Símbolos 20
21 MEPA Comando de atribuição a = a + b * c Tradução CRVL a* CRVL b* CRVL c* MULT SOMA ARMZ a* 21
22 MEPA Comandos condicionais if E then C1 else C2 Tradução Novas instruções Significado Instrução Execução Desvia sempre para a instr. de endereço p DSVS p Comando Nulo NADA {} i:=p; Desvia se Falso DSVF p se D[s]=0 então i:=p senão i:=i+1; s:=s-1; 22
23 MEPA Comandos condicionais Exemplo: if (q) then a:= 1 else a := 2 Novas instruções Tradução CRVL q* DSVF L1 CRCT 1 ARMZ a* DSVS L2 L1 NADA CRCT 2 ARMZ a* L2 NADA * endereço na pilha D obtido da tabela de símbolos Significado Instrução Execução Desvia sempre DSVS p i:=p; Desvia se Falso DSVF p se D[s]=0 então i:=p senão i:=i+1; s:=s-1; Comando Nulo NADA {} 23
24 Exemplo: if (a>b) then q := p and q MEPA Comandos condicionais else if (a <2 *b) then p := true else q := false Tradução CRVL a* CRVL b* CRVL b* MULT CMMA CMME DSVF L3 DSVF L5 CRVL p* CRCT 1 CRVL q* ARMZ p* CONJ DSVS L6 ARMZ q* L5 NADA DSVS L4 CRCT 0 L3 NADA ARMZ q* CRVL a* L6 NADA CRCT 2 L4 NADA 24
25 MEPA Comandos iterativos while E do C Tradução Novas instruções Significado Instrução Execução Desvia sempre DSVS p i:=p; Desvia se Falso DSVF p se D[s]=0 então i:=p senão i:=i+1; s:=s-1; Comando Nulo NADA {} 25
26 MEPA Comandos iterativos while (s <=n) do s := s +3 * s L1 NADA CRVL s* CRVL n* CMEG DSVF L2 CRVL s* CRCT 3 CRVL s* MULT SOMA ARMZ s* DSVS L1 L2 NADA Novas instruções Significado Instrução Execução Desvia sempre DSVS p i:=p; Desvia se Falso DSVF p se D[s]=0 então i:=p senão i:=i+1; s:=s-1; Comando Nulo NADA {} 26
27 MEPA Comandos de entrada/saída read (V1, V2,..., Vn) Tradução LEIT ARMZ v1* LEIT ARMZ v2* LEIT ARMZ vn* Novas instruções Significado Instrução Execução Leitura de numero inteiro LEIT s:=s+1; D[s] := <entrada padrão> Leitura de caractere LECH s:=s+1; D[s] := <entrada padrão> Imprime número inteiro IMPR <saída padrão> := D[s]; s:=s-1; Imprime caractere IMPC <saída padrão> := D[s]; s:=s-1; Imprime <enter> IMPE 27
28 MEPA Comandos de entrada/saída write (V1, V2,..., Vn) Tradução Novas instruções Significado Instrução Execução Leitura de numero inteiro LEIT s:=s+1; D[s] := <entrada padrão> Leitura de caractere LECH s:=s+1; D[s] := <entrada padrão> Imprime número inteiro IMPR <saída padrão> := D[s]; s:=s-1; Imprime caractere IMPC <saída padrão> := D[s]; s:=s-1; Imprime <enter> IMPE 28
29 MEPA Tradução de programas Para traduzir um programa simples é necessário: alocar e liberar variáveis; iniciar máquina virtual; terminar máquina virtual. 29
30 MEPA Tradução de programas Exemplo Entrada program var x, y: integer end. Tradução INPP AMEM 1 AMEM 1 DMEM 1 DMEM 1 PARA Novas instruções Cadeia Token... End. relativo x ID 0 Y ID 1 Significado Instrução Execução Inicia Programa Principal INPP s:= -1; Aloca Memória na Pilha, no caso de LALG m=1 AMEM m s := s+m; Desaloca Memória DMEM m s := s-m; Termina a execução PARA { } 30
31 MEPA Tradução de programa Exemplo completo Entrada Tradução program exemplo_1; var x, y : integer; begin read(x,y); if x > y then writeln(x) end. INPP AMEM 1 AMEM 1 LEIT ARMZ 0 LEIT ARMZ 1 CRVL 0 CRVL 1 CMMA DSVF 0 CRVL 0 IMPR 0 NADA PARA 31
32 Geração de código para LALG Só será gerado o código de montagem para programas escritos em LALG sem procedimentos. 32
33 Detalhes de implementação Código (C) Dados (D) Programa vetor C Dados vetor D i Registrador de C e s registrador de D Obs: 1. Uma vez que o programa da MEPA está carregado na região C e os registradores têm seus valores iniciais, o funcionamento da máquina é muito simples. As instruções indicadas pelo registrador i são executadas até que seja encontrada a instrução de parada, ou ocorra algum erro. A execução de cada instrução aumenta de 1 o valor de i, exceto as instruções que envolvem desvios. 2. a nível de projeto, o Programa vetor de código (C) armazena o conjunto de instruções MEPA geradas pelo compilador. Esta saída será a entrada de um programa interpretador deste código. 33
34 Código (C) Dados (D) Detalhes de implementação Como a área D em LALG só manipula inteiros, então var D: array [0.. tpilha] of integer; s: -1.. tpilha; A Tabela de Símbolos deverá ser aumentada com um campo: end_rel (endereço relativo à base na pilha M). 34
35 Detalhes de implementação Código (C) Dados (D) TypeFunções = (SOMA, SUBT, ARMZ,...); var C: array[0..maxc] of record F: Funções; C: -1..MaxInt; end; procedure Gerar (X: Funções, Y: integer); begin i := i+1; withc[i] do begin F:=X; {código} C:=Y; {argumento} end end; 35
36 Interpretador para LALG A entrada para o Interpretador é o array de códigos C. A pilha D será sua área de trabalho e eventualmente ele necessitará de informações da Tabela de Símbolos. O procedimento principal seria aquele que percorreria o array C a partir da posição 0, interpretando cada instrução. Terminaria ao encontrar a instrução PARA. Código (C) Dados (D) 36
37 Geração de código para LALG Definir uma rotina Gerar(rótulo, código, par1, par2) Que receberá como parâmetros: rótulo/nada, código, seguido de 0,1 ou 2 argumentos Em caso de desvios Uma instrução da MEPA 37
38 Geração de código para LALG Gerar(rótulo, código, par1, par2) Declaração de variáveis var Gerar(branco, AMEM, 1) id : real, integer 38
39 procedimento dc_v(s) begin end; Analisador sintático <VARIAVEIS> ::= <ID> descendente <MAIS_VAR> <MAIS_VAR> ::=, <VARIAVEIS> λ algoritmo do procedimento ERRO se (simb=var) então obter_símbolo() senão imprimir( Erro: var esperado ); ERRO(Primeiro(variaveis)+S); //consome até encontrar ID variaveis({:}+s); se (simb=simb_dp) então obter_símbolo() senão imprimir( Erro: : esperado ); ERRO(Primeiro(tipo_var)+S); //consome até encontrar integer ou real tipo_var({;}+s); se (simb=simb_pv) então obter_símbolo() senão dc_v(s); imprimir( Erro: ; esperado ); ERRO(Primeiro(dc_v)+S); //consome até encontrar ; Rotina Declaração de Variáveis <DC_V> ::= var <VARIAVEIS> : <TIPO_VAR> ; <DC_V> λ <TIPO_VAR> ::= integer real 39
40 procedimento variaveis(s) begin s:=0 se (simb=id) end; então Analisador sintático <VARIAVEIS> ::= <ID> descendente <MAIS_VAR> <MAIS_VAR> ::=, <VARIAVEIS> λ algoritmo do procedimento ERRO se busca(cadeia, token= id, cat= var )=false então inserir(cadeia,token= id,cat= var, end_rel=s++);gerar(branco, AMEM, 1); senão ERRO( identificador já declarado ); obtem_simbolo(cadeia,simbolo) enquanto (simbolo=simb_virgula) faça obtem_simbolo(cadeia,simbolo) se (simb=id) então se busca(cadeia, token= id, cat= var )=false Rotina Declaração de Variáveis <DC_V> ::= var <VARIAVEIS> : <TIPO_VAR> ; <DC_V> λ <TIPO_VAR> ::= integer real então inserir(cadeia,token= id,cat= var, end_rel=s++); Gerar(branco, AMEM, 1); fim-então senão ERRO( identificador já declarado ) obtem_simbolo(cadeia,simbolo) senão ERRO(S+{simb_virgula,simb_dois_pontos}); fim-enquanto Analisador semântico Geração de código 40
41 Analisador sintático <VARIAVEIS> ::= <ID> descendente <MAIS_VAR> <MAIS_VAR> ::=, <VARIAVEIS> λ algoritmo do procedimento ERRO procedimento tipo_var(s) begin se (simb=integer) end; Rotina Declaração de Variáveis <DC_V> ::= var <VARIAVEIS> : <TIPO_VAR> ; <DC_V> λ <TIPO_VAR> ::= integer real então tab_simb_alterar_tipo(cadeia, token= id, cat= var, tipo= integer ) senãotab_simb_alterar_tipo(cadeia, token= id, cat= var, tipo= real ) var x,y: integer Cadeia Token Categoria Tipo Valor... End.relativo meu_prog id meu_prog x id var integer... 0 y id var integer... 1 Analisador semântico Geração de código 41
42 procedure termo (var t: string); var t1, t2: string; begin Fator (t); Enquanto simbolo in [*,div, and] faça begin end; s1:= simbolo; simbolo:= analex(s); Fator(t1); Rotina Termo Caso s1 seja * : t2 := inteiro ; Gerar(branco, MULT ); end; div: t2 := inteiro ; Gerar(branco, DIVI ); and : t2 := booleano Gerar(branco, CONJ ); Rotina Termo 21. <termo> ::= <fator> {(* div and)<fator>} 22.<fator> ::= <variavel> <número> (<expressão>) not <fator> Se (t <> t1) ou (t <> t2) então erro( incompatibilidade de tipos ) end Analisador semântico Geração de código 42
43 procedure fator (var t: string); Inicio Caso simbolo seja Número: {t:=inteiro; Gerar(branco, Rotina CRCT, simbolo); Termo simbolo := analex(s);} Identificador: {Busca(Tab: TS; id: string; ref: Pont_entrada; declarado: boolean); Se declarado = false então erro; Obtem_atributos(ref: Pont_entrada; AT: atributos); Caso AT.categoria seja Variavel: {t:= AT.tipo; Gerar(branco, CRVL, AT.escopo, AT.end); simbolo := analex(s);} Constante: {t:= boolean ; Rotina Fator caso simbolo seja 22.<fator> ::= <variavel> <número> (<expressão>) not <fator> true : Gerar(branco, CRCT,1); false : Gerar(branco, CRCT,0); end; simbolo:= analex(s);} Else erro; fim caso; Cod_abre_par: {simbolo := analex(s); expressao(t); se simbolo <> Cod_fecha_par then erro; simbolo := analex(s);} Cod_neg: {simbolo := analex(s); fator(t); se t <> booleano então erro Gerar(branco, NEGA ) Else erro; Fim caso; Analisador semântico Geração de código 43
44 Geração de código para LALG Demais comandos: atribuição, condicional, iterativo, entrada/saída consultar páginas do livro Implementação de Linguagens de Programação Tomasz Kowaltowski Unicamp Acrescente ao seu projeto uma rotina para geração de código intermediário e uma rotina para interpretação do código. Obs: código-fonte sem procedimentos Data limite de entrega: 11/02/16 44
45 Exemplo de geração de código para LALG Gere código para o programa abaixo e interprete o código gerado program exemplo_1; var x, y : integer; begin read(x,y); if x > y then writeln(x) end. INPP AMEM 1 AMEM 1 LEIT ARMZ 0 LEIT ARMZ 1 CRVL 0 CRVL 1 CMMA DSVF 0 CRVL 0 IMPE 0 NADA PARA 45
46 Exemplo de geração de código para LALG program testebytecode; varx, y, z : integer; begin read(y, z); x := x + z*(10 divy + 1); writeln(x, y, z); end. ifx > 0 then else ify > 0 then y := x*y else y := y + x ify > 0 then y := -y else y := y + z INPP AMEM 1 AMEM 1 AMEM 1 LEIT ARMZ 1 LEIT ARMZ 2 CRVL 0 CRVL 2 CRCT 10 CRVL 1 DIVI CRCT 1 SOMA MULT SOMA ARMZ 0 CRVL 0 IMPE CRVL 1 IMPE CRVL 2 IMPE CRVL 0 CRCT 0 CMMA DSVF 0 CRVL 1 CRCT 0 CMMA DSVF 1 CRVL 0 CRVL 1 MULT ARMZ 1 DSVS 2 1 NADA CRVL 1 CRVL 0 SOMA ARMZ 1 2 NADA DSVS 3 0 NADA CRVL 1 CRCT 0 CMMA DSVF 4 CRVL 1 CRCT -1 MULT ARMZ 1 DSVS 5 4 NADA CRVL 1 CRVL 2 SOMA ARMZ 1 5 NADA 3 NADA PARA 46
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
Organização de Computadores 1
Organização de Computadores 1 3.1 CPU: Unidade de Processamento Central Prof. Luiz Gustavo A. Martins Arquitetura de von Newmann Unidade de Processamento Central (CPU): Memória Principal Unidade de Processamento
1.2 OPERAÇÕES BÁSICAS EM ALGORITMOS E PROGRAMAS 18
ÍNDICE MÓDULO 1 INTRODUÇÃO À ALGORITMIA 11 1.1 PROGRAMAS E ALGORITMOS 12 Fases da programação 12 Algoritmos e algoritmia 13 Algoritmos em linguagem informal, pseudocódigo e fluxogramas 14 Símbolos utilizados
Aula 11: Desvios e Laços
Aula 11: Desvios e Laços Nesta aula explicaremos alguns comandos que podem alterar o fluxo dos seus programas em JavaScript. Você aprenderá a estrutura dos comandos de desvios e laços. Entenderá como funcionam
http://www.ic.uff.br/~boeres/fac.html! Conteúdos: Debora, Edcarllos, livros! slides disponíveis!
http://www.ic.uff.br/~boeres/fac.html! 1 Conteúdos: Debora, Edcarllos, livros! slides disponíveis! Unidade central de Processamento realiza operações básicas codificadas em 0s e 1s instrução contém código
Sistemas Operacionais. Rodrigo Rubira Branco [email protected] [email protected]. www.fgp.com.br
Sistemas Operacionais Rodrigo Rubira Branco [email protected] [email protected] Tipos de Sistemas Operacionais De Sistemas Embarcados (PalmOS,WinCE,WinXPEmbbeded,Linux) Hardware simples, especifico
Introdução ao. Script. Baltazar Tavares (Psycho Mantys) https://psychomantys.wordpress.com https://about.me/psycho_mantys
Introdução ao Script Baltazar Tavares (Psycho Mantys) https://psychomantys.wordpress.com https://about.me/psycho_mantys O que é Bash Script? O que é Bash + Script? O que é Bash? O que é Bash? Ele é um
Informática I. Aula 19. http://www.ic.uff.br/~bianca/informatica1/ Aula 19-20/06/06 1
Informática I Aula 19 http://www.ic.uff.br/~bianca/informatica1/ Aula 19-20/06/06 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação
Manual de Programação TED1000 versão TC100 Ethernet
Manual de Programação TED1000 versão TC100 Ethernet Indice: Configurações iniciais...2 Configuração de IP...2 Teclas especiais...2 Cabo de rede...2 Programação...3 Abrindo a comunicação (abreip)...3 Enviando
Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis
1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que
Universidade de São Paulo São Carlos, SP Instituto de Ciências Matemáticas e de Computação. SSC0206 1/2010 Introdução à Compilação
Universidade de São Paulo São Carlos, SP Instituto de Ciências Matemáticas e de Computação SSC0206 1/2010 Introdução à Compilação Trabalho 3: Analisador Semântico e Gerador de Código Prof. Dr. Thiago A.
Introdução à Lógica de Programação
Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação 1 Estruturas de dados Representação computacional das informações do problema ser resolvido Informações podem ser de
Testes Baseados na Implementação. (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins
Testes Baseados na Implementação (fluxo de controle) Baseado em notas de aula da profa. Eliane Martins 1 Tópicos O que é Grafo de fluxo de controle Critérios de cobertura 2 Referências B.Beizer R.Binder
Protótipo de Gerador de Código Executável no Ambiente FURBOL
Protótipo de Gerador de Código Executável no Ambiente FURBOL Acadêmico: Geovânio Batista André Orientador: José Roque Voltolini da Silva Trabalho de Conclusão de Curso Área/SubÁrea Compiladores/Geração
Introdução à Programação de Computadores Parte I
Introdução à Programação de Computadores Parte I Prof. Dr. Edson Pimentel Centro de Matemática, Computação e Cognição Objetivos Compreender os componentes básicos de um programa... Objetivos Bacharelado
Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática
Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]
Simulado de Linguagem de Programação Java
Simulado de Linguagem de Programação Java 1. Descreva o processo de criação de programas em Java, desde a criação do código-fonte até a obtenção do resultado esperado, por meio de sua execução. Cite as
Variáveis Compostas Heterogêneas. Variável Composta Heterogênea. Variável Composta Heterogênea
Variáveis Compostas Heterogêneas Variável Composta Heterogênea Conjunto de dados logicamente relacionados, mas de tipos diferentes. Também chamada de registro. Variável Composta Heterogênea 1 Declaração
Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto
Lógica de Programação Profas. Simone Campos Camargo e Janete Ferreira Biazotto O curso Técnico em Informática É o profissional que desenvolve e opera sistemas, aplicações, interfaces gráficas; monta estruturas
Introdução. A verificação de tipos pode ser estática e dinâmica
Análise Semântica Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores Além disso,
Conteúdo programático
Introdução à Linguagem C Conteúdo programático Introdução à Linguagem C Estrutura de Programas Variáveis, Constantes Operadores, Entrada e Saída de Dados Estruturas de Desvio Estrutura de Múltipla Escolha
LÓGICA DE PROGRAMAÇÃO Prof. José Geraldo
LÓGICA DE PROGRAMAÇÃO Prof. José Geraldo 1.1 Introdução A Lógica é forma de organizar os pensamentos e demonstrar o raciocínio de maneira correta. A utilização da lógica é a melhor maneira de solucionar
IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01
IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://lab.ifto.edu.br/~mcampos
FastCube 2.0 Programmer Manual
FastCube 2.0 Programmer Manual I FastCube 2.0 Programmer Manual Table of contents Chapter I Arquitetura do FastCube 2 2 Chapter II Utilizaçã o dos componentes do FastCube 5 1 Salvar... e carregar um cubo
Unidade 1: O Computador
Unidade : O Computador.3 Arquitetura básica de um computador O computador é uma máquina que processa informações. É formado por um conjunto de componentes físicos (dispositivos mecânicos, magnéticos, elétricos
PROGRAMAÇÃO II 3. PILHA DINÂMICA
3. PILHA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma pilha é um tipo especial de Pilha na quais todas as inserções e remoções são feitas na primeira posição, que é chamada de topo. Outro nome
Organização e Arquitetura de Computadores. Ivan Saraiva Silva
Organização e Arquitetura de Computadores Hierarquia de Memória Ivan Saraiva Silva Hierarquia de Memória A Organização de Memória em um computador é feita de forma hierárquica Registradores, Cache Memória
A Linguagem Algorítmica Estrutura de Repetição. Ex. 2
Estrutura de Repetição. Ex. 2 A ESTRUTURA Enquanto faça{} É MELHOR UTILIZADA PARA SITUAÇÕES ONDE O TESTE DE CONDIÇÃO (V OU F) PRECISA SER VERIFICADO NO INÍCIO DA ESTRUTURA DE REPETIÇÃO.
PROGRAMAÇÃO DE COMPUTADORES
PROGRAMAÇÃO DE COMPUTADORES COMANDOS E FORMATOS DE ENTRADA E SAÍDA 1 COMANDOS E FORMATOS DE ENTRADA E SAÍDA Os comandos de entrada e saída, na sua forma mais simplificada, possuem a seguinte estrutura:
Objetivo do Portal da Gestão Escolar
Antes de Iniciar Ambiente de Produção: É o sistema que contem os dados reais e atuais, é nele que se trabalha no dia a dia. Neste ambiente deve-se evitar fazer testes e alterações de dados sem a certeza
Arquitetura de Computadores. Tipos de Instruções
Arquitetura de Computadores Tipos de Instruções Tipos de instruções Instruções de movimento de dados Operações diádicas Operações monádicas Instruções de comparação e desvio condicional Instruções de chamada
Desenvolvido por: Juarez A. Muylaert Filho - [email protected] Andréa T. Medeiros - [email protected] Adriana S. Spallanzani - [email protected].
UAL é uma linguagem interpretada para descrição de algoritmos em Português. Tem por objetivo auxiliar o aprendizado do aluno iniciante em programação através da execução e visualização das etapas de um
ENG1000 Introdução à Engenharia
ENG1000 Introdução à Engenharia Aula 09 Vetores e Matrizes Edirlei Soares de Lima Introdução Até agora nós temos usado variáveis simples para armazenar valores usados por nossos
Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução
Métodos de Programação I 2. 27 Ciclo com Contador : instrução for identificador downto for de variável := expressão to expressão do instrução UMA INSTRUÇÃO (SIMPLES OU COMPOSTA) Neste caso o ciclo é repetido
Programação Básica em Arduino Aula 2
Programação Básica em Arduino Aula 2 Execução: Laboratório de Automação e Robótica Móvel Variáveis são lugares (posições) na memória principal que servem para armazenar dados. As variáveis são acessadas
IES-300. Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce [email protected]
IES-300 Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Me. Álvaro d Arce [email protected] Teste de Caixa Branca 2 Teste de Componentes: Caixa Branca Teste de Caixa Branca Grafo de Fluxo de
Sintaxe e Semântica. Fases da Compilação. programa fonte
Sintaxe e Semântica [email protected] Fases da Compilação programa fonte tokens parse tree árvore anotada ou outra forma intermediária código intermediário código objeto código objeto otimizado scanner
e à Linguagem de Programação Python
Introdução a Algoritmos, Computação Algébrica e à Linguagem de Programação Python Curso de Números Inteiros e Criptografia Prof. Luis Menasché Schechter Departamento de Ciência da Computação UFRJ Agosto
Processamento de Dados aplicado à Geociências. AULA 1: Introdução à Arquitetura de Computadores
1 Processamento de Dados aplicado à Geociências AULA 1: Introdução à Arquitetura de Computadores UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CURSO SUPERIOR DE TECNOLOGIA EM GEOPROCESSAMENTO
TUTORIAL MATLAB Victor Breder 2016
TUTORIAL MATLAB Victor Breder 2016 1. INTERFACE A. Caminho de trabalho Mostra o caminho pasta raiz que será considerada para executar scripts e funções criados pelo usuário. B. Pasta de trabalho Mostra
Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1
Estrutura de Dados Introdução a Ponteiros Prof. Gerson Borges Estrutura de Dados I 1 Sumário è Explicação da importância do planejamento de ensino; è Métodos e técnicas que iremos trabalhar durante o semestre;
Compiladores. Prof. Bruno Moreno Aula 11 20/05/2011
Compiladores Prof. Bruno Moreno Aula 11 20/05/2011 2- Recursivo preditivo Análise Recursiva Preditiva O símbolo sobre o cabeçote de leitura determina exatamente qual produção deve ser aplicada na expansão
Nivel de Linguagem de Montagem (Assembly)
Nivel de Linguagem de Montagem (Assembly) Orlando Loques setembro 2006 Referências: Structured Computer Organization (capítulo 7), A.S. Tanenbaum, (c) 2006 Pearson Education Inc Computer Organization and
Estruturas de entrada e saída
capa Estruturas de entrada e saída - A linguagem C utiliza de algumas funções para tratamento de entrada e saída de dados. - A maioria dessas funções estão presentes na biblioteca . - As funções
Linguagens de programação
Prof. André Backes Linguagens de programação Linguagem de Máquina Computador entende apenas pulsos elétricos Presença ou não de pulso 1 ou 0 Tudo no computador deve ser descrito em termos de 1 s ou 0 s
Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo
INF01040 Introdução à Programação Introdução à Lógica de Programação s Seqüenciais Sumário Elaboração de um programa/algoritmo Formas de representação de um algoritmo Elementos manipulados em um programa/algoritmo
INE5317 Linguagens Formais e Compiladores. AULA 2: Es trutura geral dos Compiladores
INE5317 Linguagens Formais e Compiladores AULA 2: Es trutura geral dos Compiladores bas eado em material produzido pelo prof Olinto Jos é Varela Furtado Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: [email protected]
Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos
Lógica Aula 2 Técnicas de Programação Criando algoritmos Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos Criando
Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo;
Conjunto (set) O tipo estruturado set representa, em Pascal, um conjunto de objectos de um dado tipo; O tipo de dados tem por base um tipo simples (enumerável); Na verdade, um set representa o conjunto
O Funcionamento do Processador
O Funcionamento do Processador Arquiteturas para Alto Desmpenho Prof. [email protected] Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Os cinco componentes clássicos de um Computador - Controle O
CONTEÚDOS PROGRAMÁTICOS
UFRGS - Instituto de Informática - Departamento de Informática Aplicada Disciplina : INF01202 - Algoritmos e Programação Turmas: A e B Sem: 2009/2 Professora: Cora Pinto Ribeiro ([email protected]) Disciplina:
ESTRUTURA CONDICIONAL
AULA 6 ESTRUTURA CONDICIONAL 130 Tem como objetivo executar um conjunto de comandos caso uma condição lógica seja atendida. Quando a resposta lógica for falsa, nada será executado. Sintaxe Se CONDIÇÃO
Síntese. Compiladores. Geração de código intermediário. Linguagens Intermediárias. Modelo Clássico. Linguagens Intermediárias. Código intermediário
Síntese Compiladores Código intermediário 1 Os assuntos apresentados trazem respostas às perguntas seguintes: 1. Pode a memória ser alocada dinamicamente? 2. Pode a memória ser liberada explicitamente?
Expressões. Prof. Alberto Costa Neto [email protected]. Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe
Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Expressão é uma frase de um programa que ao ser avaliada retorna um valor Tipos Literais Agregados Chamadas de Função
PROGRAMAÇÃO II 3. FILA DINÂMICA
3. FILA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma fila é um tipo especial de lista na qual todas as inserções são feitas sempre depois do fim e as deleções no início. Por isso também recebe
A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.
INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,
Algoritmos em Javascript
Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays
Oganização e Arquitetura de Computadores
Oganização e Arquitetura de Computadores Capítulo 14 e 15 Unidade de Controle Parte I Operação da Unidade de Controle 1 Micro-Operações Um computador executa um programa Ciclo: Busca/Executa Cada ciclo
ARQUITETURA DE COMPUTADORES. Professor: Clayton Rodrigues da Siva
ARQUITETURA DE COMPUTADORES Professor: Clayton Rodrigues da Siva OBJETIVO DA AULA Objetivo: Conhecer a estrutura da arquitetura da Máquina de Von Neumann. Saber quais as funcionalidades de cada componente
Programar. Visual Basic 1/61
Programar em Visual Basic António Ramires Fernandes Departamento de Informática Universidade do Minho 2001 1/61 1 DEFINIÇÕES BÁSICAS... 4 1.1 VARIÁVEIS... 4 1.1.1 DECLARAÇÃO DE VARIÁVEIS... 5 1.2 CONSTANTES...
PROG. DE COMPUTADORES II SI Arquivos
1 PROG. DE COMPUTADORES II SI Arquivos Arquivos Permitem que gravemos nossas informações em dispositivos físicos Pendrive HD Estão organizados logicamente em registros Cada registro é similar a um campo
Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias
Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Prof. Bruno Vilela Oliveira [email protected] http://www.brunovilela.webnode.com.br Aula 08 Programação em pascal Pascal Pascal
Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura
UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.
Geração de código intermediário. Novembro 2006
Geração de código intermediário Novembro 2006 Introdução Vamos agora explorar as questões envolvidas na transformação do código fonte em uma possível representação intermediária Como vimos, nas ações semânticas
Análise Léxica. Sumário
Análise Léxica Renato Ferreira Sumário Definição informal de Análise Léxica Identifica tokens numa string de entrada Alguns detalhes Lookahead Ambiguidade Especificação de Analisadores Léxicos Expressões
Componentes do Computador e. aula 3. Profa. Débora Matos
Componentes do Computador e modelo de Von Neumann aula 3 Profa. Débora Matos O que difere nos componentes que constituem um computador? Princípios básicos Cada computador tem um conjunto de operações e
Inteligência Artificial
Inteligência Artificial Aula 7 Programação Genética M.e Guylerme Velasco Programação Genética De que modo computadores podem resolver problemas, sem que tenham que ser explicitamente programados para isso?
Para testar seu primeiro código utilizando PHP, abra um editor de texto (bloco de notas no Windows) e digite o código abaixo:
Disciplina: Tópicos Especiais em TI PHP Este material foi produzido com base nos livros e documentos citados abaixo, que possuem direitos autorais sobre o conteúdo. Favor adquiri-los para dar continuidade
Curso C: Ponteiros e Arrays
Universidade de Brasília Departamento de Ciência da Computação Curso C: Ponteiros e Arrays Prof. Ricardo Pezzuol Jacobi [email protected] Ponteiros um ponteiro Ž uma vari vel que contžm o endere o um
Geração e Otimização de Código (continuação)
Geração e Otimização de Código (continuação) 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 Geração
Representação de Algoritmos - Linguagens de Programação
Representação de Algoritmos - Linguagens de Programação A representação de algoritmos em uma pseudo-linguagem mais próxima às pessoas é bastante útil principalmente quando o problema a ser tratado envolve
ARQUIVOS. Os arquivos criados em meios magnéticos poderão ser acessados para leitura e escrita na forma seqüencial, direta ou indexada.
Texto retirado e adaptado da apostila A Linguagem Pascal, disponível no site http://www.portaldaprogramacao.com (autor: desconhecido) ARQUIVOS Anteriormente, foi estudado o conceito de tabelas em memória
SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios
SISTEMAS OPERACIONAIS INF09344 - Sistemas Operacionais / INF02780 - Sistemas Operacionais / INF02828 - Sistemas de Programação II Prof a. Roberta Lima Gomes ([email protected]) 3ª. Lista de Exercícios Data
Organização de Computadores
Organização de Computadores SUMÁRIO Arquitetura e organização de computadores Hardware Software SUMÁRIO Arquitetura e organização de computadores Terminologia básica Hardware Software Arquitetura e organização
Fundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 2 Princípios de Programação Prof. Belarmino Linguagem de Computadores Internamente os computadores usam instruções e armazenam os dados no formato numérico binário
Banco de Dados I. Prof. Edson Thizon [email protected]
Banco de Dados I Prof. Edson Thizon [email protected] Conceitos Dados Fatos conhecidos que podem ser registrados e que possuem significado implícito Banco de dados (BD) Conjunto de dados interrelacionados
Apostila Básica de Lógica e Programação para Game Maker por Giosepe Luiz 1
Apostila Básica de Lógica e Programação para Game Maker por Giosepe Luiz 1 Sumário 1. Introdução a Lógica... 03 2. Verdadeiro e Falso... 03 3. Conectivo E e OU... 03 4. Negação... 04 5. Introdução a Programação...
Programação de Computadores. Professor Ilaim Costa Junior [email protected] Www.ic.uff.br/~ilaim
Programação de Computadores Professor Ilaim Costa Junior [email protected] Www.ic.uff.br/~ilaim Roteiro da Aula de Hoje Introdução ao FORTRAN (Parte I) Organização de programas Tipos de dados Variáveis Programação
Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL
Laboratório de Banco de Dados Prof. Luiz Vivacqua PL/pgSQL A Linguagem de programação do PostgreSQL 1) Visão Geral A PL/pgSQL é uma linguagem de programação procedural para o Sistema Gerenciador de Banco
10. CPU (Central Processor Unit)... 10 2 10.1 Conjunto das instruções... 10 2 10.2 Estrutura interna... 10 4 10.3 Formato das instruções...
10. CPU (Central Processor Unit)... 10 2 10.1 Conjunto das instruções... 10 2 10.2 Estrutura interna... 10 4 10.3 Formato das instruções... 10 4 10. CPU (CENTRAL PROCESSOR UNIT) Como vimos no capítulo
ARQUITETURA DE COMPUTADORES - 1866
7 Unidade Central de Processamento (UCP): O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento e de controle, durante a execução de um
Arquivos Seqüenciais Atualização em Lote
Arquivos Seqüenciais Atualização em Lote Vanessa Braganholo Baseado no Material de: Inhaúma Neves Ferraz (IC/UFF) Cenário } Arquivos Sequenciais Ordenados } Objetivo: atualizar o arquivo, mantendo sua
Algoritmos e Programação de Computadores
Algoritmos e Programação de Computadores Algoritmos Estrutura Sequencial Parte 1 Professor: Victor Hugo L. Lopes Agenda Etapas de ação do computador; TDP Tipos de Dados Primitivos; Variáveis; Constantes;
Programação de Computadores III
Programação de Computadores III Introdução a Linguagens de Programação Professor Leandro Augusto Frata Fernandes [email protected] Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.1/tcc-00.157
Resumo da Introdução de Prática de Programação com C. A Linguagem C
Resumo da Introdução de Prática de Programação com C A Linguagem C O C nasceu na década de 70. Seu inventor, Dennis Ritchie, implementou-o pela primeira vez usando um DEC PDP-11 rodando o sistema operacional
Paradigmas de Programação
Paradigmas de Programação Tipos de Dados Aula 5 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Tipos de Dados Sistema de tipos Tipos de Dados e Domínios Métodos
Edeyson Andrade Gomes
Sistemas Operacionais Conceitos de Arquitetura Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Máquinas de Níveis Revisão de Conceitos de Arquitetura 2 Máquina de Níveis Máquina de níveis Computador
4 Criação de macros e introdução à linguagem VBA
4 Criação de macros e introdução à linguagem VBA Vinicius A. de Souza [email protected] São José dos Campos, 2011. 1 Sumário Tópicos em Microsoft Excel 2007 Introdução à criação de macros...3 Gravação
UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais
UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06 Disciplina: Linguagem de Programação C Profª Viviane Todt Diverio Funções, variáveis, parâmetros formais
Internet e Programação Web
COLÉGIO ESTADUAL PEDRO MACEDO Ensino Profissionalizante Internet e Programação Web 3 Técnico Prof. Cesar 2014 1 SUMÁRIO Criar sites dinâmicos em PHP --------------------------------------------------------
/ Métodos de Programação I Projecto 0
Departamento de Matemática da Universidade de Coimbra / Métodos de Programação I Projecto 0 Cálculo do Instante de Chegada de um Voo Dado o instante de partida de um avião (horas, minutos, segundos), dado
Java Como Programar, 8/E
Capítulo 2 Introdução aos aplicativos Java Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 2.1 Introdução Programação de aplicativo Java. Utilize as ferramentas do JDK para compilar
Do alto-nível ao assembly
Do alto-nível ao assembly Compiladores Cristina C. Vieira 1 Viagem Como são implementadas as estruturas computacionais em assembly? Revisão dos conceitos relacionados com a programação em assembly para
Aluísio Eustáquio da Silva
1 Aluísio Eustáquio da Silva SciLab Programável Material didático usado em aulas de Programação de Computadores, Algoritmos e Lógica de Programação Betim Maio de 2012 2 PROGRAMAÇÃO O SciLab permite que
Programação Elementar de Computadores Jurandy Soares
Programação Elementar de Computadores Jurandy Soares Básico de Computadores Computador: dispositivos físicos + programas Dispositivos físicos: hardware Programas: as instruções que dizem aos dispositivos
Manual Remessa Bancária
Manual Remessa Bancária SUPERANDO DESAFIOS Identificação: 12.06a Autora: Laila M G Gechele Doc. Vrs. 01 Aprovado em: Revisores: Nota de copyright Copyright 2012 Teorema Informática, Guarapuava. Todos os
