Menu
Coddy logo textTech

Case / When İçinde Aralıklar

Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 8 / 56.

Aralıklar, Ruby'nin case ifadesi içinde parlar. Pek çok dilin karşılaştırma operatörleri içeren bir if/elsif zincirine ihtiyaç duyduğu yerde Ruby, bir değeri doğrudan aralıklarla eşleştirmenize olanak tanır.

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

Arka planda, when 70..79 aralığın === operatörünü kullanır; bu da (70..79).include?(score) ile eşdeğerdir.

case formu, uzun bir if/elsif merdiveninden daha kısa, okunması daha kolay ve yazılması daha hızlıdır.

challenge icon

Görev

Kolay

Virgülle ayrılmış tam sayı yaş listesini okuyun. Her bir yaş için, aralıklar (ranges) kullanarak bir case ifadesi ile sınıflandırın:

  • 0..12: Child
  • 13..19: Teen
  • 20..64: Adult
  • 65 veya daha yüksek: Senior
  • Diğer her şey (negatif): atlanır, rapora dahil edilmez

Sıfır olmayan her kategori için şu sabit sırayla bir sayım satırı yazdırın: Child, Teen, Adult, Senior. Kişi sayısı sıfır olan kategorileri atlayın. Sayımlardan sonra, n negatif (geçersiz) yaşların sayısı olmak üzere Skipped: <n> yazdırın.

5,15,30,70,-3,40,12 girişi için çıktı şöyledir:

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

Kopya kağıdı

case ifadelerinde aralıkları kullanın — Ruby === (include? metoduna eşdeğerdir) aracılığıyla eşleştirme yapar:

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

Kendin dene

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

# YAPILACAK: her yaşı case + aralıklar ile sınıflandırın, kategori başına sayın, raporu yazdırın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler