Menu
Coddy logo textTech

טווחים ב־case / when

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 8 מתוך 56.

טווחים באים לידי ביטוי במיוחד בתוך פקודת case של Ruby. בעוד שבשפות רבות נדרשת שרשרת של if/elsif עם אופרטורי השוואה, Ruby מאפשרת לבדוק ערך ישירות מול טווחים.

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

מאחורי הקלעים, when 70..79 משתמש באופרטור === של הטווח, השקול ל־(70..79).include?(score).

מבנה case קצר יותר, קל יותר לקריאה ומהיר יותר לכתיבה מסולם ארוך של if/elsif.

challenge icon

אתגר

קל

קראו רשימה של גילאים שלמים, מופרדים בפסיקים. עבור כל גיל, סווגו אותו באמצעות פקודת case עם טווחים:

  • 0..12: Child
  • 13..19: Teen
  • 20..64: Adult
  • 65 ומעלה: Senior
  • כל ערך אחר (שלילי): מדלגים עליו, הוא לא נכנס לדוח

הדפיסו שורת ספירה עבור כל קטגוריה שאינה אפס, בסדר הקבוע הבא: Child, Teen, Adult, Senior. דלגו על קטגוריות שאין בהן אנשים. אחרי הספירות, הדפיסו Skipped: <n> כאשר n הוא מספר הגילאים השליליים (הלא תקינים).

עבור הקלט 5,15,30,70,-3,40,12, הפלט הוא:

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

נסו בעצמכם

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

# TODO: לסווג כל גיל באמצעות case וטווחים, לספור לפי קטגוריה, להדפיס דוח
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Ruby אונליין