Menu
CoddyTech

לולאה מקוננת

חלק מהיחידה יסודות במסלול ה-Swift של Coddy. שיעור 49 מתוך 86.

לולאה מקוננת היא פשוט לולאה בתוך לולאה אחרת. הלולאה הפנימית משלימה את כל האיטרציות שלה בכל איטרציה בודדת של הלולאה החיצונית.

let rows = 3
let cols = 2
for row in 1...rows {
    for col in 1...cols {
        print("Row \(row), Col \(col)")
    }
}
// פלט:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2

עבור כל ערך של row, הלולאה הפנימית מתחילה מחדש ועוברת על כל הערכים של col, מ-1 ועד cols. לכן, כאשר rows = 3 ו-cols = 2, הקוד שבתוכה רץ בסך הכול 6 פעמים (3 × 2). הערכים של rows ו-cols לעולם אינם משתנים: הם רק אומרים ללולאות מתי לעצור.

לולאות מקוננות משמשות בדרך כלל לעבודה עם מבנים דמויי רשת או ליצירת תבניות.

הנה דוגמה שמדפיסה מלבן פשוט של כוכביות:

for row in 1...2 {
    for col in 1...4 {
        print("*", terminator: "")
    }
    print("")  // עבור לשורה הבאה
}
// פלט:
// ****
// ****

ה־terminator: "" מונע מ־print להוסיף שורה חדשה, כך שכוכביות מופיעות באותה שורה. לאחר שהלולאה הפנימית מסתיימת, print("") עובר לשורה הבאה.

challenge icon

אתגר

קל

קראו שני מספרים שלמים מהקלט: rows ו-cols. השתמשו בלולאות מקוננות כדי להדפיס רשת של מספרים, שבה כל תא מציג את מכפלת מספר השורה שלו במספר העמודה שלו.

הקלטים הבאים יינתנו לכם:

  • שורה ראשונה: מספר השורות (לדוגמה, "3")
  • שורה שנייה: מספר העמודות (לדוגמה, "4")

דרישות:

  • השתמשו בלולאה חיצונית עבור השורות (מ-1 עד rows)
  • השתמשו בלולאה פנימית עבור העמודות (מ-1 עד cols)
  • הדפיסו את מכפלת מספרי השורה והעמודה הנוכחיים
  • הפרידו בין הערכים באותה שורה באמצעות רווח
  • הדפיסו כל שורה בשורה נפרדת

רמז: השתמשו ב-terminator: " " כדי להשאיר את הערכים באותה שורה, ואז השתמשו ב-print("") אחרי הלולאה הפנימית כדי לעבור לשורה הבאה.

לדוגמה, אם rows הוא 3 ו-cols הוא 4, הפלט צריך להיות:

1 2 3 4 
2 4 6 8 
3 6 9 12 

השתמשו במונה חדש עבור כל לולאה (לדוגמה, row עבור השורות ו-col עבור המספרים בשורה) והשוו אותו ל-rows או ל-cols. אל תשנו את rows ואת cols עצמם: כל שורה זקוקה שוב ל-cols.

נסו בעצמכם

let rows = Int(readLine()!)!
let cols = Int(readLine()!)!

// TODO: כתבו את הקוד שלכם למטה
// השתמשו בלולאות מקוננות כדי להדפיס טבלת כפל
// לולאה חיצונית: עברו על השורות (1 עד rows)
// לולאה פנימית: עברו על העמודות (1 עד cols)
// הדפיסו את המכפלה של row * column
// השתמשו ב־print(..., terminator: " ") כדי להשאיר את הערכים באותה שורה
// השתמשו ב־print("") אחרי הלולאה הפנימית כדי לעבור לשורה הבאה
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה יסודות

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