
הטקסט המלא של הדקות הראשונות בהרצאה «Array - Enum» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
היום אנחנו נדבר על שלושה דברים קטנים שבחלקם כבר נגענו לפני שנמשיך לשיעור על פונקציות. אז הדבר הראשון שעליו נדבר הוא מערכים. מערך זה בעצם משתנה אחד שמכיל כמה תאים, כמה משתנים למעשה עם אותו שם ואנחנו ניגשים אליהם באמצעות אינדקס.
אז כבר הדגמתי את זה בשיעור הקודם אבל אני אחזור. אז int סוגריים מרובעים int ra שווה new int 10 סוגריים נקודה פסיק מה עשיתי פה הגדרתי את int ra זה השם של המערך הוא מסוג מערך של אינטג'ר זאת אומרת יש לי מערך שכל טאבו יכיל אינטג'ר אז פה הגדרתי את השם ומה שעשיתי פה שווה new int 10 זה יצרתי את המערך בזיכרון.
כלומר בחלק הראשון הגדרתי את השם של המשתנה ואמרתי מה הסוג שלו ופה ממש עשיתי הקצאה דינמית זה נקרא של הזיכרון אוקיי את החלק הזה אני יכול לעשות בכל מקום אחר גם זאת אומרת int הרי שווה new int 10 ואז כאשר אני אגיע לפה בקוד פה ייווצר לי בזיכרון המערך של העשרה תאים איך אני ניגש לכל אחד מהתאים אני יכול באמצעות int array 4 לעשות לו השמה ל-5.
שמתי את ה-5 בתא החמישי. מזכיר שוב, האינדקס של מערך מתחיל מ-0. התא האחרון במקרה הזה, אני אמחק את השורה הזאת ואני אגדיר את זה פה.
התא האחרון פה, התא העשירי, האינדקס שלו יהיה 9. עכשיו, מה שיכול לגרום בעיות זה למשל אם אני אתבלבל ואני ארשום פה int array 10 שווה 5, אני לא מקבל פה הודעת שגיאה איפה אני כן אקבל הודעת שגיאה כאשר אני אריץ ופתאום בזמן ריצה אני מקבל את האקספצ'ן הזה אקספצ'ן זה כשקורה משהו
חריג בזמן ריצה אינדקס אאוט אוף ריינג' אקספצ'ן הרי אינדקס איז אאוט אוף ריינג' כלומר ניסיתי למעשה לגשת לתא 11 המערך שלי מכיל רק עשרה תאים בום קיבלתי אקספצ'ן קיבלתי חריגה קוראים לזה ובמקרה הזה זה ממש חורג מהאינדקס, זה ממש מתאים,
אבל יש לי עוד כל מיני סוגים של חריגות, ואנחנו לא ניכנס אליהם כרגע, כרגיל. זה היה מערך, כאמור, אני יכול להשתמש בו במידה ויש לי כמה אויבים בלבל, אז אני יכול ליצור מערך של אויבים, ואז אני יכול שכולם ביחד, אם אני רץ בלולאה על המערך, כמו שעשינו בפעם קודמת, אם נשתמש בלולעת for שה-i שלי יהיה האינדקס
אנחנו נעשה for int i שווה 0 i קטן מ-10 i++ ואז פה אני יכול לעשות int ra i ואז לעשות מה שאני רוצה לעשות לו השמה למחוק להוסיף וכן הלאה במקרה של אינטג'ר אין לי הרבה אופציות אבל אם זה יהיה מסוג סוגי משתנים שעוד לא הכרנו אז תהיה לי גישה ככה לכל אחד ואחד מהם.
זאת אומרת הרבה פעמים כמו שאמרתי הגישה למערכים תהיה בלולאות. אז זה היה מערך. שוב אנחנו ניתקל במערכים אולי סביר להניח שניתקל בסוגים השונים של סדרות של ערכים.
בוא נגיד שמערך הוא סוג של סדרה מה שנקרא קולקשנס יש לנו המון סוגים לא ניכנס לכולם בטח שלא ניכנס בטח שלא ניכנס לכולם אולי ואני מאמין שלא ניכנס לסוגים נוספים של קולקשן לפני שנפתח את המשחק אבל הקונספט של מערך או לחילופין כל אוסף של נתונים חשוב שתכירו ולכן לימדתי את זה כאן אז אני אמחק
נשאיר אותו זה intra אלה היו מערכים דרך אגב בשפות תכנות ישנות אז לא היה לי סטרינג, היה לי מערך של קרקטרס. כל תא ותא במערך של הקרקטרס היה בעצם אות אחת.
לא היו סטרינגים, נעזוב את זה כרגע. הנושא הבא שעליו נדבר הוא סקופ, זאת אומרת איפה שמשתנים מוכרים כמו שכבר הדגמתי. אם אני מגדיר משתנה dummy int 4 כאן בתוך הסוגריים המסולסליים של הפונקציה סטארט, וכן אני יודע שעוד דיברנו על פונקציות, אז אם אני אנסה בתוך הפונקציה update לגשת אליו הוא אומר לי שהמשתנה הזה לא קיים פה.
The name dummyint4 does not exist in the current context. עכשיו איך אני בכל זאת אם אני רוצה שיהיה לי משתנים שיוכרו בכמה פונקציות אני יכול לגזור אותו מכאן קונטרול x אני מניח ואני מקווה מאוד שאתם מכירים את קונטרול x קונטרול c וקונטרול v.
אני מגדיר אותו בתוך הסוגריים המסובסדות של הקלאס טסט סטאפ ואז פה הוא מכיר אותו אוקיי ברגע שהגדרתי אותו כאן הוא מוכר גם בתוך סטארט וגם בתוך אפדייט כמו שהמשתנה i במקרה הזה מוגדר בתוך הלופ אני יכול אם הייתי רוצה לעשות את אותו דבר במקרה הזה אני יכול להגדיר int i כאן וכאן להשתמש בו ואז כאן יכול לעשות פרינט
והוא מכיר אותו. אוקיי, אז הכל השאלה היא באיזה, בתוך איזה סוגריים מסולסלים אני מגדיר את המשתנה. עכשיו, בנוסף לנושא הזה יש לנו את מה שנקרא Access Modifiers.
מה זה Access Modifiers? זה מה שמשמש אותנו ל-Encapsulation. ומה זה Encapsulation? Encapsulation זה בעצם הסתרת מידע. זה אחד משלושת העקרונות היסודיים ביותר של תכנות Object Oriented.
כאשר השאיפה היא כמו מידור בצבא רק מי שצריך לדעת יודע רק מי שצריך להכיר מכיר השאיפה שלי היא כמה שפחות לחשוף דברים החוצה אבל מה שצריך אני כן צריך.
כלומר למשל public dummy לא דמי public in dummy 4 אני יכול להגדיר אותו כך וזה ה access modifier שלי כרגע הוא public זה אומר שהוא יכול אני יכול לשנות אותו מחוץ לקלאס אנחנו נתקל בזה בהמשך אבל למה זה דווקא יוניטי פה מאוד עוזר לי כי אני יכול לראות שברגע שהגדרתי אותו כפאבליק אז הוא מופיע לי בתוך האינספקטור ואני יכול לשנות אותו מפה גם אוקיי אז זה אני יכול
באמצעות פאבליק כאשר האלטרנטיבה לפאבליק היא פרייבט אינט דמי 5 דמי אינט 5 לצורך פרדנטיות והוא לא נמצא פה אף על פי שיוניטי כבר התעדכן פרייבט זו ברירת המחדל אוקיי יש לי פה גם כן איזה סימון וכתוב לא מעניין אותי כרגע.
לא משנה אז שוב אם אני משנה אותה פה לפאבליק ואני אחכה שיוניטי יתעדכן הוא יופיע לי גם פה שימו לב שהוא מזהה לבד את הקאמל קייס שלי ואיפה מתחילה מילה ולפי זה הוא גם יוצר פה את השם שמופיע.
כלומר הוא יודע שהאינט זה מילה חדשה וחמש זה מילה חדשה מבחינתו והוא יודע להוסיף את הרווחים. אז לא להתבלבל זה לא יופיע באותה צורה אבל זה אלה.
דבר קטן שחשוב לשים לב וזה מאוד חשוב נקרא לזה דמי אינט דמי נקרא לזה פאבליק אינט ונעשה לו פה שווה 10 ובשום מקום אחר בקוד לא ניגשתי אליו לא שיניתי אותו.
כן אבל פה אני אעשה פה פרינט דאמי אינט דאמי