PracticU

Array - Enum

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח משחקים יוניטי - Unity - שפת #C › Array - Enum
מילון מושגים:
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
אינדקס - מבנה במסד נתונים שמאיץ חיפוש ושליפה. גם מספר המציין מיקום של איבר במערך.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.

Array - Enum
ההרצאה עוסקת בשלושה נושאים בסיסיים ב-C# ב-Unity: מערכים, תחום הכרת המשתנה (scope), ומגבלות הגישה למשתנים (access modifiers). בסוף נלמד על enum.
השלבים העיקריים
1. מערך: מערך הוא משתנה אחד שמכיל כמה תאים מאותו סוג. השורה int[] ra = new int[10]; מקצה בזיכרון מערך של עשרה מספרים שלמים.
2. אינדקס: הגישה לתא נעשית לפי אינדקס שמתחיל מ-0. במערך של עשרה תאים התא האחרון הוא 9.
3. מעבר על מערך בלולאה: בלולאת for עם אינדקס i אפשר לגשת לכל תא ולבצע בו פעולה, כמו השמה או הוספה.
4. scope: משתנה שמוגדר בתוך פונקציה מוכר רק בתוכה. משתנה שמוגדר בתוך המחלקה, מחוץ לפונקציות, מוכר בכל הפונקציות שלה.
5. access modifiers: public מאפשר לשנות את המשתנה גם מחוץ למחלקה, והוא מופיע ב-Inspector של Unity. ברירת המחדל היא private.
6. enum: מגדירים סוג משתנה חדש, כמו WeaponType עם ערכים כמו none ו-pistol, ואז מגדירים משתנה public מהסוג הזה. ב-Inspector אפשר לבחור את הערך מתוך רשימה.
טעויות נפוצות
פנייה לאינדקס מחוץ לטווח, למשל 10 במערך של עשרה תאים, לא נתפסת בזמן ההידור. היא גורמת לשגיאה בזמן הריצה, IndexOutOfRangeException.
ערך שמוגדר ב-Inspector דורס את הערך שנכתב בקוד. בהרצאה הודפס הערך 5 שהוגדר ב-Inspector, למרות שבקוד נכתב 10.
ההרצאה הבאה תעסוק בפונקציות.
השיעור הבא בקורס: פונקציה - Function

פרקי ההרצאה: Array - Enum

  1. 00:00

    מבוא: מערכים, היקף משתנים ומודיפיירים

  2. 00:49

    הגדרת מערך והקצאת זיכרון בעזרת new

  3. 01:54

    גישה לתאים לפי אינדקס וחריגה מהגבולות

  4. 03:26

    מעבר על כל תאי המערך בלולאת for

  5. 05:36

    היקף המשתנה: בתוך פונקציה או ברמת המחלקה

  6. 07:17

    Access Modifiers והסתרת מידע (Encapsulation)

  7. 07:52

    הגדרת public ו-private למשתנים

תמלול ההרצאה: Array - Enum

