এটি একটি অন্ধকার সোমবার, এবং আপনি কর্মক্ষেত্রে আছেন। আমরা সবাই জানি সোমবার কতটা হতাশাজনক হতে পারে, তাই না? আপনার বস আপনার কাছে এসে বললেন, "আরে, সপ্তাহান্তে আমার কাছে 300টি না খোলা ইমেল রয়েছে। আমি চাই আপনি প্রতিটি খুলুন, প্রেরকের নাম লিখুন এবং আপনার কাজ শেষ হয়ে গেলে ইমেলগুলি মুছে দিন।" আপনি যদি ম্যানুয়ালি এটি করার চেষ্টা করেন তবে এই কাজটি খুব ক্লান্তিকর দেখায়। আপনার মনের পরের জিনিসটি সম্ভবত গুগলে যাওয়া এবং এমন সফ্টওয়্যার সন্ধান করা যা এই প্রক্রিয়াটিকে স্বয়ংক্রিয় করতে পারে এবং আপনার জীবনকে আরও সহজ করে তুলতে পারে, তাই না? ওয়েল, আমরা প্রোগ্রামিং অনুরূপ পরিস্থিতি আছে. এমন কিছু সময় আছে যখন সেগুলি সম্পন্ন না হওয়া পর্যন্ত আপনাকে বারবার কাজগুলি সম্পাদন করতে হবে। আপনি কিভাবে এই সমস্যা সমাধান করবেন? জাভাস্ক্রিপ্টে, আমরা যাকে লুপ হিসাবে উল্লেখ করি। লুপগুলি আমাদের টাস্ক সম্পূর্ণ করার জন্য প্রয়োজনীয় কোডের পরিমাণ কমিয়ে বারবার কাজগুলি সমাধান করতে দেয়। এই নিবন্ধে, আমরা আলোচনা করব লুপ কী, এটি কীভাবে কাজ করে এবং আমাদের প্রোগ্রামগুলিতে এটি প্রয়োগ করার জন্য আমরা বিভিন্ন পদ্ধতি ব্যবহার করতে পারি। একটি লুপ কি? জাভাস্ক্রিপ্টে লুপ ব্যবহার করা হয় সহজে বারবার ক্রিয়া সম্পাদন করতে। তারা সত্য বা মিথ্যা ফেরত একটি শর্ত উপর ভিত্তি করে. একটি শর্ত একটি এক্সপ্রেশন যা একটি লুপ চলমান রাখা আবশ্যক পাস করা আবশ্যক. একটি লুপ চলে যখন নির্দিষ্ট শর্ত একটি সত্য মান প্রদান করে এবং যখন তারা একটি মিথ্যা মান প্রদান করে তখন বন্ধ হয়ে যায়। যখন আপনি একটি লুপ ব্যবহার করতে হবে? লুপগুলি পুনরাবৃত্তিমূলক কাজগুলি সম্পাদনের জন্য দরকারী। উদাহরণস্বরূপ, একটি লুপ ব্যবহার করে একটি সমস্যা সমাধানের জন্য প্রয়োজনীয় কোডটি ছোট করে। এটি সময় সাশ্রয় করে, মেমরি ব্যবহার অপ্টিমাইজ করে এবং নমনীয়তা উন্নত করে। একটি লুপের প্রকৃত তাৎপর্য কোডের দৈর্ঘ্য হ্রাস এবং পুনরাবৃত্তি সীমিত করার বাইরেও প্রসারিত। অ্যারে, অবজেক্ট বা অন্যান্য কাঠামোতে ডেটা নিয়ে কাজ করার সময়ও তারা সাহায্য করে। অধিকন্তু, লুপগুলি পুনরাবৃত্তিমূলক কোড হ্রাস করে এবং কোড পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে কোড মডুলারিটি প্রচার করে, যা আপনার প্রকল্পের বিভিন্ন অংশে ব্যবহার করা যেতে পারে এমন কোডগুলি তৈরি করা সম্ভব করে। লুপের প্রকারভেদ লুপের দুটি প্রধান বিভাগ রয়েছে: প্রবেশ-নিয়ন্ত্রিত লুপ এবং প্রস্থান-নিয়ন্ত্রিত লুপ। লুপগুলি লুপের বডি কার্যকর করার আগে "লুপের প্রবেশদ্বারে" অবস্থার মূল্যায়ন করে। অবস্থা সত্যি হলে শরীর চলে। না হলে শরীর চলে না। এবং loops হল এন্ট্রি-নিয়ন্ত্রিত লুপের উদাহরণ। এন্ট্রি-নিয়ন্ত্রিত for while লুপগুলি পরীক্ষার অবস্থার উপর লুপের শরীরের উপর ফোকাস করে, নিশ্চিত করে যে লুপের বডি পরীক্ষা শর্ত মূল্যায়ন করার আগে অন্তত একবার কার্যকর করা হয়েছে। প্রস্থান-নিয়ন্ত্রিত লুপের একটি ভাল উদাহরণ হল লুপ। প্রস্থান-নিয়ন্ত্রিত do-while আসুন এন্ট্রি-নিয়ন্ত্রিত লুপের কিছু উদাহরণ পরীক্ষা করা যাক: যখন লুপ একটি লুপ নিম্নলিখিত সিনট্যাক্স আছে. while while (condition) { // loop's body } নিম্নলিখিত তালিকাটি একটি সময় লুপের কার্যকারিতা ব্যাখ্যা করে: লুপ বন্ধনীর ভিতরে একটি পরীক্ষা শর্ত নেয়। while প্রোগ্রামটি পাস বা ব্যর্থ হয়েছে কিনা তা দেখতে শর্তটি পরীক্ষা করে। লুপের বডির মধ্যে থাকা কোডটি যতক্ষণ পর্যন্ত কন্ডিশন পাস করা হয় ততক্ষণ কার্যকর হয়। পরীক্ষার শর্ত ব্যর্থ হলে প্রোগ্রামটি তার অপারেশন বন্ধ করে দেয়। নীচে, চলুন লুপের একটি বাস্তব উদাহরণ নেওয়া যাক: while let arr = []; let i = 1; let number = 5; while (i <= number) { arr.push(i) i++ } console.log(arr) উপরের কোড স্নিপেটটি "arr", "i", এবং "num" ভেরিয়েবলকে শুরু করে। " ভেরিয়েবল হল একটি অ্যারে যা পরীক্ষার শর্তে উত্তীর্ণ হওয়া মানগুলিকে ধারণ করে৷ arr" "i" ভেরিয়েবল প্রতিটি পুনরাবৃত্তির পরে প্রতিটি বৃদ্ধির ট্র্যাক রাখে। "সংখ্যা" ভেরিয়েবলটি প্রতিটি পুনরাবৃত্তির পরে "i" এর মানের (5) সাথে তুলনা করে। লুপের বডির মধ্যে থাকা কোডটি অ্যারেতে প্রতিটি পুনরাবৃত্তির পর "i" এর প্রতিটি মানকে পুশ করে যতক্ষণ না "i" "সংখ্যা" এর থেকে কম বা সমান হয়। একবার "i" এর বর্তমান মান শর্তটি ব্যর্থ করে, এই ক্ষেত্রে, যেখানে এর মান যা 6 এর চেয়ে বেশি, লুপটি চলা বন্ধ হয়ে যায়। "i" "সংখ্যা" পদ্ধতি হল একটি অন্তর্নির্মিত জাভাস্ক্রিপ্ট ফাংশন যা একটি অ্যারের শেষে একটি নতুন আইটেম যোগ করে। push() আউটপুট [1, 2, 3, 4, 5] do-while লুপ একটি লুপ ঘনিষ্ঠভাবে while loop এর সাথে সাদৃশ্যপূর্ণ; এবং লুপের মধ্যে প্রধান পার্থক্য হল যে লুপ লুপের অবস্থা মূল্যায়ন করার আগে অন্তত একবার কোড এক্সিকিউশন নিশ্চিত করে; লুপের নিচের সিনট্যাক্স আছে। do-while while do-while do-while do-while do { // loop's body } while (//condition) হল প্রস্থান-নিয়ন্ত্রিত লুপের একটি চমৎকার উদাহরণ। এটি এই সত্যের মধ্যে রয়েছে যে প্রস্থান-নিয়ন্ত্রিত লুপগুলি পরীক্ষার শর্তের আগে লুপের বডিকে দেয়, এখন আসুন লুপ ব্যবহার করে একটি ব্যবহারিক কোড উদাহরণের দিকে তাকাই। do-while অগ্রাধিকার do-while উদাহরণ: let i = 1; let num = 5; do { console.log(i); i++; } while (i <= num); এখন, এই কোড স্নিপেট ভেঙে দেওয়া যাক: আমরা "i" এবং "num" ভেরিয়েবল শুরু করেছি। লুপের অবস্থা মূল্যায়ন করার আগে কনসোল "i" (1) এর মান লগ ইন করে। শর্ত চেক করা হয়েছে, এবং প্রতিটি পুনরাবৃত্তির পরে +1 সহ "i" এর মান বৃদ্ধি পায়। "i" "num" এর চেয়ে বড় হলে লুপটি তার কাজ শেষ করে। আউটপুট 1 2 3 4 5 যদিও লুপ অনেকটা লুপের সাথে সাদৃশ্যপূর্ণ, তবে সূক্ষ্ম পার্থক্য রয়েছে আমাদের অবশ্যই লক্ষ্য রাখতে হবে; চলুন আরেকটি উদাহরণ নেওয়া যাক যা এবং লুপের মধ্যে পার্থক্য তুলনা করে। do-while while while do-while let i = 5; let num = 4 while( i < num) { console.log(i) } এই উপরের লুপ কনসোলে কোনো ফলাফল ফিরিয়ে দেবে না; এখন, কেন এমন হল? while আমরা যথাক্রমে 5 এবং 4 এর মান সহ "i" এবং "num" ভেরিয়েবল শুরু করেছি। শর্তটি পরীক্ষা করে যে "i" এর মান "num" এর চেয়ে কম কিনা। সত্য হলে, এটি প্রতিটি নিজ নিজ মান লগ ইন করে। যেহেতু "i" এর প্রারম্ভিক মান "num" এর থেকে বেশি, তাই লুপ কখনই চলে না। এখন, লুপের সাথে একটি অনুরূপ উদাহরণ নেওয়া যাক। do-while let i = 5; let num = 4; do { console.log(i) } while ( i < num) আউটপুট 5 লুপ কোড ব্লকের এক্সিকিউশন নিশ্চিত করে, যা কনসোলে 5 রিটার্ন করে, যদিও "i" এর মান প্রাথমিকভাবে "num" এর চেয়ে বেশি, এটি এখনও কনসোলে একবার লগ ইন করা হয়। এই উপস্থাপনাটি আপনাকে এবং লুপের মধ্যে কার্যকারিতার পার্থক্য দেখায়। do-while do-while while লুপের জন্য হল একটি অনন্য ধরনের লুপ এবং প্রোগ্রামারদের দ্বারা সবচেয়ে বেশি ব্যবহৃত লুপগুলির মধ্যে একটি, হল একটি লুপ যা একটি শর্তের উপর নির্ভর করে নির্দিষ্ট সংখ্যক বার কোড ব্লক চালায়। লুপের জন্য নিচের সিনট্যাক্স রয়েছে। for loop for loop for (Expression1...; Expression2....; Expression3...{ //code block } এক্সপ্রেশন 1: a-এর এই অংশটিকে এলাকাও বলা হয়; এটা আমাদের শুরু এবং সেই এলাকা যেখানে কাউন্টার ভেরিয়েবল সংজ্ঞায়িত করা হয়েছে। কাউন্টার ভেরিয়েবলটি লুপ চালানোর সংখ্যা ট্র্যাক করতে এবং এটিকে একটি মান হিসাবে সংরক্ষণ করতে ব্যবহৃত হয়। for loop প্রারম্ভিক for loop অভিব্যক্তি 2: এটি লুপের দ্বিতীয় অংশ; এই অংশটি বিবৃতি সংজ্ঞায়িত করে যা লুপটি কার্যকর করবে। শর্তসাপেক্ষ এক্সপ্রেশন 3: এখানেই লুপ শেষ হয়; এই বিভাগে কাউন্টার ভেরিয়েবল প্রতিটি পুনরাবৃত্তির পরে তার মান আপডেট করে শর্তে উল্লেখিত মান বাড়িয়ে বা হ্রাস করে। এর জন্য লুপ ব্যবহার করে একটি উদাহরণে ডুব দেওয়া যাক। for (let i = 0; i < 100; i++) { console.log("Hello World" ) } উপরের কোড স্নিপেট থেকে, আসুন একসাথে এটি ভেঙে ফেলি। প্রথমত, আমরা কাউন্টার ভেরিয়েবল " শূন্যের মান দিয়ে শুরু করেছি। i" এর পরে, আমরা শর্তসাপেক্ষ বিবৃতি তৈরি করেছি যা কোডটি চলমান রাখবে। আমরা 100 এর সাথে "i" এর মান তুলনা করেছি; যদি এটি এই পরীক্ষায় উত্তীর্ণ হয়, "হ্যালো ওয়ার্ল্ড" লগ ইন করা হয়৷ এই প্রক্রিয়াটি পুনরাবৃত্তি হয় যখন কাউন্টারটি প্রতিটি পুনরাবৃত্তির পরে +1 দিয়ে বৃদ্ধি পায়। কাউন্টারের মান 100 এ পৌঁছালে লুপ শেষ হয়। আউটপুট Hello World Hello World Hello World ... //repeated 97 more times making it 100 "Hello World" in total ... প্রতিটি লুপের জন্য লুপ হল জাভাস্ক্রিপ্টের একটি পদ্ধতি যা একটি অ্যারের মাধ্যমে ভ্রমণ করে এবং সেই অ্যারের প্রতিটি উপাদানে একটি কলব্যাক ফাংশন প্রয়োগ করে; একটি কলব্যাক ফাংশন একটি ফাংশনে একটি প্যারামিটার হিসাবে পাস করা অন্য ফাংশন। কলব্যাক ফাংশনটি মূল ফাংশনটি কার্যকর করার পরে ক্রমানুসারে চালানোর মাধ্যমে কাজ করে। for-each আসুন মৌলিক সিনট্যাক্স পরীক্ষা করা যাক। for-each array.forEach(function(currentValue, index, arr)) উপরে প্রদত্ত কোড কাজ ব্যাখ্যা করে। for-each এই লুপ তিনটি পরামিতি গ্রহণ করে, যা বর্তমান মান, একটি সূচক এবং একটি অ্যারে। বর্তমান মান অ্যারের উপাদানটির বর্তমান মানকে উপস্থাপন করে। সূচক হল একটি ঐচ্ছিক প্যারামিটার যা আপনাকে সেই অ্যারের বর্তমান উপাদানটির সংখ্যাযুক্ত অবস্থান বলে। arr হল আরেকটি ঐচ্ছিক প্যারামিটার যা আপনাকে বলে যে উপাদানটি কোন অ্যারের অন্তর্গত। let myArray = [1, 2, 3, 4, 5]; array.forEach((num, index, arr) => { arr[index] = num * 2; console.log(array); }); আসুন উপরের উদাহরণটি ভেঙে দেওয়া যাক: আমরা "myArray" ভেরিয়েবল নামের একটি অ্যারে শুরু করেছি এবং এটি 1 থেকে 5 পর্যন্ত পূর্ণসংখ্যার সাথে সংরক্ষণ করেছি। পদ্ধতি তিনটি পরামিতি নেয় এবং অ্যারেতে একটি কলব্যাক ফাংশন প্রয়োগ করে। for-each এই লাইন; বর্তমান উপাদানের মানকে 2 দ্বারা গুণ করে এবং বর্তমান উপাদানের সূচকে প্রত্যাবর্তিত মান নির্ধারণ করে। arr[index] = num * 2 নোট নিন: পদ্ধতি একটি নতুন অ্যারে ফেরত দেয় না; বরং, এটি মূল অ্যারে পরিবর্তন করে এবং এটি ফেরত দেয়। for-each আউটপুট [2, 4, 6, 8, 10] জাভাস্ক্রিপ্টে লুপের জন্য... ইন এবং ফর... কী? এর এবং লুপগুলি খুব দরকারী যখন এটি পুনরাবৃত্তিযোগ্য বস্তুর উপর পুনরাবৃত্তি করার ক্ষেত্রে আসে; পুনরাবৃত্তিযোগ্য অবজেক্টগুলি এমন কোনও উপাদানকে বোঝায় যা লুপ করতে সক্ষম, পুনরাবৃত্তিযোগ্য বস্তুর সাধারণ উদাহরণ হল অ্যারে, স্ট্রিং, সেট ইত্যাদি। for... in for... of এবং মধ্যে একই রকম যে তারা বস্তুর মধ্য দিয়ে কিভাবে পুনরাবৃত্ত/নড়ান করে, তাদের মধ্যে প্রধান পার্থক্য দেখানো হয় কিভাবে তারা মান ফেরত দেয়। for... in for... of জন্য... লুপসে A loop উপযোগী যখন আপনাকে কোনো বস্তু থেকে কী(গুলি)/বৈশিষ্ট্য এবং মূল বস্তু থেকে এর সংশ্লিষ্ট বৈশিষ্ট্যগুলি বের করতে হবে। লুপ মাঝে মাঝে একটি বস্তুর মাধ্যমে এমনভাবে পুনরাবৃত্তি করতে পারে যেটি সেই নির্দিষ্ট বস্তুতে যেভাবে সংজ্ঞায়িত করা হয়েছিল তার থেকে ভিন্ন; এর একটি উদাহরণ নেওয়া যাক লুপ ইন অ্যাকশন। for... in for... in for... in let namesArray = []; const studentScores = { John: 60, Dan: 53, Tricia: 73, Jamal: 45, Jane: 52 } for(const name in studentScores){ namesArray.push(name); } console.log(namesArray); উপরের উদাহরণে, আমরা নামের একটি বস্তুকে সংজ্ঞায়িত করেছি যাতে বেশ কয়েকটি ছাত্রের নাম এবং তাদের সংশ্লিষ্ট স্কোর রয়েছে। ব্যবহার করে, আমরা শুধুমাত্র ছাত্রদের নাম পুনরুদ্ধার করতে সক্ষম হয়েছি, যেগুলি বস্তুর এর প্রতিনিধিত্ব করে, এবং পদ্ধতি ব্যবহার করে একটি অ্যারেতে সংরক্ষণ করে। studentScores for... in StudentScores- কী push() আউটপুট ["John", "Dan", "Tricia", "Jamal", "Jane"] লুপের জন্য... লুপের একটি বিশেষ ধরনের লুপ যা পুনরাবৃত্তিযোগ্য বস্তুর মান যেমন অ্যারে, স্ট্রিং, মানচিত্র ইত্যাদির উপর পুনরাবৃত্তি করে, লুপগুলি কোনও বস্তুর কী বা বৈশিষ্ট্যগুলির সাথে নিজেকে উদ্বিগ্ন করে না , বরং তারা শুধুমাত্র মানগুলির উপর অগ্রাধিকার দেখায়। for... of for... of লুপের নিয়মিত বস্তুর উপর পুনরাবৃত্তি করতে অক্ষম এবং একটি ত্রুটি নিক্ষেপ করবে কারণ সেগুলি পুনরাবৃত্তিযোগ্য নয়। লুপ ব্যবহার করে একটি উদাহরণ নেওয়া যাক। for... of for.. of let numArray = [1,2,3,4,5] for (const value of numArray) { console.log(value) } // Output = 1,2,3,4,5 সংক্ষেপে, লুপগুলির এবং পুনরাবৃত্তিযোগ্য বস্তুগুলির মাধ্যমে লুপ করার একটি দুর্দান্ত উপায়; প্রধান পার্থক্য হল a loop একটি অবজেক্টের কী প্রদান করে যখন loop শুধুমাত্র পুনরাবৃত্তিযোগ্য বস্তুর মান প্রদান করে। for... in for... of for... in for... of একটি অসীম লুপ কি, এবং কিভাবে আমরা এটি এড়াতে পারি? একটি অসীম লুপ এমন একটি লুপকে বোঝায় যা অনির্দিষ্টকালের জন্য চলতে থাকে; এটি ঘটে যখন একটি লুপের কোন সংজ্ঞায়িত প্রস্থান শর্ত থাকে না। অসীম লুপগুলি বিপজ্জনক কারণ সেগুলি আপনার ব্রাউজারকে ক্র্যাশ করতে পারে এবং আপনার প্রোগ্রামে অবাঞ্ছিত ক্রিয়াকলাপের দিকে নিয়ে যেতে পারে৷ // infinite loop sample while (true) { console.log("keep on running") } আপনার প্রোগ্রামে অসীম লুপ প্রতিরোধ করতে, সর্বদা নিশ্চিত করুন যে আপনার লুপের মধ্যে একটি প্রস্থান শর্ত সংজ্ঞায়িত করা আছে। উপসংহার এই নিবন্ধটি শেষ করার জন্য আপনাকে অনেক ধন্যবাদ, জাভাস্ক্রিপ্টে লুপগুলি একটি গুরুত্বপূর্ণ ধারণা যা প্রতিটি বিকাশকারীকে আয়ত্ত করতে হবে কারণ এটি একটি ভাল এবং অপ্টিমাইজেবল প্রোগ্রাম তৈরি করার জন্য অত্যন্ত মূল্যবান৷ আমি বিশ্বাস করি এই নিবন্ধটি দিয়ে আপনি আপনার প্রোগ্রামে লুপ ব্যবহার করার মূল বিষয় এবং জটিলতা বুঝতে সক্ষম হবেন।