Condicionais

O if proporciona realizar diferentes ações dependendo das condições que você determina. Por exemplo:

if city == "Toronto"
drinking_age = 19
else
drinking_age = 21
end

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
puts "Senior fare"
elsif age >= 14
puts "Adult fare"
elsif age > 2
puts "Child fare"
else
puts "Free"
end

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

if age > 5
puts "Older than 5"
elsif age > 10
puts "Older than 10"
elsif age > 20
puts "Older than 20"
elsif age > 30
puts "Older than 30"
end

Isso dará como resposta:

$ ./example.rb
Older than 5
$

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
puts "Older than 30"
elsif age > 20
puts "Older than 20"
elsif age > 10
puts "Older than 10"
elsif age > 5
puts "Older than 5"
end

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á:

1. Antes de "0".
2. Após "9" mas antes de "A".
3. Após "Z" mas antes de "a".
4. Após "z".

Tente testar o programa com os seguintes caracteres:
    $, +, ?, <, -, ~, :, %, ^, {, [
Exemplo de respostas:
  • $ não está antes de 0
  • < não está entre 9 e A
  • - não está entre Z e a
  • ~ não está após z
  •  

    topo da página

    << Página Anterior | índice | Próxima Página >>
    Apostilas de Ruby e RGSS

    nossos tutoriais

    navegue

    livros recomendados