প্রোগ্রামিং সিরিজ: গল্পে গল্পে Data Structure

September 15, 2018 ...
পুরোটা পড়ার সময় নেই? ব্লগটি একবার শুনে নাও

এই লেখাটি “আদর্শ” থেকে প্রকাশিত এবং ঝংকার মাহবুব-এর ২য় গ্রন্থ “প্রোগ্রামিংয়ের বলদ টু বস” বই থেকে নেয়া হয়েছে।

q 0SipeKOFQ jgNc9YaobJoS3pQEfH21xBYmV8qN00M7hE3Yx RzOzq4IghyMmD5NHvHku49ubRewAqHIuQM 1Se2J3qeHO35CRuAPl0V8UwXJxHwPXmX16gJmZJvwz

যে কাজের পেছনে মানুষ সবচেয়ে বেশি টাইম স্পেন্ড করে, সেই অনুসারে তার পেশা ঠিক করা হলে, রাশেদের পেশা হবে অলস, ফাঁকিবাজ অথবা আড্ডাবাজ। অথচ তাকে তার পেশা জিজ্ঞেস করলে সে বলবে স্টুডেন্ট। তবে তার স্টুডেন্টগিরির ময়নাতদন্ত করলে, ক্লাসে কাটানো সময়ের চেয়ে চা দোকানে কাটানো সময়ই বেশি পাওয়া যায়। সেটাও আবার লিটন ভাইয়ের চা দোকানে।

|  Data structure  | array | ডাটা স্ট্রাকচারের উদাহরণ |

Data Structure -এর লাল সুতা

ঝড়, বৃষ্টি, বাদলে দু-এক দিন সূর্য মিসিং থাকতে পারে কিন্তু রাশেদের আড্ডা মারা মিসিং থাকে না।

এসব আড্ডায় সিরিয়াস কোনো টপিকও থাকে না। যখন যা মনে আসে, তা নিয়েই রাশেদ পকপক করতে থাকে। এই যেমন, একটু আগে ঝালমুড়ির ঠোঙায় হাজিরা খাতার ছেঁড়া কাগজ দেখে অন্তুকে বলতে শুরু করল, হাজিরা খাতার কথা মনে আছে? যে খাতায় ক্লাসের সবার নাম, রোল নম্বর, কে কবে ক্লাসে আসছে লেখা থাকে। কোনো টিচারের হাজিরা খাতা খুলে দেখলে দেখবি, হাজিরা খাতায় সিরিয়ালমতো নাম, রোল নম্বর লেখা আছে।

UZ8j2RF2KmgWrztfN3khLFzb vqK2qvk oPo6A7G5t07sbBiR8ybX9KheJFLvPxqhFnwgftRKOiGc2zr5VqVkTklJaweQpajIph57vh8OiGuBLxnEWCrXKAYBK rPj5YWJ

এখন হাজিরা খাতার কোনো একটা লাইনের দিকে ভালো করে তাকালে দেখবি, প্রত্যেক লাইনের প্রথমে রোল নম্বর তারপর নাম লেখা আছে। যেই লাইন দেখছিলি, তার নিচের লাইনে তাকালেও দেখবি একই সিস্টেম। সেই লাইনেরও প্রথমে রোল নম্বর। তারপর নাম লেখা। এখন ওপরে ও নিচের অন্য সব লাইনের দিকে তাকিয়ে দেখ। দেখবি প্রত্যেক লাইনে একই সিস্টেমে রোল নম্বর আর নাম লেখা আছে।

এই যে হাজিরা খাতায় বিভিন্ন স্টুডেন্টের নাম, রোল নম্বর লেখা আছে, এটাকে একটু সহজ করে বললে বলা যায়, হাজিরা খাতায় বিভিন্ন স্টুডেন্টের নাম, রোল নম্বরের তথ্য লেখা আছে। এই তথ্য একটা বাংলা শব্দ। তথ্য শব্দটাকে ইংরেজিতে বলে ডাটা (data)। তাই বলতে পারিস, হাজিরা খাতায় স্টুডেন্টের ডাটা রাখা আছে।

হাজিরা খাতায় ডাটা রাখার একটা সিস্টেম আছে। সিস্টেমটা কঠিন কিছু না। জাস্ট রুল করা কাগজের একেক লাইনে একেক জনের নাম, রোল নম্বর লিখে রাখা হয়। তবে নাম, রোল নম্বর লেখার আগেই হাজিরা খাতায় রুল করে লাইন টানা থাকে। আর আগে থেকেই লাইন টানা থাকার মানে হচ্ছে, আগে থেকেই একটা কাঠামো বা স্ট্রাকচার তৈরি করে রাখা হয়েছে। যাতে সেই কাঠামো বা স্ট্রাকচারের মধ্যে ফটাফট নাম, রোল নম্বর লিখে ফেলতে পারে।

এই যে কাঠামো বা স্ট্রাকচার বানিয়ে একাধিক স্টুডেন্টের নাম, রোল নম্বরের ডাটা রাখা আছে, এটাকেই বলে ডাটা রাখার স্ট্রাকচার বা ডাটা স্ট্রাকচার (data structure)। অর্থাৎ একাধিক স্টুডেন্টের ডাটা রাখার সিস্টেমটাই একটা data structure। আরও সহজ করে বলতে গেলে বলা যায়, হাজিরা খাতাটাই একটা data structure।

