שגרה (תכנות) – הבדלי גרסאות

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