তথ্য ও যোগাযোগ প্রযুক্তি • প্রোগ্রামিং ভাষা
তথ্য ও যোগাযোগ প্রযুক্তি প্রশ্ন
একটি জাদুঘরের টিকিট কাউন্টারে বয়সের ভিত্তিতে টিকিটের মূল্য নির্ধারণ করা হয়। ৫ বছরের কম বয়সীদের টিকিট বিনামূল্যে, ৫ থেকে ১২ বছর বয়সীদের জন্য অর্ধেক মূল্য এবং ১৩ বছর বা তার বেশি বয়সীদের পূর্ণ মূল্য। এর জন্য ফাহিম নিচের প্রোগ্রামটি লিখল।
#include <stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age >= 5) {
printf("Half price");
}
else if (age >= 13) {
printf("Full price");
}
else {
printf("Free");
}
return 0;
}
- ক)(1)
কন্ডিশনাল স্টেটমেন্ট কী?
- খ)(2)
একাধিক else if যুক্ত প্রোগ্রামে কোনো একটি শর্ত সত্য হলে বাকি শর্তগুলো পরীক্ষা করা হয় না কেন? ব্যাখ্যা কর।
- গ)(3)
উদ্দীপকের প্রোগ্রামে age এর মান যথাক্রমে 4, 9 ও 25 ইনপুট দিলে কী কী আউটপুট পাওয়া যাবে? ব্যাখ্যা কর।
- ঘ)(4)
উদ্দীপকের প্রোগ্রামটি কি সব বয়সের জন্য সঠিক টিকিটের মূল্য দেখাবে? যুক্তিসহ বিশ্লেষণ করে সঠিক প্রোগ্রামটি লেখ।
উত্তর ও ব্যাখ্যা
- ক)
AI-তৈরি নমুনা উত্তর যে স্টেটমেন্ট কোনো শর্ত পরীক্ষা করে শর্ত সত্য বা মিথ্যা হওয়ার উপর ভিত্তি করে প্রোগ্রামের নির্দিষ্ট অংশ এক্সিকিউট করে, তাকে কন্ডিশনাল স্টেটমেন্ট বলে। যেমন if, if-else, else if।
- খ)
AI-তৈরি নমুনা উত্তর if ও else if এর সারিতে প্রোগ্রাম উপর থেকে নিচের দিকে একটি একটি করে শর্ত পরীক্ষা করে। কোনো শর্ত সত্য হলে সেই ব্লকের ভেতরের কাজ এক্সিকিউট হয়। এই সারির সবগুলো else if ও else একই স্টেটমেন্টের অংশ হওয়ায় একটি ব্লক এক্সিকিউট হওয়ার পর কন্ট্রোল পুরো সারির বাইরে চলে যায়। তাই বাকি else if এর শর্ত আর পরীক্ষা করা হয় না। যেমন ইনপুট 75 হলে marks >= 80 মিথ্যা, marks >= 70 সত্য হওয়ায় সেখানেই কাজ শেষ হয়।
- গ)
AI-তৈরি নমুনা উত্তর age = 4: প্রথম শর্ত age >= 5 মিথ্যা। দ্বিতীয় শর্ত age >= 13 মিথ্যা। তাই else ব্লক চলবে। আউটপুট: Free।
age = 9: প্রথম শর্ত age >= 5 সত্য। তাই if ব্লক এক্সিকিউট হবে এবং বাকি শর্ত পরীক্ষা হবে না। আউটপুট: Half price।
age = 25: প্রথম শর্ত age >= 5 সত্য (25 >= 5)। তাই if ব্লক এক্সিকিউট হবে। দ্বিতীয় শর্ত পরীক্ষাই করা হবে না। আউটপুট: Half price। - ঘ)
AI-তৈরি নমুনা উত্তর প্রোগ্রামটি সব বয়সের জন্য সঠিক ফল দেবে না। কারণ প্রথম শর্ত age >= 5 কেবল ৫ থেকে ১২ বছরের জন্য নয়, ৫ বা তার বেশি সব বয়সের জন্যই সত্য হয়। ফলে ১৩ বছর বা তার বেশি বয়সী যেমন 25 বছরের কারও জন্যও প্রথম ব্লক এক্সিকিউট হয়ে Half price ছাপা হয়। দ্বিতীয় শর্ত age >= 13 কখনোই পরীক্ষা করা হয় না, কারণ age >= 13 সত্য হলে age >= 5 আগেই সত্য হয়ে যায়। অর্থাৎ Full price কখনোই ছাপা হবে না, যা ভুল।
এর কারণ হলো শর্তের ক্রম। বড় সীমার শর্ত আগে পরীক্ষা করতে হবে অথবা একটি পরিসীমা && দিয়ে বাঁধতে হবে।
সঠিক প্রোগ্রাম:#include <stdio.h> int main() { int age; scanf("%d", &age); if (age >= 13) { printf("Full price"); } else if (age >= 5) { printf("Half price"); } else { printf("Free"); } return 0; }পরীক্ষা: age = 25 হলে age >= 13 সত্য, আউটপুট Full price। age = 9 হলে প্রথম শর্ত মিথ্যা, age >= 5 সত্য, আউটপুট Half price। age = 4 হলে দুটি শর্তই মিথ্যা, আউটপুট Free। এখন তিন ধরনের বয়সের জন্যই সঠিক ফল পাওয়া যায়। বিকল্পভাবে else if (age >= 5 && age <= 12) লিখেও একই ফল পাওয়া যায়।
আরও প্রশ্ন অনুশীলন করতে অ্যাপে যাও