در آموزش قبل با دستور break
و نحوۀ بهکارگیری آن در ساختار حلقۀ while
آشنا شدیم و دیدم که مفسر پایتون با رسیدن به دستور break
در داخل حلقۀ while
ادامۀ دستورات داخل بدنۀ آن را نادیده گرفته و از حلقه خارج میشود و ادامۀ برنامه را اجرا میکند (توجه داشته باشیم که در چنین شرایطی دستور else
که بلافاصله بعد از حلقه میآید هم اجرا نمیشود.)
در این آموزش با دستور continue
که یکی دیگر از دستورهای قابلاستفاده در حلقهها است آشنا خواهیم شد که به نوعی جریان اصلی اجرای دستورهای داخل یک حلقه را تغییر میدهد و در ادامه نحوۀ پیادهسازی این دستور را در قالب یک مثال بررسی میکنیم بدین صورت که برنامهای مینویسیم تا اعداد زوج یک رقمی مثبت یا به عبارتی اعداد 8، 6، 4، 2 و 0 را به ترتیب از بزرگ به کوچک در خروجی چاپ کند.
به خاطر داشته باشید |
اعداد زوج بر عدد 2 بخشپذیر هستند بدین معنی که باقیماندۀ تقسیم آنها بر 2 برابر با 0 است و اعداد فرد نیز در مقابل اعداد زوج قرار گرفته و باقیماندۀ تقسیم آنها بر 2 عددی غیر 0 میباشد. |
برای پیادهسازی چنین مثالی میتوانیم از یک حلقۀ while
برای تکرار عملیات چاپ اعداد استفاده کنیم اما باید توجه داشته باشیم که برنامۀ مد نظر باید به گونهای نوشته شود که اعداد زوج را در خروجی چاپ کرده و با رسیدن به اعداد فرد آنها را نادیده بگیرد که برای این منظور کدی مانند زیر خواهیم داشت:
x = 10
while x:
x -= 1 # Or, x = x-1
if x % 2 != 0:
continue # Odd? Skip print(x)
print(x)
در کد فوق ابتدا عدد صحیح 10 را به متغیر x
منتسب میکنیم سپس از آن در شرط حلقۀ while
مورد استفاده قرار میدهیم که با اجرای برنامه مفسر شرط حلقه را ارزیابی میکند و همانطور که در آموزشهای گذشته اشاره کردیم هر عدد غیر از 0 با مقدار بولینی معادل True
ارزیابی میشود که از همین روی شرط True
بوده و مفسر وارد حلقه میشود و اولین دستور بدنۀ آن را اجرا میکنید بدین معنی که یک واحد از مقدار منتسب به متغیر x
کم کرده و عدد صحیح 9 به این متغیر منتسب میشود.
در ادامه دستور if
اجرا میشود به طوری که ابتدا مفسر دستور شرطی x % 2 != 0
را بررسی میکند و از آنجایی که حاصل تقسیم مقدار منتسب به متغیر x
یا به عبارتی عدد 9 بر 2 برابر با 1 است، شرط if
برقرار بوده و از همین روی دستور داخل بدنۀ آن اجرا میشود که دستور continue
در بدنۀ این شرط به مفسر اعلام میکند که به جای اجرای سایر دستورات داخل حلقه به ابتدای آن بازگردد و مجدداً شرط while
را بررسی کند و از همین روی عدد 9 در خروجی چاپ نشده و مفسر به ابتدای حلقه بازمیگردد که آخرین مقدار منتسب به متغیر x
برابر با عدد 9 بوده و True
ارزیابی میشود که از همین روی وارد بدنۀ حلقه شده و مجدداً یک واحد از مقدار منتسب به متغیر x
کم کرده و دستور شرطی x % 2 != 0
را برای آن چک میکند که در این مرحله مقدار x
عدد 8 بوده و باقیماندۀ تقسیم آن بر عدد 2 برابر با 0 است؛ بنابراین شرط if
برقرار نبوده و دستور continue
داخل بدنۀ آن اجرا نمیشود.
در واقع، مفسر اجرای بقیۀ دستورات داخل حلقه را ادامه میدهد و بدین ترتیب فانکشن ()print
مقدار منتسب به متغیر x
را در خروجی چاپ میکند و اجرای دستورات داخل حلقه ادامه پیدا میکند و هرگاه مقدار x
عددی زوج بود در خروجی چاپ میشود و مقادیر عددی فرد متغیر x
نادیده گرفته میشوند چرا که با دستور continue
اجرای حلقه مجدداً از سر گرفته میشود و این عمل تا زمانی ادامه پیدا میکند که عدد صحیح 0 به متغیر x
منتسب میشود که در این مرحله شرط حلقۀ while
برابر با مقدار بولین False
ارزیابی شده و اجرای آن به طور کامل متوقف میشود.
اسکریپت این برنامه را در فایلی تحت عنوان continueStatement.py
ذخیره کرده و آن را اجرا میکنیم به طوری که در خروجی خواهیم داشت:
8
6
4
2
0
همانطور که میبینید، اعداد صحیح زوج با شروع از عدد 8 چاپ شده و اعداد فرد نیز نادیده گرفته شدهاند و اجرای برنامه با رسیدن به مقدار عدد 0 متوقف شده است. به طور کلی، میتوان گفت که از دستور continue
زمانی استفاده میکنیم که بخواهیم به ابتدای حلقه بازگردیم و ادامۀ دستورات حلقه را در آن مرحله اجرا نکنیم اما این در حالی است که از دستور break
برای خروج کامل از حلقۀ while
استفاده میکنیم.