אתה נמצא כאן יסודות השפה  >>  מבני בקרה  >>  לולאת do...while

לולאת do...while

לולאת do...while דומה מאוד ללולאת while עם הבדל אחד: בעוד שלולאת while בודקת את התנאי לפני ביצוע האיטרציה הראשונה, לולאת do...while קודם כל מבצעת את האיטרציה הראשונה ללא בדיקת התנאי ורק אחרי האיטרציה הראשונה היא בודקת את התנאי ומשם היא ממשיכה להתנהג כלולאת while.

לולאה זו מחייבת להשתמש בסוגריים מסולסלים גם אם יש רק שורת קוד אחת, לכן אין דרך נוספת לכתוב אותה מלבד כך:

<?php
  do
/*בצע את האיטרציה הראשונה ללא שום תנאי...*/

  {
     ...
     statements;
     ...
/*בכל איטרציה אנו מבצעים את הפקודות statements.*/

  }while (expr)
/*לאחר ביצוע האיטרציה הראשונה,
אנו מבצעים איטרציה נוספת
כל עוד הביטוי expr הוא אמת...
*/

?>

נביא דוגמא שמדפיסה את המספרים מ-1 ל-10:

<?php
  $i=1;
  do
/*היות ואנו משתמשים בלולאת do...while,
המספר 1 יודפס תמיד ללא תלות בתנאי שמופיע ב-while,
כי אנו מבצעים את האיטרציה הראשונה ללא שום תנאי.
*/

  {
     echo " $i";
  }while (++$i<=10)
/*אנו מקדמים את $i בתוך הביטוי של while.
שים לב שזהו פרה-קידום.
*/

?>


תגובות בנושא

אחלה . 04-12-03 13:01
 [ללא שם]
#832

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

אם הבנתי נכון... 07-12-03 06:02
 אוהב את האתר הזה!
#951

ההבדל היחיד בין לולאת while לבין do...while זה הסדר, ואפשר להשתמש בשניהם בכול מקום בקוד בלי הבדל בפלט או בהרצה, לא?

בכלל לא! 03-11-03 07:01
 יונתן גורן
#1358

ההבדל הוא שבלולאת do...while הדפדפן קודם מבצע ואחר-כך בודק, ז"א שאם אתה כותב:
$a = 4;
$b= 1;
do
{
$b++;
} while ($a<4)
echo $a;

יחזיר 2 ולא 1, כי הלולאה קודם בוצה ואז נבדקה.

אופס.. 03-11-03 07:01
 יונתן גורן
#1359

בשורה האחרונה של הקוד שכתבתי התכוונתי ל-
echo $b;

בקשר ל "אם הבנתי נכון..." 07-12-04 15:01
 אלון אסקלסקי
#1685

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

עדיין לא הבנתי 06-12-09 12:02
 אלכס נוסינוב
#2838

מזה פקודות statements;?

לא משנה ^^ 06-12-09 12:02
 אלכס נוסינוב
#2840

לא משנה למה שכתבתי..
ויונתן גורן לא הבנתי מה ניסית להסביר שם
מישהו יכול להסביר פה בבקשה


לדף הקודםלולאת while -הקודם
לתחילת הדףלתחילת הדף
הבא- לולאת forלדף הבא