9. Arrays

O seguinte programa calcula a média de uma série de valores introduzidos pelo utilizador:

Este programa pergunta primeiro ao utilizador quantos valores vai introduzir e, um a um, lê esses valores e vai adicionando-os ao valor da variável soma.

No fim, apresenta o valor da média, resultante de dividir o valor de soma pelo número de valores introduzidos.

 

Imagine agora que, em vez da média, quer calcular o desvio-padrão que, como se deve lembrar, é definido pela seguinte fórmula, em que é a média dos n valores :

Repare que, para o cálculo do desvio-padrão, precisa de calcular a diferença entre cada um dos valores e a média desses mesmos valores, ou seja, primeiro tem que calcular a média e só a seguir é que pode calcular a diferença para cada um dos valores.

Da forma como o programa está feito, cada valor introduzido é “consumido” e “descartado”, pois é usada uma só variável valor que, a cada instante, contém somente o último valor introduzido pelo utilizador.

Então, como fazer para calcular a média e, a seguir, o desvio-padrão? Não queremos pedir de novo todos os valores ao utilizador.

A solução seria guardar em memória todos os valores lidos para os podermos usar outra vez.

Como havemos de fazer isto? Declarar várias variáveis? Se sim, quantas? Não sabemos! Isso só é decidido em tempo de execução (o utilizador é que determina quantos valores vai introduzir).

Para estes casos em que queremos guardar em memória vários valores do mesmo tipo, usamos um novo tipo de dados – o array – que, pelas suas características, nos vai permitir resolver de forma elegante muitos e diversos problemas.

É esse importante tipo de dados que é apresentado no que resta deste capítulo.

NOTA: Poderíamos, em alternativa, usar uma outra fórmula para o cálculo do desvio-padrão, que não exige o cálculo prévio da média, e que pode ser feito com uma única “passagem” pelos valores dados. A fórmula alternativa é , onde N é o número de valores a considerar, A é a soma desses valores e B é a soma dos quadrados desses valores.

O método main para esta versão poderia ser:

 


 

Anterior: 8.10. Exceções

Seguinte: 9.1. O tipo de dados não primitivo array