עמוד:265

לממש מנגנון להעברת פרמטרים אל הפרוצדורה שמחזור החיים שלהם הוא כמשך מחזור חיי הפרוצדורה ( או הפונקציה . ( לפרמטרים אלה מוקצה מקום בזיכרון כאשר הפרוצדורה מזומנת על-ידי התכנית הראשית ; שטח זיכרון זה משוחרר כאשר ביצוע הפרוצדורה מסתיים , וניתן להשתמש בו שוב . לעומת זאת , משך החיים של משתני התכנית הוא כמשך התכנית כולה , לכן שטח הזיכרון מוקצה להם במקטע הנתונים בזמן טעינת התכנית לזיכרון . בסעיף זה נתאר כיצד משתמשים במחסנית כדי לממש את המנגנון להעברת פרמטרים משני סוגים ( באותן שיטות משתמשים גם בשפות עיליות ) ו פרמטר לפי ערך - ( by value ) פרמטר שאת ערכו הפרוצדורה אינה משנה ו פרמטר לפי אזכור - ( by reference ) פרמטר שהפרוצדורה יכולה לשנות את ערכו . כאשר משתמשים במחסנית להעברת פרמטרים , דוחפים אליה את הפרמטרים לפני הזימון לפרוצדורה , ובסיומה דואגים לשחרר את המקום שהוקצה לפרמטרים . בדרך זו "מחזור החיים" של הפרמטרים חופף ל"מחזור החיים" של הפרוצדורה . בשיטה זו , כדי לממש פרמטר לפי ערך , נדחוף למחסנית את הנתונים שיש להעביר לפרוצדורה , וכדי לממש פרמטר לפי אזכור , נדחוף למחסנית את הכתובות של משתנים בהם תשתמש הפרוצדורה . נסביר כיצד משתמשים בכל אחת מהשיטות כאשר כותבים תכנית שמשתמשת בפרוצדורה , swap להחלפת תוכנם של משתנים . 7 . 4 . 1 שיטה למימוש פרמטר לפי ערך ( by value ) כפי שציינו , לפני הזימון לפרוצדורה דוחפים בשיטה זו למחסנית את הערכים של הפרמטרים ולאחר שביצוע הפרוצדורה מסתיים "מנקים" את הזיכרון של המחסנית ומחזירים את ערכו של אוגר SP למצבו ההתחלתי . _] דוגמה 7 . 4 בדוגמה זו נציג נסיון שגוי לשימוש בפרוצדורה שמטרתה להחליף בין שני ערכי פרמטרים המועברים אליה לפי ערך . בדוגמה זו נתאר את תהליך הביצוע של הפרוצדורה ונבין את מהות השגיאה . לשם כך , נכתוב תכנית שתזמן את הפרוצדורה swap ( a , b ) המחליפה בין ערכי שני פרמטרים ומממשת העברת פרמטרים לפי ערך . לפני זימון הפרוצדורה עלינו לדחוף למחסנית את הנתונים שרשומים במשתנים a ו-כ . 1 להלן קטע התכנית הראשית המזמנת את הפרוצדורה :

מטח : המרכז לטכנולוגיה חינוכית


לצפייה מיטבית ורציפה בכותר