ফিবোনাচ্চি নাম্বার আর সিরিজের কথা আমরা অনেকেই হয়ত শুনেছি, আবার এমন মানুষের সংখ্যাও কম না যারা শুনিনি। যাদের ব্যাকগ্রাঊন্ড সিএসই তারা তো অবশ্যই জানে, যাদের সিএসই নয় তারাও অনেকেই জানি। আমি সিএসই এর না, তাও অল্প-সল্প কোডিং করি। আমার এই পোস্ট তাদের জন্য যারা কোডিং এ অল্প-অল্প আগ্রহী। বেশি আগ্রহ থাকলে আমার মাস্টারিতে কাজ হবে না, আসল গুরু দরকার হবে। ওইটা নিজ দায়িত্বে খুজে নেবেন।:P
ফিবোনাচ্চি নাম্বার আর সিরিজ সম্পর্কে একটুখানি বলে নেই। এটা হল এমন একটা নাম্বার সিরিজ যেটার কোন একটা সংখ্যা পাওয়া যায় আগের দুটো সংখ্যা যোগ করে। সিরিজটা নিচে দেখুন, তাহলেই বোঝা যাবে।
১,১,২,৩,৫,৮,১৩,২১……. এভাবে চলতে থাকবে
তিন নাম্বার সংখ্যা পাওয়া গেছে আগের ১ আর ১ যোগ করে, চার নাম্বার সংখ্যা পাওয়া গেছে ১ আর ২ যোগ করে, পাঁচ নাম্বার সংখ্যাটা এসেছে ২ আর ৩ যোগ করে। সিরিজের সবগুলো সংখ্যাই এভাবে পাওয়া যাবে।
এখন প্রশ্ন হল এটাকে আমরা কোড করব কিভাবে। উত্তরটা কিন্তু সহজ। মুখে মুখে যেভাবে করছি, কোডও আমরা সেভাবে করব,মানে আগের দুইটা সংখ্যা যোগ করে পরের সংখ্যাটা বের করব। তাহলে একদম প্রথম সংখ্যা দুইটা কই পাবো? :|এটাই আসলে মজা। আমরা নিজেদেরকে পন্ডিত হিসেবে মেনে নিয়ে ওই সংখ্যা দুইটাকে আগে থেকে আমরা জানি ধরে নেব।B-)এছাড়া আর কোন উপায় নেই।
তাহলে এখন শুরু করি।
আমরা যে সংখ্যাগুলোকে যোগ করব তাদেরকে ভ্যারিয়েবলের ভেতর রাখতে হবে, যোগ করে যা পাবো সেটাকেও ভ্যারিয়েবলের ভেতর রাখতে হবে। তাহলে ধরি প্রথম ভ্যারিয়েবল দুইটা হল a আর b, এদের যোগফল হল । পিএইচপিতে ভ্যারিয়েবলের আগে ডলার সাইন দিতে হয়,কমেন্ট এর আগে // দিতে হয়, আর পুরো কোডটাকে <?php ?> দিয়ে আটকে দিতে হয়।
তাহলে আমাদের আসল কোডিং লাইনটা হল
$c=$a+$b;
বাকিগুলা এইটার হেল্পার হিসেবে কাজ করবে, মানে এই লাইনটাই হল algorithm.
শুধু একটা ছোট কাজ বাকি।
সিরিজটা আবার দেখি..
১,১,২,৩,৫,৮,১৩,২১…….
প্রথমে a ছিল ১, b ছিল ১, c ছিল ২।
পরের বার a হয়ে গেল ১ (a নিল b এর মান), b হয়ে গেল ২ (b নিল c এর মান)। c হয়ে গেল ৩।
তারপরের বার a হয়ে গেল ২ (a নিল b এর মান), b হয়ে গেল ৩ (b নিল c এর মান)। c হয়ে গেল ৫।
তার মানে a পরের বার হয়ে যাবে b, আর b পরের বার হয়ে যাবে c।
এই কথাটা আমরা কোডিং এর সময় লিখব এভাবে-
$a=$b;
$b=$c;
এখন দশম ফিবোনাচ্চি নাম্বার বের করতে গেলে আমাদেরকে কাজটা দশবার(একটু গুনে দেখতে হবে) করতে হবে, তা নাহয় করলাম। কিন্তু একশতম সংখ্যা বের করার সময় কি হাতে করা সম্ভব?:-# নাহ, সম্ভব না। তাই আমরা একটা লুপ ব্যবহার করব:)। আমি for লুপ ব্যবহার করেছি।
($n=10; দিয়ে বোঝান হচ্ছে আমি দশম ফিবোনাচ্চি নাম্বার বের করতে চাচ্ছি)
for($a=1,$b=1,$c=0,$i=0 ; $i<$n ; $i++)
এই লাইনটা দিয়ে আমি বোঝাচ্ছি a,i এবং b এর প্রাথমিক মান ১, c এর প্রাথমিক মান শূন্য।
প্রথম সেমিকোলন এর পরের পরের অংশ দিয়ে বোঝান হচ্ছে i এর মান n এর মানের সমান হবার আগেই আমি সব হিসাব-নিকাশ শেষ করে ফেলব।
শেষ সেমিকোলন এর পরের অংশটুকু দিয়ে বোঝান হচ্ছে i এর মান এক এক করে বাড়তে থাকবে। এখানে i এর ভুমিকা খুব গুরুত্তপূর্ন। i হল কন্ট্রোল ভ্যারিয়েবল। আমি কয়বার কাজটা করব সেটা i ঠিক করে দিচ্ছে।
echo $c.’ ‘;
এই লাইনটা দিয়ে c এর মান প্রিন্ট করা হচ্ছে আর প্রতিটা মানের পর একটা করে খালি স্পেস প্রিন্ট দেয়া হচ্ছে।
শেষ। আমাদের কোডিং কিন্তু শেষ।
এবার আসেন পুরো কোডটা আমারা একসাথে দেখি।
<?php
$n=10;//n-th Fibonacci number
for($a=1,$b=1,$c=0,$i=0;$i<$n;$i++)
{
$c=$a+$b;
if ($i==0) echo $a.’ ‘.$b.’ ‘;
$a=$b;
$b=$c;
echo $c.’ ‘;
}
?>
কোডটা কাজ করে কিনা দেখতে চাইলে আপনাকে যেতে হবে http://get-a-solution.blogspot.com/2012/03/php-code-for-fibonacci-series.html
কোন প্রশ্ন থাকলে জিজ্ঞেশ করুন, যে কোন প্রশ্নের উত্তর দিতে চেষ্টা করব। কারন there are no stupid questions, there are just questions.
– বজ্রনিনাদ
অনেকটা C এর মতোই। কেবল ভেরিয়েবলের আগে $ সাইন দিয়ে নিলেই হলো 😀
প্রোগ্রামিং পোস্টের জন্য ধন্যবাদ 🙂
আরেকটু সোজা করা যেত মনে হয়। পরের বার a হয়ে গেলো এই জায়গায়
সিকোয়েন্সটা আবার লিখে দিলে ভালো হত।
ইয়াদ এর সি প্রোগ্রামিং ছিলো এর একটা চমৎকার সিরিজ ছিল। চালু রাখল না!
http://shorob.com/2011/08/14/c-programming-language-%E0%A6%B6%E0%A6%BF%E0%A6%B6%E0%A7%81%E0%A6%A6%E0%A7%87%E0%A6%B0-%E0%A6%89%E0%A6%AA%E0%A6%AF%E0%A7%8B%E0%A6%97%E0%A7%80-%E0%A6%9F%E0%A6%BF%E0%A6%89%E0%A6%9F%E0%A7%8B%E0%A6%B0/
আরেকটা কাজ করা যেতে পারে, লেখার মান এর উন্নতির জন্য আপনার পরিচিত জুনিয়রদের সাথে এই লেখা শেয়ার করতে পারেন। তারপর তাদের মতামত মন্তব্য নিয়ে ঠিক করা যেতে পারে
পড়লাম। 😀 পড়াশুনা বুঝি না!
:welcome:
যদিও পারি না, কিন্তু প্রোগ্রামিং খুব মজার মনে হয়, কোর্স ওয়ার্কে সামান্য সি শিখেছিলাম, মিল আছে পিএইচপি এর সাথে……
পিএইচপি ক্লাসে হাজির থাকবো, আরো শিখতে চাই…… 🙂
সরবে স্বাগতম!
প্রোগ্রামিং এ খুব আগ্রহ ছিল। কিন্তু, যে সাবজেক্টে পড়েছি, একটাই কোর্স ছিল প্রোগ্রামিং এর আর সে কোর্স এমনই পড়িয়েছে আমার আগ্রহ ৬ তলা থেকে নিচে লাফ দিয়েছে 🙁
আপনার বোঝানো ভালো হয়েছে। php অনেকটা C প্রোগ্রামিং এর মতই। আশা করি আপনার প্রোগ্রামিং বিষয়ক পোস্ট চলবে…… 🙂
:welcome: