Matrizes

O objetivo dessa unidade é apresentar ao aluno o conteúdo relacionado à Matrizes. Será feita uma abordagem focando na linguagem C e também em alguns algoritmos para ajudar na compreensão

Matrizes

Uma matriz é uma coleção de variáveis de mesmo tipo, com mesmo nome e alocadas sequencialmente na memória. Uma vez tendo o mesmo nome, o que as distingue são índices que referenciam sua localização dentro da estrutura.

As matrizes podem ser tanto unidimensionais (vetores) como multidimensionais.

Como já trabalhamos com vetores, daremos atenção as matrizes com duas ou mais dimensões.

Matriz bidimensional

Declaração

A declaração de uma matriz bidimensional é feita da seguinte maneira:

Onde:

  • tipo é o tipo de dado que será armazenado na matriz;
  • linha e coluna correspondem a quantidade de linhas e colunas da matriz;
  • nome é o nome da variável do tipo matriz.

Dessa forma temos, por exemplo:

Declaração em pseudocódigo
Declaração em C

Ema ambos os casos declaramos uma matriz de números inteiros (G) de duas linhas e duas colunas, e uma matriz de números reais (num) de três linhas e 4 colunas. Também foram declaradas duas matrizes de caracteres(nome): uma de vinte linhas e dez colunas em C e outra de dez linhas e vinte colunas em pseudocódigo.

Na declaração de uma matriz podemos omitir seu tamanho , desde que quando seja feita a declaração, já sejam atribuídos seus valores, como no exemplo abaixo:

Neste caso, automaticamente os índices 2 e 4 são atribuídos, respectivamente, à linha e à coluna da matriz num.

Exemplo de matriz

Em pseudocódigo

Em pseudocódigo, as posições da linha e coluna de uma matriz começam em 1 (um) e vão até o tamanho definido na declaração.

Em C

Em C as posições da linha e coluna de uma matriz começam em 0 (zero) e vão até o tamanho definido na declaração menos 1(um).

Atribuindo valores a matriz

Para atribuir valores a uma matriz procedemos da seguinte maneira:

Em pseudocódigo

Utilizamos o comando de atribuição como por exemplo:

Em C

Podemos fazer de duas maneiras:

A primeira é simplesmente atribuir valores à matriz na posição desejada, como por exemplo:

E a segunda seria após a declaração da matriz, colocando-se um sinal de igual (=) seguido de todos os valores separados por vírgula entre colchetes. Exemplo:

Neste caso, durante a declaração, é possível omitir o número correspondente ao tamanho das linhas e colunas da matriz, porém a quantidade de valores que serão atribuídos será igual a quantidade de linhas vezes a quantidade de colunas (como já havia sido dito), já ao se declarar a quantidade de linhas e colunas não é obrigatório atribuir valores a todas as posições da matriz, quando se for inicializá-la dessa maneira.

Carregando uma matriz

Para carregar uma matriz ou parte dela com valores, ou seja, preenchê-la com valores digitados, procedemos da seguinte maneira:

Em pseudocódigo

Utilizamos a estrutura de repetição PARA duas vezes, a primeira vez utilizaremos para percorrer as linhas e a segunda as colunas (não importa se inverter). Com isso a matriz será percorrida e a cada iteração o comando LEIA solicitará a entrada do dado via teclado.

Em C

Utilizamos a estrutura de repetição FOR duas vezes, a primeira vez utilizaremos para percorrer as linhas e a segunda as colunas (não importa se inverter). Com isso a matriz será percorrida e a cada iteração o comando PRINTF solicitará a entrada do dado via teclado.

Em ambos os casos poderia se fazer um comando de entrada de dados via teclado para cada posição da matriz, porém isso tornaria o código extenso e levaria mais tempo, tornando-se inviável.

Mostrando os elementos da matriz

Em pseudocódigo

Utilizamos a estrutura de repetição PARA duas vezes, a primeira vez utilizaremos para percorrer as linhas e a segunda as colunas (não importa se inverter). Com isso a matriz será percorrida e a cada iteração o comando ESCREVA mostrará o valor da matriz correspondente à posição dos contadores.

Em C

Utilizamos a estrutura de repetição FOR duas vezes, a primeira vez utilizaremos para percorrer as linhas e a segunda as colunas (não importa se inverter). Com isso a matriz será percorrida e a cada iteração o comando PRINTF mostrará o valor da matriz correspondente à posição dos contadores.

Em ambos os casos poderia se fazer um comando de entrada de dados via teclado para cada posição da matriz, porém isso tornaria o código extenso e levaria mais tempo, tornando-se inviável.

Exemplos

Faça um programa que execute as seguintes etapas:

  • Digite 6 números inteiros e os armazene em uma matriz;
  • Verifique qual desses números é maior;
  • Imprima os elementos da matriz e, em seguida, o seu maior elemento.
Solução em pseudocódigo
Solução em C
#include < stdio.h > 
int main(){
    /*declaração das variáveis*/
    int matriz[3][2];
    int indice1, indice2, maior;
    printf("Escreva 6 numeros inteiros: \n");
    /*utilização do for para percorrer as linhas da matriz do índice 0 até 2 */
    for(indice1 = 0; indice1 < 3; indice1++){
            /*utilização do for para percorrer as colunas da matriz do índice 0 até 1 */
            for(indice2 = 0; indice2 < 2; indice2++)
            /*a posição correspondente do vetor recebe o valor digitado*/
            scanf("%d", &matriz[indice1][indice2] );
    }
    maior = 0;
    /*busca pela matriz pelo maior número, a váriavel maior armazenará o maior elemento*/
    for(indice1 = 0; indice1 < 3; indice1++){
           for(indice2 = 0; indice2 < 2; indice2++){
                if(maior < matriz[indice1][indice2])
                    maior = matriz[indice1][indice2];
            }
    }
    printf("Minha matriz:\n");
    /*impressão da matriz*/
    for(indice1 = 0; indice1 < 3; indice1++){
         printf("\n");
            for(indice2 = 0; indice2 < 2; indice2++){
                printf("\t %d ", matriz[indice1][indice2]);
            }
    }
    /*impressão do maior número*/
    printf("Maior numero: %d ", maior);
    return 0;
}				

Matrizes multidimensionais

Em C é possível utilizar matrizes de três ou mais dimensões, porém isso não acontece com frequância, pois requer uma grande quantidade de memória e os acessos aos seus elementos são mais lentos. Por esses motivos essas matrizes não serão abordados com detalhes.

Declaração

A declaração de uma matriz multidiomensional é feita da seguinte maneira:

Onde:

  • tipo é o tipo de dado que será armazenado na matriz;
  • E os tamanhos correspondem ao tamanho de cada dimensão da matriz;

Exemplo em C de carregamento e impressão utilizando uma matriz com 3 dimensões:

Video Explicativo - Matrizes

Exercícios