Skip to main content

Posts

ডাটা স্ট্রাকচার- অ্যারে (Array)

Programming is all about data manipulation. Data structure is way of storing data for further manipulation. ডাটা স্ট্রাকচার আমাদেরকে বিভিন্ন ডাটা সাজিয়ে রাখার ব্যবস্থা করে দেয়। ডাটা সাজিয়ে রাখার অনেক গুলো "তরিকা" আছে। কোনকিছু আমরা কেন সাজিয়ে রাখি? যেন পরে নির্দিষ্ট একটা ডাটা সহজে খুঁজে পেতে পারি। "তরিকা" গুলোর নাম Array, Stack, Queue, Linked List, Tree, Graph. এগুলা শ খানেক ডাটা স্ট্রাকচারের মধ্যে কিছুর নাম, যেগুলো অনেক বেশি ব্যবহার হয়। এই পোস্টের উদ্দেশ্য Array নিয়ে আলোচনা। Array সম্ভবত সবচেয়ে বেশী ব্যবহৃত ডাটা স্ট্রাকচার। Array শব্দটার অর্থ হলো একই ধরনের কিছু জিনিসের সমাবেশ ( বা সমষ্ঠি )। Array দিয়ে আমরা একই ধরনের ডাটার কালেকশন রাখি। এই কালেকশনটা হতে পারে int Type এর ডাটার বা String Type এর ডাটার বা যেকোন ডাটাটাইপের। 5 2 10 0 122 উপরের এটা একটা সংখ্যার কালেকশন। এইটাই একটা Array। আপাতত মনে একটা প্রশ্ন জাগতে পারে যে এখানে সাজিয়ে রাখার কি হলো? আসলে এটাই সাজিয়ে রাখা। পুরো কালকেশনকে ধরে একটা Variable এ রেখে দ

প্রোগ্রামিং এর বেসিক

ঘুরেফিরে সব প্রোগ্রামিং ল্যাংগুয়েজই একই।একটা স্ট্রাকচার ভালোভাবে শিখে ফেললেই বাকিগুলো শিখতে খুব বেশী কষ্ট করতে হয়না। এই পোস্টে চেষ্টা করবো প্রোগ্রামিং এ একেবারেই নতুন বা না জানাদেরকে বেসিক দেখায় দেয়ার। কিছু কিছু জায়গায় স্যাম্পল কোড ব্যাবহার করতে হলে রেফারেন্স হিসেবে C++ ব্যাবহার করবো। প্রথমে যেটা সম্পর্কে জানাবো সেটা হলো Data Type । একটা জিনিস আগে মাথায় ঢুকিয়ে দেয়া যাক। প্রোগ্রামিং এর মুল লক্ষ হলো কিছু ডাটা নিয়ে সেটাকে কিছু কাটাছেড়া করে সেটার ফলাফল নিয়ে আসা। এইজে ডাটার কথা বললাম, ডাটা তো অনেক ধরনের হতে পারে। যেমন ২, ৫.৫, হাতি, মশা, হাতির কানে মশা। এগুলা সবই ডাটা। কিন্তু ডাটা গুলো আলাদা না? কোনোটা সংখ্যা, কোনোটা শব্দ, কোনোটা বাক্য। সংখ্যার মধ্যেও আবার দশমিকযুক্ত সংখ্যা আছে, নরমাল সংখ্যা আছে। সব দজরনের ডাটাকে তো একভাবে কাটাছেড়া করা যায়না। আমরা নাহয় বুদ্ধিমান, কম্পিউটার তো আর বুদ্ধিমান না। সেজন্য বানানো হয়েছে Data Type। বিভিন্ন ধরনের ডাটাকে বিভিন্ন ক্যাটাগরিতে ভাগ করা হয়েছে। প্রথমে একনাগাড়ে সবগুলোর নাম বলে যাই। int, short, long, double, float, char, bool, string ইত্যাদি। int হল

সুপারটাস্ক- infinite task in a finite dimension

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

Alto's Adventure -An endless snowboarding odyssey

