Condicionais
O if proporciona
realizar diferentes ações dependendo das
condições que você determina. Por exemplo:
if city == "Toronto" |
Isto quer dizer:
1- Se (if) a city é igual a (==) "Toronto",
então defina drinking_age como 19.
2- Senão (else) defina drinking_age como 21.
true e false
Ruby possui a noção de verdadeiro (true) e falso (false). Isto é melhor ilustrado através de exemplo. Inicie o irb e digite o conteúdo abaixo:
O if avalia se a expressão (por exemplo, 'city ==
"Toronto") é verdadeiro (true) ou falso (false)
e age de acordo.
| Atenção: Note a
diferença entre '='
e '=='. '=' um operador de atribuição. '==' é um operador de comparação. |
Condicionais mais comuns
Aqui temos uma lista das condiionais mais comuns:
== |
igual a |
!= |
diferente de |
> |
maior que |
< |
menor que |
>= |
maior ou igual a |
<= |
menor ou igual a |
Comparação de strings
Como estes operadores se comportam com strings? bem, == verifica a igualdade entre strings; e > e seus amigos definem a ordem ASCIIbética.
O que é a ordem ASCIIbética? A tabela de caracteres
ASCII contém todos os caracteres do teclado. A lista está
nesta ordem:
...012...789...ABC...XYZ...abc...xyz...
Inicie o irb e digite isso:
| Nota: Observe como o irb pode
ajudar a clarear as coisas. Você deve criar ohábito de
testar as coisas no irb primeiro. O irb é uma grande ferramenta, use-a! |
elsif
elsif te possibilita adicionair mais uma condição. Veja este exemplo:
if age >= 60 |
Vamos entender isso:
1- Se age é 60 ou mais, nós temos um "senior
fare" (preço sênior).
2- Se isto não é verdadeiro, mas age é
14 ou mais, nós temos um "adult fare" (preço adulto).
3- Se isto não é verdadeiro, mas age é
maior que 2, nós temos uma "child fare" (preço infantil).
4- Senão nós temos "free" (livre).
Ruby verifica esta sequencia de condições uma a uma. A primeira condição que satisfaça a comparação é executada. Você pode colocar quantas elsif's desejar.
Exemplo - fare_finder.rb
Para tornar as coisas mais claras, vamos colocar isso num programa. O programa pergunta pela sua idade e retorna o preço ("fare") correspondente.
Digite isso em um arquivo e execute-o. Seu comportamento deve ser como isso:
| Cuidado:
Lembre-se da ordem que organizou seus elsif's. Somente a primeira condição verdadeira será executada. Este exemplo
mostra o perigo: |
age = 21 |
Isso dará como resposta:
$ ./example.rb |
Aqui age é igualmente maior que 10 e maior que 30. Somente a primeira instrução verdadeira será executada.
A forma correta de escrever isso é:
if age > 30 |
Exercício
1- Reorganize estes caracteres em ordem ASCIIbética:
2, u, A, 4, w, f, R, y
2- A tabela ASCII contém todos os caracteres do teclado. Use o irb para encontrar as mentiras dobre o caracter "?":
1. Antes de 0.
2. Após 9 mas antes de A.
3. Após Z mas antes de a.
4. Após z.
3- Usando sua experiência adquirida na questão anterior, faça um programa que aceite a entrada de um caracter e diga se o caractere está:
Tente testar o programa com os seguintes caracteres:1. Antes de "0".
2. Após "9" mas antes de "A".
3. Após "Z" mas antes de "a".
4. Após "z".
$, +, ?, <, -, ~, :, %, ^, {, [
Exemplo de respostas: