Saturday, April 25, 2020

সহজ দৃষ্টিতে PHP এর Object


13 April, 2016
-----------------------------
PHP তে oop(object oriented programming) শেখানো এই টিউটোরিয়ালের উদ্দেশ্য নয় । এর উদ্দেশ্য হলো PHP এর Object কে একটি সহজ-সরল দৃষ্টিকোণ থেকে অবলোকন করা । আমাদের মাঝে অনেকেই আছেন মৌলিক অনেক কিছু না বুঝেই অনেক বড় বড় জিনিস শিখে ফেলি বা ফেলতে পারি । মৌলিক জিনিসটা যে বুঝিনি বা বোঝা প্রয়োজন সেটাও বুঝতে পারি না বা এটা নিয়ে কখনও মাথা ঘামাই না । আবার অনেকেই আছেন মূল জিনিসটা ঠিকমত না বোঝার কারণে পুরো বিষয়টাই শিখতে পারেন না বা শিখলেও একটা ’কিন্তু’ থেকে যাওয়ার কারণে সব সময়ই অস্বস্তি বোধ করেন এবং পুরো বিষয়টা আয়ত্ব করতে হিমশিম খান । আজকের টিউটটি মূলত দ্বিতীয় শ্রেণীর শিক্ষার্থীদের জন্য । তাহলে চলুন, আমরা একদম সহজভাবে PHP এর Object বোঝার চেষ্টা করি ।
.
পরামর্শ: যাঁরা JavaScript এর Object মোটামুটি (খুব ভালোভাবে নয়) জানেন, তাঁরা আপাতত মাথা থেকে সেগুলো একদম সরিয়ে রাখুন । সেগুলো মাথায় ঢুকিয়ে রাখলে এটা বুঝতে সমস্যা হবে । পুরো বিষয়টা ভালোভাবে আত্মস্থ করার পর সেগুলো মাথায় আনলে তুলনামূলক বিচার করতে পারবেন । আবারও বলছি,  JavaScript এর Object আপাতত মাথা থেকে সরিয়ে রাখুন ।
…….
আমরা প্রথমে PHP তে একটি variable তৈরি করে সেটাতে একটি স্ট্রিং মান রাখবো:

$name = ‘rana’;


এই ভ্যারিয়েবলটিকে আমরা প্রিন্ট করাতে চাইলে নিচের কোডটি লিখি:

echo $name;


এর ফলে rana শব্দটি প্রিন্ট হবে ।
. ……
আমরা এখন একটি User Defined Function তৈরি করবো :

function study(){
    echo "He likes to study";
}


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

study();

উপরের কোডটি লেখার কারণে He likes to study বাক্যটি পেইজে প্রিন্ট হবে ।
এ বিষয়গুলো আমরা যারা PHP ব্যাসিক শিখেছি তারা সবাই জানি । এভাবে variable, function এবং যাবতীয় কোড সাধারণভাবে লিখে প্রোগ্রামিং করাকে বলে procedural programming ।
………..
এবার মাথা থেকে প্রোগ্রামিং মুছে ফেলে একটু অন্য প্রসঙ্গে যাওয়া যাক…. ধরুন আপনি যখন পড়াশোনা করেন তখন আপনার প্রয়োজন হয় খাতা, বই, কলম, পেন্সিল সহ হালের ল্যাপটপ(ফেইসবুকিং করার জন্য ;)), মোবাইল (পড়া বাদ দিয়ে খাজুরে আলাপ করার জন্য ;)) ইত্যাদি । এই জিনিসগুলো যদি ছড়িয়ে ছিটিয়ে থাকে মানে বই থাকলো টিভির রুমে, খাতা থাকলো ছোট ভাইয়ের স্কুল ব্যাগের ভিতর, মোবাইল বালিশের নিচে সোজা কথায় আপনার প্রয়োজনীয় জিনিসগুলো ছড়িয়ে ছিটিয়ে থাকলে আপনি যখন কাজ করতে বসবেন তখন ভীষণ সমস্যা হবে । কাজে গতি কমে যাবে । ছোট একটা কাজ করতে অনেক বেশি সময় এবং শ্রম দিতে হবে । প্রয়োজনীয় জিনিসগুলোকে একটি জায়গায় সাজিয়ে গুছিয়ে রাখলে সহজেই এবং কম সময়ে কাজ করা সম্ভব । আপনি আপনার প্রয়োজনীয় জিনিসগুলোকে এক জায়গায় একটি তাকে বা বাক্সে বা দেরাজে (ড্রয়ারে) ‍সুন্দর করে সাজিয়ে রাখলেন । এখন কোন জিনিসের প্রয়োজন হলে প্রথমেই আপনাকে হাত বাড়াতে হবে ঐ জিনিসটি যে তাকে বা বাক্সে বা দেরাজে রাখা আছে সেটাতে । তারপর সেখান থেকে প্রয়োজনীয় জিনিসটি বেছে নিতে হবে । এভাবে জিনিসটি খুঁজে পাওয়ার পদ্ধতি একটু ভিন্ন হলেও সময়, শ্রমব্যয় এবং হয়রানি কম হবে । এখানে বাক্স বা তাক বা দেরাজ হলো Object । ভেতরের জিনিসগুলো (বই, থাতা, কলম ইত্যাদি) হলো সম্পদ বা property ।
…….
পড়াশোনা বিরতির পর আবার আমরা প্রোগ্রামিংয়ে ফিরে আসি… উপরের মত করে variable, function বা এ জাতীয় অন্যান্য কোড প্রথাগত নিয়মে (procedural way) লিখে programming করতে অনেক বেশি কোড লিখতে হয় এবং অনেক সময় ব্যয় হয় । আমরা একটা কাজ করি, উপরের variable এবং function টিকে একটি দড়ি(কোড) দিয়ে বেঁধে ফেলি । কোড দু’টিকে নিচের কোডের second bracket/curly braces এর মধ্যে চোখ বন্ধ করে ঢুকিয়ে দেই ।
class person{}
এখানে class হলো একটি key word, আর person হলো একটি সাধারণ শব্দ যা আপনি ইচ্ছেমত দিতে পারবেন ।
এটার ভিতরে আমাদের variable এবং function কে ঢুকালে পুরো কোডটুকু হবে নিম্নরূপ:

class person{
    $name = 'rana';
    function study(){
        echo "He likes to study";
    }
} 


একদম সহজ হিসাব । আগের সাধারণ কোডগুলিকেই আরেকটি কোডের (class person{})মধ্যে ঢুকিয়ে আঁটি (class) বেধে ফেললাম । এটাকে বলে Object এর Template তৈরি করা (খুব সম্ভবত !) । এটা হচ্ছে object তৈরির প্রথম ধাপ ।এখানে আঁটির (class এর) নাম হলো person ।
person এর আগে new (key word) শব্দটিকে বসিয়ে দিলে বিষয়টা দাঁড়াবে ঠিক এরকম

new person;


কাজটি করে আমরা একটা বিশাল কাহিনী করে ফেলেছি । কাহিনীটা হলো আমরা একটি নতুন object এর উদাহরণ/দৃষ্টান্ত স্থাপন করলাম । আমরা অনেক সময় বলি না ! অমুক লোক মানবতার এক উজ্জ্বল/অনন্য দৃষ্টান্ত স্থাপন করেছেন । ঠিক সেরূপ আমরা object এর একটি উদাহরণ সৃষ্টি করলাম । প্রোগ্রামিংয়ের ভাষায় এই কাজটিকে বলে instanciate । new person এভাবে কোড লেখাকে বলে instanciate করা ।
এখনো কিন্তু আমাদের object তৈরি সম্পন্ন হয়নি L । উদাহরণটিকে মানে new person; টিকে একটি ভ্যারিয়েবলের মধ্যে রেখে দিলাম নিচের মত করে:


$myObject = new person;


এখানে $myObject ভ্যারিয়েবলটিই হলো আমাদের বহুল কাংখিত object ।
এবার মনে করে দেখুন তো আমরা যখন খাতা/কলম কে কোন ড্রয়ারে রেখে দিয়েছিলাম তখন খাতা/কলম পাওয়ার জন্য আমাদেরকে প্রথমে ড্রয়ার খুলতে হয়েছে । তারপর খাতা/কলম পেয়েছি । ঠিক তেমনি এখন আমরা ভ্যারিয়েবল $name কে echo করতে চাইলে আগের মত সরাসরি করতে পারবো না । আমাদেরকে অবজিক্ট ($myObject) এর মধ্য থেকে $name কে নিয়ে তারপর echo করতে হবে । যেমন-

echo $myObject -> name;

আগে লিখেছিলাম এভাবে

echo $name;

…..
এক্ষেত্রে name ভ্যারিয়েবলটিকে বলা হবে $myObject (অবজিক্ট)এর property । property মানে হচ্ছে সম্পদ/সম্পত্তি ইত্যাদি । একজন ব্যক্তির নাম তার একটা সম্পদ , তাই না ? property তে থাকে শুধু মান । যেমনটা $name এর মধ্যে একটি স্ট্রিং মান ‘rana’ রয়েছে ।
তেমনি

function study(){
echo "He likes to study";
}

কে কল করতে চাইলে এভাবে করতে হবে:


$myObject -> study();

আগে লিখেছিলাম এভাবে

study();


…..
এখানে, আর echo করতে হবে না । কারণ study() ফাংশনের মধ্যের মানটিকে আগেই echo করা আছে । অবশ্যই মনে রাখবেন, study() ফাংশনটিকে এখন আর ফাংশন বলা হবে না । এখন বলা হবে $myObject (অবজিক্ট) এর মেথড method । মেথডে থাকে অবজিক্টের কাজ করার ধরন বা প্রক্রিয়া । study() মেথড দ্বারা জানা যায় $myObject অবজিক্টটির study করার ধরন বা পছন্দ/অপছন্দ ইত্যাদি ।
………….
এ পর্যায়ে এসে php বসেরা নিশ্চয়ই হৈ চৈ করে উঠবেন—ঐ মিয়া এইডা কি php এর অবজিক্ট তৈরি করা হইলো ?

না… মানে… ইয়ে… মানে.. বস আসলে আমি এখনো অবজিক্ট তৈরি শেষ করিনি । আসলে অবজিক্ট তৈরি করা বা php oop শেখানোও আমার উদ্দেশ্য নয় । আমি এতক্ষণ ধরে এটাই বোঝাতে চেয়েছি যে, আমরা সাধারণ procedural প্রোগ্রামিং এ যেসব variable/function ইত্যাদি লিখি ঠিক সেগুলোকেই class person{} এর মধ্যে ঢুকিয়ে দিলেই সেগুলো একটি অবজিক্ট হয়ে যায় । যদিও এটা হলো অবজিক্ট তৈরির প্রথম ধাপ । যেমনটা এতক্ষণ বর্ণনা করার চেষ্টা করা হয়েছে ।
যাহোক আর একটু বলে আমার কথা শেষ করছি….
আশা করছি এখন পর্যন্ত আপনারা অন্তত এটুকু বুঝতে পেরেছেন যে, আমাদের ব্যবহৃত কোডগুলোকেই class এর মধ্যে ঢুকিয়ে অবজিক্ট (মানে অবজিক্টের নমুনা) তৈরি করা হয় যাতে পরবর্তীতে সেগুলোকে সহজে ব্যবহার করে প্রোগ্রামিং এর কাজকে সহজতর করা যায় ।
এবার আমরা আরও একটু উচ্চাঙ্গের কাজ করতে পারি… class এর ভেতরের ভ্যারিয়েবল/ফাংশন এ কিছু বৈশিষ্ট্য আরোপ করতে পারি যেমন- কোন ভ্যারিয়েবল/ফাংশন কোথায় কোথায় ব্যবহার করা যাবে সেটা নির্দিষ্ট করে দিতে পারি । এ কাজটি করার জন্য আমরা ব্যবহার করি তিনটি key word, যেমন- public, private এবং protected ইত্যাদি । এদেরকে বলা হয় access modifier ।
কোনো ভ্যারিয়েবল/ফাংশন-এর আগে public থাকলে ঐ ভ্যারিয়েবল/ফাংশনকে যেকোন জায়গায় (হোক সেটা class এর বাইরে, হোক সেটা ঐ class বা অন্য class এর ভিতরে) ব্যবহার করা যাবে ।
যদি থাকে protected তবে সেটাকে তার নিজের class এর মধ্যে ব্যবহার করা যাবে, এবং অন্য কোন class নিয়ে গিয়ে ব্যবহার করা যাবে । class এর বাইরে ব্যবহার করা যাবে না ।
আর private থাকলে শুধুমাত্র ভ্যারিয়েবল/ফাংশনটি যে class এর মধ্যে থাকে সেই class মধ্যেই ব্যবহার করা যাবে ।  অন্য কোন class বা class এর বাইরে ব্যবহার করা যাবে না ।
Access modifier সহ আমাদের class টি দেখতে হবে অনেকটা এ রকম :

