Menu
Coddy logo textTech

יציאה מלולאות מתויגות

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

פקודת break רגילה יוצאת רק מהלולאה הקרובה ביותר. תן ללולאה חיצונית תווית כמו search@, ואז השתמש ב-break@search בתוך לולאה מקוננת כדי לצאת מכל החיפוש כשהמטרה מושגת. תווית שייכת ללולאה שמופיעה מיד אחריה.

בתוך main:

var found = -1
search@ for (row in listOf(listOf(1, 4), listOf(6, 8))) {
    for (value in row) {
        if (value % 2 == 0) {
            found = value
            break@search
        }
    }
}
println(found)

ארבע הוא הערך הזוגי הראשון לפי סדר השורות, והפקודה break עם התווית מדלגת על השורות הנותרות.

פקודת break עם תווית יוצאת מהלולאה המסומנת באופן ספציפי, כולל מה שמקונן בתוכה.

challenge icon

אתגר

בינוני

השלימו את firstEven עם הפרמטרים grid: List<List<Int>>. מצאו את הערך הזוגי הראשון לפי סדר השורות, והשתמשו ב-break מתויג כדי לעצור את שתי הלולאות. החזירו ‎-1 אם אין התאמה. אפסים ומספרים זוגיים שליליים נחשבים.

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

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

נסו בעצמכם

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

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

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

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