3.2 KiB
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!");
}
}