1 / 25

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6. Agenda. Matrizes Unidimensionais Multidimensionais Declaração de Vetores. Vetores. Dados Homogêneos Uma estrutura de dados, que utiliza somente um tipo de dado, em sua

quang
Télécharger la présentation

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 6

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. TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMASLINGUAGEM DE PROGRAMAÇÃO IAula 6 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  2. Agenda • Matrizes • Unidimensionais • Multidimensionais • Declaração de Vetores 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  3. Vetores • Dados Homogêneos Uma estrutura de dados, que utiliza somente um tipo de dado, em sua Definição é conhecida como dados homogêneos. Variáveis compostas homogêneas correspondem a posições de memória, identificadas por um mesmo nome, individualizado por índices e cujo conteúdo é composto do mesmo tipo. Sendo os vetores (também conhecidos como estruturas de dados unidimensionais) e as matrizes (estruturas de dados bidimensionais) os representantes dos dados homogêneos 3 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  4. Vetores • Vetor - O vetor é uma estrutura de dados linear que necessita de somente um índice para que seus elementos sejam endereçados. • Usado para armazenar lista de valores do mesmo tipo. • Cada célula armazena somente um valor de dados do vetor tipo. • Cada célula tem seu próprio endereço ou indice. • Características principais • Alocação estática, Estrutura homogênea, alocação seqüencial 4 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  5. Vetores • Inserção/Exclusão Realocação dos elementos Posição de memória não liberada Ex : int nota [ 5 ] nota [1]=9.5; nota[2]=7.4 ......... 5 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  6. Matriz • Uma matriz é um arranjo bidimensional ou multidimensional de alocação estática e seqüencial. A matriz é uma estrutura de dados que necessita de um índice para referenciar a linha e outro para referenciar a coluna para que seus elementos sejam endereçados. • Ex. Char letras[3][6] 6 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  7. Matriz • Funções para alocação de memória Na linguagem C, a alocação dinâmica de memória pode ser realizada com apenas quatro chamadas a funções: void * malloc(int qty_bytes_alloc); void * calloc(int qty, int size); void * realloc(void * pointer, int new_size); free( void * pointer); 7 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  8. Uso de Memória em C • Funções para alocação de memória É a função malloc que realiza a alocação de memória. Deve-se informar para a função a quantidade de bytes para alocação. A função irá retornar, se existir memória suifciente, um endereço que deve ser colocado em uma variável do tipo ponteiro. Como a função retorna um ponteiro para o tipo void, deve-se utilizar o typecast, transformando este endereço para o tipo de ponteiro desejado. 8 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  9. Uso de Memória em C • Funções para alocação de memória calloc - Em vez de se alocar uma quantidade de bytes através da função malloc, pode-se usar a função calloc e especificar a quantidade de bloco de um determinado tamanho. Funcionalmente a alocação irá ocorrer de maneira idêntica. A única diferença entre o malloc e o calloc é que a última função, além de alocar o espaço, também inicializa o mesmo com zeros. 9 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  10. Uso de Memória em C • Funções para alocação de memória • Função realloc Às vezes é necessário expandir uma área alocada. Para isto deve-se usar a função realloc. Deve-se passar para ela o ponteiro retornado pelo malloc e a indicação do novo tamanho. A realocação de memória pode resultar na troca de blocos na memória. 10 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  11. Uso de Memória em C • Funções para alocação de memória • Função free - Quando não se deseja mais uma área alocada, deve-se liberá-la através da função free. Deve ser passado para a função o endereço, que se deseja liberar, que foi devolvido quando a alocação da memória ocorreu. 11 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  12. Declaração de Vetores • Ocorre da mesma forma que a declaração de uma variavel simples • Tipo nome_variavel[no. De elementos] OU • Int notas[4]; • Tipo – Tipo de dados de cada um dos elementos do vetor • Nome_variavel – Indica o Nome pelo qual o vetor sera chamado. • No. De elementos – Valor constante que indica quantos elementos tem o vetor. • Um vetor pode conter elementos de qualquer tipo de dadaos, mas os elementos são todos do mesmo tipo definido na declaração do vetor. 12 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  13. Declaração de Vetores • Carga inicial – como as variaveis contem valores aleatorios. • É possivel iniciar automaticamente todos os elementos de um vetor : • Tipo var[n] = {valor1,valor2,valor3,...valorn}; • Ex. de prog. Para leitura de salarios: 13 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  14. Matrizes e vetores Multidimensionais • A declaração de um vetor com n dimensões é realizada da seguinte maneira: • Tipo vetor[dim1] [dim2] [...] [dimn] • Ex. de vetor para implementar o jogo da velha usando um vetor de duas dimensões: • Constantes – Nome correspondente a um valor fixo (não se pode alterar ao longo da execução do programa. • Const tipo simbolo = valor ou • #define simbolo valor 14 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  15. Passagem de Vetores para Funções • Usado para passagem de vários parâmetros/dados para função – ex. função de inicialização de vetor com 10 posições Main() { int v[10]; inic1(v) } void inic1(int s[10]) { ... } 15 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  16. Passagem de Vetores para Funções • Dentro de uma função não é possível saber o tamanho do vetor passado pelo programa, por isso a necessidade de especificar o tamanho. • Suponhamos ter a intenção de iniciar os vetores V com 10 posições e X com 20 posições com o valor zero em todas as posições, por terem dimensões diferentes seria necessário funções distintas para inicializar, uma com 10 e outra com 20 16 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  17. Passagem de Vetores para Funções • A invocação dessas funções ficaria assim: Main() { int v[10]; int x[20]; inic1(v); inic2(x); } 17 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  18. Passagem de Vetores para Funções • A invocação dessas funções ficaria assim: Main() { int v[10]; int x[20]; inic1(v); inic2(x); } • As duas funções podem ser mudadas por uma única que inicie qualquer vetor de inteiros com o valor 0 independente das dimensões, para C não interessa qual dimensão do vetor que é passado a uma função, apenas o tipo do elemento interessa. 18 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  19. Passagem de Vetores para Funções 19 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  20. Matrizes e vetores Multidimensionais • A escrita de programas deve ser realizada de forma que uma pequena alteração não provoque grandes transformações no código dos mesmos, vejamos o seguinte programa : 20 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  21. Matrizes e vetores Multidimensionais • O programa funcionaria para um vetor de 10 elementos, se fosse urgente usa-lo com 25 posições, seria necessario alterar todas as ocorrências do numero 10 para 25 21 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  22. Matrizes e vetores Multidimensionais • A solução esta no uso de constantes que uma vez alteradas propagam o novo valor para todas as ocorrências. • Devem ser declaradas fora da função para serem visíveis ao longo de todo o programa. • Pode ser declarada de duas maneiras distintas: • Const tipo simbolo = valor • #define simbolo valor 22 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  23. Matrizes e vetores Multidimensionais • Constantes • Diferenças entre const e #define. • Uma constante definida com const existe fisicamente em uma determinada posição de memória. • Uma constante definida com #define não existe fisicamente na memória, sendo seu valor substituido ao longo do programa na fase de pré processamento (antes da compilação) • Const faz parte das palavras reservadas da linguagem C • #define é uma diretiva que indica ao pré-processador que o simbolo que a segue vai ficar com o valor que aparece depois do simbolo, antes de compilar o pré-processdor subtitui o simbolo pelo valor definido. • Constante definida com const fica com o tipo de dado indicado na definição enquanto que se usar #define o tipo resulta da expressão que aparece no componente valor. • Como #define não faz parte da ling. C não precisa de ; no final 23 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  24. Matrizes e vetores Multidimensionais • A Passagen de Vetores com mais de uma dimensão é realizada indicando no cabeçalho da função obrigatoriamente o numero de elementos de cada uma das dimensões n-1 a direita, apenas a dimensão mais a esquerda pode ser omitida colocando-se um asterisco * ou apenas [ ]. 24 05/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

  25. Bibliografia 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

More Related