Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Isabel Cafezeiro

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Linguagem PASCAL Subprogramas
Universidade Federal do Pará Serviço Público Federal Centro de Ciências Exatas e Naturais Departamento de Informática Abril/2001.
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Heap Sort TPA – Prof. Mateus Costa
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Linguagem Pascal Prof. Sérgio Rodrigues.
Lógica Estruturada Aplicada
Capítulo VIII Ambientes de Execução
Introdução à Programação
MODULARIZAÇÃO Técnica utilizada e tida como vantajosa na confecção de programas. Consiste em dividir o programa em diversos módulos ou sub-programas, de.
COMPILADORES 07 Prof. Marcos.
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
INE5408 Estruturas de Dados Ponteiros, passagem de parâmetros e modelos de memória.
PROGRAMAÇÃO ORIENTADA A OBJETOS EM C++ Professor: Dilvan Moreira.
Técnicas de Programação I Reconhecer e aplicar corretamente o conceito da Estrutura de Repetição com variável de controle.
Linguagens de Programação Conceitos e Técnicas Valores e Tipos de Dados Prof. Isabel Cafezeiro
Linguagens de Programação Conceitos e Técnicas Comandos Prof. Isabel Cafezeiro
Linguagens de Programação Conceitos e Técnicas Variáveis Prof. Isabel Cafezeiro
Linguagens de Programação Conceitos e Técnicas Expressões Prof. Isabel Cafezeiro
Estrutura de Dados (DPADF 0056) Aula 7 – Encadeamento de Memória Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.
Linguagens de Programação Conceitos e Técnicas Valores e Tipos de Dados Prof. Isabel Cafezeiro
Linguagens de Programação Conceitos e Técnicas Definições e declarações Prof. Isabel Cafezeiro
Algoritmos e Programação utilizando Visualg
Estruturas de Dados Aula 2: Estruturas Estáticas
Polimorfismo e suas aplicações em C++.
Linguagens de Programação Conceitos e Técnicas
Algoritmos e Estruturas de Dados I
Vetores e Matrizes em C/C++
Linguagens de Programação Conceitos e Técnicas
Projeto de Circuitos Integrados Semidedicados
INF1007: Programação 2 2 – Alocação Dinâmica
Linguagens de Programação Conceitos e Técnicas
1) Complete as seguintes frases:
Algoritmos e Estruturas de Dados I
Estrutura de Dados Revisão
Recursos de Programação
Módulo I Capítulo 2: IDE e Variáveis
Algoritmos e Estruturas de Dados I
Linguagem C Para programadores Python
Prof. Wellington Franco Sub-Rotinas:Funções e Procedimentos
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Linguagens de Programação Conceitos e Técnicas
Algoritmos e Estruturas de Dados I
FUNDAMENTO DE PROGRAMAÇÃO
INF1007: Programação Funções Recursivas
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
FUNDAMENTO DE PROGRAMAÇÃO PROF. BRUNO DE CASTRO H. SILVA
CONCEITO DE VARIÁVEIS ESTÁTICAS
Departamento de Estatística e Informática
PROGRAMAÇÃO I UNIDADE 3.
Daniel Paulo SQL Server 2016 Módulo II Daniel Paulo
Técnicas de Programação
COMPILADORES 06 Prof. Marcos.

Aula 22 Modularização 22/10/08.
Fundamentos de Programação 1
Programação Estruturada Aula 1 Prof. Jorge Barreto Julho 2018.
Programação Orientada a Objetos
Programação Orientada a Objetos
Orientação a Objetos - Programação em C++
Rosemary Silveira Filgueiras Melo
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Computação Eletrônica Vetores e Matrizes
Programação de Computadores LINGUAGEM C – AULA 02 – PROF. WELLINGTON TELLES.
Fundamentos de Programação 1
CALCULADORA CARACTERE E VARIÁVEIS COMPOSTAS OU VETORES EM JAVA
Ementário O ambiente de desenvolvimento
Aula 4 Professores: Conteúdo: Dante Corbucci Filho
Transcrição da apresentação:

Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Isabel Cafezeiro

Linguagens de Programação Amarrações Qual é o efeito de uma declaração de tipo ? Qual é o efeito de uma declaração de procedimento ? Qual é o efeito de um comando de atribuição ?

Linguagens de Programação Amarrações Qual é o efeito de uma declaração de tipo ? Qual é o efeito de uma declaração de procedimento ? Qual é o efeito de um comando de atribuição ? Amarrar um identificador ao tipo! Amarrar um identificador a um comando! Amarrar uma variável a um valor! Amarração (ou binding) é uma associação entre entidades de programação.

Linguagens de Programação Amarrações Tempos de Amarração: Projeto da Lp Escolha dos símbolos e seus significados. Ex: * denota multiplicação em C. Implementação do Tradutor Decisões dependentes da máquina. Ex: Intervalo de inteiros em C. Compilação Amarrações estáticas. Ex: Variável e seu tipo em Pascal. Ligação Associações entre “pedaços” de códigos. Ex: Programa e função da biblioteca. Carga Associações entre variáveis estáticas e endereços de memória. Execução Associações entre variável e seu valor.

Linguagens de Programação Amarrações Tempos de Amarração: Projeto da Lp Escolha dos símbolos e seus significados. Ex: * denota multiplicação em C. Implementação do Tradutor Decisões dependentes da máquina. Ex: Intervalo de inteiros em C. Compilação Amarrações estáticas. Ex: Variável e seu tipo em Pascal. Ligação Associações entre “pedaços” de códigos. Ex: Programa e função da biblioteca. Carga Associações entre variáveis estáticas e endereços de memória. Execução Associações entre variável e seu valor. EstáticasEstáticas Dinâmica

