Saltar al contenido

Equivalente al bucle “do … while” en Mathematica

Esta es la solución más completa que te podemos dar, pero obsérvala pausadamente y analiza si se adapta a tu trabajo.

Solución:

Tiempo While[procedure; test] funciona, eso aspecto muy parecido a While[test, procedure]. La única diferencia es ; contra ,. While no es la construcción más utilizada, por lo que cuando se usa de esta manera, existe una alta probabilidad de malentendido/lectura incorrecta.

Si la legibilidad/confiabilidad es una preocupación (por ejemplo, un paquete publicado desarrollado en colaboración), usaría el más largo pero más claro

While[True,
  procedure;
  If[Not[test], Break[]]
]

El único argumento aquí es la legibilidad y la “programación defensiva” (esfuerzo adicional para evitar problemas accidentales). La legibilidad es subjetiva. Si eres la única persona que escribe/lee el código y te acostumbras a este uso de While (y por lo tanto siempre preste especial atención a la , contra ;), entonces este argumento no se aplica.

¿Por qué no escribir uno propio y colocarlo en su archivo init.m?

SetAttributes[DoWhile, HoldAll];

DoWhile[procedure_, test_] := While[procedure; test]

Aquí hay otra forma de escribir la tuya:

SetAttributes[doWhile, HoldAll];    
doWhile[expr_, test_] := CompoundExpression[expr, While[test, expr]]

O solo:

doWhile[expr_, test_] := (expr; While[test, expr])

valoraciones y reseñas

Si para ti ha sido de utilidad este artículo, te agradeceríamos que lo compartas con más programadores de esta manera nos ayudas a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *