নিচের উদ্দীপকের পড়ঃ #include #include void main( ) int n, i, s; scanf("%d", & n); s = 0; for (i=1;i<=n;i++); s=s+i; printf("%d", s); getch ( ); প্রোগ্রামটি রান করালে এবং কী বোর্ডে 10 টাইপ করলে কত ফলাফল পাওয়া যাবে?
ক. 25
খ. 30
গ. 55
ঘ. 165
উত্তর: 55
ব্যাখ্যা: প্রোগ্রামটিতে `for` লুপের শেষে একটি সেমিকোলন (`;`) থাকায় লুপটি আসলে কোনো কাজ করে না। তাই `i` এর মান `n+1` হয়ে যায় (এখানে `i` এর মান 11 হয়)। এরপর `s = s + i` লাইনে `s` এর প্রাথমিক মান 0 এর সাথে `i` এর শেষ মান 11 যোগ হয়, ফলে `s` এর মান 11 প্রিন্ট হয়। তবে, যদি `for (i=1; i<=n; i++);` এর সেমিকোলনটি না থাকত, অর্থাৎ `for (i=1; i<=n; i++) s=s+i; ` এমন থাকত, তবে এটি 1 থেকে `n` পর্যন্ত সংখ্যাগুলোর যোগফল বের করত। এক্ষেত্রে `n=10` হলে যোগফল হতো [গণিত] । প্রশ্ন এবং অপশন দেখে মনে হচ্ছে প্রশ্নকর্তা এই দ্বিতীয় পরিস্থিতিটিই বোঝাতে চেয়েছেন, যেখানে যোগফল 55 হবে। সাধারণত এই ধরণের লুপে সেমিকোলন ব্যবহার করলে তা একটি সাধারণ ভুল হিসেবে ধরা হয় এবং এর ফলে আউটপুট ভিন্ন হয়। তবে, অনেক সময় শিক্ষাক্ষেত্রে এই ধরণের প্রশ্ন থেকে লুপের সঠিক ব্যবহার যাচাই করার জন্য একটি ভুল লুপসহ প্রশ্ন করা হয়। এখানে `for` লুপের শেষে `;` থাকার কারণে লুপ বডির ভিতরের `s=s+i` এই স্টেটমেন্টটি এক্সিকিউট হয় না। যখন `i` এর মান 11 হয়, তখন লুপ টার্মিনেট করে। এরপর `s=s+i` এক্সিকিউট হয়, যেখানে `s` এর মান 0 এবং `i` এর মান 11, তাই `s` এর মান 11 হয়। কিন্তু অপশনে 11 নেই। প্রশ্নটির অপশন দেখে এবং প্রোগ্রামিংয়ের সাধারণ কনভেনশন অনুসারে, ধরে নেওয়া যায় যে `for` লুপের শেষে সেমিকোলনটি একটি টাইপিং ভুল এবং এর উদ্দেশ্য ছিল 1 থেকে 10 পর্যন্ত সংখ্যাগুলির যোগফল বের করা। সেই হিসাবে, `n=10` হলে যোগফল হবে 55।
HSC ICT Chapter 5 : প্রোগ্রামিং ভাষা MCQ — Prosthuti প্রশ্নব্যাংক
HSC · ICT · Chapter 5 : প্রোগ্রামিং ভাষা · MCQ
নিচের উদ্দীপকের পড়ঃ #include #include void main( ) { int n, i, s; {scanf("%d", & n); s = 0; for (i=1;i<=n;i++); s=s+i; printf("%d", s); getch ( ); } প্রোগ্রামটি রান করালে এবং কী বোর্ডে 10 টাইপ করলে কত ফলাফল পাওয়া যাবে?
- ক.25
- খ.30
- গ.55
- ঘ.165
উত্তর