פורסם 2012 ביוני 1413 שנים התחלתי ללמוד מ"JAVA על כוס קפה" והגעתי למתודות שאני לא מצליח כל כך להבין..הנה תכנית שהפלט שלה הוא תוצאות החזקות של המספרים 2 ו-3 בכל המספרים מ0 עד 9:public class Functions { public static int power (int base, int n) { int result=1; for(int i=1;i<=n;i++) result=result*base; return result; } public static void main(String[] args) { int res1, res2; System.out.printf("%-4s %-13s %-13s%n", "i", "power(2,i)", "power(3,i)"); System.out.printf("%-4s %-13s %-13s%n","-", "----------", "----------"); for(int i=0; i<=9; i++) { res1=power(2,i); res2=power(3,i); System.out.printf("%-4d %-13d %-13d%n", i, res1, res2); } }}יש כמה דברים שאני לא מצליח להבין:1. סדר הפעולות בתכנית2. השימוש ב-base,n,result ומה ההשפעה שלהם על התכניתתודה רבה לעוזרים
פורסם 2012 ביוני 1413 שנים הקוד תמיד מתחיל לרוץ מה-main (יש סייגים לזה, אבל לא נתייחס אליהם כרגע), בלי קשר לסדר שבו הוא כתוב.נסה לקרוא על פונקציה בויקיפדיה.נניח שאתה כותב תכנית. התכנית צריכה לבצע פעולה מסויימת, לדוגמה לחשב חזקה של שני מספרים. אז כתבת כמה שורות קוד שמחשבות את החזקה הזו, ואז שורה נוספת שמדפיסה את התוצאה.עכשיו נניח שיש מקום אחר בתכנית שצריך שוב לחשב חזקה. מה תעשה? תעתיק ותדביק את הקוד שכתבת במקור? לא, כי זה בזבזני.מה שעושים זה להגדיר מתודה (שנקראת גם פונקציה, יש הבדל בין המושגים אבל לא נתקטנן עליו) שמבצעת את הפקודות הנ"ל. ברגע שכתובה כזו מתודה, אז אפשר להפעיל אותה ("לקרוא" לה) מכל מיני מקומות שונים בתכנית, והיא תפעל בכל אחד מהם.אבל מה, לא נרצה שהמתודה תהיה קבועה לחלוטין - לפעמים נרצה לחשב את 2 בחזקת 3, לפעמים את 3 בחזקת 5 וכן הלאה. אז את המספרים 2 ו-3 אנחנו מעבירים כ"פרמטרים" או "ארגומנטים" למתודה - זה המשמעות של base ו-n.המתודה power בעצם אומרת "בהינתן זוג מספרים, base ו-n, אני מחשבת את base בחזקת n ומחזירה את התוצאה".יש מבין?
פורסם 2012 ביוני 1413 שנים מחבר זה יהיה שקר אם אני אגיד שהבנתי..קראתי כמה פעמים וניסיתי להבין עוד לפני שפרסמתי פה את ההודעה.כל הנושא הזה של מתודות בספר נראה לי קצת מסורבל למתחיל..
פורסם 2012 ביוני 1413 שנים מחבר הרבה יותר ברור ממקודם זה בטוח..בmain כל פעם שכתוב power זה בעצם מריץ את הפונקציה?ובנוסף, עדיין לא הצלחתי להבין את התפקיד של result, אולי אם תוכל לתת לי דוגמא מספרית במילים זה יעזוראגב, תודה רבה על ההשקעה בהסבר
פורסם 2012 ביוני 1413 שנים בmain כל פעם שכתוב power זה בעצם מריץ את הפונקציה?כן.ובנוסף, עדיין לא הצלחתי להבין את התפקיד של result, אולי אם תוכל לתת לי דוגמא מספרית במילים זה יעזורזה משתנה ששומר את התוצאה הזמנית של חישוב החזקה.נניח שהיית מחשב את 3 בחזקת 5 באמצעות דף ועט. איך היית עושה את זה? קודם כל היית כותב את 3 על הדף. היית כופל אותו ב-3, וכותב את התוצאה על הדף. היית כופל את התוצאה הזו ב-3 וכותב את התוצאה החדשה על הדף. ככה היית ממשיך עד שכפלת את 3 בעצמו 5 פעמים. התוצאה שכתובה לך על הדף היא בדיוק 3 בחזקת 5.אז המשתנה result שקול בדיוק לתוצאה הזמנית שכתבת על הדף בכל שלב.
פורסם 2012 ביוני 1413 שנים מחבר טוב אז רק לוודא שהבנתי..res1=power(2,i) i הוא מספר מסוים, 3 לצורך העניין. אז זה כביכול הולך לפונקציה הראשונה ו-n הוא 3 לצורך החישוב שם?
פורסם 2012 ביוני 1413 שנים מחבר מעולה תודה רבה!אגב שאלה שנזכרתי בה רק עכשיו: תפקיד return זה בעצם לקשר בין המתודות?
פורסם 2012 ביוני 1413 שנים סוג של. כמו שהמתודה מקבלת קלט מסוים (הפרמטרים base ו-n), היא גם יכולה להוציא פלט מסוים. הפקודה שמוציאה את הפלט הזה היא return.שים לב לשורת ההצהרה של המתודה:public static int power (int base, int n)ה-int שהדגשתי הוא מה שמציין שהפונקציה מחזירה int (דהיינו מספר שלם), כלומר זה אומר שאפשר לשים את התוצאה של הפונקציה במשתנה מסוג int. אם הצהרת שהפונקציה מחזירה int, אז אתה חייב לכתוב בסופה שורה עם return X, כש-X הוא int כלשהו.
פורסם 2012 ביוני 1713 שנים שניצל, נראה לי שהשאלות ותשובות בדיון הזה הן כלליות מאד ומתאימות לFAQ אולי כדאי לבנות כזה (או להוסיף אם כבר יש)
פורסם 2012 ביוני 1713 שנים רעיון טוב, יש כזה דיון, הוא הסטיקי הראשון כאן בפורום. כמו שרשמתי בסטיקי, הוא עדיין בבנייה ולכן פתוח להצעות.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.