לולאת while
חלק מהיחידה יסודות במסלול ה-GDScript של Coddy. שיעור 44 מתוך 92.
לולאת for רצה פעם אחת עבור כל מספר בטווח. לולאת while ממשיכה לרוץ כל עוד תנאי הוא true:
var count := 3
while count > 0:
print(count)
count -= 1
print("Go!")3
2
1
Go!התנאי נבדק לפני כל איטרציה. כש־count הופך ל־0, הביטוי count > 0 הוא false, ולכן הלולאה נעצרת והתוכנית ממשיכה לאחריה. אם התנאי הוא false מלכתחילה, הבלוק לא מתבצע כלל.
הבלוק חייב לשנות משהו שהתנאי תלוי בו. כאן count -= 1 מקרב את count ל־0. בלעדיו, התנאי יישאר true והלולאה לעולם לא תסתיים.
השתמשו ב־while כשלא ידוע מראש כמה איטרציות תצטרכו. לדוגמה, הקוד הזה מוצא את החזקה הקטנה ביותר של 2 שגדולה מ־27:
var number := 27
var power_of_two := 1
while power_of_two <= number:
power_of_two *= 2
print(power_of_two)power_of_two מוכפל בכל איטרציה: 2, 4, 8, 16, 32. ב־32, הביטוי power_of_two <= number הוא false, ולכן התוכנית מדפיסה 32.
אתגר
קלהתוכנית קוראת מספר עשרוני אחד לתוך number.
השתמש בלולאת while כדי לחלק את number ב־2 כל עוד הוא גדול או שווה ל־3.5. לאחר מכן הדפס את התוצאה, שהיא הערך הראשון שקטן מ־3.5.
לדוגמה, עבור הקלט 15 הערכים הם 15, 7.5, 3.75 ו־1.875, ולכן התוכנית מדפיסה:
1.875אם הקלט כבר קטן מ־3.5, הדפס אותו ללא שינוי. אל תשתמש בלולאת for.
נסו בעצמכם
extends Node
func _ready():
var number := float(OS.read_string_from_stdin())
# חלקו את number ב־2 כל עוד הוא גדול מ־3.5 או שווה לו, ואז הדפיסו אותו
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים חלק 1
אופרטורים אריתמטייםחלוקה שלמהאופרטור מודולוקיצורי דרך אריתמטייםסיכום – חשבון פשוטאופרטורי השוואהתרגלו בעצמכם: קומפיילר GDScript אונליין