সজিপ্র : সহজ ভাষায় পাইথন ৩

‘সহজ ভাষায় পাইথন ৩’ বইটি নিয়ে প্রায়শই কিছু মধুর প্রশ্নের সম্মুখীন হই। দিন দিন (আমার প্রতি) মানুষের ভালবাসা যেভাবে বাড়ছে, প্রশ্নও সমানুপাতিক হারেই বাড়ছে। আসলে যে কারোর মনেই এরকম প্রশ্ন আসা বেশ স্বাভাবিক। কিন্তু একই প্রশ্নের উত্তর বারবার দিতে কেমন জানি লাগে আমার। নিজেকে হোয়াইল লুপের অধিবাসী মনে হয়। তাই ভাবলাম, এসব মধুর প্রশ্নের সুমধুর উত্তরগুলো সজিপ্র (সচরাচর জিজ্ঞাসিত প্রশ্ন) সেকশনে লিখে রাখা যাক। (১) প্রশ্ন: সি নাকি পাইথন? কোনটি দিয়ে শুরু করব?

পুরো পোস্ট পড়ুন

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

পুরো পোস্ট পড়ুন

সিঙ্গলি লিংকড লিস্ট সম্পর্কে পরিষ্কার ধারণা থাকলে সার্কুলার লিংকড লিস্ট বুঝতে পারাটা একেবারে পানির মত সহজ। তবে ভুলে গেলেও কোন সমস্যা নেই। আমরা এমনিতেই ফ্লাশব্যাকে যাব। সিঙ্গলি লিংকড লিস্ট হল কতগুলো নোডের চেইন বা সমাহার। প্রতিটি নোডে দুটি ফিল্ড থাকে। প্রথম ফিল্ডে থাকে ডাটা আইটেম আর শেষের ফিল্ডে থাকে পয়েন্টার বা পরবর্তী নোডের লিংক বা রেফারেন্স। নোড চেইনের পরিসমাপ্তিকে মূলত নাল (Null) রেফারেন্স দ্বারা চিহ্নিত করা হয়। অনেক সময় None দিয়ে পরিসমাপ্তি বুঝানো হয়। পরিসমাপ্তি দ্বারা বুঝানো হচ্ছে যে এই নোডের পরে আর কোন নোড নেই।

পুরো পোস্ট পড়ুন

ইতিমধ্যে আমরা স্ট্যাক (Stack) ও কিউ (Queue) সম্পর্কে জেনেছি। এগুলো হল লিনিয়ার ডাটা স্ট্রাকচার ও একমুখো সাপ। একমুখো সাপ বললাম কারণ, স্টাক ও কিউতে আইটেম একটিমাত্র প্রান্তে ঢুকতে পারে ও একটিমাত্র প্রান্ত থেকে বের হতে পারে। আরেকটু পরিষ্কার করে বললে, স্ট্যাকের ক্ষেত্রে যে প্রান্তে আইটেম ঢুকবে সেই প্রান্ত দিয়েই বের হবে আর কিউয়ের ক্ষেত্রে ঢুকবে এক প্রান্ত দিয়ে কিন্তু বের হবে অন্য প্রান্ত দিয়ে। লক্ষণীয় বিষয় হল, দুই ক্ষেত্রেই ঢোকার বা বের হবার রাস্তা কেবলমাত্র একটি। কিন্তু ডেক (Deque) হল একটি দুমুখো সাপ। এর দুই মুখেই আইটেম ঢুকতে পারে অথবা দুই মুখ থেকেই আইটেম বের হতে পারে।

পুরো পোস্ট পড়ুন

মাত্র আজ সকালেই অ্যান্টনিও ফার্নান্দেজ অ্যালোনসোকে চিনলাম আমি। ভদ্রলোক স্পেনের, পড়াশুনা করেছেন University of Seville-এ। কোরাতে এক প্রশ্নের উত্তরে প্রায় ত্রিশ বছরের প্রোগ্রামিং অভিজ্ঞতা থেকে নতুন প্রোগ্রামারদের তিনটি টিপস দিয়েছেন তিনি। ভাবলাম দেশি ভাইদের জন্য সেগুলো অনুবাদ করা যেতে পারে। (১) কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ শেখার কথা ভুলে যাও। প্রোগ্রামিং হল প্রব্লেম সলভিংয়ের নামান্তর। যদি তুমি না জান কিভাবে প্রব্লেম সলভ করতে হয়, যত শক্তিশালী ল্যাঙ্গুয়েজই হোক না কেন, তা নিজে তোমার প্রব্লেম সলভ করে দিবে না।

পুরো পোস্ট পড়ুন

স্ট্যাকের (Stack) মতই আরেকটি লিনিয়ার (Linear) ডাটা স্ট্রাকচার হল কিউ (Queue)। লিনিয়ার ডাটা স্ট্রাকচার বলতে বুঝায় যেখানে আইটেমগুলো ধারাবাহিকভাবে রয়েছে, যেমন: স্ট্যাক, কিউ, লিংকড (Linked) লিস্ট। বাংলায় কিউকে আমরা সারি বলতে পারি। তবে বুঝানোর সুবিধার্থে আমরা কিউ বলেই আপাতত চালিয়ে নেব। কিউ হল কতগুলো আইটেমের এমন এক ধারাবাহিক সংগ্রহশালা (কালেকশন - collection) যেখানে নতুন আইটেমের সংযোজন (এনকিউ – enqueue) সংগ্রহশালার এক প্রান্তে আর পুরনো আইটেমের অপসারণ (ডিকিউ - dequeue) ঠিক তার বিপরীত প্রান্তে হয়। বোঝার সুবিধার্থে, যে প্রান্তে নতুন আইটেমের সংযোজন হয় সে প্রান্তকে আমরা পিছনের অংশ বা রিয়ার (rear) অথবা টেইল (tail - লেজ) বলতে পারি। আর যে প্রান্তে পুরনো আইটেমের অপসারণ হয় সে প্রান্তকে আমরা সামনের অংশ বা ফ্রন্ট (front) অথবা হেড (head - মাথা) বলতে পারি। বেশ গোলমেলে ব্যাপার-স্যাপার, তাই না?

পুরো পোস্ট পড়ুন

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

পুরো পোস্ট পড়ুন

Author's picture

মাকসুদুর রহমান মাটিন

ডেভঅপস ইঞ্জিনিয়ার | এসআরই

গ্রামীণ টেলিকম ট্রাস্ট

বাংলাদেশ