Introdução à Programação 2006/07
Cálculo da média de uma sequência
Algoritmos: Exercício 1
Pretende-se escrever um programa que, dado um
numero indeterminado de números introduzidos pelo
teclado, atéque apareça o número zero como
indicador de paragem, calcule a média dos números
lidos e escreva-a no monitor.
a)Efectue a especificação da estrutura de dados e
solução do cálculo da média de uma sequência.
Introdução à Programação 2006/2007
Especificação
Variável de entrada: Numero (número lido)
Valor numérico real
Variável de saída: Media (média calculada dos números lidos)
Valor numérico real representado com 1 casa decimal
Variáveis internas:
Soma (soma acumulada dos números lidos)
Valor numérico real
N (contador dos números lidos
Valor numérico inteiro positivo ou nulo
Algoritmo inicial
Nome
:
Cálculo da média de uma sequência de números{
Leitura de uma sequencia de números e contagem (Soma ↑, N↑)
Se há números para calcular a média
Então 1º calculo da média (Soma ↓, N ↓, Media ↑)
2º Escrita da média
Senão escrita de uma mensagem de erro
Introdução à Programação 2006/2007
Algoritmo de segundo nível
nome: Cálculo da média de uma sequência de números (Soma ↑, N ↑)
{
Soma=0.0; N = 0; Do {
Output (“introduza um número? “); Input (Numero);
If (Numero != 0.0 {
Soma = Soma + Numero; N = N +1;
}
} while (Numero != 0.0);
}
nome: Cálculo da média (Soma ↓, N ↓, Media ↑)
{
Media = Soma / N }
nome: Escrita da média
{
output (“Média dos números lidos = ”. Media); }
nome: Escrita de uma mensagem de erro
{
output (“Não foi introduzido qualquer número válido”); }
Algoritmo final
nome: Cálculo da média de uma sequência de números (1ª versão) {
/* Leitura da sequência de números, sua soma e contagem */ Soma=0.0;
N = 0; do {
Output (“introduza um número? “); Input (Numero);
If (Numero != 0.0 {
Soma = Soma + Numero; N = N +1;
}
} while (Numero != 0.0);
if (N > 0) /* foram lidos números? */ { /* Cálculo de média */
Media = Soma / N;
/* Escrita da média */
output (“Média dos números lidos = ”. Media); }
Introdução à Programação 2006/2007
Segunda versão final do Algoritmo
nome: Cálculo da média de uma sequência de números (2ª versão) {
/* Leitura da sequência de números, sua soma e contagem */ Soma=0.0;
N = 0;
Output (“introduza um número? “(; Input (Numero);
while (Numero != 0.0); {
Soma = Soma + Numero; N = N +1;
Output (“introduza um número? “(; Input (Numero);
}
if (N > 0) /* foram lidos números? */ { /* Cálculo de média */
Media = Soma / N;
/* Escrita da média */
output (“Média dos números lidos = ”, Media); }
else output (“Não foi introduzido qualquer número válido”); }
Algoritmos: Exercício 2
Pretende-se um programa que leia números inteiros
positivos introduzidos pelo teclado, até que apareça
o número zero como indicador de paragem ou até à
leitura de um máximo 50 números, e que determine e
escreva o maior dos números lidos no monitor.
Portanto, pretende-se ignorar eventuais números
negativos que forem introduzidos pelo teclado.
a)Efectue a especificação da estrutura de dados e
solução do problema.
Introdução à Programação 2006/2007
Especificação
Variável de entrada: Numero (número lido)
Valor numérico inteiro positivo
Variável de saída: Maior (maior número lidos)
Valor numérico inteiro positivo
Variável interna: N (contador dos números lidos
Algoritmo inicial
Nome
:
Cálculo do maior número de uma sequência de números{
Leitura de uma sequencia de números e contagem (Maior ↑, N↑)
Se foram lidos números
Então escrita do maior número detectado (Maior ↓) Senão escrita de uma mensagem de erro
Introdução à Programação 2006/2007
Algoritmo de segundo nível
nome: Cálculo do maior número de uma sequência de números (Maior ↑, N ↑)
{
/* Leitura da sequência e detecção do maior número lido sua soma e contagem */
N = 0; Maior = 0; do { do {
Output (“introduza um número positivo? “); Input (Numero);
} while (Numero < 0); If (Numero != 0)
{
N = N + 1
if (Numero > Maior) Maior = Numero; )
} while ((n < 50) and (Numero != 0)); }
nome: escrita do maior número detectado (Maior ↓)
{
output (“Maior dos números lidos = ”. Maior); }
nome: Escrita de uma mensagem de erro
{
output (“Não foi introduzido qualquer número válido”); }
Algoritmo final – 1ª versão
nome: Cálculo do maior número de uma sequência de números (1ª versão)
{
/* Leitura da sequência e detecção do maior número lido */
N = 0; Maior = 0; do { do {
Output (“introduza um número positivo? “); Input (Numero);
} while (Numero < 0); If (Numero != 0)
{
N = N + 1
if (Numero > Maior) Maior = Numero; )
} while ((n < 50) and (Numero != 0)); If (N > 0) /* foram lidos números? */
Introdução à Programação 2006/2007
Algoritmo final – 2ª versão
nome: Cálculo do maior número de uma sequência de números (1ª versão)
{
/* Leitura da sequência e detecção do maior número lido */
N = 0; Maior = 0; do { do {
output (“introduza um número positivo? “); input (Numero);
} while (Numero < 0); if (Numero == 0) break;
N = N + 1
if (Numero > Maior) Maior = Numero; )
} while ((n < 50) and (Numero != 0)); If (N > 0) /* foram lidos números? */
output (“Maior dos números lidos = ”, Maior);
else output (“Não foi introduzido qualquer número válido”); }
Algoritmos: Exercício 3
Possuímos um arquivo com a idade de n pessoas. Queremos
calcular o número de pessoas que tem a idade X. O valor de X é lido na primeira linha do arquivo, precedendo os valores da idade das próximas pessoas.
--- formato do arquivo : 18 21 21 . . . 15 18
Introdução à Programação 2006/2007
Algoritmos: Exercício 3
ALGORITMO inteiro n, X, qtdePessoas; n = 0; qtdePessoas=0; X =0; INICIOleia(X); {primeira posição do arquivo - linha 1}
enquanto((leia (n) )== verdadeiro) faça se(X == n) então
qtdePessoas = qtdePessoas +1; fim se
fim enquanto
escreva("A quantidade de pessoas que possuem a mesma idade são ", qtdePessoas);
FIM
Algoritmos: Exercício 4
Elabore um diagrama que apresente ao seu
final o somatório dos valores pares existentes
entre 1 e 500.
Introdução à Programação 2006/2007
Algoritmos: Exercício 4
para este exercício considero o contador cont
começando em 2 ou seja já é o primeiro par... o próximo
par basta somar 2 ao contador...
ALGORITMO
inteiro soma, cont; soma = 0;
INICIO
PARA(cont=2 até (cont <= 500), cont = cont + 2) soma = soma + cont;
FIM PARA
escreva("A soma é ", soma); FIM
Algoritmos: Exercício 4
Outra forma de fazer:
ALGORITMO
inteiro soma, cont; soma = 0;
INICIO
enquanto(cont <= 500) faça se ((cont % 2)== 0)então
soma = soma + cont; fim se
fim enquanto
escreva("A soma é ", soma); FIM
Introdução à Programação 2006/2007
Algoritmos: Exercício 5
Escrever um diagrama para gerar e imprimir os N primeiros
termos da série de Fibonacci, cujo comportamento é o seguinte: A partir do terceiro (Inclusive) cada termo é obtido
somando-se os dois antecessores. Inicie com o numero 1 e 1 Serie: (1 1 2 3 5 8 13 21 34...) FORMULA : Fn = F(n-1) + F(n-2) ou seja: F1 = 1 F2 = 1 F3 = F2 + F1 --> F3 = 2 F4 = F3 + F2 --> F4 = 3
Algoritmos: Exercício 5
ALGORITMO
inteiro n, cont, fib_n, fib_n1, fib_n2;
fib_n = fib_n1 = fib_n2 = n = cont = 0; {inicialização de variaveis NULAS}
INICIO
fib_n1 = 1; {inicio da serie : primeiro termo} escreva(fib_n1); {mostra o termo}
fib_n2 = 1; {inicio da serie : segundo termo} escreva(" - ", fib_n2); {mostra o termo}
cont = 2; {cont começa com dois números contado F1 e F2} escreva("Digite o ultimo termo a encontrar: ");
leia(n); {qtde de termos da série: exemplo n = 6, F6 = 8} enquanto(cont <= n) faça
fib_n = fib_n1 + fib_n2;
escreva(" - ", fib_n); {mostra os termos} fib_n2 = fib_n1; {troca de valores}
fib_n1 = fib_n; cont = cont +1; fim enquanto
Introdução à Programação 2006/2007
+ Problemas de Algoritmos
Pretende-se o algoritmo de um programa que leia um número
inteiro introduzido pelo utilizador e verifique se ele se encontra entre 1 e 10.
Pretende-se o algoritmo de um programa que calcule a nota
final da disciplina de Introdução à programação de um aluno, de acordo com as regras definidas na ficha de disciplina.
Pretende-se o algoritmo de um programa para jogar o jogo do
advinha. O computador terá que gerar um número aleatório entre 0 e 100, e o utilizador irá tentar adivinhar o número gerado. Sempre que o utilizador introduzir uma tentativa, o programa deverá informar se é maior, menor ou igual ao
número gerado. Quando o utilizador adivinhar, o programa deve informar do número de tentativas efectuadas.
Pretende-se um programa para descobrir um número entre 0 e
Algoritmo do jogo para acertar num
número pensado por um colega.
Dividir a turma a meio e cada metade tenta
resolver uma das partes do jogo.
Metade da turma pensa no problema do ponto
de vista de quem vai escolher um número e
responde às perguntas de um utilizador que
tenta acertar no número escolhido.
A outra metade pensa no algoritmo para
tentar acertar num número entre 1 e 100.
No final alteramos as duas soluções para
Introdução à Programação 2006/2007
Algoritmo
gerar um número aleatório n, entre 1 e 100 inicializar o numero de tentativas com 0
enquanto tentativas < 10 ou ainda não acertou fazer pedir ao utilizador para digitar um outro número ler o novo número x
se x = n o utilizador acertou senão
se n>x
informar que o número procurado é maior
senão informar que o número procurado é menor acrescentar o número de tentativas
fim_enquanto
se acertou informar que acertou caso contrário revelar o número procurado
programa adivinha
var n,tentativa,x : integer; acertou : boolean; r : real; begin r:=random; x:=round(r*100); tentativa:=0; acertou:=false;
while(not acertou) and (tentativa<10)do write(“digite um número entre 0 e 100”); read(n);
if(n=x) acertou:=true else
if(x>n) write(“o número é maior que “,n) else write('o número é menor que ', n); tentativa:=tentativa+1;