
for (int i = 0; i < 7; i++) עוברת על כל התאים. בכל חזרה grades[i] = scanner.nextInt();. האינדקס i מייצג את המיקום בתוך המערך.length במקום מספר קבוע: grades.length נותן את גודל המערך. כך משנים את הגודל במקום אחד בלבד, ולא בכל שורה שמופיע בה מספר.<= בתנאי הלולאה גורם לחריגה מהגבולות.הטקסט המלא של הדקות הראשונות בהרצאה «Looping over Arrays» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז איך אנחנו יכולים ליצור מערך ולבצע סריקה של המערך הזה על ידי לולאה? בואו ניקח מה שהיה לנו מקודם, מערך ציונים. ניקח grades שווה new grades, סליחה, new int וגודל ובואו נניח שאנחנו רוצים הפעם שבע ציונים מהיוזר, אז שבעה ציונים.
אז איך אנחנו יכולים בבת אחת לומר ליוזר enter seven grades? אנחנו לא רוצים ללכת לגריידס במיקום 0 ולהכניס אליו נתון בודד, גריידס במיקום 1 להכניס נתון בודד, כי כמובן אנחנו רוצים לבצע את הכל בצורה ממש מצומצמת מבחינת קוד.
זה יתבצע כמובן על ידי לולאה, ומה קורה? גם אם יש לנו עכשיו 100 ציונים, אני לא רוצה לבצע 100 שורות קוד רק בשביל לקלוט מידע מהיוזר. אז למעשה הלולאה שמתאימה לנו כאן היא לולאת 4, לפני שאנחנו יודעים בדיוק כמה לרוץ.
אנחנו לוקחים את i ואנחנו תמיד נתחיל אותו בגודל הראשון של המערך, בוא נגיד לא תמיד אבל ברוב המקרים, אם אנחנו רוצים להתחיל מהתא הראשון. לאחר מכן אנחנו רוצים לבצע בדיקה כל עוד i קטן מ-7.
אנחנו לא רוצים לבצע i קטן שווה ל-7, מפני שאז כאשר i יגיע ל-7 אנחנו בעצם לא נצליח להתעסק עם התא הזה במיקום 7 כי אין לנו תא במיקום 7. אינדקס ה-i מייצג תמיד את המיקום שאנחנו רוצים להגיע עבור התא במערך.
כאן אנחנו ממשיכים עם i++, אנחנו פונים לגריידס וכאן במקום לשים 0 או 1 או 2 אנחנו פשוט שמים את i וזה בעצם הטריק לבצע סריקת תלולאה על מערך. כאן אנחנו יכולים או להציג אותו או להכניס אליו ערך.
במקרה הזה אני רוצה להכניס אליו ערך. בואו ניגש ל-console.read.nextint והלולאה הזאת מבצעת סריקה של כל המערך וקולטת לתוכו ערכים מהמשתמש.
אם אנחנו מריצים את זה, אז אנחנו יכולים לראות שיש לנו פה enter 7 grades, בואו נכניס 100, 90, 80, 85, 50, 70, 90 ו-58.
ואנחנו רואים שיש לנו את הקריסה הסופית, כי יש לנו פה את הקטן שווה ל-7. בואו ניפטר ממנו, נריץ שוב, ויש לנו 100, 90, 80, 70, 50, 60, עוד 90 והתוכנית הסתיימה.
יש לנו כאן, כמו שאנחנו רואים, שבעה מספרים. אם אנחנו רוצים גם לרוץ ולהציג את המידע במערך, בואו ניקח לולאה נוספת, int i שווה 0, i קטן מ-7, שוב פעם אותו הדבר, i++, ומה שאנחנו רוצים לעשות זה sysout של grades במיקום i, נשרשר אותו עם איזשהו רווח שכולם יהיו באותה
שורה. בואו נריץ, ולבסוף אנחנו נראה את הציונים מוצגים על המסך. 190, 80, 70, 60, 59 ו-72, והנה כל הציונים מוצגים על המסך.
בואו אפילו נציג כאן All Grades R. ונשאלת השאלה למה בעצם עשינו כאן לולאה נפרדת? האם לא היינו יכולים לקחת את השורה הזאת ופשוט להדביק אותה כאן?
התשובה היא, א', כן, זה היה עובד, היינו רואים את הציונים מיד אחרי שהכנסנו את הציון. אבל מה קורה אם אנחנו רוצים לראות את כל הציונים רק אחרי כל הקליטה?
כאן אנחנו צריכים לולאה נפרדת, ובלי קשר עדיף לבצע חלוקה נפרדת של קטעי קוד שונים. זאת אומרת שאם הלולאה הזאת מתעסקת בקליטת נתונים, שתתעסק בקליטת נתונים, לא בהצגת נתונים.
דרגת נתונים, לולאה אחרת. אם אנחנו רוצים עכשיו לדוגמה לרוץ ולחשב את הממוצע של כל הציונים האלה, אז מן הסתם אנחנו ניקח לולאה שלישית. בואו ניקח פה summary, נאפס אותו.
sum פלוס שווה ל-grades במיקום i, בואו ניקח