Forum und email

do..while

לולאות do..while זהות במידה רבה ללולאות while, למעט בדיקת הביטוי בסוף כל איטרציה במקום ביצוע הבדיקה בהתחלה. ההבדל העיקרי בהתנהגות של לולאות אלו הוא שבלולאת do..while, קוד הלולאה ירוץ לפחות פעם אחת (כי התנאי נבדק בסוף הריצה) בעוד שבלולאת while רגילה (שבה התנאי נבדק בתחילת הלולאה), יתכן מצב בו הקוד לא יורץ בכלל. (אם ערכו ההתחלתי של הביטוי שווה ל-FALSE, הלולאה תיפסק מיד.)

ללולאות do..while יש צורת תחביר אחת בלבד:

$i = 0;
do {
   print $i;
} while ($i>0);

לולאה זו תורץ פעם אחת בדיוק, מאחר ומייד אחרי האיטרציה הראשונה, ערכו של הביטוי שווה ל-FALSE (ערכו של $i אינו גדול מ-0) וריצת הלולאה תפסק.

תכנתי C מתקדמים מכירים את השימושים השונים בלולאת do..while לצרכי עצירת הרצה באמצע בלוקים של קוד על-ידי שימוש בלולאת do..while ושימוש ב פקודתbreak. הקוד הבא מדגים זאת:

do {
    if ($i < 5) {
        print "i is not big enough";
        break;
    }
    $i *= $factor;
    if ($i < $minimum_limit) {
        break;
    }
    print "i is ok";

     ...process i...

} while(0);

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