for লুপ ব্যবহার করে 1 থেকে n পর্যন্ত সংখ্যাগুলোর যোগফল নির্ণয়ের C program
Q8. for লুপ ব্যবহার করে 1 থেকে n পর্যন্ত স্বাভাবিক সংখ্যার যোগফল নির্ণয়ের C প্রোগ্রাম লিখ।
#include<stdio.h> #include<conio.h> int main() { int i, n, s=0; printf("Enter any integer number: \n"); scanf("%d", &n); for(i=1; i<=n; i++) s=s+i; printf("The sum of numbers from 1 to %d is %d", n, s); }
উপরের প্রোগ্রামটি ভালভাবে বোঝার জন্ ভিজিট করুনঃ
https://physicsplusict.com/123-ns-হলে-s-এর-মান-নির্ণয়ের-c-program/
ব্যাখ্যাঃ
(১) int i,n; এর মাধ্যমে i, n, s নামের integer টাইপের তিনটি চলক ঘোষণা করা হয়েছে। এবং s এর শুরু মান 0 নির্ধারণ করা হয়েছে।
(২) printf(“Enter any integer number: \n”); এই স্টেটমেন্টের মাধ্যমে আউটপুটে Enter any integer number: লেখা দেখা যাবে। Enter any integer number: লেখাটি ইউজারের জন্য একটি নির্দেশনা। ইউজার কি বোর্ডের মাধ্যমে একটি সংখ্যা ইনপুট দিবে।
(৩) scanf(“%d”, &n); এর মাধ্যমে ইউজার কর্তৃক প্রদত্ত সংখ্যাটি n এর মেমরি এড্রেসে সংরক্ষিত হবে। ধরা যাক, ইউজার কিবোর্ড থেকে 100 ইনপুট দিল। ফলে n=100 হবে।
(৪) for(i=1; i<=n; i++)
s=s+i;
printf(“The sum of numbers from 1 to %d is %d”, n, s);
এর মাধ্যমে আউটপুটে 1 থেকে n পর্যন্ত স্বাভাবিক সংখ্যাগুলোর যোগফল অর্থাৎ 1 থেকে 100 পর্যন্ত স্বাভাবিক সংখ্যাগুলোর যোগফল (5050) প্রদর্শিত হবে।
এখানে বলে রাখা দরকার যে, for লুপ সংশ্লিষ্ট statement টি হল s=s+i; অর্থাৎ, এই for লুপের সাহায্যে s=s+i; স্টেটমেন্টটিকে 100 বার রান করানো হবে। কিন্তু printf(“The sum of numbers from 1 to %d is %d”, n, s); স্টেটমেন্টটি for লুপের সাথে সংশ্লিষ্ট নয় বলে সেটি লুপ শেষে 1 বার কার্যকর হবে।
উপরের for লুপের iteration steps (ধাপসমূহ) নিচে উল্লেখ করা হল-
ধাপ-১: ধাপ-১ এর শুরুতে i এর মান 1 হবে অর্থাৎ i=1 এবার কম্পাইলার i<=n; কে এভাবে ইন্টারপ্রিট করবে:
i কী n এর চেয়ে ছোট অথবা সমান?
বা 1 কী 100 এর চেয়ে ছোট অথবা সমান?
উত্তরঃ সত্য।
উত্তর সত্য বলে কম্পাইলার for সংশ্লিষ্ট statement অর্থাৎ s=s+i; কে কার্যকর করবে।
s=s+i;
বা, s=0+1=1 হবে [কারণ, s=0, i=1]
এরপর i++ এর কারণে i এর মান 1 থেকে বৃদ্ধি পেয়ে 2 হবে। এবং ধাপ-১ এর সমাপ্তি ঘটবে।
ধাপ-২: ধাপ-২ এর শুরুতে i এর মান 2 হবে অর্থাৎ i=2 এবার কম্পাইলার i<=n; কে এভাবে ইন্টারপ্রিট করবে:
i কী 100 এর চেয়ে ছোট অথবা সমান?
বা 2 কী 100 এর চেয়ে ছোট অথবা সমান?
উত্তরঃ সত্য।
উত্তর সত্য বলে কম্পাইলার for সংশ্লিষ্ট statement অর্থাৎ s=s+i; কে কার্যকর করবে।
s=s+i;
বা, s=1+2=3 হবে [কারণ, s=1, i=2]
এরপর i++ এর কারণে i এর মান 2 থেকে বৃদ্ধি পেয়ে 3 হবে। এবং ধাপ-২ এর সমাপ্তি ঘটবে।
… (ধাপ চলমান)
এভাবে প্রতি ধাপে i এর মান এক এক করে বৃদ্ধি পাবে এবং বৃদ্ধি পাবার পর সেই i এর মান s এর সাথে যোগ হবে এবং যোগফল আবার s এর মধ্যে জমা হবে। অর্থাৎ s এর নতুন মান হবে s এর পূর্ববর্তী মান এবং i এর নতুন মানের যোগফল।
এভাবে i এর মান বৃদ্ধি পেয়ে যখন i=101 হবে তখন i<=n; কন্ডিশনটি মিথ্যা হবে এবং for লুপের কার্যক্রম শেষ হবে। for লুপের কার্যক্রম শেষ হওয়া মাত্রই printf(“The sum of numbers from 1 to %d is %d”, n, s); স্টেটমেন্ট কার্যকর হবে এবং The sum of numbers from 1 to %d is %d লেখাটি প্রদর্শিত হবার কথা। কিন্তু আউটপুটে %d %d দেখা যাবে না। প্রথম %d এর পরিবর্তে n এর মান অর্থাৎ 100 এবং দ্বিতীয় %d এর পরিবর্তে s এর সর্বশেষ মান অর্থাৎ 5050 প্রদর্শিত হবে। আউটপুট দেখতে নিম্নরুপ হবে-
আউটপুটঃ
Enter any integer number:
100
The sum of numbers from 1 to 100 is 5050