Animados para a próxima aula?
É preciso, como já disse, muita atenção de vocês em três aulas: Estruturas de Repetição, Vetores e Matrizes.
Hoje falaremos das matrizes, que nada mais são do que arrays bidimensionais. Essas matrizes são as mesmas que aprendemos na escola, em Matemática.
MATRIZES
Matrizes são arrays que necessitam de dois índices para individualizar um elemento do conjunto. O primeiro índice representa as linhas e o segundo as colunas. Para definirmos uma matriz, utilizamos a seguinte sintaxe:
CODE
identificador : array[i1_inicial..i1_final, i2_inicial.. i2_final] de tipo;
onde,
identificador = nome de identificador válido
i1_inicial = limite inferior do intervalo de variação do primeiro índice
i1_final = limite superior do intervalo de variação do primeiro índice
i2_inicial = limite inferior do intervalo de variação do segundo índice
i2_final = limite superior do intervalo de variação do segundo índice
tipo = tipo primitivo dos elementos do array
Exemplo: Declarar uma matriz de 4 linhas por 3 colunas de elementos do tipo real.
CODE
matriz : array[0..3, 0..2] de real;
Dessa maneira, se quisermos inserir valores nos elementos da matriz, faremos assim:
CODE
matriz[0, 2] := 2.51;
matriz[1, 0] := 10;
matriz[2, 1] := 5.17;
matriz[3, 2] := 7.98;
Visualização didática:
CODE
M = | | |2.51|
| 10 | | |
| |5.17| |
| | |7.98|
Utilizando Estruturas de Repetição e Matrizes
Assim como nos vetores, as matrizes, em princípio, têm número fixo de elementos, ou seja, têm número fixo de linhas e colunas. O número de elementos de uma matriz é determinado pelo produto do número de linhas e colunas.
Por esse motivo, indico o uso de estruturas de repetição incondicionais, quando trabalhamos com matrizes.
Exemplo de escrita de dados em um array de 5 linhas e 3 colunas.
CODE
INICIO
nossa_matriz : array[0..4, 0..2] de inteiro;
x, y : inteiro;
PARA x DE 0 ATÉ 5 PASSO 1 FAÇA
PARA y DE 0 ATÉ 3 PASSO 1 FAÇA
nossa_matriz[x, y] := x + y;
FIM PARA
FIM PARA
FIM
Esta escrita resultará numa matriz como segue:
CODE
| 0 | 1 | 2 |
| 1 | 2 | 3 |
| 2 | 3 | 4 |
| 3 | 4 | 5 |
| 4 | 5 | 6 |
Exemplo de exibição dos elementos de um array de 5 linhas e 3 colunas. Leve em consideração que estaremos exibindo os elementos da matriz após a escrita do exemplo anterior.
CODE
INICIO
nossa_matriz : array[0..4, 0..2] de inteiro;
x, y : inteiro;
PARA x DE 0 ATÉ 5 PASSO 1 FAÇA
PARA y DE 0 ATÉ 3 PASSO 1 FAÇA
MOSTRE nossa_matriz[x, y];
FIM PARA
FIM PARA
FIM
A exibição resultará neste resultado:
CODE
0
1
2
1
2
3
2
3
4
3
4
5
4
5
6
Nada melhor para aprendermos do que exercitarmos, certo?
Exercícios
1. Crie um algoritmo que escreva uma matriz conforme abaixo.
CODE
| 0 | 2 | 4 |
| 2 | 4 | 6 |
| 4 | 6 | 8 |
2. Dada uma matriz de inteiros composta por 5 linhas e 4 colunas, construa um algoritmo que leia um inteiro digitado pelo usuário e informe se o número existe ou não na matriz.
3. Como ficarão preenchidos os arranjos a partir do algoritmo abaixo?
CODE
INICIO
matriz : array[0..5, 0..5] de inteiro;
vet : array[0..9] de inteiro;
i, j : inteiro;
PARA i DE 0 ATÉ 5 PASSO 1 FAÇA
PARA j DE 0 ATÉ 5 PASSO 1 FAÇA
matriz[i, j] := i * j + 10;
FIM PARA
vet[i] := i * j;
FIM PARA
FIM
Desafio
Este desafio é importante pois retrata basicamente o funcionamento de um sistema de login.
1. Dada uma matriz de caracteres composta por 5 linhas e 2 colunas, construa um algoritmo que leia um nome de cliente, verifique se existe na primeira coluna da matriz e, caso exista, retorne o endereço deste cliente. O endereço estará na segunda coluna da matriz. No exemplo de matriz abaixo, caso o usuário entre com o nome Pedro, o algoritmo deve retornar o endereço "Rua A, 3". Caso o usuário entre com o nome João, o algoritmo deve retornar "Cliente não encontrado".
CODE
|Beto |Av. 28 de Março, 567|
|Carolina |Rua das Flores, 111 |
|Pedro |Rua A, 3 |
|Augusto |Rua Brasil Hexa, 06 |
|Maria |Rua das Dores, 953 |
Comentários:
dupa31 disse:
| 0 | 2 | 4 |
| 2 | 4 | 6 |
| 4 | 6 | 8 |
dupa31_matriz : array[0..2, 0..4] de inteiro;
D, P : inteiro;
PARA d DE 0 ATÉ 3 PASSO 1 FAÇA
PARA p DE 0 ATÉ 3 PASSO 1 FAÇA
nossa_matriz[D, P] := d + p;
FIM PARA
FIM PARA
FIM
tmferreira disse:
1. A matriz tem a mesma quantidade de linhas e colunas. Ela é uma matriz 3 X 3. Corrija a declaração da matriz.
2. Esse não é erro, mas um ponto de atenção: existem linguagens de programação que diferenciam maiúsculas de minúsculas nos nomes de variáveis. Enão nem sempre D = d e P = p.
3. Não foi declarada a variável nossa_matriz.
4. O arranjo resultante não será igual ao do problema.
Em caso de dúvida é só perguntar.
Thiago Rodrigues disse:
nossa_matriz : array[0..2, 0..2] de inteiro;
x, y : inteiro;
PARA x DE 0 ATÉ 3 PASSO 1 FAÇA
PARA y DE 0 ATÉ 3 PASSO 1 FAÇA
MOSTRE nossa_matriz[x, y] := (x + y) * 2;
FIM PARA
FIM PARA
FIM
No começo desta aula me confundi um pouco, na escola aprendemos matriz desta maneira Matriz A23 por exemplo, já em programação vemos Matriz A12, pois conta-se o zero, hehe. Mas já me adaptei.
2. Dada uma matriz de inteiros composta por 5 linhas e 4 colunas, construa um algoritmo que leia um inteiro digitado pelo usuário e informe se o número existe ou não na matriz.
matriz : array[0..4, 0..3] de inteiro;
x, y, t, s, teste, numero : inteiro;
PARA x DE 0 ATÉ 5 PASSO 1 FAÇA
PARA y DE 0 ATÉ 4 PASSO 1 FAÇA
// insere numeros na matriz
nossa_matriz[x, y] := x + y;
FIM PARA
FIM PARA
ESCREVA("Digite um número");
LEIA(numero);
PARA t DE 0 ATÉ 5 PASSO 1 FAÇA
PARA s DE 0 ATÉ 4 FAÇA
SE numero = matriz[t,s] ENTÃO
teste:= 1;
SENÂO
teste:= 0;
FIM PARA
FIM PARA
SE (teste => 1) ENTÃO
ESCREVA("O número digitado existe na matriz");
SE (teste = 0) ENTÃO
ESCREVA("O número digitado não existe na matriz");
FIM
tmferreira disse:
nossa_matriz : array[0..2, 0..2] de inteiro;
x, y : inteiro;
PARA x DE 0 ATÉ 3 PASSO 1 FAÇA
PARA y DE 0 ATÉ 3 PASSO 1 FAÇA
MOSTRE nossa_matriz[x, y] := (x + y) * 2;
FIM PARA
FIM PARA
FIM
No começo desta aula me confundi um pouco, na escola aprendemos matriz desta maneira Matriz A23 por exemplo, já em programação vemos Matriz A12, pois conta-se o zero, hehe. Mas já me adaptei.
Show!! Parabéns.
Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).