ক্যাপ্টেন জোনাথন আঠেরো বছর বয়সে
দূর প্রাচ্যের এক দ্বীপে ধরলেন এক পেলিক্যান

জোনাথনের সেই পেলিক্যান একদিন সকালে
ডিম পড়লো একটা ধপধপে সাদা, এবং কি আশ্চর্য
তার থেকে বেরিয়ে এলো ঠিক আগেরটার মত এক পেলিক্যান

এই দ্বিতীয় পেলিক্যানটাও যথাসময়ে
একটা সাদা ডিম পাড়লো, এবং তার থেকে
অবধারিত ভাবেই এলো আর একটি, এবং এইরকম চলতেই থাকলো ...

এই ব্যাপারটা চলতে পারে বহুকাল ধরেই
যদি না কেউ মাঝপথে একটা ওমলেট বানিয়ে নেয়!
হ্রোবেয়ার দেনো

৬ লুপায়িত হুকুশ পাকুশ

যখন আমাদের একই কাজ বারবার করা লাগে, আমরা তখন লুপ ব্যবহার করি। ধরো আমি শীতের ছুটি কাটাতে যাবো দাদুবাড়িতে - আমাকে তিনটা জামা নিতে হবে। আমি করবো কি একটা একটা করে জামা নিবো, আর হাতে গুনবো আমি কয়টা জামা নিয়েছি। যখন দেখবো আমার হাতের আঙ্গুল গোনায় তিনটা হয়ে গেছে তখন আমি থেমে যাবো। লুপের আইডিয়াটা ঠিক তাই।

৬.১ while loop

আমরা যখন এটা কোড করবো তখন আমাদের চিন্তাটা থাকবে একই রকম।

খেয়াল করো, শুরুতে আমরা i নামের ভ্যারিয়েবলটাকে শূণ্য বানিয়ে নিচ্ছি। তারপর হচ্ছে কি জানো, যতক্ষণ পর্যন্ত i $3$ এর ছোট থাকছে ততক্ষণ সে লুপ এর ভিতরে ঢুকছে।

এটা অনেকটা এরকম -

$i$ = $0$

$i$($0$) কি $3$ এর চে' ছোট?
হু ছোট
লুপ এর ভিতর ঢুকছি
নিচ্ছি নতুন জামা
$i$ কে এক বাড়াচ্ছি $i$ এখন $1$

$i$($1$) কি $3$ এর চে' ছোট?
হু ছোট
লুপ এর ভিতর ঢুকছি
নিচ্ছি নতুন জামা
$i$ কে এক বাড়াচ্ছি $i$ এখন $2$

$i$($2$) কি $3$ এর চে' ছোট?
হু ছোট
লুপ এর ভিতর ঢুকছি
নিচ্ছি নতুন জামা
$i$ কে এক বাড়াচ্ছি $i$ এখন $3$

$i$($3$) কি $3$ চে' ছোট?
নাহ ছোট না।
বেশ তো আমার কাজ শেষ এখন আমি এখন ঘুমাতে যাবো। :)

তো while লুপ এর স্ট্রাকচার হচ্ছে এরকম

while condition:
    do something
যতক্ষণ কন্ডিশনটা সত্যি থাকবে, ততক্ষণ লুপটা ভিতরের কাজগুলো করতে থাকবে।

৬.২ for loop

আমরা উপরে যেই কাজটা করলাম সেটা আরেকভাবে করা যায়।

এবার ধরো আমাকে ৬ থেকে ১১ এর আগ পর্যন্ত সংখ্যাগুলোর বর্গকে বের করতে হবে তাহলে সেটা হবে এরকম

তারপর ধরো আমাকে ১০০ এর চে' ছোট সবগুলো বেজোড় সংখ্যা বের করতে হবে। তার মানে হচ্ছে ১ লিখে আমি ২ কে বাদ দিবো, তারপর ৩ কি লিখে ৪ কে বাদ দিবো, তাই না?

এটা while loop দিয়ে লিখলে এরকম হবে

আর range দিয়ে লিখলে হবে কি

এর মানে হচ্ছে আমি ১ থেকে শুরু করবো, চলতে থাকবো যতক্ষণ ১০০ এর চেয়ে বড় না হয়ে যায়, আর প্রতিবার ১ প্রিন্ট করার পর i কে ২ করে বাড়াবো। মানে i যদি প্রথম ধাপে ১ থাকে দ্বিতীয় ধাপে সে ৩ হয়ে যাবে।

৬.৩ লিস্টের উপর লুপ চালানো

মনে আছে আমাদের একটা লিস্ট ছিলো ফলের?

এখন যদি কেউ লিস্টটা দিয়ে বলে সবগুলো ফলের নাম প্রিন্ট করো - তাহলে সেটা তিন ভাবে করা যায়

৬.৩.১ গায়ের জোরে

৬.৩.২ লুপ চালিয়ে

কিংবা

৬.৩.৩ পাইথন স্টাইলে

এই স্টাইলটা অনেকটা বাংলা বলার মত: ফলের লিস্টির প্রতিটা ফলের জন্য প্রিন্ট করো ফলের নাম।

৬.৪ break

ধরো আমার একটা ফলের দোকান আছে। একজন হঠাৎ করে এসে আমাকে জিজ্ঞেস করলো, 'তোমার কাছে কি জাম্বুরা আছে?'। তো আমার করতে হবে কি, সব তাক ঘুরে এসে খুঁজে দেখতে হবে আসলেই জাম্বুরা আছে কিনা, তাই না? যদি জাম্বুরা পেয়ে যাই আমার আর খোঁজার দরকার নেই। তো আমরা একটা লুপ থেকে বের হয়ে আসতে পারি ব্রেক করে।

যেমন এই কোডটা হবে এরকম

অবশ্য এই কাজটা আরেকভাবে করা যায় পাইথনে। আমি ওভাবে দেখিয়েছি শুধু তোমাকে ব্রেক করতে শেখানোর জন্য।

আবার এভাবেও লেখা যায়, কারণ আমরা ছোটদের ভালোবাসি!

৬.৫ continue

মনে আছে আমরা একটু আগে এক থেকে একশ পর্যন্ত পর্যন্ত সবগুলো বেজোড় সংখ্যাকে প্রিন্ট করে ছিলাম? আমরা এখন চাই এক থেকে একশ পর্যন্ত সব বেজোড় সংখ্যার যোগফল প্রিন্ট করতে। আমরা যখনই একটা জোড় সংখ্যা পাবো - আমরা সেটাকে পাত্তাই দিবো না - আমরা continue করবো পরের সংখ্যাটার জন্য।

এখানে i % 2 মানে হচ্ছে $i$ কে যদি $2$ দিয়ে ভাগ করি ভাগশেষ কত থাকবে সেটা।