حلقه در برنامه نویسی چیست؟ — تعریف، مفهوم و انواع به زبان ساده

۴۵۱۰ بازدید
آخرین به‌روزرسانی: ۲۱ دی ۱۴۰۱
زمان مطالعه: ۳۲ دقیقه
حلقه در برنامه نویسی چیست؟ — تعریف، مفهوم و انواع به زبان ساده

یادگیری حلقه در برنامه نویسی (Loop in Coding) و درک نحوه استفاده از حلقه‌ها در برنامه نویسی برای ایجاد برنامه‌های کامپیوتری بسیار اهمیت دارد؛ چراکه می‌توان به وسیله این برنامه‌های کامپیوتری، قابلیت‌های عملکردی مختلفی را پیاده‌سازی کرد که هیچگاه بدون حلقه‌ها در برنامه نویسی امکان‌پذیر نبودند. در این مقاله سعی شده است به‌طور جامع و با بیانی ساده به این سوال پاسخ داده شود که حلقه در برنامه نویسی چیست و تعریف حلقه در کدنویسی شرح داده می‌شود. پس از بیان مفهوم حلقه در برنامه نویسی به ارائه توضیحات لازم پیرامون انواع حلقه در برنامه نویسی و همچنین استفاده از چندین مثال حلقه با انواع زبان‌های برنامه‌نویسی برای درک بهتر آن پرداخته شده است.

فهرست مطالب این نوشته

حلقه While و حلقه For در برنامه نویسی نسبت به سایر حلقه‌ها مهم‌تر و رایج‌تر هستند و به همین دلیل در این مقاله بیشتر به این دو نوع حلقه پرداخته شده و مثال‌های بیشتری برای آن‌ها در زبان‌های برنامه نویسی مختلف ارائه می‌شود.

به بیان ساده حلقه در برنامه نویسی چیست ؟

حلقه در برنامه نویسی یکی از عنصرهای برنامه‌نویسی به حساب می‌آید که به وسیله آن می‌توان بخشی از کدها را به تعداد دفعات مشخص تا زمانی تکرار کرد که فرایند و پروسه مورد نظر به پایان برسد. وظیفه‌های تکراری در برنامه نویسی بسیار رایج هستند و یادگیری حلقه در برنامه نویسی برای جلوگیری از اتلاف وقت و کمینه کردن امکان بروز خطا بسیار ضروری است. در ادامه برای درک بهتر مفهوم حلقه در برنامه نویسی مثالی ارائه شده است.

حلقه در برنامه نویسی

مثالی ساده برای درک بهتر مفهوم حلقه در برنامه نویسی

برای مثال، اگر قصد آماده کردن ساندویچ نان و پنیر وجود داشته باشد، پیش از هر چیز این نکته بسیار اهمیت دارد که مراحل درست کردن ساندویچ نان و پنیر باید به ترتیب انجام شوند تا بتوان یک ساندویچ نان و پنیر با کیفیت و مناسب ساخت.

حالا فرض می‌شود که برای اردوی مدرسه قصد درست کردن مثلاً ۵۰۰ ساندویچ نان و پنیر وجود داشته باشد. در واقع اگر فردی بخواهد مراحل ساخت ساندویچ نان و پنیر یا هر کار تکراری دیگری را یک بار انجام دهد و سپس این مراحل به صورت خودکار ۵۰۰ بار تکرار شوند، باید از حلقه در برنامه نویسی استفاده کند.

مثال حلقه در برنامه نویسی

چرا مفهوم حلقه در برنامه نویسی و استفاده از آن مهم است؟

با استفاده از حلقه در برنامه نویسی دیگر لازم نیست کدهای تکراری چندین بار نوشته شوند و فرایند برنامه نویسی بسیار آسان‌تر خواهد شد. مثلاً اگر قرار بود کدهای مربوط به درست کردن ساندویچ نان و پنیر به تعداد ۵۰۰ بار نوشته شوند، آنگاه نیاز به نوشتن صدها خط کد وجود داشت. حلقه‌ها در کدنویسی به برنامه نویسان امکان می‌دهند تا آنچه را که می‌توانست صدها خط کد باشد، تنها به چند خط کد کاهش دهند.

معایب عدم استفاده از حلقه در برنامه نویسی

استفاده از حلقه در برنامه نویسی باعث می‌شود تا برنامه نویسان کدهای لازم را فقط یک بار بنویسند و به تعداد مورد نیاز از آن‌ها استفاده کنند. با توجه به اینکه کدنویسی کم‌تری با استفاده از حلقه‌ها در برنامه نویسی انجام می‌شود، احتمال اجرای مطابق انتظار کدها به میزان زیادی افزایش پیدا می‌کند و ضریب رخداد خطا بسیار کاهش خواهد یافت.

حلقه‌ها باعث می‌شوند بتوان کدها را بهتر مدیریت کرد و با پیشروی در مسیر یادگیری برنامه نویسی و رفتن به سراغ نوشتن برنامه‌های پیچیده‌تر، حلقه‌ها در برنامه نویسی اهمیت زیادی پیدا می‌کنند و از این‌رو، درک و استفاده از آن‌ها در برنامه نویسی بسیار ضروری است.

بیان دقیق حلقه در برنامه نویسی چیست ؟

در حوزه برنامه نویسی کامپیوتری، حلقه به توالی از دستورالعمل‌ها گفته می‌شود که به‌طور مرتب تکرار می‌شوند تا زمانی که یک شرط خاص برقرار شود. معمولاً در حلقه‌های برنامه نویسی فرایند و پروسه مشخصی انجام می‌شود؛ مثلاً یک قلم داده دریافت و تغییراتی روی آن اعمال می‌شود. سپس شرط خاصی بررسی خواهد شد؛ مثلاً این شرط بررسی می‌شود که آیا شمارنده حلقه به عدد معینی رسیده است یا خیر؟

اگر شرط محقق نشده باشد، دستورالعمل بعدی در توالی، دستورالعملی خواهد بود که اولین دستور در توالی را بازمی‌گرداند و در واقع توالی تکرار می‌شود. در صورتی که شرط برقرار شده باشد، دستورالعمل بعدی که اجرا می‌شود در واقع توالی دستورالعمل‌های پس از توالی فعلی یا شاخه‌های خارج از حلقه فعلی خواهند بود. حلقه یکی از ایده‌های بنیادین در برنامه نویسی به حساب می‌آید که به‌طور رایج در نوشتن برنامه‌های کامپیوتری مورد استفاده قرار می‌گیرد.

حلقه ها در برنامه نویسی

حلقه بی نهایت در برنامه نویسی چیست ؟

حلقه بی نهایت در برنامه نویسی حلقه‌ای است که دارای نقصان کمبود یا نبود روالی برای خروج است. نتیجه این است که حلقه به‌طور مداوم تکرار می‌شود تا زمانی که برای سیستم عامل مشخص شود که یک حلقه بی نهایت در جریان است و آنگاه سیستم عامل اجرای حلقه و برنامه مربوطه را قطع و خطایی را صادر خواهد کرد.

یا اینکه ممکن است حلقه بی نهایت تا زمانی ادامه پیدا کند که رویداد دیگری در سیستم عامل اتفاق بیوفتد؛ مثلاً ممکن است تمهیداتی اندیشیده شده باشد که برنامه پس از مدت زمان خاصی، حتی در صورت عدم اجرای کامل و عدم نمایش خروجی به صورت خودکار بسته شود.

حلقه بی نهایت در پایتون

حلقه بی نهایت در پایتون حلقه‌ای شرطی، پیوسته و تکرارشونده است. حلقه بی نهایت در پایتون هم تا زمانی اجرا می‌شود که یک فاکتور خارجی در جریان اجرای آن خلل ایجاد کند. مثلاً ممکن است حافظه کافی در پردازنده وجود نداشته باشد یا یک ویژگی از کار افتاده یا خطا در کدها روند اجرای حلقه را متوقف کند. در ادامه تعدادی از گزاره‌های حلقه در پایتون فهرست شده‌اند که حلقه بی نهایت می‌تواند در آن‌ها ایجاد شود:

  • گزاره While
  • گزاره if در پایتون
  • عبارت Continue
  • دستور Break در پایتون

مثالی از حلقه بی نهایت

برنامه زیر برنامه‌ای بسیار ساده است، اما افراد تازه کار ممکن است برخی از گام‌های ساده را فراموش کنند و به‌طور اتفاقی یک حلقه بی نهایت در برنامه‌شان ایجاد کنند:

حلقه بی نهایت در پایتون

در کدهای فوق ملاحظه می‌شود که هیچ کدی برای افزایش دادن شمارنده حلقه وجود ندارد و به همین دلیل، حلقه While تبدیل به حلقه بی نهایت شده است و تا زمانی اجرا خواهد شد که برنامه نویس برنامه را متوقف کند.

گزاره یا عبارت کنترلی در حلقه های برنامه نویسی چیست ؟

گزاره کنترلی عبارتی است که در حلقه مشخص می‌کند آیا سایر گزاره‌ها اجرا خواهند شد یا خیر. معمولاً در انواع حلقه در برنامه نویسی تعدادی گزاره یا عبارت کنترلی (Control Statement) مثل break  ، continue  ، next   و سایر موارد وجود دارند. ۲ گزاره کنترلی Break و Continue در ادامه شرح داده خواهند شد. این گزاره‌های کنترلی به برنامه نویس امکان می‌دهند رفتار الگو‌وار حلقه‌های خود را تغییر دهند.

مثال ساده حلقه در برنامه نویسی به زبان C

در این بخش برای ارائه مثالی ساده از حلقه در برنامه نویسی ، فرض می‌شود شرایطی وجود دارد که در آن می‌خواهیم عبارت «Hello, World!‎» را مثلاً ۵ بار در خروجی برنامه چاپ کنیم. در ادامه برنامه ساده‌ای به زبان C برای انجام این کار ارائه شده است:

1#include <stdio.h>
2
3int main() {
4   printf( "Hello, World!n");
5   printf( "Hello, World!n");
6   printf( "Hello, World!n");
7   printf( "Hello, World!n");
8   printf( "Hello, World!n");
9}

با اجرای برنامه فوق، نتیجه زیر در خروجی تولید خواهد شد:

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

برنامه فوق بسیار ساده و ابتدایی است. اما حالا مثلاً فرض می‌شود شرایطی دیگری وجود دارد که در آن مثلاً فردی می‌خواهد هزار دفعه عبارت «Hello, World!‎» را در خروجی چاپ کند. به‌طور قطع نمی‌توان گزاره printf  را هزار بار نوشت یا در واقع این کار بسیار سخت، زمان‌بر و ملالت‌بار خواهد بود. تقریباً تمام زبان‌های برنامه نویسی قابلیت و مفهومی را ارائه مي‌دهند که به آن «حلقه» (Loop) گفته می‌شود.

حلقه در برنامه نویسی به اجرای یک یا بیش از یک گزاره (Statement) به میزان دفعات مورد نظر گفته می‌شود. تمام زبان‌های برنامه نویسی سطح بالا شکل‌های مختلفی از حلقه‌ها را فراهم می‌کنند که می‌توان از آن‌ها برای اجرای مکرر یک یا بیش از یک گزاره استفاده کرد.

حالا برنامه فوق که به زبان C نوشته شده است، این بار در ادامه با کمک یک حلقه While پیاده‌سازی می‌شود. پس از آن نیز چگونگی عملکرد این حلقه شرح داده خواهد شد.

1#include <stdio.h>
2
3int main() {
4   int i = 0;
5   
6   while ( i < 5 ) {
7      printf( "Hello, World!n");
8      i = i + 1;
9   }
10}

وقتی برنامه بالا اجرا شود، نتیجه زیر تولید خواهد شد:

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

ملاحظه می‌شود که خروجی به دست آمده کاملاً با نتیجه حاصل شده در برنامه قبلی یکسان است. در برنامه فوق از یک حلقه While استفاده شده است. این حلقه برای اجرای مجموعه‌ای از گزاره‌های برنامه نویسی استفاده می‌شود که در زبان C داخل دو علامت باز و بسته آکولاد ( {....}  ) قرار گرفته‌اند.

کامپیوتر ابتدا بررسی می‌کند که آیا شرط مشخص شده برقرار است یا خیر؛ در این مثال برای شرط حلقه بررسی می‌شود که آیا مقدار متغیر a  کم‌تر از ۵ است یا خیر و اگر مشخص شود که شرط برقرار و صحیح ( True  ) است، آنگاه وارد بدنه حلقه می‌شویم تا گزاره‌های داخل حلقه اجرا شوند. در این مثال، دو گزاره یا عبارت زیر در داخل بدنه حلقه وجود دارند:

  • اولین گزاره تابع printf()‎  است که عبارت «Hello World!‎» را چاپ می‌کند.
  • دومین گزاره یا عبارت هم « i = i + 1  » است که برای افزایش مقدار متغیر i   مورد استفاده قرار می‌گیرد.

پس از اجرای تمام گزاره‌های داده شده در بدنه حلقه، کامپیوتر به دستور while( i < 5) بازمی‌گردد و شرط تعیین شده یعنی « i < 5  » دوباره بررسی می‌شود. به این ترتیب، در صورتی که شرط همچنان برقرار باشد، حلقه مجدداً اجرا خواهد شد. این فرایند تا زمانی ادامه پیدا خواهد کرد که شرط داده شده برقرار باشد و به اصطلاح True  باقی بماند. در این مثال، حلقه تا زمانی تکرار خواهد شد که متغیر a   مقداری کم‌تر از ۵ داشته باشد.

فلوچارت حلقه در برنامه نویسی

برای جمع‌بندی این بخش، باید گفت که یک «عبارت حلقه» (Loop Statement) در برنامه نویسی این امکان را برای برنامه نویس فراهم می‌کند تا یک گزاره یا گروهی از گزاره‌ها را چندین بار تکرار کند. در ادامه، قالب کلی یک گزاره یا عبارت حلقه در اکثر زبان‌های برنامه نویسی به صورت فلوچارت آمده است:

فلوچارت کلی حلقه در اکثر زبان های برنامه نویسی

این مقاله آموزشی با هدف ارائه مفاهیم اولیه برنامه نویسی به افراد تازه‌کار ارائه شده، بنابراین بهتر است در ادامه مهم‌ترین انواع حلقه در زبان برنامه نویسی C مورد بررسی قرار بگیرند. چراکه C به عقیده بسیاری از افراد مادر اکثر زبان‌های برنامه نویسی به حساب می‌آید.

حلقه While در برنامه نویسی C

سینتکس حلقه While در برنامه نویسی C به صورت زیر است:

1while ( condition ) {
2/*....while loop body ....*/
3}

فلوچارت حلقه While در برنامه نویسی

کدهای فوق را می‌توان در قالب فلوچارت زیر نمایش داد:

فلوچارت حلقه while در برنامه نویسی سی

نکات مهم پیرامون حلقه While در برنامه نویسی C

لازم است نکات مهم زیر را در خصوص حلقه While در برنامه نویسی مد نظر قرار داد:

  • حلقه While در برنامه نویسی C با کلمه کلیدی while  آغاز می‌شود و به دنبال آن شرط حلقه (Condition) در داخل پرانتز قرار می‌گیرد.
  • پس از گزاره یا عبارت ()While در زبان C، بدنه حلقه را خواهیم داشت که در داخل دو علامت باز و بسته کروشه ( {...}  ) نوشته می‌شود.
  • بدنه حلقه While در برنامه نویسی C دارای یک یا بیش از یک خط کد منبع است که اجرای آن‌ها چندین بار تکرار خواهد شد.
  • در صورتی که بدنه یک حلقه While تنها دارای یک خط کد باشد، آنگاه استفاده از علامت کروشه اختیاری است.
  • در حلقه While در برنامه نویسی ، اجرای بدنه همچنان ادامه دارد تا زمانی که شرط تعیین شده صحیحی (True | برقرار) شود. به محض اینکه شرط دیگر برقرار نباشد (شرط False یا ناصحیح شود)، خروج از حلقه While اتفاق خواهد افتاد و اولین گزاره یا خط کد بعدی در خارج از بدنه حلقه While اجرا می‌شود.
  • یک شرط معمولاً گزاره‌ای رابطه‌ای است که یا به صورت True یا به صورت False ارزیابی می‌شود. در اکثر زبان‌های برنامه نویسی با مقداری برابر با صفر به عنوان False و با هر مقداری به غیر از صفر به عنوان True برخورد می‌شود.

حلقه do...while در برنامه نویسی C

یک حلقه While شرط تعیین شده را پیش از اجرای هر گونه گزاره یا خط کد بررسی می‌کند. در زبان برنامه نویسی C نوع و شکل دیگری از حلقه به نام حلقه do...while فراهم شده است. در حلقه do...while امکان بررسی بدنه حلقه پیش از بررسی شرط مربوطه فراهم شده است. سینتکس حلقه do...while به صورت زیر است:

1do {
2/*....do...while loop body ....*/
3}
4while ( condition );

فلوچارت حلقه While در برنامه نویسی

کدهای فوق را می‌توان در قالب فلوچارت به صورت زیر نمایش داد:

فلوچارت حلقه do while در برنامه نویسی C

حال اگر قرار باشد همان مثال پیشین با استفاده از حلقه do...while انجام شود، کدهای آن باید به صورت زیر نوشته شوند و خروجی هم با کدهای قبلی یکسان است و تفاوتی نخواهد داشت.

1#include <stdio.h>
2
3int main() {
4   int i = 0;
5   
6   do {
7      printf( "Hello, World!n");
8      i = i + 1;
9   }
10   while ( i < 5 );
11}

خروجی کدهای فوق به صورت زیر است:

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

معرفی فیلم های آموزش برنامه نویسی فرادرس

آموزش برنامه نویسی فرادرس

