prepd.אתר תרגול לבחינות
איך ללמודצור קשר
© 2026 prepd. כל הזכויות שמורות.·אודות·תנאי שימוש·מדיניות פרטיות·נגישות
prepd›מבוא למדעי המחשב

מבוא למדעי המחשב

תכנות, רקורסיה, מערכים, מחרוזות, עצים בינאריים ורשימות מקושרות

סטטיסטיקות מבחנים
כדי לגשת למבחני סימולציה ועוד המון שאלות נוספות, פתחו גישה מלאה
רמת קושי:
(שאלת בונוס המיועדת לקבוצות חרבות ברזל B/C/G בלבד, 5 נקודות)

הקיפו בעיגול את התשובה שמתארת בצורה הנכונה את ההתנהגות האסימפטוטית של הביטוי ∑i=1n​4i:

א. Θ(4n)

ב. Θ(log(n)⋅4n)

ג. Θ(n⋅4n)

ד. Θ(n2⋅4n)
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת תל אביבמועד א · 2026 · סמסטר א
★★★★★
סיבוכיות זמן
שאלה 1 - סעיף א (10 נקודות)

נתון הממשק Filter<T> המכיל שיטה בוליאנית accept(T element) המחזירה ערך true אם"ם האיבר element מתקבל על ידי הפילטר.



השלימו את השיטה הבאה המקבלת עצם מטיפוס Iterable בשם someElements ועצם מטיפוס Iterable בשם someFilters. השיטה מחזירה true אם ורק אם כל אחד מהאיברים ב-someElements מתקבל על ידי לפחות מסנן אחד ב-someFilters.

ניתן להניח כי הארגומנטים אינם null, העצם someFilters מכיל לפחות איבר אחד והעצם someElements מכיל לפחות איבר אחד.

העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בן גוריוןמועד ב · 2026 · סמסטר א
★★★★★
לולאותתנאיםתכנות מונחה עצמיםשיטות סטטיותגנרטורים
שאלה 1 - סעיף א' (10 נקודות)

בסעיף זה כל המספרים מיוצגים כמחרוזת בשיטת lsbf (Least Significant Bit First) בכל הפונקציות הנתונות.

הסבר מפורט על שיטת ייצוג זו מופיע בסוף הסעיף.

לרשותכם שתי הפונקציות הבאות, בהן ניתן להשתמש בתשובתכם:

• private static String decimalDouble(String s){…}
הפונקציה מקבלת מחרוזת המייצגת מספר בבסיס 10, מכפילה את המספר ב-2 ומחזירה מחרוזת המייצגת את התוצאה בבסיס 10.


• private static String decimalIncrement(String s){…}
הפונקציה מקבלת מחרוזת המייצגת מספר בבסיס 10, מוסיפה למספר 1 ומחזירה מחרוזת המייצגת את התוצאה בבסיס 10.


ממשו את הפונקציה public static String binaryToDecimal(String s) המקבלת מחרוזת s המייצגת מספר בבסיס 2 ומחזירה מחרוזת המייצגת את אותו מספר בבסיס 10.

דוגמאות:
• עבור הקלט "0", על הפונקציה להחזיר "0"

• עבור הקלט "11001", על הפונקציה להחזיר "19"

כיוון שהמספר העשרוני 19 ("91" כמחרוזת lsbf), מיוצג בבינארי על ידי המספר 10011 ("11001" כמחרוזת lsbf).


יש להניח כי הקלט הוא קלט תקין, כלומר מהווה מחרוזת מספרית מבסיס 2:
1. המחרוזת אינה null ואינה ריקה.

2. כל התווים במחרוזת הם ספרות חוקיות בבסיס 2 ('0' או '1').

3. התו האחרון במחרוזת אינו הספרה '0', אלא רק במקרה שיש במחרוזת ספרה אחת.


תזכורת ייצוג מספרים בשיטת Least Significant Bit First:

בייצוג זה הספרה הפחות משמעותית (זו שמייצגת את ה"אחדות") היא התו הראשון במחרוזת.
כלומר, בהינתן הבסיס
b - התו הראשון במחרוזת מייצג כפולה של b0, התו השני במחרוזת מייצג כפולה של b1, התו השלישי מייצג כפולה של b2, וכך הלאה.

לדוגמא, המחרוזת "0111" שהיא מחרוזת מספרית בבסיס 2, מייצגת את המספר 14 שכן

14=0×20+1×21+1×22+1×23

כמו כן, המחרוזת "129" היא מחרוזת מספרית בבסיס 10 מייצגת את המספר 921.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בן גוריוןמועד א · 2026 · סמסטר א
★★★★★
ייצוג מספריםמחרוזותלולאותמעקב אחר קוד
שאלה 1 - סעיף ב' (10 נקודות)

