Buscar

Notas de aula - Variáveis e constantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Variáveis e Constantes: 
Armazenamento 
Prof. Saulo C. Campos 
Variáveis 
• Variáveis são as entidades mais importantes da 
programação imperativa. “Uma vez que o 
programador tenha entendido o uso de variáveis, ele 
entendeu a essência da programação” (Dijkstra). 
• Uma variável é abstração da célula (ou células) de 
memória que armazena o estado de uma entidade 
de programação. 
• A variável armazena um valor que pode ser 
atualizado ou inspecionado sempre que 
necessário. 
 
Variáveis 
• O uso de variáveis permitiu que o problema de 
endereçamento absoluto fosse resolvido. Além 
disso, possibilitou o uso de nomes (o que deixa o 
programa mais legível). 
• Uma variável possui as seguintes propriedades: 
– Nome; 
– Endereço; 
– Tipo; 
– Valor; 
– Tempo de vida; 
– Escopo. 
Variáveis 
• Variáveis compostas podem ser acessadas, 
inicializadas e atualizadas de forma completa ou 
seletiva. 
 
 struct data { int d, m, a; }; 
 struct data f = { 12 , 7, 1984 }; 
 struct data g; 
 g = f; 
 g.m = 17; // mês que não existe 
Constantes 
• Constantes são entidades de programação que 
armazenam valores, porém não permitem sua 
atualização. 
• Constantes possuem as mesmas propriedades das 
variáveis. 
 
 const float PI = 3.1416; 
 const int YY = 3; 
 const int * z; // ponteiro de constante 
 char l = 'g'; 
 char x = 9; 
 int *w = &3; // erro aqui 
 pi = 5.55; // erro aqui 
 YY=4; YY++; x=&YY; // erro aqui 
 z = &YY; 
 float area = pi * YY * YY; 
Armazenamento 
• Gerencia de memória: 
– Estática versus dinâmica. 
• O sistema operacional fica encarregado pela 
gerência de memória, porém as LP devem fazer 
uso do mecanismo de gerência de memória. 
• A forma mais comum de implementar o uso da 
gerencia de memória dinâmica vem o ALGOL. 
Consiste em dividir a memória de dados em duas 
áreas: 
– Heap 
– Pilha 
 
Armazenamento 
• A pilha é utilizada para resolver problemas e 
alocação de subprogramas recursivos e alocação 
de variáveis locais. 
• Todas as vezes que se faz uma chamada de um 
subprograma ou há necessidade da execução de 
uma novo bloco de código, é reservado, no topo 
da pilha, memória suficiente para variáveis locais. 
• Quando o subprograma ou bloco é encerrado a 
memória é liberada fazendo uma operação pop na 
pilha. 
Armazenamento 
• O uso da pilha resolve o problema de alocação 
dinâmica considerando variáveis locais. Mas não 
resolve o problema de instruções que aumentam o 
tamanho da memória de uma variável já alocada. 
• Para isso, é utilizada a área de heap (também 
conhecida como monte). 
• A área heap não segue regras como a área de pilha 
e é destinada armazenar qualquer variável que 
demande mais espaço. 
Armazenamento 
Armazenamento 
Gerenciamento da Pilha 
• A gerencia da pilha nas LP like-ALGOL ocorre por 
meio do uso de Registros de Ativação (RA) de 
subprogramas. Sendo assim, cada nodo da pilha é 
formado por um RA, com os seguintes campos: 
Pilha de Registros de Ativação 
• Constantes locais: armazena valores de constantes 
locais. 
• Variáveis locais: armazena as variáveis locais. 
• Parâmetros: armazena os parâmetros da função. 
• Elo dinâmico: referência para a base do registro de 
ativação anterior. 
• Elo estático: referência para a base do RA do 
subprograma onde o subprograma corrente foi 
definido. 
• Endereço de retorno: armazena o endereço da 
próxima instrução a ser executada quando o 
subprograma terminar. 
Pilha de Registros de Ativação 
• Constantes locais: armazena valores de constantes 
locais. 
• Variáveis locais: armazena as variáveis locais. 
• Parâmetros: armazena os parâmetros da função. 
• Elo dinâmico: referência para a base do registro de 
ativação anterior. 
• Elo estático: referência para a base do RA do 
subprograma onde o subprograma corrente foi 
definido. 
• Endereço de retorno: armazena o endereço da 
próxima instrução a ser executada quando o 
subprograma terminar. 
Gerência do Heap (Monte) 
• É menos eficiente e varia de acordo com a LP. 
• Uma das formas é utilizar duas listas de controle 
com informações a respeito dos espaços de 
memória livre e ocupados. 
– LED – Lista de Espaços Livres 
– LEO – Lista de Espaços Ocupados 
• Quando há demanda por memória, percorre-se a 
LED e verifica um espaço onde a variável possa ser 
alocada. Então atualiza-se a LEO (recebe um novo 
registro) e a LED (exclui o registro). 
 
Gerência do Heap (Monte) 
• Parte da gerência do Heap depende do 
programador ou da LP, pelo fato de ser necessário 
efetuar a liberação da memória. 
– Liberação explicita 
– Liberação automática (coletor de lixo) 
Memória secundária 
• Tipos de memória secundária 
– Banco de dados 
– Arquivos 
• Persistência é o termo aplicado para descrever a 
gravação de uma variável em memória secundária.

Outros materiais