منبع اصلی نوشتار زیر در این لینک قرار دارد

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

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

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

نمودار زیر نحوه پردازش یک حلقه را ترسیم کرده است.

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

مطابق نمودار بالا، اگر شرط بررسی حلقه (Test Condition) صحیح باشد ، حلقه اجرا می شود ، و اگر غلط باشد ، کنترل اجرای برنامه از حلقه خارج می شود. پس از اجرای موفقیت آمیز دستورات بدنه حلقه، اجرای حلقه دوباره از بخش Loop Entry شروع می شود و دوباره شرط را بررسی می کند ، و این چرخه ادامه می یابد.

دنباله دستورات داخل که باید اجرا شوند درون کمانک آکولاد باز و بسته قرار می گیرند

{ }
که بدنه حلقه نامیده می شوند. پس از هر بار اجرای بدنه حلقه ، شرط حلقه درستی آزمایی می شود و در صورت صحیح (true) بودن ، دوباره بدنه حلقه اجرا می شود. هنگامی که بررسی شرط به وضعیت ناصحیح (false) ختم شود، بدنه حلقه دیگر اجرا نمی شود و کنترل اجرای برنامه به سراغ دستورات بعدی پس از حلقه می رود.

انواع حلقه تکرار

سه نوع حلقه در زبان C وجود دارد.

  1. حلقه while
  2. حلقه for
  3. حلقه do while

حلقه while

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

variable initialization;
while(condition)
{
    statements;
    variable increment or decrement; 
}

مثال زیر ده عدد نخست از اعداد طبیعی را به کمک حلقه while نمایش می دهد.

#include<stdio.h>

void main( )
{
    int x;
    x = 1;
    while(x <= 10)
    {
        printf("%d\t", x);
        /* below statement means, do x = x+1, increment x by 1*/
        x++;
    }
}

که خروجی آن به شکل روبروست:

1 2 3 4 5 6 7 8 9 10

 

حلقه for

حلقه for مجموعه دستورات بدنه را تا زمانی که شرط حلقه درست باشد، اجرا می کند. شکل کلی آن به صورت زیر است:

for(initialization; condition; increment/decrement)
{
    statement-block;
}

جلوی کلمه کلیدی for ما دقیقاً دو سمی کالن (;) داریم؛ یکی بعد از مقداردهی اولیه (initialization) و دومی بعد از شرط. در این حلقه تکرار، ما می توانیم بیشتر از یک متغیر را مقدار دهی و یا زیاد و کم کنیم که می بایست آن ها با عملگر کاما جدا شوند. اما قسمت شرط یکپارچه و منفرد است و نمی توان در میان آن کاما گذاشت.

حلقه for به ترتیب زیر اجرا می شود:

  1. اول و تنها یکبار بخش تعریف و مقداردهی اولیه ارزیابی و پردازش می شود.
  2. سپس بعد شرط منطقی حلقه ارزیابی و پردازش می شود.
  3. اگر نتیجه بررسی صحیح باشد، کد (های) بدنه شرط اجرا می شود.
  4. سپس بخش افزایش یا کاهش حلقه اجرا می شود و به مرحله شماره ۲ باز می گردد.
  5. زمانی که دیگر شرط حلقه صحیح نباشد و مقدار آن false شود، اجرا از حلقه خارج می شود.

 

مثال زیر ده عدد نخست از اعداد طبیعی را به کمک حلقه for در زبان C نمایش می دهد.

#include<stdio.h>

void main( )
{
    int x;
    for(x = 1; x <= 10; x++)
    {
        printf("%d\t", x);
    }
}

همچنین می توانیم حلقه for تودرتو را به کار بگیریم. مثال زیر یک مثلث از تعدادی عدد را نمایش می دهد.

#include<stdio.h>

void main( )
{
    int i, j;
    /* first for loop */
    for(i = 1; i < 5; i++)
    {
        printf("\n");
        /* second for loop inside the first */
        for(j = i; j > 0; j--)
        {
            printf("%d", j);
        }
    }
}

خروجی آن به شکل زیر است:

1
21
321
4321
54321

 

حلقه do while

در بعضی مواقع لازم است قبل از بررسی شرط حلقه، بدنه حلقه ابتدا بدون قید و شرط اجرا شود. چنین چیزی را می توان با کمک حلقه do-while پیاده سازی کرد. نخست دستوراتی که پس از کلمه کلیدی do می آیند و اصطلاحاً بدنه حلقه هستند، ارزیابی و اجرا می شوند و در پایان، شرط حلقه در جلوی دستور while بررسی می شود. این بدان معنی است که بدنه حلقه حداقل یک بار اجرا می شود، حتی اگر در ابتدای کار شرط جلوی while در صورت ارزیابی مقدار نادرست (false) داشته باشد.

نوشتار کلی حلقه do while به صورت زیر است:

do
{
    .....
    .....
}
while(condition)

مثال زیر ده مضرب نخست عدد پنج را نمایش می دهد.

#include<stdio.h>

void main()
{
    int a, i;
    a = 5;
    i = 1;
    do
    {
        printf("%d\t", a*i);
        i++;
    } 
    while(i <= 10);
}

و خروجی اجرای کد زیر به شکل روبروست:

5 10 15 20 25 30 35 40 45 50

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

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

۱) دستور break

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

خارج شدن از حلقه تکرار با دستور break در زبان C

خارج شدن از حلقه تکرار با دستور break

۲) دستور continue

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

به کد و نمودار زیر دقت کنید:

کاربرد دستور continue در حلقه در زبان C

کاربرد دستور continue در حلقه در زبان C