1 / 15

APRESENTAÇÃO: REBERTH DOUGLAS BANDEIRA CAVALCANTE

CURSO DE C - 2010. AULA 05: Vetores. APRESENTAÇÃO: REBERTH DOUGLAS BANDEIRA CAVALCANTE. ORGANIZAÇÃO DO CURSO DE C / 2010. TÓPICOS ABORDADOS:. TUTORES:. Conceitos Expressões Fluxo Funções Vetores String Matrizes Estruturas Arquivo.

baina
Download Presentation

APRESENTAÇÃO: REBERTH DOUGLAS BANDEIRA CAVALCANTE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CURSO DE C - 2010 AULA 05: Vetores APRESENTAÇÃO: REBERTH DOUGLAS BANDEIRA CAVALCANTE

  2. ORGANIZAÇÃO DO CURSO DE C / 2010 TÓPICOS ABORDADOS: TUTORES: • Conceitos • Expressões • Fluxo • Funções • Vetores • String • Matrizes • Estruturas • Arquivo • Anderson Caldas (anderson@lccv.ufal.br) • Giancarlo Gusmão (giancarlogusmao@lccv.ufal.br) • David Anderson (dacd@lccv.ufal.br) • Michele Agra (micheleagra@lccv.ufal.br) • Reberth Douglas (rdbc@lccv.ufal.br) DURAÇÃO ~ 2,5 MESES

  3. 1. Introdução • A forma mais simples de estruturarmos um conjunto de dados é por meio de vetores. Como a maioria das linguagens de programação, C permite a definição de vetores. Vetores e Alocação Dinâmica, W. Celes e J. L. Rangel int v[10]; A declaração acima diz que: v é um vetor de inteiros dimensionado com 10 elementos. Cada intocupa 4 bytes, totalizando para a declaração acima 40 bytes. Acesso aos elementos do vetor ? v[0] – acessa o 1º elemento de v v[1] – acessa o 2º elemento de v … v[9] – acessa o 9º elemento de v 0 … n-1 v[10] Invasão de memória

  4. 2. Exemplo 1 Determinação da média e da variância de um conjunto de 10 elementos fornecidos via teclado. V[i] representa o (i+1)-ésimo elemento do vetor, &v[i] representa o endereço da memória onde esse elemento está armazenado.

  5. 3. Ponteiros e Vetores • Na verdade, existe uma associação forte entre vetores e ponteiros, pois se existe a declaração: • intv[10] • a variável v, que representa o vetor, é uma constante que armazena o endereço inicial do vetor, isto é, sem indexação, aponta para o primeiro elemento do vetor. Vetores e Alocação Dinâmica, W. Celes e J. L. Rangel A linguagem C também suporta aritmética de ponteiros. Podemos somar e subtrair ponteiros, desde que o valor do ponteiro resultante aponte para dentro da área reservada para o vetor. Com isso, num vetor temos as seguintes equivalências: v+0 – aponta para o primeiro elemento do vetor; v+1 – aponta para o segundo elemento do vetor; … v+9 – aponta para o último elemento do vetor; • &v[i] = (v+i) • v[i] = *(v+i) Os vetores também podem ser inicializados na declaração: int v[5] = {5, 10, 15, 20, 25} ou int v[ ] = {5, 10, 15, 20, 25}

  6. 4. Exemplo 2 • Passar um vetor para uma função consiste em passar o endereço da primeira posição do vetor. Se passarmos um valor de endereço, a função chamada deve ter um parâmetro do tipo ponteiro para armazenar este valor. Vetores e Alocação Dinâmica, W. Celes e J. L. Rangel Passar para uma função um vetor de int, significa ter um parâmetro do tipo int*, capaz de armazenar endereços de inteiros. Os elementos do vetor não são copiados para a função, o argumento copiado é apenas o endereço do primeiro elemento. Como é passado para a função o endereço do primeiro elemento do vetor, podemos alterar os valores dos elementos do vetor dentro da função

  7. 5. Alocação Dinâmica • Até agora, na declaração de um vetor, devemos saber de antemão sua dimensão. Ou seja, o vetor tem sua dimensão pré-definida. Isso é um fator limitante em situações em que não sabemos previamente a quantidade de dados a ser armazenados. EXEMPLO: Desenvolver um programa para calcular a média e a variância das notas de uma prova de Cálculo I. Teremos que prever quantos alunos fizeram essa prova. Podemos imaginar em: Dimensionar o vetor com um número absurdamente alto. Desperdício de memória Alocação dinâmica

  8. 6. Uso da Memória • Informalmente, podemos dizer que existem três maneiras de reservarmos memória para o armazenamento de informações. • Uso de variáveis globais (e estáticas); • Uso de variáveis locais; • Requisitando ao sistema, em tempo de execução, um espaço de um determinado tamanho. Existe enquanto o programa estiver sendo executado Existe enquanto a função estiver sendo executada. Espaço alocado dinamicamente. Distribuição do uso da memória Existe até que explicitamente seja liberado.

  9. 7. Funções da Biblioteca Padrão • Existem funções, presentes na biblioteca padrão stdlib, que permitem alocar e liberar memória dinamicamente. malloc Recebe como parâmetro o número de bytes que se deseja alocar e retorna o endereço inicial da área de memória alocada. int *v; v = malloc(10*4); int *v; v = malloc(10*sizeof(int)); ou Operador utilizado para independência de compiladores e máquinas.

  10. 8. Função Malloc • a função malloc é usada para alocar espaço para armazenarmos valores de qualquer tipo. Por este motivo, malloc retorna um ponteiro genérico, para um tipo qualquer, representado por void*. mas É comum fazermos a conversão explicitamente, utilizando o operador de molde de tipo (cast). int *v; v = (int*) malloc(10*sizeof(int));

  11. 9. Espaço de Memória • E se não houver espaço livre suficiente para realizar a alocação ? A função retorna um endereço nulo, representado pelo símbolo NULL Erro de Alocação!! Solução stdlib.h

  12. 10. Função Free • Para liberar um espaço de memória alocado dinamicamente, usamos a função free. Esta função recebe como parâmetro o ponteiro da memória a ser liberada. free (v) Atenção!! Só podemos passar para a função free um endereço de memória que tenha sido alocado dinamicamente. Não podemos acessar o espaço na memória depois que o liberamos.

  13. 11. Exemplo 3

  14. 12. Realocação de Memória • Como realocar memória ? E para que serve isso ?

  15. CURSO DE C - 2010 FIM DA AULA 05: Vetores

More Related