Menu
Coddy logo textTech

לולאת repeat-until

חלק מהיחידה יסודות במסלול ה-Lua של Coddy. שיעור 72 מתוך 90.

Lua מציעה סוג נוסף של לולאה שנקרא לולאת repeat-until, ויש לה מאפיין ייחודי שמבדיל אותה מלולאת while שזה עתה למדת. ההבדל העיקרי הוא שלולאת repeat-until תמיד מבצעת את בלוק הקוד שלה לפחות פעם אחת, ללא קשר לתנאי.

התחביר נראה כך:

repeat
    -- קוד שיש לחזור עליו
until condition

שימו לב שהתנאי נבדק בסוף, לאחר שהקוד כבר רץ פעם אחת. הלולאה ממשיכה לחזור על עצמה עד ש התנאי הופך ל־true - וזה ההפך מלולאת while שממשיכה כל עוד התנאי הוא true.

הנה דוגמה מעשית המדמה הטלת קובייה עד שמקבלים 6:

local roll = 0

repeat
    roll = math.random(1, 6) -- מגריל מספר בין 1 ל-6
    print("Rolled:", roll)
until roll == 6

print("Finally got a 6!")

הלולאה הזו מבטיחה שתטיל את הקובייה לפחות פעם אחת, והיא ממשיכה להטיל עד שהתנאי roll == 6 הופך לאמת. ההתנהגות הזו של „בצע קודם, בדוק אחר כך” הופכת לולאות repeat-until למושלמות למצבים שבהם צריך שמשהו יקרה לפחות פעם אחת לפני שמחליטים אם להמשיך.

challenge icon

אתגר

קל

אתה יוצר סימולציה פשוטה לאימות סיסמה.

  1. צור משתנה בשם password והגדר אותו למחרוזת ריקה ("").
  2. צור משתנה נוסף בשם correctPassword והגדר אותו לערך "secure123".
  3. צור טבלה בשם attempts שמכילה את ניסיונות הסיסמה הבאים בסדר הזה:
    • "password"
    • "123456"
    • "admin"
    • "secure123"
  4. צור משתנה בשם index והגדר אותו ל-1. תשתמש בו כדי לעקוב אחר הניסיון הנוכחי.
  5. השתמש בלולאת repeat-until כדי:
    • להקצות את הניסיון הנוכחי ל-password באמצעות attempts[index]. כך קוראים את הפריט שנמצא במיקום index בטבלה
    • להדפיס את password הנוכחי
    • להגדיל את index ב-1 (לדוגמה, index = index + 1) כדי לעבור לניסיון הבא
  6. הלולאה צריכה להיעצר רק כאשר password שווה ל-correctPassword.

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

נסו בעצמכם

-- אתחלו משתנים
local password = ""
local correctPassword = "secure123"

-- רשימת ניסיונות להזנת סיסמה
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1

-- TODO:
-- השתמשו בלולאת repeat-until כדי:
-- 1. להקצות לניסיון הנוכחי את הטקסט המדויק מההוראות
-- 2. להדפיס את הסיסמה שנוסתה
-- 3. לעבור לניסיון הבא
-- עצרו כאשר password תואם ל-correctPassword
quiz iconבחנו את עצמכם

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

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

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