یکی از بهترین روش‌های یادگیری برنامه نویسی استفاده از دوره‌های آموزش آنلاین است. با استفاده از دوره‌ها و فیلم‌های آموزش برنامه نویسی آنلاین می‌توان در هر زمان و هر مکانی به یادگیری ادامه داد و ویدیوها را چند بار مشاهده کرد تا درک کاملی از مفاهیم پیچیده‌تر به‌دست آید. در وب سایت فرادرس یکی از جامع‌ترین و کاربردی‌ترین مجموعه‌های آموزش برنامه نویسی تهیه و گردآوری شده است. علاقه‌مندان می‌توانند براساس نیاز خود و زمینه‌ای که قصد فعالیت در آن را دارند، هر یک از این دوره‌های مجموعه آموزش برنامه نویسی را انتخاب و فرایند یادگیری را آغاز کنند.

در مجموعه آموزش برنامه نویسی فرادرس دوره‌های آموزشی جامعی برای بسیاری از زبان‌های برنامه نویسی مطرح موجود است. در اکثر این دوره‌ها آموزش زبان برنامه نویسی مربوطه از سطح مقدماتی و از صفر آغاز می‌شود و تا سطوح بالاتر ادامه پیدا می‌کند؛ تا جایی که دانشجویان می‌توانند یک پروژه آزمایشی را با استفاده از آن زبان پیاده‌سازی کنند. در تصویر فوق تنها برخی از دوره‌های آموزشی موجود در مجموعه آموزش برنامه نویسی فرادرس به عنوان نمونه نشان داده شده است.

دستور Break در حلقه های برنامه نویسی چیست ؟

زمانی که اجرای کدها در داخل حلقه به عبارت، گزاره یا دستور Break می‌رسند، اجرای حلقه بلافاصله متوقف می‌شود و کنترل برنامه در گزاره بعدی پس از حلقه قرار می‌گیرد و اجرای کدهای خارج از حلقه انجام می‌شود. سینتکس گزاره break   در زبان C به صورت زیر است:

1break;

فلوچارت حلقه دارای دستور Break در برنامه نویسی

گزاره یا عبارت Break را می‌توان در قالب نمودار جریانی یا همان فلوچارت زیر نمایش داد:

فلوچارت حلقه در برنامه نویسی

مثال Break در حلقه برنامه نویسی C

در ادامه همان برنامه قبلی آمده است، با این تفاوت که در کدهای زیر پس از سه پار چاپ شدن عبارت «Hello World!‎» به دلیل True بودن شرط گزاره Break، خروج از حلقه do...while اتفاق می‌افتد:

1#include <stdio.h>
2
3int main() {
4   int i = 0;
5   do {
6      printf( "Hello, World!n");
7      i = i + 1;
8      
9      if( i == 3 ) {
10         break;
11      }
12   }
13   while ( i < 5 );
14}

خروجی کدهای فوق به صورت زیر است:

Hello, World!
Hello, World!
Hello, World!

در خروجی فوق مشاهده می‌شود که پس از True شدن گزاره if( i == 3 )  ، دستور break   اجرا و ادامه جریان حلقه متوقف شده است؛ به همین دلیل به‌جای چاپ شدن ۵ عبارت «Hello World!‎» در خروجی، تنها ۳ عبارت درج می‌شود.

دستور Continue در حلقه های برنامه نویسی چیست ؟

عملکرد دستور Continue در برنامه نویسی C تقریباً مشابه گزاره Break است؛ به‌جای ایجاد الزام برای خروج از حلقه، دستور continue برای وقوع تکرار بعدی در حلقه الزام ایجاد می‌کند و در نتیجه، کدهایی که در این بین وجود دارند اجرا نخواهند شد. سینتکس گزاره Continue در برنامه نویسی C به صورت زیر است:

1continue;

فلوچارت حلقه دارای دستور Continue در برنامه نویسی

گزاره، عبارت یا همان دستور Continue را می‌توان در قالب یک نمودار جریانی یا همان فلوچارت به صورت زیر نمایش داد:

فلوچارت دستور Continue حلقه های برنامه نویسی

مثال Continue در حلقه برنامه نویسی C

در این مثال، گونه دیگری از همان برنامه ساده قبلی آمده است، با این تفاوت که وقتی مقدار متغیر i   یا همان شمارنده حلقه برابر با ۳ می‌شود، اجرای ادامه حلقه در آن تکرار انجام نمی‌شود و در واقع حلقه یک گام به جلو پرش می‌کند. یعنی اجرای حلقه با مقدار i برابر با ۴ ادامه پیدا می‌کند.

1#include <stdio.h>
2
3int main() {
4   int i = 0;
5   do {
6      if( i == 3 ) {
7         i = i + 1;
8         continue;
9      }
10      printf( "Hello, World!n");
11      i = i + 1;
12   }
13   while ( i < 5 );
14}

با اجرای برنامه فوق، نتیجه و خروجی زیر حاصل می‌شود:

Hello, World!
Hello, World!
Hello, World!
Hello, World!

حلقه For در برنامه نویسی

حلقه For در برنامه نویسی مشابه حلقه While است، اما با استفاده از حلقه For، کدهای منبع ساده‌تر و خلاصه‌تر می‌شوند. در گزاره حلقه For، نقطه شروع و نقطه پایان و همچنین میزان افزایش شمارنده در هر تکرار تعریف و تعیین می‌شوند. در ادامه نمونه‌ای از حلقه For در برنامه نویسی PHP مشاهده می‌شود:

1 $num = 21;
2
3   for ($i = 1; $i < $num; $i++)  // stop when $i equals $num
4   {
5       echo "$i, ";
6   }

حلقه for چگونه کار می کند ؟

سینتکس کلی حلقه For در برنامه نویسی به صورت زیر است:

1for(initialization; condition; incrementation or decrementation)
2
3{
4
5Body of Loop;
6
7}

متغیرهای مورد نیاز برای گزاره‌های کنترلی را می‌توان در خود حلقه For مقداردهی اولیه کرد. متغیری که در داخل حلقه For مقداردهی اولیه می‌شود را «شمارنده» (Counter) می‌نامند. شمارنده حلقه در هر تکرار حلقه یک واحد افزایش یا یک واحد کاهش می‌یابد. شرط حلقه نیز یک گزاره بولی است که مقدار شمارنده را در هر تکرار با یک مقدار ثابت مقایسه می‌کند و هر وقت شرط برقرار نباشد، حلقه متوقف خواهد شد. مقدار کاهش یا افزایش نیز در حلقه مشخص می‌شود. مثالی دیگر از حلقه For این بار به زبان C++‎ در ادامه آمده است:

1for(int i=1; i<10; i++)
2
3{
4
5print (i);
6
7}

با اجرای حلقه For فوق، اعداد طبیعی یک تا ۱۰ در خروجی چاپ می‌شوند. متغیر i از نوع صحیح (Integer) است. در شرط حلقه بررسی می‌شود که آیا مقدار i  در هر تکرار کمتر از ۱۰ است یا خیر. پس از اجرای بدنه حلقه و پیش از تکرار بعدی، مقدار i  یک واحد افزایش می‌یابد. به این ترتیب با اجرای این حلقه، اعداد طبیعی از ۱ تا ۱۰ در صفحه نمایش داده می‌شوند.

مقایسه حلقه For با While در برنامه نویسی

اگرچه حلقه‌های For و While را می‌توان اغلب به‌جای یکدیگر استفاده کرد، در اکثر مواقع به کار بردن یکی از آن‌ها نسبت به دیگری منطقی‌تر است. اغلب حلقه For در برنامه نویسی بر حلقه While‌ ترجیح داده می‌شود. دلیلش این است که حلقه For واضح‌تر و تمیزتر است و راحت‌تر می‌توان آن را خواند.

اگرچه، در برخی شرایط، استفاده از گزاره While می‌تواند بسیار بهینه‌تر و بهتر باشد. برای مثال، می‌توان از گزاره PHP زیر برای بارگذاری تمام مقادیر دریافتی از نتیجه ارسالی از MySQL در داخل هر آرایه‌ای استفاده کرد. این عملیات با حلقه While تنها با یک خط کد قابل انجام است:

1   while ($row = mysql_fetch_array($result))
  • نکته: به دلیل اینکه حلقه تا زمانی که یک شرط خاص محقق شود ادامه پیدا می‌کند، باید اطمینان حاصل کرد که حلقه بلاخره در یک مقطع متوقف خواهد شد و اجرای آن به اتمام خواهد رسید و این موضوع بسیار مهم است. زیرا اگر شرط حلقه هیچ‌گاه برقرار نشود، حلقه به‌طور نامحدود ادامه پیدا خواهد کرد و یک حلقه بی نهایت ایجاد خواهد شد. نوشتن کدهایی که امکان بروز حلقه‌های بی نهایت را به وجود می‌آورند، در برنامه نویسی کار درستی به حساب نمی‌آید، زیرا چنین کدهایی ممکن است باعث توقف برنامه و از کار افتادن آن شوند.

