সি/সি++ প্রোগ্রামিং টিউটোরিয়াল (পর্ব ৪) নেস্টেড স্ট্রাকচার

By | 25/06/2015

নেস্টেড স্ট্রাকচার

প্রোগ্রামে যেভাবে নেস্টেড লুপ ব্যবহার করা যায়, তেমনি প্রোগ্রামারের সুবিধার্থে নেস্টেড স্ট্রাকচার ব্যবহার করারও সুযোগ আছে। অর্থাৎ ব্যবহারকারী ইচ্ছে করলে একটি স্ট্রাকচারের মেম্বার হিসেবে আরেকটি স্ট্রাকচার ব্যবহার করতে পারবেন। যেমন :

struct student
{
char* name;
int id;
struct term
{
double gpa;
int courseID;
}course;
}data;

এখানে স্টুডেন্ট নামের স্ট্রাকচারের ভেতরে তিনটি মেম্বার ডিক্লেয়ার করা হয়েছে, যার মাঝে শেষের মেম্বারটি নিজেই একটি স্ট্রাকচার। লক্ষ করলে দেখা যাবে, এখানে স্ট্রাকচার ডিক্লেয়ার করার সাথে সাথেই তাদের ভেরিয়েবল ডিক্লেয়ার করা হয়েছে। যেমন : ভেতরের মেম্বার স্ট্রাকচারের ভেরিয়েবলটির নাম কোর্স এবং বাইরের অর্থাৎ মেইন স্ট্রাকচারের ভেরিয়েবলের নাম ডাটা। সুতরাং এখন এই নেস্টেড স্ট্রাকচারের ভেরিয়েবলগুলোর মান নিচের মতো করে নির্ধারণ করা যাবে :

data.name=”wahid”;
data.id=53;
data.course.gpa=3.5;
data.course. courseID=33;

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

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

struct term
{
double gpa;
int courseID;
};
struct student
{
char* name;
int id;
struct term course;
}data;

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

Leave a Reply

Your email address will not be published. Required fields are marked *