Aprenda Ruby

  • Página Inicial
  • Contato!
  • Tudo sobre Ruby Parte 1!
  • Tudo sobre Ruby Parte 2!
  • Tudo sobre Ruby Parte 3!
  • Tudo sobre Ruby Parte 4!
  • Tudo sobre Ruby Parte 2

    Estruturas Condicionais

    No Ruby também temos o operador ternário. Veja um exemplo de uso:

    
    print "Digite um número: "
    num = gets.to_i
    
    verif = num % 2 == 0 ? "par" : "ímpar"
    
    puts "O número #{num} é #{verif}."
    
    

    Já o if, else e elsif usamos assim:

    
    print "Digite um número: "
    num = gets.to_i
    
    if num < 20 then
        puts "#{num} é menor que 20!"
    elsif num > 20 then
        puts "#{num} é maior que 20!"
    else
        puts "#{num} é igual à 20!"
    end
    
    

    Lembrando que elsif (que pode ter mais de um) e else não são obrigatórios.

    Já o case, usamos assim:

    
    print "Digite uma letra: "
    letra = gets.strip[0].upcase
    
    case letra
    when "A", "E", "I", "O", "U"
        verif = "vogal"
    when "H", "W", "Y"
        verif = "semivogal"
    else
        verif = "consoante ou outro caractere"
    end
    
    puts "A letra \"#{letra}\" é #{verif}."
    
    

    O else seria o equivalente ao "default" nas linguagens C-like, e também não é obrigatório.

    O unless exige que a condição seja falsa ao invés de verdadeira, como podem ver:

    
    print "Digite um número: "
    num = gets.to_i
    
    unless num < 0 then
        verif = "positivo"
    else
        verif = "negativo"
    end
    
    puts "O número #{num} é #{verif}."
    
    

    Laços de Repetição

    O while funciona dessa forma no Ruby:

    
    cont = 0
    
    print "Digite um número: "
    num = gets.to_i
    
    while cont <= num do
        puts cont
    
        cont += 1 # Incremento
    end
    
    

    Podemos usar o break e o next (equivalente ao continue), da seguinte forma:

    
    cont = 0
    
    print "Digite um número: "
    num = gets.to_i
    
    while true do # Laço infinito
        cont += 1 # Incremento
        
        if cont % 2 == 1 then
            next
        elsif cont > num then
            break
        end
    
        puts cont 
    end
    
    

    Temos também o begin while (equivalente ao do while das linguagens C-like), que garante a execução de pelo menos uma vez do código, como podem ver:

    
    cont = 0
    
    print "Digite um número: "
    num = gets.to_i
    
    begin
        puts cont
    
        cont += 1 # Incremento
    end while cont <= num
    
    

    E o until, que exige que a condição retornada seja falsa ao invés de verdadeira, como podem ver:

    
    cont = 0
    
    print "Digite um número: "
    num = gets.to_i
    
    until cont > num do
        puts cont
    
        cont += 1 # Incremento
    end
    
    

    Laço de Repetição For

    No Ruby também temos o for, e usamos ele simplesmente assim:

    
    for i in 0..9 do
        puts i
    end
    
    

    Para decremento, fazemos assim:

    
    for i in 10.downto(0) do
        puts i
    end
    
    

    Para incremento de 2 em 2:

    
    for i in 0.step(10, 2) do # O que vai dentro do step é o fim, depois o incremento/decremento.
        puts i
    end
    
    

    E decremento de 2 em 2:

    
    for i in 10.step(0, -2) do
        puts i
    end
    
    

    Arrays

    Arrays em Ruby podem ser declarado das seguintes formas:

    
    arr1 = []
    arr2 = Array.new
    
    

    Os mesmos arrays com item e exibidos com puts:

    
    arr1 = ["Item 1", "Item 2"]
    arr2 = Array.new(3, "Item") # Criará um array de 3 posições com os item escrito "Item"
    
    puts arr1
    puts arr2
    
    

    Para pegar determinado item do array, fazemos dessas formas:

    
    vogais = ["A", "E", "I", "O", "U"]
    
    puts vogais[0]
    puts vogais.fetch(1)
    
    

    Primeiro e último item do array:

    
    vogais = ["A", "E", "I", "O", "U"]
    
    puts vogais.first
    puts vogais.last
    
    

    Para pegar a quantidade de item de um array, podemos usar a propriedade length (pode ser count também):

    
    vogais = ["A", "E", "I", "O", "U"]
    
    puts vogais.length 
    
    

    Com isso, podemos fazer um laço pra exibir todos os item do array:

    
    vogais = ["A", "E", "I", "O", "U"]
    
    for i in 0..vogais.length do
        puts vogais[i]
    end
    
    

    De forma mais simples, com for iterator:

    
    vogais = ["A", "E", "I", "O", "U"]
    
    for v in vogais do
        puts v
    end
    
    

    Podemos adicionar itens diretamente pelo índice ou usando o método push, e remover o último item usando pop:

    
    prato = ["Arroz", "Feijão", "Frango"]
    
    prato[3] = "Batata"
    prato.push("Salada")
    
    for p in prato do
        puts p
    end
    
    puts ""
    
    prato.pop
    
    for p in prato do
        puts p
    end
    
    

    Usando insert e delete, pra incluir e excluir por posição, e include pra verificar se um item existe:

    
    prato = ["Arroz", "Feijão", "Frango"]
    
    prato.insert(2, "Farofa") # Posição e Item
    
    for p in prato do
        puts p
    end
    
    puts ""
    
    prato.delete_at(2) # Deleta por posição
    prato.delete("Frango") # Delete por item
    
    puts prato.include? "Ovo" # Verifica se item existe no array
    
    puts ""
    
    for p in prato do
        puts p
    end
    
    

    Uma matriz pode ser feita dessa forma:

    
    numeros = [[0, 2, 4, 6, 8],
               [1, 3, 5, 7, 9]]
    
    for l in 0..2 do
        for c in 0..5 do
            print "#{numeros[l][c]} "
        end
        puts ""
    end
    
    

    PS: Podemos misturar tipos de variáveis em arrays.