quinta-feira, 5 de maio de 2011

Algoritmo - Leia 10 números e retorne o maior

Parece que na prova do 1o ano de LTP, caiu um algoritmo pedindo para que se leia 10 números e retorne qual é o maior número. Ou foram isso que fontes não muito confiáveis minhas me disseram... (na verdade, foi o próprio Joker que me falou saiudhoesuiad)
*Edit: tenho bons motivos mesmo pra falar que são fontes não muito confiáveis... ele estava me zuando quando falou que era essa a questão da prova... E eu ainda acreditei e fiz tudo isso... Bem, vai ficar aqui como material didático...*
Enfim, mão na massa!
Supondo que você não queira ver a explicação, pule para o final e pegue o código-fonte
Vamos ver... 1o passo é o diagrama de variáveis
Ele pede que sejam lidos 10 números e seja impresso o maior número -> colocando isso num exemplo real, imagine assim: um amigo seu vai te falando vários números, e você tem que falar no final qual foi o maior número que ele falou... você não precisa lembrar dos outros números... ele fala 1, depois fala 5 [5 é maior que 1, você pode esquecer do 1], 3[3 é menor que 5, mantém o 5], 8 [8 é maior que 5, agora você só precisa lembrar do 8]
ou seja, ele pede que sejam lidos 10 números e seja impresso o maior número... temos a variável do número que foi dito agora, e do maior número. (Num, e Maior)
ok, mas são 10 números, então precisamos de uma variável pra contar quantos números já foram (Cont)
E | Num
P | Cont
S | Maior
alguma dúvida até aí?
vamos pra estrutura básica:

Algoritmo Maior-Número
  inteiro: Num, Cont, Maior; {ou ainda, caso vocês tenham aprendido assim/prefira, você pode colocar um abaixo do outro -> inteiro: Num; / inteiro: Cont; / inteiro: Maior;}
Início
  <comandos>
Fim.

para declarar variáveis no algoritmo, colocamos <tipo de variável>: <nome da variável 1 do tipo definido>, <nome da variável 2 do tipo definido>, <...>; {fechamos com um ponto e vírgula}
Tipos de variáveis:
  • Caracter: variáveis de texto, aceitam qualquer tipo de texto
  • Inteiro: variáveis numéricas que só aceitam números inteiros, como 1, 6, 15; mas não aceitam números fracionários, como 7.3, 1.5, etc
  • Real: variáveis numéricas que aceitam números inteiros ou fracionários, como 1, 6, 15, 7.3, 1.5, 71.163, etc
  • Lógico: variáveis que seguem a álgebra booleana, que só podem ter dois valores: Verdadeiro ou Falso. Supondo que você seja do meu colégio e esteja no primeiro ano com o mesmo professor que eu tive, você provavelmente não vai ver muito esse tipo
O Contador de números lidos é inteiro, não tem como ler um número e meio. O Maior número vai receber um valor de um outro Número, portanto, o tipo da variável Maior depende do tipo da variável Num. Como Num é um número, e não é especificado que é um número real, nem existe motivo para supor que seja um número real, pode-se utilizar como inteiro.
vamos ao Programa

Início
  Cont <- 0; {zerar o contador}
  Maior <- 0; {transformar o maior número até o momento em 0}
  Enquanto Cont < 10 Faça
    <comandos que serão repetidos>
  Fim-Enquanto;
Fim.

Essa é a estrutura principal do programa
Quais serão os comandos repetidos?
Primeiro ele vai ler um número. então, vai pegar cada número lido e vai verificar se o número é maior que o maior número já registrado. Se o número for maior, ele fica registrado como maior; senão, é descartado.


  Enquanto Cont < 10 Faça
    Leia (Num);
    Se Num > Maior
      Então Maior <- Num;
    Fim-se;
  Fim-Enquanto;


Depois, não pode se esquecer de contar que foi lido mais um número.


  Enquanto Cont < 10 Faça
    Leia (Num);
    Se Num > Maior
      Então Maior <- Num;
    Fim-se;
    Cont <- Cont + 1;
  Fim-Enquanto;

até agora temos:

Algoritmo Maior-Número
  inteiro: Num, Cont, Maior;
Início
  Cont <- 0;
  Maior <- 0;
  Enquanto Cont < 10 Faça
    Leia (Num);
    Se Num > Maior
      Então Maior <- Num;
    Fim-se;
    Cont <- Cont + 1;
  Fim-Enquanto;

Fim.

Ok, ele verifica o maior número e registra ele. Mas espere um momento! Ele tem que falar qual foi o maior número!

Algoritmo Maior-Número;
  inteiro: Num, Cont, Maior;
Início
  Cont <- 0;
  Maior <- 0;
  Enquanto Cont < 10 Faça
    Leia (Num);
    Se Num > Maior
      Então Maior <- Num;
    Fim-se;
    Cont <- Cont + 1;
  Fim-Enquanto;
  Imprima(Maior);
Fim.

Código-Fonte em Algoritmo: Aqui
Código-Fonte em Pascal: Aqui

Uma observação: Se você botar Enquanto Cont <= 10, você vai ter que igualar Cont a 1 no início do programa
Se você botar Enquanto Cont < 10, você vai ter que igualar Cont a 0 no início do programa

Nenhum comentário:

Postar um comentário

Obrigado pelo seu comentário!
Ele está sujeito à aprovação antes de ser aceito, portanto, manere.