מימוש לדוגמא דוד- מחברת 2

היי בדוגמא של המימוש קוד לדוד, במקרה שהשעה אחרי 7 אך לא אחרי 8 והדוד דלוק , הקוד מנחה לכבות את הדוד.
לא ברור לי האם זה אמור להיות ככה מדרישת המימוש או שזו מקרה קצה בתוכנית?

אלעד.

דרישות מימוש, ר’ גרף שמופיע לפני

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

התעוררתי בבהלה ב־7 וקלטתי שהשארתי ת’דוד דלוק מהיום לפני :stuck_out_tongue:

3 לייקים

@Yam אשמח לשאול שאלה בהקשר-
בתנאי השני, לא הבנתי למה השורה שסימנתי פה בבולד נחוצה?

if not is_boiler_on and hour == 7 and minute > 0:
is_boiler_on = True
else:
if is_boiler_on:
is_boiler_on = False

בודקים האם הבוילר דלוק. המטרה היא לכבות אותו אם כן

לייק 1

אם הדוד היה כבוי אז הוא נדלק רק ב07:01 לפי הקוד
בגלל זה הבלבול ניראה לי.

יש לי שאלה שקשורה לאותה דוגמא. להלן רצף התהליכים:

  1. הרצתי את הקוד כפי שניתן בדוגמא (לא ערכתי).
  2. הזנתי את השעה חצות ו-23 דקות, 00:23.
  3. קיבלתי הודעת שגיאה (קוד לא תקין).
  4. ניסיתי לערוך את הקוד (לחצתי על שדה הטקסט), אך כשלחצתי עליו, הוא הפך משדה כתיבת קוד רגיל למה שרואים בתמונה המצורפת:

סמני את התא, לחצי esc, אז y ואז shift+enter

לייק 1

יש לי כמה דברים שאני לא סגורה עליהם לגבי צורת הפיתרון:

  1. מה משמעות המשתנה של “is_boiler_on”? האם הוא מתייחס למצב הנתון (כרגע הדוד דולק/כבוי) או למצב הרצוי (יש להדליק/לכבות אותו בהתאם להוראה)? למשל
if not is_boiler_on and hour == 7 and minute > 0:
    is_boiler_on = True

למשל פה- נראה שבשורת התנאי המשתנה מתייחס למצב הנתון (שהדוד כבוי) אבל בפקודה הוא דלוק, מה שגורם לי להבין שהמשתנה מתייחס להוראה “הדלק את הדוד”
2. ממה שאני מבינה, בחלק של ה-“else” יש התייחסות רק למצב בו התנאי “הדוד דלוק” מוביל לביטוי שקר ואז בעצם נגמרת התכנית, אבל לא ברור לי איפה החלק של האמת שמוביל להוראה לכבות את הדוד. אני מתכוונת לחלק הזה:

else:
    if is_boiler_on:
        is_boiler_on = False
  1. החלק שהכי פחות הבנתי זה ההתייחסות למשתנה חדש “boiler_status”- מה משמעותו? לאיזה חלק בגרף הוא מתייחס? ואיך אפשר בכלל להוסיף אותו בתנאים בלי להגדיר אותו מראש עם יתר המשתנים? הכוונה לחלק הזה:
if is_boiler_on:
    boiler_status = "on"
else:
    boiler_status = "off"

print("Boiler is " + boiler_status + " right now.")

שאלה 1

משתנה הוא סך הכל שם ששומר מצב. is_boiler_on הוא משתנה שבתוכו יש או True, או False. אם בתוך המשתנה יש True אז הדוד דולק, ואם בתוכו יש False הדוד כבוי.
משמע, not is_boiler_on יתקיים רק אם הדוד כבוי, ולכן אנחנו נדליק את הדוד אם הוא כבוי, והשעה היא בין 7:00 ל־8 (לא כולל קצוות).

לא הבנתי את שאלה 2.

שאלה 3

המשתנה boiler_status הוא סך הכל מחרוזת שהמטרה שלה היא נוחות עבור המשתמש. אם is_boiler_on (אם הדוד דולק) היא תהיה “on”, ואם not is_boiler_on היא תהיה “off”. אין לזה משמעות מבחינת תכנות, אלא אלו פשוט מילים שנוח יותר לבן־אדם לקרוא. אנחנו משתמשים בזה אח"כ להדפסה עבור המשתמש כדי שיהיה לו נעים לקרוא משפט קוהרנטי באנגלית.
זה פשוט יותר נעים לקרוא “Boiler is on right now” מאשר לקרוא: “Is the boiler on right now? True”