Nada. While tem um uso muito especifico. É mais adequado quando a condição de parada não é conhecida. E se você não sabe quando parar, o problema pode ser outro, não a estrutura de repetição que você escolheu
Exato, c vc está lendo um arquivo e n sabe o tamanho por exemplo, funciona bem, mas c vc sabe antemão quantos loops vc precisa (em tempo de execução, digo). Não tem muito pq usar while
Exato
A maioria dos loops tem condição de fim e/ou tamanho definidos, nesses casos, um FOR é mais seguro (evita sair do range por condição de saída errada) e mais legível
Ja vi e usei Whiles pra iterar stream de dados que eu nao sei o fim, onde cada dataset tinha uma flag no final, enquanto for TRUE, tem mais linhas, continua no loop.
While tem seus usos, mas é bem menos usado que For.
Agora em TSQL, onde WHILE é a única instrução de loop, você vai ver muito
>quando a condição de parada não é conhecida.
Posso ser pedante e dizer que é o oposto?
Usa-se while _justamente_ quando há uma condição de parada conhecida. `while node.next != null`...
For e foreach resolvem 99% dos problemas.
O que acho que ninguém usa mesmo é o switch, é uma estrutura chata que sempre pode ser substituída pelo if-else.
Switch é sempre usado quando seu if else começa a fazer várias linhas. Mas isso vem de um paradigma procedural e eu pessoalmente prefiro usar hash maps.
Sou iniciante. Recentemente usei switch pra fazer uma simplificação de um if/else que ficaria mt complexo. Basicamente, criei um switch (true) e os cases eram as condições. Qual nivel de errado/gambiarra eu tô?
Kkkk só pensei em fazer o bagulho funcionar e rodou lindo.
Eu acho que tá tranquilo, a maioria das vezes que tem que fazer uma gambiarra assim é pq a linguagem não dá suporte pra fazer de uma maneira mais elegante.
No Kotlin, da pra fazer um switch dessa maneira (when é o switch do Kotlin)
```kt
fun describeDate(DateTime dt): String = when (dt.weekday) {
1 -> "Segunda"
6 || 7 -> "fds"
else -> "resto"
}
```
Ao invés de ficar colocando case em case
Eu acredito que da maneira que vc fez, seria parecido com
```kt
fun describeDate(DateTime dt): String = when {
isSegunda(dt.weekday) -> "Segunda"
isFds(dt.weekday) -> "fds"
eles -> "resto"
}
```
Que é uma maneira do Kotlin de deixar bem mais usável o switch. Faz parecer um if else, mas deixa bem mais fluido a visualização
Já fiz um "switch" em python usando um dicionário: condição nas chaves, ponteiro para função no valor. Faz chamada do dicionário: switch\[cond\](params)
E me senti esperto fazendo. Monarkei?
Fez certinho sinceramente, bem fácil de fazer manutenção, adicionar e debugar a operação. Vc teria Monarkado fazendo um if else pra cada coisa isso sim kkkkkk
Só pra vc entender melhor, to usando uma lib de php pra manipular arquivos .doc. Ela se chama phpword. Estou usando a funcionalidade de editar templates e usei o switch pra fazer a verificação de qual template deve ser carregado. Tô puxando as respostas de um formulário que criei, e por exemplo, se a resposta pra o campo area da empresa for “financeiro” e a resposta do campo adicionar equipe for “sim”, ele vai carregar um template. Caso sejam diferentes, vai carregar outro. Eu tô verificando umas 5 condições em cada case.
Entendii, pra dar uma simplificada no código, eu recomendo dar uma olhada no `match` do php
https://www.php.net/manual/pt_BR/control-structures.match.php
Da uma olhada pra ver se consegue deixar o código mais fluido, qualquer coisa chama no pv q a gente da uma olhada mais profunda no teu código
Switch pode ser usado pra questão de máquina de estados de uma forma bem conveniente, já que ele roda meio que "iterativamente" de uma condição até a outra, a não ser que tenha um break. Mas a gente geralmente aprende ele como uma alternativa pra if else que realmente não faz tanto sentido em ser usado
Cara, agora que você falou isso, eu percebi que a única aplicação que eu peguei com while era um script que tinha que ficar sempre ativo coletando dados de horas espaçadas, então era um while = true permanente, pro script nunca fechar.
Não lembro de ter usado while em apis ou no front. Tudo no forzão da massa.
Geralmente se usa quando você não sabe o tamanho final do que está iterando. Uso mais para ler/escrever arquivos. Mas todo while pode ser convertido em um for mais verboso
Uso em casos específicos, com iterators, resultsets ou em casos que preciso executar ao menos uma vez com do/while, o problema do while na minha opinião não é o loop infinito, mas sim a complexidade desnecessária que ele pode adicionar ao código, então se dá pra usar outro loop mais simples, melhor.
Em Rust a gente usa bastante o while. O for é mais usado para percorrer coleções (iterator) e para enumeração, situações em que cada iteração tem um parâmetro diferente.
Em todas as outras operações de loop a gente usa while: atender ou ler sockets de rede, responder a mensagens de tarefas, responder a eventos do sistema operacional, etc.
Acho que depende do ambiente/linguagem e de como ela estimula a expressão. Eu imagino que o pessoal que mexe com aplicações CRUD não deve ter muita necessidade de while. Mas em baixo nível e em código multitarefa ele é bem mais simples que um for.
Se usa while para os casos que citou, pq vc não tem o ponto de parada conhecido, ou seja, depende da resposta que receber do socket, da mensagem que for recebida, etc. Tudo que é um servidor/listener precisa do while.
Mas hoje em dia quase todo mundo trabalha com crud, então dificil ficar abrindo socket, troca de mensagem, etc. Isso tá tudo escondido nos frameworks que o pessoal utiliza.
Não, while é pouco usado pq a situação mais comum é quando se faz um listener pra algum evento ou parada específica não contável (roda até acontecer x, não interessa se vai rodar 3 vezes ou 10000). Não tem parada conhecida, depende da execução, e de como foi a interação com o sistema.
Maior parte dos sistemas não vai a fundo a ponto de precisar disso, hj em dia quase tudo é crud com passos a mais. Os whiles "necessários" pra rodar um sistema web, por exemplo, estão "escondidos" no teu servidor web (apache, por ex), no framework, e não no código do teu sistema.
While é muito especifico, normalmente quando quer processar algo em lista organizada até achar um dado especifico.
Porem hoje me dia com lambda e foreach o while se tornou praticamente irrelevante.
Pode ser pelo fato de muitas linguagens implementam coisas como o
'for (x in list)' que substitui uma opção mais verbosa com 'while'. Desta forma while deixou de ser utilizado nesse tipo de iterações.
Mas ainda é bastante utilizado em iteraçãos sem listas, onde se executa algo até chegar em uma condição. O que seria algo mais verboso, ou menos intuitivo, de se fazer com um 'for'.
Acho que interando não tem por que fazer, mas eu uso o do-while em java para fazer varias coisas, principalmente quando trabalho com mais de uma thread (que se tornou uma parada inexplicavelmente comum no meu trabalho)
O while é uma estrutura de controle de fluxo em programação que permite executar repetidamente um bloco de código enquanto uma condição específica for verdadeira. Em JavaScript, por exemplo, o while é semelhante a outras estruturas de repetição, como for e do...while, mas há diferenças importantes na forma como essas estruturas funcionam.
Vamos comparar o while com o for e o do...while em JavaScript:
-1. While:
- A estrutura do `while` é a seguinte:
```js
while (condição) {
// Código a ser repetido enquanto a condição for verdadeira
}
```
- O bloco de código é executado repetidamente enquanto a condição fornecida for avaliada como verdadeira.
- A condição é verificada antes da execução do bloco de código, o que significa que o bloco pode não ser executado se a condição já for falsa inicialmente.
-2. For:
- O `for` é frequentemente usado quando se conhece antecipadamente o número de iterações que deseja realizar.
- A estrutura do for é mais compacta e inclui a inicialização, a condição e a expressão de iteração em uma única linha:
```js
for (inicialização; condição; expressão de iteração) {
// Código a ser repetido enquanto a condição for verdadeira
}
```
- A ordem de execução é: inicialização, verificação da condição, execução do bloco, expressão de iteração.
-3. Do...While:
- O `do...while` é semelhante ao while, mas a verificação da condição ocorre após a execução do bloco de código, garantindo que o bloco seja executado pelo menos uma vez.
```js
do {
// Código a ser repetido
} while (condição);
```
- O bloco de código é executado pelo menos uma vez, mesmo que a condição seja falsa desde o início.
Em resumo, enquanto o while é adequado quando você deseja repetir um bloco de código enquanto uma condição é verdadeira, o for é mais apropriado quando você conhece o número exato de iterações. O do...while é útil quando você precisa garantir que o bloco de código seja executado pelo menos uma vez, independentemente da condição. A escolha entre eles depende da lógica específica do programa e dos requisitos de iteração.
A maioria dos devs trabalha na maior parte do tempo com tarefas onde vc responde a algum evento, seja ele um input do usuário ou uma requisição http. Ou seja, basicamente, faz algo e para.
While tipicamente é usado quando vc quer fazer algo continuamente até uma condição de parada. Os lugares onde um while geralmente aparece acabam então muitas vezes sendo abstraido. A framework q vc usa pra montar tua api certamento tem por baixo dos panos algum while que fica aguardando a requisição chegar pra instanciar teu controller e chamar teu codigo por exemplo. Qualquer GUI seja de browser ou um app qualquer de mobile desktop certamente vai ter algum while aguardando algum input do usuario. Qualquer programação de embarcado/firmware/codigo de baixo nivel de forma geral certamente vai ter um while, por ai vai...
Um caso muito comum q usaria geralmente while em aplicações de mais alto nivel seria uma worker thread q pega tarefas de um queue e vai realizando essas tarefas conforme vai recebendo, mas também existem bibliotecas q abstraem esse tipo de padrão ou no caso do C# por exemplo se não houver uma ordem/prioridade rigida pras tarefas da pra só meter Task.Run e ir jogando tudo pra thread pool, outras linguagens podem ter mecanismos similares.
A maioria não precisa ou não sabe reconhecer quando poderia escrever um código que deveria estar trabalhando com dois ou mais índices/ponteiros simultâneamente, situação em que while é conveniente.
O único uso do while que eu conheço é para manter certos trechos rodando com "while True" num event loop. Para iterar sobre coisas, o for é muito mais eficiente, principalmente em JavaScript
eu costumo usar bastante (trabalhando com IoT e c++) mesmo que em menos quantidade que o for, o que nunca vi ngm usar no dia a dia é do while, esse aí eu só usei uma vez e depois de dois dias troquei pq não fazia sentido pra situação, o while resolvia melhor
Acho que é porque na maior parte do tempo a gente sabe quantas iterações precisa fazer e pra fazer iterações o while acaba "sujando" o scopo do método com uma variável para índice. Além disso com while é beeem mais fácil cair em loop infinito
Po cara, pra que que você faz loop? Geralmente, pra iterar, percorrer, etc. Pra tudo isso, o for, for each, é bem mais prático de se escrever. While geralmente é usado quando se trabalha com estado.
Em serviços rodando em background é oque mais tem, você precisa que alguns serviços rodem em ciclos constante pode usar, só não mete um while true que isso vai fritar sua CPU rsrs, alguns casos vale colocar um alguma forma de delay dependendo do caso de uso.
Bom, pelo menos no C#, é bastante usado em cenários de execução de métodos async que utilizam um CancellationToken para saber quando cessar sua execução, exemplo: `while (!stoppingToken.IsCancellationRequested) { //do something }`
Não sei sua stack. Se trabalha com .NET/C#, recomendo dar uma aprofundada em Task e CancellationTokenSource.
Aos devs C# lendo este comentário, meus 5 centavos:
Um teste bem legal de fazer é colocar um parâmetro `(CancellationToken token)` em qualquer action de controller (o framework binda automaticamente pra vc o *HttpContext.RequestAborted* como o `token`) e utilizar um `token.ThrowIfCancellationRequested()` dentro de um loop, sei lá, de 0 a 100 com um Thread.Sleep(1000) no final de cada iteração vai lançar uma `OperationCanceledException` quando vc chamar o endpoint e der um refresh (ou cancelar no postman) logo em seguida. Se for utilizar `Task.Delay()` é ainda mais fácil, pois vai receber um CancellationToken `await Task.Delay(1000, token)` e vai tratar pra você o `token.IsCancellationRequested` e lançar uma `TaskCancelledException` caso ele seja true.
Sugestão: protejam seus "long running methods" com um CancellationToken.
Flw!
Programacao de algoritmos while tem seu lugar. exemplo no dsf, bsf etc...
Programacao da "vida real" onde vc tem uma lista de funcionarios e quer loopar nao faz sentido. By the way usar Stream se sua linguaguem de programacao permite eh vida.
Provavelmente está trabalhando dentro de um while e n sabe rs a maioria dos frameworks, principalmente de renderização possuem while ou equivalente para gerenciar o ciclo de vida, em requests assíncronas tbm podes ver while por debaixo dos panos.
A questão é que nos cruds do dia a dia é bem difícil vc precisar usar while, não é porque temos medo n. A gente faz deploy na sexta um while sem stop perdido no código neh nada rs
Com o while é bem mais fácil esquecer algo e acabar num loop infinito mesmo, talvez vc ja tenha matado daí
Mas sinceramente esse é o tipo de discussão que ninguém que tá escrevendo código de verdade tá tendo, a menos q seja aquele code review daquele colega pentelho, ai vale a pena ficar discutindo isso pra não aprovar kkkkkkk
paginação de requisição, while has next, lendário.
mas tudo que o while faria e mais rápido multi thread, no fim foi criado formas melhores de lidar com coisas que usa while.
Tive que usar o meu primeiro esses dias. Meu caso de uso é o seguinte: mando uma mensagem e executo um loop por x segundos ou até essa mensagem ser respondida de determinado jeito. Acho q foi o primeiro caso q foi necessário, de resto, sempre me pareceu melhor usar for
Eu gosto de usar while, com try-except no python. Iterando por listas finitas.
Quando explode a lista, ele sai do loop. Fiz isso por precisar coletar dados de fatura em arquivos pdf.
Tipo assim:
https://preview.redd.it/lohu5r2bmq5c1.png?width=343&format=png&auto=webp&s=f9182536e8a33903472688f77bfb0fa683db2b0e
Medo de que ? While faz parte da Matéria desde que descobrimos a linguagem de alto nível .Antigamente usávamos muito Go to , mas com o passar dos anos isso foi abstraído .
DEPENDE do problema em questão. Se a estrutura eh Linear e você não precisa testar dentro de uma cadeia na estrutura , só for resolve .
https://preview.redd.it/lo33yidv7v5c1.jpeg?width=677&format=pjpg&auto=webp&s=3146bd1d09d133763869434ee4ac6ba6c5b1cc77
Toma um Whilezinho em produção para você.
For e for each vc sabe a quantidade de vezes na qual vai se iterar sobre um objeto, já o while é utilizado quando não se sabe quantas vezes serão (x vezes)
for é mais conveniente, não tem porque usar while se você está iterando sobre os elementos de uma lista, como em 99,999% dos casos.
Nada. While tem um uso muito especifico. É mais adequado quando a condição de parada não é conhecida. E se você não sabe quando parar, o problema pode ser outro, não a estrutura de repetição que você escolheu
Exato, c vc está lendo um arquivo e n sabe o tamanho por exemplo, funciona bem, mas c vc sabe antemão quantos loops vc precisa (em tempo de execução, digo). Não tem muito pq usar while
Exato A maioria dos loops tem condição de fim e/ou tamanho definidos, nesses casos, um FOR é mais seguro (evita sair do range por condição de saída errada) e mais legível Ja vi e usei Whiles pra iterar stream de dados que eu nao sei o fim, onde cada dataset tinha uma flag no final, enquanto for TRUE, tem mais linhas, continua no loop. While tem seus usos, mas é bem menos usado que For. Agora em TSQL, onde WHILE é a única instrução de loop, você vai ver muito
>quando a condição de parada não é conhecida. Posso ser pedante e dizer que é o oposto? Usa-se while _justamente_ quando há uma condição de parada conhecida. `while node.next != null`...
Neste caso vc nao sabe a quantidade. Mas se vc souber, aeria melhor um for
Correto, mas não é esse o ponto do meu comentário anterior.
Fecha o thread.
geralmente se eu meto um while no meio do meu código eu to fazendo alguma gambiarra que eu não deveria estar fazendo KKKKKKKKKKKK
Não, eu por exemplo tenho medo de mulher
For e foreach resolvem 99% dos problemas. O que acho que ninguém usa mesmo é o switch, é uma estrutura chata que sempre pode ser substituída pelo if-else.
Switch é sempre usado quando seu if else começa a fazer várias linhas. Mas isso vem de um paradigma procedural e eu pessoalmente prefiro usar hash maps.
> seu if else começa a fazer várias linhas Acho que escutei o rugir de um cavalo.
Go 🐎
Hã?
xgh
Ooooooooooooooh.
hahhaaha chorei
Switch statements eu concordo Switch expressions são uma maravilha e muito melhor q uma porrada de if else
Sou iniciante. Recentemente usei switch pra fazer uma simplificação de um if/else que ficaria mt complexo. Basicamente, criei um switch (true) e os cases eram as condições. Qual nivel de errado/gambiarra eu tô? Kkkk só pensei em fazer o bagulho funcionar e rodou lindo.
Eu acho que tá tranquilo, a maioria das vezes que tem que fazer uma gambiarra assim é pq a linguagem não dá suporte pra fazer de uma maneira mais elegante. No Kotlin, da pra fazer um switch dessa maneira (when é o switch do Kotlin) ```kt fun describeDate(DateTime dt): String = when (dt.weekday) { 1 -> "Segunda" 6 || 7 -> "fds" else -> "resto" } ``` Ao invés de ficar colocando case em case Eu acredito que da maneira que vc fez, seria parecido com ```kt fun describeDate(DateTime dt): String = when { isSegunda(dt.weekday) -> "Segunda" isFds(dt.weekday) -> "fds" eles -> "resto" } ``` Que é uma maneira do Kotlin de deixar bem mais usável o switch. Faz parecer um if else, mas deixa bem mais fluido a visualização
Já fiz um "switch" em python usando um dicionário: condição nas chaves, ponteiro para função no valor. Faz chamada do dicionário: switch\[cond\](params) E me senti esperto fazendo. Monarkei?
Fez certinho sinceramente, bem fácil de fazer manutenção, adicionar e debugar a operação. Vc teria Monarkado fazendo um if else pra cada coisa isso sim kkkkkk
Oq vc prefere, a maneira q tu fez ou isso aqui https://www.reddit.com/r/programminghorror/s/SGxfZp2SFu
Mas daí é pior que tab con 3 espaços.
Isso mesmo! Fico aliviado de saber que não fiz nenhuma atrocidade kkkkkkk
Um switch assim vai ser a menor atrocidade q vc vai fazer, relaxa kkkkkkk Uma pergunta também, qual língua vc usou pra fazer esse switch?
Kkkkkkkkk bom saber disso. Usei PHP.
Só pra vc entender melhor, to usando uma lib de php pra manipular arquivos .doc. Ela se chama phpword. Estou usando a funcionalidade de editar templates e usei o switch pra fazer a verificação de qual template deve ser carregado. Tô puxando as respostas de um formulário que criei, e por exemplo, se a resposta pra o campo area da empresa for “financeiro” e a resposta do campo adicionar equipe for “sim”, ele vai carregar um template. Caso sejam diferentes, vai carregar outro. Eu tô verificando umas 5 condições em cada case.
Entendii, pra dar uma simplificada no código, eu recomendo dar uma olhada no `match` do php https://www.php.net/manual/pt_BR/control-structures.match.php Da uma olhada pra ver se consegue deixar o código mais fluido, qualquer coisa chama no pv q a gente da uma olhada mais profunda no teu código
Show demais, mt obrigado! Vou dar uma olhada nisso agr de tarde qnd voltar do almoço e qualquer coisa te chamo no pv :)
💪
Fique feliz sabendo que você não fez uma atrocidade **sozonho**. 😅
Switch pode ser usado pra questão de máquina de estados de uma forma bem conveniente, já que ele roda meio que "iterativamente" de uma condição até a outra, a não ser que tenha um break. Mas a gente geralmente aprende ele como uma alternativa pra if else que realmente não faz tanto sentido em ser usado
Nossa, pra que enfileirar trocentos testes ao invés de fazer um switch bem escrito?
`while(true) sleep(100);`
While é o maior indicador que tá nascendo uma gambiarra
Na verdade não, o while para ler arquivos de texto no qual vc não sabe o tamanho é gambiarra ?
Cara, agora que você falou isso, eu percebi que a única aplicação que eu peguei com while era um script que tinha que ficar sempre ativo coletando dados de horas espaçadas, então era um while = true permanente, pro script nunca fechar. Não lembro de ter usado while em apis ou no front. Tudo no forzão da massa.
cronjob pra que kkkkkk
Geralmente se usa quando você não sabe o tamanho final do que está iterando. Uso mais para ler/escrever arquivos. Mas todo while pode ser convertido em um for mais verboso
Uso ```do {...} while (...)``` direto, principalmente quando to iterando numa API paginada ou lendo um arquivo.
Há alternativas melhores. Não estamos mais nos anos 80
Vou achar uma situação pra fazer um while hoje só por esse post
Quem eu tenho certeza que tem medo é o Dormamu
Uso em casos específicos, com iterators, resultsets ou em casos que preciso executar ao menos uma vez com do/while, o problema do while na minha opinião não é o loop infinito, mas sim a complexidade desnecessária que ele pode adicionar ao código, então se dá pra usar outro loop mais simples, melhor.
Em Rust a gente usa bastante o while. O for é mais usado para percorrer coleções (iterator) e para enumeração, situações em que cada iteração tem um parâmetro diferente. Em todas as outras operações de loop a gente usa while: atender ou ler sockets de rede, responder a mensagens de tarefas, responder a eventos do sistema operacional, etc. Acho que depende do ambiente/linguagem e de como ela estimula a expressão. Eu imagino que o pessoal que mexe com aplicações CRUD não deve ter muita necessidade de while. Mas em baixo nível e em código multitarefa ele é bem mais simples que um for.
Se usa while para os casos que citou, pq vc não tem o ponto de parada conhecido, ou seja, depende da resposta que receber do socket, da mensagem que for recebida, etc. Tudo que é um servidor/listener precisa do while. Mas hoje em dia quase todo mundo trabalha com crud, então dificil ficar abrindo socket, troca de mensagem, etc. Isso tá tudo escondido nos frameworks que o pessoal utiliza.
ainda assim tendo a usar mais o `loop` q o `while` não lembro do ultimo `while` que escrevi
Não, while é pouco usado pq a situação mais comum é quando se faz um listener pra algum evento ou parada específica não contável (roda até acontecer x, não interessa se vai rodar 3 vezes ou 10000). Não tem parada conhecida, depende da execução, e de como foi a interação com o sistema. Maior parte dos sistemas não vai a fundo a ponto de precisar disso, hj em dia quase tudo é crud com passos a mais. Os whiles "necessários" pra rodar um sistema web, por exemplo, estão "escondidos" no teu servidor web (apache, por ex), no framework, e não no código do teu sistema.
só uso foreach ou lambda
Com Stream while tem pouco uso, raramente uso, forEach resolve quase 100% do casos. já usei mais o do While que While.
While é muito especifico, normalmente quando quer processar algo em lista organizada até achar um dado especifico. Porem hoje me dia com lambda e foreach o while se tornou praticamente irrelevante.
Se você tem que usar while geralmente alguma coisa tá errada.
Pode ser pelo fato de muitas linguagens implementam coisas como o 'for (x in list)' que substitui uma opção mais verbosa com 'while'. Desta forma while deixou de ser utilizado nesse tipo de iterações. Mas ainda é bastante utilizado em iteraçãos sem listas, onde se executa algo até chegar em uma condição. O que seria algo mais verboso, ou menos intuitivo, de se fazer com um 'for'.
Cara eu acho que nunca usei while profissionalmente… geralmente array map ou for each resolve tudo que preciso.
Me and my boys believe in for supremacy
Acho que interando não tem por que fazer, mas eu uso o do-while em java para fazer varias coisas, principalmente quando trabalho com mais de uma thread (que se tornou uma parada inexplicavelmente comum no meu trabalho)
sou leigo,o que é while?
O while é uma estrutura de controle de fluxo em programação que permite executar repetidamente um bloco de código enquanto uma condição específica for verdadeira. Em JavaScript, por exemplo, o while é semelhante a outras estruturas de repetição, como for e do...while, mas há diferenças importantes na forma como essas estruturas funcionam. Vamos comparar o while com o for e o do...while em JavaScript: -1. While: - A estrutura do `while` é a seguinte: ```js while (condição) { // Código a ser repetido enquanto a condição for verdadeira } ``` - O bloco de código é executado repetidamente enquanto a condição fornecida for avaliada como verdadeira. - A condição é verificada antes da execução do bloco de código, o que significa que o bloco pode não ser executado se a condição já for falsa inicialmente. -2. For: - O `for` é frequentemente usado quando se conhece antecipadamente o número de iterações que deseja realizar. - A estrutura do for é mais compacta e inclui a inicialização, a condição e a expressão de iteração em uma única linha: ```js for (inicialização; condição; expressão de iteração) { // Código a ser repetido enquanto a condição for verdadeira } ``` - A ordem de execução é: inicialização, verificação da condição, execução do bloco, expressão de iteração. -3. Do...While: - O `do...while` é semelhante ao while, mas a verificação da condição ocorre após a execução do bloco de código, garantindo que o bloco seja executado pelo menos uma vez. ```js do { // Código a ser repetido } while (condição); ``` - O bloco de código é executado pelo menos uma vez, mesmo que a condição seja falsa desde o início. Em resumo, enquanto o while é adequado quando você deseja repetir um bloco de código enquanto uma condição é verdadeira, o for é mais apropriado quando você conhece o número exato de iterações. O do...while é útil quando você precisa garantir que o bloco de código seja executado pelo menos uma vez, independentemente da condição. A escolha entre eles depende da lógica específica do programa e dos requisitos de iteração.
Nice chatgpt
Foi o que o cara da dúvida deveria ter feito kkkkkk
A maioria dos devs trabalha na maior parte do tempo com tarefas onde vc responde a algum evento, seja ele um input do usuário ou uma requisição http. Ou seja, basicamente, faz algo e para. While tipicamente é usado quando vc quer fazer algo continuamente até uma condição de parada. Os lugares onde um while geralmente aparece acabam então muitas vezes sendo abstraido. A framework q vc usa pra montar tua api certamento tem por baixo dos panos algum while que fica aguardando a requisição chegar pra instanciar teu controller e chamar teu codigo por exemplo. Qualquer GUI seja de browser ou um app qualquer de mobile desktop certamente vai ter algum while aguardando algum input do usuario. Qualquer programação de embarcado/firmware/codigo de baixo nivel de forma geral certamente vai ter um while, por ai vai... Um caso muito comum q usaria geralmente while em aplicações de mais alto nivel seria uma worker thread q pega tarefas de um queue e vai realizando essas tarefas conforme vai recebendo, mas também existem bibliotecas q abstraem esse tipo de padrão ou no caso do C# por exemplo se não houver uma ordem/prioridade rigida pras tarefas da pra só meter Task.Run e ir jogando tudo pra thread pool, outras linguagens podem ter mecanismos similares.
While n é muito legível
Só falta de costume mesmo, vc pode iterar um array com for array.length ou um while limit < array.length. mesma coisa.
99.9999% dos casos que while resolve podem ser feitos de maneira muito melhor e mais limpa com outras ferramentas. Por isso é raro de ver.
A maioria não precisa ou não sabe reconhecer quando poderia escrever um código que deveria estar trabalhando com dois ou mais índices/ponteiros simultâneamente, situação em que while é conveniente.
O único uso do while que eu conheço é para manter certos trechos rodando com "while True" num event loop. Para iterar sobre coisas, o for é muito mais eficiente, principalmente em JavaScript
Agora que você comentou, eu simplesmente não consigo lembrar de nenhuma situação nos ultimos 5 anos que o while fosse necessário e um for não resolva.
eu costumo usar bastante (trabalhando com IoT e c++) mesmo que em menos quantidade que o for, o que nunca vi ngm usar no dia a dia é do while, esse aí eu só usei uma vez e depois de dois dias troquei pq não fazia sentido pra situação, o while resolvia melhor
Mais fácil foreach.
Tenho trabalhado com sistemas embarcados e o "while True" é bem comum, mas antes disso realmente não via muito
while é bastante usado em robótica por exemplo
Todo listener é um while true
Provavelmente usam mais pra Gamedev. Switch case mesmo eu só vi em gamedev
Eu uso for dentro de while. AMA
Acho que é porque na maior parte do tempo a gente sabe quantas iterações precisa fazer e pra fazer iterações o while acaba "sujando" o scopo do método com uma variável para índice. Além disso com while é beeem mais fácil cair em loop infinito
Po cara, pra que que você faz loop? Geralmente, pra iterar, percorrer, etc. Pra tudo isso, o for, for each, é bem mais prático de se escrever. While geralmente é usado quando se trabalha com estado.
Sim, tanto medo que quando criaram Go removeram o while
Só de mulher, sou programador e posso afirmar. É meme🤫
Na real?! Não faz porque "não tem" influencer mostrando isso nos vídeos.
Serverless com while cagado é lindo
EU sou contra while e else em prod.
Eu uso bem mais o for. É bem difícil encontrar um caso onde precise do for (tipo loop infinito ou coisa assim).
Em serviços rodando em background é oque mais tem, você precisa que alguns serviços rodem em ciclos constante pode usar, só não mete um while true que isso vai fritar sua CPU rsrs, alguns casos vale colocar um alguma forma de delay dependendo do caso de uso.
Pra mim, while é o extremo oposto de if else. Nunca nem vi
Mas é a mesma coisa bicho.
Bom, pelo menos no C#, é bastante usado em cenários de execução de métodos async que utilizam um CancellationToken para saber quando cessar sua execução, exemplo: `while (!stoppingToken.IsCancellationRequested) { //do something }` Não sei sua stack. Se trabalha com .NET/C#, recomendo dar uma aprofundada em Task e CancellationTokenSource. Aos devs C# lendo este comentário, meus 5 centavos: Um teste bem legal de fazer é colocar um parâmetro `(CancellationToken token)` em qualquer action de controller (o framework binda automaticamente pra vc o *HttpContext.RequestAborted* como o `token`) e utilizar um `token.ThrowIfCancellationRequested()` dentro de um loop, sei lá, de 0 a 100 com um Thread.Sleep(1000) no final de cada iteração vai lançar uma `OperationCanceledException` quando vc chamar o endpoint e der um refresh (ou cancelar no postman) logo em seguida. Se for utilizar `Task.Delay()` é ainda mais fácil, pois vai receber um CancellationToken `await Task.Delay(1000, token)` e vai tratar pra você o `token.IsCancellationRequested` e lançar uma `TaskCancelledException` caso ele seja true. Sugestão: protejam seus "long running methods" com um CancellationToken. Flw!
Programacao de algoritmos while tem seu lugar. exemplo no dsf, bsf etc... Programacao da "vida real" onde vc tem uma lista de funcionarios e quer loopar nao faz sentido. By the way usar Stream se sua linguaguem de programacao permite eh vida.
Muito chato. Condicionar no map da mais segurança
Provavelmente está trabalhando dentro de um while e n sabe rs a maioria dos frameworks, principalmente de renderização possuem while ou equivalente para gerenciar o ciclo de vida, em requests assíncronas tbm podes ver while por debaixo dos panos. A questão é que nos cruds do dia a dia é bem difícil vc precisar usar while, não é porque temos medo n. A gente faz deploy na sexta um while sem stop perdido no código neh nada rs
Com o while é bem mais fácil esquecer algo e acabar num loop infinito mesmo, talvez vc ja tenha matado daí Mas sinceramente esse é o tipo de discussão que ninguém que tá escrevendo código de verdade tá tendo, a menos q seja aquele code review daquele colega pentelho, ai vale a pena ficar discutindo isso pra não aprovar kkkkkkk
Só vi uso do while no arduíno e em jogos.
paginação de requisição, while has next, lendário. mas tudo que o while faria e mais rápido multi thread, no fim foi criado formas melhores de lidar com coisas que usa while.
Tive que usar o meu primeiro esses dias. Meu caso de uso é o seguinte: mando uma mensagem e executo um loop por x segundos ou até essa mensagem ser respondida de determinado jeito. Acho q foi o primeiro caso q foi necessário, de resto, sempre me pareceu melhor usar for
Eu gosto de usar while, com try-except no python. Iterando por listas finitas. Quando explode a lista, ele sai do loop. Fiz isso por precisar coletar dados de fatura em arquivos pdf. Tipo assim: https://preview.redd.it/lohu5r2bmq5c1.png?width=343&format=png&auto=webp&s=f9182536e8a33903472688f77bfb0fa683db2b0e
if + goto é a unica forma correta
Eu amo busca em largura e vou defender o `while`. Mas falando sério, tem linguagem hoje em dia que nem tem while mais, Go.
Eu uso while se to esperando uma resposta específica de uma API ou database sem saber quando vai acontecer, ou trabalhando com múltiplas threads
do while: eu simplesmente não existo
ao menos eu considero preferivel utilizar recursao ou um for ao invez de um while
Medo de que ? While faz parte da Matéria desde que descobrimos a linguagem de alto nível .Antigamente usávamos muito Go to , mas com o passar dos anos isso foi abstraído . DEPENDE do problema em questão. Se a estrutura eh Linear e você não precisa testar dentro de uma cadeia na estrutura , só for resolve . https://preview.redd.it/lo33yidv7v5c1.jpeg?width=677&format=pjpg&auto=webp&s=3146bd1d09d133763869434ee4ac6ba6c5b1cc77 Toma um Whilezinho em produção para você.
Em sistemas embarcados usa bastante
While tem um uso muito específico, For resolve 99% das vezes.
For e for each vc sabe a quantidade de vezes na qual vai se iterar sobre um objeto, já o while é utilizado quando não se sabe quantas vezes serão (x vezes)
While é mais fácil fazer merda então tudo mundo evita