
for ו-while כשצריך אינדקס, ו-foreach כשצריך לעבור על כל הפריטים באוסף.הטקסט המלא של הדקות הראשונות בהרצאה «לולאות For, While באתרי אינטרנט» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום, שמי אבי, וההרצאה שאני עומד להעביר היום תהיה ההרצאה האחרונה בנושא של משפטי בקרה בתכנות. היא תהיה הרצאה בנושא של לולאות. אז בסוף השיעור הזה אתם תדעו מהם לולאות, תקבלו כמה דוגמאות על איך משתמשים בלולאות בתוכניות ואיך כותבים לולאות בצורה נכונה.
אז מה זה בעצם לולאות? לולאות זה בעצם קטעי קוד שחוזרים על עצמם כמה פעמים. כבר במהלך התוכנית שאנחנו רוצים שקטע קוד מסוים יתבצע מספר פעמים עבור דבר מסוים.
מכיוון שתוכנית מחשב בצד ברצף של הוראות, המבנה של הולאה בקוד מאפשר לנו להימנע מהפעולה הרציפה, מהביצוע הרציף של התוכנית פקודה אחר פקודה, ומאפשר לנו לבצע מספר פקודות כמה פעמים.
אוקיי, אני בטוח שאתם נתקלתם בתוכניות מחשב שמשתמשות במשפטי בקרה מסוג לולאות. אולי לא קראתם להן בשם הזה, אבל בטוח נתקלתם בהן, כי כמעט אין שום תוכנית שפועלת ולא משתמשת בלולאות כחלק מהפעולה שלה.
אם ניקח לדוגמה פעולה של קריאה של שורה מקובץ טקסט, בוא נגיד יש לנו קובץ טקסט של 200 שורות ואנחנו רוצים לקרוא שורה אחר שורה, הפקודה של הקריאה של שורה אחת היא פקודה שחוזרת על עצמה 200 פעמים במקרה הזה אז אנחנו רוצים 200 פעמים לבצע את אותה פעולה
כנ"ל לגבי פקודה של מחיקה של שורות ריקות מקובץ בוא נגיד אנחנו אספנו את כל השורות הריקות מקובץ מסוים אנחנו רוצים לעבור עכשיו על כל שורה בשורה הריקה ולמחוק אותה זו פעולה שחוזרת על עצמה עוד דוגמה שכיחה זה דף רכישת מוצרים באינטרנט אם יש לנו איזה דף עם מוצרים ואנחנו רוצים עכשיו לסכום את כל המוצרים,
את כל הפריטים שאנחנו החלטנו לקנות, אז יש פקודה שפשוט מחברת את כל הפריטים שבחרנו וסוכמת אותם. אז הפקודה של הסיכום היא פקודה שחוזרת על עצמה, פקודה של חיבור.
אז בוא ניגש לקוד ונראה איך אנחנו בעצם משתמשים בלולאות. אז אני בניתי דף שמורכב מרשימת מוצרים, מוצרי מחשב.
מפתיע והיוזר המשתמש יכול לבחור מספר מוצרים מסוים והוא יכול ללחוץ על הכפתור סכם וכשהוא לוחץ על הכפתור סכם התוכנית אמורה לחבר את כל הסכומים של כל המוצרים שהוא בחר עכשיו בתור תוכנית מחשב בוא נחשוב על זה מה אנחנו רוצים בעצם לבצע אנחנו רוצים עכשיו לעבור שורה שורה ועבור כל שורה שאנחנו בוחרים אנחנו אנחנו רוצים קודם כל לבדוק האם השורה הזאת נבחרה
ואם היא נבחרה מה הערך של אותו פריט ולאחר שיש לנו את הערך של אותו פריט אנחנו רוצים להוסיף אותו לסכום הכללי ואז בסופו של דבר לקבל אותו אז אם אנחנו נרשום את זה בצורה מילולית כמו שרשמתי פה מה שאנחנו רוצים לעשות עבור כל שורה ושורה זה קודם כל לקבל את השורה הבאה בטבלה אז קיבלנו את השורה המסוימת אנחנו בודקים האם הפריט בשורה נבחר
האם ה-checkbox מסומן? לאחר שבדקנו את זה, אם הוא נבחר באמת, אנחנו רוצים לקבל את הערך שלו. ולאחר שקיבלנו את הערך שלו, אנחנו רוצים להוסיף את הערך שלו לאיזה משתנה כללי שייצג את הסכום הכללי של כל המוצרים שנבחרו.
ואנחנו רוצים לעשות את הארבע פעולות האלה שוב ושוב עבור כל אחת מהשורות. אז למעשה, ארבע הפעולות האלה חוזרות על עצמן עבור כל אחת ואחת מהשורות האלה.
אז מה שאני עשיתי פה, אולי זה ייראה לכם קצת מוזר, אבל המשתנה הזה זה משתנה בדיוק כמו משתנה שאתם מכירים מסוג של סטרינג או מסוג של אינט, אבל המשתנה הזה הוא משתנה מיוחד כי הוא מכיל בתוכו את כל השורות שאתם רואים פה.
כל השורות שאתם רואים בטבלה הזאתי, המשתנה הזה מכיל. הוא למעשה אוסף, קולקשן של שורות. אוסף של שורות. לכל שורה פה יש לה איזה מספר מסוים, מספר סידורי.
השורה הזאתי, המספר שלה הוא 0. השורה הבאה אחריה היא 1, השורה הבאה אחריה היא 2, השורה הבאה אחריה היא 3, השורה הבאה אחריה היא 4, הבאה אחריה היא 5 והבאה אחריה היא 6.
עכשיו, אם אנחנו נסתכל, סך הכל יש לנו פה 7 שורות. אם אנחנו מתחילים מ-1, זאת אומרת, אם אנחנו עושים 1, 2, 3, 4, 5, 6, 7, יש לנו 7 שורות.
אם אנחנו מתחילים מ-0, 0, 1, 2, 3, 4, 5, 6, יש לנו פה, מבחינת הסדר המספרי, מבחינת המספור 6. עכשיו, כיוון שיש לכל שורה יש לה מספר אנחנו רוצים לקבל את אותה שורה לפי המספור שלה הסידורי לאחר שקיבלנו אותה אנחנו רוצים לבצע את כל הפעולות שוב ושוב ושוב ושוב אלא למעשה הפעולות שחוזרות על עצמם המשתנה הזה שהגדרתי פה הוא
משתנה שמייצג את הסכום הכללי של המוצרים שנבחרו ככה שבסופו של דבר לדוגמה פה הסכום הכללי יהיה 1290 שקל או דולר, מה שמייצג.
אוקיי, עכשיו בוא נראה איך אנחנו ממירים את ההסבר המילולי הזה לשפת קוד. אז קודם כל, אנחנו רוצים, יש כמה סוגי לולאות. אני אעבור קודם כל על הלולאה הראשונה.
הלולאה הראשונה כתובה בצורה הזאת, ואני בעצם רשמתי פה.
אנחנו הרי רוצים עכשיו לקבל כל שורה ושורה, ועבור כל שורה ושורה אנחנו רוצים לבצל את הפעולות האלה. זאת אומרת, אם אנחנו נכניס את כל החלק הזה לתוך הקוד הזה, לפה, אנחנו רוצים לבצע את הפעולות האלה עבור כל שורה ושורה פה.
עכשיו, איך אנחנו מקבלים כל שורה ושורה? ואיך אנחנו יודעים שסיימנו לבצע כבר את כל השורות וסיימנו לבצע את ההלולה? אז, אני אמחק את זה.
אוקיי, אז מה שיש לנו פה זה דבר פשוט. יש לנו פה משתנה שנקרא אינדקס. המשתנה הזה מייצג את המיקום המספרי של כל שורה. בהתחלה הוא 0, אנחנו נמצאים בשורה הזאת.
לאחר מכן יש פה עוד חלק, יש פה חלק מהלולאה שהוא החלק החשוב, הוא למעשה התנאי, התנאי שמגדיר האם הלולאה תמשיך לרוץ. התנאי הזה אומר ככה, אם האינדקס, אם המספור שמייצג פה את המספור של השורה קטן מכמות השורות שיש פה, יש פה עכשיו שבע שורות או שש שורות אם אנחנו מתחילים מאפס,
אז אם האינדקס פה הוא קטן, זאת אומרת אנחנו עדיין לא הגענו לסוף הרשימה, אם החוואה אינדקס הוא 0, אנחנו נמצאים פה. מספר השורות לא משתנה.
מה שיהיה רשום פה יהיה 6. מכיוון שמספר השורות פה יהיה 6 והאינדקס פה הוא 0, אנחנו נמצאים פה. החלק הזה פה הוא חלק שמעלה את אותו אינדקס ב-1, כאשר אנחנו רוצים לעבור לשורה הבאה.
ברגע שעברנו לשורה הבאה, אנחנו מבצעים את החלק הזה, ואז עוד פעם בודקים האם אנחנו נמצאים בסוף השורה האחרונה לפי התנאי הזה. אז לא קודם כל נמיר כל שורה ושורה פה, כל שורה בשורה מילולית לקוד.
אז אנחנו רוצים לקבל את השורה הבאה בטבלה. איך אנחנו מקבלים אותה? html table row item rows index אוקיי, מה שקורה פה זה שיש לנו Item Rows. Item Rows, כפי שאתם יודעים, זה משתנה שמאכיל את אוסף השורות.
לכל שורה יש לה מספר סידורי, כאילו היא עומדת בתור. אנחנו עכשיו נותנים את המספר של השורה שאותה אנחנו רוצים לעבוד עליה עכשיו.
אז במקרה הזה האינדקס פה יהיה 0. אז אנחנו פונים עכשיו באוסף השורות שיש לי פה לשורה 0 ומקבלים ממנה, מאוסף השורות הזה, את השורה שתהיה השורה הזאת למעשה.
זה השורה, זה למעשה מייצג שורה. לאחר שקיבלנו את השורה אנחנו רוצים לבדוק האם הפריט בשורה נבחר. אז אנחנו עושים את הדבר הבא: נגדיר פה משתנה מסוג בול, משתנה בוליאני, נקרא לו Item Selected is Item Selected ונעביר לו raw.
אז פה אנחנו עכשיו מגדירים פונקציה, קוראים לפונקציה מסוימת שאני הגדרתי, שנקראת isItemSelected. הפונקציה הזאת מקבלת שורה ובודקת האם השורה הזאת נבחרה, בודקת האם המשתמש סימן את ה-checkbox, ומחזירה לנו תשובה true, האם הוא סימן, או false, האם הוא לא סימן.
עכשיו אנחנו צריכים להגדיר פה משתנה נוסף, SelectedItemPrice, נגיד שהוא 0. המשתנה הזה מייצג את הערך של פריט שנבחר, הפריט בשורה הנוכחית שנבחר. עכשיו אנחנו מבצעים את השורה הזאת, בדיקה אם הפריט בשורה נבחר.
אז קודם כל קיבלנו מהפונקציה הזאת את התשובה, האם הפריט נבחר. אנחנו צריכים לבדוק מה התשובה שקיבלנו ממנה. אז אם נחזור ל...
אם אתם זוכרים בשיעור של משפט הבקרה if, אנחנו בודקים פה עכשיו בגלל תנאי מסוים. אז if item selected, אם התשובה שקיבלנו היא true, אנחנו רוצים עכשיו לבצע משהו מסוים, והמשהו הזה זה לקבל את הערך של הפריט שנבחר.
זאת אומרת, אם הפריט נבחר, אנחנו מקבלים את הערך שלו פה, ואת זה אנחנו עושים בצורה הבאה: Selected Item, Get Item Price.
פה אני קורא לעוד פונקציה שנקראת Get Item Price. אני מעביר לה את השורה שאנחנו עובדים עליה כרגע, השורה שאנחנו עובדים עליה כרגע בלולאה, והיא מחזירה לי את הערך של אותה שורה.
זה הערך של אותה שורה. ובסוף אנחנו רוצים להוסיף את הערך של הפריט בשורה הנוכחית לסכום הכללי. אז יש לנו עכשיו את הסכום הכללי שמיוצג על ידי המשתנה הזה total money ואני עכשיו עושה את הפעולה הזאתי.
הפעולה הזאתי זה פעולה מקוצרת להוספה. item price. הפעולה הזאת למעשה אומרת קח את הערך שיש לי פה תוסיף את זה לפה ביחד ותכניס את זה בחזרה אליי.
השורה הזאתי היא אותו דבר כמו השורה הבאה. כל דבר כמו זה, רק פשוט מקוצר יותר. נשים את זה ברימארק, או למעשה אני אפילו אשאיר לזה. שזה מה שעשינו פה.
אז למעשה הימרנו את השורות האלה לקוד, והקוד הזה עכשיו מתבצע עבור כל שורה ושורה בטבלה. עבור, for. המילה for זה עבור.
אז עבור כל שורה בטבלה שאנחנו נמצאים פה,