এটি একটি অন্ধকার সোমবার, এবং আপনি কর্মক্ষেত্রে আছেন। আমরা সবাই জানি সোমবার কতটা হতাশাজনক হতে পারে, তাই না? আপনার বস আপনার কাছে এসে বললেন, "আরে, সপ্তাহান্তে আমার কাছে 300টি না খোলা ইমেল রয়েছে। আমি চাই আপনি প্রতিটি খুলুন, প্রেরকের নাম লিখুন এবং আপনার কাজ শেষ হয়ে গেলে ইমেলগুলি মুছে দিন।"
আপনি যদি ম্যানুয়ালি এটি করার চেষ্টা করেন তবে এই কাজটি খুব ক্লান্তিকর দেখায়। আপনার মনের পরের জিনিসটি সম্ভবত গুগলে যাওয়া এবং এমন সফ্টওয়্যার সন্ধান করা যা এই প্রক্রিয়াটিকে স্বয়ংক্রিয় করতে পারে এবং আপনার জীবনকে আরও সহজ করে তুলতে পারে, তাই না?
ওয়েল, আমরা প্রোগ্রামিং অনুরূপ পরিস্থিতি আছে. এমন কিছু সময় আছে যখন সেগুলি সম্পন্ন না হওয়া পর্যন্ত আপনাকে বারবার কাজগুলি সম্পাদন করতে হবে। আপনি কিভাবে এই সমস্যা সমাধান করবেন? জাভাস্ক্রিপ্টে, আমরা যাকে লুপ হিসাবে উল্লেখ করি। লুপগুলি আমাদের টাস্ক সম্পূর্ণ করার জন্য প্রয়োজনীয় কোডের পরিমাণ কমিয়ে বারবার কাজগুলি সমাধান করতে দেয়।
এই নিবন্ধে, আমরা আলোচনা করব লুপ কী, এটি কীভাবে কাজ করে এবং আমাদের প্রোগ্রামগুলিতে এটি প্রয়োগ করার জন্য আমরা বিভিন্ন পদ্ধতি ব্যবহার করতে পারি।
জাভাস্ক্রিপ্টে লুপ ব্যবহার করা হয় সহজে বারবার ক্রিয়া সম্পাদন করতে। তারা সত্য বা মিথ্যা ফেরত একটি শর্ত উপর ভিত্তি করে.
একটি শর্ত একটি এক্সপ্রেশন যা একটি লুপ চলমান রাখা আবশ্যক পাস করা আবশ্যক. একটি লুপ চলে যখন নির্দিষ্ট শর্ত একটি সত্য মান প্রদান করে এবং যখন তারা একটি মিথ্যা মান প্রদান করে তখন বন্ধ হয়ে যায়।
লুপগুলি পুনরাবৃত্তিমূলক কাজগুলি সম্পাদনের জন্য দরকারী। উদাহরণস্বরূপ, একটি লুপ ব্যবহার করে একটি সমস্যা সমাধানের জন্য প্রয়োজনীয় কোডটি ছোট করে। এটি সময় সাশ্রয় করে, মেমরি ব্যবহার অপ্টিমাইজ করে এবং নমনীয়তা উন্নত করে।
একটি লুপের প্রকৃত তাৎপর্য কোডের দৈর্ঘ্য হ্রাস এবং পুনরাবৃত্তি সীমিত করার বাইরেও প্রসারিত। অ্যারে, অবজেক্ট বা অন্যান্য কাঠামোতে ডেটা নিয়ে কাজ করার সময়ও তারা সাহায্য করে। অধিকন্তু, লুপগুলি পুনরাবৃত্তিমূলক কোড হ্রাস করে এবং কোড পুনঃব্যবহারযোগ্যতা বৃদ্ধি করে কোড মডুলারিটি প্রচার করে, যা আপনার প্রকল্পের বিভিন্ন অংশে ব্যবহার করা যেতে পারে এমন কোডগুলি তৈরি করা সম্ভব করে।
লুপের দুটি প্রধান বিভাগ রয়েছে: প্রবেশ-নিয়ন্ত্রিত লুপ এবং প্রস্থান-নিয়ন্ত্রিত লুপ।
এন্ট্রি-নিয়ন্ত্রিত লুপগুলি লুপের বডি কার্যকর করার আগে "লুপের প্রবেশদ্বারে" অবস্থার মূল্যায়ন করে। অবস্থা সত্যি হলে শরীর চলে। না হলে শরীর চলে না। for
এবং while
loops হল এন্ট্রি-নিয়ন্ত্রিত লুপের উদাহরণ।
প্রস্থান-নিয়ন্ত্রিত লুপগুলি পরীক্ষার অবস্থার উপর লুপের শরীরের উপর ফোকাস করে, নিশ্চিত করে যে লুপের বডি পরীক্ষা শর্ত মূল্যায়ন করার আগে অন্তত একবার কার্যকর করা হয়েছে। প্রস্থান-নিয়ন্ত্রিত লুপের একটি ভাল উদাহরণ হল 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" এর বর্তমান মান শর্তটি ব্যর্থ করে, এই ক্ষেত্রে, যেখানে "i" এর মান "সংখ্যা" যা 6 এর চেয়ে বেশি, লুপটি চলা বন্ধ হয়ে যায়।
push()
পদ্ধতি হল একটি অন্তর্নির্মিত জাভাস্ক্রিপ্ট ফাংশন যা একটি অ্যারের শেষে একটি নতুন আইটেম যোগ করে।
আউটপুট
[1, 2, 3, 4, 5]
একটি do-while
লুপ ঘনিষ্ঠভাবে while loop এর সাথে সাদৃশ্যপূর্ণ; 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
do-while
লুপ কোড ব্লকের এক্সিকিউশন নিশ্চিত করে, যা কনসোলে 5 রিটার্ন করে, যদিও "i" এর মান প্রাথমিকভাবে "num" এর চেয়ে বেশি, এটি এখনও কনসোলে একবার লগ ইন করা হয়। এই উপস্থাপনাটি আপনাকে do-while
এবং while
লুপের মধ্যে কার্যকারিতার পার্থক্য দেখায়।
for loop
হল একটি অনন্য ধরনের লুপ এবং প্রোগ্রামারদের দ্বারা সবচেয়ে বেশি ব্যবহৃত লুপগুলির মধ্যে একটি, for loop
হল একটি লুপ যা একটি শর্তের উপর নির্ভর করে নির্দিষ্ট সংখ্যক বার কোড ব্লক চালায়। লুপের জন্য নিচের সিনট্যাক্স রয়েছে।
for (Expression1...; Expression2....; Expression3...{ //code block }
এক্সপ্রেশন 1: for loop
a-এর এই অংশটিকে প্রারম্ভিক এলাকাও বলা হয়; এটা আমাদের 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
পদ্ধতি তিনটি পরামিতি নেয় এবং অ্যারেতে একটি কলব্যাক ফাংশন প্রয়োগ করে।
এই লাইন; arr[index] = num * 2
বর্তমান উপাদানের মানকে 2 দ্বারা গুণ করে এবং বর্তমান উপাদানের সূচকে প্রত্যাবর্তিত মান নির্ধারণ করে।
নোট নিন: for-each
পদ্ধতি একটি নতুন অ্যারে ফেরত দেয় না; বরং, এটি মূল অ্যারে পরিবর্তন করে এবং এটি ফেরত দেয়।
আউটপুট
[2, 4, 6, 8, 10]
এর for... in
এবং for... of
লুপগুলি খুব দরকারী যখন এটি পুনরাবৃত্তিযোগ্য বস্তুর উপর পুনরাবৃত্তি করার ক্ষেত্রে আসে; পুনরাবৃত্তিযোগ্য অবজেক্টগুলি এমন কোনও উপাদানকে বোঝায় যা লুপ করতে সক্ষম, পুনরাবৃত্তিযোগ্য বস্তুর সাধারণ উদাহরণ হল অ্যারে, স্ট্রিং, সেট ইত্যাদি।
for... in
এবং for... of
মধ্যে একই রকম যে তারা বস্তুর মধ্য দিয়ে কিভাবে পুনরাবৃত্ত/নড়ান করে, তাদের মধ্যে প্রধান পার্থক্য দেখানো হয় কিভাবে তারা মান ফেরত দেয়।
A for... in
loop উপযোগী যখন আপনাকে কোনো বস্তু থেকে কী(গুলি)/বৈশিষ্ট্য এবং মূল বস্তু থেকে এর সংশ্লিষ্ট বৈশিষ্ট্যগুলি বের করতে হবে। 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
সংক্ষেপে, লুপগুলির for... in
এবং for... of
পুনরাবৃত্তিযোগ্য বস্তুগুলির মাধ্যমে লুপ করার একটি দুর্দান্ত উপায়; প্রধান পার্থক্য হল a for... in
loop একটি অবজেক্টের কী প্রদান করে যখন for... of
loop শুধুমাত্র পুনরাবৃত্তিযোগ্য বস্তুর মান প্রদান করে।
একটি অসীম লুপ এমন একটি লুপকে বোঝায় যা অনির্দিষ্টকালের জন্য চলতে থাকে; এটি ঘটে যখন একটি লুপের কোন সংজ্ঞায়িত প্রস্থান শর্ত থাকে না। অসীম লুপগুলি বিপজ্জনক কারণ সেগুলি আপনার ব্রাউজারকে ক্র্যাশ করতে পারে এবং আপনার প্রোগ্রামে অবাঞ্ছিত ক্রিয়াকলাপের দিকে নিয়ে যেতে পারে৷
// infinite loop sample while (true) { console.log("keep on running") }
আপনার প্রোগ্রামে অসীম লুপ প্রতিরোধ করতে, সর্বদা নিশ্চিত করুন যে আপনার লুপের মধ্যে একটি প্রস্থান শর্ত সংজ্ঞায়িত করা আছে।
এই নিবন্ধটি শেষ করার জন্য আপনাকে অনেক ধন্যবাদ, জাভাস্ক্রিপ্টে লুপগুলি একটি গুরুত্বপূর্ণ ধারণা যা প্রতিটি বিকাশকারীকে আয়ত্ত করতে হবে কারণ এটি একটি ভাল এবং অপ্টিমাইজেবল প্রোগ্রাম তৈরি করার জন্য অত্যন্ত মূল্যবান৷ আমি বিশ্বাস করি এই নিবন্ধটি দিয়ে আপনি আপনার প্রোগ্রামে লুপ ব্যবহার করার মূল বিষয় এবং জটিলতা বুঝতে সক্ষম হবেন।