প্রথম পর্বে আমরা Hello World প্রিন্ট করলাম
এবং হতাশ হলাম…হতাশ হলাম এই কারণে যে আমরা সামান্য একটা লাইন আউটপুট পাওয়ার
জন্য ৬-৭ লাইনের একটা প্রোগ্রাম লিখে ফেলেছি…এর চেয়ে তো নোটপ্যাড খুলে
ধুমধাম হ্যালো ওয়ার্ল্ড লিখে ফেললেই হয়..তাই না? সহজ একটা লাইন আউটপুট করতে
যদি এই লেভেলের তেনা প্যাচানো লাগে তাহলে প্রোগ্রামারের “ভাব” জিনিসটা
থাকলো কই?
ভাব আছে…আসলেই আছে..আর এই পর্বটাই ওই ভাব বাড়ানোর কাজ কারবার নিয়েই…
জলিল সাকিব দুই বন্ধু…সাকিব একজন সাধারণ পিসি ইউজার,আর জলিল
বেসিক লেভেলের প্রোগ্রামার…জলিল প্রতিদিন অনেক কষ্টকরে প্রোগ্রামিং
শেখে…হ্যালো সখিনা,হ্যালো জরিনা প্রিন্ট করে দেখায়…আর সাকিব নোটপ্যাড খুলে
ধুমধাম টাইপ করে তার ভাব নষ্ট করে দেয়…ব্যাপারটা জলিলের মোটেই ভালো
লাগেনা…তো জলিল একদিন কোড লিখলো…আউটপুট আসলো 1-5 পর্যন্ত সব সংখ্যা…সাকিব
রীতিমত তারা নোডপ্যাড ওপেন করে ১-৫ টাইপ করে জলিলের দিকে তাকিয়ে সিরাম একটা
হাসি দিলো…এরপর জলিল কোড লিখলো…১-১০০০ পর্যন্ত প্রিন্ট করলো,ফিবোনাক্কি
সিরিজের নাম্বারগুলা বের করে দেখালো,অনেকগুলা ইনপুট দেওয়া নাম্বারের যোগফল
নির্নয় করলো,স্বাভাবিক সংখ্যার স্কয়ারের যোগফল,কিউবের যোগফল,প্রাইম নাম্বার
বের করলো,আর্মস্ট্রং নাম্বার চেক করলো,ফ্যাক্টোরিয়াল নাম্বার বের করলো…
সাকিব শকজ,জলিল রকজ 8|
সেইদিন জলিল যে কাজটা করে “অসম্ভবকে সম্ভব” করেছিলো,সেই কাজটা আজ আমরাও
করবো…আর সেই কাজটাকে প্রোগ্রামিং এর ভাষায় বলে লুপিং…লুপিং হলো কম্পিইলারকে
দিয়ে একই কাজ বারাবার করে নেওয়া…কোন শর্তদিয়ে সেই শর্তের সাপেক্ষে
স্টেটমেন্ট দিয়ে সেই কাজ বারবার করিয়ে নেওয়া…আর জলিলের কাজ দেখে আপনারা
অনুমান করতেই পারতেছেন যে আমরা এখন লুপিং দিয়ে কি কি করতে যাচ্ছি…সেসব পরে
দেখানো যাবে,তার আগে লুপিং নিয়ে ব্যাসিক কিছু আলোচনা করা যাকঃ
লুপঃ
একটু আগেই বলছিলাম,লুপ হল একই ধরণের কাজ বারবার করার একটি প্রক্রিয়া।
একটু ভয়েলো মত লক্ষ করলে দেখা যাবে আমাদের দৈনন্দিন জীবনেই বিভিন্ন ধরণের
লুপ চলছে । প্রতিটা মানুষ কিছু না কিছু লুপের মধ্যে আছে । যেমনঃ আমরা
প্রতিদিন সকালে ঘুম থেকে উঠি, সারাদিন বিভিন্ন কাজ করি, রাতে ঘুমাতে যাই ।
পরেরদিন সকালে আবার ঘুম থেকে উঠি,ঘুম থেকে উঠে ফেসবুক গুতাই,ফ্রেশ
হই,ব্রেকফাস্ট করি, স্কুল/কলেজ/ভার্সিটি/কর্মস্থলে যাই,ব্যগে করে “বিদ্যা”
নিয়ে যাই,বিদ্যা নিয় ফিরি,এরপর বাসায় আসি,অন্যান্য কাজকর্ম করি । এভাবে
চব্বিশ ঘণ্টার একটা লুপ চলছে। আবার সপ্তাহের ৭ দিন, একেকদিন আমরা একেক
রুটিন অনুযায়ী কাজ করি। সপ্তাহ শেষে আবার সেই একই রুটিন অনুযায়ী আবার কাজ
করি, এভাবে একের পর এক চলতে থাকে। এভাবে ৭ দিনের কর্মকাণ্ড একটি লুপের
মধ্যে চলছে। বছরের ৩৬৫ দিনের কর্মকান্ড’র লুপ চলছে । আমরা দিনদুনিয়ার মায়া
ত্যাগ করে পরপারে না যাওয়া পর্যন্ত চলতেই থাকবে…
প্রোগ্রামিং এর ক্ষেত্রেও দেখা যায় একই ধরনের কাজ, কেবল কিছু মানের
পরিবর্তন ঘটিয়ে বারবার করতে হয়। তখন কাজটির জন্য লুপ ব্যবহার করা হয়। এতে
যে কাজগুলো বারবার করতে হবে সেগুলো একসাথে লিখে যতবার করতে হয় ততবারের একটি
লুপ চালালেই হয়ে গেল! এখন দেখা যাক ব্যাপারটির জন্য আমাদের C ল্যাংগুয়েজে
কি আছে…
সি তে while,go,do,for,goto এই কি-ওয়ার্ডগুলো লুপিং এর কাজে ব্যাবহার
করা হয়…এরা কিছু শর্তের উপর ভিত্তি করে কোড এক্সিকিউট করে…শর্ত যতক্ষন
পর্যন্ত না মিথ্যা হবে,ততক্ষন এরা কোড এক্সিকিউট করবে…আর,সি তে তিন ধরনের
লুপ দেখা যায়…
- for loop
- while loop
- do while loop
for লুপ
for লুপের গঠনঃ
|
for(initialization statement; test expression; update statement)
{
code/s to be executed;
}
|
এখানে for হলো কীওয়ার্ড। কীওয়ার্ড কে আপনি কোনরকম পরিবর্তন করে লিখতে
পারবেন না। for কে For বা FOR লিখতে পারবেন না। for কীওয়ার্ড এর পর () এর
ভেতরে তিনটি অংশ থাকেঃ
- initialization(প্রারম্ভিকীকরণ/শুরু করা)
- condition(শর্ত)
- increment or decrements(বাড়ানো/কমানো)
initialization অংশে একটি ভেরিয়েবলে একটি মান দিয়ে দেওয়া হয়। condition
অংশে ভেরিয়েবলে দেওয়া মানটির জন্য condition টা সত্য কিনা তা যাচাই করা হয়।
condition টা সত্য হলে for লুপ এর ভেতরের স্টেটমেন্টটা এক্সিকিউট করে এবং
একবার for লুপ এর ভেতরের স্টেটমেন্টটা এক্সিকিউট করে increment or
decrements অংশে আসে এবং ভেরিয়েবলের মানটা আপডেট করে আবার condition অংশে
এসে condition যাচাই করে। condition সত্য হলে আবার for লুপের ভেতরে যায়।
এভাবে চলতে থাকে।
for loop যেভাবে কাজ করেঃ
|
int t;
for (t=1;t<=10;t++)
printf("%d", t};
|
১ম iteration:
এখানে লুপের শুরতে int t=0; এই স্টেটমেন্টটা এক্সিকিউট হবে এবং t এর মান
0 সেট হবে। এখন condition অংশে এসে দেখবে t এর মান 0 এর জন্য t<3
শর্তটি সত্য। তাই for লুপের ভেতরের স্টেটমেন্ট টা এক্সিকিউট হবে।
২য় iteration:
for লুপের ভেতরের স্টেটমেন্ট টা একবার এক্সিকিউট করার পর increment অংশে
আসবে এবং i=i+1 পাবে, তাই i এর নতুন মান হবে 0+1 = 1. এখন t এর এই নতুন মান
নিয়ে condition অংশে যাবে এবং t এর মান 1 এর জন্য t<3 শর্তটি সত্য, তাই
আবার for লুপের ভেতরে ঢুকবে।
৩য় iteration:
for লুপের ভেতরের স্টেটমেন্ট টা একবার এক্সিকিউট করার পর increment অংশে
আসবে এবং t=t+1 পাবে, তাই i এর নতুন মান হবে 1+1 = 2. এখন t এর এই নতুন মান
নিয়ে condition অংশে যাবে এবং t এর মান 2 এর জন্য t<3 শর্তটি সত্য, তাই
আবার for লুপের ভেতরে ঢুকবে।
১১তম iteration:
for লুপের ভেতরের স্টেটমেন্ট টা একবার এক্সিকিউট করার পর increment অংশে
আসবে এবং t=t+1 পাবে, তাই i এর নতুন মান হবে 10+1 = 11. এখন t এর এই নতুন
মান নিয়ে condition অংশে যাবে এবং t এর মান 11 এর জন্য t<10 শর্তটি
মিথ্যা, তাই আর for লুপের ভেতরে ঢুকবে না। for লুপ থেকে বের হয়ে যাবে।
iteration কে আমরা সহজকথায় “ধাপ” হিসেবে বিবেচনা করতে
পারি…কন্ডিশন যতক্ষন সত্য থাকে অর্থাৎ কন্ডিশনের মান যতক্ষ।।1 থাকে ততক্ষনই
ইটারেশন চলে…উপরের লুপে ১১তম ধাপে এসে কন্ডিশন এর মান ০ হয়েছে,তাই ওই
লুপটিকে আমরা ১০টি ইটারেশনের লুপ বলতে পারি…
জেনে রাখা ভালো,সি তে True কন্ডিশনের মান 1,আর False কন্ডিশনের মান 0 দিয়ে প্রকাশ করা হয়…
এখন যদি আমি স্ক্রিনে ১-১০০০ পর্যন্ত সংখ্যা দেখতে চাই,তাহলে কোডটি হবেঃ
|
for(t=1; t<=1000; t++){
printf("%d",t);
}
|
এখন,আমি চোখের পলকে 1 থেকে 1000 পর্যন্ত সংখ্যার যোগফল বের করতে পারি এভাবে………
|
for(i=1; i<=1000; i++)
sum+=i;
|
আমরা for লুপ এ কমা ব্যাবহার করে আমরা একাধিক initialization,একাধিক condition,একাধিক increment/descrement করতে পারি। যেমনঃ
|
for(i=1,j=10; i<=10,j>0; i++,j--)
sum+=i+j;
|
আমরা আবার লুপের মধ্যে লুপ চালাতে পারি। এটিকে বলে nested for looping ।
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <stdio.h>
int main ()
{
for(i=1; i<=10; i++)
{
for(j=1; j<=5; j++)
printf("bla bla bla\n ");
}
return 0;
}
|
এগুলোই একেবারে বেসিক। লুপ জিনিসটা কিভাবে কাজ করে এবং এর সিন্ট্যাক্স
কিরকম সেগুলো বুঝতে পারলে বাকি কাজ হল প্র্যাকটিস করা। বিভিন্ন সমস্যা
সমাধান করতে গেলে নতুন নতুন পরিস্থিতির সম্মুখীন হতে হয় এবং তখন নতুনভাবে
চিন্তা করা যায় । আজ শুধু ব্যাসিক আলোচনা হলো । আগামী পর্বে for loop নিয়ে
কিছু প্রব্লেম সল্ভ করা হবে ।