সি/সি++ প্রোগ্রামিং টিউটোরিয়াল (পর্ব ১) ডাটা টাইপ

0
197

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

কাস্টম ডাটা টাইপের প্রাথমিক ধারণা
কাস্টম ডাটা টাইপ হলো ইউজারের নিজের তৈরি করা ডাটা টাইপ। ইউজার নিজের সুবিধার জন্য প্রয়োজনমতো ডাটা টাইপ তৈরি করে নিতে পারেন। আমরা জানি, সি-তে কিছু বিল্টইন ডাটা টাইপ আছে, যেমন : int, float, char ইত্যাদি। তবে এই বিল্টইন ডাটা টাইপ দিয়েও অনেক সময় ঠিকমতো কাজ করা যায় না। যেমন : একটি প্রোগ্রাম লিখতে হবে, যার কাজ হলো একটি ক্লাসের ১০০ জন ছাত্রের রোল নাম্বার ও গ্রেড ইনপুট নেয়া। এখন রোল নাম্বার ইনপুট নেয়ার জন্য ইন্টিজার ভেরিয়েবল দরকার। আবার গ্রেড ইনপুট নেয়ার জন্য ক্যারেক্টার টাইপ ভেরিয়েবল দরকার (ধরা যাক, গ্রেড শুধু একটি অক্ষর দিয়ে হবে)। তাহলে স্বভাবতই ইউজার ১০০ + ১০০ = ২০০টি ভেরিয়েবল ডিক্লেয়ার করবে না। অবশ্যই এ ক্ষেত্রে অ্যারে ব্যবহার করতে হবে। কিন্তু দুই ধরনের ভেরিয়েবলের জন্য দুটি অ্যারে ডিক্লেয়ার করা দরকার। এ ধরনের ক্ষেত্রে কাস্টম ভেরিয়েবল ব্যবহার করা যায়। ইউজার যদি এখানে কাস্টম ভেরিয়েবল ব্যবহার করেন, তাহলে মাত্র একটি অ্যারে দিয়েই সব ইনপুট নেয়া যাবে। এখানে মনে হচ্ছে, অ্যারে হলেই কাজ হয়ে যেত। কিন্তু এ ধরনের প্রোগ্রাম যদি অনেক বড় কাজের জন্য হয়, তাহলে সাধারণ অ্যারে দিয়েও হয় না। যেমন : এই একই কাজ যদি আরও বড় অর্থাৎ মোট ৫০টি স্কুল থেকে ১০০ জন্য ছাত্রের নাম, রোল, গ্রেড, পিতার নাম, ফোন নাম্বার, বয়স ও উচ্চতা ইনপুট নেয়ার দরকার হয় তাহলে সাধারণ অ্যারে দিয়ে কাজটি করা অনেক কঠিন হয়ে যাবে। এ ধরনের সমস্যার জন্য কাস্টম ডাটা টাইপ ব্যবহার করা হয়।

কাস্টম ডাটা টাইপ
সি-তে মোট পাঁচভাবে নতুন ধরনের ডাটা টাইপ ডিক্লেয়ার করা যায়। যেমন : ০১. structure : এ ক্ষেত্রে বিল্টইন ডাটা টাইপগুলো ব্যবহার করে একটি হাইব্রিড ডাটা টাইপ ব্যবহার করা হয়। ০২. bit-field : এটি structure পদ্ধতিরই একটি ভিন্ন রূপ, যার মাধ্যমে মেমরির বিট লেভেলে কাজ করা হয়। ০৩. union : এই পদ্ধতিতে এমন ডাটা টাইপ তৈরি করা যায়, যার একাধিক ফিল্ডের জন্য মেমরির একই অংশ ব্যবহার হয়। ০৪. enumeration : এই পদ্ধতিতে তৈরি ডাটা টাইপের ভেরিয়েবলের মান একটি সিম্বল লিস্ট থেকে নির্ধারিত হয়। ০৫. typedef : এই পদ্ধতিতে বিল্টইন কিংবা কাস্টম ডাটা টাইপের নতুন নাম নির্ধারণ করা যায়।

এখানে প্রতিটি পদ্ধতিরই কিছু না কিছু সুবিধা-অসুবিধা আছে। আবার সব কাজ একই ধরনের নয়। যেমন : শেষের ডাটা টাইপ নতুন ডাটাকে নিয়ে কাস্টম টাইপ বিল্ড করে না, বরং অন্যকে নতুন নাম দিয়ে কাস্টম টাইপ হিসেবে তৈরি করে। আবার এখানে বিট-ফিল্ডই একমাত্র পদ্ধতি, যার মাধ্যমে লো লেভেলে কাজ করা যায়। প্রথমে structure নিয়ে আলোচনা করা হবে। পরের পর্ব দেখুন …

একটি উত্তর ত্যাগ