לולאת do while
do while היא וריאנט של לולאת while, ושימושית כאשר נרצה לוודא שגוף הלולאה רץ לפחות פעם אחת. נחזור למשל לדוגמא של משחק ניחוש המספרים - נניח שנרצה לתת למשתמש לחזור על הניחוש עד שהוא מצליח. דרך אפשרית אחת תהיה כך:
#include <stdio.h>
int main() {
int secret = 9, guess = -1;
while (secret != guess) {
printf("Enter a guess for the secret number!\n");
scanf("%d", &guess);
if (guess == secret) {
printf("You win - secret was %d!\n", secret);
}
}
}
זה קצת עקום - צריך להגדיר את guess לאיזשהו מספר שאינו הסוד לפני הלולאה ולבצע בדיקה של התנאי שאנחנו יודעים שבוודאות תתקיים. לולאת do while תאפשר לנו לכתוב קטע קוד שבוודאות יתבצע פעם אחת, ואז ימשיך כל עוד תנאי כלשהו מתקיים. הסינטקס נראה כך:
do {
// Loop body
} while (boolean condition);
הרעיון בלולאת do while הוא העברת בדיקת התנאי לסוף הלולאה במקום לתחילתה. גוף הלולאה מתבצע פעם אחת ואז נבדק התנאי. במידה והתנאי מתקיים, נמשיך לאיטרציה נוספת של הלולאה. ניתן כעת לכתוב את משחק הניחושים בצורה אלגנטית יותר:
#include <stdio.h>
int main() {
int secret = 0, guess;
do {
printf("Enter a guess for the secret number!\n");
scanf("%d", &guess);
} while (guess != secret);
printf("You win - secret was %d!\n", secret);
}
ניתן לממש כל לולאת do while בצורה שקולה עם לולאת while, אבל יש מקרים מסוימים בהם הראשונה אלגנטית ופשוטה יותר לקריאה.