«

»

নভে. 07

যন্ত্রের ভাষায় কথা বলা (C++) — পর্ব ৫ — হাতে-কলমে প্রোগ্রামিং

[কোর্সের মূল পাতা | নিবন্ধনের লিংক]

 

লম্বা বিরতির পর আপনাদের আবারও স্বাগত জানাচ্ছি বাংলা ভাষায় প্রোগ্রামিং শেখার এই কোর্সে। গত পর্বে আমরা শিখেছিলাম যন্ত্রকে দিয়ে যুক্তি-বুদ্ধি বিবেচনা করানো। এর পর আপনাদের একটি ছোট্ট বাড়ির কাজ দিয়েছিলাম। এই পর্বে আমরা সেই বাড়ির কাজটি একত্রে সমাধান করবো।

 

পর্ব ৫

 

বাড়ির কাজটির ধারণা খুব সহজ। আপনাকে একটি প্রোগ্রাম লিখতে হবে যা একটি মাত্র ইনপুট হিসাবে একজন ছাত্রের মোট নম্বর নেবে। কিছু হিসাব-নিকাশ করার পর প্রোগ্রামটি একটি লেটার গ্রেড আউটপুট দেবে। এই পর্বে আমরা প্রোগ্রামটি ধাপে ধাপে লিখবো, আপনারা Ideone.com -এ পাশাপাশি কোড লিখে হাত পাকাতে পারেন।

 

লেটার গ্রেড নিরূপণের মাপকাঠিঃ A(90+), B(80+), C(70+), D(60+), F(<60).

 

যেকোনো প্রোগ্রাম লিখবার প্রথম ধাপ হলো প্রারম্ভিক কাঠামো পরীক্ষা করে দেখা। এ-কারণে শুরু করুন শুধুমাত্র নিচের কোডটুকু লিখেঃ

 

#include <iostream>
using namespace std;

int main()
{

}

 

আপনার প্রোগ্রামটি কিছু করবে না, কিন্তু কোনো ত্রুটি দেখা না দেওয়ার অর্থ হলো আপনি প্রোগ্রাম লিখবার জন্য তৈরি। এরপর যোগ করুন শুধুমাত্র একটি নির্দেশ, যার মধ্য দিয়ে আপনি নিশ্চিত হবেন যে প্রোগ্রামটি কাজ করছে। এক্ষেত্রে সবচেয়ে সুবিধাজনক হলো একটি cout ব্যবহার। পরের ধাপটা একই রকম, একটি ইনপুট কমান্ড ব্যবহার। এভাবে একটু একটু করে প্রোগ্রাম লিখতে থাকুন। একটি বাক্য লিখবেন, সেভ করবেন, একবার কম্পাইল করবেন। প্রতিবার ইনপুট নেওয়ার পর তা সাথে সাথেই আউটপুট করে নিশ্চিত হবে।

 

কিছুক্ষণ পর হয়তো আপনার প্রোগ্রামটি নিম্নরূপ হতে পারেঃ

 

#include <iostream>
using namespace std;

int main() {

cout << "Enter your final grade: ";

double totalPoint;
cin >> totalPoint;

cout << "You have entered: " << totalPoint << endl;

}

 

এবার সময় এসেছে শর্ত প্রয়োগের। এজন্য ব্যবহার করুন গত পর্বে দেখানো ব্যাকরণ। যথারীতি আপনার কোড একটু একটু করে লিখুন এবং প্রতিটি ধাপ পরীক্ষা করার পর নতুন লাইন লিখুন। এক্ষেত্রে শুরু করতে পারেন নিচের সহজ কোড দিয়েঃ

 

if (totalPoint >= 90) {
cout << "Your grade is A" << endl;
}
else {
cout << "Your grade is F" << endl;
}

 

এই অংশটুকু প্রোগ্রামে অন্তর্ভুক্ত করে কম্পাইল করুন। ত্রুটিমুক্ত ভাবে কম্পাইল করা গেলে কয়েকবার এই প্রোগ্রামটি চালান। প্রতিবার নতুন কোনো সংখ্যামান দিন। চেষ্টা করে দেখুন -৫, ৫০, ৯৫, এবং ১০৫ ইনপুট করলে কী ধরনের আউটপুট দেখতে পান।

 

