Download Programando com Pascal - Instituto de Computação

Transcript
Soma := Soma + Num;
end;
Media := Soma/n;
writeln('Media = ', Media);
end.
7. O exemplo acima tem o inconveniente de que sua execução exige que se saiba anteriormente a
quantidade de números. Naturalmente, isto não ocorre na maioria dos casos. Vejamos então um programa
para determinar a média de uma relação de números dados, sem que se conheça previamente a quantidade
deles. Neste caso, não devemos utilizar o comando for, pois não sabemos o número de repetições! Assim, o
comando while deve ser utilizado. Porém, uma pergunta deve ser formulada: qual a expressão lógica que
controlará a estrutura? A solução é "acrescentar" à relação um valor sabidamente diferente dos valores da
relação e utilizar este valor para controlar a repetição. Este valor aqui referido é chamado flag. Como dito
logo acima, deve-se ter certeza que o flag não consta da relação. Isto não é complicado, pois, ao se escrever
um programa, se tem conhecimento de que valores o programa vai manipular e a escolha do flag fica
facilitada. Por exemplo, se o programa vai manipular números positivos, pode-se usar -1 para o flag. Além
do flag, o programa necessita de uma variável (no caso, Cont de contador) que determine a quantidade de
números da relação, pois este valor será utilizado no cálculo da média.
{Programa para calcular a media de uma relacao de números}
program MediaX;
var Cont : integer;
Num, Soma, Media : real;
begin
Soma := 0;
writeln(' Digite os elementos(-1 para encerrar):');
readln(Num);
Cont := 0;
while Num <> -1 do
begin
Soma := Soma + Num;
Cont := Cont + 1;
readln(Num);
end;
Media := Soma/Cont;
writeln('Media = ', Media);
end.
8. Na seção 1.7 apresentamos o algoritmo de Euclides para a determinação do máximo divisor comum de
dois números dados. Para relembrar, vejamos como calcular o máximo divisor comum de 204 e 84.
204
36
2
84
12
2
36
0
3
12
O algoritmo é o seguinte: divide-se 204 por 84 obtendo-se resto 36; a partir daí, repetem-se divisões até
que o resto seja zero, sendo o dividendo da divisão atual o divisor da divisão anterior e o divisor da divisão
atual o resto da divisão anterior. O último divisor é o máximo divisor procurado.
Observe que a descrição deste algoritmo na linguagem coloquial não é muito simples. Ao contrário,
escrever este algoritmo numa linguagem de programação é muito simples, pois uma estrutura de repetição e
comandos de atribuição permitem que se obtenha facilmente a seqüência de divisões desejadas.
{Programa para determinar o maximo divisor comum de dois números positivos}
program MaxDivComum;
var x, y, a, b, Mdc, Resto : integer;
begin
writeln('Digite os dois números ');
readln(x, y);
a := x; b := y;
Resto := a mod b;