Sou iniciante e estou com dificuldades em laços de repetição while.
.
.
Bom uma explição rapida em conjunto com o chatGPT:
A função while
é uma estrutura de controle de fluxo que permite a execução repetida de um bloco de código enquanto uma determinada condição for verdadeira. Ela é composta por uma expressão booleana que é testada antes da execução do bloco de código e é repetida até que a expressão booleana seja avaliada como falsa.
let i = 0;
while (i < 5) {
console.log(i);
i++;
}
Existe também a função do while
, que diferente da while
comum o bloco de código dentro do do while
é sempre executado pelo menos uma vez, independentemente da condição de teste ser verdadeira ou falsa. Já com o while
, se a condição de teste for falsa desde o início, o bloco de código dentro do while
não será executado.
let i = 5;
do {
console.log(i);
i++;
} while (i < 5);
A principal diferença entre as estruturas de controle for
, while
e do while
em linguagens de programação é a forma como o controle de fluxo é implementado.
O for
é geralmente usado quando o número de iterações é conhecido antecipadamente, enquanto o while
e do while
são usados quando o número de iterações pode variar dependendo de uma determinada condição, ou seja, sem ser muito baseada em contagem de index ou números.
Espero ter ajudado na sua evolução :)
Bom se a sua dificuldade for em o por que e como funcionam os laços while, de forma simples(irei aprofundar logo mais), repetem uma parte de codigo, enquanto algo (chamada de condição) for avaliada como verdadeiro, caso ela se torne falsa em algum momento o código simplismente não executa, segue um exemplo em JavaScript:
const i = 0;
while (i < 5) {
i++;
console.log(i);
}
const i = 0
definimos que a variável 'i' tem o valor 0.
Em seguida iniciamos o bloco de repetição com while. Onde será mostrado o valor de 'i' a cada iteração (desculpe não encontrei uma palavra melhor), assim se você assimilar e pensar o que acontece com o valor de 'i' a cada iteração, no primeiro momento o resultado no console será 1,pois adicionamos 1 em i++
( isso é a mesma coisa que fazer i+= 1
ou aindai = i + 1
) mas depois de algumas iterações temos quei = 5
, o que faz com que a condição seja falsa, logo o código é "pulado" se quiser pensar assim.
Mas claro isso é algo muito abstrato e para ser sincero, um código desses não será usado em nenhum momento em um projeto em produção, claro isso é óbvio, so queria deixar claro. Então se quiser ler e pensar um pouco a mais por sua conta e risco, sempre digo que é bom se desafiar, mesmo sabendo pouco sobre algo, ver algo mais complexo , para mim, sempre me fez assimilar melhor o simples, por que se você viu o complexo e entendeu a ideia , logo o simples fará muito mais sentido, eu acho.
Bom então vamos ao exemplo que um colega do trabalho me mostrou, e eu indiquei que ele usasse um for, para isso mas não vem ao caso.
Para os mais experientes, isso é somente um protótipo e código abaixo não representa o uso real depois de terminada a funcionalidade
...
const IPs = [...] // lista de ips internos
let i = 0
while(IPs.length === 20 && i <= 20) {
if(IPs[i].isValid().isFormated()) {
console.log(`o IP ${IPs[i]} pode acessar o servidor);
} else {
console.log(`Verfique a API, IP:${IPs[i]} não pode ser acessar o servidor`)
}
}
i++;
}
...
Esse é somente uma parte de uma funcionalidade que eu adaptei para esse contexto, logo você percebe que não é nada de mais, somente umas verificações e mensagens no console. mas isso realmente foi usado. Claro somente para fins de teste mas isso foi usado, pois temos 20 devs com acesso ao servidor de desenvolvimento, caso o tamanho do array IPs fosse menor que 20 nada aconteceria e saberiamos que nosso restante de código tinha falhado e teriamos que rever isso, mas caso tivesse exatamente 20 IPs enquanto a variavel 'i' fosse menor que 20 temos o bloco de código rodando, caso i > 20 o código para de ser executado, e consequentemente os temos as mensagens se todos foram validos ou algum falhou na formatação ou por algum motivo não é um IPv4. é exatamente o exemplo do i < 5, só que nesse caso quando você bater o olho e ver a quantidade de código vai pensar 'pelo menos posso tentar entender'. E se entendeu parabéns, acredito que você aprendeu sobre while, mas como os outros já falaram, geralmente os while não é usado, por que geralmente sabemos a quantidade de dados que recebemos. Espero que tenha ajudado caso não desculpe ter perdido seu tempo
Qual sua dúvida exatamente? Por gentileza, descreva melhor o que você não entende, não compreende o propósito ou enfrenta dificuldade.
Em suma, Laços de repetição while são, em geral, menos utilizados. Isso, entretanto, não reduz sua utilidade.
O while
é feito para executar algo ENQUANTO uma condição for verdadeira. Ou seja, no momento que ele avaliar a condição e ela for falsa, irá sair do laço.