
تو مقاله قبلی در مورد حلقه for در زبان C صحبت شد که پیشنهاد میکنم اون نوشته رو بخونید و بعدش بیاید سراغ این مقاله.
ساختار حلقه while:
while (شرط) { // کارهایی که باید تکرار بشه }
مثال:
int i = 1; while (i <= 5) { printf("i = %d\n", i); i++; }
فرقش با for چیه؟
تو حلقه while فقط شرط نوشته میشه، بقیه جدا نوشته میشن! اما تو حلقه for مقداردهی، شرط، تغییر همه تو یه خط.
حلقه while بیشتر برای تکرار تا زمانی نامعلوم استفاده میشه اما حلقه for بیشتر برای تکرار مشخص استفاده میشه.
مثال: (گرفتن ورودی تا وقتی کاربر عدد مثبت وارد نکرده)
#include <stdio.h> int main() { int number; printf("Enter a positive number: "); scanf("%d", &number); while (number <= 0) { printf("Invalid. Try again: "); scanf("%d", &number); } printf("Thanks! You entered: %d\n", number); return 0; }
اینجا شرط حلقه اینه: number <= 0
تا وقتی این شرط درسته (یعنی کاربر عدد منفی یا صفر وارد کرده) حلقه ادامه پیدا میکنه.
اگه شرط داخل while هیچ وقت false نشه حلقه بینهایت میشه و تا ابد اجرا میشه. مثال:
while (1) { printf("I'm creazy loop\n"); }
استفاده از continue در while:
int i = 0; while (i < 5) { i++; if (i == 3) continue; printf("%d\n", i); }
(من اینجا if رو داخل یک خط نوشتم)
استفاده از break در while:
int i = 0; while (i < 5) { i++; if (i == 3) break; printf("%d\n", i); }
بررسی do while
حلقهی do...while یجور حلقست که اول کار رو انجام میده، بعد شرط رو چک میکنه. یعنی حداقل یکبار حتما اجرا میشه، حتی اگه شرط از اول غلط باشه.
ساختار کلی:
do { // کارهایی که باید تکرار بشه } while (شرط);
دقت کن که آخر شرط ; داره. برعکس حلقه while معمولی.
مثال:
int i = 1; do { printf("i = %d\n", i); i++; } while (i <= 3);
اینجا ابتدا بدنه do اجرا میشه، سپس شرط مربوط به while بررسی میشه و اگه شرط درست بود، مجدد بدنه do اجرا میشه تا آخر.
یه مثال دیگه:
int i = 5; do { printf("Hello\n"); } while (i < 3);
خروجی:
Hello
با اینکه i < 3 از اول غلطه، ولی چون دستور داخل do اول اجرا میشه، یه بار اجرا شد.
به کد زیر دقت کنید:
int number; printf("Enter a positive number: "); scanf("%d", &number); while (number <= 0) { printf("Invalid. Try again: "); scanf("%d", &number); } printf("Thanks! You entered %d\n", number);
تو این کد تا وقتی کاربر عدد مثبت وارد نکنه مدام ازش ورودی میخواد. حالا بریم همین رو با do while پیاده کنیم:
int number; do { printf("Enter a positive number: "); scanf("%d", &number); } while (number <= 0);
این کد همون کارو انجام میده و خیلی خلاصه تر شد.