Files
freeCodeCamp/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md
freeCodeCamp's Camper Bot e6b05ee25d chore(i18n,learn): processed translations (#54537)
Co-authored-by: Naomi <nhcarrigan@gmail.com>
2024-04-26 12:26:37 +07:00

3.2 KiB
Raw Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7b86367417b2b2512b3d Запобігання нескінченного циклу з дійсною кінцевою умовою 1 301192 prevent-infinite-loops-with-a-valid-terminal-condition

--description--

Остання тема — нескінченний цикл, який багатьох лякає. Цикли є чудовими інструментами, якщо вам необхідно, щоб програма виконувала блок коду певну кількість разів або поки умова не буде виконана, але їм також потрібна кінцева умова, яка закінчить цикл. Нескінченні цикли можуть призвести до блокування або збоїв у роботі браузера, чого кожен прагнув би уникнути.

У вступі до цього розділу був приклад нескінченного циклу: у ньому немає кінцевої умови для того, щоб закінчити цикл while всередині loopy(). НЕ викликайте цю функцію!

function loopy() {
  while(true) {
    console.log("Hello, world!");
  }
}

Завданням програміста — гарантувати, що кінцева умова, яка вказує програмі на кінець циклу, буде досягнута. Однією з помилок є зменшення або збільшення змінної лічильника у неправильному від кінцевої умови напрямку. Іншою помилкою є випадкове скидання змінної лічильника або індексу всередині циклу замість збільшення або зменшення.

--instructions--

Функція myFunc() містить нескінченний цикл, оскільки кінцева умова i != 4 ніколи не буде false (та не закінчить цикл): i збільшуватиметься на 2 при кожному виконанні та пропустить 4, оскільки i має бути непарним числом. Виправте оператор порівняння у кінцевій умові так, щоб цикл виконувався лише за умови, що i менше або дорівнює 4.

--hints--

Ваш код повинен змінити оператора порівняння у кінцевій умові (середня частина) циклу for.

assert(__helpers.removeJSComments(code).match(/i\s*?<=\s*?4;/g).length == 1);

Ваш код повинен виправити оператора порівняння у кінцевій умові циклу.

assert(!__helpers.removeJSComments(code).match(/i\s*?!=\s*?4;/g));

--seed--

--seed-contents--

function myFunc() {
  for (let i = 1; i != 4; i += 2) {
    console.log("Still going!");
  }
}

--solutions--

function myFunc() {
 for (let i = 1; i <= 4; i += 2) {
   console.log("Still going!");
 }
}