সূচিপত্র

continue

ধরা যাক, আমাদের কাছে নামতা লেখার একটা কোড আছে। কোডটা নিচের মত।

#include <stdio.h>
int main() {
    int i, num = 7;
    for (i=1; i<=10; i++) {
        printf("%d x %d = %d\n", num, i, num*i);
    }
    return 0;
}

তো খুব ভাল কথা। এটা রান করলেই সাতের নামতা প্রিন্ট হয়ে যাবে। এখন আমাদের ইচ্ছে হল আমরা 7 x 7 = 49 লাইনটা প্রিন্ট করবো না। বাকি সব লাইন প্রিন্ট করবো। কাজটা কীভাবে করা যায়? ইনক্রিমেন্ট কি এমনভাবে করা যায় যে, সেটা ১, ২ ,৩ , ৪, ৫, ৬, ৮, ৯, ১০ সবই হবে, শুধু সাত হবে না? না, এভাবে কাজটা সম্ভব না। তাহলে কি আমরা লুপ ব্যবহার না করে নয় লাইন লিখবো বসে বসে? না, তার দরকার নেই। এক্ষেত্রে আমাদেরকে সাহায্য করবে control স্টেটমেন্ট। আমরা শুধু আমাদের লুপের মধ্যে একটি নতুন লাইন জুড়ে দিব।

#include <stdio.h>
int main() {
    int i, num = 7;
    for (i=1; i<=10; i++) {
        if (i==7) { 
            continue;
        }
        printf("%d x %d = %d\n", num, i, num*i);
    }
    return 0;
}

এখন যা হবে, তা হল যখনই i = 7 হবে, তখন কম্পাইলার দেখবে তাকে continue করতে বলা হচ্ছে। সে তখন নিচের কাজগুলো (নিচে প্রিন্ট করতে বলা হয়েছে) না করেই পরের লুপে চলে যাবে। অর্থাৎ i = 8 বানিয়ে দিবে। কোডটা রান করলেই ব্যাপারটা দেখতে পাবে।

Snap 2015-09-09 at 15.48.10

খেয়াল কর, এখানে লুপের কোথায় continue বসিয়েছি সেটা অনেক গুরুত্বপূর্ণ। আমরা যদি প্রিণ্ট করার পর continue-এর ব্যাপারটা লিখতাম, তাহলে কোনো কাজই হত না!

#include <stdio.h>
int main() {
    int i, num = 7;
    for (i=1; i<=10; i++) {
        printf("%d x %d = %d\n", num, i, num*i);
        if (i==7) continue;
    }
    return 0;
}

রান করেই দেখ!

/* ও আচ্ছা, বলা হয় নি! যদি কখনো if বা for-এর ব্লকের ভেতরে শুধু একটি মাত্র স্টেটমেন্ট থাকে, তখন সেকেন্ড ব্র্যাকেট দিয়ে সেটা আলাদা না করলেও চলে। যেমন এখানে আমরা if-এর ব্লকটা সেকেন্ড ব্র্যাকেট দিয়ে আলাদা করিনি! */

break

continue পেলে লুপটা নিচের কাজ না করে পরের লুপে চলে যায়। অপর দিকে break পেলে লুপটা একেবারেই ভেঙ্গে দেয়! যেমন আমরা আমাদের আগের কোডেই যদি continue-এর পরিবর্তে break লিখি…

#include <stdio.h>
int main() {
    int i, num = 7;
    for (i=1; i<=10; i++) {
        if (i==7) break; // single statement, tai second bracket lagbe na
        printf("%d x %d = %d\n", num, i, num*i);
    }
    return 0;
}

এখন যা হবে তা হল, i=7-এর লুপে ধুকে শর্তটা পূরণ হয়ে যাবে, তখন কম্পাইলার লুপটা ব্রেক করে দিবে। তাই নামতা প্রিন্ট হবে 6 পর্যন্ত!

Snap 2015-09-09 at 15.54.57

কিন্তু আমরা যদি ব্রেক স্টেটমেন্টটা প্রিন্ট করার আগে না দিয়ে প্রিন্ট করার পরে দি…

#include <stdio.h>
int main() {
    int i, num = 7;
    for (i=1; i<=10; i++) {
        printf("%d x %d = %d\n", num, i, num*i);
        if (i==7) break; 
    }
    return 0;
}

এক্ষেত্রে প্রথমে i=7-এর জন্য প্রিন্ট হয়ে যাবে, এরপর লুপ ব্রেক করবে!

Snap 2015-09-09 at 15.56.27

আমরা লুপের শর্তের কাজটাও ব্রেক স্টেটমেন্ট দিয়ে করে ফেলতে পারি!

#include <stdio.h>
int main() {
    int i=1, num = 7;
    for ( ; ; ) {
        printf("%d x %d = %d\n", num, i, num*i);
        i++;
        if (i==11) break;
    }
    return 0;
}

মজার না? :p

Muntasir Wahed

Muntasir Wahed

System Administrator at স্বশিক্ষা.com
Jack of all trades, master of none.
Muntasir Wahed
Muntasir Wahed