freeCodeCamp/curriculum/challenges/russian/02-javascript-algorithms-an.../debugging/prevent-infinite-loops-with...

3.9 KiB
Raw Blame History

id title challengeType videoUrl localeTitle
587d7b86367417b2b2512b3d Prevent Infinite Loops with a Valid Terminal Condition 1 Предотвращение бесконечных циклов с допустимым условием терминала

Description

Последней темой является бесконечный бесконечный цикл. Циклы - отличные инструменты, когда вам нужно, чтобы ваша программа выполняла блок кода определенное количество раз или до тех пор, пока не будет выполнено условие, но им нужно условие терминала, которое завершает цикл. Бесконечные циклы, скорее всего, замерзнут или сбой браузера, и вызовут хаос общей программы, чего никто не хочет. Был пример бесконечного цикла во введении к этому разделу - у него не было терминального условия вырваться из в while петлях внутри loopy() . Не вызывайте эту функцию!
функция loopy () {
while (true) {
console.log («Привет, мир!»);
}
}
Задача программиста заключается в том, чтобы в конечном итоге было достигнуто условие терминала, которое сообщает программе о выходе из кода цикла. Одна ошибка - это увеличение или уменьшение переменной счетчика в неправильном направлении от состояния терминала. Другой случайный сброс счетной или индексной переменной в коде цикла, вместо того, чтобы увеличивать или уменьшать ее.

Instructions

Функция myFunc() содержит бесконечный цикл, потому что условие терминала i != 4 никогда не будет оценивать значение false (и прерывать цикл). i будет увеличиваться на 2 каждый проход и прыгать прямо над 4, так как i нечетно для запуска. Исправьте оператор сравнения в терминальном условии, чтобы цикл выполнялся только для i меньшего или равного 4.

Tests

tests:
  - text: Ваш код должен изменить оператор сравнения в терминальном состоянии (средняя часть) цикла <code>for</code> .
    testString: 'assert(code.match(/i\s*?<=\s*?4;/g).length == 1, "Your code should change the comparison operator in the terminal condition (the middle part) of the <code>for</code> loop.");'
  - text: Ваш код должен исправить оператор сравнения в терминальном состоянии цикла.
    testString: 'assert(!code.match(/i\s*?!=\s*?4;/g), "Your code should fix the comparison operator in the terminal condition of the loop.");'

Challenge Seed

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

Solution

// solution required