Menu
Coddy logo textTech

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

חלק מהיחידה יסודות במסלול ה-R של Coddy. שיעור 44 מתוך 78.

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

for (i in 1:3) {
  for (j in 1:2) {
    cat("i =", i, ", j =", j, "\n")
  }
}

פלט:

i = 1 , j = 1 
i = 1 , j = 2 
i = 2 , j = 1 
i = 2 , j = 2 
i = 3 , j = 1 
i = 3 , j = 2

עבור כל ערך של i, הלולאה הפנימית עוברת על כל הערכים של j. כאשר i הוא 1, j נע מ-1 עד 2. לאחר מכן i הופך ל-2, ו-j מתחיל מחדש מ-1 עד 2.

דוגמה מעשית היא יצירת תבנית כפל פשוטה:

for (row in 1:3) {
  for (col in 1:3) {
    cat(row * col, " ")
  }
  cat("\n")
}

פלט:

1  2  3  
2  4  6  
3  6  9

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

challenge icon

אתגר

קל

קרא שני מספרים מהקלט: rows ו-cols.

השתמש בלולאות מקוננות כדי להדפיס מלבן של מספרים, שבו כל תא מכיל את סכום מספר השורה ומספר העמודה שלו. השורות ממוספרות מ-1 עד rows, והעמודות ממוספרות מ-1 עד cols.

הדפס כל שורה בשורה נפרדת, כשהערכים מופרדים ברווח יחיד. השתמש ב-cat() להדפסה, והוסף תו שורה חדשה אחרי כל שורה.

לדוגמה, אם הקלט הוא 3 ו-4, הפלט אמור להיות:

2 3 4 5 
3 4 5 6 
4 5 6 7

בשורה הראשונה (שורה 1), הערכים הם 1+1=2, 1+2=3, 1+3=4, 1+4=5. בשורה השנייה (שורה 2), הערכים הם 2+1=3, 2+2=4, 2+3=5, 2+4=6, וכן הלאה.

נסו בעצמכם

# קראו את הקלט
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)

# TODO: כתבו את הקוד שלכם למטה
# השתמשו בלולאות מקוננות כדי להדפיס מלבן שבו כל תא מכיל row + column
# השתמשו ב-cat() כדי להדפיס ערכים המופרדים ברווחים, עם ירידת שורה אחרי כל שורה
quiz iconבחנו את עצמכם

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

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

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