Conceitos de Linguagens de Programação
|
|
- Giuliana Lobo Graça
- 5 Há anos
- Visualizações:
Transcrição
1 Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 03 (rogerio@fct.unesp.br) Aula 3 Variáveis: Nomes Vinculações (binding) Verificação de tipo e Escopo 2 1
2 Questões de Projeto Qual o tamanho máximo de um nome? Caracteres de conexão podem ser usados em nomes? Maiúsculas e minúsculas são diferentes? Palavras especiais são palavras reservadas ou palavras-chave? 3 Tamanho de nomes FORTRAN : máximo 6 COBOL: máximo 30 FORTRAN 90 e ANS C: máximo 31 Ada: sem limite e todos são significantes C++: sem limite, mas implementadores freqüentemente estabelecem limite 4 2
3 5 Variáveis Variável memória é uma abstração de uma célula de Podem ser atributos: caracterizada pela sêxtupla de Nome, endereço, valor, tipo, tempo de vida, e escopo Nome: string Endereço: endereço de memória a ela associado Uma variável pode ter diferentes endereços de memória durante a execução Uma variável pode ter diferentes endereços em diferentes lugares de um programa Pode haver dois nomes para um mesmo endereço (aliases) Prejudicial a legibilidade "nformation Binding" As LPs imperativas imitam as ações dos computadores em nível de linguagem de máquina (LM). Nesse nível, os computadores operam com 2 unidades principais: CPU e memória. Uma unidade de execução típica em LM consiste de 4 passos. 6 3
4 "nformation Binding" 1. Obter o endereço de locações para um resultado e 1 ou mais operandos 2. Obter o dado operando da(s) locação(ões) do operando 3. Computar o dado resultado dos dados operandos 4. Armazenar o dado resultado na locação do resultado 7 "nformation Binding" Exemplo A := B + C seria executado como: 1 - Obter os endereços de A, B e C 2 - Obter os dados dos endereços B e C 3 - Computar o resultado de B + C 4 - Armazenar o resultado na locação de A 8 4
5 Binding Apesar da abstração de endereços em nomes, as LPs imperativas mantém os 4 passos como uma unidade de programa padrão. Essa unidade de execução se tornou a unidade fundamental de LP imperativas chamada de comando de atribuição. 9 Binding De fundamental importância para a performance dessa atribuição é o estabelecimento e uso de um número de bindings ("ligações"): passo 1: binding entre nomes e locações de operandos e resultados passo 2: binding entre locação e valor para estabelecer valores de operandos passo 4: binding entre locação do resultado e o valor computado 10 5
6 Binding No passo 3, a computação depende da interpretação dos dados e dos operadores definidos. LPs relacionam dados e operadores através de tipos. Veremos o papel de tipo em binding. Além disso será discutido o Escopo dos bindings: definição e mudança de bindings. Dados objetos & Bindings Binding Dado objeto = (L, N, V, T) onde L - locação, N - nome, V - valor, T - tipo Binding é a atribuição de valor a um dos quatro componentes acima. Esses bindings podem ser alterados em certas ocasiões. Os bindings podem ocorrer em tempo de compilação, em tempo de loading (quando o programa LM gerado pelo compilador está sendo alocado à locações específicas na memória), ou em tempo de execução. 6
7 Tipos de Binding Bindings de locação geralmente ocorrem em tempo de loading, mas também podem ocorrer em tempo de execução (variáveis em procedimentos e alocação dinâmica). Bindings de nome ocorrem tipicamente em tempo de compilação, quando uma declaração é encontrada. (em arrays e records ocorrem bindings compostos de nomes). 13 Tipos de Binding Bindings de tipo ocorrem geralmente em tempo de compilação, através de declarações de tipo. Veja exemplos dos efeitos da declaração de tipos em ADA nas figuras seguintes. Binding de tipo dinâmico ocorre durante tempo de execução, não havendo declarações. O tipo do dado objeto é determinado pelo tipo do valor, e portanto, uma mudança de valor implica em novo binding. 14 7
8 Tipos de Binding 15 Exemplo A:integer; 16 8
9 Exemplo B:integer:=0; 17 Exemplo C : constant integer := 0; 18 9
10 Escopo de Binding e Unidades de Execução Divisões de um programa: programa - maior divisão; unidade executável fundamental blocos comando - menor divisão; unidade indivisível O objetivo de se juntar unidades de execução, neste caso, é para identificar o escopo de bindings. 19 Tipos de Binding Um binding é dito estático se ocorre antes da execução e permanece inalterado durante a execução do programa Um binding é dito dinâmico se ocorre durante a execução ou pode ser alterado durante a execução do programa 20 10
11 Tipos de Binding Como um tipo é especificado? Quando acontece o binding? Se estático, o tipo pode ser especificado ou por uma declaração explícita ou por declaração implícita Uma declaração explícita é uma sentença declarativa para o tipo da variável Uma declaração implícita é um mecanismo default para a especificação de tipos acontece na primeira vez que uma variável é encontrada Exemplos: FORTRAN, PL/, BASC, e Perl têm mecanismos de declaração implícita Vantagens: facilidade na escrita Desvantagem: legibilidade (menos problema em Perl) Binding Dinâmico Especificado por sentenças APL: LST < LST < Vantagem: flexibilidade Desvantagem: Alto custo (checagem de tipo e interpretação) Detecção de erros de tipo pelo compilador é difícil 11
12 Categoria de Variáveis por Tempo de Vida Estáticas Ligadas a células de memória antes da execução, permanecendo na mesma célula durante toda a execução 23 Exemplos: variáveis em FORTRAN 77, variáveis estáticas em C (cláusula static) Vantagem: eficiência (endereçamento direto) Sensível à história suporte a subprogramação Desvantagem: falta de flexibilidade (sem recursão) Categoria de Variáveis por Tempo de Vida Stack-dynamic 24 Binding de armazenamento são criados quando suas sentenças de declaração são efetuadas Se escalares, todos os atributos exceto endereço são estaticamente ligados Exemplos: variáveis locais em procedimentos/funções em Pascal e C Vantagem: permitem recursão e otimizam o uso de espaço em memória Desvantagens: overhead de alocação e liberação Subprogramas não podem ser history sensitive Referência ineficiente (endereçamento indireto) 12
13 Categoria de Variáveis por Tempo de Vida Heap-dynamic Explícito Alocado e liberado por diretivas explícitas, especificadas pelo programador, que tem efeito durante a execução Referenciadas por ponteiros Exemplos: objetos dinâmicos em C e tudo em JAVA Vantagem: armazenamento dinâmico Desvantagem: neficientes e não confiável 25 Categoria de Variáveis por Tempo de Vida mplicit heap-dynamic Alocação e liberação causadas por sentenças de associação Exemplo; todas variáveis em APL Vantagem: flexibilidade Desvantagem: neficiente, porque todos os atributos são dinâmicos Sem detecção de erros 26 13
14 Tipo de Variáveis Checagem de Tipo é uma atividade de garantia de que operandos e operadores são de tipos compatíveis Tipo compatível é um tipo que é legal para um operando, ou é permitido, segundo as regras da linguagem. Pode ser que haja a conversão automática para garantir a compatibilidade (coerção) 27 Uma linguagem é fortemente tipada se erros de tipo são sempre detectados Blocos Conjunto de comandos para atender a determinado fim. 1 - Escopo de estrutura de controle Estruturas condicionais Estruturas iterativas 2 - Escopo de procedimentos ou funções 3 - Unidades de compilação Blocos compilados separadamente e depois unidos para execução 4 - Escopo de bindings Bloco de comandos sobre os quais bindings específicos são válidos 31 14
15 Escopo de Binding de Nome Blocos que definem um escopo de binding de nome contém, em geral, duas partes: Uma seção de DECLARAÇÕES, que define os bindings que valem dentro do bloco Uma seção EXECUTÁVEL, que contém os comandos do bloco, onde valem os bindings Sintaticamente, isso requer delimitadores Exemplo BLOCK A; DECLARE ; BEGN A... { de A} - binding válido END A; 15
16 Dois tipos de binding (local e não local) em um Bloco (Exemplo) Blocos aninhados: program P; declare X; begin P... {X de P} block A; declare Y; begin A... {X de P; Y de A} block B; declare Z; begin B... {X de P; Y de A; Z de B} end B;... {X de P; Y de A} end A;... {X de P} block C; declare Z; begin C... {X de P; Z de C} end C;... {X de P} end. 34 Política do Escopo Léxico ou Estático Se um nome tem uma declaração num bloco, este nome é ligado ao objeto especificado na declaração. Se um nome não tem declaração num bloco, ele é ligado ao mesmo objeto ao qual ele foi ligado no bloco que contém o bloco atual, no texto do programa. Se o bloco não está contido em outro, ou se o nome não foi ligado no bloco que contém este, então o nome não está ligado a qualquer objeto no bloco atual
17 Regra de Escopo Quando um bloco redeclara um nome já ligado no ambiente que o contém, a declaração local se sobrepõe ao binding não-local, fazendo o objeto ligado não-localmente inacessível no bloco atual. program P; declare X, Y; begin P... {X de P; Y de P} block A; declare X, Z; begin A... {X de A; Z de A; Y de P; X de P é inacessível em A} end A... {X de P; Y de P} end P; 36 Escopo Estático X Escopo Dinâmico Escopo Dinâmico: O ambiente "global" de uma unidade (procedure) é o ambiente da unidade que a chamou. sto é, uma procedure herda como ambiente global aquele da unidade que a chamou e, portanto, este só pode ser determinado em tempo de execução. Ex: APL, SNOBOL4 e primeiras versões de LSP 37 17
18 Escopo de Binding de Locação Hipótese assumida: binding de locação feito em tempo de loading, permanecendo válido durante toda a execução do programa. Efeito colateral: ao re-executar um bloco, as variáveis locais reteriam os valores da execução anterior. Se um novo binding de locação for feito a cada nova entrada no bloco, nenhuma suposição poderia ser feita Exemplo program P declare ; begin P for := 1 to 10 do block A; declare J; begin A if = 1 then { de P; J de A} J := 1 else J := J * {assume-se que J retém valor de execução prévia} endif end A; end P 18
19 Comentários Desvantagem: memória para todos os blocos do programa deve ser reservada por todo o tempo de execução do programa. Alternativa: (binding dinâmico) Fazer o binding de locação, bem como o de nome, em tempo de execução, a cada entrada de um bloco, desfazendo esses bindings quando da saída do bloco. (Alocação dinâmica de memória). 40 Comentários Extensão do binding: período de tempo, durante execução, em que o binding é válido
20 mplementação A implementação é via registros de ativação, que são registros contendo informações sobre uma unidade de execução, necessárias para restabelecer sua execução, depois de ela ter sido suspensa. Para efeito de binding de locação, o registro de ativação precisará conter apenas as locações para todos os objetos ligados localmente, mais um ponteiro para o registro de ativação do bloco que o contém. 42 Funcionamento Conforme um bloco é ativado, seu registro é colocado no topo de uma pilha. No término de sua execução, seu registro é desempilhado
21 Exemplo 44 program P; declare, J; begin P block A; declare, K; begin A block B; declare, L; begin B;... end B;... end A; block C; declare, N; begin C... end C; end P; Comentários Pela disposição dos blocos no texto, é possível determinar o escopo sem o uso de binding dinâmico. Assim, seria desvantagem a sua utilização. Porém, normalmente utilizamos procedures e functions e só conhecemos a execução desses blocos em tempo de execução. Dessa forma, o uso de binding dinâmico é utilizado
22 Uso da pilha para localizar objetos 1. Procura no registro do topo pelo objeto ligado ao nome. 2. Se não encontrar, procure-o no registro apontado por ele; continue nesse processo até encontrá-lo na lista, ou a lista acabar. 3. Esta busca pode ser otimizada, uma vez que se sabe, em tempo de compilação, a estrutura da pilha e de cada registro de ativação. 46 EXEMPLO 47 program P; declare, J; procedure Proc_A; declare, K; begin A... End A Procedure Proc_ B; declare, L; begin B;... Proc_A; end B; Procedure Proc_ C; declare, N; begin C... Proc_B; end C; begin P Proc_ C Proc_A end P; P J 22
23 EXEMPLO 48 program P; declare, J; procedure Proc_A; declare, K; begin A... End A Procedure Proc_ B; declare, L; begin B;... Proc_A; end B; Procedure Proc_ C; declare, N; begin C... Proc_B; end C; begin P Proc_ C Proc_A end P; Chamando o procedimento Proc_C Proc_C P N J EXEMPLO 49 program P; declare, J; procedure Proc_A; declare, K; begin A... End A Procedure Proc_ B; declare, L; begin B;... Proc_A; end B; Procedure Proc_ C; declare, N; begin C... Proc_B; end C; begin P Proc_ C Proc_A end P; Chamando o procedimento Proc_B Proc_B Proc_C P L N J 23
24 EXEMPLO 50 program P; declare, J; procedure Proc_A; declare, K; begin A... End A Procedure Proc_ B; declare, L; begin B;... Proc_A; end B; Procedure Proc_ C; declare, N; begin C... Proc_B; end C; begin P Proc_ C Proc_A end P; Chamando o procedimento Proc_A Proc_A Proc_B Proc_C P K L N J EXEMPLO 51 program P; declare, J; procedure Proc_A; declare, K; begin A... End A Procedure Proc_ B; declare, L; begin B;... Proc_A; end B; Procedure Proc_ C; declare, N; begin C... Proc_B; end C; begin P Proc_ C Proc_A end P; Saindo do procedimento Proc_A Proc_B Proc_C P L N J 24
25 EXEMPLO 52 program P; declare, J; procedure Proc_A; declare, K; begin A... End A Procedure Proc_ B; declare, L; begin B;... Proc_A; end B; Procedure Proc_ C; declare, N; begin C... Proc_B; end C; begin P Proc_ C Proc_A end P; Saindo do procedimento Proc_B Proc_C P N J EXEMPLO 53 program P; declare, J; procedure Proc_A; declare, K; begin A... End A Procedure Proc_ B; declare, L; begin B;... Proc_A; end B; Procedure Proc_ C; declare, N; begin C... Proc_B; end C; begin P Proc_ C Proc_A end P; Saindo do procedimento Proc_C P J 25
26 EXEMPLO 54 program P; declare, J; procedure Proc_A; declare, K; begin A... End A Procedure Proc_ B; declare, L; begin B;... Proc_A; end B; Procedure Proc_ C; declare, N; begin C... Proc_B; end C; begin P Proc_ C Proc_A end P; Chamando o procedimento Proc_A Proc_A P K J EXEMPLO 55 program P; declare, J; procedure Proc_A; declare, K; begin A... End A Procedure Proc_ B; declare, L; begin B;... Proc_A; end B; Procedure Proc_ C; declare, N; begin C... Proc_B; end C; begin P Proc_ C Proc_A end P; Saindo do procedimento Proc_A P J 26
27 Formato nterno de Dados O formato interno para representar um tipo inteiro depende de seu limite mínimo e máximo. Tipo ntervalo Tamanho Shortint bits Byte bits nteger bits Word bits Longint bits 56 Padrão EEE Pesquisa 57 27
Aula 6.
Aula 6 Celso Olivete Júnior olivete@fct.unesp.br Nomes, vinculações e escopos Cap. 5 -Sebesta 2 Introdução LP s imperativas são abstrações da arquitetura de Von Neumann Memória: armazena instruções e dados
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisParadigmas de Programação
Paradigmas de Programação Aula 6 Nomes, Vinculações, Verificação de Tipos e Escopos Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Introdução As linguagens de
Leia maisNomes, Vinculações, Verificação de Tipos e Escopos. George Darmiton da Cunha Cavalcanti
Nomes, Vinculações, Verificação de Tipos e Escopos George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução Nomes Variáveis O conceito de vinculação (binding) Verificação de tipos Tipificação
Leia maisCapítulo 5. Nomes, Vinculações e Escopos
Capítulo 5 Nomes, Vinculações e Escopos Tópicos do Capítulo 5 Introdução Nomes Variáveis O conceito de vinculação Escopo Escopo e tempo de vida Ambientes de referenciamento Constantes nomeadas Introdução
Leia maisParadigmas de Linguagens de Programação. Nomes, Vinculações, Verificação de Tipos e Escopos
Nomes, Vinculações, Verificação de Tipos e Escopos Cristiano Lehrer Nomes (1/6) Um nome é uma string de caracteres usada para identificar alguma entidade de um programa. O termo identificador é utilizado
Leia maisConceitos de Linguagens de Programação
Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 06 (rogerio@fct.unesp.br) Aula 6 Subprogramas
Leia maisO que é uma variável?
Escopo, Ligação e Ambiente de Execução mleal@inf.puc-rio.br 1 O que é uma variável? Uma variável pode ser definida como uma tupla r nome é um string usado para
Leia maisVerificação de Tipo. Unions. Verificação de tipo estática. Verificação de tipo dinâmica
Verificação de Tipo Atividade que certifica que os operandos de um operador são de tipos compatíveis. São considerados operadores e operandos: operadores usuais (aritméticos, relacionais, etc) subprogramas
Leia maisLinguagens de Programação Nomes, Amarrações e Escopo
Linguagens de Programação Nomes, Amarrações e Escopo Andrei Rimsa Álvares Sumário Nomes Amarrações Escopo NOMES Linguagens de Programação Nomes Conceito mais amplo que variáveis Podem representar Variáveis
Leia maisCompiladores. 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
Leia mais02. [Sebesta, 2000] Qual é o perigo potencial dos nomes que fazem distinção entre maiúsculas e minúsculas?
01. [Sebesta, 2000] Quais são as questões de projeto referentes a nomes? Nomes, Vinculações, Verificação de Tipos e Escopos 02. [Sebesta, 2000] Qual é o perigo potencial dos nomes que fazem distinção entre
Leia maisEstudos de Linguagens de Programação - Revisão
Estudos de Linguagens de Programação - Revisão (marinho.mlm@gmail.com) O que é uma Linguagem de Programação? Linguagem usada por uma pessoa para expressar um processo através do qual um computador pode
Leia maisLinguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Leia maisUniversidade Federal Rural de Pernambuco Departamento de Estatística e Informática Subprogramas
Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática Subprogramas Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com Paradigmas de Linguagem de Programação Características
Leia maisConceitos de Linguagens de Programação
Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 07 (rogerio@prudente.unesp.br) Aula 7 Implementação
Leia maisLinguagens de Programação Conceitos e Técnicas. Amarrações
Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador
Leia maisCapítulo 7. Expressões e Sentenças de Atribuição
Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário
Leia maisImplementando subprogramas
Implementando subprogramas 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. http://github.com/malbarbo/na-lp-copl
Leia maisVariáveis. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe
Variáveis alberto@ufs.br de Programação Departamento de Computação Universidade Federal de Sergipe Variáveis Uma vez que o programador tenha entendido o uso de variáveis, ele entendeu a essência da programação.
Leia maisNomes, Amarração, Verificação de Tipos, e Escopo
5 Nomes, Amarração, Verificação de Tipos, e Escopo Concepts of Programming Languages, 5/e Robert W. Sebesta Agenda Objetivo desta aula: Introduzir os principais aspectos semânticos de variáveis Palavras-chave
Leia maisImplementação de subprogramas
Implementação de subprogramas Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisCapítulo 9. Subprogramas
Capítulo 9 Subprogramas Introdução Dois recursos fundamentais de abstração Abstração de processos Desde o início da história das linguagens de programação Abstração de dados Desde o início dos anos 1980
Leia maisLinguagens de Programação. Nomes, Escopos e Vinculações (Bindings) Carlos Bazilio
Linguagens de Programação Nomes, Escopos e Vinculações (Bindings) Carlos Bazilio carlosbazilio@id.uff.br http://www.ic.uff.br/~bazilio/cursos/lp Nomes Forma mais simples de abstração Um nome é um caracter
Leia maisLinguagens de Programação. Marco A L Barbosa
Expressões e sentença de atribuição 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. http://github.com/malbarbo/na-lp-copl
Leia maisExpressões e sentença de atribuição
Expressões e sentença de atribuição Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisParadigmas de Linguagens de Programação. Subprogramas
Cristiano Lehrer Características Gerais dos Cada subprograma tem um único ponto de entrada Toda unidade de programa chamadora é suspensa durante a execução do programa chamado, o que implica na existência
Leia maisLinguagens de Programação Conceitos e Técnicas. Amarrações Prof. Tiago Alves de Oliveira
Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Tiago Alves de Oliveira Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável
Leia maisCAP. VI ANÁLISE SEMÂNTICA
CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve
Leia maisEderson Luiz da Silva Ciência da Computação. Algoritmos e Programação
Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de
Leia maisParadigmas de Linguagens de Programação. Expressões e Instruções de Atribuição
Expressões e Instruções de Atribuição Cristiano Lehrer Introdução Expressões são o meio fundamental de especificar computações em uma linguagem de programação: Familiarização com as ordens de avaliação
Leia maisParadigmas de Linguagens de Programação. Tipos de Dados
Tipos de Dados Cristiano Lehrer Introdução (1/2) 1956: FORTRAN I 1983: ADA INTEGER, REAL, arrays. Usuário pode criar um único tipo para cada categoria de variáveis no espaço de problemas e deixar o sistema
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um
Leia maisCapí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
Leia maisLinguagens de Programação. Tipos. Carlos Bazilio
Linguagens de Programação Tipos Carlos Bazilio bazilio@ic.uff.br http://www.ic.uff.br/~bazilio/cursos/lp Definições Tipos de dados primitivos: tipos de dados que não são definidos em termos de outros tipos
Leia maisConceitos de Linguagens de Programação
Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 04 (rogerio@fct.unesp.br) Aula 4 2 Evolução dos
Leia maisLinguagens de Programação 2 Amarrações
Linguagens de Programação 2 Amarrações Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo
Leia maisNotas de Aula Guilherme Sipahi Arquitetura de Computadores
Notas de Aula Guilherme Sipahi Arquitetura de Computadores Endereçamento O Campo de endereço em uma instrução é pequeno. Para referenciar uma faixa de endereços maior na memória principal, ou em alguns
Leia maisao 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
Leia maisNomes, vinculações e escopos
Nomes, vinculações e escopos 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. http://github.com/malbarbo/na-lp-copl
Leia maisAmbiente de tempo de Execução Cap. 7
Ambiente de tempo de Execução Cap. 7 Introdução Subdivisão da memória usada pelo programa em tempo de execução Segmento de Código Segmento Estático (segmento de dados) Pilha Área de memória livre Heap
Leia maisTexto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site (autor: desconhecido).
Texto retirado e adaptado da apostila Curso de Linguagem Pascal, disponível no site http://www.portaldaprogramacao.com (autor: desconhecido). Leitura indicada: Notas de Aula de Algoritmos e Programação
Leia maisINE5421 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
Leia maisSistemas de Tipos. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe
Linguagens de Programação Departamento de Computação Universidade Federal de Sergipe Tipos permitem que dados sejam descritos de forma efetiva Previnem operações sem sentido (ex: 5 * true) Programas mais
Leia maisCompiladores 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
Leia maisPersistência. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe
Persistência alberto@ufs.br de Programação Departamento de Computação Universidade Federal de Sergipe Retrospectiva Quanto ao Tempo de Vida Variáveis Estáticas Variáveis Stack-Dinâmicas Variáveis Heap-Dinâmicas
Leia maisCompiladores. Análise Semântica
Compiladores Análise Semântica Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Análise léxica Análise semântica Síntese Análise sintática Análise Gramáticas Estruturas internas Arquivo
Leia maisLinguagens de Programação Subprogramas
Linguagens de Programação Subprogramas Andrei Rimsa Álvares Sumário Abstrações Subprogramas Parâmetros Passagem de parâmetros Direção da passagem Mecanismos de passagem Momento da passagem ABSTRAÇÕES Linguagens
Leia mais25/8/2010. Praticamente todas as arquiteturas de computadores fornecem mais de um modo de
Arquitetura de Computadores Conjuntos de Instruções: modos de endereçamento e formatos Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Endereçamento Normalmente, os campos de endereço são
Leia mais- Mapa de memória de um processo - Ponteiros
1 MCTA028 Programação Estruturada - Mapa de memória de um processo - Ponteiros Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018 2 Alocação de
Leia maisIntrodução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Aula 03 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga
Leia mais15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação
Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação Conjunto de regras que definem a forma da linguagem; Como as sentenças podem ser formadas como sequências
Leia maisUniversidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
Leia mais02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais?
01. [Sebesta, 2000] O que é um descritor? 02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais? 03. [Sebesta, 2000] Quais são as questões de projeto relativas aos tipos
Leia maisFERRAMENTAS BÁSICAS DA PROGRAMAÇÃO
FERRAMENTAS BÁSICAS DA PROGRAMAÇÃO VARIÁVEIS E O COMANDO DE ATRIBUIÇÃO O computador possui uma área específica de armazenamento denominada de memória. O computador possui uma área específica de armazenamento
Leia maisPLANO DE UNIDADE DIDÁTICA- PUD
Professor: Marcus Vinícius Midena Ramos Coordenação: Ricardo Argenton Ramos Data: 03/08/2010 Página: 1 de 5 EMENTA: Conceitos básicos de linguagens. Histórico, classificação e principais aplicações de
Leia maisAula teórica 7. Preparado por eng.tatiana Kovalenko
Aula teórica 7 Tema 7. Introdução a Programação Ø Linguagens de Programação Ø LP Java ØEstrutura de um programa em Java ØIdentificadores, variáveis e constantes. ØTipos de dados básicos Preparado por eng.tatiana
Leia maisLinguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Leia maisFACULDADE LEÃO SAMPAIO
FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS
Leia maisIntroduçã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
Leia maisPROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@gmail.com
Leia maisExistem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.
Aula 3 SOFTWARE (programas) Um programa (software) consiste em uma sequência de instruções escritas numa linguagem precisa chamada linguagem de programação. Estas instruções são traduzidas em um compilador,
Leia maisCONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO
CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO ROTEIRO 1. INTRODUÇÃO 2. LINGUAGENS IMPERATIVAS 1. CONCEITO 2. PARADIGMA IMPERATIVO 3. ORIGENS 4. MODELO COMPUTACIONAL 1. ARQUITETURA DE VON NEUMANN 2. CARACTERISTICAS
Leia maisSEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.
SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão
Leia mais1.1 o que é um algoritmo... 6
sumário introdução 1 1 fundamentos 5 1.1 o que é um algoritmo... 6 1.1.1 algoritmos executados por um computador...7 1.1.2 comandos básicos executados por um computador...11 1.1.3 da necessidade do desenvolvimento
Leia maisLinguagens de Programação Conceitos e Técnicas. Variáveis e Constantes
Linguagens de Programação Conceitos e Técnicas Variáveis e Constantes Variáveis Uma vez que o programador tenha entendido o uso de variáveis, ele entendeu a essência da programação. [Dijkstra] Abstração
Leia maisErros de Tipo em Pascal Simplifificado
Checagem de Tipos Erros de Tipos em Pascal Simplificado não capturados pela gramática Tarefas de um Type Checker e Conversões de Tipos Sistema de Tipos Checagem Estática X Dinâmica Linguagens Fortemente
Leia maisEstrutura de Dados. Aula 07 Alocação Dinâmica
Estrutura de Dados Aula 07 Alocação Dinâmica 2 ALOCAÇÃO DINÂMICA Existem três modos de reservar espaço de memória para o armazenamento de informações: 1ª - através do uso de variáveis globais (e estáticas).
Leia maisIntrodução. Paradigmas de Linguagens. Introdução. Tipos de Dados Primitivos. Prof. Ms. Luiz Alberto Contato:
Paradigmas de Linguagens Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Baseada no material do prof. Celso Olivete Júnior Introdução Um tipo de dado define uma coleção de dados e um conjunto de operações
Leia maisLinguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Leia maisProgramação Estruturada
Programação Estruturada Introdução à linguagem C Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Programação estruturada
Leia maisProgramação I A Linguagem C. Prof. Carlos Alberto
Programação I A Linguagem C Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br 2 Origem A linguagem C foi desenvolvida em 1972, nos Laboratórios Bell, por Dennis Ritchie. Implementada
Leia maisTipo. Tipo de uma variável: especificação de
Checagem de Tipos O que é tipo? Erros de Tipos em FRANKIE não capturados pela gramática Tarefas de um Type Checker e Conversões de Tipos Sistema de Tipos Checagem Estática X Dinâmica Linguagens Fortemente
Leia maisLinguagens de Programação
Linguagens de Programação Expressões e Variáveis Bruno Lopes Bruno Lopes Linguagens de Programação 1 / 34 Propriedades desejáveis Legibilidade: A leitura do programa é facilmente compreendida? Redigibilidade:
Leia maisProgramação II. Aula 1
Programação II Aula 1 Ponteiros Variáveis Variáveis estáticas Variáveis dinâmicas Podem ser criadas e destruídas durante a execução de um programa. Declaração -> Indireta Vinculação -> Por meio de ponteiros
Leia maisEstruturas de Controle: Nível de Unidades de Programação
Paradigmas de Linguagens I 1 1.5... Estruturas de Controle: Nível de Unidades de Programação As estruturas de controle no nível de unidades de programação são mecanismos de linguagens utilizados para especificar
Leia maisPuca Huachi Vaz Penna
Aula 3 C++: variáveis e expressões aritméticas 2017/1 BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro
Leia maisProf. Franklin Ramalho
PLP - Armazenamento (Parte I) Prof. Franklin Ramalho Universidade Federal de Campina Grande - UFCG Agenda - Variáveis Primitivas - Variáveis Compostas - Modelo de Armazenamento - Ciclo de vida de variáveis
Leia maisLinguagens de Programação Aula 8
Linguagens de Programação Aula 8 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Os tipos de dados de uma linguagem são uma grande parte do que determina o estilo e a utilidade de uma linguagem
Leia maisTipos Abstratos de Dados. Estrutura de Dados
Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:
Leia mais6 Alguns conceitos e comandos em programação
6 Alguns conceitos e comandos em programação 6.1 Diretivas Diretivas são instruções que permitem ao programador efetuar algum tipo de modificação à compilação, sendo analisadas e executadas pelo pré-compilador,
Leia maisLinguagens de Programação. Introdução. Carlos Bazilio
Linguagens de Programação Introdução Carlos Bazilio carlosbazilio@id.uff.br http://www.ic.uff.br/~bazilio/cursos/lp ??? Pascal aux := 0 for i:=1 to 10 do aux := aux + i 10: i = 1 20: if i > 10 goto 60
Leia maisCompiladores Análise de Tipos
Compiladores Análise de Tipos Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp Tipos Um tipo é: Um conjunto de valores Um conjunto de operações sobre esses valores Os tipos de uma linguagem
Leia maisParadigmas de Linguagens
Paradigmas de Linguagens Aula 2: Tipos de dados Professora Sheila Cáceres Tipos de dados Dados são a matéria prima da computação junto com os programas. LPs precisam manipular dados. LPS utilizam os conceitos
Leia maisParadigmas de Linguagens de Programação. Tipos de Dados Abstratos
Tipos de Dados Abstratos Cristiano Lehrer Conceito de Abstração O conceito de abstração é fundamental em programação. Quase todas as linguagens suportam abstração de processos, através de subprogramas:
Leia maisConceitos de Linguagens de Programação - Características. Paavo Soeiro
Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o
Leia mais4. Constantes. Constantes pré-definidas
4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.
Leia maisParadigmas de Programação
Paradigmas de Programação Sintaxe e semântica Aula 4 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Sintaxe A sintaxe de uma linguagem de programação é a forma
Leia maisUniversidade 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 geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia maisLinguagens de Programação
Linguagens de Programação Prof a Jerusa Marchi Departamento de Informática e Estatística Universidade Federal de Santa Catarina e-mail: jerusa@inf.ufsc.br Linguagens de Programação p. 1/5 Linguagens de
Leia maisLinguagens de Programação
Linguagens de Programação Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Expressões Precedência e associatividade de operador Sobrecarga de operador Expressões de modo misto Várias formas de
Leia maisTipos de Dados. George Darmiton da Cunha Cavalcanti
Tipos de Dados George Darmiton da Cunha Cavalcanti (gdcc@cin.ufpe.br) Tópicos Introdução Tipos de Dados Primitivos Tipos Cadeia de Caracteres Tipos Definidos pelo Usuário Tipos Matriz Matrizes Associativas
Leia maisAmbientes 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
Leia maisAmbientes 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
Leia maisCapítulo 1. Aspectos Preliminares
Capítulo 1 Aspectos Preliminares Tópicos do Capítulo 1 Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação de linguagens Influências no projeto de
Leia mais16. Compilação no Linux
16. Compilação no Linux 16.1 Compilador X Interpretador Um código fonte pode ser compilado ou interpretado. Compiladores e interpretadores tratam o código de maneira diferente. Interpretador: Lê o código
Leia mais