אוניברסיטת בן גוריון בנגב תאריך המבחן: 29.01.19 שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות 202.1.9031 מס' הקורס : מיועד לתלמידי : הנדסת תעשיה וניהול שנה תשע"ט א' סמ' א' מועד 3 שעות משך הבחינה : חומר עזר : דף פוליו אחד לא מודפס ולא מצולם. אין להשתמש במחשבון. 100 במבחן זה 5 שאלות. עליך לבחור ולציין בארבע שאלות בלבד, המאפשרות לצבור נקודות. במקרה והבחירה לא תצוין ייבדקו ארבע שאלות ראשונות במחברת המבחן. רשמו תשובותיכם במחברת התשובות בלבד. מותר להגדיר פעולות עזר בכל השאלות, אלא אם נאמר אחרת. כתבו קוד קריא והקפידו על אינדנטציה והערות )אפשר בעברית(. ב ה צ ל ח ה!
שאלה )25 1 נק'( נתונה התכנית הבאה : public static int what1(int x, int y) if(x == 0 && y == 0) return 0; if(x > y) return x + what1(x - 1,y); return what1(x, y - 1) - y; } // what1 public static void main(string[ ] args) } // main System.out.println( what1(5, 2)); ( 10 נק' ) מהו הפלט של התכנית הנ"ל? )מעקב חובה( ( 15 נק' ) מהו יעודה של הפונקציה? what1 א. ב. שאלה )25 2 נק'( כתבו את הפעולה הלא רקורסיבית public static int mostpopular( int [ ] arr) אשר מקבלת כפרמטר מערך של מספרים שלמים arr ומחזירה את המספר שמופיע הכי הרבה פעמים במערך. לדוגמה, עבור המערך int [ ] arr = 2, -3, 4, 2, 5, -3, 2, 5 } יוחזר המספר 2.
שאלה )25 3 נק'( כתבו את הפעולה הרקורסיבית public static String reversesentence(string st,int i, String temp) אשר מקבלת כפרמטרים מחרוזת שמכילה מילים המופרדות ברווח אחד, אינדקס תחילת המחרוזת ומחרוזת ריקה. הפעולה מחזירה מחרוזת חדשה אשר מכילה את אותן המילים אבל בסדר הפוך. לדוגמה, זימון הפעולה reverssentence עם המחרוזת world" "Welcome to Java public static void main(string [ ] args) String st = "Welcome to Java world"; System.out.println(reverseSentence( st, 0, "") ); } // main גורם להדפסה הבאה: world Java to Welcome הערה : אין להשתמש בלולאות ובפעולות נוספות. עזר שאלה )25 4 נק'( נתונה הפעולה : count public static int count ( List <Integer> list1, List <Integer> list2 ) הפעולה מקבלת כפרמטרים 2 רשימות וסופרת כמה פעמים הרשימה list2 מופיעה ברשימה של list1 כאשר האיברים באותו הסדר. לדוגמא : עבור הרשימות הבאות list1 1 2 4 3 5 2 4 3 2 NULL list2 2 4 3 NULL הפעולה מחזירה את הערך 2. עליכם להשלים את הפקודות החסרות. אין להוסיף שורות חדשות או לשנות שורות קיימות. יש לרשום את תשובתכם במחברת התשובות בלבד.
public static int count ( List <Integer> list1, List <Integer> list2 ) int result = 0; Node <Integer> pos1 = list1.getfirst(); Node <Integer> pos2 = list2.getfirst(); while (??? 1??? ) if (pos1.getdata().equals(??? 2???)) while (??? 3??? &&??? 4???.equals(pos2.getData() ) ) pos1=??? 5??? ; pos2=??? 6??? ; } // while if (??? 7??? ) result++; pos2 =??? 8??? ; } // if pos1 =??? 9??? ; } // while return??? 10??? ; } // count שאלה )25 5 נק'( לפניך המחלקה : Student public class Student private String name; private int ID; private String city; private String [ ] coursesname; } // Student כל עצם במחלקה Student מוגדר ע''י ארבעת התכונות הבאות: name שם הסטודנט, ID מספר ת''ז של הסטודנט, city שם עיר המגורים של הסטודנט, coursesname מארך שמות הקורסים שהסטודנט לומד.
כמו כן נתונה ההגדרה של המחלקה : Group כל עצם במחלקה Group מוגדר ע''י שלושת התכונות הבאות: - groupid קוד הקבוצה, - groupname שם הקבוצה ו studlist מערך הפניות לנתוני כל הסטודנטים השייכים לקבוצה הזו. public class Group private int groupid; private String groupname; private Student [ ] studllist; } // Group כתבו פעולה Test5 אשר מקבלת הפניה לעצם Group ומחזירה את רשימת נתוני הסטודנטים שלומדים בקורס " "JAVA וגרים ב."HAIFA" נתוני הסטודנטים ברשימה מאוחסנים לפי אותו הסדר שהם מאוחסנים במערך.studList הערה 1 : אפשר להשתמש בכל הפעולות של המחלקות List<T> String, Node<T>, ) GET - ו SET Student - וגם בפעולות של המחלקות Group )פעולה בונה, פעולות לממש בלי אותן. הערה 2 : אין להשתמש בפעולות עזר נוספות.