Menu
CoddyTech

לולאות מקוננות

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

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

בואו ניצור לוח כפל למספרים 1-3 באמצעות לולאות מקוננות:

rows := 3
cols := 3
for i := 1; i <= rows; i++ {
    for j := 1; j <= cols; j++ {
        fmt.Printf("%d×%d=%d\t", i, j, i*j)
    }
    fmt.Println()
}

לאחר הרצת הקוד הזה, נקבל טבלת כפל שבה כל שורה מייצגת ערך אחד של משתנה הלולאה החיצונית (i) כשהוא מוכפל בכל הערכים של משתנה הלולאה הפנימית (j). הפלט יופיע על המסך:

1×1=1   1×2=2   1×3=3   
2×1=2   2×2=4   2×3=6   
3×1=3   3×2=6   3×3=9   

בואו נבין איך זה עובד שלב אחר שלב:

ראשית, הלולאה החיצונית מגדירה את i=1 והלולאה הפנימית רצה עד הסוף:

i=1, j=1: prints "1×1=1"
i=1, j=2: prints "1×2=2"
i=1, j=3: prints "1×3=3"

אחרי שהלולאה הפנימית מסתיימת, אנחנו מדפיסים שורה חדשה באמצעות fmt.Println().

לאחר מכן הלולאה החיצונית מגדירה את i=2 והלולאה הפנימית מתחילה מחדש, כאשר j מתחיל שוב מ-1:

i=2, j=1: prints "2×1=2"
i=2, j=2: prints "2×2=4"
i=2, j=3: prints "2×3=6"

לבסוף, הלולאה החיצונית קובעת את i=3 והלולאה הפנימית רצה פעם אחרונה:

i=3, j=1: prints "3×1=3"
i=3, j=2: prints "3×2=6"
i=3, j=3: prints "3×3=9"

לכל לולאה יש מונה משלה (i ו-j), והערכים של rows ו-cols אף פעם לא משתנים: הם רק אומרים ללולאות מתי לעצור. התבנית הזאת שימושית מאוד לעבודה עם טבלאות נתונים או ליצירת מבנים דמויי רשת.

challenge icon

אתגר

מתחילים

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

השלימו את הלולאות המקוננות כדי להדפיס רשת בגודל 3x3 של כוכביות (*). אחרי כל כוכבית חייב לבוא רווח, כך שכל שורה תיראה כך: * * * (עם רווח בסוף). הפלט הצפוי הוא:

* * * 
* * * 
* * * 

השתמשו במונה חדש לכל לולאה (לדוגמה, i עבור השורות ו-j עבור הכוכביות בשורה) והשוו אותו ל-rows או ל-columns. אל תשנו את rows ואת columns עצמם: כל שורה צריכה שוב את columns.

נסו בעצמכם

package main

import "fmt"

func main() {
	// מספר השורות והעמודות ברשת שלנו
	rows := 3
	columns := 3
	
	// TODO: צרו לולאה מקוננת כדי להדפיס רשת של כוכביות (*)
	// הלולאה החיצונית צריכה לעבור על השורות
	// הלולאה הפנימית צריכה לעבור על העמודות
	for i := 0; i < rows; i++ {
		// הוסיפו כאן את הלולאה הפנימית כדי להדפיס כוכביות בכל עמודה
		
		// פעולה זו מדפיסה שורה חדשה אחרי כל שורה ברשת
		fmt.Println()
	}
}
quiz iconבחנו את עצמכם

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

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

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