آموزش حلقه for در برنامه نویسی C

سینتکس حلقه For در برنامه نویسی C‌ به صورت زیر است:

1for (initializationStatement; testExpression; updateStatement)
2{
3    // statements inside the body of loop
4}

حلقه For در برنامه نویسی C چگونه عمل می کند؟

در ادامه این بخش مراحل اجرای حلقه For در برنامه نویسی C فهرست شده‌اند:

  1. «گزاره نمونه‌سازی اولیه» (Initialization Statement) تنها یک بار اجرا می‌شود.
  2. سپس، «عبارت یا گزاره تست» (Test Expression) مورد ارزیابی قرار می‌گیرد. در صورتی که شرط برقرار نباشد و گزاره تست False  شود، اجرای حلقه For متوقف خواهد شد.
  3. همچنین، اگر شرط برقرار باشد و گزاره تست True  شود، گزاره‌ها یا همان خط کدهای داخل بدنه حلقه For اجرا می‌شوند و گزاره به‌روزرسانی (Update Expression) نیز تازه‌سازی می‌شود.
  4. سپس گزاره تست دوباره مورد ارزیابی قرار می‌گیرد.

این فرایند تا زمانی ادامه پیدا می‌کند که گزاره تست False  یا نادرست شود. وقتی که عبارت تست یا همان گزاره شرطی نادرست شود، حلقه متوقف خواهد شد.

فلوچارت حلقه For در برنامه نویسی C

فلوچارت حلقه For در برنامه نویسی C در ادامه آمده است:

فلوچارت حلقه For در زبان C
نحوه عملکرد حلقه For در زبان C

مثال حلقه for در C

در ادامه مثالی از حلقه for در برنامه نویسی C آمده است:

1// Print numbers from 1 to 10
2#include <stdio.h>
3
4int main() {
5  int i;
6
7  for (i = 1; i < 11; ++i)
8  {
9    printf("%d ", i);
10  }
11  return 0;
12}

برنامه بالا با استفاده از حلقه For در زبان C اعداد یک تا ۱۰ را در خروجی چاپ می‌کند. خروجی به صورت زیر است:

1 2 3 4 5 6 7 8 9 10

در ادامه هر یک از مراحل اجرای کدهای فوق فهرست شده‌اند:

  1. مقدار متغیر شمارنده i  با عدد یک مقداردهی اولیه شده است.
  2. گزاره تست i < 11  ارزیابی و بررسی می‌شود. چون مقدار فعلی i  یک است، بنابراین شرط کم‌تر بودن i  از ۱۱ برقرار خواهد بود و بدنه حلقه For اجرا می‌شود. در نتیجه، مقدار یک (یعنی مقدار فعلی متغیر i  ) در خروجی چاپ خواهد شد.
  3. گزاره تازه‌سازی یعنی ‎++i  اجرا می‌شود. حالا مقدار i برابر با ۲ خواهد بود؛ باز هم ارزیابی گزاره تست صحیح است و بنابراین بدنه حلقه For اجرا خواهد شد.
  4. دوباره گزاره تازه‌سازی ‎++i اجرا می‌شود و گزاره تست i < 11  ارزیابی خواهد شد. این فرایند همچنان ادامه پیدا می‌کند تا زمانی که i برابر با ۱۱ شود.
  5. وقتی که i  برابر با ۱۱ شد، شرط i < 11  ناصحیح خواهد بود و حلقه For متوقف می‌شود و خروج از حلقه در برنامه اتفاق خواهد افتاد.

حلقه For در جاوا اسکریپت

سینتکس حلقه For در جاوا اسکریپت به صورت زیر است:

1
2for (initialExpression; condition; updateExpression) {
3    // for loop body
4}

حال در ادامه توضیحاتی پیرامون سینتکس حلقه For در جاوا اسکریپت ارائه شده است:

  1. مقداردهی اولیه و تعریف متغیرها در initialExpression   انجام و این گزاره در طول تکرار حلقه، تنها یک بار اجرا می‌شود.
  2. گزاره condition در سینتکس فوق شرطی است که هر بار مورد ارزیابی قرار می‌گیرد:
    • اگر شرط برقرار نباشد (False باشد) حلقه For در جاوا اسکریپت متوقف خواهد شد و خروج از آن رخ خواهد داد.
    • اگر شرط برقرار باشد (True باشد)، بلوک کد داخل حلقه For در جاوا اسکریپت اجرا می‌شود.
  3. updateExpression  در سینتکس بالا همان گزاره به‌روزرسانی است که مقدار initialExpression  را وقتی شرط برقرار باشد، به‌روزرسانی می‌کند.
  4. شرط (گزاره Condition) بار دیگر ارزیابی می‌شود. این پروسه تا زمانی که شرط False شود ادامه پیدا خواهد کرد.

انواع حلقه For در جاوا اسکریپت، حلقه‌های For/In و For/Of را هم شامل می‌شود. برای یادگیری بیشتر حلقه For‌ در جاوا اسکریپت و انواع آن، مطالعه مقاله مربوط به آن در مجله فرادرس به علاقه‌مندان پیشنهاد می‌شود:

حلقه For پایتون چیست ؟

حلقه For پایتون برای پیمایش در طول یک دنباله (مثل لیست، تاپل و رشته در پایتون)‌ یا سایر شی‌ءهای پیمایش‌پذیر مورد استفاده قرار می‌گیرد. در اصل کلمه «Iterate» به معنی تکرار است؛ اما در واقع به تکرار در طول یک دنباله «Traversal» یا همان «پیمایش» گفته می‌شود.

حلقه For پایتون کمتر شبیه به حلقه For در سایر زبان‌های برنامه نویسی است و بیشتر شبیه به یک متُد پیمایش‌گر (Iterator) در سایر زبان‌های برنامه نویسی شی‌گرا عمل می‌کند.

مثال حلقه for در پایتون

با حلقه For در پایتون می‌توان مجموعه‌ای از گزاره‌ها را یک بار روی هر یک از اقلام داخل لیست، تاپل، مجموعه و سایر ساختارهای داده دنباله‌ای در پایتون اجرا کرد. برای مثال، در کدهای زیر هر یک از آیتم‌های موجود در لیست Fruits  با استفاده از حلقه For در پایتون چاپ می‌شوند:

1fruits = ["apple", "banana", "cherry"]
2for x in fruits:
3  print(x)

سینتکس حلقه For در پایتون

سینتکس حلقه For در پایتون به صورت زیر است:

1for val in sequence:
2    loop body

پیش از این، مقاله‌ای کاربردی با موضوع حلقه For در پایتون در مجله فرادرس منتشر شده که برای مطالعه و یادگیری بیشتر در ادامه معرفی شده است:

حلقه for در متلب

حلقه for در متلب نیز برای تکرار به تعداد دفعاتی مشخص مورد استفاده قرار می‌گیرد. در ادامه، سینتکس حلقه For در متلب آمده است:

1for index = values
2   statements
3end

با استفاده از سینتکس فوق، گروهی از عبارت‌ها (کدها) به وسیله حلقه For در متلب داخل یک حلقه برای تعداد دفعات خاصی اجرا می‌شوند. بخش values  قالب سینتکس فوق دارای یکی از حالت‌های زیر است:

  • initVal:endVal : در این حالت، متغیر index  از مقدار initVal  تا endVal  یکی یکی افزایش می‌یابد و اجرای گزاره‌ها تا زمانی ادامه پیدا می‌کند که index  بزرگ‌تر از endVal  شود.
  • initVal:step:endVal  : در این شیوه، index  به میزان مقدار step  در هر تکرار افزایش می‌یابد یا اگر step  منفی باشد، به‌جای افزایش، مقدار index  کاهش خواهد یافت.
  • valArray  : در این حالت، در هر تکرار یک بردار ستونی، index  از ستون‌های پیاپی آرایه valArray ایجاد می‌شود. برای مثال، در تکرار اول، index = valArray(:,1)  خواهد بود. حلقه حداکثر n بار اجرا می‌شود. در اینجا n  تعداد ستون‌های valArray  است که با استفاده از عبارت numel(valArray(1,:))  به‌دست می‌آید. ورود valArray در متلب می‌تواند از هر نوع داده‌ای شامل یک بردار کاراکترها، آرایه سلولی یا یک Struct باشد.

مثال حلقه For در متلب

در مثال زیر، یک ماتریس هیلبرت از مرتبه ۱۰ با استفاده از حلقه For در برنامه نویسی متلب تولید می‌شود:

1s = 10;
2H = zeros(s);
3
4for c = 1:s
5    for r = 1:s
6        H(r,c) = 1/(r+c-1);
7    end
8end

حلقه for در C++‎

زمانی که دقیقاً مشخص باشد چند بار قرار است قطعه کدی در یک حلقه اجرا شود، می‌توان به‌جای حلقه While از حلقه For در C++‎ استفاده کرد. سینتکس حلقه for در C++‎ به صورت زیر است:

1for (initialization; condition; update) {
2    // body of-loop 
3}