לפניכם המחלקה FlatMatrix המממשת את הממשק Matrix (ראו תיאור בנספח) ומייצגת מטריצה אשר ממומשת כמערך חד-מימדי של איברים מטיפוס double. מערך זה שמור כשדה matrix במחלקה. השדות rows ו-columns מייצגים את מספר השורות והעמודות של המטריצה בהתאמה.

השלימו את השיטה set (5 נקודות) ואת הבנאי המעתיק (5 נקודות). לנוחיותכם, מעטפת חלקית של המחלקה מופיעה סביב שתי השיטות. אין צורך להשתמש בשיטות מחלקה שאינן נתונות לכם.

דוגמה: המחלקה מייצגת את הרעיון של מטריצה בת 2 שורות ו-3 עמודות המכילה את האיברים

[17​20​13​]

באופן הבא – כמערך חד מימדי: [3 0 7 1 2 1].

הנחיות:

השיטה set מקבלת שני אינדקסים i ו-j, ומעדכנת את הערך בתא (i,j) של המטריצה ל-value.

אין להניח שום הנחות על הקלט, ואם הקלט אינו תקין יש לזרוק IllegalArgumentException.



הבנאי המעתיק מקבל מטריצה otherMatrix כפרמטר, ויוצר מטריצה חדשה על ידי העתקה עמוקה:

לכל i ו-j, אינדקסים חוקיים ב-otherMatrix, i ו-j הם גם אינדקסים חוקיים במטריצה החדשה ותוכן התא (i,j) בשתי המטריצות שווה. יש להניח שהקלט אינו null.

יש להניח כי קיים תא עם אינדקסים (0,0).

העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בן גוריוןמועד א · 2026 · סמסטר א
★★★★★
מחלקותתכנות מונחה עצמיםמערכיםמערך דו-ממדי
בשאלה זו 4 סעיפים שאינם קשורים זה לזה.

סעיף א' (5 נק'):
נתון הקוד הבא:




א. עבור הקלט lst=[1,3,5,5,5,5,6,7], key=5, מה תחזיר הפונקציה?

ב. נסמן ב-n את אורך רשימת הקלט lst. ציינו את סיבוכיות זמן הריצה במקרה הגרוע כתלות ב-n.

סעיף ב' (5 נק'):
נתון האל"ב
{a,b,c,d} וכן נתונים חמישה קידודים. לכל קידוד סמנו האם הוא prefix free, uniquely decodable but not prefix free, או not uniquely decodable. סמנו ב-X את המשבצת המתאימה.

1. a=0,b=00,c=000,d=0000

2. a=00,b=01,c=10,d=11

3. a=00,b=01,c=101,d=110

4. a=10,b=101,c=1011,d=11

5. a=0,b=01,c=011,d=0111

סעיף ג' (10 נק'):
נזכר בהגדרה של hash_mod מתוך המחלקה hashtable שראינו בכיתה:

self.hash_mod = lambda key: hash_func(key) % m


נסמן ב-n את כמות האיברים שמכניסים ל-hashtable, וב-m את גודל הטבלה. נתון כי n=1024⋅m, ומכניסים את כל המספרים מ-1 עד n ל-hashtable.

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


סמנו X במשבצת הנכונה. הניחו כי פעולות אריתמטיות ופונקציות מהספרייה math ו-random רצות בזמן O(1). לזכירכם, הפונקציה math.log(x,b) מחזירה float המייצג (בקירוב) את הערך של logb​(x).

  • lambda x: x%10
  • lambda x: random.randint(x)
  • lambda x: 1
  • lambda x: -1*x
  • lambda x: int(math.log(x,2))


סעיף ד' (5 נק'):
נתונה הפונקציה הבאה המבוססת על הפונקציה page rank אשר ראינו בכיתה, אך אינה זהה לה:




עבור כל אחת מהטענות הבאות, קבעו האם היא נכונה או לא נכונה בסוף ריצת הפונקציה:

1. עבור G=[[1],[2],[0]], t=30 — הרשימה counters תכיל את אותו מספר בכל האינדקסים.
2. עבור
G=[[1],[2],[0]], t=35 — הרשימה counters תכיל את אותו מספר בכל האינדקסים.
3. עבור
G=[[1,3],[2],[0],[1]], t=30 — הרשימה counters תכיל את אותו מספר באינדקסים 0,1,2.
4. עבור
G=[[1,2],[3],[3],[0]], t=30 — הרשימה counters תכיל את אותו מספר באינדקסים 0,3.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת תל אביבמועד א · 2026 · סמסטר א
★★★★★
חיפוש בינאריסיבוכיות זמןמעקב אחר קודקידודטבלאות גיבובPageRankגרפיםהסתברות
כתבו את הייצוג של המספר הבא כ-floating point: −0.0875
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א · 2026 · סמסטר א
★★★★★
ייצוג מספרים
רשמו את הפונקציה f(n) המייצגת את מספר הפעולות שמבוצעות בקוד הבא, והסבירו איך ומדוע זו הפונקציה. מה הסיבוכיות (ב-Θ) שלה?

העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א · 2026 · סמסטר א
★★★★★
סיבוכיות זמןלולאותמעקב אחר קוד
מה הסיבוכיות ב-Θ של הנוסחה הבאה:

T(n,m)=2T(n−1,m)​+nm

כאשר T(1,m)=1, כפונקציה של n,m כאשר m>0.

ניתן להשתמש בעץ ריקורסיה, שיטת המסטר, או בכל שיטה אחרת הנראית מתאימה, ובכל מקרה – הראו את דרך הפתרון.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א · 2026 · סמסטר א
★★★★★
סיבוכיות זמןרקורסיה
שאלה 2 - סעיף ב (15 נקודות)

בשאלה זו נעסוק בעצים בינאריים של מספרים אי-שליליים. נתונות שתי המחלקות IntegerBinaryTree, IntegerBinaryNode, המחלקות את המרחיבות BinaryTree<Integer>, BinaryNode<Integer> בהתאמה.

השלימו במחלקה IntegerBinaryTree את השיטה הבוליאנית pathSum(int sum) אשר מקבלת מספר שלם sum ומחזירה ערך true אם קיים מסלול כלשהו בעץ מהשורש לעלה אשר סכום המספרים בקודקודי המסלול הוא בדיוק sum. אם לא קיים מסלול כזה השיטה מחזירה ערך false (5 נקודות).

לצורך משימה זו עליכם גם להשלים שיטה בעלת שם זהה במחלקה IntegerBinaryNode (10 נקודות).

דוגמאות:
בעץ המספרים הבא המכיל מספרים:


        5
       / \
      1   7
     /   / \
    6   2   9
         /
        4


• קריאה לשיטה עם הערך 12 תחזיר true (כי 5+1+6=12).
• קריאה לשיטה עם הערך 14 תחזיר false.

• קריאה לשיטה עם הערך 5 תחזיר false.


הערה: בעץ ריק לא קיים מסלול משורש לעלה ולכן השיטה מחזירה false.

העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בן גוריוןמועד ב · 2026 · סמסטר א
★★★★★
עצים בינארייםרקורסיהסיבוכיות זמןסיבוכיות מקוםמחלקותירושה
התכנית המצורפת מתקמפלת ורצה.



א. (4 נק') מה פלט התכנית?

ב. (4 נק') תארו את תמונת הזכרון (מה נמצא איפה ומה הערכים) בקריאה בסוף הפונקציה funcB, לפני החזרה.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א · 2026 · סמסטר א
★★★★★
מעקב אחר קודמצביעיםמצביעים לפונקציותהקצאת זיכרון דינמית

מבוא למדעי המחשב – תכנות, רקורסיה, מערכים, מחרוזות, עצים בינאריים ורשימות מקושרות. נושאים מרכזיים: רקורסיה, מערכים, מחרוזות, יעילות, עצים בינאריים. 969 שאלות ממבחנים עם פתרונות, ממוינות לפי נושא ורמת קושי. ניתן לתרגל לפי נושאים, לסנן שאלות חוזרות ולהריץ מבחני סימולציה לפני הבחינה. הכנה למבוא למדעי המחשב מתמקדת בתרגול רקורסיה, מערכים ועצים בינאריים - הנושאים הנפוצים ביותר במבחנים. לימוד עצמי עם שאלות ממבחנים, בדגש על מעקב אחר קוד, מכין ביעילות לבחינה. המאגר כולל שאלות מהאוניברסיטה הפתוחה, אוניברסיטת תל אביב, אוניברסיטת בר-אילן, הטכניון.

לפי מוסד:מבוא למדעי המחשב האוניברסיטה הפתוחהמבוא למדעי המחשב אוניברסיטת תל אביבמבוא למדעי המחשב אוניברסיטת בר-אילןמבוא למדעי המחשב הטכניון
לפי נושא:רקורסיהרקורסיה עם מעקבמערכיםמערך דו-ממדימחרוזותתת-סדרהתת-מחרוזתיעילותסיבוכיות זמןסיבוכיות מקום
עצים בינאריים
עץ חיפוש בינארי
רשימות מקושרות
מיון
חיפוש
חיפוש בינארי
מחלקות
תכנות מונחה עצמים
ירושה
פולימורפיזם
מעקב אחר קוד
לולאות
תנאים
שיטות סטטיות
Overloading
טבלאות גיבוב
גרפים
גנרטורים
memoization
פלינדרום
PageRank
הסתברות
פרמוטציות
דקדוק חסר-הקשר
ייצוג מספרים
קידוד
קידוד האפמן
עיבוד תמונה
קריפטוגרפיה