এভাবেই একের পর এক if ব্যবহার করে আমরা একেক নম্বরের জন্য একেক গ্রেড নির্ধারণ করতে পারি। তবে এখানেও ছোট্ট একটা সমস্যা আছে। ধরুন আপনি if, if, if, if, else -এর মাধ্যমে এই প্রোগ্রামটি লিখলেন। এক্ষেত্রে দেখতে পাবেন যে একই সংখ্যা একেক বার একেক গ্রেড হিসাবে নির্ধারিত হচ্ছে। হবে না কেন? ৯৫ তো ৯০-এর চেয়েও বেশি, ৮০-র চেয়েও বেশি, ৭০-এর চেয়েও বেশি, আবার ৬০-এর চেয়েও বেশি!! এই সমস্যার সমাধান কী হতে পারে?

 

এই সমস্যার জন্য ছোট্ট একটি সংযোজন যথেষ্ট। সেটি হলো if এর পরিবর্তে else if ব্যবহার করা। C++ এ একটি if এর সাথে ঠিক পরবর্তী else শেকলের মতো সংযুক্ত। এর মধ্য দিয়ে প্রোগ্রামকে বলা হয়, “১ম শর্ত পূরণ না হলে ২য় শর্তে যাও, সেটাও পূরণ না হলে ৩য় শর্তে যাও, ইত্যাদি।” এভাবে আমরা অনেক অনেক শর্তের একটি সংযুক্ত শিকল তৈরি করতে পারি।

 

শুধু এটুকু পরিবর্তন আনলেই আপনার প্রোগ্রাম ত্রুটিমুক্ত হবে। তবুও একটু সাবধান হওয়ার জন্য আরেকটি দিক দেখা প্রয়োজন। দুই অনুচ্ছেদ আগে চারটি সংখ্যা ইনপুট হিসাবে ব্যবহার করার কথা বলছিলাম। সেখানে কি কোনো কিছুতে খটকা লেগেছে? কোনো ছাত্রের প্রাপ্ত নম্বর কি ১০৫ বা -৫ হতে পারে? এই ধরণের ত্রুটি এড়ানোর জন্য আমাদের উচিত প্রতিটি গ্রেডের জন্য উর্ধ্বসীমা এবং নিম্নসীমা নির্ধারণ করে দেওয়া।

 

সবটুকু পরিবর্তনের পর আপনার প্রোগ্রাম নিম্নরূপ হতে পারেঃ

 

#include <iostream>
using namespace std;
int main() {
cout << "Enter your final grade: ";
double totalPoint;
cin >> totalPoint;
cout << "You have entered: " << totalPoint << endl;
char letterGrade;
if (totalPoint >= 90 && totalPoint <= 100) {
letterGrade = 'A';
}
else if (totalPoint >= 80 && totalPoint < 90) {
letterGrade = 'B';
}
else if (totalPoint >= 70 && totalPoint < 80) {
letterGrade = 'C';
}
else if (totalPoint >= 60 && totalPoint < 70) {
letterGrade = 'D';
}
else if (totalPoint >= 0 && totalPoint < 60) {
letterGrade = 'F';
}
else {
cout << "Error!!!" << endl;
letterGrade = '?';
}
cout << "Your final grade is: " << letterGrade << endl;
}

 

পরবর্তী পর্বে নতুন কিছু ধারণা সম্পর্কে জানবো, আপাতত এটুকুই। ধন্যবাদ।

 

 

Comments

comments

About the author

ইশতিয়াক রউফ

তথ্যপ্রকৌশলী হিসাবে যুক্তরাষ্ট্রে কর্মরত। শিক্ষাগত জীবনে ইলেক্ট্রিকাল (ব্যাচেলর্স -- লুইজিয়ানা স্টেট ইউনিভার্সিটি, মাস্টার্স -- ভার্জিনিয়া টেক) ও কম্পিউটার (মাস্টার্স -- ইউনিভার্সিটি অফ সাউথ ক্যারোলাইনা) বিজ্ঞানে প্রাতিষ্ঠানিক ভাবে শিক্ষিত। আগ্রহের বিষয়ঃ খেলাধূলা, ব্লগিং, আলস্য।

Leave a Reply