Staffer Group BR™

Fórum interativo totalmente gratuito!


 VisualizaçõesPermissão deste fórum:
Não podes responder a tópicos


CurtirDiretório deste fórum:
Fóruns » Principal »  » Tutoriais » Programação Externa

#1
 D'Leandro™

D'Leandro™
Fundador
Recadinho: Curioso para aprender mais? preste atenção, aí temos mais um assunto muito importante...
Caso queira retornar ao indice inicial do curso, clique neste link.

Bem, então vamos ao que interessa! Hoje vamos falar sobre outro assunto de suma importância para a programação: os Vetores e as Matrizes. Antes de falar da sua sintaxe, implementação e particularidades, vamos falar de seu uso. Imagine a seguinte situação: eu preciso armazenar em meu programa as idades de 100 pessoas para, depois, calcular a média de idade delas. Será que eu vou precisar declarar 100 variáveis em meu programa, nomeando uma a uma? A resposta é sim e não. Como assim? Digamos que você irá, sim, declarar 100 variáveis, mas não precisará nomear uma a uma na sua declaração. Os Vetores ou Listas surgiram para resolver problemas como estes. Mas o que vem a ser um vetor? Um vetor é um conjunto de variáveis de mesmo tipo, referenciadas por um nome comum. Mas se elas tem o mesmo nome, como eu vou conseguir distingui-las? O acesso a cada uma das variáveis ocorre através de um processo chamado Indexação. Indexação consiste em utilizar-se de um índice para acessar cada uma das variáveis. Teoricamente, pode parecer meio complexo, mas vocês verão que, na prática, é uma técnica muito útil para a programação.

Vamos ver, então, como declaramos um vetor na maneira algoritmica…
Código:
[Declaração de Variáveis]
   notas : conjunto[50] de real
e na linguagem Pascal…
Código:
var
   notas : array[1..50] of real;
Como pode ser visto nos exemplos acima, a declaração é realizada na área comum de declaração de variáveis, como se fosse uma variável qualquer. O que difere, é que estabelecemos na declaração a quantidade de “posições” que o nosso vetor terá, colocando entre colchetes uma constante numérica (ou uma constante definida pelo programador). Podemos perceber, também, que a declaração na linguagem Pascal possui uma particularidade interessante: definimos também o alcance do índice do vetor. No caso acima, o nosso vetor iniciará na posição 1 e terá a sua última posição como sendo 50. Isso não acontece em outras linguagens, como C/C++ (onde os vetores iniciam na posição 0). Com essa particularidade, podemos criar, por exemplo, vetores que iniciam em índices negativos, dentre outras possibilidades.

Ok, vimos como se declara um vetor. Mas e a matriz, como se faz?

Na programação, uma matriz nada mais é que um vetor de duas dimensões. Como assim? Imagine um vetor como uma sequência de “quadradinhos” em linha reta, um atrás do outro, onde cada um representa uma posição do vetor. Agora, imagine um “bloco” de quadradinhos, formando uma espécie de “tabela”. Esse vetor de duas dimensões é uma matriz. No caso da programação, podemos também ter vetores de 4, 5, 6, 7… dimensões, enfim, de quantas dimensões você necessitar (e o sua memória suportar). É preciso tomar um certo cuidado com a declaração de vetores/matrizes muito grandes, pois essas estruturas são armazenadas sequencialmente na memória. Dessa forma, se o vetor for muito grande, ele pode invadir a área de outros programas ou até sobrescrever dados do seu próprio programa, gerando problemas muito difíceis de serem descobertos (pois não são mostrados como erros de compilação). Vamos ver, então, como declarar uma matriz (ou um vetor de duas dimensões) na forma algoritmica…
Código:
[Declaração de Constantes]
   MAX = 100
 
[Declaração de Variáveis]
   notas : conjunto[50][MAX] de inteiro
e na linguagem Pascal…
Código:
const
   MAX = 100;
 
var
   notas : array[1..50, 1..MAX] of integer;
Nos exemplos acima, demonstrei também como definir uma ou mais dimensões de um vetor com o uso de constantes. É uma maneira simples de deixar o código mais “adaptável”. Como assim? Digamos que eu vou armazenar as idades de 50 pessoas. Aí, um belo dia eu preciso aumentar esse número para 100, 200 pessoas. Se eu utilizei uma constante na definição do vetor, basta modificar o valor da constante e pronto, o programa todo já terá como referência do vetor a nova quantidade estabelecida.

Bem, temos então o nosso vetor com suas inúmeras posições. Agora chegou a hora de ler os valores para armazená-los. Precisarei escrever dezenas, centenas de vezes o comando de leitura? Bem, só se você quiser (o que eu acho muito pouco provável… Hahahaha). Para nos auxiliar nessa “árdua” tarefa, utilizaremos um companheiro já conhecido de vocês: o Para. Através de seu uso (que consiste em uma repetição realizada uma quantidade de vezes determinada), podemos comprimir a leitura/escrita dos/nos elementos do vetor em poucas linhas facilmente. A seguir, teremos um exemplo bem simples em linguagem algoritmica e em Pascal.
Código:
[Declaração de Constantes]
   MAX = 50
 
[Declaração de Variáveis]
   vetor : conjunto[MAX] de inteiro
   i : inteiro // será o nosso índice
 
[Início]
   para i = 1 até MAX faça
   início
      leia(vetor[i])
   fim-para
 
   para i = 1 até MAX faça
   início
      escreva(vetor[i])
   fim-para
[Fim]
Código:
const
   MAX = 50;
 
var
   vetor : array[1..MAX] of integer;
   i : integer; { será o nosso índice }
 
begin
   for i := 1 to MAX do
   begin
      readln(vetor[i]);
   end;
 
   for i := 1 to MAX do
   begin
      writeln(vetor[i]);
   end;
end.
No nosso exemplo acima, lemos as posições do vetor e em seguida listamos, mostrando os valores lidos na tela. Bastante simples, não acham? Mas, então, como fazemos para ler uma matriz? Se utilizarmos o Para, só conseguiremos ler a diagonal principal da matriz… Mas… e se encadearmos dois “Paras”? Vamos ver como ficaria?
Código:
[Declaração de Constantes]
   MAX = 50
 
[Declaração de Variáveis]
   matriz : conjunto[MAX][MAX] de inteiro
   i, j : inteiro // serão os nossos índices
 
[Início]
   para i = 1 até MAX faça
   início
      para j = 1 até MAX faça
      início
         leia(matriz[i][j])
      fim-para
   fim-para
[Fim]
Código:
const
   MAX = 50;
 
var
   matriz : array[1..MAX, 1..MAX] of integer;
   i, j : integer; { serão os nossos índices }
 
begin
   for i := 1 to MAX do
   begin
      for j := 1 to MAX do
      begin
         readln(vetor[i, j]);
      end;
   end;
end.
Simples, rápido e fácil! Com o primeiro índice (no caso acima, i), controlamos as linhas da matriz (ou a primeira dimensão). Com o segundo índice (j), controlamos as colunas da matriz. Poderíamos adaptar essa maneira para lermos/mostrarmos vetores de quantas dimensões forem necessárias, sempre colocando um índice e um Para para cada dimensão do vetor.

Bem, pessoal, é isso… qualquer dúvida é só comentar que responderei o mais breve possível! Valeu, e até a próxima (aguardem, pois teremos uma “brincadeirinha” no próximo post!)

Este artigo foi escrito por Rafael Toledo e publicado no site rafaeltoledo.net
Aguardem!