For লুপ যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজে সবচেয়ে মূল্যবান টুলের একটি, এবং মাইক্রোসফট পাওয়ারশেল সেটি থেকে আলাদা নয়। আপনি অন্যান্য লুপ ব্যবহার করতে পারেন কমান্ড রিপিট করার জন্য, কিন্তু For লুপ হয়তো সবচেয়ে সহজ।
অ্যারে ওয়ার ইটারেট করার থেকে একটি ফাংশন নির্দিষ্ট সংখ্যক বার এক্সিকিউট করার পর্যন্ত, এই টুল দিয়ে আপনি অনেক কিছু অর্জন করতে পারেন। এখানে পাওয়ারশেলে For লুপ কীভাবে ব্যবহার করবেন সেটার একটি টিউটোরিয়াল।
পাওয়ারশেলে For লুপের ব্যবহার কী?
কমান্ড প্রম্পটের বিপরীতে, পাওয়ারশেল একটি সম্পূর্ণ স্ক্রিপ্টিং এনভায়রনমেন্ট। এর মানে আপনি পুনঃব্যবহারযোগ্য পাওয়ারশেল স্ক্রিপ্ট লিখতে পারেন কাজগুলো অটোমেটিক্যালি সম্পন্ন করতে বরং ম্যানুয়ালি কমান্ড এন্টার করার বদলে। এবং For লুপ এই মডিউল লেখার কী।
একটি For স্টেটমেন্ট একটি স্ক্রিপ্ট ব্লক নির্দিষ্ট সংখ্যক বার রিপিট করে, একটি দেয়া ভেরিয়েবল মডিফাই করে প্রগ্রেশন ট্র্যাক রাখতে। এটি আপনাকে লুপটি কিছু দিলচস্প দৃশ্যে ব্যবহার করতে দেয়।
আপনি নম্বর সিকোয়েন্স জেনারেট করতে পারেন, একটি প্রাইম নম্বর নির্ণয় করতে পারেন, বা একটি কাউন্টডাউন টাইমার ডিসপ্লে করতে পারেন। আরও প্র্যাক্টিক্যালি, আপনি একটি অবজেক্টের অ্যারে ওয়ার ইটারেট করতে পারেন, প্রতিটি এন্ট্রির সাথে কিছু অ্যাকশন পারফর্ম করে।
পাওয়ারশেলে For লুপের সিনট্যাক্স
For লুপ উইন্ডোজ পাওয়ারশেলে একইভাবে কাজ করে যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজে। ট্র্যাকিং ভেরিয়েবল ইনিশিয়ালাইজ করা এক্সপ্রেশন, এর মান টেস্ট করা, এবং ভেরিয়েবল মডিফাই করা এক্সপ্রেশন "For" এর পরে ব্র্যাকেটের ভিতরে থেকে সেমিকোলন দিয়ে আলাদা করা থাকে। তারপর आता ہے স্টেটমেন্ট লিস্ট যা কার্লি ব্রেস দিয়ে বাউন্ডেড।
For (Initialization; Condition; Update)
{
Script Block
}
পাওয়ারশেল স্ক্রিপ্টে For লুপ কীভাবে ব্যবহার করবেন
For লুপ ব্যবহার করা খুব সহজ। যখনই আপনি এমন পরিস্থিতি ফেস করেন যেটি একই ধাপ কিছুটা ভিন্নভাবে রিপিট করতে বলে, সেটি For লুপে রাখুন।
মান লें আপনাকে একটি কোড স্নিপেট লিখতে হবে যা একটি নম্বর n পর্যন্ত সকল প্রাকৃতিক সংখ্যার যোগফল বের করতে পারে, যেটি $n ভেরিয়েবলে থাকে। এখানে একটি বেসিক For লুপ উদাহরণ:
$n = 10
$sum = 0
For ($i = 1 ; $i -le $n ; $i++)
{
$sum = $sum + $i
}
"The sum of $n natural numbers is $sum"
For লুপ দিয়ে অ্যারে অ্যাক্সেস করা
নামারিক সিকোয়েন্স জেনারেট করা হলো অধিকাংশ মানুষ পাওয়ারশেলের জন্য ব্যবহার করে না। আরও সাধারণ ব্যবহার হলো একটি অ্যারে ওয়ার ইটারেট করা।
মান লেন আপনার কাছে $week নামে একটি অ্যারে আছে সাতটি এলিমেন্ট সহ। আপনি অ্যারেতে থাকা দিনগুলোর লিস্ট আউটপুট করতে পারেন একটি সহজ For লুপ ব্যবহার করে, নিচের উদাহরণে প্রদর্শিত মতো।
For ($i = 0 ; $i -lt $week.Length ; $i++)
{
$week[$i]
}
ForEach লুপ ব্যবহার করে দ্রুত অ্যারে এর মাধ্যমে ইটারেট করা
For লুপের আরেকটি ফর্ম হলো ForEach স্টেটমেন্ট। এই ভার্সন পাওয়ারশেল অ্যারের কন্টেন্টের মধ্য দিয়ে যাওয়া এবং সেগুলো ইনডিভিজুয়ালি প্রসেস করা সহজ করে দেয়। পূর্বের কোড স্নিপেটটি, উদাহরণস্বরূপ, এইভাবে রি-রাইট করা যেতে পারে:
Foreach ($day in $week)
{
$day
}
আরো জটিল অবজেক্টের সাথে কাজ করার সময়, আপনি Foreach-Object কমান্ডলেটও ব্যবহার করতে পারেন যেকোনো পাওয়ারশেল কমান্ডের কন্টেন্টের ওপর একটি অ্যাকশন পারফর্ম করতে।
For লুপ অন্যান্য লুপ টাইপ থেকে কীভাবে ভিন্ন?
For লুপ একমাত্র লুপিং স্টেটমেন্ট নয় যেটি আপনার কাছে উপলব্ধ। অধিকাংশ প্রোগ্রামিং ল্যাঙ্গুয়েজের মতো, পাওয়ারশেলে একাধিক ধরনের লুপ রয়েছে।
While
এগুলোর মধ্যে সবচেয়ে সহজ হলো While লুপ। আপনার কাছে শুধু একটি কন্ডিশন এবং একটি স্ক্রিপ্ট ব্লক থাকে, এবং লুপটি ততক্ষণ চলে যতক্ষণ না টেস্ট এক্সপ্রেশন true আসে। যেহেতু এক্সপ্রেশনটি প্রথমে ইভ্যালুয়েট হয়, কোডটি একদমই রান না করার চান্স থাকে বা ইনফিনিট লুপ হয়ে যেতে পারে।
While (Condition)
{
Script Block
}
Do-While
আপনি যদি একটি স্ক্রিপ্ট লিখছেন যেটি কমপক্ষে একবার রান করতে হবে - এমনকি এক্সপ্রেশন false ইভ্যালুয়েট হলে - তখন আপনি Do-While লুপ ব্যবহার করতে পারেন। While লুপ থেকে একমাত্র পার্থক্য হলো এটি কমান্ড ব্লককে কন্ডিশনের আগে রাখে, যার মানে কোডটি এক্সিকিউট হয় প্রথমবার টেস্ট এক্সপ্রেশন চেক করার আগে।
Do {
Script block
}
While (Condition)
Do-Until
এই লুপের আরেকটি ভার্সন হলো Do-Until। বেসিক্যালি, এটি কোড ব্লক রান করে এবং তারপর সেটি রিপিট করে যতক্ষণ না টেস্ট এক্সপ্রেশন true হয় - Do-While লুপের বিপরীত। এটি খুব উপযোগী স্ট্রাকচার নয়, কারণ আপনি স্ট্যান্ডার্ড Do-While লুপে কন্ডিশন মডিফাই করে একই জিনিস অর্জন করতে পারেন।
Do {
Script Block
}
Until (Condition)
কেন For লুপ ভালো
এই সব অন্যান্য লুপিং স্ট্রাকচারের সমস্যা হলো এগুলোর ইনিশিয়াল ভ্যালু বা আপডেট স্টেটমেন্ট নেই। আপনাকে ম্যানুয়ালি লুপের বাইরে একটি ভেরিয়েবল তৈরি করতে মনে রাখতে হয় এবং তারপর প্রতিটি পাসে এটি ইনক্রিমেন্ট (বা ডিক্রিমেন্ট) করতে হয়।
আপনার আশা অনুযায়ী, প্রোগ্রামাররা প্রায়শই এই ধাপ ভুলে যান, যার ফলে একটি স্ক্রিপ্ট যা ইন্টেন্ডেডভাবে কাজ করে না। এটি ডিবাগিং-এ কীমতী সময় বর্বাদ করে।
For লুপ এই ইস্যু এড়াতে সাহায্য করে ইনিশিয়ালাইজেশন এবং ইনক্রিমেন্ট এক্সপ্রেশন শুরুর ব্র্যাকেটের ভিতরে বাধ্যতামূলক করে। এটি ক্লিনার, আরও রোবাস্ট স্ক্রিপ্টে নিয়ে যায়।
পাওয়ারশেলে For লুপ কখন ব্যবহার করবেন?
পাওয়ারশেল অটোমেশনের জন্য স্ক্রিপ্ট তৈরি করার ওপর ফোকাস করে। এবং সম্ভবত এই কাজ অর্জনের জন্য সবচেয়ে উপকারী টুল হলো For লুপ। আপনি এটি ব্যবহার করতে পারেন অনেক কপি-পেস্ট অপারেশন রিপ্লেস করার জন্য একটি আরও কম্প্যাক্ট, এলিগ্যান্ট স্ক্রিপ্ট দিয়ে।
এই লুপের সবচেয়ে সাধারণ ফাংশন হলো একটি অ্যারে ওয়ার ইটারেট করা, একবারে একটি এন্ট্রি। আরও স্ট্রিমলাইনড স্ক্রিপ্টের জন্য, আপনি ForEach লুপও ব্যবহার করতে পারেন। আপনি নমেরিক্যাল সিকোয়েন্স জেনারেট করার জন্যও For লুপ ব্যবহার করতে পারেন, যদিও সেটি বিরল প্রয়োজন হয়।
For লুপ অন্যান্য লুপিং অ্যালগোরিদমের চেয়ে স্কোর করে লুপের সব আবশ্যক ফাংশন প্যারামিটারে অন্তর্ভুক্ত করে, সেই স্টেটমেন্টগুলো ভুলে যাওয়ার কারণে যেকোনো ইরর প্রিভেন্ট করে। এটি For লুপকে যেকোনো সিনেরিওতে όπου কমান্ড সেট রিপিট করতে হয় অপরিহার্য করে তোলে।