
AddNumbers.int.void פירושו שאין ערך מוחזר. ערך מוחזר נשלח בעזרת return.=.int AddNumbers(int number1, int number2)int result = AddNumbers(9, 5);הטקסט המלא של הדקות הראשונות בהרצאה «פונקציות - Functions (הסבר נוסף)» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום וברוכים הבאים להרצאה מעניינת על מהי פונקציה. אנחנו נלמד מהי פונקציה, איך בנויה פונקציה, נראה איך משתמשים בה ונתחיל מהגדרה של פונקציה.
פונקציה היא חלק קוד, קוד בלוק, זאת אומרת מספר פקודות שמבצעות פעולה מסוימת ויש להן איזשהו שם. וכל פעם שאני צריך את הפקודות האלו לבצע אותן, במקום לכתוב אותן כל פעם מחדש, במקום לשכפל אותן, קורא לבלוק המוכן אז יש לי בלוק מוכן שכל פעם
שאני צריך אותו אני קורא לו והרעיון זה למנוע שכפול של הקוד בואו נעשה איזושהי דוגמה נראה נעשה דוגמה לא טובה ואחרי זה נעשה פונקציה טובה ויפה אז אנחנו פותחים פרויקט חדש New Project תוכנה חדשה קונסול שמחשבת משכורות סלרי חישוב משכורת עכשיו נניח שיש לנו שני פרמטרים, יש לנו טקס, אחוז המס ואחוז המס נניח 10%,
נעשה את זה משהו קבוע, כמובן אני יכול לקלוט את זה מהמקלדת או אנחנו עכשיו לא רוצים להסתבך בזה, יש לנו אינט ברוטו של עובד אחד, ברוטו אחד של עובד ראשון שהוא נניח שווה 5,000 שקל ואינט ברוטו של עובד השני, ברוטו של עובד השני שזה 7,000 שקל.
עכשיו אני צריך לחשב להם שכר נטו, ולהדפיס את זה על המסך. אז החישוב הראשון יהיה, נעשה int int rest1 תוצאה ראשונה, והתוצאה הראשונה תהיה, תוצאה ראשונה תהיה ברוטו 1 כפול טאקס, כפול 10% ולחלק ל-100, כן? כי זה 10%, אוקיי?
הלאה. ואני מדפיס אותו על המסך, ונעשה עכשיו את ה-int rest2. עכשיו תחשבו שאין לי שני עובדים, יש לי הרבה עובדים.
אתם שמתם לב שאני כותב אותו קוד פעמיים? אני כתבתי אותו קוד פעמיים. ואם החישוב התחיל להיות מסובך וצריך לשנות את החישוב, אז אני אצטרך בעצם לשנות קוד בכמה מקומות.
במקרה הקוד הזה הוא שורה אחת, הוא קוד פשוט. תחשבו שיש לי הרבה פקודות שמתבצעות אחת אחרי השנייה, ויש לי הרבה עובדים, ופתאום אמרו לי, תקשיב, צריך להוסיף לזה, לא יודע, להוריד עלות רכב.
להוריד 100 שקל לכולם על ארוחות. אמרו לי, תוריד עלות ארוחות. אז אני עושה פה משתנה חדש שקוראים לו ארוחה, ארוחה, עושה ארוחה שווה 100 שקל, ואז אני צריך, נניח על ארוחות מורידים להם 50 שקל, אז אני עושה פחות 50, שימו לב, אני עושה את זה, פחות ארוחה.
עכשיו שימו לב מה אני הולך לעשות, עכשיו לעובד השני שוב צריך לעשות פחות ארוחה, ואם היו לי 100 עובדים הייתי צריך לשנות קוד בכל ה-100 מקומות.
אתם מבינים שלכתוב אותו קוד הרבה פעמים, והקוד הזה שווה בדיוק לקוד הזה, ואם זה לא שורה אחת, אם זה עשר שורות או מאה שורות או שיש לי הרבה עובדים, זאת לא צורת עבודה נכונה.
אם יגידו לי יום למחרת תוסיף משהו, תוריד משהו, אם אני אעשה לעובד אחד כן, לעובד אחד לא, החישוב יצא לא נכון. אנחנו רוצים שכל החישוב הזה יהיה לו שם, זאת תהיה פונקציה, ואנחנו נקרא לפונקציה הזאת.
אז בואו נעשה לזה cut ונלך לכתוב פונקציה. אנחנו באים פה מלמעלה של הקלאס, אתם רואים? אנחנו נמצאים כן בתוך הקלאס ואנחנו נלמד מה זה בדיוק הקלאס הזה אומר בהמשך. אז אנחנו פה בקלאס אומרים איזה פונקציה אנחנו רוצים לכתוב, איך כותבים בדיוק את הפונקציה.
אז יש לנו פה במצגת פקודה מדויקת. כותבים בהתחלה סוג ערך מוחזר, מה הפונקציה תחזיר, האם זה אינטג'ר או סטרינג, מה היא תחזיר, מה יהיה שם של הפונקציה, במקרה הזה CalcCelery תחשב לי משכורת ומה היא תקלוט מבחוץ.
זה מעין יחידה עצמאית של חישוב שהיא מקבלת משהו מבחוץ, יש לה שם והיא פולטת משהו בסוף הדרך ואנחנו נקרא לה. נעבור לקוד.
בקוד אנחנו כותבים static בתור התחלה. מה זה static בדיוק אנחנו נלמד בהמשך הדרך ועכשיו מה היא מחזירה, כן? מה היא מחזירה?
במקרה שלי היא מחזירה אינטג'ר, היא מחזירה נתונים מסוג אינטג'ר. מה השם שלה? CalcSelary. תחשב משכורת.
ומה הפרמטרים? סוגריים, מה היא קולטת? היא קולטת מבחינתי שני משתנים ברוטו וטקס אז אני אומר int ברוטו פסיק int tax יופי עכשיו הקטע בלוק הזה אתם רואים זה נקרא קלקסלרי ברוטו אני יכול לתת להם שמות מה שאני רוצה ואני עושה חישוב נניח int רזולט רזולט תוצאה התוצאה הזאת היא שווה לחישוב
הזה שעשינו לפני כן הנה אני צריך גם ארוחה אין צריך גם ארוחה, אז אני אכניס גם ארוחות. int ארוחה, ארוחה, מצוינת, יופי. אז זה מה שפונקציה מקבלת. זה החישוב שהיא עושה, שימו לב, זה משתנה המקומי שלה.
זה המשתנה המקומי שלה. למה הטקס הזה הוא לא מזהה אותו? בגלל אות קטנה ואות גדולה. שימו לב, אם זה קטן, גם זה חייב להיות קטן. אז יש לי פה בגוף הפונקציה הכרזה על משתנה מקומי.
המשתנה הזה הולך להיות רק בתוך הפונקציה. המשתנה הקטן הזה מקבל את כל החישוב שלי ועכשיו הפונקציה צריכה להחזיר משהו למה זה אדום כי היא לא מחזירה שום דבר אז אני אומר רטורן פונקציה מחזירה את הרס זה אומר זאת פונקציה מאוד פשוטה רק כדי שאנחנו נבין היא מקבלת ברוטו טקסט וערוכה
ומחזירה לך כמה המשכורת שלך צריכה להיות יופי עכשיו איך אני משתמש בזה אני מגיע לגוף התוכנית כותב שם של הפונקציה בסוגריים ברוטו אחד פסיק טאקס, במקרה הזה יש לי משתנה שקוראים לו טאקס, פסיק ארוחה, יש לי משתנה שקוראים לו גם ארוחה.
יופי, עכשיו העובד השני, שימו לב מה קורה עם העובד השני. העובד השני, אני לא צריך לכתוב לו את החישוב הזה. אתם רואים את כל החישוב הזה? אני לא צריך לכתוב לו.
אני יכול לעשות, לקרוא לפונקציה, בדיוק לאותה פונקציה, ולהעביר לתברות או טאקס וארוחה. ויש משהו אחר שאני יכול לעשות, דרך אגב, אני יכול לקחת את הטקס והערוכה הזאת, להעביר אותם לתוך הפונקציה כאילו זה פנימי.
זאת אומרת, רק פונקציה מכירה את מה הטקסים, כמה זה ערוכות, אוקיי? מבחוץ לא לקבל את זה. שימו לב, אני משנה את התוכנית שלי.
אני עושה את התוכנית שלי קצת יותר ככה מעניינת. קחו שנייה, תכף תראו את התוצאה. שנייה אחת, תראו. עכשיו, התוכנית הראשית שלי, שימו לב, תסתכלו רק על התוכנית הראשית, היא משכורת של עובד ראשון, נטו של עובד ראשון, זה קלקסלרי תעביר לו ברוטו.
המשכורת של נטו השני, זה קלקסלרי תעביר לו ברוטו. זאת אומרת, הפונקציה יודעת לחשב כבר הכל לבד. בואו נקרא לזה אפילו נטו, נטו של העובד הראשון.
גם פה נקרא לו נטו של העובד הראשון, וזה יהיה נטו של העובד השני. תסתכלו איזה יופי יצא לנו. עכשיו, חישוב של המשכורת זה לקרוא לפונקציה ולהעביר לו את השכר ברוטו של העובד.
מה יכלתי לעשות? יכלתי לעשות אפילו משהו אחר, יכלתי לקחת את ה-5,000 ולהגיד לו, קח, הנטו של הראשון זה Calc salary של 5,000. יכלתי לעשות אפילו ככה.
זאת אומרת, אני יכול לפונקציה להעביר מספר או שאני יכול להעביר לו משתנה שיש לו בפנים מספר, זה לא מעניין את הפונקציה. הפונקציה הזאת, מה היא עושה? היא מקבלת משהו מבחוץ, במקרה זה ברוטו, מכריזה על משתנים פנימיים כלשהם לצרכים הפנימיים שלה, מחשבת את התוצאה, את הנטו שלך, ומחזירה
אותו. ועם פונקציה, הנה פונקציה הזאת, היא מחזירה אינטג'ר, וזה חוזר לפה. בואו נדבק את זה, בואו נעבור שורה-שורה, נראה איך זה עובד באמת.
אני שם פה breakpoint כדי שיעצור כאן, עושה play. יופי, יש לנו פה משתנה מסוג נטו, כרגע בנטו יש פה 0 ובברוטו 2 יש 7,000. תראו מה קורה עכשיו לקוד, זה מה שאני רוצה להראות לכם.
אני לוחץ פה על הכפתור, שימו לב מה יקרה. אם לפני הפונקציה הוא היה צריך ללכת לשורה הזאת, נכון, לשורה הבאה, הוא לא הולך לשורה הבאה, הוא קופץ לתוך הפונקציה, ראיתם?
הצהוב קפץ לתוך הפונקציה. התוכנית עכשיו עברה לפונקציה, עושה את החישוב שלה, חישבה לי שהמשכורת צריכה להיות 450, זה לא נכון, למה זה 450?
ברוטו כפול 10 חלקי 100 פחות ארוחה. צריך לבדוק פה, ארוחה זה 50 שקל, ברוטו 5,000, 5,000 כפול 10 זה 50,000, 50,000 לחלק לאיזה, זה 500.
טוב, משהו פה, הסתבכתי פה עם החישוב, אבל נראה אותו אחרי זה, כן? בקיצור, יצא לי 450 שקל משכורת. אבל זה לא מה שמשנה, אני רוצה לראות את הקטע, לא את הבעיה הלוגית שעוד מעט נסדר אותה, אלא קטע של רטורן רס, ברס יושב פה 450 עכשיו.
שימו לב לאן זה חוזר, זה חוזר חזרה לאותה שורת קוד, והנטו הזה קיבל את הערך המחושב. עכשיו שימו לב, יש לי בתוכנית טעות.
דרך אגב, עוד פעם. עוד פעם פונים לאותה פונקציה, אתם רואים? גם לעובד השני נכנסים לאותה פונקציה. האמת שזאת לא הייתה טעות מתוכננת, אבל זאת הייתה דוגמה מצוינת לזה שיש לי טעות בחישוב.
אני אחפש עכשיו מה הטעות, ותחשבו שזה כתוב 50 פעם, עובד שלישי, עובד רביעי, עובד חמישי. אני לא צריך לתקן באלף מקומות. מספיק לי למצוא את הטעות איפה שהוא פה לתקן