জাভাস্ক্রিপ্টে ফ্ল্যাগ নিয়ে কাজ
এখন আমরা ফ্ল্যাগ নিয়ে কাজ করতে শিখব।
ফ্ল্যাগ হল একটি বিশেষ ভেরিয়েবল, যা
শুধুমাত্র দুটি মান নিতে পারে: true
এবং false। ফ্ল্যাগ ব্যবহার করে
সেসব সমস্যার সমাধান করা যায়, যা
কিছুর অনুপস্থিতি পরীক্ষা করে:
উদাহরণস্বরূপ, এটি পরীক্ষা করা যায় যে অ্যারেতে
নির্দিষ্ট মান সহ কোন উপাদান নেই। আসুন
শুরু করি।
আসুন নিম্নলিখিত সমস্যাটি সমাধান করি: একটি অ্যারে দেওয়া আছে
সংখ্যা সহ, এতে 3 মান সহ কোন উপাদান
আছে কিনা তা পরীক্ষা করতে হবে। যদি
থাকে - '+++' আউটপুট করব, যদি না থাকে -
'---' আউটপুট করব।
প্রথমে '+++' আউটপুট করার চেষ্টা করি।
এর জন্য আমাদের অ্যারের সমস্ত উপাদান
পুনরাবৃত্তি করব এবং if দিয়ে জিজ্ঞাসা করব - বর্তমান
উপাদানটি 3 মানের সমান কিনা। যদি সমান হয় - আউটপুট করব
'+++':
javascriptlet arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
}
}
কিন্তু আমাদের সমাধানটি খুব ভাল নয়: কারণ যদি
অ্যারেতে একটি 3 মান না থাকে,
বরং কয়েকটি থাকে, তাহলে '+++' কয়েকবার
আউটপুট হবে। আসুন আমাদের অ্যারেটি সংশোধন করি (দুটি
উপাদান তৈরি করি যার মান 3) এবং এটা যাচাই করব:
javascriptlet arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // কয়েকবার আউটপুট করবে
}
}
সমস্যাটি ঠিক করি:
break ব্যবহার করে লুপ শেষ করি, যদি উপাদানটি ইতিমধ্যে পাওয়া যায়:
javascriptlet arr = [1, 2, 3, 4, 3, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++');
break; // লুপ শেষ করব
}
}
এখন আসুন এমনভাবে করার চেষ্টা করি, যাতে,
যদি অ্যারেতে 3 মান সহ কোন উপাদান
না থাকে, তাহলে '---' আউটপুট হয়। একটি সাধারণ
ভুল ধারণা হল আমাদের if-এ
else যোগ করা - এই ক্ষেত্রে '---'
সেসব সমস্ত উপাদানের জন্য আউটপুট হবে, যা
3 নয়:
javascriptlet arr = [1, 2, 3, 4, 5];
for (let elem of arr) {
if (elem == 3) {
console.log('+++'); // উপাদান 3-এ আউটপুট করবে
} else {
console.log('---'); // উপাদান 1, 2, 4, 5-এ আউটপুট করবে
}
}
সুতরাং, else যোগ করার ধারণা - খারাপ
ধারণা, কাজ করে না। এই ধরনের
সমস্যা সমাধানের জন্য (এই ধরনের সমস্যা বেশ
সাধারণ) তথাকথিত ফ্ল্যাগ ব্যবহার করা হয়।
যেমনটি আগে উল্লেখ করা হয়েছে, ফ্ল্যাগ হল এমন
একটি ভেরিয়েবল, যা দুটি মান নিতে পারে:
true অথবা false।
সুতরাং, আসুন একটি flag ভেরিয়েবল তৈরি করি
যার মান হবে: যদি এটি true-এর সমান হয়,
তাহলে অ্যারেতে 3 উপাদান আছে, আর যদি
false হয়, তাহলে এমন কোন উপাদান নেই।
প্রাথমিকভাবে flag ভেরিয়েবলটিকে
false মানে সেট করব - অর্থাৎ ধরে নেব,
যে অ্যারেতে 3 উপাদান নেই:
javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false; // ধরে নিই যে অ্যারেতে 3 উপাদান নেই
এরপর আমরা আগের মতো করেই if সহ একটি লুপ চালাব। যদি লুপ সনাক্ত করে যে অ্যারেতে
3 উপাদান আছে - তাহলে flag ভেরিয়েবলটিকে
true মানে সেট করব এবং break ব্যবহার করে
লুপ থেকে বের হয়ে আসব:
javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false; // ধরে নিই যে অ্যারেতে 3 উপাদান নেই
for (let elem of arr) {
if (elem == 3) {
flag = true; // উপাদান আছে - flag ভেরিয়েবলটি পুনরায় সংজ্ঞায়িত করব
break; // লুপ থেকে বের হব
}
}
অ্যারেতে 3 আছে কিনা
বা নেই, সেই প্রশ্নের উত্তর আমরা শুধুমাত্র লুপের পরেই দিতে পারি।
এবং এই উত্তর আমাদের কাছে ইতিমধ্যেই আছে: লুপের পর
flag ভেরিয়েবলটি false থাকতে পারে
অথবা এর মান true-এ পরিবর্তিত হতে পারে,
যদি লুপ অ্যারেতে 3 সনাক্ত করে:
javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
// এখানে flag ভেরিয়েবলটি true বা false
এখন লুপের পর আমরা একটি if তৈরি করতে পারি, যা
flag ভেরিয়েবলটি দেখবে এবং
'+++' বা '---' স্ক্রিনে আউটপুট করবে:
javascriptlet arr = [1, 2, 3, 4, 5];
let flag = false;
for (let elem of arr) {
if (elem == 3) {
flag = true;
break;
}
}
if (flag === true) {
console.log('+++');
} else {
console.log('---');
}
একটি অ্যারে দেওয়া আছে:
javascriptlet arr = ['a', 'b', 'c', 'd', 'e'];
পরীক্ষা করুন যে এই অ্যারেতে 'c' উপাদান
আছে কিনা। যদি থাকে - '+++' আউটপুট করুন,
আর যদি না থাকে - '---' আউটপুট করুন।
এমন একটি কোড লিখুন, যা পরীক্ষা করবে সংখ্যাটি প্রাইম কিনা। প্রাইম সংখ্যা শুধুমাত্র এক দ্বারা এবং নিজে自身 দ্বারা বিভাজ্য, এবং অন্য সংখ্যা দ্বারা বিভাজ্য নয়।