|
صفحة: 277
7 . 6 העברת מערך כפרמטר לפרוצדורה העברה של מערכים לפרוצדורה יכולה להתבצע לפי אזכור או לפי ערך י לפי אזכור דוחפים למחסנית את כתובת תחילת המערך ואת מספר האיברים ( או סמן אחר המציין את סוף המערך ) ו לפי ערך דוחפים למחסנית את כל איברי המערך לפני זימון הפרוצדורה . ההעברה של מערך כפרמטר לפי ערך , יוצרת עותק נוסף של המערך במחסנית , לכן עלינו לדאוג שהמחסנית תהיה בגודל מתאים . מבחינת הזיכרון ניתן לומר שהכפילות יוצרת "בזבוז" של מקום בזיכרון , אולם יש לה יתרון ברור כאשר רוצים להגן על תוכן המערך מפני כתיבה . השיטה להעברת מערך ( או מחרוזת ) כפרמטר לפי אזכור , לא רק חוסכת זיכרון , אלא מבטיחה גם שכל שינוי איבר מתבצע במערך המקורי וכשהפרוצדורה מסתיימת השינויים נשמרים . לדוגמה ^ 7 8 התכנית שנביא להלן מדגימה כיצד מועבר מערך כפרמטר לפי אזכור , והיא מתאימה גם להעברת מחרוזת או רשומה כפרמטר לפי אזכור . נכתוב תכנית שתזמן פרוצדורה המסכמת איברים במערך , החל מהאיבר i-n עד האיבר האחרון ( מ . ( הפרוצדורה מחזירת את התוצאה במשתנה . suman בתכנית מוגדרים המשתנים האלה = מערך a מטיפוס מילה משתנה n מטיפוס מילה , המכיל את מספר האיברים במערך משתנה i מטיפוס מילה , שהוא אינדקס של איבר במערך משתנה sumarr מטיפוס מילה , שיכיל את סכום האיברים התכנית תשתמש בפרוצדורה sum המסכמת ומחזירה את סכום האיברים במערך , 3 החל מהאיבר i-n ועד סוף המערך . הפרוצדורה תקבל בפרמטרים את הנתונים האלה ו / - } n כפרמטר לפי ערך כתובת המערך a וכתובת משתנה sumarr כפרמטר לפי אזכור הפרוצדורה תחזיר את סכום הסדרה שחושבה .
|
|