HOME C প্রোগ্রামিং লুপ ও ফ্লোচার্ট
#include<stdio.h>

int main()
{
    int i, N, sum = 0;

    printf("\n Enter last number of the series:");
    scanf("%d", &N);

    for(i = 2; i <= N; i = i + 2)
    {
        sum = sum + i * i;
    }

    printf("%d", sum);

    return 0;
}
Rajshahi • 2025
ক) অবজেক্ট প্রোগ্রাম কী?
খ) math.h ফাইলটি ব্যাখ্যা কর।
গ) উদ্দীপকের প্রোগ্রামটির ফ্লোচার্ট আঁক।
ঘ) উদ্দীপকের কোডে ব্যবহৃত লুপের পরিবর্তে do while লুপ ব্যবহার করে প্রোগ্রামটি তৈরি করা সম্ভব- বিশ্লেষণ কর।

সমাধান (Solution)

ক) অবজেক্ট প্রোগ্রাম কী?
অনুবাদক প্রোগ্রাম (যেমন: কম্পাইলার বা ইন্টারপ্রিটার) ব্যবহার করে সোর্স প্রোগ্রামকে বা উচ্চস্তরের ভাষাকে যান্ত্রিক ভাষায় (০ এবং ১) রূপান্তর করার পর যে প্রোগ্রাম পাওয়া যায়, তাকে অবজেক্ট প্রোগ্রাম বা বস্তু প্রোগ্রাম বলা হয়।

খ) math.h ফাইলটি ব্যাখ্যা কর।
C প্রোগ্রামে গাণিতিক জটিল হিসাব-নিকাশ (যেমন: বর্গমূল, পাওয়ার, সাইন, কস ইত্যাদি) সম্পন্ন করার জন্য যে লাইব্রেরি ফাংশনগুলো ব্যবহৃত হয়, সেগুলো math.h নামক হেডার ফাইলে সংরক্ষিত থাকে। প্রোগ্রামে sqrt(), pow(), abs() এর মতো ফাংশন ব্যবহার করতে হলে অবশ্যই প্রোগ্রামের শুরুতে #include <math.h> যুক্ত করতে হয়।

গ) উদ্দীপকের প্রোগ্রামটির ফ্লোচার্ট
উদ্দীপকের কোডটি মূলত একটি ধারার সমষ্টি নির্ণয়ের প্রোগ্রাম: $2^2 + 4^2 + 6^2 + ... + N^2$। নিচে এর ফ্লোচার্ট দেওয়া হলো:

১. শুরু (Start): প্রোগ্রাম শুরু করি।
২. ইনপুট (Input): N এর মান গ্রহণ করি।
৩. ইনিশিয়ালাইজেশন: sum = 0 এবং i = 2 ধরি।
৪. সিদ্ধান্ত (Decision): যদি $i \le N$ হয়, তবে ধাপ ৫-এ যাই। না হলে ধাপ ৭-এ যাই।
৫. প্রসেস (Process): $\sum = \sum + i \times i$ এবং $i = i + 2$ করি।
৬. লুপ: পুনরায় ধাপ ৪-এ ফিরে যাই।
৭. আউটপুট: sum এর মান প্রদর্শন করি।
৮. শেষ (End): প্রোগ্রাম শেষ করি।

ঘ) do-while লুপ ব্যবহার করে প্রোগ্রামটির বিশ্লেষণ
উদ্দীপকের কোডটিতে for লুপ ব্যবহার করা হয়েছে। এটি অবশ্যই do-while লুপ ব্যবহার করে তৈরি করা সম্ভব। নিচে এর প্রোগ্রাম এবং বিশ্লেষণ দেওয়া হলো:

do-while লুপ ব্যবহার করে কোড:
#include <stdio.h>

int main() {
int i = 2, N, sum = 0;
printf("Enter last number of the series: ");
scanf("%d", &N);

if (N >= 2) {
do {
sum = sum + (i * i);
i = i + 2;
} while (i <= N);
}

printf("Sum is: %d", sum);
return 0;
}

বিশ্লেষণ:
১. গঠনগত পরিবর্তন:for লুপে ইনিশিয়ালাইজেশন, কন্ডিশন এবং ইনক্রিমেন্ট একই লাইনে থাকে। কিন্তু do-while লুপে ইনিশিয়ালাইজেশন লুপের বাইরে, ইনক্রিমেন্ট লুপের ভেতরে এবং কন্ডিশন লুপের শেষে থাকে।
২. কার্যপদ্ধতি:do-while লুপ অন্তত একবার লুপের ভেতরের কাজ সম্পন্ন করে তারপর শর্ত যাচাই করে। উদ্দীপকের ক্ষেত্রে প্রথম পদ ২ হওয়ায় শর্ত পূরণ সাপেক্ষে এটি for লুপের মতোই নির্ভুল ফলাফল দিবে।
৩. যৌক্তিকতা: যেকোনো for লুপকে while বা do-while লুপে রূপান্তর করা যায়। এখানেও একই লজিক কাজ করছে, তাই প্রোগ্রামটি তৈরি করা সম্ভব এবং এটি একই ফলাফল প্রদান করবে।