তথ্য ও যোগাযোগ প্রযুক্তি • প্রোগ্রামিংয়ের মাধ্যমে সমস্যার সমাধান
তথ্য ও যোগাযোগ প্রযুক্তি প্রশ্ন
একটি স্কুলে শিক্ষার্থীদের গ্রেড অনুযায়ী মন্তব্য দেখানোর জন্য নিচের পাইথন প্রোগ্রামটি ব্যবহার করা হয়।
grade = input('Enter grade: ')
match grade:
case 'A':
print('Excellent')
case 'B':
print('Good')
case 'C':
print('Average')
case _:
print('Invalid grade')
স্কুলের কম্পিউটার শিক্ষক লক্ষ করলেন, কিছু শিক্ষার্থী ছোট হাতের অক্ষরে গ্রেড লিখলে প্রোগ্রামটি সঠিক মন্তব্য দেখায় না।
- ক)(1)
match স্টেটমেন্ট কী কাজে ব্যবহৃত হয়?
- খ)(2)
উদ্দীপকের প্রোগ্রামে case _ ব্যবহার করা হয়েছে কেন? ব্যাখ্যা করো।
- গ)(3)
উদ্দীপকের প্রোগ্রামে B, D এবং b ইনপুট দিলে আউটপুট কী হবে? ব্যাখ্যা করো।
- ঘ)(4)
ছোট হাতের অক্ষরেও সঠিক মন্তব্য দেখানোর জন্য উদ্দীপকের প্রোগ্রামে কী পরিবর্তন করা যায়, তা কোডসহ লেখো। এ ক্ষেত্রে match স্টেটমেন্ট ও if...else ভিত্তিক সমাধানের মধ্যে কোনটি অধিক সুবিধাজনক, বিশ্লেষণ করো।
উত্তর ও ব্যাখ্যা
- ক)
AI-তৈরি নমুনা উত্তর পাইথন প্রোগ্রামে একাধিক স্টেটমেন্ট থেকে ভ্যারিয়েবলের মানের ভিত্তিতে নির্দিষ্ট কোনো স্টেটমেন্ট নির্বাচনের জন্য match স্টেটমেন্ট ব্যবহৃত হয়।
- খ)
AI-তৈরি নমুনা উত্তর match স্টেটমেন্টে প্রথমে নির্দিষ্ট মানগুলোর জন্য case দেওয়া হয়। ব্যবহারকারী যদি এমন কোনো মান দেয় যা কোনো case এর সাথে মেলে না, তখন প্রোগ্রামের একটি বিকল্প কাজ থাকা দরকার। case _ ডিফল্ট ব্লক হিসেবে কাজ করে এবং অন্য কোনো case না মিললে তা সম্পাদিত হয়। উদ্দীপকে এর মাধ্যমে ভুল গ্রেড ইনপুট দিলে Invalid grade বার্তা দেখানো হয়।
- গ)
AI-তৈরি নমুনা উত্তর match স্টেটমেন্ট ইনপুটের মানকে case এ দেওয়া মানের সাথে হুবহু মিলিয়ে দেখে। B ইনপুট দিলে: মান case 'B' এর সাথে মেলে, তাই আউটপুট হবে Good। D ইনপুট দিলে: D এর জন্য A, B, C কোনো case নেই, তাই case _ কার্যকর হয় এবং আউটপুট হবে Invalid grade। b ইনপুট দিলে: ছোট হাতের 'b' এবং বড় হাতের 'B' পাইথনে ভিন্ন অক্ষর। কোনো case এর সাথেই 'b' মেলে না, তাই case _ কার্যকর হয় এবং আউটপুট হবে Invalid grade। এ কারণেই শিক্ষার্থীরা ছোট হাতের গ্রেড লিখলে সঠিক মন্তব্য পায় না।
- ঘ)
AI-তৈরি নমুনা উত্তর সমস্যার কারণ: match স্টেটমেন্টে কেবল বড় হাতের A, B, C এর জন্য case আছে। ছোট হাতের অক্ষরের জন্য আলাদা case নেই। সমাধান ১ (match এ নতুন case যোগ):
grade = input('Enter grade: ') match grade: case 'A': print('Excellent') case 'a': print('Excellent') case 'B': print('Good') case 'b': print('Good') case 'C': print('Average') case 'c': print('Average') case _: print('Invalid grade')সমাধান ২ (তালিকা ও if...elif):
grade = input('Enter grade: ') if grade in ['A', 'a']: print('Excellent') elif grade in ['B', 'b']: print('Good') elif grade in ['C', 'c']: print('Average') else: print('Invalid grade')তুলনা: ১. match সমাধানে একই বার্তার জন্য দুইবার case ও print লিখতে হয়, ফলে কোড দীর্ঘ হয় এবং গ্রেড বাড়লে আরও বাড়ে। ২. if...elif সমাধানে একটি শর্তেই বড় ও ছোট হাতের উভয় অক্ষর যাচাই করা যায়, ফলে কোড সংক্ষিপ্ত হয় এবং বার্তা একবারই লিখতে হয়। ৩. তবে match স্টেটমেন্ট নির্দিষ্ট কয়েকটি মানের মধ্য থেকে একটি বাছাইয়ে পড়তে সহজ ও গোছানো। সুতরাং এ ক্ষেত্রে, যেখানে প্রতিটি বার্তার জন্য একাধিক মান মেলাতে হচ্ছে, if...elif ভিত্তিক সমাধানটি অধিক সুবিধাজনক।
আরও প্রশ্ন অনুশীলন করতে অ্যাপে যাও