در ادامه هر یک از اجزای سینتکس حلقه For در C++‎ شرح داده شده‌اند:

  • initialization  : در این گزاره متغیرها مقداردهی اولیه می‌شوند؛ این گزاره تنها یک بار اجرا خواهد شد.
  • condition  : در صورتی که این گزاره صحیح (True) باشد، بدنه حلقه For اجرا می‌شود: در صورتی هم که گزاره condition  نادرست (False) باشد اجرای حلقه به پایان خواهد رسید.
  • update  : این گزاره در حلقه For زبان C++‎ مقدار متغیرهای مقداردهی اولیه شده را به‌روزرسانی می‌کند و پس از آن شرط را مجدداً بررسی خواهد کرد.

پیش از این مقاله‌ای با محوریت حلقه For در C++‎ در مجله فرادرس منتشر شده است که برای مطالعه و یادگیری بیشتر می‌توان از آن استفاده کرد:

حلقه for در C#‎

در زبان برنامه نویسی C#‎ (سی‌شارپ) هم از کلمه کلیدی for  برای ایجاد حلقه‌های For‌ در برنامه نویسی استفاده می‌شود. سینتکس حلقه For در ادامه آمده است:

1for (initialization; condition; iterator)
2{
3	// body of for loop
4}

در ادامه توضیحاتی پیرامون نحوه عملکرد حلقه for در C#‎ ارائه شده‌اند:

  1. حلقه‌های For در C#‎ دارای ۳ گزاره یا عبارت هستند:
    1. initialization
    2. condition
    3. iterator
  2. گزاره initialization  در ابتدا و تنها یک بار اجرا خواهد شد. در اینجا، متغیر (شمارنده) معمولاً اعلان و مقداردهی اولیه می‌شود.
  3. سپس گزاره condition  مورد ارزیابی قرار می‌گیرد. گزاره condition یک گزاره بولی به حساب می‌آید؛ یعنی مقدار بازگشتی آن تنها True  یا False‌  است.
  4. در صورتی که شرط برقرار باشد و مقدار condition برابر با True‌  باشد، آنگاه:
    1. گزاره‌های داخل حلقه For اجرا می‌شوند.
    2. آنگاه، گزاره iterator اجرا خواهد شد که معمولاً مقدار متغیر مقداردهی اولیه شده را تغییر می‌دهد.
    3. در این گام باز هم شرط (گزاره condition ) ارزیابی می‌شود.
    4. این فرایند تا زمانی ادامه خواهد داشت که شرط دیگر برقرار نباشد و ارزیابی گزاره condition برابر با False‌ شود.
  5. اگر شرط دیگر برقرار نباشد و در ارزیابی آن مقدار False‌ تولید شود، حلقه For در ‎C#‎ متوقف خواهد شد و به اتمام خواهد رسید.

مثال حلقه for در C#‎

در ادامه مثالی برای حلقه for در C#‎ ملاحظه می‌شود. پس از کدها و نتیچه چاپ شده در خروجی، توضیحات لازم پیرامون این مثال ارائه شده است:

1using System;
2
3namespace Loop
4{
5	class ForLoop
6	{
7		public static void Main(string[] args)
8		{
9			for (int i=1; i<=5; i++)
10			{
11				Console.WriteLine("C# For Loop: Iteration {0}", i);
12			}
13		}
14	}	
15}

با اجرای کدهای فوق، خروجی به صورت زیر خواهد بود:

C# For Loop: Iteration 1
C# For Loop: Iteration 2
C# For Loop: Iteration 3
C# For Loop: Iteration 4
C# For Loop: Iteration 5

در مثال فوق:

  • int i=1  همان گزاره initialization  است.
  • i<=5  نیز در واقع همان گزاره شرطی یا condotion  است.
  • گزاره iterator  در مثالا بالا نیز همان i++  ‎است.

وقتی که برنامه بالا اجرا می‌شود، مراحل زیر به ترتیب اتفاق می‌افتند:

  1. ابتدا متغیر i  اعلان می‌شود و مقداردهی اولیه آن با عدد یک انجام شده است.
  2. سپس، شرط حلقه یعنی i<=5  مورد ارزیابی قرار می‌گیرد.
  3. به دلیل اینکه شرط برقرار است و مقدار بازگشتی از گزاره شرطی True  است، برنامه بدنه حلقه for در C#‎ را اجرا می‌کند. این برنامه جمله داده شده را در اولین تکرار در خروجی چاپ می‌کند.
  4. اکنون پیمایش‌گر یا همان iterator  یعنی i++‎  مورد ارزیابی قرار می‌گیرد. این باعث می‌شود مقدار i‌ به ۲ تغییر داده شود.
  5. در این گام شرط i<=5  بار دیگر در انتها مورد ارزیابی قرار می‌گیرد و مقدار i  یکی افزایش می‌یابد. در ۵ بار اول اجرای حلقه، شرط حلقه برقرار است.
  6. وقتی که مقدار i   برابر با ۶ شود، شرط دیگر برقرار نخواهد بود و نقدار آن False خواهد شد. بنابراین، اجرای حلقه متوقف خواهد شد.

حلقه foreach در برنامه نویسی چیست ؟

حلقه Foreach (یا for each) گزاره کنترل جریان برای پیمایش در اقلام داخل یک مجموعه است. Foreach معمولاً به‌جای یک گزاره حلقه For استاندارد در برنامه نویسی مورد استفاده قرار می‌گیرد. اگرچه، برخلاف سایر ساختارهای حلقه‌های For در برنامه نویسی، حلقه‌های Foreach‌ معمولاً هیچ شمارنده خاصی را نگهداری نمی‌کنند.

حلقه‌های Foreach به‌جای آنکه تعیین کنند کاری مثلاً x دفعه انجام شود، لزوماً مشخص می‌کنند که کدهای لازم روی «تمام» اقلام یک مجموعه باید اجرا شوند. این رویکرد یعنی استفاده از حلقه‌های Foreach، از بروز خطاهای بالقوه off-by-one جلوگیری می‌کند و باعث می‌شود خواندن کدها آسان‌تر شود. در زبان‌های شی‌گرا، یک پیمایش‌گر حتی اگر ضمنی باشد، اغلب به عنوان ابزاری برای پیمایش مورد استفاده قرار می‌گیرد.

عملکرد حلقه foreach چگونه است؟

گزاره Foreach در برخی از زبان‌های برنامه نویسی دارای ترتیبی تعریف شده است که هر آیتم در مجموعه را از ابتدا تا انتها پردازش می‌کند. گزاره Foreach در بسیاری از دیگر زبان‌های برنامه نویسی، مخصوصاً زبان‌های برنامه نویسی آرایه‌ای، هیچ ترتیب خاصی ندارند.

این مسئله به‌طور کلی باعث می‌شود که بهینه‌سازی حلقه‌ها ساده‌تر شود و به‌طور خاص اجازه می‌دهد پردازش برداری آیتم‌ها در مجموعه به صورت همزمان انجام شود. در بسیاری از زبان‌های برنامه نویسی از حلقه Foreach پشتیبانی می‌شود.

مثال حلقه Foreach در برنامه نویسی C#‎

در C#‎ با این فرض که myArray آرایه‌ای از اعداد صحیح باشد، داریم:

1foreach (int x in myArray) { Console.WriteLine(x); }

به این ترتیب در خط کد بالا، هر یک از عناصر (اعداد صحیح) موجود در آرایه myArray در خروجی چاپ خواهند شد.

انواع حلقه در برنامه نویسی

دسته‌بندی‌های مختلفی را می‌توان برای انواع حلقه در برنامه نویسی در نظر گرفت. در ساده‌ترین دسته‌بندی، برای انواع حلقه در برنامه نویسی که کمی هم جنبه طنز دارد، تنها دو نوع حلقه در برنامه نویسی معرفی می‌شود؛ یک نوع حلقه، حلقه‌ای است که تمام می‌شود و نوع دیگر حلقه‌ای است که هیچ وقت تمام نمی‌شود (همان حلقه بی نهایت).

انواع حلقه در برنامه نویسی

اما رایج‌ترین و مشخص‌ترین دسته‌بندی برای انواع حلقه در برنامه نویسی همان دسته‌بندی بر اساس نام، سینتکس و عملکرد حلقه‌های مختلف است. از این زاویه، پیش از این ۳ نوع از انواع حلقه در برنامه نویسی C یعنی حلقه‌های while ،do...while و for در این مقاله معرفی شده‌اند. حلقه for و while یکی از رایج‌ترن و پر‌استفاده‌ترین انواع حلقه در برنامه نویسی به حساب می‌آیند. به‌طور کلی از این منظر انواع حلقه در برنامه نویسی را می‌توان به صورت زیر دسته‌بندی کرد:

  • حلقه for
  • foreach
  • while
  • do-while
  • do-until
  • goto
  • سایر موارد

