Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.

Slides:



Advertisements
Apresentações semelhantes
Marco Antonio Montebello Júnior
Advertisements

TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
Alocação Dinâmida de Memória
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Alocação Dinâmica de Memória
LPG - I: Alocação Dinâmica de Memória - Ponteiros
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Algoritmos e Estruturas de Dados II
Universidade de Brasília
Ponteiros em Linguagem C
Fundamentos de Programação 1
Robson Godoi / Sandra Siebra
Ponteiros.
Escola Secundária c/ 3º CEB da Batalha
Revisão da Linguagem C.
Algoritmos e Programação
Alocação Dinâmica de Memória Professor Mário Dantas
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Ponteiros Variáveis do tipo “ponteiro” armazenam endereços de memória
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
Aula prática 6 Vetores e Matrizes
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
PROGRAMAÇÃO ESTRUTURADA II
Linguagem de Programação II Parte V
Linguagem de Programação II Parte IX
Definição de Tipos Estruturas e Ponteiros
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Alocação Dinâmica de Memória
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Alocação Dinâmica de Memória
Aula prática 6 Vetores e Matrizes
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
Professor Mário Dantas
Vetores Imagine que você tem que receber o nome e a nota de 50 alunos de uma escola, e depois listar o nome de cada um e a média final de cada aluno e.
Estruturas de Dados Aula 5: Matrizes
Vetores e Matrizes Ameliara Freire
Ambiente de Execução - Rotinas
Algoritmos e Estruturas de Dados I – Ponteiros
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Módulo I Capítulo 5: Vetores
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Capítulo VIII Ambientes de Execução
Aula P.02 – BCC202 Revisão sobre Ponteiros Túlio Toffolo
1 Alocação Dinâmica Quando se declara arrays o tamanho deve ser fixo e definido primeiramente –Alocação estática Pode-se alocar dinamicamente o espaço.
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
Algoritmos e Estruturas de Dados
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Estruturas de Dados + Algoritmos = Programas
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação Versão: _01.
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Prof. Marcos LABORATÓRIO DE PRÁTICA DE PROGRAMAÇÃO 06.
Usando vetor e matriz em java
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Programação de Computadores I – Ponteiros Profa. Mercedes Gonzales Márquez.
Leandro Almeida  As declarações abaixo alocam memória para diversas variáveis.  A alocação é estática, pois acontece antes que o programa.
AULA 09 PROGRAMAÇÃO I. Estruturas de Dados Heterogêneas 10/08/2010 Programação I 2 Objetivo: Estudar os tipos de dados heterogêneos:  Registros;  Arrays.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula /08/2011 Professor Leomir J. Borba-
Ponteiros em C Prof. Kariston Pereira
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Funções.
Linguagem de Programação
Programação em C Aula 9.
ponteiros Estrutura de Dados Prof. André Cypriano M. Costa
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
FUNÇÕES Dilvan Moreira (baseado em material de Z. Liang)
Transcrição da apresentação:

Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1

Ponteiros

Variáveis Podem ser divididas em: 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 Vantagens

Áreas de Memória Mapa de memória de um computador padrão IBM-PC

O tipo pointer Sua posição de memória armazena um endereço de outra posição de memória, que por sua vez pode conter um dado. Não armazena um dado. Notação utiliza ^ Exemplos: Var P_nome : ^string; P_idade : ^integer; P_salario : ^real;

O tipo pointer Exemplos: write(‘Idade = ‘,P_idade^); Sugestão: Padronização de nomes Ponteiro vazio é preenchido com NIL Operador @ Ex: P_idade := @idade; (Acessa o endereço da posição de memória referenciada)

Exemplo: Criação de um ponteiro apontando para uma variável inteira. Criação de um ponteiro apontando para uma variável real. Exercicios: Declare 2 variáveis inteiras e dois ponteiros para inteiros que devem ser associados ao endereço das variáveis. Usando somente os ponteiros faça com que as variáveis recebam o dobro e o triplo de seu valor respectivamente,

Alocação dinâmica de memória Memória alocada conforme a necessidade Evita DESPERDÍCIO DE MEMÓRIA X MEMÓRIA INSUFICIENTE Quantidade de memória pode ser determinada em tempo de execução

Alocação dinâmica de memória Procedimento new(ponteiro) Aloca espaço de memória alta para armazenar uma variável alocada dinamicamente por vez.

