زبان برنامه نویسی سی/دستور continue

ویکی‎کتاب، کتابخانهٔ آزاد

دستور continue[ویرایش]


دستور continue که با یک سمی کالُن « ; » ( نقطه ویرگول ) پایان می‌یابد و تنها به صورت « ;continue » نوشته می‌شود که به پارسی می‌شود « ادامه بده » در زبان C این معنا و کاربرد را دارد که اجرای حلقه را یک بار از قلم میاندازد و اجرای حلقه را ادامه می‌دهد . بنابراین دستور continue فقط داخل حلقه‌ها قابل استفاده است و البته فقط داخل حلقه خود عمل می‌کند ؛ یعنی اگر ۳ حلقه تو در تو تعریف کنید و در سومین حلقه که داخلی‌ترین حلقه می‌باشد از دستور continue استفاده کنید فقط بر روی همان حلقه ، یعنی حلقه سوم و داخلی‌ترین حلقه ، عمل می‌کند

در حلقه‌های while و do while دستور continue از جایی که نوشته شده تا انتهای حلقه را نادیده می‌گیرد شرط while را ( جه در حلقه while و چه در حلقه do while ) بررسی می‌کند که اگر همچنان شرط حلقه برقرار بود ، اجرا و تکرار حلقه را ادامه می‌دهد و اگر نه ، حلقه شکسته می‌شود ولی اگر در حلقه‌های while و do while عبارت شرطی شما وابسته به متغیر یا متغیرهایی باشد و در داخل حلقه تغییراتی را بر روی متغیر ایجاد کنید ( که متداول‌ترین روش در استفاده از حلقه است ) ، آن تغییر یا تغییرات به عنوان مرحله در نظر گرفته می‌شوند و دستور continue عبارتی را که متغیر شرط ، تغییر کرده به اجرا می‌گذارد ( مرحله را یک بار دیگر تکرار می‌کند و حلقه را به اجرا می‌گذارد ) و پس از آن حلقه را متوقف می‌کند . در حلقه for با دستور continue یک بار عبارت تغییر دهنده اجرا می‌شود و سپس عبارت شرطی حلقه بررسی می‌شود و اگر صدق کرد اجرای حلقه ادامه یافته و تکرار می‌شود و اگر نه حلقه for ما متوقف خواهد شد

دقت کنید که شما می‌توانید با دستورهای if ( دستور if و else if و else ) دستور continue را شرطی کنید تا در صورتی که شرط یا شرط‌هایی برقرار بودند حلقه نادیده گرفته شود و ادامه کدهایی که داخل حلقه نوشته شده‌اند از قلم بیافتند و حلقه ادامه پیدا کند که این متداول‌ترین روش استفاده از دستور continue می‌باشد . بنابراین به جای استفاده از دستور break ( که حلقه را می‌شکند ) و ایجاد حلقه‌های دیگر برای نوشتن برنامه خود می‌توانیم در زبان C و خانواده آن و بسیاری از زبان‌هایی که از C الگو گرفته‌اند داخل حلقه خود با دستور continue در صورتی که شرط یا شرط‌هایی برقرار بودند از اجرای حلقه جلوگیری کنیم و حلقه از جایی که continue را نوشته‌ایم تا انتهای حلقه را نادیده بگیرد . پس در واقع ، ما با دستور continue استثناء یا استثناء‌هایی را برای حلقه خود ایجاد می‌کنیم

مثال :

#include <stdio.h>

int main()
{
	int i = 0;
	for(i=0; i<=10; i++)
	{
		if((i % 2) != 0)
		 continue;
		else
		 printf("%d\n", i);
	}
	
	return 0;
}

