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

عملکرد دستور break در زبان های C++/C

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

در مورد اجرای روند حلقه ها قبلاً هم در مطالبی با عناوین عملکرد دستور continue در زبان های C++/C و معرفی ساختار انواع حلقه های تکرار در زبان C صحبت کرده ایم.

بیایید به بررسی دستور break بپردازیم و چند مثال ببینیم!

نحوه استفاده از دستور break در C++/C

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

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

استفاده از دستور break درون حلقه تکرار while

ما می توانیم دستور break را برای خروج از حلقه while به کار ببریم.

while(cond) {
    if (something)
        break;
    // Main body
}

به کد پایین دقت کنید.

 

#include <stdio.h>
 
int main() {
    int i = 0;
    while (i <= 10) {
        if (i == 5)
            break;
        printf("i = %d\n", i);
        i++;
    }
    printf("Outside the Loop\n");
    return 0;
}

 

در کد فوق به محض اینکه مقدار i برابر با ۵ می شود، دستور break درون شرط if اجرا می شود و اجرای حلقه تکرار به طور کامل متوقف می شود.

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

i = 0
i = 1
i = 2
i = 3
i = 4
Outside the Loop

به نظرم این کد به شکل واضحی رفتار دستور break درون حلقه را مشخص می کند.

مشابه آنچه در که برای حلقه while دیدیم، دستور break می تواند چرخه تکرار را برای حلقه do-while نیز بشکند.

اما به عنوان مثال بعد ما به سراغ حلقه for  می رویم.

استفاده از دستور break درون حلقه تکرار for

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

#include <stdio.h>
 
int main() {
    for (int i=0; i<10; i++) {
        if (i == 5)
            break;
        printf("i = %d\n", i);
    }
    printf("Outside the Loop\n");
    return 0;
}

خروجی این کد دقیقاً برابر با همان کد قبلی است چرا که ما به محض اینکه i == 5 می شود، از حلقه به طور کامل خارج می شویم.

استفاده از دستور break در ساختار Switch-Case

این نحوه استفاده از دستور break متفاوت از موارد قبلی است که در حلقه for و while دیدیم.

دستور switch دستوری است که با استفاده از دستور case های متوالی، مقادیر مختلف یک متغیر را به دستورات متناسب نوشته شده برای آن ها ربط دهد.

اگر مقدار فعلی یک متغیر با مقدار جلوی اولین case برابر باشد، بلوک دستورات مربوطه اجرا می شود؛ وگرنه case بعدی بررسی می شود و الی آخر به سمت پایین. در نهایت هم اگر مقدار وارد شده به دستور switch با هیچکدام از case ها برابر نبود، بلوک default در انتهای ساختار Switch-Case اجرا می شود.

اما بیایید اول یک نمونه ناصحیح از Switch-Case ببینیم. اشکال برنامه زیر از آنجا می آید که بعد از وارد شدن به بلوک دستورات یک case از دستور break برای خارج شدن از محدوده switch استفاده نشده و گزینه default هم اجرا می شود.

#include <stdio.h>
 
int main() {
    for (int i=0; i<=2; i++) {
        switch(i) {
            case 2:
            printf("i is equal to 2\n");
            default:
            printf("i is not equal to 2\n");
        }
    }
    return 0;
}

خروجی هم به صورت زیر است:

i is not equal to 2
i is not equal to 2
i is equal to 2
i is not equal to 2

دو خط آخر نباید با هم چاپ شوند. در واقع برای i برابر با ۲ دستور case 2 اجرا می شود اما چون دستور break استفاده نشده، بلوک کد default هم اجرا می شود.

پس راه حل این است که دستور break را در انتهای بلوک های کدهای درون switch اضافه کنیم.

#include <stdio.h>
 
int main() {
    for (int i=0; i<=2; i++) {
        switch(i) {
            case 2:
            printf("i is equal to 2\n");
            break; // Add break condition
            default:
            printf("i is not equal to 2\n");
            break; // Add break condition
        }
    }
    return 0;
}

البته در آخرین بلوک کد که برای بخش default تعریف شده، دستور break می تواند نیاید اما به عنوان تمرین سعی کنید همیشه در انتهای بلوک های داخل Switch-Case دستور break را اضافه کنید.

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

i is not equal to 2
i is not equal to 2
i is equal to 2

خب، تا به اینجای کار شما نحوه استفاده از دستور break درون Switch-Case را هم آموختید.

 

جمع بندی

در این مطلب آموزشی از وبسایت اوپن مایند یاد گرفتیم که چطور روند اجرای حلقه تکرار را با دستور break کنترل کنیم و همچنین دیدیم که در چه مواقعی و چگونه استفاده از break درون ساختار Switch-Case ضروری است.

مرجع

برای تهیه این آموزش از مطلب break Statement در Microsoft Docs استفاده شده است.

 

 

نوشته عملکرد دستور break در زبان های C++/C اولین بار در اوپن مایند. پدیدار شد.