Гузариш ба мундариҷа
Мавзӯи 6 аз 16
Назария

Даврҳо

Ин барои чӣ лозим аст

Компютер бо он хуб аст, ки аз такрор хаста намешавад. Сад сатр баровардан, ҳазор ададро санҷидан, ҳамаи молҳои сабадро аз назар гузарондан — барои ин даврҳо (циклҳо) ҳастанд: коде, ки паси ҳам бисёр маротиба иҷро мешавад.

Даври for

Даври аз ҳама маъмул — бо ҳисобкунак:

for (let i = 1; i <= 5; i++) {
  console.log("Қадам", i);
}

Натиҷа:

Қадам 1
Қадам 2
Қадам 3
Қадам 4
Қадам 5

Дар қавсҳо се қисм бо ; ҳаст:

  1. let i = 1 — оғоз: ҳисобкунакро месозем (як маротиба иҷро мешавад);
  2. i <= 5 — шарт: то он дуруст аст, давр мегардад;
  3. 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 хурд ҳам дорад — онро мо пештар меёбем.

Хатоҳои маъмул

  1. Даври беохир. i++ ё иваз кардани тағйирёбанда дар while фаромӯш шуд — давр ҳеҷ гоҳ тамом намешавад.
  2. Хато ба як. i < 5 1…4 медиҳад, вале i <= 5 — 1…5. Ҳудудҳоро дар мисоли хурд санҷед.
  3. Тағйирёбандаи ҷамъкунанда дар дохили давр. for (…) { let sum = 0; sum += i; } — сумма ҳар дафъа сифр мешавад. Ҷамъкунандаро пеш аз давр эълон кунед.
  4. return дар дохили давр пеш аз вақт. return true дар итератсияи аввал санҷишро қатъ мекунад. «Муваффақият»-ро танҳо баъд аз давр баргардонед.
  5. Нуқта-вергул баъд аз қавсҳо. for (…); { … } — тани давр холист, ва блок як маротиба иҷро мешавад.

Ёддошт

Чӣ Чӣ тавр
Бо ҳисобкунак for (let i = 0; i < n; i++) { … }
То дуруст аст while (шарт) { … }
Ақаллан як бор do { … } while (шарт);
Баромадан аз давр break
Ба қадами навбатӣ continue
Ҷамъкунанда let sum = 0; пеш аз давр, sum += … дар дохил

Сумма то n

Осон+10 XP

Функсияи sumTo(n)-ро анҷом диҳед, ки суммаи ҳамаи ададҳои бутунро аз 1 то n бо дохилшавӣ бармегардонад. Агар n аз 1 хурд бошад, сумма 0 аст.

sumTo(3)   → 6      (1 + 2 + 3)
sumTo(10)  → 55
sumTo(0)   → 0

Барои ҳал кардани масъалаҳо коннекторро пайваст кун

Коди масъалаҳо дар компютери худат иҷро мешавад — ин аз браузер тезтар ва боэътимодтар аст. Барои ин барномаи ройгони коннектори CodeWithMe лозим аст. Онро як бор пайваст кардан кифоя аст.

Коннекторро дар ин компютер ҷустуҷӯ мекунем…

  1. 1
    Коннекторро барои системаи худ (Windows, macOS ё Linux) зеркашӣ кун.Зеркашии коннекторДар саҳифаи зеркашӣ файлеро интихоб кун, ки дар номаш системаи ту ҳаст, масалан windows-amd64.
  2. 2Онро иҷро кун ва ҷузвдонеро интихоб кун, ки ҳалҳоят дар он ҷо меистанд. Python ва Node.js-ро ӯ худаш ҳангоми зарурат ба он ҷо мегузорад.
  3. 3
    Дар поён рамзи 6-рақамаро ворид кун — он дар равзанаи коннектор навишта шудааст («Рамз барои сайти CodeWithMe»). Агар браузер дар бораи дастрасӣ ба шабакаи маҳаллӣ пурсад — иҷозат деҳ.

Коннектор кушода аст (рамзи манбаъ дар GitHub), танҳо дар компютери ту кор мекунад ва кодро танҳо пас аз ворид кардани рамзи пайвастшавӣ иҷро мекунад.