class person{

    public $name = 'rana';
    private $email = 'rana@gmail.com';
    protected function study(){
        echo "He likes to study";
    }
} 


শুধুমাত্র আমাদের আগের variable/function এর আগে access modifier গুলোকে প্রয়োজন মত লিখে দিতে হবে ।

যা’হোক, আমি যেটা বোঝাতে চেয়েছি সেটা হলো, শুরুতেই class মধ্যে access modifier গুলোকে ঢুকিয়ে বিষয়টাকে জটিল না করে প্রথমে খুব সহজভাবে অবজিক্টকে কল্পনায় আনতে পারলে পরবর্তীতে Object Oriented Programming আমাদের জন্য পানি-ভাত হয়ে যাবে, ইনশাআল্লাহ ।

Friday, April 24, 2020

এসো বাইনারিকিয়া শিখি


------------
২৫ ‍এপ্রিল সকাল ৭:৩৮ – ১০:০৯
---------------------
ছোট্টবেলায় আমরা বাংলায় ১ থেকে ১০০ পর্যন্ত গণনা শিখতাম। এটাকে বলা হয় ‘শতকিয়া’। আমরা কত সহজেই না শতকিয়া শিখে ফেলি। একটার পর একটা সংখ্যা সহজেই চলে আসে। কিন্তু কমপিউটারের নিজস্ব কাজে ব্যবহৃত বাইনারি সংখ্যা পদ্ধতিতে কি অতটা সহজে ১ থেকে ১০০ পর্যন্ত আমরা লিখতে পারি?
ঠিক ধরেছ! আজকে আমরা বাইনারিতে ১ থেকে ১০০ পর্যন্ত গণনা করা শেখবো। অবশ্যই সহজ উপায়ে। আমি এটার নাম দিলাম ‘বাইনারিকিয়া’। নামটা মজার না? অবশ্যই মজার!! মজা স্কয়ার স্কয়ার!! মজার না হলেও কিচ্ছু করার নাই। কারণ-
”নাম রেখেছি বাইনারিকিয়া যখন দেখেছি
হয়তো বা সেই ক্ষণেই অংক কষেছি!
--
--
(শিক্ষার্থীদের) জল ভরা মেঘ ঐ দু’চোখে দেখতে আমি পেয়েছি
একলা মনে নির্জনেতে তাই সহজ করার উপায় খুঁজেছি।”
-
আমরা মানুষেরা সর্বোচ্চ ১০ টি অংক নিয়ে কাজ করতে পারি। অংকগুলো হলো 0, 1, 2, 3, 4, 5, 6, 7, 8, এবং 9। যেহেতু ১০টি অংক সেহেতু এই সংখ্যা পদ্ধতিকে বলা হয় Decimal বা দশমিক সংখ্যা পদ্ধতি।
কিন্তু মজার ব্যাপার হলো কমপিউটার যন্ত্রটা এতটাই নির্বোধ যে দশ দশটি অংক নিয়ে কাজ করার মত বুদ্ধি-সুদ্ধি তার একদমই নেই। সে শুধু বোঝে বিদ্যুৎ আছে আর বিদ্যুৎ নেই। বিদ্যুৎ থাকলে 1, আর না থাকলে 0। অর্থাৎ তার ব্যবহৃত অংক সংখ্যা দু’টি – 0 ও 1 । এটাকে বলে বাইনারি(Binary) সংখ্যা পদ্ধতি। আর 0 ও 1 কে বলে Bit(Binary Digit এর সংক্ষিপ্তরূপ)
-
দুধের বাচ্চারাও এগুলো জানে। এসব দুধ-ভাত বিষয়ক কথা বলা আমার এই টিউটোরিয়ালের মূখ্য উদ্দেশ্য নয়। কিছু একটা বলে শুরু করতে হয়। তাই বললাম আর কি? :P
-
বাইনারি সংখ্যা পদ্ধতিটি দুই অংক ভিত্তিক। তাহলে আমরা 20, 21, 22, 23 এভাবে লিখতেই পারি, তাই না? আসলে আমরা যা করতে যাচ্ছি তা হলো খুব জটিল কোনো হিসাব-নিকাশ না করেই 0 ও 1 দিয়ে ১, ২, ৩, ৪….১০০ এভাবে লিখার সহজ পদ্ধতি বের করার চেষ্টা করছি। প্রথমেই বলে নেয়া নিরাপদ মনে করছি, আমি নিজে নিজেকে সহজে বোঝানোর জন্য ;) এই পদ্ধতিটি চিন্তা করে বের করেছি। কোনো বই বা উৎসে এ পদ্ধতি থাকতে পারে আবার নাও থাকতে পারে। কিংবা এভাবে মাথা খাটানোর সুফল বাস্তবে পাওয়া যেতেও পারে আবার নাও যেতে পারে। কোনো কিছুর জন্যই কর্তৃপক্ষকে দায়ী করা যাবে না :P । শিখতে হবে নিজ দায়িত্বে, ব্যবহারিক মূল্য নিরুপন করতে হবে নিজ দায়িত্বে।
কথা অনেক হলো। এখন একটা কাজ কর। নিচের মত একটা ঘর এঁকে ফেল।
       23
     22
       21
        20





























