গত সংখ্যায় আমরা অ্যালগরিদমের কথা বলেছিলাম। অ্যালগরিদম হলো একটা সমস্যা সমাধানের ধাপের বর্ণনা। এই বর্ণনা এমন হতে হবে, যাতে কোনো কিছু চিন্তা না করে শুধু এই ধাপগুলো পরপর করে গেলেই সমস্যাটি সমাধান হয়ে যায়। যদিও শুনতে খুব সহজ শোনায়, কিন্তু বেশির ভাগ সময়ই অ্যালগরিদম লেখার ব্যাপারটা বেশ জটিল। আর সেটা যদি হয় কম্পিউটারের জন্য লেখা অ্যালগরিদম, তাহলে কাজটা তোমাদের কাছে অনেক কঠিনই মনে হতে পারে। কিন্তু এটি মোটেও কঠিন কিছু নয়। অভ্যাস করে ফেলতে পারলেই আমরা খুব সহজে লিখে ফেলতে পারব বিভিন্ন জটিল সমস্যার সহজ অ্যালগরিদম।
চরকির মতো ঘুরি
কম্পিউটার প্রোগ্রামিংয়ের একদম প্রাথমিক দিকে সবার যে ব্যাপারটা নিয়ে সমস্যা হয়, তা হলো লুপ (loop)। লুপ হলো এমন এক ব্যবস্থা, যেটা একই ধরনের কাজ বারবার করতে সাহায্য করে। মজার কথা হলো, আমাদের দৈনন্দিন জীবনে কিন্তু লুপের উদাহরণ দ্বারা ভরপুর। কিন্তু আমাদের চোখে তা পড়ে না। চলো, দেখে নিই এ রকম কিছু উদাহরণ।
তোমার ঘড়িতে এখন কয়টা বাজে? যতটাই বাজুক না কেন, ২৪ ঘণ্টা পর তুমি আবারও একই সময়ে পৌঁছে যাবে, তাই না?
আমাদের সবার স্কুল/কলেজ/বিশ্ববিদ্যালয়ে এই রুটিন মেনে চলতে হয়। সেই রুটিন যখন দেওয়া হয়, তখন কি তোমার পুরো বছরের রুটিন দেওয়া হয়? না, তোমাকে শুধু সাত দিনের রুটিন দেওয়া হয়। কারণ ওই সাত দিনই বারবার ঘুরে ঘুরে আসবে, তাই না? কাজেই পুরো বছরের রুটিন না দিয়ে, শুধু সাত দিনের রুটিন লিখে দেওয়াটাই যথেষ্ট। ওটাই পুরো বছর চরকির মতো ঘুরবে।
আমরা প্রোগ্রামাররা একে বলি কোনো কাজকে লুপে ফেলে দেওয়া।
প্রতিদিন দিন-রাতের যে চক্র, সেটাও কিন্তু একটা লুপ।
প্রতি মাসে কিশোর আলোর সংখ্যা প্রকাশ হওয়াও একটা লুপ।
এত কিছু বলার কী কারণ? কারণ হলো দৈনন্দিন জীবনে এত লুপ থাকা সত্ত্বেও আমরা প্রথম এই লুপেই গিয়ে প্রথম প্রোগ্রামিংয়ে আটকাই। তাই আজকে আমরা এই লুপের মাধ্যমে কিছু সমস্যার সমাধান শিখব।
লুপ ব্যবহারের লক্ষণ
কীভাবে আমরা বুঝব যে একটা কাজে লুপ ব্যবহার করা যাবে? প্রথমত লুপ একই (বা একই ধরনের) কাজ বারবার করে দিতে পারে। কাজেই যখনই আমি কোনো কাজের মধ্যে ধারা খুঁজে পাব, তখনই লুপ ব্যবহার করতে পারব।
সি-তে লুপ লেখার তিনটি উপায় আছে। আমরা আজকে শুধু while ব্যবহার করব। while লুপ ব্যবহার করার পদ্ধতি হলো এটি একটি শর্ত, যতক্ষণ সত্যি হবে ততক্ষণ চলবে। while লুপের ভেতরে যে কাজটা আমরা বারবার করতে চাই, সেটিকে { } দিয়ে আটকে দিতে হবে। নিচের উদাহরণে আমরা পাঁচবার বাংলাদেশ আউটপুট পাব।
while এর পর ব্রাকেটের মধ্যে যা লেখা, তা হলো while এর শর্ত বা condition. এটি যতক্ষণ সত্য থাকবে, ততক্ষণই লুপটা ঘুরতে থাকবে এবং এর ভেতরে লেখা লাইনগুলা প্রতিবার কাজ করতে থাকবে। এখানে লেখা শর্তটি হলো, i<=5। যেহেতু র এর শুরুর মান 1 কাজেই শুরুতে শর্তটি সত্য। পরে i++ করে i এর মান এক এক করে বাড়াতে থাকলে একসময় যখন i এর মান ৬ হয়ে যায়, তখন ওই শর্তটি মিথ্যা হয়ে যায়। তখন প্রোগ্রামটি লুপ থেকে বের হয়ে আসে।
যদি আমরা এমন একটা প্রোগ্রাম লিখি যেটা ১০০ থেকে ছোট সব জোড় সংখ্যা দেখাবে? সেটি করতে আমাদের লুপ দরকার হবে। সমাধানটি দেখতে অনেকটা নিচের মতো হবে:
একটু চিন্তা করে দেখো তো এভাবে বিজোড় সংখ্যাগুলোও কি দেখাতে পারবে কি না।