Laço While
Agora que você está familiarizado com condicionais,
é hora de ver um outro tipo de laço: o laço while.
Este tipo de laço é muito mais poderoso que o visto
anteriormente.
Mas ele requer entendimento de condicionais. Ele é basicamente
assim:
while cond
...
end
|
Onde cond é a condição como as que vimos no capítulo anterior.
Contagem
Aqui está um simples exemplo:
Vamos examinar este programa:
1. Definimos count como 0
2.
Enquanto count < 10 nós estaremos dentro do
laço.
3.
Dentro do laço nós imprimimos a mensagem na tela e
adicionamos 1 a count. Agora count contém 1.
4.
Enquanto count< 10 novamente vamos para outra volta
dentro do laço.
5.
...
Isto continua até que count seja 10. Temos como saída deste laço isso:
Em outras palavras, o laço while vai continuar
repetindo o laço enquanto a condição for
verdadeira. Daí o nome while ("enquanto", em
português).
Poder do 2
Estas são algumas coisas fáceis de fazer com o laço while, mas muito difíceis com 'n.times'.
Suponha que nós queremos saber a maior potência de 2 que seja menor que 10000. Isto é simples com o laço:

Pense como isso seria difícil usando 'n.times'.
Exercícios
1. Reescreva o último programa de modo que o computador pergunte pelo número máximoe o programa compute a potência correspondente de 2.
2.Rode o programa acima, e escreva 1e10 como entrada. O que acontece?
Se você usou o método String#to_i há chances de "1e10" ser convertido para 1. Vamos ao irb para testar.
![]()
Você vê, 1e10 é um Float. Deste modo, você deve usar o String#to_f.