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

2.7 KiB

id title challengeType videoUrl localeTitle
587d7b86367417b2b2512b3d Prevent Infinite Loops with a Valid Terminal Condition 1 Evite Loops Infinitos com uma Condição Terminal Válida

Description

O tópico final é o temido loop infinito. Os loops são ótimas ferramentas quando você precisa que seu programa execute um bloco de códigos um determinado número de vezes ou até que uma condição seja atendida, mas eles precisam de uma condição terminal que termine o loop. Loops infinitos tendem a congelar ou travar o navegador e causar o caos geral da execução do programa, que ninguém quer. Houve um exemplo de um ciclo infinito na introdução desta secção - que não tinha estado terminal para sair do while loop dentro loopy() . NÃO chame esta função!
função loopy () {
while (true) {
console.log ("Olá, mundo!");
}
}
É tarefa do programador garantir que a condição do terminal, que informa ao programa quando sair do código de loop, seja atingida. Um erro é incrementar ou decrementar uma variável do contador na direção errada da condição do terminal. Outro é acidentalmente redefinir uma variável de contador ou índice dentro do código de loop, em vez de incrementar ou decrementar.

Instructions

A função myFunc() contém um loop infinito porque a condição terminal i != 4 nunca será avaliada como false (e quebrará o loop) - i aumentarei em 2 cada passo, e saltará sobre 4, já i é estranho iniciar. Corrija o operador de comparação na condição do terminal para que o loop seja executado apenas para i menor ou igual a 4.

Tests

tests:
  - text: Seu código deve mudar o operador de comparação na condição terminal (a parte intermediária) do loop <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: Seu código deve corrigir o operador de comparação na condição terminal do loop.
    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