حلقهها و تکرار
اجرای کارهای تکراری با حلقهٔ for و while و کنترل جریان تکرار با break و continue.
آنچه در این درس میآموزید
- با حلقهٔ for کار تکراری را با شمارنده اجرا کنید
- حلقهٔ while را برای تکرار تا برقراری شرط به کار ببرید
- جریان حلقه را با break و continue کنترل کنید
فهرست مطالب
کامپیوتر برای تکرار ساخته شده است. پردازش هزار ردیف داده، چککردن هر محصول سبد خرید یا شمردن ثانیههای یک تایمر، همگی کارهای تکراریاند که نوشتنشان خطبهخط بیمعناست. «حلقه» (Loop) به برنامه میگوید یک بلوک از کد را چند بار اجرا کند؛ این درس دو شکل اصلی آن را یاد میدهد.
حلقهٔ for
حلقهٔ for برای وقتی است که تعداد تکرارها را میدانید. سه بخش داخل پرانتز دارد:
for (let i = 1; i <= 5; i++) {
console.log(i);
}1 2 3 4 5
سه بخش داخل پرانتز، دقیقاً این رفتار را میسازند:
let i = 1— بخش آغازین؛ فقط یک بار در شروع اجرا میشود و شمارندهٔ حلقه را میسازد.i <= 5— شرط ادامه؛ پیش از هر تکرار بررسی میشود و تا وقتیtrueاست حلقه میچرخد.i++— گام؛ بعد از هر تکرار اجرا میشود و شمارنده را یکی زیاد میکند. (عبارتi++همانi = i + 1است.)
ترتیب اجرا را با هم دنبال کنید: آغاز، شرط، بدنه، گام، شرط، بدنه، گام و همینطور تا شرط نادرست شود.
مثال کاربردیتر؛ جمع عددهای ۱ تا ۱۰:
let sum = 0;
for (let i = 1; i <= 10; i++) {
sum += i;
}
console.log(sum);55
عبارت sum += i شکل کوتاه sum = sum + i است: مقدار فعلی sum با i جمع و نتیجه دوباره در sum گذاشته میشود.
حلقهٔ while
وقتی تعداد تکرار را از قبل نمیدانید و فقط شرط ادامه دارید، while مناسبتر است؛ این حلقه تا وقتی شرطش درست است میچرخد:
let count = 3;
while (count > 0) {
console.log(count);
count--;
}
console.log("Liftoff!");3 2 1 Liftoff!
نکتهٔ حیاتی: چیزی داخل حلقه باید شرط را به سمت نادرستشدن پیش ببرد. اگر خط count-- را فراموش کنید، شرط همیشه درست میماند و حلقه هرگز تمام نمیشود؛ به این وضعیت «حلقهٔ بینهایت» (Infinite Loop) میگویند و برنامه را از کار میاندازد.
break و continue
گاهی لازم است جریان حلقه را وسط راه تغییر دهید. دو ابزار این کار را انجام میدهند:
break حلقه را کاملاً ترک میکند؛ مثل وقتی که در جستوجو، جواب را پیدا کردهاید و ادامهٔ گشتن بیهوده است:
const secret = 7;
for (let guess = 1; guess <= 10; guess++) {
if (guess === secret) {
console.log("Found:", guess);
break;
}
}Found: 7
continue فقط همان تکرار را رد میکند و میپرد به تکرار بعدی. این حلقه فقط عددهای فرد را چاپ میکند:
for (let i = 1; i <= 6; i++) {
if (i % 2 === 0) {
continue;
}
console.log(i);
}1 3 5
هر بار i زوج بود، خط continue بقیهٔ بدنه را رد کرد و حلقه مستقیم به گام i++ رفت.
تمرینها
تمرین
تمرین ۱ — جمع عددهای زوج
با یک حلقه، جمع همهٔ عددهای زوج از ۲ تا ۱۰۰ را حساب کنید و در پایان چاپ کنید.
// Write your code hereنمایش راهحل
let sum = 0;
for (let i = 2; i <= 100; i += 2) {
sum += i;
}
console.log(sum);2550
::: :::
خلاصه
- حلقهٔ
forبا سه بخش آغاز، شرط و گام، تکرار با شمارنده را میسازد. - حلقهٔ
whileتا برقراری شرط میچرخد و برای تعداد تکرار نامعلوم مناسب است. breakحلقه را کامل قطع میکند وcontinueفقط تکرار جاری را رد میکند.- اگر شرط حلقه هیچوقت نادرست نشود، برنامه در حلقهٔ بینهایت گیر میکند.
تکرار داریم؛ حالا وقت آن است که کدهای خود را قابلاستفادهٔ مجدد کنیم. در درس بعدی با توابع، بلوکهای کد را نامدار و قابلفراخوانی میکنیم.