לולאות מקוננות
חלק מהיחידה יסודות במסלול ה-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.
אתגר
קלקרא שני מספרים שלמים מהקלט:
rows- מספר השורות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 כדי לעבור לשורה הבאההשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 2
אופרטורים לוגיים חלק 1אופרטורים לוגיים חלק 2חזרה – לוגיקה פשוטהאופרטורים לוגיים חלק 3אופרטורים לוגיים חלק 42משתנים וטיפוסי נתונים
מספרים ומשתניםטיפוס הנתונים מחרוזתטיפוס הנתונים בוליאניטיפוס הנתונים Symbolבדיקת טיפוסי נתוניםמוסכמות שמותסיכום – יצירת משתנים8לולאות
לולאת for עם טווחיםלולאת whilebreaknextסיכום – עצרתלולאת timesלולאת untilלולאות מקוננותסיכום – קלט דינמי3אופרטורים חלק 1
אופרטורים אריתמטייםאופרטור מודולוקיצורי דרך אריתמטייםסיכום – חשבון פשוטאופרטורי השוואה6קלט ופלט בסיסיים
פלט באמצעות putsפלט באמצעות print ו־pפלט באמצעות משתניםקלט באמצעות getsשיטת Chompהמרת טיפוסיםחזרה — מחשבון גילחזרה — אמת או שקר9מתודות
הגדרת מתודהפרמטרים של מתודהערכי החזרהסיכום - מתודת Sigmaסיכום - מתודת האימותערכי ברירת מחדל של פרמטרים15מעקב אחר הוצאות יומיות
סקירת הפרויקטיציאה מהתוכניתתרגלו בעצמכם: קומפיילר Ruby אונליין