לולאת 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 למושלמות למצבים שבהם צריך שמשהו יקרה לפחות פעם אחת לפני שמחליטים אם להמשיך.
אתגר
קלאתה יוצר סימולציה פשוטה לאימות סיסמה.
- צור משתנה בשם
passwordוהגדר אותו למחרוזת ריקה (""). - צור משתנה נוסף בשם
correctPasswordוהגדר אותו לערך"secure123". - צור טבלה בשם
attemptsשמכילה את ניסיונות הסיסמה הבאים בסדר הזה:"password""123456""admin""secure123"
- צור משתנה בשם
indexוהגדר אותו ל-1. תשתמש בו כדי לעקוב אחר הניסיון הנוכחי. - השתמש בלולאת
repeat-untilכדי:- להקצות את הניסיון הנוכחי ל-
passwordבאמצעותattempts[index]. כך קוראים את הפריט שנמצא במיקוםindexבטבלה - להדפיס את
passwordהנוכחי - להגדיל את
indexב-1 (לדוגמה,index = index + 1) כדי לעבור לניסיון הבא
- להקצות את הניסיון הנוכחי ל-
- הלולאה צריכה להיעצר רק כאשר
passwordשווה ל-correctPassword.
בכל פעם שהלולאה רצה, היא קוראת ניסיון אחד מהטבלה, מדפיסה אותו ואז עוברת לניסיון הבא. הלולאה ממשיכה לפעול עד שנמצאת הסיסמה הנכונה.
נסו בעצמכם
-- אתחלו משתנים
local password = ""
local correctPassword = "secure123"
-- רשימת ניסיונות להזנת סיסמה
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1
-- TODO:
-- השתמשו בלולאת repeat-until כדי:
-- 1. להקצות לניסיון הנוכחי את הטקסט המדויק מההוראות
-- 2. להדפיס את הסיסמה שנוסתה
-- 3. לעבור לניסיון הבא
-- עצרו כאשר password תואם ל-correctPasswordהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורים 2: יחסים ולוגיקה
אופרטורי שוויוןאופרטורים יחסייםהאופרטור 'and'האופרטור 'or'האופרטור 'not'הערכה בקצר חשמליערכים אמתיים ושקרייםסיכום – לוגיקה פשוטה10טבלאות חלק 1: בסגנון רשימה
מהי טבלה?יצירת טבלהגישה לאיברים לפי אינדקסשינוי איברים לפי אינדקסאופרטור האורך '#'table.insert()table.remove()סיכום - ניהול חברי החבורה13פרויקט: חנות שיקויים פשוטה
הגדרת הפרויקטהוספת שיקוי2משתנים וסוגי נתונים
מהו משתנה?מספריםמחרוזותערכים בוליאנייםהערך 'nil'הפונקציה type()מוסכמות למתן שמותסיכום – פרופיל דמות5פלט בסיסי
הדפסת ערכים מילולייםהדפסת משתניםהדפסת ערכים מרוביםשילוב מחרוזות ומשתניםהפונקציה tostring()קלטהמרת טיפוסיםסיכום – דוח מצבסיכום – עד 1208יסודות עיבוד מחרוזות
string.len()string.upper ו־string.lowerstring.sub()string.rep()string.find()חזרה – עיצוב שם משתמש3אופרטורים 1: חשבון ושרשור
אופרטורים אריתמטייםאופרטור מודולואופרטור חזקהשרשור מחרוזותקדימות אופרטוריםסיכום – חישובים פשוטים9יסודות הפונקציות
הגדרת פונקציהקריאה לפונקציהפונקציות עם פרמטריםפונקציות עם כמה פרמטריםהפקודה 'return'סיכום – מחשבון שטח12יסודות הלולאות
לולאת whileלולאת repeat-untilלולאת for מספריתלולאת for עם צעדהפקודה 'break'סיכום – ספירה לאחורתרגלו בעצמכם: קומפיילר Lua אונליין