এক নামে তালি বাজে না

ধর, তুই একটা ভেরিয়েবল লিখলি। সেই ভেরিয়েবলের মধ্যে তুই তোর নাম লিখে দিলি। আর এই ভেরিয়েবলের নাম দিলি name। তারপর সমান চিহ্ন দিয়ে মান সেট করে দিলি। যেহেতু নাম লেখার সময় এক বা একাধিক বর্ণ দিয়ে লিখতে হয়, সেহেতু নাম লেখা শুরুর আগে একটা ডবল কোটেশন () দিলি। নাম লেখা শেষ হয়ে গেলে আরেকটা ডবল কোটেশন দিলি। তারপর নাম শেষ হলে একটা সেমিকোলন (;) দিয়ে দিলি।

var name  = “Hablu”;

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

বন্ধু ছাড়া জীবন চলে না

কিছুদিন আগে তোর ক্লাসের বন্ধুদের নাম দিয়ে একটা array লিখছিলি। সেই array-এর নাম দিয়েছিলি friends। সেই array-টা ছিল নিচের মতো—

var friends = [“olil”, “kholil”, “molil”, “jolil”];

এই যে ফ্রেন্ডদের নাম দিয়ে একটা array লিখেছিস, এখানে কিন্তু একটা তথ্য নাই। বরং অনেকগুলা তথ্য আছে। অনেকগুলো পোলাপানের নাম আছে। আবার এই তথ্যগুলা লেখার সময় একটা গঠন বা সিস্টেম অনুসরণ করছিস। প্রথমজনের নাম লিখে একটা কমা দিছিস। তারপর দ্বিতীয়জনের নাম লিখেও একটা কমা দিছিস। তার মানে নামগুলা কমা দিয়ে দিয়ে আলাদা করে একটা কাঠামো বা স্ট্রাকচার তৈরি করছিস।

যেহেতু array-এর মধ্যে চাইলে একাধিক তথ্য রাখা যায় এবং একটা গঠন বা স্ট্রাকচার মেনে চলে, তাই array-কে একটা data structure বলতে পারবি।

ক্রিকেট খেলা দেখার সময় কোনো টিমের ব্যাটিং স্কোরকার্ড খেয়াল করে দেখছিস? সেখানে বামপাশে প্লেয়ারের নাম লেখা থাকে আর ডানপাশে সে কত রান করছে, কত বল খেলছে, কয়টা চার আর কয়টা ছয় মারছে লেখা থাকে। তার মানে স্কোরকার্ডের একেক লাইনে একেক জন খেলোয়াড়ের নাম এবং ওই ম্যাচে তার রানের তথ্য থাকে। যেহেতু একাধিক জনের তথ্য একটা কাঠামো অনুসারে রাখা হয়, সেহেতু ক্রিকেট খেলার স্কোরকার্ডকে একটা data structure বলতে পারবি।

data structure খায়, পিন্দে না মাথায় দেয়?

আজকের পর কেউ যদি জিজ্ঞেস করে ডাটা স্ট্রাকচার কী জিনিস? এইটা কি খায়, পিন্দে না মাথায় দেয়? তখন মাথা চুলকাতে চুলকাতে বলে দিবি, যেখানে একই সিস্টেম ফলো করে একাধিক ডাটা রাখা যায়, সেটাই data structure। আর এত কিছু কঠিন মনে হলে বলে দিবি, হাজিরা খাতাটাই একটা data structure

নিজে নিজে কর

১.১: এমন একটা উদাহরণ দে যেখানে একাধিক জিনিসের নাম বা একাধিক জিনিস সম্পর্কে তথ্য আছে। হাজিরা খাতা বাদে অন্য আরেকটা উদাহরণ চিন্তা করে বের কর।

উত্তর :

১.২ : তোর বাসার মধ্যে এমন অনেক কিছু আছে। যেখানে চাইলে একাধিক জিনিস রাখা যায়। তুই চিন্তা করে সে রকম একটা জিনিসের নাম বল।

উত্তর :

১.৩ : তোর মোবাইলের মধ্যে এমন একটা কিছুর নাম বল, যেখানে একাধিক জিনিস আছে বা রাখা যায়।

উত্তর :

…ওপরের বলদ মার্কা প্রশ্ন দেখে তোর মাথা গরম হয়ে কান দিয়ে ধোঁয়া বের হওয়া শুরু হলে দৌড়াতে দৌড়াতে www.habluderadda.com/bolod/dataStructure.html-এ চলে যা। সেখানে যেকোনো প্রশ্ন করতে পারবি, অন্যদের উত্তর দেখতে পারবি। এমনকি ফায়ার সার্ভিসের হেল্প নিয়ে বুড়িগঙ্গার ফিল্টারড পানি তোর কানের ভিতরে ঢুকিয়ে মাথা ঠান্ডা করতে পারবি।

ঝংকার মাহবুবের অন্যান্য লেখা সম্পর্কে জানতে চলে যাও এই লিংকে!
ঝংকার মাহবুবকে ফলো করতে পারো ফেসবুক পেইজেও!


 

১০ মিনিট স্কুলের ব্লগের জন্য কোনো লেখা পাঠাতে চাইলে, সরাসরি তোমার লেখাটি ই-মেইল কর এই ঠিকানায়: [email protected]

আপনার কমেন্ট লিখুন