Você está na página 1de 9

Exemplos de programação em

PASCAL

• Exemplos baseados no cálculo de médias


• Revisão das instruções de repetição cíclica
• O conceito de acumulador e contador
• Utilização de arrays

Luís Almeida - Programação I, 01/02

Cálculo da média de uma


sequência de valores

• Problema:
Dada uma sequência de 3 valores numéricos, lidos
do teclado, calcular a sua média e escrever o
resultado no écran.
• Variáveis de entrada: seq. de valores {ai: 1≤ i< 3}
• Variável de saída: media

Luís Almeida - Programação I, 01/02

1
Cálculo da média de uma
sequência de valores

• Solução trivial:
Utilização de 3 variáveis diferentes e
independentes (a1, a2 e a3)
1
media = ⋅ (a1 + a2 + a3)
3

Luís Almeida - Programação I, 01/02

Cálculo da média de uma


sequência de valores

• Solução trivial:
Utilização de 3 variáveis diferentes e
independentes (a1, a2 e a3)
1
media = ⋅ (a1 + a2 + a3)
3

• Ooops! e se for uma sequência com 100 valores?

Luís Almeida - Programação I, 01/02

2
Cálculo da média de uma
sequência de valores

• Problema mais genérico:


Dada uma sequência de N valores numéricos,
lidos do teclado, calcular a sua média e escrever o
resultado no écran.
• Variáveis de entrada: seq. de valores {ai: 1≤ i<N}
• Variável de saída: media

Luís Almeida - Programação I, 01/02

Cálculo da média de uma


sequência de valores
Solução 1:
Utilização de N variáveis separadas (a1, a2 ... aN) ?!!

1
media = ⋅ (a1 + a2 + ... + aN )
N

• Agora tentem fazer isto com 100 variáveis separadas...


• Programa ilegível, impossível de escrever e corrigir...

Luís Almeida - Programação I, 01/02

3
Cálculo da média de uma
sequência de valores
Solução 2:
E se formos somando à medida que vamos lendo,
repetindo N vezes a soma parcial:

somai = somai-1 + ai

com um valor inicial soma0 = ?


0 (claro!)

Luís Almeida - Programação I, 01/02

Cálculo da média de uma


sequência de valores
• Ao fim de termos repetido N vezes a soma parcial
teremos todos os valores da sequência lidos e
somados.
1
media = ⋅ soma N
N

• Só necessitamos de 3 variáveis para qualquer N:


N, soma e ai
• Atenção: cada valor da sequência é descartado na
leitura do valor seguinte.
Luís Almeida - Programação I, 01/02

4
Cálculo da média de uma
sequência de valores

• Mas como se constroi: somai = soma i-1 + ai ?


• Fazendo
soma := 0;
(* repetir para cada ai ** Que tipo de ciclo? ** *)
soma := soma + ai ;

• A variável soma designa-se por acumulador.

Luís Almeida - Programação I, 01/02

Cálculo da média de uma


sequência de valores

• Problema ainda mais genérico:


Dada uma sequência de valores numéricos positivos
lidos do teclado e terminada com “–1”, calcular a
sua média e escrever o resultado no écran.
• Variáveis de entrada: seq. de valores {ai: 1≤ i<N}
mas com N desconhecido!
• Variável de saída: media

Luís Almeida - Programação I, 01/02

5
Cálculo da média de uma
sequência de valores
Solução:
Podemos usar o mesmo método mas, para além de
construirmos a soma teremos de contar o número
de elementos da sequência

• Como?
Da mesma forma
num i = num i-1 + 1 (por cada elemento lido)
E o valor inicial num0 ?
0 (claro!)
Luís Almeida - Programação I, 01/02

Cálculo da média de uma


sequência de valores

• Mas como se constroi: num i = num i-1 + 1 ?


• Fazendo
num := 0;
(* repetir para cada ai ** Que tipo de ciclo? ** *)
num := num + 1 ;

• A variável num designa-se por contador.

Luís Almeida - Programação I, 01/02

6
Acumuladores e Contadores

• Acumulador
soma := 0;
(* repetir para cada ai *)
soma := soma + ai ;
• Contador
num := 0;
(* repetir para cada ai *)
num := num + 1 ;

Luís Almeida - Programação I, 01/02

Cálculo da média de uma


sequência de valores

• E não há mesmo maneira de efectuar a média


de um número genérico de elementos
guardando-os individualmente em memória?

• Sim, usando um array !

Luís Almeida - Programação I, 01/02

7
Cálculo da média de uma
sequência de valores
• array

• Conjunto de variáveis independentes, do


mesmo tipo e com o mesmo nome e que são
diferenciadas por um índice numérico do tipo
inteiro.

Luís Almeida - Programação I, 01/02

Cálculo da média de uma


sequência de valores
• array (declaração)

var
sequencia: array[1..100] of integer;

sequencia 3 9 1 6 ... 1
1 2 3 4 ... 100
índice

Luís Almeida - Programação I, 01/02

8
Cálculo da média de uma
sequência de valores
• array (utilização)

begin
soma := soma + sequencia[1];
sequencia[2] := 9;
for i := 1 to 100 do
writeln(sequencia[i]);
...
end
Luís Almeida - Programação I, 01/02

Cálculo da média de uma


sequência de valores
• Com a utilização de um array, o cálculo de
uma média pode ser feito com qualquer N (!)
segundo o processo habitual de

leitura à cálculos à escrita


• Leitura do teclado para o array
• Cálculos sobre o array
• Escrita do resultado
Luís Almeida - Programação I, 01/02

Você também pode gostar