Buscar

Aula 9 -Vetores e Matrizes em C

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

Continue navegando