লক্ষ্য করো, আমি ডান দিক থেকে লিখেছি।
20 এর মান 1 । তেমনি,
21 = 2
22 = 4
23 = 8
যেহেতু 20 এর মান 1 সেহেতু এই ঘরে 0 ও 1 কে একবার করে লিখতে পারবো। নিচে দেখ:
       23
     22
       21
        20



        0



        1




















এই ঘরে যদি আরো 0 ও 1 লিখতে চাই তাহলে আবারও একবার 0 এবং একবার 1 লিখতে পারবো। নিচে দেখ:
       23
     22
       21
        20



        0



        1



        0



        1













এভাবে 20 এর ঘরে একবার 0 ও একবার 1 লিখে যেত পারবো প্রয়োজন মত।
এবার আসা যাক 21 এর ঘরে। 21 এর মান 2 ।
এই ঘরে দুইটা করে 0 এবং দুইটা করে 1 লিখতে পারবো:
       23
     22
       21
        20


       0



       0



       1



       1














দুইবার 0 ও দুইবার 1 লেখার পর আবারও দুইবার 0 ও তারপর দুইবার 1, তারপর আবার দুইবার 0 ও দুইবার 1… এভাবে প্রয়োজন মত লিখতে পারবো। নিচে দেখ:
       23
     22
       21
        20


       0



       0



       1



       1



       0



       0



       1



       1


এবার দেখি 22 এর ঘর।
22 = 4
তারমানে চারবার 0 এবং চারবার 1 লেখা যাবে এই ঘরে:
       23
     22
       21
        20

       0
      


       0
      


       0
      


       0
      


       1
      


       1
      


       1
      


       1
      


তারপর আবার চারবার 0 ও চারবার 1:
       23
     22
       21
        20

       0
      


       0
      


       0
      


       0
      


       1
      


       1
      


       1
      


       1
      


       0



       0



       0



       0



       1



       1



       1           



       1



একই ভাবে আমরা 23 এর ঘরে আটবার করে 0 ও আটবার করে 1 লিখতে পারবো।
এবার বাইনারিকিয়া লেখার পালা। দু’টি পদ্ধতি আমি তোমাদেরকে দেখাতে পারি।
একটা হলো শর্টকাট পদ্ধতি। এতে মাথা একটু কম খাটালেও চলবে।
উপরে আমি যেভাবে ঘরগুলি পূরণ করেছি ঠিক সেভাবে চোখ বন্ধ করে ঘরগুলো পূরণ করে ফেল। পূরণ করার পর দেখতে হবে ঠিক এরকম:
       23
     22
       21
        20
       0
       0
       0
        0
       0
       0
       0
        1
       0
       0
       1
        0
       0
       0
       1
        1
       0
       1
       0
        0
       0
       1
       0
        1
       0
       1
       1
        0
       0
       1
       1
        1
       1
       0
       0
        0
       1
       0
       0
        1
       1
       0
       1
        0
       1
       0
       1
        1
       1
       1
       0
        0
       1
       1
       0
        1
       1
       1           
       1
        0
       1
       1
       1
        1

