A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Linguagens de Programação Conceitos e Técnicas Variáveis Prof. Isabel Cafezeiro

Apresentações semelhantes


Apresentação em tema: "Linguagens de Programação Conceitos e Técnicas Variáveis Prof. Isabel Cafezeiro"— Transcrição da apresentação:

1 Linguagens de Programação Conceitos e Técnicas Variáveis Prof. Isabel Cafezeiro isabel@dcc.ic.uff.br

2 Linguagens de Programação Variáveis “Once a programmer has understood the use of variables, he has understood the essence of programming.’’ Edsger Dijkstra

3 Linguagens de Programação “Once a programmer has understood the use of variables, he has understood the essence of programming.’’ Edsger Dijkstra No paradigma imperativo !!! Variáveis

4 Linguagens de Programação No paradigma imperativo: Uma variável é uma entidade da computação que contém um valor, o qual pode ser inspecionado e atualizado sempre que necessário. Variável é uma abstração de célula de memória. Variável armazena o estado de uma entidade da computação. Variáveis

5 Linguagens de Programação Variáveis da Programação  Variáveis da Matemática 2 := atribuições Passagem de parâmetros Variáveis

6 Linguagens de Programação O conceito de variável é a primeira abstração na evolução das LPs Linguagem de Máquina Assembly endereços absolutos nomes Variáveis

7 Linguagens de Programação Variáveis simples x Variáveis compostas Variáveis Uma única célula de memória Um grupo contíguo de células Atualização total ou seletiva type S = (a,b); T = (c,d,e); P = record prim: S; seg: T; end; var prod, prod2: P; begin prod.prim := a; prod.seg := c; prod2 := prod; end.

8 Linguagens de Programação Nome, Endereço, Tipo, Valor, Tempo de Vida Nome definidos pelo programador existem variáveis que não possuem nomes linguagens costumam permitir sinônimos Endereço posição de memória da primeira célula ocupada pela variável Tipo Valor em conformidade com o tipo. Variáveis 2 p q

9 Linguagens de Programação Nome, Endereço, Tipo, Valor, Tempo de Vida Tempo de Vida Período em que existe memória alocada para a variável globais: execução do programa completo locais: execução do bloco onde foi declarada dinâmicas (heap): arbitrário estáticas: a partir do ponto onde foram declaradas persitentes: sobrevivem além do programa Caráter dinâmico !!! Examine a execução ! Variáveis

10 Linguagens de Programação Nome, Endereço, Tipo, Valor, Tempo de Vida Tempo de vida de variáveis locais procedure rec(b:integer); begin if(b = 0) then rec(b+1) end; begin rec(0) end. Principal Rec (0) Rec (1) Tempo de vida de b (primeira ativação): Tempo de vida de b (segunda ativação): Variáveis Implementação em pilha de registros de ativação

11 Linguagens de Programação Heap (zona de acesso aleatório; monte) Variáveis Variáveis que residem no Heap podem ser criadas e apagadas a qualquer momento São criadas por um comando São anônimas (acessadas por ponteiros que residem na pilha) As variáveis locais obedecem à disciplina da pilha ! As variáveis locais são criadas pela declaração ! As variáveis locais possuem identificadores!

12 Linguagens de Programação Heap (zona de acesso aleatório; monte) Variáveis Alocação de Memória Escolha do elemento na LED: ● Primeiro encontrado ● Tamanho mais próximo ● Maior tamanho Fragmentação !! alocar mais memória !!! algoritmo para desfragmentar !!! Gerenciador do heap

13 Linguagens de Programação Heap (zona de acesso aleatório; monte) Variáveis Desalocação de Memoria Em PASCAL, C, C++: ● Explícita: a cargo do programador ● Instruções para desalocação Em Java: ● Implícita: coleta de lixo Programas eficientes: o programador é quem melhor sabe o momento de desalocar memória. Algoritmo lento: coletor percorre todos os ponteiros. Algoritmo pode entrar em ação em momento inapropriado da execução.

14 Linguagens de Programação Heap (zona de acesso aleatório; monte) Variáveis Mais trabalhoso. Menos confiável. Confortável e seguro! Desalocação de Memoria Em PASCAL, C, C++: ● Explícita: a cargo do programador ● Instruções para desalocação Em Java: ● Implícita: coleta de lixo

15 Linguagens de Programação Modos de Alocação de Variáveis Variáveis ● Estática: Tempo de Carga (FORTRAN) – Mal dimensionamento das variáveis – Espaço desperdiçado com subrotinas que podem não ser executadas – Impedimento de uso de recursividade ● Alocação Dinâmica Contígua no Vetor de Memória – Esgotamento Rápido do Vetor – Desalocação e Realocação Pouco Eficientes ● Alocação Pilha + Heap

16 Linguagens de Programação Classificação de Variáveis segundo a persistência Variáveis Transientes Tempo de vida da variável limitado pela ativação do programa que a criou. Persistentes Tempo de vida da variável transcende a ativação do programa que a criou. Memória Secundária !

17 Linguagens de Programação Variáveis Persistência de Dados Armazenamento e recuperação de dados em memória secundária LP Banco de Dados

18 Linguagens de Programação Variáveis Em Linguagens de Programação: Incorporar mecanismos de persistência de dados em linguagens para facilitar a programação em aplicações onde a persistência é necessária. LP onde não exista diferença entre entidades transientes e persistentes (Persistência Ortogonal)

19 Linguagens de Programação Variáveis Arquivos ● Arquivos Seriais ● Arquivos Diretos : – Implementação com tabela indexada ou vetor de componentes ● Operações de Abertura e Fechamento: – Conversão de Dados para Formato Sequencial Binário

20 Linguagens de Programação Persistência Ortogonal Variáveis – Mesmos tipos para variáveis persistentes e transientes. – Nenhuma distinção entre o código que lida com variáveis persistentes e o que lida com variáveis transientes. – Identificação de persistência através da percepção da continuidade do uso. – Eliminação de Conversões de Entrada e Saída (30% do código). – Não existem ainda na prática.

21 Linguagens de Programação Persistência Ortogonal Variáveis Serialização: Conversão da variável transiente em uma sequência de bytes na memória secundária ● Ponteiros devem ser relativizados ● Variáveis anônimas apontadas também devem ser armazenadas e recuperadas

22 Linguagens de Programação Persistência Ortogonal Variáveis Em JAVA: Serialização compensa diferenças entre diferentes ambientes computacionais: – Objeto criado em máquina Windows serialização – Objeto rodando em máquina Linux Interface Serializable Classes abstratas que possuem apenas métodos abstratos: Métodos são implicitamente abstract e public Campos são implicitamente static e final Não possuem construtores


Carregar ppt "Linguagens de Programação Conceitos e Técnicas Variáveis Prof. Isabel Cafezeiro"

Apresentações semelhantes


Anúncios Google