তথ্য ও যোগাযোগ প্রযুক্তি • প্রোগ্রামিং ভাষা
তথ্য ও যোগাযোগ প্রযুক্তি প্রশ্ন
একটি C প্রোগ্রামে শিক্ষার্থীর নম্বর অনুযায়ী গ্রেড নির্ণয়ের জন্য নিচের কোড লেখা হয়েছে-
int marks = 72;
if (marks >= 80)
{
printf("A+");
}
else if (marks >= 70)
{
printf("A");
}
else if (marks >= 60)
{
printf("A-");
}
else
{
printf("Fail");
}
- ক)(1)
কন্ডিশনাল এক্সপ্রেশন কী?
- খ)(2)
if এবং if-else স্টেটমেন্টের মধ্যে পার্থক্য ব্যাখ্যা করো।
- গ)(3)
উদ্দীপকের কোড রান করলে আউটপুট কী হবে? প্রতিটি শর্ত পরীক্ষা করে ব্যাখ্যা করো।
- ঘ)(4)
marks এর মান 80 এবং 55 হলে কোডটির আউটপুট কী হবে বিশ্লেষণ করো। প্রতিটি শর্ত আলাদা if স্টেটমেন্ট দিয়ে লিখলে marks = 85 এর জন্য কী সমস্যা হতো? এর আলোকে else if chain ব্যবহারের যৌক্তিকতা মূল্যায়ন করো।
উত্তর ও ব্যাখ্যা
- ক)
AI-তৈরি নমুনা উত্তর যে এক্সপ্রেশন ব্যবহার করে শর্ত তৈরি করা হয় এবং যা এক্সিকিউট হলে ফলাফল সত্য (True) অথবা মিথ্যা (False) হয়, তাকে কন্ডিশনাল এক্সপ্রেশন বলে।
- খ)
AI-তৈরি নমুনা উত্তর if স্টেটমেন্টে কন্ডিশনাল এক্সপ্রেশন সত্য হলে কেবল if ব্লকের কোড এক্সিকিউট হয়। শর্ত মিথ্যা হলে কোনো কাজ হয় না এবং আউটপুটে কিছুই দেখা যায় না। অন্যদিকে if-else স্টেটমেন্টে শর্ত সত্য হলে if ব্লকের কাজ হয় এবং শর্ত মিথ্যা হলে else ব্লকের কাজ হয়। অর্থাৎ if-else-এ দুই ক্ষেত্রেই নির্দিষ্ট কাজ সম্পাদনের ব্যবস্থা থাকে।
- গ)
AI-তৈরি নমুনা উত্তর marks = 72।
প্রথমে marks >= 80, অর্থাৎ 72 >= 80 পরীক্ষা করা হবে। এটি মিথ্যা, তাই প্রথম ব্লক এক্সিকিউট হবে না।
এরপর else if (marks >= 70), অর্থাৎ 72 >= 70 পরীক্ষা করা হবে। এটি সত্য, তাই এই ব্লকের printf("A"); এক্সিকিউট হবে।
else if chain-এ যে ব্লকের শর্ত সত্য কেবল সেই ব্লকের কোড এক্সিকিউট হয়, অন্য কোনো ব্লক এক্সিকিউট হয় না। তাই পরবর্তী শর্ত (marks >= 60) পরীক্ষা হবে না এবং else ব্লকও চলবে না।
সুতরাং আউটপুট হবে: A - ঘ)
AI-তৈরি নমুনা উত্তর marks = 80: প্রথম শর্ত 80 >= 80 সত্য। তাই প্রথম ব্লক এক্সিকিউট হবে এবং আউটপুট হবে A+। বাকি কোনো শর্ত পরীক্ষা হবে না।
marks = 55: 55 >= 80 মিথ্যা, 55 >= 70 মিথ্যা, 55 >= 60 মিথ্যা। কোনো শর্তই সত্য না হওয়ায় সবশেষের else ব্লক এক্সিকিউট হবে এবং আউটপুট হবে: Fail।
আলাদা if ব্যবহার করলে: ধরা যাক প্রতিটি শর্ত আলাদা if স্টেটমেন্টে লেখা হয়েছে। marks = 85 হলে 85 >= 80, 85 >= 70 এবং 85 >= 60 তিনটি শর্তই সত্য হবে। ফলে তিনটি printf-ই এক্সিকিউট হয়ে A+, A ও A- একসাথে প্রিন্ট হবে। একজন শিক্ষার্থীর একসাথে তিনটি গ্রেড হতে পারে না, তাই এটি ভুল ফলাফল।
মূল্যায়ন: else if chain-এ একটি ব্লকের শর্ত সত্য হলেই কেবল সেই ব্লক চলে, বাকিগুলো বাদ পড়ে। তাই একটি ইনপুটের জন্য ঠিক একটি গ্রেডই পাওয়া যায় এবং শেষের else অন্য সব ক্ষেত্র সামলায়। অতএব একটির পর একটি শর্ত পরীক্ষা করে একটিমাত্র ফল নির্ণয়ের ক্ষেত্রে else if chain ব্যবহারই যুক্তিযুক্ত।
আরও প্রশ্ন অনুশীলন করতে অ্যাপে যাও