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

Slides:



Advertisements
Apresentações semelhantes
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Advertisements

Ambiente de Execução - Rotinas
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal 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.
INE5408 Estruturas de Dados Alocação Dinâmica de Memória.
Fundamentos de Sistemas Operacionais Aula 2 Princípios de Programação Prof. Belarmino.
Linguagens de Programação Conceitos e Técnicas Valores e Tipos de Dados Prof. Isabel Cafezeiro
Compiladores - Introdução. O que é um Compilador? “Um compilador é um programa que lê um programa escrito em uma linguagem (linguagem fonte) e a traduz.
Linguagens de Programação Conceitos e Técnicas Comandos Prof. Isabel Cafezeiro
Lógica de Programação Aula 25 Prof. Auler Gomes. Introdução - subrotina Muitos problemas grandes ou nem tão grandes, mas de solução mais complexa podem.
Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Isabel Cafezeiro
Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Alocação Dinâmica de Memória.
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.
Estrutura de Arquivos e Pastas no Windows e Linux Prof. Olavo José Luiz Junior
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 Estruturas de Dados I – Ponteiros Profa. Mercedes Gonzales Márquez.
Professor: Felipe Lopes M. Faria Disciplina: Sistemas Operacionais 1.
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
Algoritmos e Programação utilizando Visualg
Gerência de Arquivos.
ab SISTEMAS OPERACIONAIS ab
Estruturas de Dados Aula 2: Estruturas Estáticas
Arquitetura de Computadores-S.O.
Projeto de Compiladores
Linguagens de Programação Conceitos e Técnicas
Algoritmos e Estruturas de Dados I Prof. Dsc. Alex F. V. Machado
Aspectos de Interrupção
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
INF1007: Programação 2 2 – Alocação Dinâmica
Linguagens de Programação Conceitos e Técnicas
INE5408 Estruturas de Dados
Linguagens de Programação Conceitos e Técnicas
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
Prof. Wellington Franco
Estruturas de Dados Aula 5: Matrizes
Algoritmos e Estruturas de Dados I – Ponteiros
FUNDAMENTO DE PROGRAMAÇÃO
CONCEITO DE VARIÁVEIS ESTÁTICAS
Estruturas de Dados - T.332 Capítulo 11 Gerenciamento de Arquivos
Linguagem de Programação TM 333
Criação e manipulação de objetos
Introdução à programação orientada por objetos
Departamento de Estatística e Informática
Algoritmos e Técnicas CEFET/RN.
Banco de Dados CURSOR.
Algoritmos e Estruturas de Dados I

Listas Encadeadas.
Aula 22 Modularização 22/10/08.
Fundamentos de Programação 1
MEMORIAS.
Sistemas operacionais
Programação Estruturada Aula 1 Prof. Jorge Barreto Julho 2018.
Programação Orientada a Objetos
Instalação e Manutenção de Computadores Técnico em Informática MAI1
Prof.: Bruno Rafael de Oliveira Rodrigues
Curso básico de PHP. 1 Vantagens: Gratuito Multiplataforma Estável Rapidez Comunicação.
Algoritmos e Estruturas de Dados I – Ponteiros
Estruturas de Dados em C
Conceito de Hardware e Software. Hardware Hardware – São os dispositivos físicos de um Computador (placas mãe, memorias auxiliar e principal, periféricos.
Estruturas definidas pelo programador
Estruturas de Dados Aula 5: Matrizes 16/03/2015. Matrizes Conjuntos bidimensionais declarados estaticamente float mat[4][3]; acesso de elemento: mat[2][0]
Compilação de Linguagens OO
CALCULADORA CARACTERE E VARIÁVEIS COMPOSTAS OU VETORES EM JAVA
Ementário O ambiente de desenvolvimento
Transcrição da apresentação:

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

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

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

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

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

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

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.

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

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

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

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!

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

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.

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

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

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 !

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

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)

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

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.

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

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