מבנה המבחן בתוכנה 1

 

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

המבחן יתחלק לשלושה חלקים בעלי משקל דומה. קרוב לודאי שכל חלק הוא שאלה עם מספר סעיפים (לאו דווקא בסדר זה).

 

  1. תיכון בעזרת חוזים. סעיפים אפשריים לדוגמא (לא מכסה את כל האפשרויות שבאות בחשבון):

א.                          לכתוב את החוזה של מנשק שנתון בתיאור מילולי של הפעולות שלו (הדגש על תנאי קדם ותנאי אחר).

ב.                          נתונה מחלקה שמממשת מנשק, לכתוב את משתמר הייצוג (אינוריאנטה)  שלה, ואולי גם להוסיף לתנאי אחר חלקים ששייכים למימוש ( imp_post).  

ג.                           הוספת שירותים או שינוי שלהם במחלקה יורשת/מממשת – האם תקין מבחינת החוזה וכללי תיכון בעזרת חוזים.

ד.                          לכתוב מימוש של חלק מהשירותים

דוגמא1 פתרון1  דוגמא2 פתרון2

  1. הכרת שפת ג'אווה. הדגש הוא על המשמעות (ולא התחביר), ונוגע בעיקר לכללים של ירושה, פולימורפיזם, העמסה (overloading), חריגים (exceptions) וכו'. כל סעיף יכלול קטע קוד, ושאלה לגבי תוצאתו: שגיאת קומפילציה, הפלט שנוצר, או חריג שיתרחש.

           דוגמא1 פתרון1 דוגמא2 פתרון2

  1. תכנות ו/או תיכון. שאלת תיכון יכולה להיות דומה לשאלה 3 מתרגיל מס' 5 (אם כי שאלה כזאת במבחן תיבנה כסדרה של סעיפים מוגדרים היטב). סעיפי תכנות לא יכללו קטעי קוד ארוכים (ייתכנו גם סעיפים שבהם יש להשלים קוד). אנחנו מניחים ידע של מבני נתונים ברמת הקורס מבוא למדעי המחשב (מחסנית, תור, רשימה מקושרת, עץ בינארי) ולא מעבר לכך. תתכן דרישה לממש משהו תוך שימוש במחלקה נתונה שתיאור מספיק שלה יינתן בגוף המבחן (למשל החוזה של המחלקה).

         דוגמא1 פתרון1

הערות:

 

שאלות נוספות לדוגמא יינתנו בהמשך. פתרונות יפורסמו סמוך לבחינה.