Даврҳо
Ин барои чӣ лозим аст
Компютер бо он хуб аст, ки аз такрор хаста намешавад. Сад сатр баровардан, ҳазор ададро санҷидан, ҳамаи молҳои сабадро аз назар гузарондан — барои ин даврҳо (циклҳо) ҳастанд: коде, ки паси ҳам бисёр маротиба иҷро мешавад.
Даври for
Даври аз ҳама маъмул — бо ҳисобкунак:
for (let i = 1; i <= 5; i++) {
console.log("Қадам", i);
}
Натиҷа:
Қадам 1
Қадам 2
Қадам 3
Қадам 4
Қадам 5
Дар қавсҳо се қисм бо ; ҳаст:
let i = 1— оғоз: ҳисобкунакро месозем (як маротиба иҷро мешавад);i <= 5— шарт: то он дуруст аст, давр мегардад;i++— қадам: баъд аз ҳар такрор бо ҳисобкунак чӣ кор кардан лозим.
Як гузариши тани даврро итератсия меноманд. Ҳисобкунак метавонад ба тарафи баръакс ва бо қадами дигар равад:
for (let i = 10; i > 0; i -= 3) {
console.log(i);
}
Натиҷа:
10
7
4
1
Ҷамъ кардани натиҷа
Усули маъмул — тағйирёбандаро пеш аз давр сохтан ва дар он ҷамъ кардан:
let total = 0;
for (let i = 1; i <= 4; i++) {
total += i * i;
}
console.log(total);
Натиҷа:
30
(1 + 4 + 9 + 16 = 30)
Даври while
while то вақте мегардад, ки шарт дуруст аст. Вақте қулай аст, ки пешакӣ маълум нест, чанд қадам мешавад:
let money = 1000;
let years = 0;
while (money < 2000) {
money *= 1.1; // +10% дар як сол
years++;
}
console.log("Пас аз", years, "сол дучанд мешавад");
Натиҷа:
Пас аз 8 сол дучанд мешавад
do … while
Ҳамон, вале шарт баъд аз тан санҷида мешавад — бинобар ин тан ақаллан як маротиба иҷро мешавад:
let n = 0;
do {
console.log("Иҷро шуд, гарчанде n =", n);
} while (n > 0);
Натиҷа:
Иҷро шуд, гарчанде n = 0
break ва continue
break— фавран аз давр баромадан;continue— боқимондаи қадами ҷориро гузаронида, ба навбатӣ гузаштан.
for (let i = 1; i <= 10; i++) {
if (i % 2 === 0) continue; // ҷуфтҳоро мегузаронем
if (i > 7) break; // баъд аз 7 — бас
console.log(i);
}
Натиҷа:
1
3
5
7
Дар функсия ба ҷойи break аксар вақт return менависанд — он ҳам аз давр ва ҳам аз функсия якбора мебарояд.
Даврҳои дарунӣ
Давр дар дохили давр — масалан, ҷадвали зарб:
for (let row = 1; row <= 3; row++) {
let line = "";
for (let col = 1; col <= 3; col++) {
line += row * col + " ";
}
console.log(line);
}
Натиҷа:
1 2 3
2 4 6
3 6 9
Дар дохил чӣ гуна кор мекунад
Муҳаррик for-ро чунин иҷро мекунад: оғоз → санҷиши шарт → тан → қадам → санҷиш → тан → қадам… то шарт
дурӯғ шавад. Агар шарт ҳеҷ гоҳ дурӯғ нашавад, даври беохир мешавад: барнома овезон мемонад. Дар сайт
чунин код аз рӯи таймер бо хато қатъ мешавад. Бинобар ин ҳамеша санҷед, ки ҳисобкунак воқеан ба сӯи баромад
ҳаракат мекунад.
Дар бораи суръат: санҷиши тақсимкунандаҳо то √n ба ҷойи n — фарқи бузург. Барои n = 1 000 000 007 ин
тақрибан 31 623 қадам ба ҷойи миллиард аст. Агар адад тақсимкунандаи аз √n калон дошта бошад, пас ҳатман
тақсимкунандаи ҷуфти аз √n хурд ҳам дорад — онро мо пештар меёбем.
Хатоҳои маъмул
- Даври беохир.
i++ё иваз кардани тағйирёбанда дарwhileфаромӯш шуд — давр ҳеҷ гоҳ тамом намешавад. - Хато ба як.
i < 51…4 медиҳад, валеi <= 5— 1…5. Ҳудудҳоро дар мисоли хурд санҷед. - Тағйирёбандаи ҷамъкунанда дар дохили давр.
for (…) { let sum = 0; sum += i; }— сумма ҳар дафъа сифр мешавад. Ҷамъкунандаро пеш аз давр эълон кунед. returnдар дохили давр пеш аз вақт.return trueдар итератсияи аввал санҷишро қатъ мекунад. «Муваффақият»-ро танҳо баъд аз давр баргардонед.- Нуқта-вергул баъд аз қавсҳо.
for (…);{ … } — тани давр холист, ва блок як маротиба иҷро мешавад.
Ёддошт
| Чӣ | Чӣ тавр |
|---|---|
| Бо ҳисобкунак | for (let i = 0; i < n; i++) { … } |
| То дуруст аст | while (шарт) { … } |
| Ақаллан як бор | do { … } while (шарт); |
| Баромадан аз давр | break |
| Ба қадами навбатӣ | continue |
| Ҷамъкунанда | let sum = 0; пеш аз давр, sum += … дар дохил |