Alocação dinâmica de memória IMPORTANTE: Sempre que um espaço de memória for alocado dinamicamente, ele tem que ser liberado explicitamente. Ou seja a cada new, deve corresponder um dispose, pois o espaço de memória alocado explicitamente não será liberado automaticamente. Procedimento dispose(ponteiro) Libera o espaço de memória, endereçada pelo ponteiro, existente na área de memória (HEAP).

Algumas funções de gerenciamento de memória em Pascal MemAvail Exibe a quantidade total de memória livre no HEAP, ou seja a soma de todos os blocos de memória livres. Procedimento MaxAvail Retorna o tamanho do maior bloco contínuo de memória no HEAP. Este valor corresponde ao maior tamanho possível de variável dinâmica que pode ser alocado a qualquer tempo. Obs: Estas funções estão disponíveis apenas no Turbo Pascal.

Alocação dinâmica de memória - exercícios - 1)Aloque dinamicamente duas variáveis do tipo inteiro. Leia dois valores nestas variáveis. Verifica se o valor de A é maior que B. Em caso afirmativo exiba o quociente de A dividido por B. 2) Leia 5 valores e apresente o total da soma dos mesmos. Crie dinamicamente a variável que irá receber os valores. Exiba a quantidade de memória antes e depois da alocação de memória para a variável e depois da liberação da mesma.

Alocação dinâmica de memória GetMem Também é usado para alocar dinamicamente espaço de memória para uma variável. Gerencia melhor o espaço de memória. A variável criada pode ter o número de bytes especificado pelo programador. Sintaxe GetMem(ponteiro,numero_de_bytes); Ex: GetMem(P_nome, 30); GetMem(P_total, 20); Como saber quantos bytes reservar? Sizeof(tipo)

Algumas funções de gerenciamento de memória em Pascal Função útil na alocação de blocos de memória: SizeOf Retorna o número de bytes ocupados por um argumento (funciona tanto no Pascal como no Delphi).

Alocação dinâmica de memória FreeMem => Destrói uma variável criada dinamicamente, liberando seu espaço de memória. Deve ser usada em conjunto com GetMem. Ex: FreeMem(P_nome, 30); FreeMem(P_total, 20); Obs: Especificar exatamente a mesma quantidade de bytes que foi alocada.

Alocação dinâmica de memória Alocação dinâmica de memória na verdade tem uma grande utilidade para alocação de blocos de dados. Até agora vimos como fazer a alocação apenas de uma variável por vez. Veremos como trabalhar com vetores e matrizes alocados dinamicamente.

Alocação dinâmica de memória – Vetores e matrizes Características Satisfaz a necessidade de criarmos uma matriz com uma quantidade de elementos desconhecida em tempo de projeto. Deve-se criar um tipo matriz. Pode-se usar a constante MaxInt pré- definida. Declara-se uma variável que seja do tipo ponteiro para o tipo matriz criado. Faz-se alocação dinâmica de memória usando-se GetMem e SizeOf.

Alocação dinâmica de memória – Vetores e matrizes Ex de criação do tipo e declaração do ponteiro: Type P_mat = ^vetor; vetor = array[1..MaxInt] of integer; matriz = array[1..181,1..181]; Var aponta : P_mat; aponta_mat : ^matriz;

Alocação dinâmica de memória – Vetores e matrizes Ex. de alocação dinâmica da memória do vetor: getMem(aponta, N * SizeOf(integer)); Onde N é a quantidade de elementos que se deseja no vetor Ex. de utilização dos elementos do vetor: for x:= 1 to N do writeln(aponta^[x]);

Alocação dinâmica de memória – Vetores e matrizes Ex. de alocação dinâmica da memória da matriz: getMem(aponta, L * C * SizeOf(integer)); Onde L é a quantidade de linhas que se deseja na matriz e C é a quantidade de colunas. Ex. de utilização dos elementos da matriz: for x:= 1 to L do for y := 1 to C do writeln(aponta_mat^[x,y]);

Alocação dinâmica de memória – Vetores e matrizes Liberando a memória do vetor freeMem(aponta,N * SizeOf(integer)); Liberando a memória da matriz freeMem(aponta_mat, L * C * SizeOf(integer));

Exercício Leia um número inteiro N e aloque dinamicamente memória para um vetor de N inteiros. Leia os valores do vetor e exiba a média dos valores lidos.