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

מבוא למדעי המחשב אוניברסיטת בר-אילן

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

סטטיסטיקות מבחנים
כדי לגשת למבחני סימולציה ועוד המון שאלות נוספות, פתחו גישה מלאה
רמת קושי:
כתבו את הייצוג של המספר הבא כ-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 · סמסטר א
★★★★★
סיבוכיות זמןרקורסיה
התכנית המצורפת מתקמפלת ורצה.



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

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

המספרבינאריעשרוני
A: 2303​
B: 3214​


II. (2 נק') מה תוצאת חיבור המספרים A+B לעיל? האם מתקבל overflow או underflow?
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א · 2026 · סמסטר א
★★★★★
ייצוג מספרים
הקוד הבא, השמור בקובץ file.c, מתקמפל ורץ ללא בעיות.



הרצנו את הפקודות הבאות ב-command line:

> gcc file.c -o tst
> ./tst Emily Daniel 100


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

II. (2 נק') האם יהיה שינוי בפלט ו/או בהתנהלות התכנית אם נשים את השורה המסומנת בחץ בפונקציה modifyRecordA בהערה? (פקודת ה-malloc). אם כן, מה השינוי. אם לא – הסבירו מדוע אין שינוי.

III. (2 נק') האם יש בתכנית, כפי שהיא מופיעה במקור (ללא שינויים), זליגות זכרון? אם כן, תארו מהן.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א · 2026 · סמסטר א
★★★★★
מעקב אחר קודמחרוזותהקצאת זיכרון דינמית
I. (2 נק') נתון גרף מכוון המיוצג ברשימה המקושרת. רשימת השכנויות (adjacency list) של הגרף בעל 8 קדקודים (0 עד 7) היא:
  • קדקוד 3: → 1 → 6
  • קדקוד 1: → 0 → 2
  • קדקוד 4: → 5
  • קדקוד 6: → 4 → 7
  • שאר הקדקודים (0, 2, 5, 7): ללא קשתות יוצאות


ציירו את קשתות הגרף וסמנו את מספר הקדקוד (מ-0 עד 7).

II. (2 נק') ציירו את מטריצת השכנויות המתאימה לגרף הנ"ל.

III. (1 נק') בסריקה והדפסה של הגרף הנ"ל ב-DFS ב-post-order החל מקדקד 3, מה תהיה התוצאה? (רשמו משמאל לימין)

IV. (2 נק') הניחו כי התוצאה שהתקבלה בסעיף הקודם היא מספר בייצוג לפי בסיס 8. מה ייצוגו של המספר בבסיס בינארי?
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א · 2026 · סמסטר א
★★★★★
גרפיםייצוג מספרים
התכנית הבאה מתקמפלת ורצה.



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

II. (4 נק') מה סיבוכיות f ב-Θ כפונקציה של n, כאשר n מייצג את גודל המערך (לשם הפשטות ניתן להניח כי n הוא חזקה של 2). הציגו את הנוסחה, הראו את דרך הפתרון ואת התוצאה הסופית.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א · 2026 · סמסטר א
★★★★★
מעקב אחר קודסיבוכיות זמןרקורסיה
מחרוזת מוכלת היא מחרוזת שהאותיות שלה מופיעות לפי הסדר בתוך מחרוזת אחרת, לא בהכרח ברצף. למשל, המחרוזת "apchi" מוכלת במחרוזת "arrpyczhqweimm" במופע יחיד, והמחרוזת "abc" מוכלת ב-"aabcc" ביותר ממופע אחד אפשרי.

מחרוזת נשמרת באמצעות רשימה מקושרת של קדקדי Mystring המצביעים ל-Letter, כך שלכל אות יש עלות (גבוהה מ-0).



כתבו פונקציה רקורסיבית המקבלת מצביע לתחילת רשימה מקושרת המייצגת מחרוזת (head) ובנוסף מחרוזת נוספת small, ומחזירה את עלות המופע המוכל המינימלי של small בתוך המחרוזת ברשימה המקושרת, כאשר עלות הכלה מוגדרת כסכום עלויות האותיות.

בדוגמה באיור, העלות הנמוכה ביותר של המחרוזת "abc" המוכלת במחרוזת "aabcc" השמורה במבנה הנתון (עם עלויות a:4, a:6, b:7, c:8, c:6) היא 4+7+6 = 17 (ה-a השמאלי, b באמצע וה-c הימני).

אם המחרוזת לא מוכלת כלל, הפונקציה תחזיר 0.

העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א · 2026 · סמסטר א
★★★★★
רקורסיהרשימות מקושרותתת-סדרהמחרוזות
לחברת Boeing יש מערכת ניהול ממוחשבת עבור פעילות המחסן המרכזי של החברה, המרכז מידע אודות חלקי חילוף למטוסים שלהם (allparts), כמו גם רשימת הטכנאים והטכנאיות עם כשירות לטיפול בתחזוקת המטוסים (techlist) ורשימת מטוסים שיש עבורם הזמנת עבודה (orders). המערכת מסוגלת לטפל בלכל היותר MAX מטוסים בו"ז. בזמן נתון יש curOrders מטוסים בטיפול, והמידע אודותם מרוכז באינדקסים 0, ..., curOrders-1 במערך ה-orders.

המידע השמור עבור כל פריט במחסן: המספר הסידורי שלו (serialNum, ייחודי במערכת), שמו (partName), הכמות שיש ממנו במחסן (quantity), המחיר של כל פריט (price), וההכשרה הנדרשת לטיפול בפריט (certR).

הפריטים שמורים במבנה נתונים של עץ חיפוש בינארי, הממויין לפי המספר הסידורי של הפריט.

המידע השמור עבור כל טכנאי/ית במערכת: מספר ת.ז. (techID), שם (techName), וההכשרה של הטכנאי/ת (cert).

המידע אודות הטכנאים/ות במחסן שמור ברשימה מקושרת ממויינת לפי Cert מהגבוה לנמוך, כך שקודם יופיעו מי שהם Expert, אח"כ Senior, וכו'.

כאשר מגיע מטוס חדש לטיפול (לכל מטוס יש מספר זנב ייחודי – tailNum), מיוצר עבורו order המכיל מערך parts עם המספרים הסידוריים של הפריטים הנדרשים על מנת לתקן את המטוס (ניתן להניח כי ברשימה יש פריטים שונים), ומצביע לטכנאי/ת שיטפלו במטוס – ה-manager. ניתן לטפל במטוס רק אם קיימת הכשרה מתאימה לטיפול בכלל הפריטים (כלומר, חלק החילוף עם ה-certR הגבוה ביותר קובע את ההכשרה המינימלית של הטכנאי/ית לטיפול).

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

נתונות ההגדרות הבאות:



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

א. (3 נק') כתבו פונקציה המקבלת פרטי טכנאי/ת, מייצרת Technician עם הפרטים, ומחזירה את המצביע אליו.



ב. (2 נק') כתבו פונקציה המקבלת פרטי פריט, מייצרת עבורו SparePart עם הפרטים, ומחזירה את המצביע אליו.



ג. (6 נק') כתבו פונקציה המקבלת פרטי טכנאי/ת, ומוסיפה אותו/ה למערכת המחסן. אם מערכת המחסן לא קיימת, על הפונקציה לייצר אותה. יש לוודא כי ההכנסה משאירה את הרשימה ממוינת, כמוגדר. הפונקציה מחזירה את סך כל מספר הטכנאים/ות הנמצאים כרגע במערכת. ניתן להניח כי ה-id של הטכנאי/ת לא קיים במערכת.



ד. (6 נק') כתבו פונקציה המקבלת פרטי פריט, ומוסיפה אותו/ה למערכת המחסן באופן הבא:
  • אם מערכת המחסן לא קיימת, על הפונקציה לייצר אותה.
  • אם הפריט לא קיים במערכת המחסן, היא מייצרת אותו ומוסיפה אותו במקום המתאים.
  • אם הפריט כן קיים, היא מעדכנת שהתקבלו עוד quant יחידות ממנו, ומעדכנת את מחירו.
הפונקציה מחזירה את מספר היחידות של הפריט במערכת (אחרי ההוספה).



ה. (7 נק') כתבו פונקציה המקבלת פרטי מטוס לטיפול, ומכניסה אותו לטיפול במחסן אם ורק אם התקיימו כל שלושת התנאים הבאים:
א. יש במחסן את כל חלקי החילוף הנדרשים לטיפול במטוס

ב. יש במחסן טכנאי/ת עם הסמכה לטיפול בכלל החלקים הנדרשים לטיפול (כלומר, cert הגבוה מבין כל חלקי החילוף)

ג. יש מקום למטוס במחסן


אם התנאים מתקיימים, היא תעדכן את נתוני הטיפול ברשומות (order המתאים) באופן הבא: תכניס אותו לטיפול, תמצא עבורו טכנאי/ת עם הסמכה לטיפול – הראשון/ה בהסמכה הנדרשת, ותוריד ב-1 את מספר הפריטים שהשתמשנו בו עבור הטיפול מעץ הפריטים במחסן (אם נשארו 0 פריטים, משאירים את הפריט במבנה הנתונים עם כמות 0).

אם אין טכנאי/ת בהסמכה הנדרשת בדיוק, יש למצוא טכנאי/ת בהסמכה מעל (למשל Expert יכול/ה לטפל בהזמנה הדורשת Junior).
אם הפונקציה מצליחה להכניס לטיפול היא תחזיר 0, אם היא נכשלת היא תחזיר -1.




ו. (6 נק') אחת לכמה זמן עושים פעולות כלליות על כל הציוד במחסן – מעלים/מורידים מחירים באופן גורף, ומדפיסים את מצאי הפריטים (שם פריט, מס' סידורי, מחיר, וכמות). לצורך כך, יש לממש:

i. פונקציות adjustPrice המעדכנות את המחיר עם val, ו-printPart המדפיסה את פרטי חלקי החילוף, שתיהן מהסוג Scan:



שימו לב שהערך val של עדכון המחיר יכול להיות חיובי או שלילי. בכל מקרה, הערך החדש לא יהיה נמוך מ-0.

ii. פונקצית updateParts העוברת על allparts ב-DFS ב-Post Order ומעדכנת/מדפיסה את כל חלקי החילוף באמצעות הפונק' scan.



ז. (6 נק') מחסן שכן (other) למחסן שלנו (wh) נסגר, אז המערכת שלנו קולטת את כל הטכנאים והטכנאיות ואת כל חלקי החילוף שיש במחסן. יש לאחד את הרשומות של טכנאי וחלקי החילוף של other אל תוך הרשומות של המחסן שלנו. נדרש שרשימת הטכנאים/יות המאוחדת תהיה ממוינת כנדרש. על איחוד הרשימות המקושרות של הטכנאים/ות להיות יעיל, ספציפית, שיעבוד בזמן O(m+n) כש-m,n הם מספר הטכנאים/ות במחסן השני ובמחסן שלנו. הגדרת היעילות הזו לא נדרשת באיחוד העצים. אין צורך למחוק את other או מבני נתונים השייכים לו.



ח. (7 נק') כתבו פונקציה המקבלת נתוני מחסן, עוברת על כל נתוני המערכת ומוחקת אותם. המלצה: השתמשו בפונקצית updateParts מסעיף ו', וכתבו פונקציית Scan רלוונטית שתעזור במחיקה.

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

שאלות מבוא למדעי המחשב באוניברסיטת בר-אילן עם פתרונות

מאגר מבחנים במבוא למדעי המחשב מאוניברסיטת בר-אילן (בר-אילן) - 969 שאלות ממוינות לפי נושא ורמת קושי, עם פתרונות מלאים לבדיקה עצמית. השאלות מכסות מועדים לאורך השנים, כולל מבחנים מ-2023, 2024, 2025 ו-2026. נושאים מרכזיים: רקורסיה, מערכים, מחרוזות, יעילות, עצים בינאריים. ניתן לסנן שאלות חוזרות, להתאמן על נושא ספציפי או להריץ סימולציית מבחן לפני הבחינה. הכנה למבוא למדעי המחשב מתמקדת בתרגול רקורסיה, מערכים ועצים בינאריים - הנושאים הנפוצים ביותר במבחנים. לימוד עצמי עם שאלות ממבחנים, בדגש על מעקב אחר קוד, מכין ביעילות לבחינה.

prepd›מבוא למדעי המחשב›בר-אילן