1. আমাদের জীবনে loops

খুব প্রায়ই আমাদের জীবনের একই ক্রিয়াগুলি বহুবার সঞ্চালনের প্রয়োজন হয়। উদাহরণস্বরূপ, ধরুন আমাকে প্রচুর পৃষ্ঠা সমন্বিত একটি নথি স্ক্যান করতে হবে। যে আমরা একই পদ্ধতি বারবার পুনরাবৃত্তি করি:

  • স্ক্যানারে প্রথম পৃষ্ঠাটি রাখুন
  • স্ক্যান বোতাম টিপুন
  • পরবর্তী পৃষ্ঠাটি স্ক্যানারে রাখুন

এটি ম্যানুয়ালি করা কঠিন। এই প্রক্রিয়া কোনোভাবে স্বয়ংক্রিয় হতে পারে এটা চমৎকার হবে.

অথবা অন্য একটি উদাহরণ বিবেচনা করুন: ধরা যাক আমি আমার ইনবক্সের সমস্ত অপঠিত ইমেলগুলিকে স্প্যাম হিসাবে চিহ্নিত করতে চাই৷ একবারে আমাকে প্রতিটি ইমেল একবারে নির্বাচন করতে হবে এবং এটিকে স্প্যাম হিসাবে চিহ্নিত করতে হবে।

কিন্তু প্রোগ্রামাররা অলস, তাই তারা এই প্রক্রিয়াটিকে অনেক আগেই স্বয়ংক্রিয় করে দিয়েছে: এখন আপনি কেবল অক্ষরের যেকোন তালিকা নির্বাচন করুন এবং "স্প্যাম হিসাবে চিহ্নিত করুন" এ ক্লিক করুন এবং তারপরে আপনার ইমেল ক্লায়েন্ট তালিকার মধ্য দিয়ে চলে এবং প্রতিটি ইমেলকে স্প্যাম ফোল্ডারে নিয়ে যায়।

আমরা এখানে কি বলতে পারি? এটি অত্যন্ত সুবিধাজনক যখন একটি কম্পিউটার বা প্রোগ্রাম এক ক্লিকে শত শত বা হাজার হাজার একঘেয়ে অপারেশন চালাতে পারে। এবং এখন আপনি শিখবেন কিভাবে এটি করতে হয়।


2. whileলুপ

if-else বিবৃতিটি আমাদের প্রোগ্রামিং ক্ষমতাকে উল্লেখযোগ্যভাবে প্রসারিত করেছে, যা বিভিন্ন পরিস্থিতিতে বিভিন্ন ক্রিয়া সম্পাদন করে এমন প্রোগ্রাম লেখা সম্ভব করে তুলেছে। তবে আরও একটি জিনিস রয়েছে যা আমাদের প্রোগ্রামগুলিকে আরও শক্তিশালী করে তুলবে — লুপ

জাভাতে 4 ধরণের লুপ রয়েছে : while, এবং . আমরা এখন এইগুলির মধ্যে প্রথম দিকে খনন করব।forfor-eachdo-while

একটি whileলুপ খুব সহজ. এটি শুধুমাত্র দুটি অংশ নিয়ে গঠিত: একটি শর্ত এবং একটি লুপ বডি । লুপ বডি বারবার এক্সিকিউট করা হয় যতক্ষণ না কন্ডিশন থাকে true। সাধারণভাবে, একটি whileলুপ এই মত দেখায়:

while (condition)
   statement;
whileএকটি একক বিবৃতি সহ একটি লুপের জন্য স্বরলিপি
while (condition)
{
   block of statements
}
whileবিবৃতিগুলির একটি ব্লক সহ একটি লুপের জন্য স্বরলিপি

এটা খুবই সাধারণ. যতক্ষণ পর্যন্ত লুপ কন্ডিশন সমান থাকে ততক্ষণ স্টেটমেন্টের স্টেটমেন্ট বা ব্লক বারবার এক্সিকিউট করা হয় ।true

এটি এইভাবে কাজ করে: প্রথমে, শর্তটি পরীক্ষা করা হয়। যদি এটি সত্য হয়, তাহলে লুপ বডিটি কার্যকর করা হয় ( বিবৃতি বা বিবৃতিগুলির ব্লক )। তারপর শর্তটি আবার পরীক্ষা করা হয় এবং লুপ বডি আবার কার্যকর করা হয়। এবং তাই যতক্ষণ না শর্তটি মিথ্যা হয়ে যায়।

যদি শর্তটি সর্বদা সত্য হয় , তাহলে প্রোগ্রামটি চলা বন্ধ হবে না। এটি লুপে স্থায়ীভাবে আটকে যাবে।

যদি শর্তটি প্রথমবার পরীক্ষা করার সময় মিথ্যা হয় , তাহলে লুপের বডি একবারও কার্যকর করা হবে না।


3. লুপের উদাহরণ

এখানে লুপ ইন অ্যাকশনের কিছু বাস্তব উদাহরণ রয়েছে।

কোড ব্যাখ্যা
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
5 লাইন পর্দায় প্রদর্শিত হবে:
5
4
3
2
1
কোড ব্যাখ্যা
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
10টি লাইন স্ক্রিনে প্রদর্শিত হবে:
0
1
...
8
9
কোড ব্যাখ্যা
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
যতক্ষণ সংখ্যা প্রবেশ করানো হয় ততক্ষণ প্রোগ্রামটি কীবোর্ড থেকে সংখ্যাগুলি পড়ে।
কোড ব্যাখ্যা
while (true)
   System.out.println("C");
