A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 5 1 02/08/2011 Professor Leomir J. Borba-

Apresentações semelhantes


Apresentação em tema: "TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 5 1 02/08/2011 Professor Leomir J. Borba-"— Transcrição da apresentação:

1 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 5 1 02/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –http://professorleomir.wordpress.com

2 Agenda  Matrizes  Unidimensionais  Multidimensionais  Declaração de Vetores 2 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] [...] [dim n ]  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 25 BIBLIOGRAFIA BÁSICA 1 DAMAS, Luís. Linguagem C. 10ª Edição. São Paulo: LTC, 2007. 2 FEOFILOFF, P. Algoritmos de Janeiro: Elsevier, 2009. 3 MIZRAHI, Victorine Viviane. Treinamento 2ª Edição. São Paulo: Pearson Education, 2008. 4 ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi. Fundamentos da Programação de Computadores. 2ª Edição. São Paulo: Pearson Education, 2007. BIBLIOGRAFIA COMPLEMENTAR 1 DASGUPTA, Sanjoy; UMESH, Vazirani, PAPADIMITRIOU Christos, Algoritmos. 1ª Edição. São Paulo: McGraw-Hill, 2009. 2 LAUREANO, M. Estrutura de Dados com Algoritmos e C. 1ª Edição. São Paulo: Brasport, 2008. 3 PEREIRA, Silvio do Lago. Estruturas de Dados Fundamentais – Conceitos e Aplicações. 7ª Edição. São Paulo: Érica, 2008. 4 SOUZA, Marco Antonio Furlan et al. Algoritmos e Lógica de Programação. São Paulo: Cengage Learning, 2008. 5 ZIVIANI, Nívio. Projeto de Algoritmos com Implementações em Pascal e C. 3ª Edição. São Paulo: Cengage Learning, 2010. RECURSOS DIDÁTICOS 1TV/VÍDEO/DVD4 LABORATÓRIO – Software “Turbo C” ou “Dev C++” 2DATASHOW5Aula expositiva em laboratório 3RETRO-PROJETOR6Exercícios em laboratório


Carregar ppt "TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS LINGUAGEM DE PROGRAMAÇÃO I Aula 5 1 02/08/2011 Professor Leomir J. Borba-"

Apresentações semelhantes


Anúncios Google