Home Page על האתר מפת אתר מילון מונחים ספרים קישורים

שגרות ופונקציות

ב- VB ישנם שני סוגים של שגרות. שגרת (Sub procedure) Sub ושגרת Function (Function procedure).

כאשר מתכנתים ב- ,VB משתמשים כל הזמן בפרוצדורות ופונקציות אף ללא ידיעתנו. למעשה, כל פקודה ב- VB חייבת להיות פרוצדורה או פונקציה גם "שיטות" (Methods) של פקדים ואובייקטים

(Function procedures) Function שגרות

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

לעיתים אנו צריכים להגדיר פונקציות משלנו, שמבצעות פעולות וחישובים, ומחזירות תוצאה בה אנו יכולים להשתמש.

תחביר של פונקציה:

([ארגומנטים]) [שם הפונקציה] function
[משפטי תכנות]
end function

הארגומנטים הם רשימה של ארגומנטים אשר בהם משתמשים במהלך משפטי הפונקציה. את הארגומנטים מפרידים בפסיקים וניתן לקבוע את סוגם לפי המילה .as

אם לשגרת Function אין ארגומנטים, המשפט Function חייב לכלול זוג סוגריים ריקים (). שגרת Function מחזירה ערך ע"י הצבת ערך לשמה באחד או יותר מהמשפטים של השגרה. טיפוס הערך המוחזר של הפונקציה הוא תמיד Variant.

בדוגמא הבאה, השגרה (הפונקציה) Celsius מבצעת המרה ממעלות פרנהייט למעלות צלזיוס. כאשר הפונקציה נקראת משגרת Sub בשם ConvertTemp, משתנה המכיל את ערך הארגומנט מועבר אל הפונקציה. תוצאת החישוב מוחזרת אל השגרה הקוראת ומוצגת בתיבת פלט (message box).

Sub ConvertTemp()
temp = InputBox("Please enter the temperature in degrees F.", 1)
MsgBox "The temperature is " & Celsius(temp) & " degrees C."
End Sub

Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function

Sub(תת-שגרות (פרוצדורות

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

שגרת Sub היא סדרה של משפטים ב- VB, הפותחת במשפט Sub ומסיימת במשפט End Sub, מבצעת פעולות אך אינה מחזירה ערך. שגרת Sub יכולה לקבל ארגומנטים (קבועים, משתנים, או ביטויים המועברים ע"י קריאה של שגרה). אם לשגרת Sub אין ארגומנטים, המשפט Sub חייב לכלול זוג סוגריים ריקים ().

שגרת ה- Sub הבאה משתמשת בשתי פונקציות פנימיות או מובנות, של MsgBox ו- InputBox, בכדי לבקש ממשתמש למסור אינפורמציה. השגרה מציגה אח"כ את תוצאות החישוב בהתבסס על מידע זה. החישוב מבוצע ע"י שגרת Function.

Sub ConvertTemp()
temp = InputBox("Please enter the temperature in degrees F.", 1)
MsgBox "The temperature is " & Celsius(temp) & " degrees C."
End Sub

העברת מידע לשגרה וקבלת מידע משגרה

כל פיסת נתונים מועברת אל השגרות שלך בעזרת ארגומנט (argument). ארגומנטים משמשים בתפקיד של "שומרי מקום" (placeholders) של הנתונים שאתה רוצה להעביר אל השגרה שלך. אתה יכול לתת לארגומנטים שלך כל שם שהוא חוקי לשמש כשם של משתנה. כאשר אתה יוצר שגרה בעזרת המשפט Sub או בעזרת המשפט Function, חייבים להיכלל סוגריים לאחר השם של השגרה. כל הארגומנטים צריכים להיות ממוקמים בתוך הסוגריים הללו, מופרדים ע"י פסיקים. לדוגמא, בדוגמא הבאה, המשתנה fDegrees משמש כשומר מקום (placeholder) עבור הערך המועבר אל הפונקציה Celsius למטרת המרה:

Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function

בכדי לקבל נתון מתוך שגרה, אתה חייב להשתמש בפונקציה (Function procedure). זכור, שגרת Function יכולה להחזיר ערך, שגרת Sub אינה יכולה.


בקטע קוד Function ,Sub שימוש בשגרות

פונקציה בתוך הקוד שלך חייבת תמיד להיות בצד הימני של השמה למשתנה או בתוך ביטוי. לדוגמא:

Temp = Celsius(fDegrees)
או
MsgBox "The Celsius temperature is " & Celsius(fDegrees) & " degrees."

בכדי לקרוא לשגרת Sub מתוך שגרה אחרת, אתה יכול לכתוב את שם השגרה בלבד ביחד עם הערכים לכל הארגומנטים הנדרשים, מופרדים כל אחד ע"י פסיק. המשפט Call אינו נדרש, אבל אם אתה משתמש בו, עליך לכתוב את כל הארגומנטים בתוך סוגריים.

הדוגמא הבאה מציגה שתי קריאות לשגרה myProc. קריאה אחת משתמשת במשפט Call בקוד, הקריאה הנוספת אינה משתמשת בו. שתי הקריאות מבצעות בדיוק את אותו הדבר.

Call MyProc(firstarg, secondarg)
MyProc firstarg, secondarg

שים לב שהסוגריים מושמטים בקריאה שבה לא נעשה שימוש במשפט Call.