Matriz(vetor Multidimensional) Matriz segundo Laureano(2008) é...um arranjo bidimensional ou multidimensional de alocação estática e seqüencial., ou seja, uma estrutura de várias dimensões, que mantém sua posição na memória durante a execução do programa, e assim como no vetor é armazenado em sequência na memória. Para declarar uma matriz é necessário informar o tipo, nome e quantidade e tamanho de dimensões. int a[j][r]
Declarando um vetor definindo dois índices assim formando um vetor bidimensional, com linhas e colunas: int a [3][5]; Acima é representado a forma lógica de uma matriz onde o espaço escurecido pode ser referenciada como a[1][3]. Em uma matriz podemos perceber a diferença do armazenamento lógico e físico pois num vetor bidimensional podemos imaginar os dados sendo armazenados em colunas e linhas, porém na memória do computador isso não acontece ela é armazenada de forma sequencial. Exemplos:
Executando o código a cima: Repare que embora os valore 12 e 13 estejam em diferentes linhas da matriz a posição da memória continua em sequência. Vamos percorrer o laço for lá em cima para entender o que ocorre no preenchimento da matriz, e tentar responder o porquê de usar dois laços for para percorrer a matriz. Vamos listar primeiro alguns pontos: relação de for e as dimensões das matrizes posição das matrizes tipo da matriz.
Laço for e as dimensões Cada laço for percorre uma dimensão da matriz, lembra do vetor onde se usa um laço for para percorrê lo? Então, aqui é a mesma coisa, porém cada for percorre uma dimensão da matriz. O vetor de certa forma é uma matriz porém ele pode possuir apenas uma linha diferente da matriz que pode ou não possuir apenas uma linha. Posição na matriz A posição da matriz se dá por números que indicam sua dimensão, ou seja para cada dimensão haverá um número indicando a posição em específico, por exemplo, numa matriz bidimensional teremos dois números para indicar as posições em cada uma das dimensões, em uma matriz de três teremos três assim por diante. Tipo da matriz O tipo da matriz pode ser qualquer um dos tipos primitivos ou ainda pode ser algum tipo composto, assim ele agirá conforme o tipo age separadamente, ou seja, as propriedade do tipo escolhido agirá sobre a matriz sem que ele perca suas próprias propriedades. Pode se até se dizer que a matriz é um vetor de vetor. Percorrendo a matriz manualmente Vamos começar fazendo um teste de mesa rapide com uma matriz de 2 por 2, é um programa que percorre a matriz e insere um número 1 em cada posição, apenas isso fácil não? Antes disso veja o código e cada linha comentada Código:
1. importando a biblioteca stdio.h 2. importando a biblioteca stdlib.h 3. linha vazia 4. declarando a função main 5. abrindo bloco de código da função main 6. declara uma matriz do tipo u=int coma as dimensões de duas linhas e duas colunas 7. linha vazia 8. usando comando for para percorrer as linhas, saiba que cada for indica uma dimensão respectivamente ou seja o primeiro for representam a primeira dimensão a segunda a segunda e assim por diante. Inicializa i(linha com 0; enquanto i menor que 2, ou seja, 1(lembrando que os vetores em C começam em 0);i é incrementado em 1. Abre bloco de código deste primeiro for.. for que percorre a linh, ou seja a segunda dimensão que obedece o mesmo comando que o primeiro for. Abre bloco de código do segundo for..atribui a posição ma matriz [i,j] o valor 1 11. fecha bloco de código do segundo for 12.fecha bloco de código do primeiro for 13.fecha bloco de código do main 14.linha vazia
Muito bem agora vamos para o teste de mesa: Linha Matriz[2][2] i j 6 8 0? 0 0 0 0 repare que como está no laço de repetição em vez de ir para a próxima linha voltou para o início do segundo for 0 1 0 1 0 2 Veja agora que o segundo laço de repetição saiu da sua condição e não há mais comando na linha seguinte, assim o primeiro for será executado novamente. Repetindo mais uma vez o processo
8 1 2 1 0 1 0 1 2 8 2 2 agora que os dois está fora das condições o programa acabou.