Posts

ডার্ট প্রোগ্রামিং ল্যাঙ্গুয়েজে enumeration or enum কি ? কেন? কিভাবে ?

Image
enum  কি ? এক কথায় enum or enumeration হল Constant value এর ডাটা। যার ভিতর Constant ভেলু থাকবে। আমরা যখন Program এ এমন পরিস্থিতির স্বীকার হব , যেখানে ভেরিয়েবলে কেবল মাত্র একটি সীমাবদ্ধ " নামযুক্ত মান " গ্রহন করতে পারে , সে সব ক্ষেত্রে আমরা enum ব্যবহার করব। যেমন - সপ্তাহের দিন , রংধনুর সাত রং , কিনবা কম্পাসের চারটি দিক। আর enum ব্যবহার করার সুবিধা হল , enum ব্যবহারের ফলে আমাদের কোডটি বেশি পঠনযোগ্য এবং কনসিসটেন্ট করে তোলে। যার ফলে প্রোগ্রামে অনাকাঙ্ক্ষিত ত্রুটিও কমে যায়। আর একটি কোড তখনি সবচেয়ে ভাল কোড হবে , যখন আমাদের লিখা কোন কোড অন্য কেউ খুব সহজেই পড়তে ও বুঝতে পারে৷ enum এর উদাহরন দেওয়ার জন্য সবচেয়ে ভাল উপায় হল switch case statement এর মাধ্যমে । আমিও তাই দেখাব। ধরুন একটি কম্পাসের চারটি দিকে ও চারটি নির্দশনা আছে৷ এখন আমরা switch case statement ব্যাবহার করে এমন একটি প্রোগ্রাম লিখব , যে ডিরেকশন টি সিলেক্ট করব সেই ডিরেকশনের নির্দেশনা আমাদের বলে দিবে৷ তাহলে কোডটি লিখে ফেলি-   উদাহরনের কোডটি তে আমরা কেইস এর কন্সটেন্ট গুলো 1...

ডার্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে অপ্রত্যাশিত ইভেন্ট বা ঘটনা কিভাবে হ্যান্ডেল করবেন?

Image
আজকে আলোচনা করব ডার্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে কিভাবে Exception হ্যান্ডেল করতে হয় । ডার্ট ল্যাঙ্গুয়েজ কে Java, C++, C#, Python এর মত Exception Handling Facilities দিয়ে ডিজাইন করা হয়েছে । আচ্ছা ! তাহলে এই Exception জিনিসটা আবার কি ? এক কথায় - Exception হল প্রোগ্রামরের একটি অপ্রত্যাশিত ইভেন্ট বা ঘটনা যা কোনও প্রোগ্রাম কার্যকর করার সময় ঘটে। আর প্রোগ্রামের যেখানেই এই Exception ঘটে , কম্পাইলার প্রোগ্রামকে সেখানেই বন্ধ করে দেয়। যা সফটওয়্যার ডেভেলপমেন্টের ক্ষেত্রে মোটেও কাম্য নয়। তাহলে প্রোগ্রামে এই অপ্রত্যাশিত ইভেন্ট বা ঘটনা যদি ঘটে , সেটা কিভাবে মোকাবেলা করব ? প্রোগ্রাম এ সম্ভাব্য কোনও ত্রুটি মোকাবেলার জন্য আমরা ঐ প্রোগ্রাম কে ভিন্ন তিনটি ব্লক এ বিবক্ত করব । আর ব্লক তিনটি হল - Try Block Catch Block Finally Block   Syntax: এখন আসুন জেনে নেই এই ব্লক গুলোর কিভাবে কাজ করে -  1. Try block :- এই ব্লক এ আমরা সম্ভাব্য ত্রুটি ঘটতে পারে , এমন প্রোগ্রাম এর operation করব। যদি program কোন ধরনের Error দেখায় , তাহলে Try Block সেটা কে encounter করবে ...

