Menu
Coddy logo textTech

פעולת משיכה

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 21 מתוך 70.

challenge icon

אתגר

קל

הבנק הדיגיטלי שלך צומח! חשבונות יכולים כעת לקבל הפקדות, אבל בנק אמיתי צריך גם לאפשר ללקוחות למשוך כסף. נוסיף מתודת :withdraw(amount), אבל עם בדיקת בטיחות חשובה.

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

תמשיך לעבוד עם שני הקבצים שלך:

  • Account.lua: הוסף מתודת :withdraw(amount) למחלקת Account הקיימת שלך. אם יש בחשבון יתרה מספקת, הפחת את הסכום והחזר true. אם אין מספיק כסף, הדפס Insufficient funds והחזר false בלי לשנות את היתרה.
  • main.lua: צור חשבון, בצע הפקדה כדי להוסיף לו כסף, ואז נסה לבצע כמה משיכות כדי לראות עסקאות מוצלחות וכושלות.

תקבל ארבעה קלטים:

  1. סכום ההפקדה הראשונית
  2. סכום המשיכה הראשונה
  3. סכום המשיכה השנייה
  4. סכום המשיכה השלישית

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

לדוגמה, אם הקלטים הם 100, 30, 50 ו-40, הפלט אמור להיות:

70
20
Insufficient funds
20

בחשבון יש 100 אחרי ההפקדה. המשיכה הראשונה, בסך 30, מצליחה (יתרה: 70), המשיכה השנייה, בסך 50, מצליחה (יתרה: 20), אבל המשיכה השלישית, בסך 40, נכשלת כי נותרו רק 20, ולכן היתרה נשארת 20.

נסו בעצמכם

-- טען את המודול Account באמצעות require
local Account = require('Account')

-- קרא את ארבעת הקלטים
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())

-- צור חשבון אחד
local account = Account:new()

-- הפקד את הסכום ההתחלתי
account:deposit(initialDeposit)

-- נסה לבצע את המשיכה הראשונה והדפס את היתרה
-- TODO: קרא כאן ל־account:withdraw(withdrawal1)
print(account.balance)

-- נסה לבצע את המשיכה השנייה והדפס את היתרה
-- TODO: קרא כאן ל־account:withdraw(withdrawal2)
print(account.balance)

-- נסה לבצע את המשיכה השלישית והדפס את היתרה
-- TODO: קרא כאן ל־account:withdraw(withdrawal3)
print(account.balance)

כל השיעורים ביחידה תכנות מונחה עצמים

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