البته باید در نظر داشت که برخی از انواع حلقه فهرست شده در بالا، تنها مخصوص زبان‌های برنامه نویسی خاصی هستند و همه زبان‌های برنامه نویسی از تمام موارد فوق پشتیبانی نمی‌کنند. علاوه بر روش فوق، انواع حلقه در برنامه نویسی را به شکل‌های دیگری هم می‌توان دسته‌بندی کرد. مثلاً برخی حلقه‌های خاص را هم می‌توان جزء انواع حلقه در برنامه نویسی در نظر گرفت. به عنوان نمونه، «حلقه‌های بی نهایت» یا «حلقه‌های تو در تو» هم شامل انواع حلقه در برنامه نویسی می‌شوند. حلقه بی نهایت در بخش‌های ابتدایی این مقاله معرفی شد، بنابراین بهتر است پیرامون حلقه‌های تو در تو هم توضیحاتی ارائه شود؛ این کار در بخش‌های بعدی این مقاله انجام شده است.

آیا انواع حلقه در برنامه نویسی اصلاً با هم تفاوتی دارند؟

برخی هم عقیده دارند که انواع حلقه در برنامه نویسی چندان تفاوتی با هم ندارند و همگی کار یکسانی را انجام می‌دهند؛ در واقع این دسته از برنامه نویسان اعتقاد دارند همه حلقه‌ها دنباله‌هایی از دستورالعمل‌ها هستند که بارها تکرار می‌شوند و ممکن است به‌طور اختیاری در مقطعی از این تکرار پیاپی، نوعی شرط معین ارزیابی شود و براساس محقق شدن شرط مربوطه، یا حلقه ادامه پیدا می‌کند یا اینکه بسته به نتیجه، اجرای حلقه متوقف می‌شود و خاتمه پیدا می‌کند.

حلقه ها در برنامه نویسی

فارق از دسته‌بندی‌های مختلفی که برای انواع حلقه‌ها در برنامه نویسی مطرح می‌شوند، یکی از مواردی که در خصوص انواع حلقه در برنامه نویسی اهمیت دارد این است که مثلاً آیا شرط حلقه در ابتدای حلقه است، در میانه حلقه قرار گرفته یا در انتهای آن؟ در واقع یکی دیگر از شیوه‌های دسته‌بندی انوع حلقه در برنامه نویسی بر همین اساس شکل گرفته است. یعنی انواع حلقه در برنامه نویسی را می‌توان به دو دسته «حلقه کنترل در ورودی» (حلقه کنترل حین ورود | Entry Controlled Loop) و «حلقه کنترل در خروجی» (حلقه کنترل حین خروج | Exit Controlled Loop) هم تقسیم کرد.

حلقه کنترل در ورودی چیست ؟

در یک حلقه کنترل ورودی یا حلقه کنترل حین ورود، گزاره کنترلی (Control Statement) درست در ابتدای حلقه نوشته می‌شود. این نوع حلقه در برنامه نویسی را «Pre-Checking Loop» (حلقه پیش‌بررسی) هم می‌نامند. ابتدا شرط‌های واقع در گزاره کنترلی بررسی می‌شوند و تنها در صورت برقرار بودن و درست بودن شرط‌ها، بدنه حلقه اجرا خواهد شد. در صورتی که شرط حلقه نادرست (False) از آب درآید، خط کدهای نوشته شده در بدنه حلقه اجرا نخواهند شد. حلقه For یک حلقه کنترل در ورودی به حساب می‌آید، یعنی گزاره کنترلی در این نوع حلقه در ابتدای ساختار حلقه نوشته می‌شود.

حلقه کنترل در خروجی چیست ؟

در یک حلقه کنترل در خروجی یا حلقه کنترل حین خروج، گزاره کنترلی در انتهای ساختار حلقه نوشته می‌شود. در این نوع از انواع حلقه در برنامه نویسی خط کدهای نوشته شده در بدنه حلقه یک بار قبل از بررسی شرط حلقه اجرا می‌شوند. از این‌رو، به این نوع از حلقه‌ها هم «Post-Checking» (حلقه بررسی پسین) می‌گویند. حلقه Do-Wile یک حلقه کنترل در خروجی به حساب می‌آید؛ یعنی گزاره‌های کنترلی در این نوع از حلقه‌ها در انتهای ساختار حلقه نوشته می‌شوند.

انواع حلقه در برنامه نویسی C++

انواع حلقه با گزاره کنترلی True و حلقه با عبارت کنترلی False

یکی دیگر از نکته‌های مهم پیرامون انواع حلقه این است که آیا خاتمه اجرای حلقه در صورت True  بودن شرط حلقه رخ می‌دهد یا در صورت False  شدن شرط، خروج از حلقه اتفاق می‌افتد؟ این مورد هم ممکن است در انواع حلقه متفاوت باشد و حلقه‌ها را می‌توان بر این اساس هم دسته‌بندی کرد.

انواع مختلف حلقه در برنامه نویسی چه اطلاعاتی به خواننده کدها می‌دهند؟

زبان‌های برنامه نویسی سینتکس‌های مخصوص به خود را برای برخی از انواع حلقه‌ها دارند، اما نحوه عملکرد و اصول کلی آن‌ها یکسان است. در واقع سینتکس مخصوص برای هر یک از انواع حلقه با هدف کمک به درک کدها توسط خواننده به وجود آمده است. مثلاً هر گاه از حلقه While استفاده شده باشد، خواننده کدها متوجه خواهد شد که شرط حلقه در ابتدای آن بررسی می‌شود. یا مثلاً اگر خواننده با یک حلقه For مواجه شود، می‌داند که شرط در این نوع حلقه هم در ابتدای بدنه آن بررسی می‌شود و علاوه بر آن، خواننده متوجه خواهد بود که در حلقه For یک یا بیش از یک متغیر کنترلی هم وجود دارد که به نوعی در هر تکرار به‌روزرسانی می‌شود.

تفاوت انواع حلقه در برنامه نویسی

انواع حلقه های شرطی و غیر شرطی در برنامه نویسی

یک روش دیگر برای دسته‌بندی انواع حلقه در برنامه نویسی تقسیم کردن حلقه‌های مختلف به دو دسته «حلقه شرطی» (Conditional) و «حلقه غیرشرطی» (Unconditional) است. در واقع فارق از زبان برنامه نویسی و زبان برنامه نویسی مربوطه کامپایلری است یا مفسری، می‌توان حلقه‌ها را در برنامه نویسی به این دوسته یعنی شرطی و غیرشرطی تقسیم کرد.

حلقه شرطی در برنامه نویسی چیست ؟

در حلقه‌های شرطی برای مشخص کردن اینکه حلقه باید ادامه پیدا کند یا خیر، از یک شرط استفاده می‌شود. برای مثال، حلقه For یک حلقه شرطی به حساب می‌آید.

حلقه غیرشرطی در برنامه نویسی چیست ؟

در این نوع از حلقه‌ها هیچ گونه شرط خاص یا ارزیابی صلاحیتي وجود ندارد و فقط با استفاده از کلمه کلیدی حلقه مثل Goto یا JMP، اجرای برنامه به برچسب یا آدرس مشخص شده در آرگومان موجود در گزاره حلقه منتقل خواهد شد.

حلقه تکرار برای حرکت در داخل عناصر انواع مجموعه ها در برنامه نویسی

نوع دیگری از حلقه‌های تکرار وجود دارد که معمولاً به آن‌ها «Iterator Loop» یا «حلقه‌های پیمایش‌گر» می‌گویند. این نوع از حلقه‌ها در طول نوعی از مجموعه (Collection) تکرار انجام می‌دهند و پیمایش می‌کنند. تنها تفاوت این نوع از حلقه‌ها با حلقه‌های شرطی این است که کدنویسی و برنامه نویسی‌هایی پیچیده در پس حلقه‌های Iteratorها وجود دارد؛ مثلاً در گزاره for ( auto e : myList)  در زبان C++‎، کدهای ضمنی وجود دارند که C++‎ آن‌ها را با این فرض ایجاد می‌کند که e   «تکرار پذیر» یا «Iterable» است. بسیاری از افراد تمایزی در این خصوص قائل نمی‌شوند. در واقع باید آگاه بود که Iterable چگونه کار می‌کند تا بتوان چنین تمایزی را قائل شد.

آیا در اصل فقط یک نوع حلقه تکرار وجود دارد ؟

نگرش دیگری به انواع حلقه در برنامه نویسی وجود دارد و آن هم این است که در اصل تنها یک نوع حلقه وجود دارد و آن هم «گزاره پرش» (Jump Statement) است. البته اگر پرش‌های شرطی ( if X then jump  ) هم در نظر گرفته شوند، آنگاه می‌توان گفت به‌طور کلی تنها ۲ نوع حلقه در برنامه نویسی وجود دارد. در زبان C برای پرش از عبارت goto استفاده می‌شود. استفاده از گزاره goto در برنامه نویسی به قدری گیج‌کننده و ریسکی است که یکی از دانشمندان مشهور علوم کامپیوتر آن را بیش از حد سطح پایین خوانده است و عمومی کردن آن را منطقی نمی‌داند.

