solution3_yw

לממש פרוטוקול ולידאציה ע"י ממוש פונקציה שמקבלת STRUCT ובוא טקסט text וכיוון השליחה A ל B או ולהחזיר האם ההודעה היא VALID או INVALID לפי ה FINAL STATE MACHINE הבא :

מצב1 :
אם הכיוון הוא A ל B
ו ההודעה היא OPEN_CONECTION
עבור למצב 2 (וכמובן החזר VALID)
אחרת השאר במצב 1 (וכמובן החזר INVALID)

מצב2:
אם הכיוון הוא B ל A
ו ההודעה היא OPEN_CONECTION_ACKED
עבור למצב 3 ( החזר VALID)
אחרת עבור למצב 1 ( החזר INVALID)

מצב3:
אם הכיוון הוא A ל B
ו ההודעה היא LIST,GETLIFE,LISTEN,GETALL,SAVEALL,SAVE,SAVETHEQUEEN...
יש שאני לא זוכר...
עבור למצב 4 ( החזר VALID)
אם זה EXIT עבור למצב 5 ( החזר VALID)
אחרת עבור למצב 1 ( החזר INVALID)

מצב4:
אם הכיוון הוא B ל A
ו ההודעה היא המילה שהתקבלה במצב 3 כאשר היא מופיעה פעמיים כאשר יש רק שני רווחים בין המילים או שני רווחים ובינהם מחרוזת המורכבת מאותיות קטנות לדוגמא : LIST LIST, SAVE fddf444542@@d SAVE

עבור למצב 3 ( החזר VALID)
אחרת עבור למצב 1 ( החזר INVALID)

מצב5:
אם ההודעה היא EXIT_ACKED ובכוון מB לA
עבור למצב 1 ( החזר VALID)
אחרת עבור למצב 1( החזר VALIDIN)

/////////////////////////////////////////////////////////////////

התבקשנו לתכנן מערכת המדמה מכונת מצבים אשר מצביה והקלטים האפשריים בה מוגדרים במסמך מסודר (באנגלית). בגדול ישנה פונקציה הטעונה השלמה ותפקידה הוא לקבל מסר העובר בין שני מחשבים א' ו-ב'. המסר מגיע כמצביע למבנה ויש לנתח את תוכנו ולהחליט האם המסר חוקי ולעבור למצב הבא (עפ"י הטבלה) או שנפלה טעות והמסר אינו חוקי - במקרה זה יש לחזור למצב ההתחלתי. כל מסר כזה מורכב משני חלקים: כיוון המסר (א' ל-ב' או ב' ל-א') ותוכן המסר כמחרוזת. ישנם 5 מצבים למכונה כאשר הראשון הוא ההתחלתי; המעברים בין המצבים הראשון לשני ומהשני לשלישי הם די קלים - יש לוודא כי המסר בכיוון מסויים נתון והמחרוזת היא מחרוזת מסויימת נתונה. במצב השלישי ניתן לקבל במחרוזת רק אחת מבין תשע מחרוזות מוגדרות מראש ורק במידה והמחרוזת היא אחת מהן עוברים למצב הרביעי (אחרת, חוזרים למצב ההתחלתי). במצב הרביעי מקבלים מחרוזת אשר אמורה להיות במבנה הבא: מחרוזת מקושקשת של אותיות קטנות וספרות אותה מקיפות שתי מילים - אחת מכל צד. המילים האלה הן למעשה הפקודה שניתנה במעבר ממצב שלישי לרביעי. נניח ובמצב השלישי התקבלה הפקודה החוקית: "LIST". אזי במצב הרביעי ניתן לקבל מחרוזת מהצורה: "LIST asdb32b2d76d LIST" בלבד. במחרוזת המתקבלת במצב הרביעי חייבים להיות שני רווחים בדיוק והמילה האמצעית אמורה לענות על ביטוי רגולרי פשוט. שאר המעברים הם טריוויאלים.
Last edited on
Topic archived. No new replies allowed.