ডার্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ এর খুবই শক্তিশালী ফিচার Generic কি? কেন? কিভাবে?

Image
আজকে আলোচনা করব ডার্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ এর খুবই শক্তিশালী ফিচার Generic নিয়ে । Generic মূলত ডাটা Collection এর টাইপ সেফটি নির্ধারন করে। কিন্ত যেনে রাখা ভাল , ডাটা টাইপকে ডার্ট ল্যাঙ্গুয়েজে অপশনাল রাখা হয়েছে। কোন ডাটা কালেকশনকে Generic করতে হলে আমাদের < > নেটেশন মার্ক ব্যবহার করতে হবে ৷ আর এই নোটেশনের মধ্যে যখন ডাটার টাইপ কি হবে অথাৎ ( int, double, string ) তা নির্দারন করে দেওয়া হয় তখন আমরা ঐ ডাটার কালেকশনকে জেনেরিক বলব। জেনে রাখা ভাল , ডার্টে লিষ্ট অন্যান্য ল্যাঙ্গুয়েজ এ অ্যারে নিয়ে কাজ করতে সবচেয়ে বেশি ডাটাকে Generic করার দরকার পড়ে। তাছাড়া আমরা Map, Set, HashMap, HashSet তে ব্যাবহার করতে পারি। আসুন তাহলে এবার লিষ্ট দিয়ে একটি উদাহরন দেখি - উপরের প্রোগ্রামটিতে লিস্ট এর মধ্যে ডাটা টাইপ হিসাবে স্ট্রিং কে Declare করা হয়েছে । তাই ডাটা হিসাবে শুধুমাত্র স্ট্রিং নিয়েছি। আমরা চাইলেও লিস্টের ভিতর স্ট্রিং ব্যতিত অন্য কোন ডাটা নিতে পারব না। কারন List এর ডাটা টাইপ ফিক্সড করে দিয়েছি । চলুন উদাহরন দিয়ে বিষয়টা পরিষ্কার করি -  ...

ইসলামে ছোঁয়াচে রোগ । । বিভ্রান্তি ও বাস্তবতা

Image
প্রশ্ন : ইসলামে কি ছোঁয়াচে রোগকে অস্বীকার করা হয়েছে ? উত্তর : আবু হুরায়রা রা . হতে বর্ণিত , নবী সাল্লাল্লাহু আলাইহি ওয়াসাল্লাম বলেছেন , “ রোগ সংক্রমণ , কুলক্ষণ , পেঁচা এবং সফর মাস বলতে কিছু না ই।” ( সহীহু বুখারী , হা / ৫৭০৭ ) মুহাদ্দিসগণ বলেন , উক্ত হাদীসে পেঁচা ও সফর মাসের অস্তিত্বকে অস্বীকার করা হয় নি বরং জাহেলী যুগে পেঁচার ডাক এবং সফর মাসকে কুলক্ষণে মনে করা হত ( বর্তমানেও মূর্খ লোকদের মাঝে এ কুসংস্কার প্রচলিত রয়েছে ) এই বাতিল ও ভ্রান্ত বিশ্বাসকে অস্বীকার করা হয়েছে। অনুরূপভাবে সংক্রমন রোগের অস্তিত্বকেও অস্বীকার করা হয় নি বরং একটি ভ্রান্ত বিশ্বাসের অনোদন করা হয়েছে। তা হল , জাহেলী যুগে কোনো কোন ব্যাধিকে এমন মনে করা হত যে , তা নিজে নিজেই সংক্রমিত হয়। কিন্তু ইসলামের সৃষ্টিভঙ্গী হল , রোগ কখনও নিজে নিজে সংক্রমিত হতে পারে না। বরং তা আল্লার ইচ্ছার সাথে সংম্পৃক্ত। তার লিখিত তাকদীর ছাড়া কোন কিছুই ঘটে না। ❑ উক্ত হাদীসের এই ব্যাখ্যাটি নিন্মোক্ত হাদীস থেকে স্পষ্ট হয় : আবূ হুরায়রা রাদিয়াল্লাহু আনহু বর্ণনা করেন যে , নবী সাল্লাল্লাহু আলাইহি ওয়াসাল্লাম ছোঁয়াচে রোগ বলতে কিছু নাই বলল...

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বেসিক কনসেপ্ট

