তথ্য ও যোগাযোগ প্রযুক্তি • প্রোগ্রামিং ভাষা

তথ্য ও যোগাযোগ প্রযুক্তি প্রশ্ন

রিনা একটি মাটির ব্যাংকে প্রতিদিন কিছু কয়েন জমায়। প্রথম দিন সে ৫ টাকা জমায়, দ্বিতীয় দিন ১০ টাকা, তৃতীয় দিন ১৫ টাকা, এভাবে প্রতিদিন আগের দিনের চেয়ে ৫ টাকা বেশি জমায়। হিসাব রাখার জন্য সে নিচের প্রোগ্রামটি লিখেছে।

#include <stdio.h>
int main()
{
    int n, sum;
    sum = 0;
    n = 5;
    while (n <= 50) {
        sum = sum + n;
        n = n + 5;
    }
    printf("Total: %d", sum);
    return 0;
}
  1. ক)

    লুপ স্টেটমেন্ট কী?

    (1)
  2. খ)

    উদ্দীপকের প্রোগ্রামে sum = 0; স্টেটমেন্টটি লেখা হয়েছে কেন? ব্যাখ্যা কর।

    (2)
  3. গ)

    উদ্দীপকের প্রোগ্রামটির আউটপুট নির্ণয় কর। লুপটি কতবার চলবে তাও উল্লেখ কর।

    (3)
  4. ঘ)

    উদ্দীপকের প্রোগ্রামটি for লুপ ও do-while লুপ ব্যবহার করে লেখ। n এর প্রারম্ভিক মান 60 হলে while ও do-while লুপের আউটপুটে কী পার্থক্য হবে, তা বিশ্লেষণ কর।

    (4)

উত্তর ও ব্যাখ্যা

  1. ক)

    AI-তৈরি নমুনা উত্তর একই কাজ বারবার করার জন্য প্রোগ্রামিং ভাষায় যে স্টেটমেন্ট ব্যবহার করা হয়, তাকে লুপ স্টেটমেন্ট বলে। সি ভাষায় while, do-while ও for এই তিন ধরনের লুপ আছে।

  2. খ)

    AI-তৈরি নমুনা উত্তর কোনো ভ্যারিয়েবল ডিক্লেয়ার করার সময় তাতে কোনো নির্দিষ্ট মান দেওয়া থাকে না, সেখানে যেকোনো অনির্দিষ্ট গারবেজ মান থাকতে পারে। উদ্দীপকে sum = sum + n স্টেটমেন্টে sum এর আগের মান n এর সাথে যোগ হয়। sum এর শুরুতে 0 না থাকলে গারবেজ মানের সাথে যোগ হয়ে ভুল ফল আসত। sum = 0 দেওয়ায় প্রথমবার 0 + 5 = 5 হয় এবং সঠিকভাবে যোগফল জমতে থাকে। তাই sum এর প্রারম্ভিক মান 0 দেওয়া আবশ্যক।

  3. গ)

    AI-তৈরি নমুনা উত্তর n এর মান শুরুতে 5 এবং প্রতিবার 5 করে বাড়ছে। শর্ত n <= 50। অতএব n এর মান হবে 5, 10, 15, 20, 25, 30, 35, 40, 45, 50। n = 55 হলে শর্ত মিথ্যা হবে এবং লুপ থেকে বের হবে। সুতরাং লুপটি ১০ বার চলবে।
    sum = 5 + 10 + 15 + 20 + 25 + 30 + 35 + 40 + 45 + 50 = 5 × (1 + 2 + ... + 10) = 5 × 55 = 275।
    অতএব আউটপুট হবে: Total: 275

  4. ঘ)

    AI-তৈরি নমুনা উত্তর for লুপ ব্যবহার করে:

    #include <stdio.h>
    int main()
    {
        int n, sum;
        sum = 0;
        for (n = 5; n <= 50; n = n + 5) {
            sum = sum + n;
        }
        printf("Total: %d", sum);
        return 0;
    }
    

    do-while লুপ ব্যবহার করে:

    #include <stdio.h>
    int main()
    {
        int n, sum;
        sum = 0;
        n = 5;
        do {
            sum = sum + n;
            n = n + 5;
        } while (n <= 50);
        printf("Total: %d", sum);
        return 0;
    }
    

    দুটি প্রোগ্রামেই আউটপুট Total: 275।
    পার্থক্য বিশ্লেষণ (n = 60): while লুপ শুরুতেই শর্ত পরীক্ষা করে। n <= 50 অর্থাৎ 60 <= 50 মিথ্যা হওয়ায় লুপের ভেতরের কাজ একবারও হবে না। sum = 0 থেকে যাবে এবং আউটপুট হবে Total: 0। অপরদিকে do-while লুপে শর্ত লুপের কাজ হওয়ার পর পরীক্ষা করা হয়। তাই শর্ত মিথ্যা হলেও ব্লকটি একবার এক্সিকিউট হবে। sum = 0 + 60 = 60 হবে, n হবে 65, তখন শর্ত মিথ্যা হয়ে লুপ শেষ হবে। আউটপুট হবে Total: 60।
    অতএব while একটি এন্ট্রি কন্ট্রোলড লুপ, আর do-while একটি এক্সিট কন্ট্রোলড লুপ, যা কমপক্ষে একবার চলবেই। শর্ত শুরুতেই মিথ্যা হলে দুটির আউটপুট আলাদা হয়, নইলে একই হয়।

আরও প্রশ্ন অনুশীলন করতে অ্যাপে যাও