Return to Video

פרמטרים בפונקציות!

  • 0:01 - 0:06
    חזרנו לתוכנה שלנו שמציירת את וינסטון, אבל הוספתי לה קצת טקסט.
  • 0:06 - 0:11
    רואים, מה שאני רוצה לעשות זה למקם את וינסטון מתחת לכל אחת מהתוויות האלו,
  • 0:11 - 0:13
    על מנת להראות אותו בכל נקודה בחיים שלו.
  • 0:13 - 0:15
    אבל כרגע הוא מפוזר בכל מקום.
  • 0:15 - 0:20
    זה בגלל שהגדרנו את faceX ו-faceY לערכים רנדומלים בתוך הפונקציה הזו.
  • 0:20 - 0:27
    בקמום, מה שאנחנו רוצים להגיד לתוכנה זה ״היי, הנה כמה מיקומים מדוייקים שבהם אני רוצה שתציירי את וינסטון״
  • 0:27 - 0:34
    ואז אני רוצה להיות מסוגלת להגדיר במדוייק את המיקום בכל פעם שאני קוראת לפונקציה, באותה הדרך שבה השתמשנו ב-()elipse וב-()rect.
  • 0:34 - 0:40
    בסדר? בגלל שאני רוצה לשים וינסטון כאן, ווינסטון כאן, ווינסטון כאן, ווינסטון כאן,
  • 0:40 - 0:45
    ואני לא רוצה סתם מקומות רנדומלים בכל פעם שאני קוראת לפונקציה (מפעילה את הפונקציה)
  • 0:45 - 0:54
    אז בשביל לעשות את זה, צריכים להיות לנו פרמטרים ספציפיים עבור הפונקציה, גם בתוך הגדרת הפונקציה שלנו, פה למעלה,
  • 0:54 - 0:58
    וגם בקריאה שלנו לפונקציה, כאן למטה, איפה שאנחנו קוראים לפונקציה עצמה.
  • 0:58 - 1:11
    אז, עבור ()drawWinston, אנחנו רוצים להעביר לה את faceX ואת faceY, ולהשתמש בערכים האלו שאנחנו מעבירים במקום לייצר אותם רנדומלית.
  • 1:11 - 1:15
    בואו נתחיל על ידי לחשוב מה היינו רוצים להעביר בקריאות לפונקציה כאן למטה.
  • 1:15 - 1:20
    אנחנו רוצים למקם את ווינסטון מתחת לכל שורה של טקסט, אז אנחנו כנראה רוצים שנקודות ה-x וה-y
  • 1:20 - 1:25
    של כל וינסטון יהיו קרובות למספרים שהעברנו לפונקציות ה-()text.
  • 1:25 - 1:38
    אולי, אם ניקח נקודה שנמוכה ב-10 פיקסלים על ציר ה-y. אז אולי, הראשון יהיה 10 ו-30, ואז אולי 200, 230...
  • 1:38 - 1:50
    10, 230.... 200,230. זה אותו הדבר כמו הקוארדינאטות של הטקסט, אני פשוט מוסיפה 10 לכל נקודה y, כי אני רוצה את זה טיפה נמוך יותר.
  • 1:50 - 2:00
    אוקיי, אבל וינסטון לא זה. זה בכלל שלא אמרנו לפונקציה שלנו פה למעלה שאנחנו מעבירים לה פרמטרים, אז היא עדיין משתמש בערכים הרנדומלים האלו.
  • 2:00 - 2:04
    על מנת להגיד לפונקציה, ״הי, אנחנו הולכים לתת לך מידע״,
  • 2:04 - 2:09
    אנחנו צריכים לתת לפרמטרים האלו שם בתוך הסוגריים האלו.
  • 2:09 - 2:17
    אז נקרא להם faceX ו-faceY, ונפריד ביניהם באמצעות פסיק, ואנחנו הולכים לקרוא להם ככה בגלל
  • 2:17 - 2:25
    שאלו הם השמות שכבר השתמשנו בהם בתוך הפונקציה, בסדר? ככה לא נצטרך לשכתב את שאר הקוד שלנו.
  • 2:25 - 2:29
    אבל עדיין, כלום לא קרה. וינסטון עדיין מפוזר בכל מקום.
  • 2:29 - 2:36
    ובכן, אם תסתכלו בתחילת הפונקציה שלנו, אנחנו עדיין ״דורסים״ את faceX ו-faceY עם משתנים רנדומליים.
  • 2:36 - 2:40
    אז, כל מה שאנחנו צריכים לעשות הוא למחוק את השורות האלו...
  • 2:40 - 2:50
    טה-דה! ועכשיו, faceX ו-faceY מועברים אל תוך הפונקציה, והיא משתמשת בערכים שהעברנו לה כאן.
  • 2:50 - 2:59
    עכשיו כמו שאתם יכולים לראות, לא בדיוק מיקמתי את וינסטון נכונה, בכלל ששכחתי שהטקסט מקבל את המיקום שלו לפי הפינה השמאלית העליונה,
  • 2:59 - 3:07
    והפרצוף ממוקם לפי המרכז. אז, אני צריכה לשחק קצת עם המספרים שלי טיפה כאן, נכון?
  • 3:07 - 3:13
    כנראה, אני צריכה להזיז את נקודה x לא מעט, אני צריכה להזיז את זה ל... אוקיי, נראה לי כאן
  • 3:13 - 3:22
    נעבור על המספרים, ועכשיו כל מה שאני צריכה לשנות זה את המספרים שאני מעבירה לפונקציה, אני לא צריכה לשנות את ההגדרה של הפונקציה עצמה,
  • 3:22 - 3:29
    בגלל שהיא תמיד תיקח את הערכים שאנחנו מעבירים לה, בסדר? בדיוק כמו עם הפונקציות ()elipse ו-()rect.
  • 3:29 - 3:34
    אוקיי, אז סוג של מיקמתי את זה, אבל הבחנתי בזה שוינסטון גדול מדי.
  • 3:34 - 3:36
    הוא מכסה את עצמו, הוא לא מתאים.
  • 3:36 - 3:45
    אז, מכיוון ששמתי את כל הקוד שמצייר אותו בפונקציה, אני יכולה לשנות את הגודל של כל הוינסטונים בבת אחת פשוט על ידי שינוי שורת הקוד שמציירת את האליפסה.
  • 3:45 - 3:51
    אז בואו נגיד שנעשה אותו 190, כן, וינסטון הולך להיות בדיאטה, על 190.
  • 3:51 - 4:02
    יפה מאוד, אוקיי, אז עכשיו הוא מתאים הרבה יותר ואתם יודעים שאני יכולה להמשיך לשחק עם המספרים עד שהוא ייכנס נכון?
  • 4:02 - 4:09
    מגניב. אז בואו נעשה סקירה אחרונה על מה הקוד הזה עושה. הוא מגדיר פונקציה בשם ()drawWinston,
  • 4:09 - 4:15
    והפונקציה הזו מקבלת שני ערכים, והיא קוראת להם faceX ו-faceY,
  • 4:15 - 4:25
    והערכים האלו בגדול מגיעים בצורה של משתנים בהם אנחנו יכולים להשתמש בכל מקום בפונקציה שלנו, בדיקו כמו השתמשנו במשתנים שהכרזנו עליהם למעלה
  • 4:25 - 4:35
    ואז אנחנו יכולים לקרוא לפונקציה הזו מתי שאנחנו רוצים אחרי שאני מכריזים עליה, ולהעביר לה ערכים שונים, כך שהיא תשתמש בערכים החדשים האלו בכל ריצה.
  • 4:35 - 4:41
    אז עכשיו הבנתם כמה פונקציות הן מגניבות. אנחנו יכולים להמציא קוד שיהיה ממש מועיל להשתמש בו שוב,
  • 4:41 - 4:47
    אבל אנחנו גם יכולים להשתמש בפרמטרים בשביל להגיד ״היי, הנה משהו קטן שאפשר לשנות בקוד הזה, בשביל להתאים אותו״.
  • 4:47 - 4:53
    זה כמו מתכון. אתם כותבים את ההוראות הכלליות, ואם אתם פתאום מבינים שאתם צריכים להאכיל ארבעה וינסטונים ולא וינסטון אחד,
  • 4:53 - 4:58
    אז אתם לא צריכים להתחיל הכל מההתחלה, אלא פשוט לשנות את ההוראות המקוריות ולהכפיל הכל פי 4.
  • 4:58 - 5:02
    אז עכשיו אתם יכולים להתחיל לחשוב על המתכונים בקוד שלכם! יאמי!
Title:
פרמטרים בפונקציות!
Description:

ניתן לצפות בסרטים נוספים בכתובת:
https://www.khanacademy.org/cs/programming/

more » « less
Video Language:
English
Duration:
05:05

Hebrew subtitles

Revisions