Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação

Slides:



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

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM REDES DE COMPUTADORES Algoritmos e programação de computadores Aula /08/2011 Professor Leomir J. Borba-
Programação II Estruturas de Dados
Alocação Dinâmida de Memória
Algoritmos e Estrutura de Dados I
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.
Universidade de Brasília
Slides Prof. Jean SIMÃO Revisão: Prof. João FABRO
Fundamentos de Programação 1
Escola Secundária c/ 3º CEB da Batalha
Listas Encadeadas.
APRESENTAÇÃO: GIANCARLO DE GUSMÃO GONÇALVES CURSO DE C AULA 08: Tipos Estruturados.
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Professor Reverton de Paula Faculdade Anhanguera de Indaiatuba
Alocação Dinâmica de Memória Professor Mário Dantas
Vetores e Matrizes Laboratório de ICCN Marco Antonio Montebello Júnior
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 6 Vetores e Matrizes
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 13 Orientação a Objetos – C++ Parte 1
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
Aula prática 6 Vetores e Matrizes
Linguagem de Programação II Parte V
Linguagem de Programação II Parte IX
Definição de Tipos Estruturas e Ponteiros
CADEIA DE CARACTERES (Strings)
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
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Prof. Ricardo Santos PONTEIROS
Paradigmas e Ferramentas de Desenvolvimento de Software – Revisão da linguagem C++ Lúbia Vinhas DPI - INPE.
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
Estruturas de Dados Aula 5: Matrizes
Estruturas de Dados Aula 9: Listas (parte 1)
Algoritmos e Estruturas de Dados I – Ponteiros
Estruturas de Dados Aula 2: Estruturas Estáticas 07/04/2014.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
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
Estruturas de Dados Aula 17: Estruturas Genéricas
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.
Estruturas de Dados Aula 7: Tipos Estruturados 23/04/2014.
Algoritmos e Estruturas de Dados
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
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
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.
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
Estrutura de Dados Aula 3 - Listas
Estruturas Homogêneas – Vetores e Matrizes
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
Aula Prática 6 Vetores e Matrizes Monitoria
Algoritmo e Estrutura de Dados I Aulas 15 – Linguagem C Alocação Dinâmica de Memória Márcia Marra
Linguagem de Programação
Programação em C Aula 9.
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.
Jean Carlo Mendes
Transcrição da apresentação:

Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação

Revisando Assim, no momento que o programa é executado, temos que o endereço de vetor é C8 Vimos anteriormente que no momento em que declaramos um vetor, o mesmo é alocado na memória de forma sequencial.

Revisando Ao alocar a matriz de forma sequencial, temos um pró e um contra. Quais seriam eles? O mesmo acontece para uma matriz alocada estaticamente. Todas as posições estão ocupando a memória de forma sequencial.

Revisando O fato da matriz estar alocada de forma sequencial dá rapidez ao acesso de elementos. Porém, em memórias fragmentadas, impede a alocação de uma matriz de tamanho relativamente grande. Como podemos solucionar esse problema? E em programas em que a necessidade de memória é variável, sempre precisamos alocar memória para o pior caso.

Alocação Dinâmica Ferramenta que possibilita a reserva de memória em tempo de execução. Possibilita a criação de programas mais eficientes, com um menor consumo de memória. Como toda ferramenta, a alocação dinâmica tem suas vantagens e desvantagens.

Alocação Dinâmica O primeiro passo para alocar vetores e matrizes de maneira dinâmica é aprendendo a utilizar as seguintes funções: void* malloc(int size) void* calloc(int n, int size) void* realloc(void* pointer, int size) void free(void* pointer)

void* malloc(int size) Aloca na memória o número de bytes definido por size, e retorna o endereço do primeiro elemento desse espaço alocado. O retorno é do tipo void*, logo, é sempre necessário utilizar um cast ao se usar a função malloc. É recomendado sempre o uso do sizeof() para calcular a quantidade de espaço a ser alocada.

void* malloc(int size) Caso não haja espaço suficiente na memória para alocar, a função retornará NULL Dessa maneira, podemos verificar durante a execução se o programa deve continuar ou finalizar usa execução. Esse comportamento é igual para todas as funções de alocação que veremos.

void* malloc(int size)

void* calloc(int n, int size) Aloca na memória o número de bytes definido por size multiplicado pelo valor de n, e retorna o endereço do primeiro elemento desse espaço alocado. A memória alocada é limpa no processo. Assim como o malloc, deve ser feito um cast no retorno. É recomendado sempre o uso do sizeof() para calcular a quantidade de espaço a ser alocada.

void* calloc(int n, int size)

void* realloc(void* pointer, int size) Aloca na memória o número de bytes definido por size, e retorna o endereço do primeiro elemento desse espaço alocado. No processo, os elementos atuais da memória apontada por pointer são copiados Caso não haja memória suficiente, NULL é retornado e pointer permanece inalterado. Assim como no malloc e calloc, deve ser feito o cast do retorno.

void* realloc(void* pointer, int size) De acordo com o visto, qual o problema em usar o seguinte código:

void* realloc(void* pointer, int size)

void free(void* pointer) Libera o espaço de memória alocado apontado por pointer que foi previamente alocado utilizando umas da funções vistas anteriormente. Caso não seja utilizada, o espaço alocado permanecerá bloqueado para outros usos.

Alocação Dinâmica de Matrizes Podemos utilizar ponteiros em vários níveis. Vimos como alocar um vetor dinamicamente, mas como faríamos para criar uma matriz?

Alocação Dinâmica de Matrizes Vemos assim que, apesar de ocupar mais espaço, uma matriz alocada dinamicamente nos permite utilizar a memória de maneira mais eficiente. Mas isso tem um pequeno custo, já que o acesso aos elementos é feito de forma indireta. É importante notar que esse mesmo processo poderia ser feito para diversas dimensões.

Alocação Dinâmica Dúvidas?

Exercício 1 Crie um programa que receba inteiros do usuário e armazene-os em um array, sempre que este array ficar cheio, dobre seu tamanho, quando isso acontecer imprima na tela: “Array realocado”. Inicie o array com tamanho 1. O programa finalizará se o numero 0 for digitado, e, nessa hora, deverá imprimir os valores recebidos até então. Lembre-se de liberar a memória.

Exercício 2 Escreva um programa que receba a quantidade de linhas e colunas de uma matriz nxm, armazene essa matriz utilizando alocação dinâmica e imprima sua matriz transposta. O programa só deve encerrar se a quantidade de linhas ou a quantidade de colunas dada pelo usuário for zero. Lembre-se de liberar o espaço alocado para a matriz ao final de cada iteração, e de verificar se as alocações ocorreram com sucesso.