বাংলায় পিএইচপি নিয়ে কিছুমিছু
পিএইচপি বেসিকস ৭: লুপ, for দিয়ে
আমাদের আগের আর্টিকেলে আমরা বলেছিলাম যে পিএইচপিতে সাধারনভাবে চার রকমের লুপ আছে এবং আমরা while ও do-while নিয়ে আলোচনা করেছিলাম। এই আর্টিকেলে আমরা দেখব কিভাবে for দিয়ে লুপ তৈরী করা যায়।
<?php
//filename: /home/hasin/www/loop3.php
for($i=0;$i<10;$i++)
{
echo $i."
";
if ($i>7) break;
}
?>
এই হল ফর লুপের উদাহরন। চলুন একটু কোড বোঝা যাক
লাইন # ৩ এ আমরা আমাদের for লুপ শুরু করেছি। এখানে একটা জিনিস খেয়াল করুন, for লুপের কন্ডিশনে তিনটি অংশ আছে। একটা হল
$i=0; এটা দিয়ে আমরা একটি ভ্যারিয়েবলের মান ঠিক করে দিয়েছি
$i<10; এটা দিয়ে আমরা কন্ডিশন ঠিক করেছি, যে যতক্ষন $i এর মান ১০ এর নিচে থাকবে ততক্ষন পর্যন্ত আমাদের for লুপ কাজ করবে।
$i++ এটা দিয়ে আমরা ভ্যারিয়েবলের মান এক এক করে বাড়িয়েছি
লাইন # ৪ এ আমরা for লুপের স্কোপ শুরু করেছি সেকেন্ড ব্র্যাকেট দিয়ে যা শেষ হয়েছে লাইন # ৭ এ
লাইন # ৫ এ আমরা $i এর মান প্রিন্ট করেছি
লাইন # ৬ এ আমরা চেক করেছি যে $i এর মান ৭ এর বেশি কিনা। বেশী হলে আমরা break লিখে পিএইচপিকে বলছি for লুপ থেকে বের হয়ে যেতে।
চলুন একটা মজার কোড লেখা যাক। আমরা নিচের কোড টুকু দিয়ে দেখব যে একটি সংখ্যা মৌলিক সংখ্যা (prime number) কিনা . তার আগে জেনে নেই যে প্রাইম নাম্বার বের করার জন্য অনেক জটিল জটিল অ্যালগরিদম রয়েছে, কিন্তু সবচেয়ে সহজটি হল যে সংখ্যা আমরা চেক করব তার স্কয়ার রুট বের করব। এবার ২ থেকে স্কয়ার রুট পর্যন্ত একটি লুপ চালিয়ে আমরা দেখব যে আমাদের সংখ্যাটি এই সংখ্যাগুলোর কোনোটা দিয়ে ভাগ যায় কিনা (অর্থাৎ ভাগফলের অবশিষ্ট ০ কিনা) – যদি ০ হয়, তাহলে এটা প্রাইম নাম্বার নয়। চলুন দেখা যাক কোডে কিভাবে এটা লেখা যায়
<?php
//filename: /home/hasin/www/primenumber.php
$number = 29;
$isPrime = true;
$sqrt = floor(sqrt($number));
for ($i=2;$i<=$sqrt;$i++)
{
if($number % $i == 0)
{
$isPrime = false;
break;
}
}
if ($isPrime)
echo "{$number} is a prime number";
else
echo "{$number} is not a prime number";
?>
কিভাবে কি হল বোঝার জন্য চলুন একটু কোড দেখি।
লাইন # ৪ এ আমরা একটি ভ্যারিয়েবল $isPrime এর মান true রেখেছি। কারন লুপ চলার সময় কোন সংখ্যা প্রাইম নাম্বার নয় এ ব্যপারে নিশ্চিত হলে আমরা এই ভ্যারিয়েবলের মান false করে দিব।
লাইন # ৫ এ আমরা সংখ্যাটির স্কয়ার রুট বের করেছি sqrt ফাংশন দিয়ে। এটা একটা পিএইচপির একটা বিল্ট ইন ম্যাথ ফাংশন। এরপরে আমরা একই লাইনে এই স্কয়ার রুটের দশমিক অংশ বাদ দিয়েছি floor ফাংশন দিয়ে। এই ফাংশন গুলো সম্পর্কে বিস্তারিত জানার জন্য আমাদের ম্যাথ সংক্রান্ত আর্টিকেলটি পড়ুন
বাকি অংশটুকুতে আর নতুন কিছু নেই। আমাদের আগের আর্টিকেল গুলো পড়ে থাকলে আপনি অনশ্যই বুঝতে পারবেন বাকি লাইন গুলোতে আমরা কি করেছি।
December 14, 2009 - 1:25 am
বেসিকস ৮, কবে? এতদিন নিঃশব্দে পড়ছিলাম। আর চুপ রইতে পারলাম না। হাসিন, ভায়া জলদি
December 14, 2009 - 1:26 am
বেসিকস ৮, কবে? এতদিন নিঃশব্দে পড়ছিলাম। আর চুপ রইতে পারলাম না।
echo “হাসিন, শুভশ্য শীঘ্রম”;
December 14, 2009 - 2:23 am
আসিতেছে শীঘ্রই
December 14, 2009 - 5:02 am
ইয়ে, হাসিন ভাই, আমার কম ঘিলুঅলা মাথায় একটু পেজগি লেগে গেল।
“যদি ০ না হয়, তাহলে এটা প্রাইম নাম্বার নয়।” তাহলে যদি ০ হয় তাহলে প্রাইম নাম্বার হবে।
আবার
“if($number % $i == 0)
$isPrime = false;”
এখানে তাহলে মান শুণ্য হলে $isPrime কে False বলব কেন?
December 14, 2009 - 5:14 am
ওরে আমার কপাল! এবার বুঝেছি। “যদি ০ না হয়, তাহলে এটা প্রাইম নাম্বার নয়” লাইনটা “যদি ০ হয়, তাহলে এটা প্রাইম নাম্বার নয়” হবার কথা। আমার গবেটীয় বুদ্ধিতে এইটা আগে আসে নাই। :’(
December 14, 2009 - 1:51 pm
স্যরি তারুন্য ভাই
আপনি সঠিক। এটা তাড়াতাড়ি টাইপ করতে গিয়ে টাইপো হয়ে গেছে
থ্যাংকস ফর দ্য ইগলস আই
– ঠিক করে দিয়েছি।
December 21, 2009 - 11:46 pm
why we use $isPrime variable here?We can do it easily instead of using $isPrime by following:-
<?php
//filename: /home/hasin/www/primenumber.php
$number = 29;
$sqrt = floor(sqrt($number));
for ($i=2;$i
please explain??