Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Técnicas de Programação Prof. Marcelo Cabral www.fundacaoredeam.com.br 2016 Algoritmos e Técnicas de Programação Tópicos da aula de Hoje: ❖ Vetores em C ❖Matrizes em C Algoritmos e Técnicas de Programação Vetores em C Algoritmos e Técnicas de Programação Sintaxe para declaração de vetores: tipo_do_vetor nome_do_vetor [tamanho]; Exemplo: #define tamanho 10 //definição realizada próxima as bibliotecas que equivale a uma constante int numeros[50] char numeros2[tamanho] Tipos de Vetores em C Algoritmos e Técnicas de Programação Vetores Ler cada elemento do vetor em Portugol: Lógica de Programação 0 1 2 3 4 2 5 10 20 50 Numeros: vetor [0..4] de inteiros para contador de 0 ate 4 passo 1 faca leia(numeros[contador]) fimpara Vetores Ler cada elemento do vetor em Portugol: Lógica de Programação 0 1 2 3 4 2 5 10 20 50 int numeros[5]; for(contador = 0;contador < 5;contador++){ scanf(“%d”,&numeros*contador+); } Vetores Exibir cada elemento do vetor em Portugol: Lógica de Programação 0 1 2 3 4 2 5 10 20 50 Numeros: vetor [0..4] de inteiros para contador de 0 ate 4 passo 1 faca escreval(numeros[contador]) fimpara Vetores Exibir cada elemento do vetor em C: Lógica de Programação 0 1 2 3 4 2 5 10 20 50 int numeros[5]; for(contador = 0;contador < 5;contador++){ printf(“%d\n”,numeros*contador+) } Algoritmos e Técnicas de Programação Vamos fazer exercícios!!! Matriz em Portugol - Exemplos Sintaxe: var notas: vetor [1..5,1..4] de real numeros: vetor[1..3,1..3] de inteiro Lógica de Programação Matriz em C - Exemplos Sintaxe: int notas[5][4] int numeros[3][3] Lógica de Programação Matrizes Ler cada elemento da matriz em Portugol: Lógica de Programação para contador1 de 0 ate 2 passo 1 faca Para contador2 de 0 ate 2 passo 1 faca leia(numeros[contador1][contador2]) Fimpara fimpara 4 10 13 5 18 3 22 45 90 Numeros: vetor [0..2,0..2] de inteiro Matrizes Ler cada elemento da matriz em C: Lógica de Programação for(contador1 = 0; contador1 < 3; contador1++){ for(contador2 = 0; contador2 < 3; contador2++){ scanf(“%d”,&numeros*contador1+*contador2+); } } 4 10 13 5 18 3 22 45 90 int numeros[3][3] Matrizes Exibir cada elemento da matriz em Portugol: Lógica de Programação para contador1 de 0 ate 2 passo 1 faca Para contador2 de 0 ate 2 passo 1 faca escreval(numeros[contador1][contador2]) Fimpara fimpara 4 10 13 5 18 3 22 45 90 Numeros: vetor [0..2,0..2] de inteiro Matrizes Exibir cada elemento da matriz em C: Lógica de Programação for(contador1 = 0; contador1 < 3; contador1++){ for(contador2 = 0; contador2 < 3; contador2 ++){ printf(“%d”,numeros*contador1+*contador2+); } } 4 10 13 5 18 3 22 45 90 int numeros[3][3] Algoritmos e Técnicas de Programação Vamos fazer ainda mais exercícios!!! Algoritmos e Técnicas de Programação Vamos aprender ainda mais !!! Endereço Definição: A memória RAM de qualquer computador é uma sequência de bytes. Cada byte armazena um de 256 possíveis valores. Os bytes são numerados sequencialmente. O número de um byte é o seu endereço (= address). Cada objeto na memória do computador ocupa um certo número de bytes consecutivos. Um char ocupa 1 byte. Um int ocupa 4 bytes em alguns computadores e 8 em outros (o número exato é dado pela expressão sizeof (int)). Um double ocupa usualmente 8 bytes (o número exato é dado pela expressão sizeof (double)). Lógica de Programação Ponteiro Definição: Um ponteiro (= apontador = pointer) é um tipo especial de variável que armazena endereços. Um ponteiro pode ter o valor especial NULL que não é endereço de lugar algum. A constante NULL está definida na interface stdlib.h e seu valor é 0 na maioria dos computadores. Lógica de Programação Ponteiro Se um ponteiro p armazena o endereço de uma variável i, podemos dizer "p aponta para i" ou "p é o endereço de i". (Em termos um pouco mais abstratos, diz-se que p é uma referência à variável i.) Se um ponteiro p tem valor diferente de NULL então *p é o valor do objeto apontado por p. (Não confunda esse uso de "*" com o operador de multiplicação!) Por exemplo, se i é uma variável e p é &i então dizer "*p" é o mesmo que dizer "i". Lógica de Programação Alocação Dinâmica Diferenças entre alocação estática e dinâmica: Alocação estática é necessário informar o tamanho que a variável ocupará na memória ao declarar ela e esse tamanho é invariável. Ex: int numeros[100]; Alocação dinâmica é necessário informar que a variável se trata de um ponteiro e utilizar as funções de alocação para definir seu tamanho, sendo que o tamanho pode ser alterado conforme a necessidade. Ex: int *numeros; Lógica de Programação Alocação Dinâmica – Expressões especiais Sizeof: função que transforma em bytes o tipo de variável informada. Void: tipo nulo de variável ou função Cast: conversão ou transformação de um tipo de variável em outro. Ex: int numero = (int*) variavel_x; Malloc: função que aloca um tamanho para uma variável. Requer um parâmetro: o espaço total em bytes de memoria necessário para aquela variável. Ex: Utilizando-se um vetor de 10 elementos int *vetor; vetor = (int*) malloc(10*sizeof(int)); Lógica de Programação Alocação Dinâmica – Expressões especiais Calloc: função que aloca um tamanho para uma variável. Requer dois parâmetros: o número de posições de memória e o tamanho em bytes de cada posição. Ex: Utilizando-se um vetor de 10 elementos int *vetor; vetor = (int*) calloc(10,sizeof(int)); Lógica de Programação Alocação Dinâmica – Expressões especiais Realloc: Para possibilitar a redução ou o aumento na quantidade de memória alocada anteriormente é utilizada a função realloc que exige dois parâmetros: um ponteiro para a variável em questão e o novo tamanho em bytes da variável. Ex: Utilizando-se um vetor de 10 elementos e aumentando para 15 int *vetor = (int*) malloc(10*sizeof(int)); vetor = (int*) realloc(vetor,15*sizeof(int)); Lógica de Programação Alocação Dinâmica – Matrizes Definição: Para realizar a alocação dinâmica de matrizes é necessário alocar cada vetor presente no mesmo, ou seja, é necessário alocar cada linha e coluna presente na matriz. Lógica de Programação Alocação Dinâmica – Matrizes Sintaxe: Utilizando uma matriz 3x3 int **matriz, i,j; matriz = (int**) calloc(3,sizeof(int *)); for (i = 0; i < 3; i++){ m[i] = (int*) malloc(3 * sizeof(int)); for (j = 0; j < 3; j++){ m[i][j] = 0; } } Lógica de Programação
Compartilhar