
do while ומסביר מתי היא מתאימה יותר מלולאת while: הפקודות בתוך הבלוק רצות לפחות פעם אחת, ורק אחר כך נבדק התנאי.while התנאי נבדק לפני הכניסה, ולכן ייתכן שהפקודות לא יתבצעו אפילו פעם אחת. ב-do while התנאי נכתב בסוף הלולאה ונבדק אחרי הביצוע הראשון.by. כשהמשתמש מכניס by מוצג ביי ביי והתוכנית מסתיימת.do while מתאימה יותר.text הוגדר בתוך בלוק הלולאה, ולכן לא הוכר בתנאי שבסוף. כדי שהמשתנה יהיה מוכר גם מחוץ לבלוק, מגדירים אותו לפני הלולאה.do while ולא בעזרת while.הטקסט המלא של הדקות הראשונות בהרצאה «לולאת do-while» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בסרטון הקודם אנחנו ראינו את לולאת while. בסרטון הזה אנחנו הולכים לראות לולאה שנקראת do while. לולאת do while מתחילה בפקודה do, כלומר תעשה והיא בעצם אומרת אני לא הולכת לבדוק שום תנאי כמו שלולאת while בדקה, אלא קודם כל אתה יכול להיכנס ולעשות את סדרת הפקודות שלך פעם אחת, אבל אחרי שביצעת אותם פעם אחת אתה הולך לכתוב
while פה רק אנחנו הולכים לבדוק איזשהו תנאי בשביל לדעת אם להמשיך לבצע עוד פעם את הפקודות או להפסיק. זאת אומרת שבסוגריים האלה אנחנו הולכים לכתוב את התנאי שלנו.
להזכירכם, לולאת while ביצעה את התנאי פה למעלה. לולאת do while מבצעת את התנאי פה למטה. מה ההבדל בין לולאת while לבין לולאת do while?
לולאת while, בגלל שקודם כל היא בודקת את התנאי, יכול להיות מצב שכבר בפעם הראשונה שהיא מבצעת את הבדיקה התנאי שווה ל-false ולכן פקודות הלולאה לא יתבצעו אפילו פעם אחת.
בלולאת do while בגלל שקודם כל יש לנו כניסה וביצוע את פקודות הלולאה אז בוודאות פקודות הלולאה הולכות להתבצעות לפחות פעם אחת ורק לאחר מכן התנאי נבדק בשביל לדעת האם יש צורך להמשיך או לא.
זה אומר שאם בוודאות אנחנו רוצים לעשות פקודות לפחות פעם אחת הרבה פעמים קורה שלולת do-while מתאימה לנו יותר.
אז בואו נראה דוגמא. נניח שאנחנו רוצים לכתוב תוכנית שכל מה שהיא עושה היא מבקשת מהמשתמש להכניס מחרוזת, להכניס טקסט, ואז היא מציגה לו את הטקסט שהוא הכניס פעמיים, כלומר מעין אקו כזה.
הוא הכניס הלו והתוכנית כותבת הלו הלו. הוא הכניס היי והתוכנית כותבת היי היי. ואנחנו רוצים לבצע את זה שוב ושוב ושוב ושוב, עד שהוא מכניס את המחרוזת ביי ברגע שהוא מכניס את המחרוזת ביי אנחנו רוצים לכתוב ביי ביי אבל אז לסיים את התוכנית.
זאת אומרת שקודם כל אנחנו בכל מקרה רוצים לקלוט ממנו את המחרוזת בואו ניקח פה סטרינג טקסט קונסול רידליין לאחר מכן נציג טקסט משורשר עם טקסט פעמיים ואנחנו רוצים לבצע את זה שוב ושוב ושוב עד שטקסט או יותר נכון כל עוד טקסט שונה מבית.
עכשיו, שימו לב שיש לי פה שגיאה על המשתנה טקסט, והסיבה היא כי פתחתי את המשתנה טקסט בתוך הבלוק של הלולאה, וישנו חוק בנוגע לפתיחה של משתנים, והחוק אומר שמשתנה מוכר רק בתוך הבלוק שבו הוא הוגדר.
לכן, אם אני רוצה שהמשתנה טקסט יוכר מחוץ לבלוק, כלומר במהלך השורה הזאת בתוך הלולאת while אז כדאי לנו להגדיר את המשתנה טקסט פה למעלה.
אז כעת השגיאה נעלמה ואנחנו יכולים להיכנס ולראות שוב פעם מה קורה כאן. דבר ראשון אנחנו רוצים לקלוט מהמשתמש מחרוזת זאת השורה הזאת. לאחר מכן אנחנו רוצים בכל מקרה גם אם הוא הכניס ביי להדפיס את המחרוזת הזאת פעמיים.
במידה והמחרוזת שונה מביי אנחנו רוצים עוד