Linguagens de Programação Ambiente (environment): É um conjunto de amarrações. Amarrações Program P; const z = 0; var c:char; Procedure Q; const c = 3.0; var b:boolean; begin... end; begin... end; z → 0 c → char q → procedimento z → 0 c → 3.0 q → procedimento b → boolean

Linguagens de Programação Escopo: região do programa onde a amarração é efetiva. O escopo permite a existência de variáveis diferentes com um mesmo nome no mesmo programa. Ex: i, cont, aux Amarrações Program P; const z = 0; var c:char; Procedure Q; const c = 3.0; var b:boolean; begin... end; begin... end; No escopo do principal, c → char No escopo de Q, c → 3.0

Linguagens de Programação Amarrações Exemplo? O efeito de um comando pode variar conforme o ambiente !

Linguagens de Programação Amarrações xx y z w x y z w x Bloco Monolítico Versões antigas de COBOL, BASIC Blocos Não Aninhados FORTRAN Blocos Aninhados Pascal, Algol Blocos: delimitam o escopo

Linguagens de Programação Amarrações x Bloco Monolítico Versões antigas de COBOL, BASIC Blocos: delimitam o escopo O escopo de cada declaração é todo programa Não se pode modularizar

Linguagens de Programação Amarrações Blocos: delimitam o escopo Só uma área global: identificadores visíveis a subprogramas que não os utilizam x y z w Blocos Não Aninhados FORTRAN

Linguagens de Programação Amarrações Blocos: delimitam o escopo Em C: aninha-se blocos, mas não funções x y z w x Blocos Aninhados Pascal, Algol Em Java: aninha-se classes e métodos em classes int a = 2; int main (void) { { int a = 1; printf("%d \n",a); } printf("%d \n",a); }

Linguagens de Programação Tempo de Vida  Escopo (estático) de Visibilidade const z=0; var c: char; procedure q; const c = 30; var b: boolean; begin... end begin... end Escopo Tempo de vida z c (char) q c (30) b Todo pgm principal Todo pgm q q q q q Amarrações Conceito estático ! Conceito dinâmico !

Linguagens de Programação Linguagens de Escopo Estático vs Linguagens de Escopo Dinâmico Amarrações A visibilidade dos nomes depende da estrutura das declarações A visibilidade dos nomes depende da ordem das chamadas Tempo de compilação !!! Tempo de execução !!! APL,SNOBOL4, logo PERL(possui mecanismos) PASCAL, C, JAVA,... escopo léxico

Linguagens de Programação Linguagens de Escopo Estático vs Linguagens de Escopo Dinâmico Amarrações Imprime 0 em escopo estático ! var x: integer; procedure F; begin writeln(x) end; procedure G; var x: integer; begin x := 1; F; end; begin x := 0; G end. Imprime 1 em escopo dinâmico ! Principal G F

Linguagens de Programação PERL Amarrações Imprime 0 em escopo estático ! $x = 0; sub f { return $x; } sub g { my $x = 1; return f(); } print g()."\n"; Principal G F $x = 0; sub f { return $x; } sub g { local $x = 1; return f(); } print g()."\n"; Imprime 1 em escopo dinâmico ! my: locais em escopo estático ! local: locais em escopo dinâmico !

Linguagens de Programação Linguagens de Escopo Estático vs Linguagens de Escopo Dinâmico Amarrações Erro em escopo estático: identificador inexistente ! procedure P; x: integer; begin Q end; procedure Q; begin x := 1 end; Sem erro em escopo dinâmico ! P Q

Linguagens de Programação Amarrações var i,j,num: integer; procedure mensagem; begin writeln('calculando o fatorial de ',i) end; function fatorial(i:integer): integer; begin if (i=1) then begin mensagem; fatorial := 1 end else fatorial := i*fatorial(i-1) end; begin num := 3; i := num; j := fatorial(i) end. Linguagem de Escopo Estático i,j,num i mensagem fatorial calculando o fatorial de 3 Mensagem impressa:

Linguagens de Programação Amarrações var i,j,num: integer; procedure mensagem; begin writeln('calculando o fatorial de ',i) end; function fatorial(i:integer): integer; begin if (i=1) then begin mensagem; fatorial := 1 end else fatorial := i*fatorial(i-1) end; begin num := 3; i := num; j := fatorial(i) end. Linguagem de Escopo Dinâmico (1) Principal (2) fatorial i de (1), j,num, mensagem, fatorial i de (2), j,num, mensagem fatorial (3) fatorial i de (3), j,num, mensagem, fatorial (4) Fatorial (5) mensagem i de (4), j,num, mensagem, fatorial i de (4), j,num, mensagem fatorial calculando o fatorial de 1 Mensagem impressa:

Linguagens de Programação Amarrações Organização de Memória para Linguagens de escopo estático Área para código: tamanho fixo, definido em tempo de compilação Área estática: Não há variação de tamanho nem de localização Pilha: Contém registros de ativação: toda informação necessária para execução de procedimentos ou blocos. Heap: Dados cujo tempo de vida é independente das regras de escopo da linguagem código estática pilha heap

Linguagens de Programação Amarrações Organização de Memória para Linguagens de escopo estático Registros de Ativação (RA)‏ Valores temporários Ex: temporárias para o cálculo de expressões. Área para dados locais Estado da máquina antes da chamada: PC e registradores. Elo dinâmico: acesso ao ambiente de chamada. Elo estático: acesso a nomes não locais. Parâmetros Valor de retorno