Menu
Coddy logo textTech

Intervalos em Case / When

Parte da seção Lógica e Fluxo do Journey de Ruby da Coddy — lição 8 de 56.

Intervalos (Ranges) se destacam dentro da instrução case do Ruby. Onde muitas linguagens precisam de uma cadeia de if/elsif com operadores de comparação, o Ruby permite que você compare um valor com intervalos diretamente.

score = 78
grade = case score
        when 90..100 then "A"
        when 80..89  then "B"
        when 70..79  then "C"
        when 60..69  then "D"
        else              "F"
        end
puts grade  # C

Nos bastidores, when 70..79 usa o operador === do intervalo, que é equivalente a (70..79).include?(score).

A forma case é mais curta, mais fácil de ler e mais rápida de escrever do que uma longa sequência if/elsif em escada.

challenge icon

Desafio

Fácil

Leia uma lista de idades inteiras separadas por vírgulas. Para cada idade, classifique-a com uma instrução case usando intervalos:

  • 0..12: Child
  • 13..19: Teen
  • 20..64: Adult
  • 65 ou mais: Senior
  • Qualquer outra coisa (negativo): ignorado, não entra no relatório

Imprima uma linha de contagem para cada categoria diferente de zero, nesta ordem fixa: Child, Teen, Adult, Senior. Pule categorias com zero pessoas. Após as contagens, imprima Skipped: <n> onde n é o número de idades negativas (inválidas).

Para a entrada 5,15,30,70,-3,40,12, a saída é:

Child: 2
Teen: 1
Adult: 2
Senior: 1
Skipped: 1

Folha de consulta

Use intervalos em instruções case — o Ruby faz a correspondência via === (equivalente a include?):

score = 78
grade = case score
        when 90..100 then "A"
        when 80..89  then "B"
        when 70..79  then "C"
        when 60..69  then "D"
        else              "F"
        end
puts grade  # C

Experimente você mesmo

ages = gets.chomp.split(",").map(&:to_i)

# TODO: classificar cada idade com case + intervalos, contar por categoria, imprimir relatório
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo