Geração de Código Intermediário. Tradução dirigida por sintaxe. Código de três endereços - exemplo. Código de Três Endereços
|
|
- Maria Clara Costa Jardim
- 8 Há anos
- Visualizações:
Transcrição
1 Geração de Código Intermediário Tradução dirigida por sintaxe Vantagens do uso de uma notação intermediária: facilidade de retargetting: geração de código para vários processadores diferentes, reusando o máximo possível do código em todos os compiladores, mudando apenas o gerador de código final. uso de otimizador único para vários geradores de código diferentes. parser verificador de código front-end gerador de código intermediário código intermediário gerador de código back-end Código de Três Endereços Frequentemente usado como código intermediário, para linguagens imperativas/oo. Abstrai um assembler, onde cada instrução básica referencia 3 (ou menos) endereços (i.e. variáveis). Formato: x := y op z Exemplo: x + y * z é reescrito para t 1 := y * z t 2 := x + t 1 Código de três endereços - t 1 := -c t 2 := b * t 1 t 3 := -c t 4 := b * t 3 t 5 := t 2 + t 4 a := t 5 a = b * -c + b * -c; b a assign * + uminus c * b uminus c Tipos de código de três endereços Atribuição do tipo: x = y op z Atribuição do tipo: x = op y Cópia: x = y desvios incondicionais: goto L desvios condicionais: if x goto L e iffalse x goto L desvios condicionais: if x relop y goto L Tipos de código de três endereços (cont.) chamada de procedimentos: param x, call p, n e return y atribuição indexada: x = y[i] e x[i] = y atribuição de endereços e ponteiros: x = &y, x = *y e *x = y 1
2 Tradução dirigida por sintaxe para código de três endereços S id = E S.code := E.code gen(id.place = E.place) E E 1 + E 2 E.place := newtemp; E.code := E 1.code E 2.code gen(e.place = E 1.place + E 2.place) E - E 1 E.place := newtemp; E.code := E 1.code gen(e.place = uminus E 1.place) E ( E 1 ) E.place := E 1.place; E.code := E 1.code E id E.place := id.place; E.code := S while (E) S 1 Tradução do while S.begin := newlabel; S.end := newlabel; S.code := gen(s.begin : ) E.code gen( if E.place = 0 goto S.end) S 1.code gen( goto S.begin) gen(s.end : ) Declarações Declarações dentro de um procedimento frequentemente são tratadas como um único grupo, e são acessadas como um offset do ponto onde começam a ser armazenadas (na pilha). offset inicialmente é zero, e a cada novo símbolo declarado o valor do offset é guardado na tabela de símbolos, e o offset é incrementado. : procedimento enter(name,type,offset) Declarações P {offset := 0} D D D ; D D id : T { enter(id.name, T.type, offset); offset := offset + T.width } T integer { T.type := integer; T.width := 4; } T real { T.type := real; T.width := 8; } T array [ num ] of T 1 { T.type := array(num.val, T 1.type); T.width := num.val * T 1.width } Declarações tratando escopo uma possibilidade é manter tabelas de símbolos separadas para cada procedimento, com referências ao contexto mais externo (outra tabela de símbolos). Declarações tratando escopo procedimentos utilizados: mktable(previous) cria uma nova tabela de símbolos, com referência à anterior enter(table, name, type, offset) insere um novo símbolo na tabela addwidth(table, width) incrementa contador do tamanho da tabela enterproc(table,name,newtable) insere um novo símbolo (procedimento) na tabela e pilhas offset e tblptr 2
3 Declarações tratando escopo P M D { addwidth(top(tblptr),top(offset)); pop(tblptr); pop(offset); } M ε {t := mktable(nil); push(t,tblptr); push(0,offset);} D D 1 ; D 2 D proc id ; N D 1 ; S { t := top(tblptr); addwidth(t, top(offset)); pop(tblptr); pop(offset); enterproc(top(tblptr),id.name,t)} D id : T { enter(top(tblptr),id.name,t.type,top(offset)); top(offset) := top(offset) + T.width } N ε { t := mktable(top(tblptr)); push(t,tblptr); push (0,offset) } Declarações tratando registros nomes de campos de registros também podem ser guardados usando tabelas de símbolos específicas para cada (tipo) registro. T record L D end { T.type := record(top(tblptr)); T.width := top(offset); pop(tblptr); pop(offset); } L ε { t := mktable(nil); push(t,tblptr); push (0,offset) } Revendo Atribuições S id = E { p = lookup(id.name); if (p!= nil) gen(p = E.place) else error } E E 1 + E 2 { E.place = newtemp; gen(e.place = E 1.place + E 2.place) } E - E 1 { E.place = newtemp; gen(e.place = uminus E 1.place) } E ( E 1 ) { E.place = E 1.place } E id { p = lookup(id.name); if (p!= nil) E.place = p else error } Reuso de nomes Controlando o tempo de vida dos nomes usados dentro de cada statement ou expressão, é possível fazer o reuso de nomes de variáveis temporárias. Exemplo: usar contador incrementado para cada novo temporário, e decrementado para cada uso. evaluate E 1 to t 1 evaluate E 2 to t 2 t := t 1 + t 2 Reuso de nomes - x = ((a * b) + (c * d)) (e * f) t0 = a * b t1 = c * d t0 = t0 + t1 t1 = e * f t0 = t0 - t1 x = t0 Acesso a Arrays controlado de acordo com o tamanho e o tipo do array: base + (i low) * w ou melhor ainda: i * w + (base low * w) existem fórmulas genéricas para arrays multidimensionais: 2D: A[i 1, i 2 ] base + ((i 1 low 1 ) * n 2 + i 2 low 2 ) * w row-major vs. column-major 3
4 Expressões Booleanas Podem ser avaliadas de duas formas: codificar true e false como números, e avaliar as expressões da mesma forma que expressões matemáticas. usar o fluxo de controle, i.e. representar um valor por uma posição atingida no programa. Usada em ifthen-else, while-do etc. Permite curto-circuito de expressões: se E 1 é avaliado como true, na expressão E 1 or E 2, não é necessário avaliar E 2. Representação numérica - a or b and not c t 1 = not c t 2 = b and t 1 t 3 = a or t 2 Representação numérica - a < b é traduzido para if (a < b) 1 else 0 100: if a < b goto : t = 0 102: goto : t = 1 104: E E 1 or E 2 { E.place = newtemp; gen(e.place = E 1.place or E 2.place) } E id 1 relop id 2 { E.place = newtemp; gen( if id 1.place relop.op id 2.place goto nextstat + 3); gen(e.place = 0 ); gen( goto nextstat + 2); gen(e.place = 1 ) } E ( E 1 ) { E.place = E 1.place } E true { E.place = newtemp; gen(e.place = 1 ) } Representação numérica - 100: if a < b goto : t1 = 0 102: goto : t1 = 1 104: if c < d goto : t2 = 0 106: goto 108 a < b or c < d and e < f 107: t2 = 1 108: if e < f goto : t3 = 0 110: goto : t3 = 1 112: t4 = t2 and t3 113: t5 = t1 or t4 Fluxo de controle Associamos a cada expressão booleana desvios para labels caso a expressão seja avaliada para true ou false. E.true e E.false 4
5 Tradução do if-then Tradução do if-then-else S if (E) S 1 E.true = newlabel; E.false = S.next; S 1.next = S.next; S.code = E.code gen(e.true : ) S 1.code S if (E) S 1 else S 2 E.true = newlabel; E.false = newlabel; S 1.next = S.next; S 2.next = S.next; S.code = E.code gen(e.true : ) S 1.code gen( goto S.next); gen(e.false : ) S 2.code atributos herdados Tradução do while S while (E) S 1 S.begin = newlabel; E.true = newlabel; E.false = S.next; S 1.next = S.begin; S.code = gen(s.begin : ) E.code gen(e.true : ) S 1.code gen( goto S.begin) Fluxo de controle a < b traduzido para: if a < b goto E.true goto E.false E E 1 or E 2 { E 1.true := E.true; E 1.false := newlabel; E 2.true := E.true; E 2.false := E.false; E.code := E 1.code gen(e 1.false : ) E 2.code) } E E 1 and E 2 {E 1.true := newlabel; E 1.false := E.false; E 2.true := E.true; E 2.false := E.false; E.code := E 1.code gen(e 1.true : ) E 2.code) } E not E 1 { E 1.true := E.false; E 1.false := E.true; E.code := E 1.code} E id 1 relop id 2 {E.code := gen( if id 1.place relop.op id 2.place goto E.true gen( goto E.false) } E true {E.code := gen( goto E.true } E false {E.code := gen( goto E.false } 5
6 Exemplo 1 Exemplo 2 a < b or c < d and e < f if a < b goto Ltrue goto L1 L1: if c < d goto L2 goto Lfalse L2: if e < f goto Ltrue goto LFalse é possível otimizar o código acima. while a < b do if c < d then x := y + z else x := y z L1: if a < b goto L2 goto Lnext L2: if c < d goto L3 goto L4 L3: t1 := y + z x := t1 goto L1 L4: t2 := y z x := t2 goto L1 switch/case switch expression begin case value: statement case value: statement case value: statement default: statement end implementação de switch/case sequência de goto s condicionais, um para cada caso. loop percorrendo uma tabela de valores e labels para o código do statement correspodente. hash table com valores e labels criar um array de labels, com o label para o statement j na posição da tabela índice j. tradução de switch/case tradução de switch/case switch E begin case V 1 : S 1 case V 2 : S 2 case V n-1 : S n-1 default: S n end código para avaliar E em t goto test L 1 : código para S 1 L 2 : código para S 2 L n-1 : código para S n-1 L n : código para S n test: if t = V 1 goto L 1 if t = V 2 goto L 2 if t = V n-1 goto L n-1 goto L n next: 6
7 outra tradução de switch/case código para avaliar E em t if t V 1 goto L 1 código para S 1 L 1 : if t V 2 goto L 2 código para S 2 L 2 : L n-2 : if t V n-1 goto L n-1 código para S n-1 L n-1 : código para S n next: Backpatching uso de um passo extra para resolver as referências a labels definidos posteriormente. E E 1 or M E 2 { backpatch(e 1.falselist,M.quad); E.truelist := merge(e1.truelist,e 2.truelist); E.falselist := E 2.falselist } M ε {M.quad := nextquad } E E 1 and M E 2 { backpatch(e 1.truelist,M.quad); E.truelist := E 2.truelist; E.falselist := merge(e1.falselist,e 2.falselist); } E true E false { E.truelist := makelist(nextquad); emit( goto _ ) } { E.falselist := makelist(nextquad); emit( goto _ ) } 7
Transformação da árvore de derivação em uma seqüência de código mais próximo do código objeto.
GERAÇÃO DE CÓDIGO INTERMEDIÁRIO Transformação da árvore de derivação em uma seqüência de código mais próximo do código objeto. As seguintes vantagens estão associadas à geração de código intermediário:
Leia maisSí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?
Leia maisGeraçã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
Leia maisGeração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO
Geração de código Ivan Ricarte 2008 Sumário Geração de código intermediário Código de três endereços Notação pós-fixa Otimização de código Heurísticas de otimização Geração de código em linguagem simbólica
Leia maisGeração de código intermediário: Geração de código de fluxo de controle Backpatching
Geração de código intermediário: Geração de código de fluxo de controle Backpatching Geração de código intermediário Em código que manipula o fluxo de controle de um programa (ifs, while, for, do..while,
Leia maisUNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE
UNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE CURSO: CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMPILADORES PROFESSOR: JOHNI DOUGLAS MARANGON Back-End Compilação 1. Compilação etapa Back-end
Leia maisSintaxe e Semântica. Fases da Compilação. programa fonte
Sintaxe e Semântica mleal@inf.puc-rio.br 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
Leia maisCAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM
CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM 71 Introdução Difere dos níveis inferiores por ser implementado por tradução A tradução é usada quando um processador está disponível para uma mensagem fonte mas
Leia maisEstruturas de controle no nível de sentença
Estruturas de controle no nível de sentença Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional.
Leia maisSQL Procedural. Josino Rodrigues Neto josinon@gmail.com
SQL Procedural Josino Rodrigues Neto josinon@gmail.com SQL Procedural Agregada em SQL-92 As ferramentas têm nomes para suas linguagens SQL procedurais/embutidas Oracle : PL/SQL Postgres PL/Pgsql SQL Server
Leia maisINE5317 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: silveira@inf.ufsc.br
Leia maisArmazenamento de Dados. Prof. Antonio Almeida de Barros Junior
Armazenamento de Dados Prof. Antonio Almeida de Barros Junior 1 Armazenamento de Dados Todos os dados que utilizamos até o momento, ficavam armazenados apenas na memória. Ao final da execução dos programas,
Leia maisUnidade IV: Ponteiros, Referências e Arrays
Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática
Leia maisLaborató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
Leia maisGeraçã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
Leia maisEstrutura 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;
Leia maisFUNDAÇÃO EDUCACIONAL DE ITUIUTABA
FUNDAÇÃO EDUCACIONAL DE ITUIUTABA ASSOCIADA À UNIVERSIDADE DO ESTADO DE MINAS GERAIS CURSO DE SISTEMA DE INFORMAÇÃO PILHA E FILA Prof. Walteno Martins Parreira Júnior www.waltenomartins.com.br waltenomartins@yahoo.com
Leia mais2 echo "PHP e outros.";
PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento
Leia maisResumo da última aula. Compiladores. Tipos. Regras semânticas. Expressões de tipos. Análise Semântica e checagem de tipos.
Resumo da última aula Compiladores Análise semântica Verificação de tipos 1 Implementação: Esquemas S-atribuídos: Mecanismo bottom-up direto Esquemas L-atribuídos: Mecanismo top-down: Necessita gramática
Leia maisProgramação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada
Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.
Leia maisPragmática das Linguagens de Programação 2004/2005
Instituto Superior Técnico Pragmática das Linguagens de Programação 2004/2005 Segundo Exame 11/2/2005 Número: Turma: Nome: Escreva o seu número em todas as folhas do teste. O tamanho das respostas deve
Leia maisIntroduçã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,
Leia maisProgramação WEB I Estruturas de controle e repetição
Programação WEB I Estruturas de controle e repetição Operadores de Incremento Operadores de incremento servem como expressões de atalho para realizar incrementos em variáveis Operadores de Incremento Vamos
Leia maisOPERADORES E ESTRUTURAS DE CONTROLE
OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em
Leia maisConstrução de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010
Construção de Compiladores Prof. Raimundo Santos Moura (http://www.ufpi.br/rsm) Construção de Compiladores Livro-Texto: AHO, Alfred V.; ULLMAN, Jeffrey D.; SETHI, R. Compiladores: princípios, técnicas
Leia maisFUNCTION ) RETURNS INTEGER AS $$ DECLARE
PERFORM O comando PERFORM permite a execução de um comando SELECT desprezando o resultado do comando. PERFORM query; A variável especial FOUND é definida como verdadeiro se a instrução produzir pelo menos
Leia maisHugo Pedro Proença, 2007
Stored Procedures À medida que a complexidade dos sistemas aumenta, torna-se cada vez mais difícil a tarefa de integrar o SQL com as aplicações cliente. Além disto, é necessário que todas as aplicações
Leia maisESTRUTURA DE DADOS PILHA
ESTRUTURA DE DADOS PILHA CONCEITO DE PILHAS - Pilhas são listas lineares onde a inserção de um novo item ou a remoção de um item já existente se dá em uma única extremidade, no topo. Pilha vazia Insere(A)
Leia maisProtó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
Leia maisInformática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015. Visual Basic VBA
Informática de Gestão 1º ano / 1º semestre Ano letivo: 2014/2015 Visual Basic VBA Macros Funções Conjunto de instruções que são executadas sempre que se desejar e pela ordem apresentada As funções são
Leia maisLogado no OracleXE vamos acessar a opção:
Tutorial PL/SQL O PL/SQL é uma linguagem procedural que roda diretamente no núcleo do SGBD Oracle. O objetivo deste tutorial é mostrar a criação de funções e procedimentos em PL/SQL, interagindo com comandos
Leia maisVariá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
Leia maisAPOSTILA DE VBA PARA EXCEL MARCOS DE BARROS OUTUBRO DE 2002 1 - RISK MANAGEMENT
APOSTILA DE VBA PARA EXCEL MARCOS DE BARROS OUTUBRO DE 2002 1 - RISK MANAGEMENT ÍNDICE INTRODUÇÃO AO VBA 5 Constantes 5 Variáveis 5 Tipos de variáveis e constantes 6 O Comando Option Explicit 7 Comentários
Leia maisPROGRAMAÇÃ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
Leia maisAlgumas notas sobre PASCAL
Algumas notas sobre PASCAL PARTE I Anjolina Grisi de Oliveira 1 Um programa em PASCAL Esse texto inclui algumas notas sobre a linguagem PASCAL. As diferenças existentes entre os diversos compiladores não
Leia maisPROGRAMA DE DISCIPLINA
PROGRAMA DE DISCIPLINA Disciplina: Introdução à Programação Carga horária total: 60 Carga horária teórica: 0 Carga horária prática: 60 Código da Disciplina: CCMP0041 Período de oferta: 2010.2 Turma: CA
Leia maisAlgoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)
Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados) Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação
Leia maisSintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.
Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java
Leia maisComputadores de Programação (MAB353)
Computadores de Programação (MAB353) Aula 7: 29 de abril de 2010 1 2 Subrotinas Um procedimento ou função é uma subrotina armazenada que executa uma tarefa específica baseada nos parâmetros de entrada
Leia maisINTRODUÇÃO OBJECT PASCAL/DELPHI
Introdução Object Pascal/Delphi 1 INTRODUÇÃO OBJECT PASCAL/DELPHI Objetivo Demonstrar a sintaxe e a semântica do Object Pascal e a forma como esse linguagem de programação será aplicada na disciplina de
Leia maisSistemas de Informação
Sistemas de Informação Rules and Triggers André Restivo Sistemas de Informação 2006/07 Rules e Triggers Nem todas as restrições podem ser definidas usando os mecanismos que estudamos anteriormente: - CHECK
Leia maisTestes 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
Leia mais10) REGISTROS : Exemplos: var N,I: integer; A,B,C: real; CHAVE: boolean; CARAC: char; V: array[1..20] of real; M: array[1..10,1..
Página 1 de 10 10) REGISTROS : De um modo geral, as variáveis podem ser: - simples (integer, real, boolean, char) e - compostas: - homogêneas (array) - heterogêneas (record) Exemplos: var N,I: integer;
Leia maisComputadores de Programação (MAB353)
Computadores de Programação (MAB353) Aula 6: 27 de abril de 2010 1 Recaptulando operações já estudadas Operações lógicas 2 3 Exercícios Referências bibliográficas Recaptulando operações já estudadas Operações
Leia maisUniversidade 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[]
Leia maisArquitetura 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
Leia maisPROGRAMA DE DISCIPLINA
PROGRAMA DE DISCIPLINA Disciplina: INTRODUÇÃO À PROGRAMAÇÃO Carga horária total: 60 h Carga horária teórica: 30 h Carga horária prática: 30 h Código da Disciplina: CCMP0041 Período de oferta: 2015.2 Turma:
Leia maisPROG. 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
Leia maisPROGRAMAÇÃ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
Leia maisExpressões. Prof. Alberto Costa Neto alberto@ufs.br. 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
Leia maisIntrodução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos
Bases de Dados Stored procedures e triggers Introdução às funções e procedimentos SQL suporta funções e procedimentos úteis com tipos de dados específicos p.ex. objectos geométricos, imagens intersecção
Leia maisJavascript 101. Parte 2
Javascript 101 Parte 2 Recapitulando O Javascript é uma linguagem de programação funcional Os nossos scripts são executados linha a linha à medida que são carregados. O código que está dentro de uma função
Leia maisOs objetivos indicados aplicam-se a duas linguagens de programação: C e PHP
AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DÃO CURSO PROFISSIONAL DE TÉCNICO DE GESTÃO E PROGRAMAÇÃO DE SISTEMAS INFORMÁTICOS 2012-2015 PROGRAMAÇÃO E SISTEMAS DE INFORMAÇÃO MÓDULO 2 Mecanismos de Controlo de
Leia maisListando itens em ComboBox e gravando os dados no Banco de Dados MySQL.
Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2012 Edição 7 Listando e Gravando Listando itens em ComboBox e gravando os dados no
Leia maisProgramaçã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
Leia maisCONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa
CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs
Leia maisPL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL
PL/SQL Laboratório de Bases de Dados PL/SQL Program Language SQL linguagem de programação da Oracle que permite processar dados armazenados no banco de dados Exemplos de operações permitidas alterar, remover,
Leia maisLinguagem algorítmica: Portugol
Programação de Computadores I Aula 03 Linguagem algorítmica: Portugol José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/34 Introdução I Lógica A lógica é usada
Leia maisPROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br
- Aula 5 - O NÍVEL DA LINGUAGEM DE MONTAGEM 1. INTRODUÇÃO É relativamente fácil compreender os fundamentos da programação de computadores, sob o ponto de vista da inteligibilidade dos comandos de alto
Leia maisCurso C: Controle de Fluxo
Universidade de Brasília Departamento de Ciência da Computação Curso C: Controle de Fluxo Prof. Ricardo Pezzuol Jacobi rjacobi@cic.unb.br O comando if if ( express o Ž verdadeira ) execute comando ou bloco
Leia mais2. O gerador de código estende DepthFirstAdapter implementando a interpretação que gerará código Jasmin a partir de Smallpascal.
Geração de Código para Smallpascal a 1. Já estudamos como SableCC faz uso do design pattern visitor para construir compiladores modulares. Vimos também os principais componentes da máquina virtual Java
Leia maisAnálises Geração RI (representação intermediária) Código Intermediário
Front-end Análises Geração RI (representação intermediária) Código Intermediário Back-End Geração de código de máquina Sistema Operacional? Conjunto de Instruções do processador? Ambiente de Execução O
Leia maisManipulação de Arquivos em Pascal
Manipulação de Arquivos em Pascal Estrutura de Dados II Aula 03 UFS - DComp Adaptados a partir do material da Profa. Kenia Kodel Cox 1 Para implementar programa infantil para ordenação (alfabética) de
Leia maisPROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger
PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger A tecnologia de banco de dados permite persistir dados de forma a compartilha-los com varias aplicações. Aplicação 1 aplicação 2 aplicação 3 SGDB Banco
Leia maisOracle PL/SQL Overview
Faculdades Network Oracle PL/SQL Overview Prof. Edinelson PL/SQL Linguagem de Programação Procedural Language / Structured Query Language Une o estilo modular de linguagens de programação à versatilidade
Leia maisProgramação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre
Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 02 Fundamentos de Linguagens Sumário : Linguagem, alfabeto e gramática
Leia maisRepresentaçã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
Leia maisPilhas 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 maisNesta aula serão apresentados alguns comandos de condição, repetição e gráficos.
3 COMANDOS CONDICIONAIS E DE LAÇO Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos. 3.1 COMANDOS CONDICIONAIS 3.1.1 Comando IF Como o próprio nome já indica, estes comandos
Leia maisCurso: 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.
Leia maisJava. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
Leia maisResumo da Matéria de Linguagem de Programação. Linguagem C
Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis
Leia maisDESENVOLVIMENTO DE SOFTWARE CONHECENDO O MICROSOFT VB.NET ÁREA DE TRABALHO. Prof. Celso Candido ADS / REDES / ENGENHARIA
ÁREA DE TRABALHO 1 Janela de Menus Janela do Projeto (Solution Explorer) Caixa de Ferramentas ou Toolbox Formulário (Form) para desenvolvimento Fontes de Dados Gerenciador de Banco de Dados Área de Trabalho
Leia maisPesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) R. P. António Viera, 23. R. Carlos Seixas, 9, 6º
Pesquisa Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) Ficheiro (ou tabela) Campos Nome Endereço Telefone Antunes, João A. R. P. António Viera, 23 720456
Leia maisVariáveis e estruturas de controlo. Introdução à Programação André L. Santos
Variáveis e estruturas de controlo Introdução à Programação André L. Santos Variáveis Uma variável pode ser vista como um espaço em memória onde um valor de determinado tipo (p.e. inteiro) pode ser guardado.
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisLista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição
Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:
Leia maisProjeto de Banco de Dados
Projeto de Banco de Dados Prof. Marcelo Siedler Objetivos do documento: Apresentar os conceitos de stored procedutes e funções. Exercícios. Referência: http://dev.mysql.com/doc/refman/4.1/pt/stored-procedures.html
Leia maisManipulando Strings no VBA (Replace, Mid e InStr)
Manipulando Strings no VBA (Replace, Mid e InStr) por Eduardo Vieira Machado (Good Guy) Hoje gostaria de tratar de um assunto bastante atraente no Access e que é muito trabalhado nas empresas - a manipulação
Leia maisProf Evandro Manara Miletto. parte 2
Prof Evandro Manara Miletto parte 2 Sumário Estruturas de Controle Eventos Estruturas de controle características Estruturas de controle (ou condicionais) são executadas caso um teste seja atendido Permite
Leia maisFundamentos de Programação. Turma CI-240-EST. Josiney de Souza. josineys@inf.ufpr.br
Fundamentos de Programação Turma CI-240-EST Josiney de Souza josineys@inf.ufpr.br Agenda do Dia Aula 2 (07/08/15) Introdução ao Python História Características Estrutura dos código-fonte Primeiros elementos
Leia maisCapítulo 2. Fundamentos de Java
Capítulo 2. Fundamentos de Java 1/52 Índice 2.1 - Variáveis Tipos Escopo Inicialização Casting Literais 2.2 - Operadores Aritméticos Relacionais Bit a Bit De atribuição 2.3 - Expressões, statements e blocos
Leia maisFBV - Linguagem de Programação II. Um pouco sobre Java
FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base
Leia maisHistória. Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega.
1 1. Overview 2 História Nasceu em 1993, numa discussão entre Yuhikiro Matsumoto e um colega. Matz procurava por uma linguagem de script orientada a objetos. A primeira versão estável de Ruby (1.2) foi
Leia maisSegunda Prova de Análise e otimização de Código - DCC888 -
Segunda Prova de Análise e otimização de Código - DCC888 - Ciência da Computação Nome: Eu dou minha palavra de honra que não trapacearei neste exame. Número de matrícula: As regras do jogo: A prova é sem
Leia maisLinguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1
Linguagem C: Estruturas de Controle Prof. Leonardo Barreto Campos 1 Sumário Estrutura de Controle e de Fluxo Comandos de Seleção: O comando if; Ifs Aninhados; A escada if-else-if; A expressão condicional;
Leia maisApresentar os conceitos básicos e as estruturas de linguagem relacionadas à tomada de decisão ofertadas pela linguagem C, tais como:
Cláudio C. Rodrigues Faculdade da Computação - UFU LINGUAGEM C - 02: ESTRUTURA DE SELEÇÃO CONDICIONAL Faculdade da Computação - UFU 1 Objetivo Apresentar os conceitos básicos e as estruturas de linguagem
Leia maisIntrodução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores
Introdução à Programação Armazenamento de Grande Quantidade de Informação Usando Vetores Armazenando Grande Quantidade de Informação Como armazenar tanta informação? Vetores! 2 Tópicos da Aula Hoje, aprenderemos
Leia maisPARA CASA * Como voce faria para armazenar o resultado em uma variavel chamada NOME?
USO DE VARIAVEIS 1. Crie um programa Scratch que recebe um valor de entrada do usuário (p.ex. o nome do usuário), armazene este valor na variável padrão resposta e faça o personagem gato dizer o valor
Leia maisTecnologias para Web Design
Tecnologias para Javascript e DOM Introdução à Scripts Um script do lado cliente é um programa que acompanha um documento HTML Pode estar incluído no próprio documento embutido ou acompanha-lo num arquivo
Leia maisVETORES E MATRIZES. By Eduardo Vieira Machado (Good Guy)
VETORES E MATRIZES By Eduardo Vieira Machado (Good Guy) Vetores e matrizes são capazes de armazenar dados de forma organizada. Vetores fazem isso de forma escalar, isto é, com um dado de cada vez em sequência,
Leia maisArquiteturas RISC. (Reduced Instructions Set Computers)
Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina
Leia maisEstrutura de Dados Pilha (Stack)
Estrutura de Dados Pilha (Stack) Estrutura de Dados que corresponde a uma lista sequencial com a propriedade seguinte: LIFO O primeiro elemento a entrar é o último a sair ( Last in First Out ) Operações
Leia maisBANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 10 - PROCEDIMENTOS ARMAZENADOS - STORED PROCEDURES 1. INTRODUÇÃO Em muitas situações será necessário armazenar procedimentos escritos com a finalidade de se utilizar recursos como loop, estruturas
Leia maisIntrodução à Geração de Código
MAB 471 2011.2 Introdução à Geração de Código http://www.dcc.ufrj.br/~fabiom/comp Forma do Código Definição Todas as propriedades do código que influenciam no desempenho Código em si, abordagens para diferentes
Leia maisMétodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.
Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos. Construtor: método executado por uma CLASSE (e não por um objeto, instância da classe)
Leia maisTabela de símbolos: tabelas de espalhamento
Tabela de símbolos: tabelas de espalhamento Marcelo K. Albertini 14 de Janeiro de 2014 2/28 Resumo de complexidades Análises para operação efetuada após N inserções pior caso caso médio keys chave get
Leia maisAnálise semântica. Análise Semântica. Estrutura de um compilador. Anotação da árvore sintática. Tipos de comunicação de atributos?
Estrutura de um compilador Análise semântica Tradução orientada pela sintaxe 1 2 Análise Semântica Anotação da árvore sintática Análise semântica: Tipos (& Declarações) Escopo Checagens estáticas: Idéia:
Leia maisJAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo
Conteúdo Estruturas de repetição (loops, laços)... 2 WHILE (enquanto)... 2 DO... WHILE (faça... enquanto)... 2 FOR... 3 FOREACH... 4 EXERCICIO LOOP FOR... 4 Novo Projeto... 5 Controles SWING... 10 1 Estruturas
Leia maise à 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
Leia mais