এক দশক ধরে স্মার্টফোনের জয়জয়কার চলছে। স্মার্টফোন শুধু কমিউনিকেশনের মাধ্যম থেকে পার হয়ে বহুদূর এগিয়ে গেছে। প্রজন্মের একটা বড় অংশ বিনোদনের প্রধান উপকরন হিসেবে স্মার্টফোনকে দেখে। সেই বিনোদনেরও একটা উপায় হলো মোবাইলে গেম খেলা। একটা বিশেষ গেমের সাথে পরিচয় করিয়ে দিতে লিখতে বসেছি। গেমটার নাম "Alto's Adventure"। ইতোমধ্যেই গেমটি বেশ সুনাম কুড়িয়েছে। গেমটা প্রমান দেয় যে একটা সফল গেমের জন্য ধুমন্ধার অ্যাকশন বা মগজের উপর জোর দেয়া, এই বিষয় গুলো না থাকলেও চলে। গেমের মুল থিমটা হলো স্নো বোর্ডিং। মূল নায়ক অলতোকে নিয়ে পাহাড়ে স্নো বোর্ডিং করতে হবে। কি? ইচ্ছা দমে গেলো? আসলেও স্নো বোর্ডিং বা এই ধরনের রিয়েল লাইফ গেম নিয়ে এর আগে হাজার হাজার গেম বানানো হয়েছে। তা এতে এমন কি আছে যে আলাদা ভাবে লিখতে হবে। আছে জনাব, তা অবশ্যই আছে। গেমটা খেলে প্রথম যেই চিন্তাটা মাথায় আসে তা হলো, এত রিল্যাক্সিং কি করে হতে পারে? তাও আবার একটা গেম? রিল্যাক্সিং হবার অন্যতম কারন হচ্ছে এর ব্যাকগ্রাউন্ড মিউজিক। পিয়ানোর ছন্দগুলো শুনলেই মনটা ভালো হয়ে যায়। তার সাথে বৃষ্টির সম সেটার আওয়াজ, বাজ পড়ার আওয়াজ ইত্যাদি পারিপার্শ্বিক

প্রোগ্রামিং এর সংগে ঠাট্টা

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

কম্পিউটার বচন

কম্পিউটারের সাথে আমার পরিচয় খুব ছোট বয়সে না। অন্তত চেনাপরিচিত বন্ধুমহলের অনেকের তুলনায় আমি বাচ্চাই বলা চলে। ক্লাস ২ বা ৩ তে পড়ি যখন ফুফাতো ভাই প্রথম কম্পিউটার কেনে। ফুফুর বাসা কাছেই হওয়ায় মাঝে মাঝেই সেটা দেখার সৌভাগ্য হতো। কিন্তু ছুয়ে দেখার সাহস তখনও হয়নি। সেই বছর থেকে আমাদের রেওয়াজ, ঈদের দিন নামাজ পড়েই সোজা ভাইয়ার রুমে। ভাইয়া নতুন একটা গেম ইন্সটল করে রাখতো আর আমরা কাজিনেরা লাইন দিয়ে সেটা খেলতাম (যদিও আমার ভাগে কমই পড়তো :p )  ক্লাস সিক্সে নতুন স্কুলে ভর্তি হলাম। এ এক আজব জায়গা। সবাই বড়লোকের পোলাপাইন। কতজন গাড়িতে করে আসে। তাদের তো কথাই নাই। যাদের গাড়ি নাই তাদেরও রোজকার বাজেট বিশাল। ইচ্ছামত উড়ায়। আর আমি মধ্যবিত্তের ছেলে। যাওয়া আসার ভাড়া বাদে কোনো টাকা পেতামনা। টিফিন বাসা থেকে বানায়ে দিতো। এই যখন আমার অবস্থা তখন ক্লাসমেটরা নিত্যনতুন গ্যাজেটের সাথে শুধু পরিচয়ই না, পকেটে নিয়ে ঘুরে (যদিও স্কুলে নিষিদ্ধ ছিলো )। সবাই এসব নিয়ে কত গল্প চালায় যায়। আর আমার মত বোকা কিছু পাবলিক হা করে এদের গল্প শুনি। কম্পিউটারের কত বচন, কত আড্ডা। এসব আড্ডায় ঢুকতে কত ইচ্ছা করতো, কিন্তু ঢুকবো কি করে? আমার কম্পিউটা