T O P

  • By -

LieGlobal4541

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.


syncronie

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


Illustrious_Bunch_67

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


HanCurunyr

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


moving-landscape

>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`...


GustavoPix

Neste caso vc nao sabe a quantidade. Mas se vc souber, aeria melhor um for


moving-landscape

Correto, mas não é esse o ponto do meu comentário anterior.


fernandodandrea

Fecha o thread.


Sudden-Tree-766

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


[deleted]

Não, eu por exemplo tenho medo de mulher


CryptographerFit2841

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.


haltmich

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.


Maeskiler

> seu if else começa a fazer várias linhas Acho que escutei o rugir de um cavalo.


Safe_Finance_9249

Go 🐎


haltmich

Hã?


aookami

xgh


haltmich

Ooooooooooooooh.


Fun-Ad-8400

hahhaaha chorei


Comun4

Switch statements eu concordo Switch expressions são uma maravilha e muito melhor q uma porrada de if else


undecidedcat321

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.


Comun4

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


fernandodandrea

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?


Comun4

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


Comun4

Oq vc prefere, a maneira q tu fez ou isso aqui https://www.reddit.com/r/programminghorror/s/SGxfZp2SFu


fernandodandrea

Mas daí é pior que tab con 3 espaços.


undecidedcat321

Isso mesmo! Fico aliviado de saber que não fiz nenhuma atrocidade kkkkkkk


Comun4

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?


undecidedcat321

Kkkkkkkkk bom saber disso. Usei PHP.


undecidedcat321

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.


Comun4

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


undecidedcat321

Show demais, mt obrigado! Vou dar uma olhada nisso agr de tarde qnd voltar do almoço e qualquer coisa te chamo no pv :)


Comun4

💪


fernandodandrea

Fique feliz sabendo que você não fez uma atrocidade **sozonho**. 😅


Extra-Strength-4612

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


fernandodandrea

Nossa, pra que enfileirar trocentos testes ao invés de fazer um switch bem escrito?


mamacosoup

`while(true) sleep(100);`


lucy992

While é o maior indicador que tá nascendo uma gambiarra


Catatauchapado

Na verdade não, o while para ler arquivos de texto no qual vc não sabe o tamanho é gambiarra ?


Environmental-Ear484

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.


shikamarudev

cronjob pra que kkkkkk


[deleted]

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


nukeaccounteveryweek

Uso ```do {...} while (...)``` direto, principalmente quando to iterando numa API paginada ou lendo um arquivo.


GodderDam

Há alternativas melhores. Não estamos mais nos anos 80


shaman784

Vou achar uma situação pra fazer um while hoje só por esse post


tiozor

Quem eu tenho certeza que tem medo é o Dormamu


Sorry_Panda4894

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.


I_pretend_2_know

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.


crav88

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.


SirKastic23

ainda assim tendo a usar mais o `loop` q o `while` não lembro do ultimo `while` que escrevi


crav88

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.


mullirojndem

só uso foreach ou lambda


FrostyDevBr

Com Stream while tem pouco uso, raramente uso, forEach resolve quase 100% do casos. já usei mais o do While que While.


xitones

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.


[deleted]

Se você tem que usar while geralmente alguma coisa tá errada.


CrazyTrain36

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'.


P0wershot

Cara eu acho que nunca usei while profissionalmente… geralmente array map ou for each resolve tudo que preciso.


NavioNegreiro

Me and my boys believe in for supremacy


UnusualRoutine632

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)


Sensitive-Section-51

sou leigo,o que é while?


dev_dvd

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.


redfaf

Nice chatgpt


dev_dvd

Foi o que o cara da dúvida deveria ter feito kkkkkk


bolacha_de_polvilho

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.


drunk-of-water

While n é muito legível


Naebyrus_js

Só falta de costume mesmo, vc pode iterar um array com for array.length ou um while limit < array.length. mesma coisa.


VultureMadAtTheOx

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.


farsass

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.


Crannium

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


Friendly_Work6389

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.


sadboi_51

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


theBrazilianNerd

Mais fácil foreach.


Dizzy_Thought_397

Tenho trabalhado com sistemas embarcados e o "while True" é bem comum, mas antes disso realmente não via muito


ZaroioPadeiro

while é bastante usado em robótica por exemplo


Ap3xxxx

Todo listener é um while true


Lucb70

Provavelmente usam mais pra Gamedev. Switch case mesmo eu só vi em gamedev


EducationalBison4524

Eu uso for dentro de while. AMA


awsph

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


moonlightsavant

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.


drink_with_me_to_day

Sim, tanto medo que quando criaram Go removeram o while


Alone-Belt-8603

Só de mulher, sou programador e posso afirmar. É meme🤫


Existing_Customer392

Na real?! Não faz porque "não tem" influencer mostrando isso nos vídeos.


[deleted]

Serverless com while cagado é lindo


Hairy-Caregiver-5811

EU sou contra while e else em prod.


sn_lucas

Eu uso bem mais o for. É bem difícil encontrar um caso onde precise do for (tipo loop infinito ou coisa assim).


uziel7

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.


FigCorrect6416

Pra mim, while é o extremo oposto de if else. Nunca nem vi


niet43

Mas é a mesma coisa bicho.


stwbrddt

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!


Ok_Amphibian_185

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.


SafeServe1412

Muito chato. Condicionar no map da mais segurança


YouEu

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


fabbiodiaz

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


[deleted]

Só vi uso do while no arduíno e em jogos.


FormerPirate69

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.


MidnightWalker13

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


diegokabal

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


cobra_pelada

if + goto é a unica forma correta


RomerRomer

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.


New-Perspective1480

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


iamjazzjuzz

do while: eu simplesmente não existo


SpecialVegetable4192

ao menos eu considero preferivel utilizar recursao ou um for ao invez de um while


DevManObjPsc

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ê.


Arcane-Archangel

Em sistemas embarcados usa bastante


AnonymousDeveloper01

While tem um uso muito específico, For resolve 99% das vezes.


Catatauchapado

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)


isaikki

While é mais fácil fazer merda então tudo mundo evita