প্রোগ্রামটি অবিরামভাবেC স্ক্রিনে চিঠিটি মুদ্রণ করবে।
কোড ব্যাখ্যা
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
প্রোগ্রামটি কীবোর্ড থেকে লাইন পড়বে

exitপ্রবেশ করা পর্যন্ত ।

পূর্ববর্তী উদাহরণে, equals()পদ্ধতিটি স্ট্রিং তুলনা করতে ব্যবহৃত হয়। স্ট্রিং সমান হলে, ফাংশন ফিরে আসবে true। যদি স্ট্রিং সমান না হয়, তাহলে এটি ফিরে আসবে false



4. একটি লুপের মধ্যে লুপ

যেহেতু আপনি শর্তসাপেক্ষ বিবৃতি সম্পর্কে শিখেছেন, আপনি দেখেছেন যে আপনি একাধিক শর্তসাপেক্ষ বিবৃতি একত্রিত করে জটিল যুক্তি প্রয়োগ করতে তাদের ব্যবহার করতে পারেন। অন্য কথায়, একটি বিবৃতি ifভিতরে একটি বিবৃতি ব্যবহার করে if.

আপনি loops সঙ্গে একই জিনিস করতে পারেন. একটি লুপের মধ্যে একটি লুপ লিখতে, আপনাকে প্রথম লুপের শরীরের ভিতরে দ্বিতীয় লুপটি লিখতে হবে। এটি এই মত কিছু দেখাবে:

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
whileঅন্য লুপের ভিতরে লুপ ( বিবৃতিগুলির একটি ব্লক সহ)while

আসুন তিনটি কাজ দেখি।

টাস্ক 1Momধরা যাক আমরা এমন একটি প্রোগ্রাম লিখতে চাই যা স্ক্রিনে 4 বার শব্দ প্রদর্শন করে । একটি লুপ আমাদের প্রয়োজন ঠিক কি. এবং আমাদের কোড এই মত কিছু দেখাবে:

কোড ব্যাখ্যা
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
4 লাইন পর্দায় প্রদর্শিত হবে:
Mom
Mom
Mom
Mom

টাস্ক 2 । আমরা একটি প্রোগ্রাম লিখতে চাই যা Aএকটি লাইনে 5 অক্ষর s প্রদর্শন করে। এটি করার জন্য, আমরা আবার একটি লুপ প্রয়োজন. এই কোডটি দেখতে কেমন হবে:

কোড ব্যাখ্যা
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
এর পরিবর্তে println(), আমরা ব্যবহার করব print()। অন্যথায়, প্রতিটি অক্ষর A একটি পৃথক লাইনে শেষ হবে।

পর্দার আউটপুট হবে:
AAAAA

টাস্ক 3 । আমরা অক্ষর s গঠিত একটি আয়তক্ষেত্র প্রদর্শন করতে চান A. আয়তক্ষেত্রটিতে 5টি কলাম দ্বারা 4টি সারি থাকা উচিত। এটি সম্পন্ন করার জন্য, আমাদের এখন একটি নেস্টেড লুপ দরকার। আমরা কেবল আমাদের প্রথম উদাহরণটি নেব (যেখানে আমরা 4 লাইন আউটপুট করি) এবং দ্বিতীয় উদাহরণের কোডের সাথে একটি লাইন আউটপুট করার জন্য কোডটি প্রতিস্থাপন করব।

কোড ব্যাখ্যা
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
বাইরের লুপ বেগুনি। এটি nলুপের পুনরাবৃত্তির সংখ্যা গণনা করতে ভেরিয়েবল ব্যবহার করে।

ভিতরের লুপ সবুজ। এটি mলুপ পুনরাবৃত্তির সংখ্যা গণনা করতে ভেরিয়েবল ব্যবহার করে।

অভ্যন্তরীণ লুপ সম্পূর্ণ হওয়ার পরে আমাদের স্পষ্টভাবে কার্সারটিকে পরবর্তী লাইনে নিয়ে যেতে হবে। অন্যথায়, প্রোগ্রামটি প্রিন্ট করা সমস্ত অক্ষর এক লাইনে শেষ হবে।

পর্দার আউটপুট হবে:
AAAAA
AAAAA
AAAAA
AAAAA

বাইরের এবং অভ্যন্তরীণ লুপগুলিকে লুপের পুনরাবৃত্তির সংখ্যা গণনা করতে বিভিন্ন ভেরিয়েবল ব্যবহার করতে হবে। System.out.println()আমাদের ভিতরের লুপের পরে কমান্ড যোগ করতে হয়েছিল , যেহেতু সেই লুপ Aএকই লাইনে অক্ষর s প্রদর্শন করে। একবার একটি লাইনের অক্ষরগুলি প্রদর্শিত হলে, কাউকে কার্সারটিকে একটি নতুন লাইনে নিয়ে যেতে হবে।



5. জাভা বনাম প্যাসকেলের লুপ তুলনা করা

আপনারা অনেকেই উচ্চ বিদ্যালয়ে প্যাসকেল অধ্যয়ন করেছেন। whileআপনার জন্য এখানে উপাদানটি বোঝা সহজ করার জন্য, প্যাসকেল এবং জাভাতে লেখা লুপগুলির এই তুলনাটি একবার দেখুন । আপনি যদি প্যাসকেল না জানেন, তাহলে এই অংশটি এড়িয়ে যান।

প্যাসকেল জাভা
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}