1 / 15

הסיפור על תעלומת המכתב הנעלם או: שחרור מצביעים

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

hedwig
Download Presentation

הסיפור על תעלומת המכתב הנעלם או: שחרור מצביעים

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. מצגת סיכום הכשרה להוראה במדעי המחשב הסיפור על תעלומת המכתב הנעלם או: שחרור מצביעים מגישות: שרה אגל-טל ואורליה דהן, מדעי מחשב שנה ב'

  2. בכפר אז"ר גר מר כתבני. כפי שאפשר לנחש משמו, למר כתבני תחביב משלו: הוא מאוד אוהב להתכתב עם אנשים. כדי שיוכל לשלוח מכתבים, הזמין מר כתבני תא דואר בסניף הדואר של כפר אז"ר. בכל יום מגיע הדוור ושולח את המכתבים שבכל התאים ליעדם. בתא שתקבל יש מקום למכתב אחד בלבד. הנה המפתח לתא. תודה רבה!

  3. מר כתבני אמנם הזמין את התא, קיבל את המפתח אליו, והלך לדרכו. למחרת הגיע לתא והפקיד בו מכתב.בסוף היום הוציא הדוור את המכתב מן התא, ושלח אותו. בואו נראה כיצד זה מתבצע ב- ++C : string* Katvani=new string; *Katvani=“michtav1”; SendLetter(“michtav1”); מר כתבני מקבל מפתח לתא הפקדת המכתב הדוור שולח את המכתב

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

  5. בואו נראה ב-++C מה התרחש עד עכשיו... string* Katvani=new string; *Katvani=“michtav1”; SendLetter(Katvani); delete Katvani; string* Asuki=new string; *Asuki=“michtav2”; כתבני מקבל מפתח לתא כתבני מפקיד מכתב הדוור שולח את המכתב כתבני מודיע על שחרור התא עסוקי מקבל מפתח לתא עסוקי מפקיד מכתב

  6. אחרי כמה ימים נזכר מר כתבני שעליו לשלוח ברכת יום הולדת לאחיו. אך מה יעשה? הרי הודיע לסניף הדואר שויתר על תא הדואר שלו?לפתע עלה במוחו רעיון... הרי עדיין יש בידיי את המפתח לתא הדואר! אגש לתא ואפקיד בתוכו מכתב למשלוח! כתבני הגיע אל סניף הדואר, ופתח את התא. להפתעתו גילה מכתב אחר ממתין בתוכו. כתבני יודע שהתא יכול להכיל לכל היותר מכתב אחד, ועליו לשלוח את כרטיס הברכה בדחיפות... בלי לחשוב יותר מדי, כתבני הוציא מן התיבה את המכתב הישן, והכניס את המכתב שלו. *Katvani= “Mazal Tov”;

  7. בסוף היום הגיע הדוור והוציא את המכתב שבתא למשלוח. ;(SendLetter(Asuki

  8. זוכרים את מר עסוקי? המכתב שהוציא כתבני מהתא היה כמובן שלו. מכתב שכתב עסוקי לסבתו. הוא המתין לתשובה מסבתו מס' שבועות, ואז התקשר אליה לברר מדוע לא זכה לתגובה. סבתא, למה לא ענית למכתב שכתבתי לך? איזה מכתב? אני לא זוכרת שקיבלתי ממך מכתב?! התפלא מאוד עסוקי, והחליט לגשת למנהל הסניף לברר מה קרה

  9. מנהל הסניף שמע את הדברים והתפלא מאוד למרות שחשב על כך רבות, לא הצליח למצוא פתרון לתעלומה:לאן נעלם המכתב של מר עסוקי? מוזר מאוד, הרי המפתח אצל עסוקי! לבסוף החליט להזמין אליו לברור את הפקיד שהביא למר עסוקי את המפתח לתא.

  10. הפקיד סיפר את השתלשלות העניינים ...אתה מבין, ובדיוק עסוקי נכנס לדואר... ואז הבין המנהל מה קרה...

  11. מנהל הסניף הסביר לפקיד ולמר עסוקי מה קרה: string* Katvani=new string(“michtav1”); SendLetter(Katvani); delete Katvani; string* Asuki=new string(“michtav2”); Katvani=new string(“mazal tov”); SendLetter(Asuki); כתבני קיבל מפתח לתא והפקיד בו מכתב הדוור שלח את המכתב כתבני הודיע על שחרור התא עסוקי קיבל את התא של כתבני והפקיד בו מכתב יש רק פתרון אחד,, והוא: מר כתבני חייב להחזיר את המפתח! כתבני הפקיד מכתב חדש בתא והוציא את הקודם הדוור שלח את המכתב שבתא

  12. המנהל לא התמהמה ופנה מיד למר כתבניבדרישה שיחזיר את המפתח. כתבני החזיר את המפתח: אם ברצונך בתא דואר, עליך להזמין תא דואר חדש! Katvani=0; אז קבע מנהל סניף הדואר כלל ברזל: כשאדם מודיע על שחרור תא, עליו להחזיר מיד את המפתח! ; delete Katvani ;Katvani=0

  13. מה כדאי לנו ללמוד מן הסיפור? כשאנו משחררים מצביע לתא בזיכרון, אנו בעצם מודיעים שהתא פנוי. אך כל עוד לא איפסנו את המצביע- הוא מצביע על אותו תא. כשנבקש להקצות למשתנה אחר מקום בזיכרון, יחשב מקום זה כפנוי, ויוקצה למשתנה החדש. מה יקרה אם נציב בעזרת המצביע הישן ערך אחר בתא??? בואו ונבדוק...

  14. X ;()int* x=new int ;5=x* y ;delete x ;()int* y=new int ;3=y* 5 3 10 ;x=0 ;10=x* האם לכך התכוונו? מהו הערך עליו מצביע y? כדי למנוע זאת, נוסיף את השורה הצבועה באדום: ואז נקבל...

  15. ;()int* x=new int ;5=x* y X ;delete x ;0=x ;()int* y=new int ;3=y* 5 3 כאן התכנית תתקע, כיל-x לא הוקצה מקום! ;10=x* נקודה למחשבה: מה עלינו להוסיף לתכנית כדי שתעבוד עד הסוף?

More Related