Baixe o app para aproveitar ainda mais
Prévia do material em texto
Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica COMPUTAÇÃO BÁSICA Matrizes Prof. Bruno Macchiavello (bruno@cic.unb.br) Universidade de Brasília – UnB Instituto de Ciências Exatas – IE Departamento de Ciência da Computação – CIC Prof. Bruno Macchiavello 1 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Matrizes • Ao igual que os vetores as matrizes são estruturas de dados homogêneos (dados do mesmo tipo). • A idéia também agrupar dados do mesmo tipo com um mesmo identificador, e acessar cada dado a partir do índice. • Na verdade o vetor é uma matriz, chamada de matriz unidimensional. Prof. Bruno Macchiavello 2 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Matrizes • Lembrado o vetor: . . . 0 1 2 N-2 N-1 Conteúdo do vetor • Podemos armazenar vários dados do mesmo tipo, num mesmo vetor. Cada dado é armazenado numa posição indicada pelo seu índice i. Exemplo: Vetor[0], Vetor[5], etc. Como o vetor possui somente UM índice, então ele tem UMA dimensão. Prof. Bruno Macchiavello 3 0 1 2 N-2 N-1 Índice ou posição Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Matrizes • Porém, muitas vezes é útil ter mais de uma dimensão. Por exemplo, ter um vetor de vetores, ou seja, uma matriz de DUAS dimensões. . . .0 0 1 2 N-1 Esta matriz tem M vetores Prof. Bruno Macchiavello 4 . . . . . . . . . . . . . . . . . . . . . . . . 1 2 M-1 Esta matriz tem M vetores de N posições. Ou simplesmente é uma matriz MxN. Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Matrizes • Para ter aceso a cada elemento da matriz devemos indicar o índice de cada dimensão: Matriz[i][j] Prof. Bruno Macchiavello 5 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Matrizes 10 8 5 1 5 7 7 7 8 0 0 9 Notas = • Exemplo: O elemento Notas[0][0] representa o dado de valor 10, o elemento Notas[2][3] representa o dado de valor 9. (note que começamos a contagem a partir de 0, como em vetores). Prof. Bruno Macchiavello 6 8 0 0 9 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo Exemplo: Faça um algoritmo que leia uma matriz 5x5 inserida pelo usuário. Algoritmo LeituraMAT Variáveis i, j : inteiro MAT : matriz[5][5] de inteiros Teste de Mesa i j 0 0 leia(matriz[0][0]) 0 1 leia(matriz[0][1]) 0 2 leia(matriz[0][2]) 0 3 leia(matriz[0][3]) 0 4 leia(matriz[0][4]) Prof. Bruno Macchiavello 7 MAT : matriz[5][5] de inteiros Início Para i = 0 até 4 faça Para j = 0 até 4 faça Escreva ("Digite o elemento “,i+1, j+1, “ da matriz: ”) Leia(MAT[i][j]) FimPara FimPara Fim 0 4 leia(matriz[0][4]) 1 0 leia(matriz[1][0]) 1 1 leia(matriz[1][1]) 1 2 leia(matriz[1][2]) 1 3 leia(matriz[1][3]) ... … 4 3 leia(matriz[4][3]) 4 4 leia(matriz[4][4]) Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo 2 Exemplo: Faça um algoritmo que leia uma matriz MxN inserida pelo usuário, calcula a soma e a média dos elementos. Algoritmo SomaEMedia Variáveis i, j, M, N, soma : inteiro media : real MAT : matriz[100][100] de inteiros Início Prof. Bruno Macchiavello 8 Início Leia(M,N); Para i ← 0 até M-1 faça Para j ← 0 até N-1 faça Leia(MAT[i][j]) FimPara FimPara soma ← 0 Para i ← 0 até M-1 faça Para j = 0 até N-1 faça soma ← soma + MAT[i][j] FimPara FimPara media←(soma/(M*N)) Escreva(“Soma = ",soma, “Media= ”,media); Fim Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exemplo Exemplo: Programa que lê uma matriz 5x5 inserida pelo usuário e a imprime na tela. #include <stdio.h> int main () { int i, j; int MAT[5][5]; for (i=0; i<5; i++) { Prof. Bruno Macchiavello 9 for (i=0; i<5; i++) { for (j=0; j<5; j++) { scanf(“%d”,&MAT[i][j]); } } for (i=0; i<5; i++) { for (j=0; j<5; j++) { printf(“%d\t”,MAT[i][j]); } printf(“\n”); } getchar(); return 0; } Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Observações • No exemplo anterior, note o “\t” que é colocado após o %d. O que ele faz é tabular tudo o que vier em seguida naquela mesma linha, mantendo os números alinhados mesmo que possuam números diferentes de casas. • Observe também que há um “\n” inserido após cada for da variávelj. Isso ocorre para colocar uma nova linha a cada vez que o i é incrementado, fazendo a matriz ter cara de matriz mesmo (o i realmente vai representar uma nova linha).realmente vai representar uma nova linha). • Por fim, repare que há ainda a necessidade de se usar o símbolo “&” antes do nome da variável a ser lida, para representar o endereço de memória na qual ela se encontra. • Caso, seja necesario ler um string é armazenar ele numa matriz, ao fazer a leitura somente é necesario indicar a posição da primeira dimensão. Exemplo: se foi declarado uma matriz do tipo “char literal[3][10]”, significa que vao poder ser armazenados 3 strings cada um no máximo de 10 caracteres. Para ler o primero string deve-se fazer por exemplo “scanf(“%s”, literal[0])” Prof. Bruno Macchiavello 10 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Matrizes • Uma matriz pode ter quantas dimensões seja necessário. • Por exemplo uma matriz de 3 dimensões seria Matriz[i][j][k] • Porém, não é bom utilizar matrizes de MUITAS dimensões, é melhor organizar os dados de outras formas como por exemplo utilizando registros. Prof. Bruno Macchiavello 11 Departamento de Ciência da ComputaçãoDepartamento de Ciência da Computação Universidade Universidade de de BrasíliaBrasília Computação BásicaComputação Básica Exercícios 1. Escrever um algoritmo que leia uma matriz 3x3 e calcule seu determinante, mostrando o resultado na tela. O determinante de uma matriz 3x3 matrix é calculado através de suas diagonais. Prof. Bruno Macchiavello 12 2. Faça um programa lê uma matriz A 7 x 7 de números e cria 2 vetores ML(7) e MC(7), que contenham, respectivamente, o maior elemento de cada uma das linhas e o menor elemento de cada uma das colunas. Escrever a matriz A e os vetores ML e MC.
Compartilhar