در مثال بالا اعداد فرد ، اسثناء شده‌اند تا در خروجی خط‌دستوری چاپ نشوند . در فایل برنامه خود ابتدا با دستور مستقیم include فایل سرآیند stdio را ضمیمه برنامه نموده‌ایم . تابع اصلی برنامه را یعنی main که کنترل تمام برنامه را بر عهده دارد را نوشته‌ایم ( که البته تنها تابع برنامه ماست ) و داخل تابع main یک متغیر از نوع صحیح با مقدار 0 تعریف کرده‌ایم ( که البته محلی است اما در تمام تابع قابل دسترسی می‌باشد ) یک حلقه for ایجاد کرده‌ایم که از 0 تا 10 می‌شمارد و بدنه خود را اجرا و تکرار می‌کند اما داخل حلقه با دستور شرطی if نوشته‌ایم اگر باقی‌مانده تقسیم عدد ذخیره‌شده در i بر 2 مساوی با 0 نبود ( که یعنی یک عدد فرد است ) بقیه حلقه نادیده گرفته شود و در غیر این صورت در خروجی خط‌دستوری مقدار متغیر i چاپ شود و خط شکسته شود که از 0 شروع کرده‌ایم و چون تقسیم بر 2 باقی‌مانده‌ای ندارد حلقه اجرا می‌شود و مقدار آن چاپ می‌شود و خط شکسته شده و سپس یکی یکی به مقدار i اضافه می‌شود . اما اعدادی که فرد هستند با دستور continue از قلم میافتند و حلقه نادیده گرفته می‌شود و برنامه کامپایل شده اعداد 0 , 2 , 4 , 6 , 8 , 10 را در خروجی خط‌دستوری در خطوط جداگانه نمایش خواهد داد . بنابراین همان طور که گفتیم اعداد فرد را اسثثناء کردیم

مثال :

#include <stdio.h>

int main()
{
	int i = 0;
	while(i<=100)
	{
		i++;
		if((i%5)==0)
		 continue;
		else
		 printf("%d\n", i);
	}
	
	return 0;
}

مثال بالا مثل بازی هب می‌ماند . اعداد 1 تا 101 نمایش داده می‌شوند اما اعدادی که مضرب 5 باشند نمایش داده نخواهند شد . اما اگر می‌خواهید بدانید چرا علیرغم اینکه شرط while تا عدد 100 می‌باشد اما کامپایلر عدد 101 را هم نمایش می‌دهد ، باید به نکته ابتدایی این مبحث مراجعه کنید که می‌گوید اگر حلقه‌های while و یا do while متغیر یا متغیرهایی در شرط خود داشته باشند که داخل حلقه ، آن متغیر یا متغیرها به عنوان مرحله حلقه واقع شوند و تغییر یا تغییراتی بر روی آن متغیر یا متغیرها اعمال شوند ؛ عبارتی که متغیر شرط را تغییر داده یک بار به اجرا در می‌آید ، حلقه تکرار شده و اجرا می‌شود و پس از آن حلقه می‌شکند
بنابراین اعداد تا 101 ادامه می‌یابند و سپس حلقه متوقف می‌شود ( این قطعه برنامه نیز همانند قطعه برنامه بالا و قبلی است با این تفاوت که شرط شده اگر باقی مانده تقسیم عدد ، بر ۵ مقدار ۰ داشت ( یعنی تقسیم‌پذیر بر ۵ بود ) بقیه کدها را نادیده بگیرد که در نهایت مقدار متغیر i ( اگر بخش‌پذیر بر ۵ نبود ) در خروجی خط‌دستوری چاپ می‌شود و در غیر این صورت نادیده گرفته می‌شود و حلقه ادامه می‌یابد

دقت کنید : همان طور که دیدید ، ممکن است دستور continue با یک بار اجرای اضافه حلقه شما ، کد شما را خراب کند ؛ پس در صورت استفاده از دستور continue دقت کنید تا حلقه یک بار کم‌تر اجرا شود ؛ مثلاً در مثال بالا می‌توانیم بنویسیم : i < 100 که مقدار 100 هم مورد ارزیابی قرار خواهد گرفت اما چون باید استثناء شود نادیده گرفته می‌شود و اعداد از ۰ شروع شده و تا ۹۹ ادامه می‌یابند و حلقه می‌شکند و ما خروجی دلخواه خودمان را خواهیم داشت