הטקסט המלא של הדקות הראשונות בהרצאה «Array - Enum» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:29

    אז כבר הדגמתי את זה בשיעור הקודם אבל אני אחזור. אז int סוגריים מרובעים int ra שווה new int 10 סוגריים נקודה פסיק מה עשיתי פה הגדרתי את int ra זה השם של המערך הוא מסוג מערך של אינטג'ר זאת אומרת יש לי מערך שכל טאבו יכיל אינטג'ר אז פה הגדרתי את השם ומה שעשיתי פה שווה new int 10 זה יצרתי את המערך בזיכרון.

  3. 01:17

    כלומר בחלק הראשון הגדרתי את השם של המשתנה ואמרתי מה הסוג שלו ופה ממש עשיתי הקצאה דינמית זה נקרא של הזיכרון אוקיי את החלק הזה אני יכול לעשות בכל מקום אחר גם זאת אומרת int הרי שווה new int 10 ואז כאשר אני אגיע לפה בקוד פה ייווצר לי בזיכרון המערך של העשרה תאים איך אני ניגש לכל אחד מהתאים אני יכול באמצעות int array 4 לעשות לו השמה ל-5.

  4. 02:07

    שמתי את ה-5 בתא החמישי. מזכיר שוב, האינדקס של מערך מתחיל מ-0. התא האחרון במקרה הזה, אני אמחק את השורה הזאת ואני אגדיר את זה פה.

  5. 02:24

    התא האחרון פה, התא העשירי, האינדקס שלו יהיה 9. עכשיו, מה שיכול לגרום בעיות זה למשל אם אני אתבלבל ואני ארשום פה int array 10 שווה 5, אני לא מקבל פה הודעת שגיאה איפה אני כן אקבל הודעת שגיאה כאשר אני אריץ ופתאום בזמן ריצה אני מקבל את האקספצ'ן הזה אקספצ'ן זה כשקורה משהו

  6. 02:49

    חריג בזמן ריצה אינדקס אאוט אוף ריינג' אקספצ'ן הרי אינדקס איז אאוט אוף ריינג' כלומר ניסיתי למעשה לגשת לתא 11 המערך שלי מכיל רק עשרה תאים בום קיבלתי אקספצ'ן קיבלתי חריגה קוראים לזה ובמקרה הזה זה ממש חורג מהאינדקס, זה ממש מתאים,

  7. 03:14

    אבל יש לי עוד כל מיני סוגים של חריגות, ואנחנו לא ניכנס אליהם כרגע, כרגיל. זה היה מערך, כאמור, אני יכול להשתמש בו במידה ויש לי כמה אויבים בלבל, אז אני יכול ליצור מערך של אויבים, ואז אני יכול שכולם ביחד, אם אני רץ בלולאה על המערך, כמו שעשינו בפעם קודמת, אם נשתמש בלולעת for שה-i שלי יהיה האינדקס

  8. 03:45

    אנחנו נעשה for int i שווה 0 i קטן מ-10 i++ ואז פה אני יכול לעשות int ra i ואז לעשות מה שאני רוצה לעשות לו השמה למחוק להוסיף וכן הלאה במקרה של אינטג'ר אין לי הרבה אופציות אבל אם זה יהיה מסוג סוגי משתנים שעוד לא הכרנו אז תהיה לי גישה ככה לכל אחד ואחד מהם.

  9. 04:17

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

  10. 04:36

    בוא נגיד שמערך הוא סוג של סדרה מה שנקרא קולקשנס יש לנו המון סוגים לא ניכנס לכולם בטח שלא ניכנס בטח שלא ניכנס לכולם אולי ואני מאמין שלא ניכנס לסוגים נוספים של קולקשן לפני שנפתח את המשחק אבל הקונספט של מערך או לחילופין כל אוסף של נתונים חשוב שתכירו ולכן לימדתי את זה כאן אז אני אמחק

  11. 05:11

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

  12. 05:32

    לא היו סטרינגים, נעזוב את זה כרגע. הנושא הבא שעליו נדבר הוא סקופ, זאת אומרת איפה שמשתנים מוכרים כמו שכבר הדגמתי. אם אני מגדיר משתנה dummy int 4 כאן בתוך הסוגריים המסולסליים של הפונקציה סטארט, וכן אני יודע שעוד דיברנו על פונקציות, אז אם אני אנסה בתוך הפונקציה update לגשת אליו הוא אומר לי שהמשתנה הזה לא קיים פה.

  13. 06:05

    The name dummyint4 does not exist in the current context. עכשיו איך אני בכל זאת אם אני רוצה שיהיה לי משתנים שיוכרו בכמה פונקציות אני יכול לגזור אותו מכאן קונטרול x אני מניח ואני מקווה מאוד שאתם מכירים את קונטרול x קונטרול c וקונטרול v.

  14. 06:26

    אני מגדיר אותו בתוך הסוגריים המסובסדות של הקלאס טסט סטאפ ואז פה הוא מכיר אותו אוקיי ברגע שהגדרתי אותו כאן הוא מוכר גם בתוך סטארט וגם בתוך אפדייט כמו שהמשתנה i במקרה הזה מוגדר בתוך הלופ אני יכול אם הייתי רוצה לעשות את אותו דבר במקרה הזה אני יכול להגדיר int i כאן וכאן להשתמש בו ואז כאן יכול לעשות פרינט

  15. 07:05

    והוא מכיר אותו. אוקיי, אז הכל השאלה היא באיזה, בתוך איזה סוגריים מסולסלים אני מגדיר את המשתנה. עכשיו, בנוסף לנושא הזה יש לנו את מה שנקרא Access Modifiers.

  16. 07:22

    מה זה Access Modifiers? זה מה שמשמש אותנו ל-Encapsulation. ומה זה Encapsulation? Encapsulation זה בעצם הסתרת מידע. זה אחד משלושת העקרונות היסודיים ביותר של תכנות Object Oriented.

  17. 07:40

    כאשר השאיפה היא כמו מידור בצבא רק מי שצריך לדעת יודע רק מי שצריך להכיר מכיר השאיפה שלי היא כמה שפחות לחשוף דברים החוצה אבל מה שצריך אני כן צריך.

  18. 07:57

    כלומר למשל public dummy לא דמי public in dummy 4 אני יכול להגדיר אותו כך וזה ה access modifier שלי כרגע הוא public זה אומר שהוא יכול אני יכול לשנות אותו מחוץ לקלאס אנחנו נתקל בזה בהמשך אבל למה זה דווקא יוניטי פה מאוד עוזר לי כי אני יכול לראות שברגע שהגדרתי אותו כפאבליק אז הוא מופיע לי בתוך האינספקטור ואני יכול לשנות אותו מפה גם אוקיי אז זה אני יכול

  19. 08:37

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

  20. 09:10

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

  21. 09:30

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

  22. 09:44

    דבר קטן שחשוב לשים לב וזה מאוד חשוב נקרא לזה דמי אינט דמי נקרא לזה פאבליק אינט ונעשה לו פה שווה 10 ובשום מקום אחר בקוד לא ניגשתי אליו לא שיניתי אותו.

  23. 10:11

    כן אבל פה אני אעשה פה פרינט דאמי אינט דאמי

לקורס המלא: קורס פיתוח משחקים ביוניטי

ההרצאה הקודמת: לולאות - for - while

ההרצאה הבאה: פונקציה - Function

הרצאות קשורות מקורסים אחרים

  • enum
  • Enum Conversions
  • יצירת enum ב-TypeScript
  • מערכים - Array JAVA

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת C# .NET - קורס תכנות למתחילים - דוט-נט / סי-שארפ - חומר לימוד של מדעי המחשב