যেহেতু বাম পাশের শূন্য না রাখলেও চলে সেহেতু সেগুলো মুছে দিতে পারো।
       23
     22
       21
        20
      
      
      
        0
       
       
      
        1
      
      
       1
        0
      
      
       1
        1
      
       1
       0
        0
       
       1
       0
        1
      
       1
       1
        0
      
       1
       1
        1
       1
       0
       0
        0
       1
       0
       0
        1
       1
       0
       1
        0
       1
       0
       1
        1
       1
       1
       0
        0
       1
       1
       0
        1
       1
       1           
       1
        0
       1
       1
       1
        1

দেখতো একটা ম্যাজিক হয়ে গেছে কিনা। 0 থেকে 15 পর্যন্ত বাইনারি সংখ্যা লেখা হয়ে গেছে কিনা!

এবার আরেকটা পদ্ধতি দেখা যাক। একটু মাথা খাটাতে হবে।
       23
     22
       21
        20



        0



        1





















আমরা প্রথমেই শুন্য ও এক লিখলাম।
দুই লিখবো কিভাবে? প্রথম ঘরে নিয়ম অনুযায়ী একটা 0 বসবে। দ্বিতীয় ঘরে বসবে 1। কেন 1 বসবে? কারণ দ্বিতীয় ঘরে দুইটি 0 আর দুইটি 1 বসার কথা, তাই না? উপরের খালিঘরগুলোতে 0 এমনিতেই আছে। গুণে দেখ কয়টা ঘর? দুইটা ঘর। দুইটা ঘরে 0 আগে থেকেই আছে। তাহলে আমাদের ঘরে অবশ্যই 1 বসবে।
       23
     22
       21
        20



        0



        1


       1
        0

















এবার তিন লিখি চল। প্রথম ঘরে হিসেবমত 1 বসবে। আর দ্বিতীয় ঘরে বসবে 1। কারণ এই ঘরে আরেকটা 1 লিখলে দুইটা 0 ও দুইটা 1 এর হিসাব পূর্ণ হয়।
       23
     22
       21
        20



        0



        1


       1
        0


       1
        1


      
       









এখন একটা প্রশ্ন উঠতেই পারে- তিন লিখতে যে দুই ঘর লাগবে এটা কী করে বুঝবো? তিন ঘর লাগবে না কী করে বুঝবো?
এর দুইটি ব্যাখ্যা আমি তোমাকে এই মুহূর্তে দিতে পারি।
লক্ষ্য করি, তৃতীয় ঘরের মান 4(22)। 4 লেখার আগপর্যন্ত মানে 3 পর্যন্ত লেখার জন্য এই ঘরের আগ পর্যন্ত-ই যথেষ্ট। যখনই 4 আসবে তখনই এই ঘরের প্রথম প্রয়োজন পড়বে।
আরেকটা কৌশল হলো, প্রতিটা সারির প্রত্যেকটি কলাম 1 দ্বারা পূর্ণ না হওয়া পর্যন্ত এর পরের ঘরের প্রয়োজন পড়বে না। যখন প্রত্যেকটা ঘর 1 দ্বারা পূর্ণ হয়ে যাবে ঠিক তার পরের সংখ্যার জন্য আরেকটি নতুন ঘরের প্রয়োজন পড়বে। আমার দেখানো পদ্ধতিতে আরো কিছু সংখ্যা বানাতে থাকো। এক সময় দেখবে তুমি নিজেই অনেক কিছু আবিষ্কার করে ফেলেছো।
আচ্ছা এবার চার লিখে ফেলি। কি বল?
প্রথম ঘরে বসবে 0।
দ্বিতীয় ঘরে বসবে অবশ্যই 0। কারণ এই ঘরে ইতিমধ্যে দুই বার 0 ও দুইবার 1 বসানো হয়ে গেছে। এবার তো আবার 0 দিয়েই শুরু করতে হবে, তাই না?
লক্ষ্য করি, উপরের সারির দুই কলামে 1 1 দ্বারা পূর্ণ হয়ে গেছে। তাহলে এবার তৃতীয় ঘরটি ব্যবহার করতে হবে। তৃতীয় ঘরটির উপরের চারটি ঘর ফাঁকা মানে ওখানে 0 আছে। যেহেতু এই ঘরে চারটি 0 ও চারটি 1 বসাতে হবে সেহেতু আমরা অবশ্যই 1 বসাবো।(পরবর্তী সংখ্যাগুলোর জন্য আরো তিনটা 1 এই ঘরে বসানোর সুযোগ আমরা পাব)

       23
     22
       21
        20



        0



        1


       1
        0


       1
        1


       0
        0









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