DICA: MATRIZ –> para a turma de LPA

Publicado: novembro 23, 2007 em algoritmo

Vetores  bidimensionais  ( MATRIZES )

Entendendo

Primeiro exemplo lógico

constante N_LIN = 2;
N_LIN = 3;

tipo Matriz_2x3: vetor [N_LIN, N_COL] de real;
Lê_Matriz_Versão1(ref M: Matriz_2x3): 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_2x3: vetor [N_LIN, N_COL] de real;
Lê_Matriz_Versão1(ref M: Matriz_2x3): 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_100x100: vetor [N_LIN, N_COL] de real;
Lê_Matriz_Versão1(ref M: Matriz_2x3): 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
  1. Amazing message.
    I think you’ll comment my website..
    Regards

Deixe uma resposta

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s