LA – Ling C – Aula 07B – Matrizes e Exercicios

Matrizes

Matrizes também possuem o mesmo conceito de vetores, porém com duas ou mais dimensões (mais comuns são de 2 ou 3 dimensões). Apesar de no nosso mundo real ser difícil de imaginar 4 ou mais dimensões, pode ser construído esse conceito fácilmente em matrizes na linguagem C.
Como as mesmas características de um vetor, as matrizes precisam ter um único tipo para todos os seus elementos, além de serem acessadas por índices, que iniciam do número 0.

Um exemplo bem simples de matriz seria imaginar o jogo da velha, onde uma matriz é composta or 3 linhas e 3 colunas, (iniciando do índice 0 ao 2, tanto para a linha como para coluna)

Matriz sem valores        Matriz com valores
    0   1   2                 0   1   2
  |---|---|---|             |---|---|---|  
0 |   |   |   |           0 | 5 | 7 | 2 |
  |---|---|---|             |---|---|---|
1 |   |   |   |           1 | 4 | 8 | 1 |
  |---|---|---|             |---|---|---|
2 |   |   |   |           2 | 6 | 3 | 5 |   
  |---|---|---|             |---|---|---|

Nos exemplos mostrados acima temos uma matriz 3 por 3, suportanto um total de 9 elementos.

Na declaração da matriz bidimencional, na linguagem C primeiramente, igual a declaração de variáveis, colocamos o tipo da matriz, o nome da matriz e entre colchetes a quantidade de linhas e posteriormente entre colchetes a quantidade de colunas.

Portando na seguinte declaração, teríamos o seguinte desenho (para facilitar o entendimento)

char matriz[4][3];
       0        1       2
  |--------|--------|--------|
0 |        |        |        |
  |--------|--------|--------|
1 |        |        |        |
  |--------|--------|--------|
2 |        |        |        |
  |--------|--------|--------|
3 |        |        |        |
  |--------|--------|--------|

Os endereços de acesso para atribuição e leitura de valores de uma matriz bidimencional, é representado pelo nome da variável, número da linha e pelo número da coluna (entre olchetes cada uma delas)

int matriz[4][3];
      0       1         2
  |--------|--------|--------|
0 | [0][0] | [0][1] | [0][2] |
  |--------|--------|--------|
1 | [1][0] | [1][1] | [1][2] |
  |--------|--------|--------|
2 | [2][0] | [2][1] | [2][2] |
  |--------|--------|--------|
3 | [3][0] | [3][1] | [3][2] |
  |--------|--------|--------|

Manipulando variáveis Matriz bidimencionais

A seguir, segue exemplo de código que manipula a atribuição e leitura de valores das posições da matriz bidimencional:exemplo_matrizBidimencional01

Perceba que o índie da matriz bidimencional é dada pelos valores [linha][coluna], que são números inteiros. Facilmente podemos pegar o código anterior e substituir por variáveis, como:

exemplo_matrizBidimencional02_Parte01

exemplo_matrizBidimencional02_Parte02

Percaba que o tamanho das linhas e colunas da matriz, e as variáveis de linhas e colunas foram todas substituidas por variáveis.

Sendo assim, seria possível utilizarmos rotinas de laço para mais facilmente manipular matrizes, como o exemplo abaixo:

exemplo_matrizBidimencional03

Inicialização de matrizes bidimencionais

Já na criação de uma matriz bidimencional, é possível iniciá-la através na criação, assim como vetores.

exemplo_InicializacaoMatrizBidimencional

Manipulando multidimencionais

A linguagem c permite também utilizar matriz de três ou mais dimensões, porém não é freqüentemente usada, pois requer uma quantidade grande de memória e os acessos aos seus elementos são mais lentos. Por esses motivos este tipo de matrizes não serão abordados com detalhes

Declaração de matrizes multidimensionais:

Tipo nome [tamanho1][tamanho2][tamanho3]….[tamanho n]

Matrizes não-dimensionadas

As matrizes não-dimensionais são aquelas cujo tamanho não é especificado. Nesse caso o compilador cria uma matriz grande para conter todos os seus elementos. As declarações de matrizes unidimensionais com essa característica podem ser vista no programa abaixo:

exemplo_matrizNaoDimencionado

Observe na saída que os vetores (vet1 e vet2) declarados de forma diferentes obtiveram os mesmo efeitos. A diferença é que no vetor vet2 não foi especificado a quantidades de caracteres (vetor não-dimensionado).

O vetor abaixo foi declarado com o seu tamanho especificado

Estou aprendendo a programar em C!!!

E este outro foi declarado com o seu tamanho nao especificado

Estou aprendendo a programar em C!!!

As matrizes multidimensionais não-dimensionadas devem ter apenas seu primeiro índice não especificado, os outros devem ser indicados para que o compilador possa indexar de forma correta as matrizes. Desta forma pode-se criar tabelas com diversos tamanhos, sem a necessidade de mudar as dimensões da matriz.

 

Percorrendo Uma Matriz Tridimensional

No item anterior foi visto como percorrer uma matriz bidimensional usando duas variáveis chamadas linha e coluna. O programa a seguir usa as variáveis linhacoluna e tabela para percorrer uma matriz tridimensional:

exemplo_matrizTridimencional

Exercícios Extra-Classe

Treinamento em Código 1

exercicio_treinamentoMatrizes01

Treinamento em Código 2

exercicio_treinamentoMatrizes02

Treinamento em Código 3

exercicio_treinamentoMatrizes03

Treinamento em Código 4

exercicio_treinamentoMatrizes04

Exercícios:

  1. Declare uma matriz de inteiros de 3 linhas por 3 colunas. Faça a leitura de 9 elementos inteiros guardando cada elemento em uma posição da matriz e mostre o maior e menor número; Obs: Verificar existência de números já existentes;
  2. Declare uma matriz de inteiros de 4 linhas por 3 colunas. Faca a leitura de 12 elementos inteiros guardando cada elemento em uma posição da matriz e mostre somente os números impares;
  3. Declare uma matriz de inteiros de 4 linhas por 3 colunas. Faca a leitura de 12 elementos inteiros guardando cada elemento em uma posição da matriz e mostre somente a posição da matriz onde estão os números pares;
  4. Declare uma matriz de inteiros de 5 linhas por 5 colunas. Faça o preenchimento com números aleatórios de 25 elementos inteiros (de 0 a 100) guardando cada elemento em uma posição da matriz e mostre a soma de todos os números ímpares;
  5. Declare uma matriz de inteiros de 3 linhas por 3 colunas. Faça a leitura de 9 elementos inteiros guardando cada elemento em uma posição da matriz e mostre os elementos digitados e outra matriz idêntica a criada, com a multiplicação de cada elemento por 3;
  6. Declare uma matriz de inteiros de 6 linhas por 6 colunas. Faça o preenchimento com números aleatórios de 36 elementos inteiros (de 0 a 100) guardando cada elemento em uma posição da matriz a quantidade de números existentes na matriz entre 50 e 70;
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s