
הטקסט המלא של הדקות הראשונות בהרצאה «מה הבדל בין כל סוגי הלולאות» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אחרי שראינו את שלושת הלולאות הנפוצות while, do-while ו-for אנחנו הולכים להבין מתי נכון להשתמש בכל אחת מהלולאות האלה. האם נכון באלגוריתם להשתמש ב-while, האם נכון להשתמש ב-do-while או האם נכון להשתמש ב-for.
אז בואו נראה מה בעצם החוקים לגבי זה. דבר ראשון אנחנו צריכים להבין שכל לולאה ניתנת להחלפה בלולאה אחרת. הכוונה לולאות כאלה, בין while, do while ו-for.
אנחנו יכולים עבור כל אלגוריתם שאנחנו צריכים לבחור או while או do while או for, אבל עבור כל אלגוריתם יש את הלולאה המתאימה יותר עבורו.
אם אנחנו בוחרים בלולאה שהיא פחות מתאימה, זה יכול לגרור לקוד שהוא פחות טוב מבחינת דיזיין, לפעמים אפילו יותר מדי שורות קוד ובמקרים ממש חריגים אפילו לפרפורמנס פחות טוב.
יש כללי אצבע לגבי איזו לולאה נכון לבחור עבור כל אחד מהמצבים ועבור כל אלגוריתם. כלל האצבע הראשון מאפשר לדעת האם לבחור בלולאת while, do while, או בלולאת for, זאת אומרת האם אנחנו הולכים לכיוון של הוויילים או האם אנחנו צריכים לקחת את 4. בואו נראה
האם אנחנו צריכים אחת מהוויילים או 4. מה בעצם הכלל אומר? והכלל אומר את הדבר הבא אנחנו צריכים להסתכל על רגע הכניסה ללולאה אם ברגע הכניסה ללולאה אנחנו יודעים והמחשב כמובן יודע כמה פעמים עלינו לרוץ הלולאה הנכונה לבחירה תהיה לולאת 4.
אם ברגע הכניסה ללולאה אנחנו או המחשב לא יודעים כמה פעמים לרוץ, למעשה זה המחשב ליתר דיוק, לא יודע כמה פעמים לרוץ, הלולאה הנכונה היא לא for אלא או while או do while תלוי בהמשך האלגוריתם, את זה אנחנו כבר נראה.
אז בואו נראה כמה דוגמאות. אנחנו צריכים להציג 100 כוכביות על המסך. איזה לולאה לבחור? תשובה, הרי אנחנו יודעים כמה אנחנו רוצים להדפיס אז כמובן לולאת 4 תהיה יותר מתאימה והנה אנחנו רואים את זה כאן על המסך.
דוגמה נוספת אנחנו צריכים להדפיס את כל המספרים הזוגיים מ-100 עד 100+ ברגע הכניסה ללולא אנחנו יודעים שאנחנו צריכים להתחיל מ-100 ולסיים ב-100+ איזה לולא לבחור כמובן לולאת 4. והנה אנחנו רואים כאן את הקוד אנחנו רוצים לקבל מהמשתמש מספר n ולהציג על המסך n כוכביות האם ברגע הכניסה הלולאה אנחנו יודעים כמה פעמים לרוץ
אם כן אנחנו בוחרים for אם לא אנחנו בוחרים ב while או do while והתשובה היא שכן אנחנו יודעים כמה לרוץ שימו לב לנקודה המעניינת אנחנו לא שואלים האם אנחנו יודעים כמה לרוץ בתחילת התוכנית לפני שהיוזר הכניס את המספר אלא האם אנחנו יודעים כמה לרוץ ברגע הכניסה ללולאה.
ברגע הכניסה ללולאה היוזר כבר נתן לנו את המספר n ולכן אנחנו ברגע הכניסה ללולאה יודעים שאנחנו צריכים לרוץ n פעמים ולהדפיס n stars. אז כמובן שהלולאה שלנו היא לולאת 4 והנה אנחנו רואים כאן את הקוד.
שוב אנחנו יכולים לעשות את זה גם עם while וגם עם do while אבל 4 במקרה הזה תהיה יותר מתאימה בגלל הכלל הזה שאנחנו כרגע לומדים בואו נראה את הדוגמה הבאה אנחנו צריכים לקלוט מהמשתמש שני מספרים a ו-b ואנחנו רוצים להדפיס את כל המספרים ביניהם בסדר עולה לא משנה מה הסדר של a ו-b אנחנו רוצים להדפיס את כולם בסדר עולה איזה לולה לבחור האם ברגע הכניסה ללולה אנחנו יודעים
כמה לרוץ המחשב ליתר דיוק יודע כמה לרוץ תשובה כן הוא כבר קיבל את a ו-b לכן הלולאה המתאימה היא לולאת for והנה אנחנו רואים כאן את הקוד והנה לולאת for שפותרת את זה בצורה הכי אלגנטית.
אנחנו רוצים לקלוט מהיוזר ציון אבל אם הציון הוא לא חוקי כלומר לא בין 0 ל-100 כולל קצוות אנחנו רוצים לבקש מהיוזר שוב פעם להכניס את הציון.
אז איזה לולאה אנחנו רוצים לבצע כאן? ברגע הכניסה ללולאה אנחנו לא יודעים כמה פעמים היוזר הולך לטעות ולהכניס לנו שוב פעם ושוב פעם ושוב פעם ציון שגוי. הוא יכול על ההתחלה להכניס לנו ציון חוקי והוא יכול 17 פעם להכניס לנו ציון שגוי ורק בפעם ה-18 ציון חוקי והוא יכול רק 3 פעמים לטעות אנחנו לא יודעים כמה ולכן איזה לולאה אנחנו נבחור תשובה או
while or do while ואנחנו נראה בהמשך איזה מהן יותר מתאימה. במקרה הזה יותר מתאימה while, שוב אנחנו כבר הולכים לראות למה while כאן יותר מתאימה ולא do while, אבל הנה יש לנו פה קטע קוד שבעזרת לולת while יכול לבדוק האם הציון הוא לא חוקי ואז להמשיך שוב ושוב ולבקש מהמשתמש כי אנחנו לא יודעים כאן מתי המשתמש יחליט להכניס
ציון חוקי. דוגמה נוספת אנחנו רוצים לקלוט מהמשתמש מספרים שוב ושוב, עד שהוא מכניס את המספר 0. עבור כל מספר שנקלט כולל ה-0 הסופי אנחנו רוצים להציג את החזקה שלו.
איזה לולה הכי מתאימה? אז אנחנו לא יודעים כמה מספרים היוזר הולך להכניס שהם לא יהיו 0 ולכן אנחנו לא יודעים כמה פעמים לרוץ. במקרה הזה או while או do while היא מתאימה ולא לולאת 4. שוב למרות שהיינו יכולים לעשות את זה בלולאת 4 זה פחות מתאים ולכן אנחנו בוחרים או while או do while.
בהמשך אנחנו נראה מה בעצם נכון לגביהם do while מתאימה יותר במקרה הזה כבר אנחנו יכולים לראות כאן את הקוד עכשיו אם אנחנו שואלים את עצמנו רגע בסדר יש לנו כרגע קטע קוד שאני לא יודע בתחילת הכניסה ללולאה כמה פעמים לרוץ ואני יודע שאני צריך או while או do while אבל מבין שתיהן מה נכון לבחור וגם כאן יש לנו כלל אצבע שוב פעם גם while וגם do
while יכולות במקרה הזה כאשר אנחנו לא יודעים כמה פעמים לרוץ בלולאה. לדוגמה, כפי שאמרנו כאשר זה תלוי בקלט של המשתמש אבל גם כאן יש כלל אצבע לגבי בחירה בין while לבין do y והכלל אצבע אומר את הדבר הבא האם האיתרציה הראשונה כלומר הפעילות הראשונה של הלולאה השלב
הראשון של הלולאה מכיל קוד שונה מבין שאר השלבים של הלולאה.