Image
  Object-Oriented Programming আজ আলোচনা করব প্রোগ্রামিং এর সবচেয়ে গুরুত্বপূর্ণ Concept “OOP” নিয়ে । Object-oriented programming ( OOP ) মূলত চারটি খুঁটির উপর নীর্বর করে দাড়িয়ে আছে । খুঁটিগুলো হল - Abstraction Encapsulation Inheritance Polymorphism এই খুঁটিগুলো নিয়ে বিশাদ আলোচনা করার আগে জেনে নেই প্রোগ্রামিং এ OOP আবার কি জিনিস ? এক কথায় বলতে গেলে - ক্লাস এবং অবজেক্টের ধারণাকে কাজে লাগিয়ে যে প্রোগ্রামিং করা হয় তাকেই বলা হয় অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং। তাহলে এই যে বললাম অবজেক্ট ও ক্লাস ধারণাকে কাজে লাগিয়ে যে প্রোগ্রামিং করা হয় তাকেই বলা হয় অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং বলে । এই অবজেক্ট ও ক্লাস কি ? একটু জেনে নেওয়া যাক - অবজেক্ট হলো কোন একটি ক্লাস এর একটি মূর্ত অস্তিত্ব ৷ আর ক্লাস হলো অবজেক্ট তৈরীর একটা ব্লুপ্রিন্ট বা সংগা যা নির্দিষ্ট করে দেয় ওই ক্লাসের একটি অবজেক্টের কী কী গুনাগুন হবে ৷ যেমন – আপনি নিজে , যে কিনা কোথাও বিরাজ করছেন , আপনি হলেন একজন মানুষ / হিউম্যান ৷ এবং আপনার মতই আরো অনেক মানুষ আছেন ৷ এখানে আপনারা সবাই...

প্রোগ্রামিংয়ের এক হালি কমন কনফিউশন

Image
Heading দেখে হয়ত অনেকে বুঝে গেছেন আমি আজ কি নিয়ে কথা বলব । আর যারা বুঝেন নাই তাদের ও নিরাশ হবার কিছু নেই । অনলাইনে বিভিন্ন বড় বড় Developer দের লিখনি পড়ে বুঝতে পারলাম  আমরা যারা কম্পিউটার প্রোগ্রমিং করি তারা চাকরির জন্য যখন ইন্টারভিউ দেই , ইন্টারভিউয়াররা কিন্তু আমাদের খুব জটিল কিনবা বড় কোন প্রোগ্রাম লিখতে দেন না , তারা খুবই বেসিক লেবেলের কিছু প্রভলেম এবং প্রশ্ন করে থাকেন ।আর সেই তথ্যরে উপর ভিক্তি করে নিজেকে প্রস্তুত  করতে গিয়ে আমি কিছু কনসেপ্ট  নিয়ে কনফিউশনে পড়ি । আজ সেগুলো নিয়ে আলোচনা করব … নাম্বার এক:  Parameter vs Argument Parameter হল  মেথডের / ফাংশনের মধ্যে ভ্যারিয়্যাবল কে Declearation. অন্যদিকে Argument  হলো ঐ ভ্যারিয়্যাবেলের  actual value যেটি মেথড / ফাংশনের কল কারার সময় মেথড / ফাংশনের ভিতর পাস করা হয় । কি !! এখনো বুঝেন নাই ?   আসুন উদাহরন দেখে   ধারনাটা পরিপূর্ন করি । int add(int x, int y) {     return x + y; } int result = add(123, 456); উপরে উদাহরন থেকে  add মেথডের ভিতর  int x...