Faça Enquanto Falso
Hoje, no trabalho, um dos meus colegas estava descrevendo o caso de uso do do while (false). A pessoa com quem ele estava conversando achou que isso era bobagem e simples, se as declarações fossem muito melhores. Em seguida, passamos a perder metade do dia discutindo a melhor maneira de escrever algo equivalente a:
do
{
//some code that should always execute...
if ( condition )
{
//do some stuff
break;
}
//some code that should execute if condition is not true
if ( condition2 )
{
//do some more stuff
break;
}
//further code that should not execute if condition or condition2 are true
}
while(false);
Este é um idioma que é encontrado em c com bastante frequência. Seu programa deve produzir a mesma saída que o pseudocódigo abaixo, dependendo das condições.
do
{
result += "A";
if ( C1)
{
result += "B";
break;
}
result += "C"
if ( C2 )
{
result += "D";
break;
}
result += "E";
}
while(false);
print(result);
Portanto, a entrada pode ser:
1. C1 = true, C2 = true
2. C1 = true, C2 = false
3. C1 = false, C2 = true
4. C1 = false, C2 = false
e a saída deve ser:
1. "AB"
2. "AB"
3. "ACD"
4. "ACE"
Isso é código-golfe, então as respostas serão julgadas em bytes. As brechas padrão são proibidas.
Sim, essa é uma pergunta simples, mas espero que possamos ver algumas respostas criativas. Espero que a simplicidade incentive as pessoas a usar idiomas com os quais estão menos confiantes.
return result
no lugar de break
. Então você recebe os bônus de reutilização e simplifica também o código de chamada. Mas talvez eu esteja perdendo alguma coisa.
goto
usar goto
más formas :) #
do{}while(false)
é dentro de macros. Um simples if
não é suficiente, porque interage mal com else
s ao redor que podem estar presentes. Sem uma macro, você também pode remover o do
e while
.