Menu
CoddyTech

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

חלק מהיחידה יסודות במסלול ה-Ruby של Coddy. שיעור 46 מתוך 88.

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

rows = 2
cols = 3
for i in 1..rows
  for j in 1..cols
    puts "i=#{i}, j=#{j}"
  end
end

הפעולה הזו מדפיסה שש שורות. עבור כל ערך של i, הלולאה הפנימית עוברת על כל הערכים של j.

תחילה i הוא 1 בזמן ש-j עובר דרך 1, 2, 3. לאחר מכן i הופך ל-2 ו-j שוב עובר דרך 1, 2, 3. rows ו-cols לעולם לא משתנים: הם רק אומרים ללולאות מתי לעצור.

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

for row in 1..3
  for col in 1..3
    print "#{row * col} "
  end
  puts ""
end

הקוד הזה מדפיס רשת של מוצרים בגודל 3x3. הפקודה print משאירה את הערכים באותה שורה, ו-puts "" עוברת לשורה חדשה לאחר השלמת כל שורה. אפשר גם לשלב סוגים שונים של לולאות, למשל לולאת times בתוך לולאת for.

challenge icon

אתגר

קל

קרא שני מספרים שלמים מהקלט:

  1. rows - מספר השורות
  2. cols - מספר העמודות

השתמש בלולאות מקוננות כדי להדפיס מלבן המורכב מכוכביות (*) במידות הנתונות. כל שורה צריכה להכיל cols כוכביות המופרדות ברווחים, וכל שורה צריכה להיות בשורה נפרדת.

השתמש ב-print עבור הכוכביות בתוך שורה וב-puts כדי לעבור לשורה הבאה אחרי כל שורה.

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

* * * *
* * * *
* * * *

אם הקלט הוא 2 ו-5, הפלט צריך להיות:

* * * * *
* * * * *

אין רווח אחרי ה-* האחרון בשורה.

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

נסו בעצמכם

# קראו את הקלט
rows = gets.to_i
cols = gets.to_i

# TODO: כתבו את הקוד שלכם למטה
# השתמשו בלולאות מקוננות כדי להדפיס מלבן של כוכביות
# השתמשו ב-print להדפסת כוכביות בשורה וב-puts כדי לעבור לשורה הבאה
quiz iconבחנו את עצמכם

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

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

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