Return to Video

מערכים של אובייקטים - Arrays of Objects (Video Version)

  • 0:01 - 0:03
    בואו נמשיך לחקור מה אנו יכולים לעשות עם אובייקטים.
  • 0:04 - 0:08
    אנחנו שוב עם התוכנית שהשתמשנו בה במדריך לפונקציות.
  • 0:09 - 0:14
    בתוכנית הזאת יש פונקציית drawWinston שיודעת לצייר את ווינסטון במיקום X ו-Y מסוים.
  • 0:14 - 0:23
    ואז כאן למטה, אנחנו קוראים ל-drawWinston ארבע פעמים, כל פעם עם קואורדינטות X ו-Y שונות.
  • 0:23 - 0:28
    אתם מכירים אותי, כשאני מסתכלת על ארבעת הקריאות האלו לפונקציה drawWinston שהן כל כך דומות,
  • 0:29 - 0:39
    כל מה שאני יכולה לחשוב זה כמה זה היה יותר טוב אם יכולנו להשתמש בלולאה ולקרוא לפונקציה רק פעם אחת בתוך הלולאה, עם שינוי קואורדינטות ה-X ו-Y בכל סיבוב.
  • 0:39 - 0:47
    אז, כדי לעשות את זה, אנחנו צריכים למצוא דרך לשמור את מיקומי ה-X וה-Y במערך כדי שנוכל לעבור עליו בלולאה.
  • 0:47 - 0:56
    ובכן, יש לנו שני סטים של ערכים, אז נוכל לעשות את זה עם שני מערכים. אחד למיקומי ה-X, ואחד למיקומי ה-Y.
  • 0:56 - 1:09
    עבור מיקומי X יהיו לנו למשל, 99, 294, 101, ו-294, ועבור מיקומי Y יהיו לנו 117, 117, 316, 316.
  • 1:09 - 1:18
    אוקיי, עכשיו נוכל לעבור עם לולאה על המערכים האלו עם לולאת for. נרשום: var i = 0;
    i < xPositions.length;
    i++
  • 1:18 - 1:30
    אז אנחנו עוברים על כל איבר במערך xPositions והפקודה שנרשום היא
    drawWinston(xPositions[i], yPositions[i])
  • 1:30 - 1:34
    אוקיי, אז, בואו נראה אם זה עבד, נחמק את זה...
  • 1:34 - 1:36
    בסדר, זה עבד.
  • 1:36 - 1:45
    עכשיו יש לנו שורת קוד אחת שקוראת לפונקציה drawWinston, והיא מתבצעת עבור כל מיקום במערך xPosition.
  • 1:45 - 1:57
    אנחנו יכולים להוסיף עוד... (10,1) ואז (1,1), ו-(100,1).
  • 1:57 - 2:13
    עכשיו זה מתחיל להיראות קצת מבולגן, ואני לא אוהבת את זה, כי זה ממש קשה לראות איזה Xים שייכים לאיזה Yים. אני רוצה רק להעיף מבט ולדעת מה הם
  • 2:13 - 2:21
    הזוגות של X ו-Y, במקום שאצטרך לוודא שאני מסדרת אותם אחד מעל השני במערך.
  • 2:22 - 2:27
    אני רוצה למצוא דרך אחרת לשמור את המיקומים האלו.
  • 2:27 - 2:31
    רעיון אחד הוא לשמור אותם בתור אובייקטים.
  • 2:31 - 2:39
    תחשבו על זה, כל מיקום הוא בסה"כ שני חלקי מידע: מיקום ה-X וה-Y. אז, אנחנו יכולים להחזיק אובייקט שיש לו מאפיין X ומאפיין Y
  • 2:39 - 2:44
    ואז יכול להיות לנו מערך של אובייקטים עם כל מיקומי ה-X וה-Y.
  • 2:44 - 2:46
    בואו נעשה את זה.
  • 2:46 - 2:51
    נרשום: var positions שווה.. וכאן יהיה לנו מערך גם.
  • 2:51 - 2:56
    אבל, כל איבר, במקום להיות מספר, הולך להיות אובייקט.
  • 2:56 - 3:05
    אז, כאן הסוגריים המסלוסלים שלנו, ואז נרשום פשוט: X: 99, Y: 117.
  • 3:05 - 3:13
    אוקיי, אז עכשיו יש לנו את אחד המיקומים שלנו, נוסיף עוד אחד.
  • 3:13 - 3:31
    אוקיי, X צריך להיות 294, 117, השלישי הולך להיות 101, 316, והאחרון 294, 316.
  • 3:31 - 3:38
    אוקיי, עכשיו יש לנו מערך של אובייקטים, וכל אובייקט מכיל מאפייני X ו-Y.
  • 3:38 - 3:44
    כאן למטה, בלולאת ה-for שלנו, נשנה את הלולאה כך שתרוץ מספר פעמים כאורך המערך positions.length
  • 3:44 - 3:49
    אז נעביר את האובייקט
  • 3:49 - 3:59
    עכשיו זה מעביר את כל האובייקט, אבל אנחנו רוצים להעביר את ה-X וה-Y, אז אנחנו צריכים לרשום: positions[i].X ו-positions[i].Y.
  • 3:59 - 4:00
    טה-דה!
  • 4:00 - 4:04
    עכשיו, אנחנו יכולים להיפטר מהמערכים הישנים.
  • 4:04 - 4:13
    מעולה, זה נראה הרבה יותר נחמד, והופך את הקוד להרבה יותר קריא - וזה תמיד יותר טוב שיש לנו קוד יותר קריא.
  • 4:13 - 4:25
    זה גם הופך את זה לפשוט יותר להוסיף מיקומים, אם נרצה. אני אוסיף אחד כאן - X הוא 200, Y הוא 200, נכניס את ווינסטון שם באמצע.
  • 4:25 - 4:27
    מגניב.
  • 4:27 - 4:31
    עכשיו אני רוצה להראות לכם משהו אפילו יותר יפה.
  • 4:31 - 4:39
    שימו לב שהפונקציה שלנו מקבלת כרגע שני מספרים, ואז משתמשת בשני המספרים האלו.
  • 4:39 - 4:45
    אנחנו יכולים לשנות את הפונקציה כך שהיא תצפה לאובייקט יחיד, ואז היא לוקחת את מאפייני ה-X וה-Y מהאובייקט,
  • 4:45 - 4:49
    כך שכאן נוכל פשוט להעביר את האובייקט.
  • 4:49 - 4:51
    בואו ננסה את זה.
  • 4:51 - 4:54
    נעביר את האובייקט, עכשיו זה לא עובד.
  • 4:54 - 5:00
    זה כי הפונקציה שלנו עדיין מצפה לשני פרמטרים והיא מקבלת רק אחד, אז נשנה את זה
  • 5:00 - 5:07
    נרשום שהיא מקבלת facePosition, ועכשיו אנחנו מקבלים עוד שגיאה, ש-faceX לא מוגדר
  • 5:07 - 5:13
    כי קודם העברנו את faceX כפרמטר, אבל עכשיו הוא לא קיים, אנחנו מקבלים רק אובייקט.
  • 5:13 - 5:21
    אז, מה שאנחנו יכולים לעשות, זה לשמור את מיקום ה-X שיש באובייקט בתוך המשתנה faceX.
  • 5:21 - 5:28
    אז קיבלנו את האובייקט הזה, אנחנו יודעים שיש לו מאפיין X, אז אנחנו פשוט הולכים לשמור את הערך הזה לתוך המשתנה faceX.
  • 5:28 - 5:34
    אנחנו יכולים לעשות את אותו הדבר עם Y, אז faceY = facePosition.y.
  • 5:34 - 5:35
    טה-דה!
  • 5:35 - 5:38
    ואז, שאר הפונקציה משתמשת ב-faceX וב-faceY.
  • 5:38 - 5:44
    שימו לב, אנחנו צריכים לוודא שאנחנו מאייתים את זה נכון, אם היינו כותבים xx, זה לא היה עובד כי זה לא מה שרשום למטה
  • 5:44 - 5:48
    במערך האובייקטים שלנו - זה צריך להתאים.
  • 5:48 - 5:53
    זה די מגניב - אתם יכולים ליצור מערכים של אובייקטים, ליצור פונקציות שמקבלות אובייקטים
  • 5:53 - 6:00
    ואתם תגלו שלתוכניות שלכם יכול להיות הרבה כוח עם הדרך שבה אובייקטים מארגנים מידע
  • 6:00 - 6:05
    בייחוד כי זה מאוד נפוץ לרצות לצמד את X ו-Y יחד, אני חושבת שתמצאו את זה
  • 6:05 - 6:09
    מאוד שימושי בכל תוכניות הציור והאנימציה.
  • 6:09 - 6:12
    אז תמשיכו עם זה ותהנו!
Title:
מערכים של אובייקטים - Arrays of Objects (Video Version)
Description:

זהו פשוט צילום מסך של שיעור הקוד האינטראקטיבי שלנו, שהוכן כדי להקל על הכנת כתוביות ותרגום. עדיף לצפות בשיעורים שלנו בכתובת:
https://www.khanacademy.org/cs/programming/

This is just a screen grab of our interactive coding talk-through, prepared to make captioning and translation easier. It is better to watch our talk-throughs here:
https://www.khanacademy.org/cs/programming/

more » « less
Video Language:
English
Duration:
06:12

Hebrew subtitles

Revisions