Vetores bidimensionais ( MATRIZES )
Entendendo
Primeiro exemplo lógico
constante N_LIN = 2;
N_LIN = 3;
tipo Matriz_2×3: vetor [N_LIN, N_COL] de real;
Lê_Matriz_Versão1(ref M: Matriz_2×3): neutro
início
escreva(“Entre com o elemento – Linha1, Coluna 1: “);
leia(M[1,1];
escreva(“Entre com o elemento – Linha1, Coluna 2: “);
leia(M[1,2];
escreva(“Entre com o elemento – Linha1, Coluna 3: “);
leia(M[1,3];
escreva(“Entre com o elemento – Linha2, Coluna 1: “);
leia(M[2,1];
escreva(“Entre com o elemento – Linha2, Coluna 2: “);
leia(M[2,2];
escreva(“Entre com o elemento – Linha2, Coluna 3: “);
leia(M[2,3];
fim
Bom, neste primeira representação,é de fato inadequada,pois é extremamente trabalhosa.O que de fato iria ter que ser feito basicamente tudo na ‘ unha ‘,isto é,como ficaria para vc manipular uma matriz do tipo 100×100 que seria no caso uma matriz com 10.000 elementos ? É claro que é inviável este tipo de implmentação.
Para resolver o problema teremos de fazer uma manipulação de dois índices simultâneos: um para a linha e outro para a coluna.
Como toda a matriz será lida,teremos que acessar todos os elementos,para isto a estratégia seria varrer todos os elementos de cada linha por vez.
Uma segunda opção seria criar um laço para tratar o índice das colunas.
Segundo exemplo lógico
constante N_LIN = 2;
N_LIN = 3;
tipo Matriz_2×3: vetor [N_LIN, N_COL] de real;
Lê_Matriz_Versão1(ref M: Matriz_2×3): neutro;
var i : inteiro;
início
para (i <-1; i <= N_COL;i <- i + 1 ) faça
início
escreva(“Entre com o elemento – Linha1, Coluna”,i);
leia(M[1,i];
fim
para (i <-1; i <= N_COL;i <- i + 1 ) faça
início
escreva(“Entre com o elemento – Linha2, Coluna”,i);
leia(M[2,i];
fim
fim
Bom,agora esta implementação ficou bem melhor que a primeira,mais continua apresentando repetição de procedimentos feitos de forma manual.Isto faz com que a abordagem seja inadequada para o caso,imagine uma matriz 100×100.O laço da leitura da coluna seria feito 100 vezes,se tornado algo inviável.
A solução FINAL seria criar um laço para as linhas.
EXEMPLO
para (i <- 1,i <= N_LIN;i <- i+ 1) faça
início
{ código para tratar a linha }
fim
Então teremos um algoritmo final assim,USANDO 10.OOO ELEMENTOS =)
constante N_LIN = 100;
N_LIN = 100;
tipo Matriz_100×100: vetor [N_LIN, N_COL] de real;
Lê_Matriz_Versão1(ref M: Matriz_2×3): neutro;
var i,j : inteiro;
início
para (i <-1; i <= N_LIN;i <- i + 1 ) faça
para (j <-1; i <= N_COL;i <- i + 1 ) faça
início
escreva(“Entre com o elemento – Linha”, i,” Coluna”,j);
leia(M[i,j];
fim
fim
Bom,é isso, acredito que os colégas de classe podem agora entender bem o conceito de MATRIZ em usando a LÓGICA DOS ALGORITMOS.
Comentários