লুপ (ব্রেক এবং রিটার্ন, চালিয়ে যান, লেবেল) - 1

"হাই, অ্যামিগো!"

"আজ আমি আপনাকে এমন কিছু জিনিস সম্পর্কে বলব যা লুপগুলির সাথে কাজ করার সময় সুবিধাজনক।"

"প্রথমটি হল ব্রেক কীওয়ার্ড । আপনি যদি একটি লুপের বডিতে এই কমান্ডটি ব্যবহার করেন, তাহলে কমান্ডটি কার্যকর হওয়ার সাথে সাথে লুপটি বন্ধ হয়ে যাবে। এখানে একটি উদাহরণ:"

উদাহরণ আউটপুট:
for (int i = 0; i < 10; i++)
{
System.out.println(i);
if (i > 5)
break;
}
0
1
2
3
4
5

"ব্রেক কি শুধুমাত্র একটি লুপে ব্যবহার করা যেতে পারে?"

"হ্যাঁ। বিরতি বিবৃতি শুধুমাত্র একটি লুপে ব্যবহার করা যেতে পারে। যখন একটি বিরতি বিবৃতি কার্যকর করা হয়, তখন লুপটি অবিলম্বে বন্ধ হয়ে যায়।"

"ঠিক আছে বুঝেছি."

"দারুণ। এখন দ্বিতীয় যে জিনিসটি আমি শেয়ার করতে চাই তা হল অবিরত কীওয়ার্ড। এটি শুধুমাত্র একটি লুপে ব্যবহার করা যেতে পারে। যখন এই কমান্ডটি কার্যকর করা হয়, তখনই লুপের একটি নতুন পুনরাবৃত্তি শুরু হয়। অন্য কথায়, যেকোন অবশিষ্ট কোড লুপের বডি সহজভাবে এড়িয়ে গেছে।"

"এখানে একটি উদাহরণ:"

উদাহরণ আউটপুট:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
continue;
System.out.println(i);
}
1
3
5
7
9

"তাহলে, একবার প্রোগ্রামটি একটি লুপে অবিরত কমান্ডে পৌঁছালে, এটি লুপে কোড চালানো বন্ধ করে দেয়?"

"না। দেখুন, আমরা যখন একই কোড বেশ কয়েকবার এক্সিকিউট করি তখন আমাদের একটি লুপ থাকে। উপরের উদাহরণে, আমাদের 0 থেকে 9 পর্যন্ত একটি লুপ আছে, অর্থাৎ লুপের বডি 10 বার এক্সিকিউট হবে। তাই না?"

"হ্যাঁ."

"লুপের দেহের মধ্য দিয়ে একটি পাসকে একটি পুনরাবৃত্তি বলা হয়৷ আমাদের লুপটি 10টি পুনরাবৃত্তি নিয়ে গঠিত - লুপের দেহটি দশ বার কার্যকর করা হবে৷"

"হ্যাঁ, এটা পরিষ্কার।"

" কন্টিনিউ কমান্ড বর্তমান পুনরাবৃত্তিকে সময়ের আগেই শেষ করে দেয়, অর্থাৎ লুপের ভিতরে থাকা যেকোন কোড বাদ দেওয়া হয় এবং একটি নতুন পুনরাবৃত্তি শুরু হয়।"

"এখানে আরেকটি উদাহরণ:"

উদাহরণ
ArrayList list = new ArrayList();
for (Object o: list)
{
if (o == null) continue;
System.out.println(o.toString());
}

"এই উদাহরণে, আমরা তালিকার সমস্ত অবজেক্টের একটি স্ট্রিং উপস্থাপনা প্রদর্শন করি। কিন্তু আমরা শূন্য যেকোন অবজেক্ট এড়িয়ে যাই।"

"ঠিক আছে, বুঝেছি। আমি দেখতে পাচ্ছি এটা কতটা সুবিধাজনক।"

"হ্যাঁ। আমি আপনাকে লেবেল সম্পর্কেও বলতে চাই। এগুলি জাভাতে খুব কমই ব্যবহৃত হয়, কারণ তারা প্রায়শই একটি প্রোগ্রামের যুক্তির সৌন্দর্যকে লঙ্ঘন করে। কিন্তু আপনি কোনও সময়ে কোডে তাদের সম্মুখীন হতে পারেন। তাই আমি বরং আপনাকে বলতে চাই আপনি খেলার মাঠে তাদের সম্পর্কে শুনেছেন তার চেয়েও বেশি।"

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

লেবেল সহ ভয়ানক কোড
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;

"এই উদাহরণে, goto লেবেল কমান্ড কার্যকর হওয়ার পরে, প্রোগ্রামটি লাইন চিহ্নিত লেবেলে চলে যায় ।

"পরবর্তীতে, সবাই বুদ্ধিমান হয়েছে এবং গোটো স্টেটমেন্ট ব্যবহার না করার সিদ্ধান্ত নিয়েছে। জাভা গোটো সমর্থন করে না, তবে গোটো একটি সংরক্ষিত শব্দ। বড় কথা নয়..."

"তাহলে, জাভাতে কোন গোটো এবং কোন লেবেল নেই?"

"কোন গোটো বিবৃতি নেই, কিন্তু লেবেল আছে!"

"কিভাবে এটা পারব?"

"জাভাতে, কন্টিনিউ এবং ব্রেক কমান্ডের সাথে লেবেল ব্যবহার করা যেতে পারে। যখন আপনার অনেক নেস্টেড লুপ থাকে তখন সেগুলি ব্যবহার করা হয়।"

"উদাহরণস্বরূপ, ধরুন আপনার কাছে 5টি নেস্টেড লুপ আছে এবং কিছু শর্ত সন্তুষ্ট হলে আপনি তাদের তিনটির মধ্যে থেকে বেরিয়ে আসতে চান, কিন্তু সবগুলো নয়৷ লেবেলগুলি এটি করার একটি মার্জিত উপায়:"

উদাহরণ
label1: for (int i = 0; i < 10; i++)
 label2: for (int j = 0; j < 10; j++)
  label3: for (int k =0; k < 10; k++)
   if (i == j && j == k)
    break label2;

"এই উদাহরণে, যখন ব্রেক স্টেটমেন্টটি কার্যকর করা হয়, তখন আমরা k ভেরিয়েবল দিয়ে লুপ থেকে নয়, লেবেলযুক্ত লেবেল 2 লুপ থেকে প্রস্থান করি - অর্থাৎ আমরা অবিলম্বে k এবং j দিয়ে দুটি লুপ থেকে প্রস্থান করি।"

"এটা কত ঘন ঘন ব্যবহার করা হয়?"

"সত্যি বলতে, প্রায়শই না, কিন্তু আপনি কখনই জানেন না। হয়তো আপনি এটি কখনও কখনও দেখতে পাবেন। এগুলি সিনট্যাক্সের মৌলিক বিষয়গুলি - আপনাকে এই সব জানতে হবে!"

"ঠিক আছে। ধন্যবাদ, বিলাবো।"