طراحان زبان‌های برنامه نویسی امروزی و مدرن با این عقیده هم‌نظر هستند و عملیات پریدن در برنامه نویسی را به نوعی با «ساختارها» (Construct) پنهان کرده‌اند. آن‌ها بر این باور هستند که استفاده از این ساختارها وضوح و شفافیت بیش‌تری را فراهم کرده است و در عین حال قدرتمندی آن‌ها هم قابل قبول است.

در واقع همه‌ی انواع حلقه مثل حلقه‌های For، حلقه‌های While، تمام فراخوانی‌های توابع، «بازگشت» (Recursion)، پردازش تکراری (Iterative Processing) و برچسب‌ها همگی المان‌هایی تزئینی هستند که پوششی برای این دستورالعمل در پردازنده (Jump) به حساب می‌آیند. در واقع باید گفت که در سطح پایین و نزدیک به زبان ماشین، تنها یک نوع حلقه در برنامه نویسی وجود دارد.

چه زمانی کدام حلقه را انتخاب کنیم؟

انواع حلقه در برنامه نویسی ممکن است گیج‌کننده به نظر برسند و احتمال دارد در خصوص اینکه از کدام حلقه در چه زمانی باید استفاده شود سردرگمی به وجود بیاید. بنابراین بهتر است درکی از این مسئله وجود داشته باشد که چرا لزوماً ۳ رویکرد متفاوت برای انجام کاری یکسان وجود دارد:

  • استفاده از حلقه For در برنامه نویسی زمانی کاربردی و مفید است که تعداد تکرارهای ثابت و مشخصی داشته باشیم.
  • حلقه‌های While در صورتی کاربردی هستند که نیاز به اجرای یک عملکرد به تعداد دفعات نامشخص تا زمانی وجود داشته باشد که شرط خاصی برقرار شود. یک مثال عالی برای این حالت، می‌تواند حلقه While مورد استفاده در یک بازی کامپیوتری باشد؛ این حلقه می‌تواند تا زمانی ادامه داشته باشد که گیمر دکمه خروج را بزند یا مثلاً شخصیت بازی بمیرد.
  • در نهایت، حلقه‌های Do While را می‌توان زمانی استفاده کرد که برنامه نویس بخواهد کدهای بدنه حلقه را حداقل یک بار اجرا کند. برای مثال، در بسیاری از سناریوهای رابط کاربری، استفاده از این حلقه برای این مناسب است که می‌توان وقتی چیزی برای اجرا وجود ندارد، آن را به کاربر اطلاع داد.
کدام حلقه در برنامه نویسی بهتر است

به‌طور قطع می‌توان به نحوی هر کدام از عملکردهای مورد نظر را با استفاده از هر یکی از انواع حلقه در برنامه نویسی انجام داد؛ اما انتخاب کدهای مناسب و بهتر برای هر عملکرد خاص، مشخصه بارز برنامه نویسی بهینه است.

حلقه تو در تو در برنامه نویسی چیست ؟

یک حلقه تو در تو به حلقه‌ای گفته می‌شود که در داخل حلقه دیگری قرار گرفته است. اگرچه اکثر انواع حلقه در برنامه نویسی می‌توانند تو در تو باشند، رایج‌ترین نوع از حلقه‌های تو در تو، حلقه‌های For تود در تو هستند. حلقه‌های تو در تو به‌طور خاص در نمایش داده‌های چندبُعدی بسیار کاربرد دارند. در زمان استفاده از این نوع حلقه‌ها، اولین تکرار در اولین حلقه (حلقه بیرونی) آغاز می‌شود و به دنبال آن، حلقه دوم اجرا خواهد شد.

پیش از آن‌که تکرار بعدی حلقه اول اتفاق بیوفتد، دومین حلقه به‌طور کامل به اتمام خواهد رسید و اجرا خواهد شد. ممکن است این توضیحات کمی گیج‌کننده به نظر برسند؛ بنابراین، استفاده از یک مثال می‌تواند به درک مفهوم و چیستی حلقه‌های تو در تو کمک کند.

مثال حلقه تو در تو در برنامه نویسی

در مثال زیر ساختار حلقه‌های تو در تو در برنامه نویسی مشخص شده است:

1     for i in (1..3)
2     	puts "Outer loop: i = " + i.to_s
3     for k in (1..4)
4       puts "Inner loop: k = " + k.to_s
5     	end
6     end

حلقه در برنامه نویسی اندروید

در برنامه نویسی اندروید از زبان‌های جاوا و کاتلین استفاده می‌شود. بنابراین برای یادگیری حلقه در برنامه نویسی اندروید باید حلقه در برنامه نویسی جاوا و کاتلین را آموخت. به همین دلیل، در ادامه این بخش ابتدا به شرح و آموزش حلقه در برنامه نویسی جاوا و سپس به حلقه در برنامه نویسی کاتلین پرداخته شده است.

آموزش حلقه در برنامه نویسی اندروید

حلقه در برنامه نویسی جاوا

در این بخش به بررسی نحوه استفاده از حلقه‌ها در جاوا پرداخته شده است. به‌طور کلی باید گفت که ۳ نوع حلقه در جاوا وجود دارد:

  • حلقه For در جاوا
  • حلقه While در جاوا
  • حلقه Do-While در جاوا
حلقه در جاوا

در ادامه ابتدا به حلقه For در برنامه نویسی جاوا پرداخته می‌شود.

حلقه For در برنامه نویسی جاوا

حلقه For در برنامه نویسی جاوا بهترین گزینه برای پیاده‌سازی وظیفه‌های تکرارشونده در برنامه نویسی اندروید به حساب می‌آید. دلیلش این است که حلقه‌های For دارای تعداد تکرارهای ثابتی هستند. استفاده از حلقه For در برنامه نویسی جاوا به این صورت است که ابتدا مقداردهی اولیه متغیر انجام می‌شود سپس باید شرط را نوشت و مشخص کرد و در نهایت هم میزان افزایش‌ها در هر تکرار مشخص می‌شوند. برای درک بهتر حلقه‌های For در جاوا بهتر مثالی ارائه شود.

مثال حلقه For در برنامه نویسی جاوا

در ادامه مثالی برای حلقه For در برنامه نویسی جاوا آمده است:

1for (int n=1;n<=10;n++) {
2    System.out.println(n);
3    }

در مثال فوق از یک عدد صحیحی به نام n به عنوان شمارنده حلقه استفاده شده است. این حلقه تا زمانی اجرا خواهد شد که n کم‌تر یا مساوی ۱۰ شود. مقدار n در هر تکرار یک واحد افزایش می‌یابد. با اجرای کدهای فوق، به سادگی شمارش از یک تا ۱۰ انجام خواهند شد. می‌توان میزان افزایش شمارنده در هر تکرار حلقه را بیشتر کرد و حتماً لازم نیست شمارنده یکی یکی زیاد شود:

1for (int n=1;n<=20;n+=2) {
2    System.out.println(n);
3    }

با اجرای کدهای فوق ملاحظه خواهد شد که اعداد از ۱ تا ۱۹ دوتا دوتا شمارش و چاپ می‌شوند. همچنین در جاوا حتماً لازم نیست از نوع داده صحیح برای شمارنده حلقه استفاده شود:

1  for (String hi = "hi";hi.length()<=10;hi = hi + "h") {
2    System.out.println(hi);
3    }

حلقه While در برنامه نویسی جاوا

حلقه While در برنامه نویسی جاوا درست مثل حلقه‌های For عمل می‌کنند، با این تفاوت که می‌توان هر شرطی را با استفاده از مقدارهایی تعیین کرد که در جای دیگری از کدها تعریف شده‌اند.

مثال حلقه While در برنامه نویسی جاوا

برای استفاده از حلقه While در جاوا به سادگی تنها کافی است شرط مورد نظر را در داخل پرانتز مقابل کلمه کلیدی while  نوشت:

1  int health=10;
2
3  while(health > 0) {
4    System.out.println(health);
5    health--;
6  }
7}

حلقه Do While در برنامه نویسی جاوا

حلقه Do While بسیار مشابه حلقه While در برنامه نویسی جاوا است، با این تفاوت که ساختار آن وارونه شده تا بلوک کد داخل حلقه حداقل یک بار اجرا شود.

مثال حلقه Do While در برنامه نویسی جاوا

در مثال زیر اگر مقدار متغیر health کمتر از یک باشد، خروجی health = 0  خواهد بود.

1do{
2    System.out.println(health);
3  } while(health > 0);

گزاره های Break ‌و Continue در جاوا

برای یادگیری کامل مفاهیم حلقه‌ در برنامه نویسی جاوا ، لازم است آشنایی با گزاره Break در جاوا هم به دست آید. گزاره Break در جاوا قید یا عبارت خروجی (Get Out Clause) به حساب می‌آید که امکان کنسل کردن و توقف حلقه را در هر زمان لازم فراهم می‌کند.

مثال گزاره Break در حلقه جاوا

