در فرایند برنامه نویسی، بسیاری از مواقع نیاز به اجرای وظایف تکراری و فرایندهای متوالی وجود دارد. در این مواقع از دستورات و روشهای مختلفی میتوان استفاده کرد که حلقهها به عنوان موثرترین راهکار شناخته میشوند. در پنجمین قسمت از آموزش جاوا اسکریپت با انواع مختلف حلقهها و کاربرد آنها در این زبان برنامه نویسی آشنا خواهید شد.
در این مقاله خواهید خواند:
حلقه ها در JavaScript
رد و نشان حلقهها در تمامی زبانهای برنامهنویسی مشاهده میشود. در جاوا اسکریپت نیز این موضوع صدق میکند. از حلقهها برای جلوگیری از اجرای چندباره کارهای یکسان استفاده میشود. از این وضعیت در برنامه نویسی با نام “تکرار” یاد میشود.
به عنوان مثال فرض کنید فهرستی از اعداد داریم که میخواهیم مجموع آنها با یکدیگر را محاسبه کنیم. در این شرایط میتوان به سادگی با استفاده از یک حلقه for مجموع مورد نظر را حساب کرد. در ادامه با مثالها و کاربردهای بیشتری در این رابطه آشنا خواهید شد.
حلقه for در جاوا اسکریپت
حلقه for یکی از پرکاربردترین حلقههای تکرار در زبان جاوا اسکریپت است. این حلقه به ما امکان میدهد یک تکه کد را چندین بار تکرار کنیم.
شکل کلی حلقه for در جاوا اسکریپت به صورت زیر است:
for (initial_expression; condition_expression; increment_expression) {
// کد تکرار شونده
}
- initial_expression یک عبارت اختیاری است که در ابتدای اجرای حلقه اجرا میشود. معمولاً این عبارت برای مقداردهی اولیه یک متغیر شمارنده استفاده میشود.
- condition_expression یک عبارت شرطی است که تعیین میکند حلقه تا چه زمانی ادامه داشته باشد. اگر مقدار این عبارت true باشد، حلقه تکرار میشود. در غیر این صورت، حلقه متوقف میشود.
- increment_expression یک عبارت اختیاری است که در انتهای هر تکرار حلقه اجرا میشود. معمولاً این عبارت برای افزایش یا کاهش مقدار متغیر شمارنده استفاده میشود.
مثال زیر نحوه استفاده از حلقه for برای چاپ اعداد از ۱ تا ۱۰ را نشان میدهد:
for (let i = 1; i <= 10; i++) {
console.log(i);
}
خروجی این کد به صورت زیر خواهد بود:
1
2
3
4
5
6
7
8
9
10
مثال دیگر:
const numbers = [1, 2, 3, 4, 5];
for (let i = 0; i < numbers.length; i++) {
console.log(numbers[i]);
}
خروجی این کد به صورت زیر خواهد بود:
1
2
3
4
5
در این مثال، ما یک آرایه از اعداد را تعریف کردهایم و سپس از حلقه for برای چاپ مقادیر آرایه استفاده کردهایم.
حلقه for در جاوا اسکریپت دارای دو نوع دیگر نیز هست که در ادامه با آنها نیز آشنا خواهید شد.
حلقه while در جاوا اسکریپت
حلقه while یکی دیگر از حلقههای تکرار است که در آموزش جاوا اسکریپت به آن پرداخته میشود. این حلقه به ما امکان میدهد یک تکه کد را تا زمانی که یک شرط برقرار باشد، تکرار کنیم.
شکل کلی حلقه while در جاوا اسکریپت به صورت زیر است:
while (condition_expression) {
// کد تکرار شونده
}
در این حلقه، ابتدا عبارت شرطی بررسی میشود. اگر مقدار این عبارت true باشد، کد تکرار شونده اجرا میشود. سپس دوباره عبارت شرطی بررسی میشود و این فرآیند تا زمانی که مقدار عبارت شرطی false شود، ادامه مییابد.
مثال زیر نحوه استفاده از حلقه while برای چاپ اعداد از ۱ تا ۱۰ را نشان میدهد:
let i = 1;
while (i <= 10) {
console.log(i);
i++;
}
i++ با i=i+1 برابر است.
خروجی این کد به صورت زیر خواهد بود:
1
2
3
4
5
6
7
8
9
10
مثال دیگر:
const numbers = [1, 2, 3, 4, 5];
let i = 0;
while (i < numbers.length) {
console.log(numbers[i]);
i++;
}
خروجی این کد به صورت زیر خواهد بود:
1
2
3
4
5
در این مثال، ما یک آرایه از اعداد را تعریف کردهایم و سپس از حلقه while برای چاپ مقادیر آرایه استفاده کردهایم.
تفاوت حلقه while با حلقه for این است که در حلقه while، شرط بررسی در ابتدای حلقه انجام میشود. در حالی که در حلقه for، شرط بررسی در انتهای حلقه انجام میشود.
به همین دلیل، حلقه while برای زمانی مناسب است که ما میخواهیم کد تکرار شونده را حداقل یک بار اجرا کنیم، حتی اگر شرط در ابتدای حلقه برقرار نباشد.
به عنوان مثال، اگر بخواهیم یک تابع را تا زمانی که کاربر از طریق ورودی متنی دستور “خروج” را وارد نکند، تکرار کنیم، میتوانیم از حلقه while استفاده کنیم.
function repeatFunction() {
let input = prompt(“دستور خود را وارد کنید:”);
while (input !== “خروج”) {
console.log(“دستور شما: ” + input);
input = prompt(“دستور خود را وارد کنید:”);
}
}
repeatFunction();
خروجی این کد به صورت زیر خواهد بود:
دستور خود را وارد کنید: سلام
دستور شما: سلام
دستور خود را وارد کنید: دنیا
دستور شما: دنیا
دستور خود را وارد کنید: خروج
در این مثال، ما تابعی به نام repeatFunction تعریف کردهایم که تا زمانی که کاربر دستور “خروج” را وارد نکند، تکرار میشود. در هر تکرار، دستور کاربر از طریق ورودی متنی دریافت میشود و در کنسول چاپ میشود.
حلقه do … while در جاوا اسکریپت
از دیگر انواع حلقهها در جاوا اسکریپت میتوان به حلقه do … while اشاره کرد. این حلقه از لحاظ ساختار شباهت بسیاری به while دارد با این تفاوت که شرط حلقه do … while در انتهای حلقه تعریف و کنترل خواهد شد. در واقع در این حلقه ابتدا دستورات حلقه اجرا شده و در انتها شرط حلقه برای اجرای مجدد کنترل خواهد شد که در صورت درست بودن، یکبار دیگر دستورات تکرار میشود.
در این حلقه، در صورت عدم برقراری شرط حلقه، حتی در صورت غلط بودن نیز، دستورات آن حداقل برای یکبار اجرا خواهد شد.
ساختار این نوع حلقه، به شکل زیر است:
do {
// کد تکرار شونده
} while (condition_expression);
در این حلقه، ابتدا کد تکرار شونده اجرا میشود. سپس عبارت شرطی بررسی میشود. اگر مقدار این عبارت true باشد، کد تکرار شونده دوباره اجرا میشود. این فرآیند تا زمانی که مقدار عبارت شرطی false شود، ادامه مییابد.
در اینجا چند تا مثال از حلقه do while در جاوا اسکریپت آورده شده است:
چاپ اعداد از ۱ تا ۱۰:
let i = 1;
do {
console.log(i);
i++;
} while (i <= 10);
گرفتن ورودی از کاربر تا زمانی که عدد صحیح وارد کند:
let input;
do {
input = prompt(“یک عدد صحیح وارد کنید:”);
} while (!/^\d+$/.test(input));
console.log(“عدد صحیح وارد شده: ” + input);
ساخت بازی با do … while
function guessNumber() {
let number = Math.floor(Math.random() * 100);
let guess;
do {
guess = prompt(“عدد را حدس بزنید:”);
if (guess < number) {
console.log(“عدد بزرگتر است”);
} else if (guess > number) {
console.log(“عدد کوچکتر است”);
} else {
console.log(“آفرین! عدد را درست حدس زدید”);
}
} while (guess !== number);
}
guessNumber();
در این کد، ما ابتدا یک عدد تصادفی بین ۱ تا ۱۰۰ تولید میکنیم. سپس از حلقه do…while برای تکرار بازی استفاده میکنیم. در هر تکرار، از کاربر میخواهیم عدد را حدس بزند. اگر حدس کاربر درست باشد، بازی متوقف میشود. در غیر این صورت، بازی به تکرار ادامه میدهد و به کاربر میگوید که عدد حدس زده شده بزرگتر یا کوچکتر از عدد واقعی است.
در اینجا یک نمونه از خروجی این کد آورده شده است:
عدد را حدس بزنید: 50
عدد بزرگتر است
عدد را حدس بزنید: 75
عدد بزرگتر است
عدد را حدس بزنید: 90
عدد کوچکتر است
عدد را حدس بزنید: 95
عدد بزرگتر است
عدد را حدس بزنید: 92
آفرین! عدد را درست حدس زدید
البته، این فقط یک نمونه ساده از یک بازی است. با کمی تغییر در کد، میتوانیم بازیهای پیچیدهتری را نیز بسازیم.
اینها فقط چند نمونه از کاربردهای حلقه do while در جاوا اسکریپت هستند. با کمی خلاقیت، میتوانیم از این حلقه برای ساخت کدهای پیچیدهتر نیز استفاده کنیم.
حلقه for-in در جاوا اسکریپت
آخرین مورد از حلقههایی که در این بخش از آموزش جاوا اسکریپت به آن پرداخته میشود، حلقه for-in است. حلقه for in در جاوا اسکریپت یک حلقه تکرار است که برای تکرار روی ویژگیهای یک شیء (object) استفاده میشود.
شکل کلی حلقه for in در جاوا اسکریپت به صورت زیر است:
for (const [key, value] of object) {
// کد تکرار شونده
}
در این حلقه، ابتدا یک پیمایش روی ویژگیهای شیء object انجام میشود. برای هر ویژگی، یک جفت کلید-مقدار (key-value) تولید میشود. سپس این جفت کلید-مقدار در متغیرهای key و value ذخیره میشود. در نهایت، کد تکرار شونده اجرا میشود.
مثال زیر نحوه استفاده از حلقه for in برای تکرار روی ویژگیهای یک شیء را نشان میدهد:
const person = {
name: “Ali Zare”,
age: 30,
address: “123 AhmadAbad Street”
};
for (const [key, value] of person) {
console.log(`Key: ${key}, Value: ${value}`);
}
خروجی این کد به صورت زیر خواهد بود:
Key: name, Value: Ali Zare
Key: age, Value: 30
Key: address, Value: 123 AhmadAbad Street
در این مثال، ما یک شیء به نام person تعریف کردهایم که دارای سه ویژگی name، age و address است. سپس از حلقه for in برای تکرار روی ویژگیهای این شیء استفاده کردهایم. در هر تکرار، کلید و مقدار ویژگی فعلی در متغیرهای key و value ذخیره میشوند و سپس در کنسول چاپ میشوند.
حلقه for in میتواند برای تکرار روی ویژگیهای هر شیئی که پیمایش ویژگیها را پشتیبانی میکند، استفاده شود. به عنوان مثال، میتوانیم از این حلقه برای تکرار روی ویژگیهای یک آرایه، یک تابع، یک شیء تعریف شده توسط کاربر یا یک شیء داخلی استفاده کنیم.
جمع بندی
در پنجمین بخش از آموزش جاوا اسکریپت با یکی دیگر از دستورات مهم در این زبان؛ یعنی حلقهها آشنا شدیم. در قسمتهای بعد بیشتر با نکات مختلف برنامهنویسی و به طور کلی حوزه تکنولوژی آشنا خواهید شد.
اگر تمایل دارید تا به شکلی حرفهایتر در این فضا فعالیت داشته باشید، بهتر است با بهرهمندی از ساخت وبسایت اختصاصی فعالیت حرفهای خود را آغاز کنید. برای این منظور تنها کافی است همین حالا با مشاوران گروه نرم افزاری آسمان تماس حاصل فرمایید.
سوالات متداول
تفاوت حلقه for با حلقه while چیست؟
for برای تکرار روی مقادیر یک آرایه یا شیء استفاده میشود، در حالی که حلقه while برای تکرار روی مقادیر یک آرایه یا شیء یا تکرار روی یک شرط استفاده میشود.
تفاوت حلقه do...while با حلقه while چیست؟
حلقه do…while حداقل یک بار اجرا میشود، حتی اگر شرط در ابتدای حلقه برقرار نباشد، در حالی که حلقه while ممکن است اصلاً اجرا نشود، اگر شرط در ابتدای حلقه برقرار نباشد.
حلقه for in چه کاربردی دارد؟
for in برای تکرار روی ویژگیهای یک شیء استفاده میشود.