האם ניתן להשתמש במחלקות מחלק 2 במימוש של מחלקות מחלק 1?
לא.
הקוד של חלק 2 (שבחלקו אתם משנים מחלקות של חלק 1) לא אמור להשפיע על ההרצה של חלק 1.
(כלומר, הקוד של חלק 2 הוא תוספת לחלק 1, ואם נקמפל רק את הקבצים של חלק 1, אז נוכל להפעיל את השיטות מחלק 1)
published on 18/01/2013 00:05:15 by Adi Suissa
האם צריך לספק בדיקות גם למחלקות שסופקו לנו?
אין צורך לספק בדיקות למחלקות שסיפקנו.
(לא נוריד/נוסיף ניקוד למי שעשה כך)
published on 18/01/2013 00:03:48 by Adi Suissa
זריקת EmptyStackException
על מנת לזרוק את החריגה EmptyStackException יש להוסיף במחלקה PeekableStackAsArray את השורה הבאה:
import java.util.EmptyStackException;

(כמו שנעשה במחלקה StackAsArray)
published on 17/01/2013 23:57:40 by Adi Suissa
Clarification
In the assignment under "Class PostfixCalculator" (page 7), it should say (modification in bold):

The primary class in the code, which you will implement for Part 1 of the assignment, is Class PostfixCalculator. This class will extend the Calculator class. Note that the method evaluate(String expr), receives expr which is a String representing a valid postfix expression. This method evaluates (i.e. computes the numerical value of) expr, and stores its value. The value can be restored by using the getCurrentResult() method. The evaluate method should use the algorithm described above, and should be implemented by using a StackAsArray object.

Hope it clarifies some issues.

published on 14/01/2013 12:48:33 by Adi Suissa
האם צריך להגיש את קובץ ה- Tester.java?
כן.
עליכם להגיש בקובץ ה- zip גם את הקובץ Tester.java
published on 09/01/2013 17:01:46 by Adi Suissa
האם לזרוק חריגה במקרה של חלוקה באפס?
עקרונית כדאי לזרוק חריגה מתאימה במקרה זה.
בכל מקרה, אנחנו לא נבדוק את התוכנית שלכם עם חלוקה באפס.
published on 09/01/2013 16:59:45 by Adi Suissa
בחלק המתאר את הבדיקות רשום: test(pc.evaluate("1 2 +") == 3.0, ...)
צריך להיות:

pc.evaluate("1 2 +");
test(pc.getCurrentResult() == 3.0, ...);
published on 09/01/2013 16:57:08 by Adi Suissa
בחלק הבונוס - מה צריך להיות תיאור החריגה במקרה מסוים
תיאור החריגה שאתם נותנים (המחרוזת) צריך לתאר את הסיבה לחריגה. הדוגמאות שקיבלתם מתארות חלק מן הסיבות.
על תיאור החריגה שאתם כותבים לפרט את הסיבה לחריגת ה- parsing.

published on 09/01/2013 16:54:27 by Adi Suissa
תיעוד שיטות private
השימוש ב- javadoc הינו מומלץ (ולא חובה) בתרגיל זה.
ניתן ורצוי להשתמש ב- javadoc על מנת לתאר גם שיטות שהן private.
published on 03/01/2013 11:40:33 by Adi Suissa
האם מותר להוסיף בנאים/שיטות ציבוריות (למשל ב- Calculator)?
התוכן של המחלקות Calculator, InfixCalculator ו- PostfixCalculator בכוונה לא נתון במפורש, ולכן אתם יכולים להוסיף בנאים, שיטות ושדות גם פומביים במחלקות אלו (כל עוד זה הגיוני ותורם להוסיף את השיטות האלו).
יתר המחלקות המוגדרות בתרגיל צריכות להבנות כפי שמוגדר.
published on 03/01/2013 11:39:01 by Adi Suissa
מספר הבדיקות המצופה
יש לספק לפחות 50 בדיקות על חלק החובה (חלק 1 וחלק 2).
ככל שתוסיפו עוד בדיקות, תוכלו לוודא שהקוד שכתבתם מכסה יותר מקרים.
published on 03/01/2013 11:37:53 by Adi Suissa
בעיית דיוק בדוגמאות

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

"( 10 - 10.02 )"

מחזיר 0.019999999- ולא 0.02- כמו שהיינו מצפים).

ולכן אנו נבדוק את התוצאות ברמת דיוק של 4 ספרות אחרי הנקודה באופן הבא: יהי ערך הביטוי המצופה במשתנה y ויהי ערך הביטוי המשוערך על ידי המחשבון x. אם 0.0001 > | x - y |, אז התשובה היא נכונה.

חשבו כיצד תוכלו להכניס חישוב זה לתוכנית הבדיקות שלכם.

דרך אחרת לבדוק את המחשבון (InfixCalculator), היא לוודא האם החישוב המתמטי שווה לערך המשוערך ע"י המחשבון:

calc.evaluate("( 10 - 10.02 )");
if (calc.getCurrentResult() == (10 - 10.02))
      ...
דרך זו פחות מומלצת, כיוון שמחשבים שונים מבצעים פעולות חשבון, שלנו נראות זהות, באופן שונה, והתוצאה שעלולה להתקבל תהיה שונה.

published on 03/01/2013 11:34:00 by Adi Suissa