به آموزش زبان C (قسمت ششم – while) خوش اومدید.
بخش ششم:حلقه While:
حلقه های While شبیه حلقه های for هستند، اما کارایی کمتری دارند. در واقع یک حلقه While یک شرط دارد که تا وقتی که شرط درست باشد محتویات درون حلقه اجرا می شود. مثلا حلقه while زیر یک حلقه بسیار ساده است که تا بی نهایت بار اجرا می شود زیرا همواره n کوچکتر از ۱۰ است:
int n = ۰;
while (n < ۱۰) {
n=۰;
}
اما حلقه زیر با توجه به بلوک کد (n++) درون حلقه while تا ۱۰ بار فقط اجرا می شود:
int n = ۰;
while (n < ۱۰) {
n++;
}
حالا اگر ما بخواهیم یک حلقه همواره اجرا شود و به قولی بینهایت باشد کافیست شرط While را برابر ۱ (غیر صفر) قرار دهیم:
while (۱) {
/* do something */
}
اما ما دو گزاره در در حلقه های While داریم که نسبتا مهم هستند که به طور خاص برای تغییر در گردش نرمال یک برنامه استفاده میشوند. در برخی موارد میخواهیم که اجرای یک حلقه برای یک شرایط تست خاص رد شود و یا بدون بررسی شرط حلقه بیدرنگ خاتمه یاب
برای نمونه ممکن است بخواهیم روی دادههای افرادی با سنین مختلف به جز سنین بالاتر از ۶۵ حلقهای تعریف کنیم. همچنین ممکن است بخواهیم نخستین فردی که ۲۰ سال سن دارد را بیابیم. در چنین مواردی از گزارههای ;continue و ;break استفاده میکنیم.
دستور break درواقع متوقف کننده یک حلقه است. مثلا مثال زیر را نگاه کنید:
int n = ۰;
while (۱) {
n++;
if (n == ۱۰) {
break;
}
}
در کد بالا درست است که حلقه while به صورت بی نهایت تعریف شده اما دستور break در میان آن باعث می شود برنامه با رسیدن به آن از حلقه خارج شود.
اما دستور continue به ادامه دادن برنامه اشاره می کند. مثلا کد زیر را در نظر بگیرید:
int n = ۰;
while (n < ۱۰) {
n++;
/* check that n is odd */
if (n % ۲ == ۱) {
/* go back to the start of the while block */
continue;
}
/* we reach this code only if n is even */
printf("The number %d is even.\n", n);
}
دستور continue در واقع باعث می شود که برای اعداد فرد دستور printf اجرا نشود و فقط اعداد زوج در خروجی نمایش داده شوند. در واقع هروقت در تابع while برسیم در هرجای حلقه برنامه بلافاصله به اول حلقه بر می گردد. که
تمرین:
در کد زیر، متغیر آرایه شامل ۱۰ عدد متوالی است. درون حلقه while شما باید دو شرط if بنویسید که جریان حلقه را به شکل زیر تغییر می دهد. (به تابع printf دست نزنید!)
- اگر عدد خوانده شده از آرایه کمتر از ۵ بود آن را نمایش نده
- اگر عدد خوانده شده از آرایه بزرگتر از ۱۰ بود، آن را هم نمایش نده و حلقه را متوقف کن.
#include <stdio.h>
int main() {
int array[] = {1, 7, 4, 5, 9, 3, 5, 11, 6, 3, 4};
int i = 0;
while (i < 10) {
/* your code goes here */
printf("%d\n", array[i]);
i++;
}
return 0;
}
جواب تمرین:
#include <stdio.h>
int main() {
int array[] = {1, 7, 4, 5, 9, 3, 5, 11, 6, 3, 4};
int i = 0;
while (i < 10) {
if(array[i] < 5)
{ i++;
continue; }
if(array[i] > 10){
break;
}
printf("%d\n", array[i]);
i++;
}
return 0;
}
همانطور که مشاهده می کنید ما از دو دستور break و continue استفاده کردیم. همانطور که مشخص است دستور continue برای انجام این قسمت از تمرین :
- اگر عدد خوانده شده از آرایه کمتر از ۵ بود آن را نمایش نده
و از دستور break برای انجام دادن این قسمت از تمرین استفاده کردیم:
- اگر عدد خوانده شده از آرایه بزرگتر از ۱۰ بود، آن را هم نمایش نده و حلقه را متوقف کن.
پایان آموزش زبان C (قسمت ششم – while)