שגרה (תכנות) – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
שורה 8:
==קריאה לשגרה==
ישנן מספר דרכים להעביר פרמטרים לשגרות. הדרך הסטנדרטית להעברת קלט אל שגרות הוא באמצעות רשימת פרמטרים (ארגומנטים) - בקריאה לשגרה מצרפים גם סדרה של [[משתנה (תכנות)|משתנים]] או
העברת המשתנים עשויה להיות על ידי העברה של הערך שלהם (By Value), כלומר העתקת תוכנם אל משתנים חדשים, או על ידי התייחסות (By Reference), המהווה בפועל נתינת שם נוסף לאותו משתנה. בהעברת משתנים לפי ערך, המשתנים המקוריים שנשלחים למטודה אינם משתנים בפועל. כלומר, למטודה נשלחים העתקים של הערכים שלהם, ולא המשתנים עצמם בפועל. בהעברה על ידי התייחסות נשלחים למטודה הכתובות של המשתנים ולא העתקים של הערכים שלהם. במטודה כזו למשל שמקבלת שני משתנים ומחליפה ביניהם - השינוי יהיה ניכר גם לאחר סיום המטודה. בהעברה משתנים לפי ערך למטודה כזאת, תתבצע רק החלפה שלהם "באוויר". המשתנים עצמם לא ישתנו בפועל, כאילו שהמטודה לא פעלה מעולם.
שורה 14:
במקרה שמעבירים על ידי ערך (ב[[שפת C]], למשל, זו הדרך היחידה) ויש צורך לשנות את המשתנה המקורי, ניתן להשתמש בחלק מהשפות ב[[מצביע]]. המצביע מכיל את הערך המספרי של [[כתובת (זיכרון מחשב)|כתובת]] המשתנה בזיכרון המחשב, וכך ניתן לגשת ישירות לכתובת זו ולשנות את ערכו של המשתנה.
ישנן שפות המאפשרות גם
לשגרה עשויות להיות '''תוצאות לוואי''', המשפיעות על מצב התוכנית כולה, למשל על ידי שינוי של [[מבנה נתונים]] בזיכרון המחשב, או פעולה על הפרמטרים במקרה של העברת פרמטרים לפי התייחסות, או העברה של מצביעים. לשגרות או פונקציות המבצעות פלט וקלט מול המשתמש או זיכרון המחשב יש לרוב תוצאות לוואי.
|