PracticU

The For-Each Loop

בלי כתוביותעם כתוביות
PracticU › קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים › The For-Each Loop
The For-Each Loop
לולאת for-each יודעת לרוץ רק על קולקשנים, כלומר אוספים של פריטים, ומערך חד-ממדי הוא קולקשן. היא מאפשרת סריקה קצרה יותר, בלי להשתמש באינדקס.
השלבים העיקריים
1. התחביר: for (int item : arr). מגדירים את סוג התאים, שם למשתנה, נקודותיים, ואז שם המערך. בכל חזרה item מקבל את הערך של התא הבא לפי הסדר.
2. השוואה ללולאת for רגילה: הצגת כל התאים מניבה את אותה תוצאה בשתי הלולאות. לולאת for-each קצרה וקלה יותר לקריאה.
3. שם המשתנה: מקובל לקרוא לו item, ולא i, כי i מזכיר אינדקס. מי שמתבלבל ומשתמש בו כאינדקס מקבל קריסה.
4. אי אפשר לשנות את המערך: שינוי של item משנה רק את המשתנה עצמו, ולא את התא במערך. לכן מגדירים את המשתנה כ-final, וכך שינוי יתפס כשגיאת קומפילציה.
5. מתי משתמשים: כשרוצים לקרוא את כל המערך בלבד. לחלק מהאיברים בלבד, או לשינוי ערכים, עדיפה לולאת for רגילה.
שימו לב
הרבה פעמים בפיתוח תוכנה צריך בדיוק את הסריקה לקריאה בלבד, ולכן for-each מתאימה למצב הזה.
השיעור הבא בקורס: Exercise - Arrays
מילון מושגים:
לולאה – מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
מערך – מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
אינדקס – מבנה במסד נתונים שמאיץ חיפוש ושליפה; גם מספר המציין מיקום של איבר במערך.
תחביר – אוסף הכללים של שפת תכנות הקובעים כיצד לכתוב קוד תקין; הפרתם גורמת לשגיאת תחביר.
משתנה – שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.

פרקי ההרצאה: The For-Each Loop

  1. 00:00

    מה זה for each ולאיזה אוספים היא מתאימה

  2. 01:07

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

  3. 01:42

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

  4. 02:17

    תחביר לולאת for each

  5. 02:56

    שם הפריט בלולאה וערך התא

  6. 04:21

    למה לא לקרוא למשתנה בשם i

תמלול ההרצאה: The For-Each Loop

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

  1. 00:02

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

  2. 00:16

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

  3. 00:36

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

  4. 00:56

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

  5. 01:20

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

  6. 01:38

    זה הכל, רק להציג. הדבר הראשון שאני אעשה, אני ארוץ עליו בלולאת for בכדי לבצע השוואה עם לולאת for each שאני אבנה ממש לאחר מכן.

  7. 01:50

    אז אם אני אבצע את הסריקה בעזרת לולאת for רגילה, יש לנו int i שווה 0, i קטן מ-arr.length, i++, ואנחנו רוצים לבצע תצוגה של array על i.

  8. 02:07

    נשרשר אותו עם רווח, נוריד ln, ונרד שורה בסוף. אם אנחנו נריץ את זה אנחנו נגיע לכל הערכים של המערך, שזה בעצם האינדקס בריבוע 0, 1, 4, 9, 16 וכדומה.

  9. 02:24

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

  10. 02:44

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

  11. 02:56

    זה שם מומצא. אני אמציא אייטם, אבל הוא יכול להיות כל שם שאתם רוצים. מה זה השם הזה? זה שם של משתנה, זה כאילו שפתחנו פה משתנה.

  12. 03:07

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

  13. 03:31

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

  14. 03:45

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

  15. 04:12

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

  16. 04:48

    אם אנחנו נריץ את זה עכשיו, אנחנו נראה משהו מעניין. אנחנו נראה שההתחלה הודפסה לנו, 0, 1, 16, 81, ומייד אחר כך קריסה.

  17. 05:00

    למה? מפני שבפעם הראשונה ה-i היה 0, אז arr במיקום 0 זה 0,

לקורס המלא: קורס ג'אווה למתחילים אונליין

ההרצאה הקודמת: Initializing Arrays

ההרצאה הבאה: Exercise - Arrays

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

  • לולאה בתוך לולאה - Nested Loop

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

  • קורס מבוא ל-QA - מידע חשוב לבודק תוכנה
  • קורס פוסטמן - Postman - בדיקות לאתרי אינטרנט - API
  • קורס Robot Framework - בדיקות QA ממשק גרפי
  • קורס סלניום בסיסי - בדיקות אוטומטיות - Selenium
  • קורס סלניום מתקדם - CI/CD - Continues Integration
  • קורס מייבן - Maven