לולאה מקוננת
חלק מהיחידה יסודות במסלול ה-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("") עובר לשורה הבאה.
אתגר
קלקראו שני מספרים שלמים מהקלט: 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("") אחרי הלולאה הפנימית כדי לעבור לשורה הבאההשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7קלט/פלט בסיסי
פונקציית ההדפסהאינטרפולציה של מחרוזותקלט באמצעות ReadLineהמרת טיפוסיםחזרה – עד 120חזרה – אמת או שקר3ערכים אופציונליים
מהם ערכים אופציונלייםשליפת ערך באמצעות If LetGuard Letאופרטור איחוד עם Nilסיכום – שליפה בטוחה של ערך9לולאות
לולאת For-Inלולאת Whileלולאת Repeat-WhileBreakContinueחזרה – עצרתטווחים בלולאותלולאה מקוננתחזרה – קלט דינמיתרגלו בעצמכם: Swift אונליין