Menu
Coddy logo textTech

תנאי שמירה

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 41 מתוך 63.

תנאי הגנה מחזיר מוקדם כאשר הקלט אינו יכול להמשיך במסלול הראשי. בדיקת מקרים חריגים תחילה יכולה לצמצם תנאים מקוננים. פקודת return יוצאת מהפונקציה הנוכחית, ולכן פקודות מאוחרות יותר באותה פונקציה אינן מתבצעות.

fun deliveryFee(items: Int): Int {
    if (items < 0) return -1
    return items * 2
}

בתוך main:

println(deliveryFee(-1))

הקלט השלילי מפעיל את תנאי השמירה ומונע את חישוב דמי המשלוח הרגיל.

תנאי שמירה יוצא מהפונקציה לפני המסלול הרגיל כאשר התנאי שלו מתקיים.

challenge icon

אתגר

בינוני

השלימו את firstOrMissing עם הפרמטרים values: List<Int>. החזירו ‎-1 עבור רשימה ריקה באמצעות סעיף guard. אחרת, החזירו את הערך הראשון.

אלא אם צוין לעיל טווח מחמיר יותר, אוספים מכילים לכל היותר 100 איברים בכל רמה, וארגומנטים של מספרים שלמים וערכי מספרים שלמים באוספים הם בין ‎-1000 ל־1000. טקסט שסופק לצורך ניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.

החזירו ערך מסוג Int. השאירו את קוד הקלט/פלט שסופק ללא שינוי. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ולאחריו האיברים, ומפה מתחילה במספר הרשומות שלה ולאחריו כל מפתח וערך. רשימות מקוננות חוזרות על המבנה של מספר איברים ואחריו איברים עבור כל שורה. ה־main שסופק מדפיס את הערך המוחזר ואחריו תו שורה חדשה אחד. רשימות משתמשות בתבנית הסטנדרטית של Kotlin עם סוגריים מרובעים; אל תדפיסו תוויות נוספות.

נסו בעצמכם

fun firstOrMissing(values: List<Int>): Int {
    // כתבו כאן את הפתרון שלכם.
    return 0
}
fun main() {
    val valuesCount = readln().toInt()
    val values = mutableListOf<Int>()
    for (i0 in 0 until valuesCount) {
        val valuesItem = readln().toInt()
        values.add(valuesItem)
    }
    println(firstOrMissing(values))
}
quiz iconבחנו את עצמכם

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

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

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