לולאות מקוננות
חלק מהיחידה יסודות במסלול ה-GO של Coddy. שיעור 49 מתוך 109.
לולאות מקוננות הן לולאות שממוקמות בתוך לולאה אחרת. הלולאה הפנימית רצה במלואה בכל איטרציה של הלולאה החיצונית.
בואו ניצור לוח כפל למספרים 1-3 באמצעות לולאות מקוננות:
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; 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 והלולאה הפנימית רצה שוב:
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"התבנית הזאת של לולאות בתוך לולאות שימושית מאוד לעבודה עם טבלאות נתונים או ליצירת מבנים דמויי רשת.
אתגר
מתחיליםבאתגר הזה תתרגלו שימוש בלולאות מקוננות כדי להדפיס תבנית פשוטה. הלולאה החיצונית תעבור על השורות, והלולאה הפנימית תעבור על העמודות כדי ליצור רשת קטנה של תווים.
השלימו את הלולאות המקוננות כדי להדפיס רשת בגודל 3x3 של כוכביות (*). אחרי כל כוכבית חייב להופיע רווח, כך שכל שורה תיראה כך: * * * (עם רווח בסוף). הפלט הצפוי הוא:
* * * * * * * * *
נסו בעצמכם
package main
import "fmt"
func main() {
// מספר השורות והעמודות ברשת שלנו
rows := 3
columns := 3
// TODO: צרו לולאה מקוננת להדפסת רשת של כוכביות (*)
// הלולאה החיצונית צריכה לעבור על השורות
// הלולאה הפנימית צריכה לעבור על העמודות
for i := 0; i < rows; i++ {
// הוסיפו כאן את הלולאה הפנימית כדי להדפיס כוכביות בכל עמודה
// פעולה זו מדפיסה שורה חדשה אחרי כל שורה
fmt.Println()
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואה – חלק 1אופרטורי השוואה – חלק 2אופרטור AND לוגיאופרטור OR לוגיאופרטור NOT לוגייסודות קדימות אופרטוריםסיכום – ביצוע השוואות7זרימת בקרה: לולאות
הסבר על לולאת `for`לולאת `for` – בסיסיתלולאת `for` – תנאי בלבדמילת המפתח `break`מילת המפתח `continue`לולאות מקוננותסיכום – חזרה על פעולות2משתנים וסוגי נתונים בסיסיים
מהו משתנההסקת טיפוס באמצעות `:=`מספרים שלמים (int)מספרים בנקודה צפהערכים בוליאנייםמחרוזותערכי אפסקבועיםמוסכמות לשמותסיכום – משתנים וטיפוסים8פונקציות
הבנת פונקציותהצהרה על פונקציהקריאה לפונקציותפרמטרים של פונקציההחזרת ערך יחידהחזרת מספר ערכיםערכי החזרה בעלי שםיסודות תחום ההשפעה של פונקציהסיכום - יצירת קוד לשימוש חוזר3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור חילוקאופרטור מודולואופרטור השמהאופרטורי השמה מורחבתהגדלה והקטנהסיכום – חישובים6זרימת בקרה: תנאים
פקודת `if`מילת המפתח `else`מילת המפתח `else if`הסתרת משתנים בתוך `if`אתחול משתניםפקודת `switch``switch` עם ביטויים`switch` ללא ביטוימילת המפתח `fallthrough`סיכום - קבלת החלטותתרגלו בעצמכם: קומפיילר Go אונליין