برای مثال، در یک بازی کامپیوتری تا زمان مرگ شخصیت بازی لازم است چرخه بازی ادامه داشته باشد؛ اما در عین حال، باید به بازیکن اجازه داده شود تا هر زمانی که بخواهد از بازی خارج شود. برای پیاده‌سازی این قابلیت، می‌توان از گزاره Break در حلقه استفاده کرد:

1int specialCondition = 3;
2  int health=10;
3
4  while(health > 0) {
5    System.out.println(health);
6    health--;
7
8    if (specialCondition == 3) {
9      System.out.println("Special condition met!");
10      break;
11    }
12
13  }

گزاره Continue در حلقه‌های جاوا هم به‌طور مشابهی عمل می‌کند. با استفاده از گزاره Continue می‌توان به ابتدای حلقه بازگشت و از کدهایی که بعد از Continue آمده‌اند عبور کرد. استفاده از Continue می‌تواند برای حالتی مفید باشد که قصد اجتناب از ورود به گزاره‌های if تودرتو و پیچیده در داخل حلقه وجود داشته باشد.

علاوه بر موضوع‌های پوشش داده شده پیرامون حلقه در جاوا در این بخش از مقاله حلقه در برنامه نویسی ، موارد دیگری نظیر حلقه‌های تو در تو و استفاده از برچسب در حلقه‌های جاوا هم وجود دارند که از حوصله این مقاله خارج است و به احتمال زیاد در آینده مقاله‌ای جداگانه با پوشش این موارد برای موضوع حلقه در برنامه نویسی جاوا منتشر خواهد شد.

حلقه در برنامه نویسی کاتلین

در این بخش از آموزش حلقه در برنامه نویسی به انواع مختلف حلقه در برنامه نویسی کاتلین پرداخته شده است. در ادامه انواع حلقه‌هایی فهرست شده‌اند که در زبان برنامه نویسی کاتلین پشتیبانی می‌شوند:

  • repeat
  • for
  • while
  • do...while

حال در ادامه به شرح و آموزش گزاره Repeat در برنامه نویسی کاتلین پرداخته شده است.

حلقه Repeat در برنامه نویسی کاتلین

گزاره Repeat ساده‌ترین نوع حلقه‌های کاتلین به حساب می‌آید. اگر به سادگی تنها قصد تکرار عملیاتی به تعداد n   بار وجود داشته باشد، می‌توان در کاتلین از Repeat استفاده کرد.

مثال استفاده از حلقه Repeat در برنامه نویسی کاتلین

برای مثال در کدهای زیر عبارت «Hello World» دو بار با استفاده از گزاره Repeat در کاتلین چاپ شده است:

1repeat(2) {
2    println("Hello World")
3}

حلقه For در برنامه نویسی کاتلین

حلقه For در برنامه نویسی کاتلین برای تکرار و پیمایش در طول دنباله‌ای از مقادیر مورد استفاده قرار می‌گیرد. حلقه For در کاتلین بلوکی از گزاره‌ها (کدها) را برای هر یک مقدار در دنباله اجرا می‌کند.

سینتکس حلقه For در برنامه نویسی کاتلین

سینتکس حلقه For در زبان کاتلین به صورت زیر است:

1for (variableDeclaration 'in' expression) {
2    // block of statements
3}

با استفاده از حلقه For‌ در برنامه نویسی Kotlin می‌توان در طول یک ساختار قابل پیمایش مثل بازه (Range)، آرایه (Array) یا مجموعه (Collection) حرکت کرد و پیمایش انجام داد.

پیمایش در طول بازه‌ای از مقادیر در کاتلین

یک بازه (Range) دنباله‌ای از مقادیر به حساب می‌آید که از یک نقطه شروع، نقطه پایان و یک گام تشکیل شده است. در کاتلین، می‌توان با استفاده از ترکیب حلقه for و «اظهارهای بازه» (Range Expression) پیمایش انجام داد.

مثال پیمایش آرایه در کاتلین

برای آموزش و شرح نحوه پیمایش آرایه در کاتلین ابتدا در ادامه آرایه‌ای حاوی حروف صدادار ایجاد شده است:

1val vowels = arrayOf('a', 'e', 'i', 'o', 'u')

می‌توان با استفاده از حلقه For در برنامه نویسی کاتلین در آرایه فوق پیمایش انجام داد:

1for (vowel in vowels) {
2    println(vowel)
3}

حال در ادامه، پیمایش و تکرار در طول اندیس‌های آرایه انجام شده است. این کار را می‌توان در کاتلین از طریق پیمایش روی Property (خصیصه) به نام «indices» انجام داد:

1for (index in vowels.indices) {
2    println(vowels[index])
3}

خصیصه indices تنها اندیس‌های آرایه و آن نوعی از IntRang را بازمی‌گرداند که مي‌توان در آن پیمایش کرد. لازم است عنصرهای آرایه را به‌طور جداگانه با استفاده از اندیس‌های بازگشت داده شده دریافت کنیم.

در ادامه روشی جایگزین ارائه شده است که هم اندیس‌ها و هم عنصرها را به‌طور همزمان خروجی می‌دهد:

1for ((index, vowel) in vowels.withIndex()) {
2    println("The vowel at index $index is: $vowel")
3}

پیمایش لیست در کاتلین

لیست مجموعه‌ای از عناصر عمومی مرتب شده است که می‌تواند مقادیر تکراری هم داشته باشد. می‌توان از حلقه For در کاتلین برای پیمایش در عناصر یک لیست استفاده کرد. همچنین می‌توان به وسیله اندیس‌های عناصر لیست هم در آن پیمایش انجام داد.

مثال پیمایش Map در کاتلین

در این مثال ابتدا یک Map ساخته می‌شود که حاوی اسامی چند پایتخت است؛ این پایتخت‌ها با نام کشورشان کلیدگذاری شده‌اند:

1val capitalCityByCountry = mapOf("Netherlands" to "Amsterdam",
2  "Germany" to "Berlin", "USA" to "Washington, D.C.")

حالا می‌توان در طول اعضای Map ساخته شده در بالا پیمایش انجام داد و هم به کلید و هم به مقدار هر ورودی دسترسی داشت:

1for (entry in capitalCityByCountry) {
2    println("The capital city of ${entry.key} is ${entry.value}")
3}

برای پیمایش در طول کلیدهای Map در کاتلین می‌توان از خصیصه keys  استفاده کرد:

1for (country in capitalCityByCountry.keys) {
2    println(country)
3}

در اینجا در طول خصیصه keys تکرار انجام شده است  که خروجی آن مجموعه‌ای (Set) تنها قابل خواندن از کلیدهای Map مربوطه است. به‌طور مشابه، می‌توان در طول مقادیر Map نیز با استفاده از خصیصه values  پیمایش کرد:

1for (capitalCity in capitalCityByCountry.values) {
2    println(capitalCity)
3}

در نهایت، درست مثل پیمایش در آرایه‌ها و لیست‌ها، در زمان پیمایش در طول Map هم می‌توان از «اعلان‌های تخریب ساختار» (Destructing Declarations) استفاده کرد:

1for ((country, capitalCity) in capitalCityByCountry) {
2    println("The capital city of $country is $capitalCity")
3}

اعلان‌های تخریب ساختار حین پیمایش در Map، دسترسی لازم را به کلید و مقدار هر یک از اعضا می‌دهند. برای یادگیری بیشتر حلقه در کاتلین، استفاده از دوره رایگان آموزش حلقه‌ها و تکرار در زبان برنامه نویسی کاتلین به علاقه‌مندان پیشنهاد می‌شود:

جمع‌بندی

حلقه در برنامه نویسی مفهوم بسیار مهمی است که با استفاده از آن می‌توان فرایندهای تکراری را با کدنویسی کم‌تری پیاده‌سازی کرد. به کمک حلقه‌ها در برنامه نویسی قابلیت‌های عملکردی بسیاری قابل اجرا هستند که بدون حلقه امکان‌پذیر نبودند. برنامه نویسان با به‌کارگیری حلقه‌ها در برنامه‌ها می‌توانند کدهای خود را به میزان زیادی خلاصه‌تر کنند. انواع حلقه در برنامه نویسی وجود دارد که هر کدام برای کاربردهای خاصی مناسب‌تر هستند.

در این مقاله سعی شد به‌طور جامع به این سوال پاسخ داده شود که حلقه در برنامه نویسی چیست و سپس به سایر مباحث و موضوعات مهم پیرامون مفهوم حلقه در برنامه نویسی پرداخته شد. مثال‌های متعددی هم برای انواع حلقه در زبان‌های برنامه نویسی در این نوشتار مختلف ارائه شده‌اند.

بر اساس رای ۱۱ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
techtarget.comTutorialspointQuoraTechTermsVedantuProgramizAndroidauthority
۱ دیدگاه برای «حلقه در برنامه نویسی چیست؟ — تعریف، مفهوم و انواع به زبان ساده»

بسیار خوب و قابل استفاده بود متشکرم

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *