Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: CoduJ en 15 de Abril 2020, 02:46

Título: Java cuándo usar while y cuándo do while diferencias entre bucles forma regresos
Publicado por: CoduJ en 15 de Abril 2020, 02:46
Buenas, espero que se encuentren bien.

Soy relativamente nuevo en programación, y el lenguaje que estoy aprendiendo es Java, y este es el primero que me lo estoy tomando enserio en el estudio.

Usualmente, me suelo poner en práctica teorías, simplemente repasar o mejorar un proyecto, y en este caso, intenté de hacer un sistema de banco, con las opciones: Ver dinero; Sacar dinero; Depositar; Salir.

Para no tener que volver a compilar el proyecto (y además para simular que estoy programando un banco...) hice un bucle para mantener el usuario una vez termine alguna acción, vuelva desde el principio (claro, una vez no elija la opción de "Salir"), pero me quede con la duda si es que realmente debería ser así, por ejemplo:

Código: [Seleccionar]
while(Variable == true){
    //hacer X acción
    if (X == true){
        Variable = false;
    }
}
De antemano, muchas gracias.
(Si quieren, puedo mostrar el código de mi "banco" también.)
Título: Re:Sistema de "regreso"
Publicado por: Kabuto en 15 de Abril 2020, 11:13
Hola.
Sí, esa sería la lógica a seguir:

Usar una variable boolean con valor true para mantener "vivo" el bucle hasta que el usuario elija la opción de salir. Entonces será cuando esa variable cambie a valor false y el bucle finalizará
Título: Re:Sistema de "regreso"
Publicado por: CoduJ en 15 de Abril 2020, 20:30
¿Entonces la estructura del código está bien? Pues, muchas gracias.
También tengo otra duda, ¿es también optimo hacerlo con un bucle do-while? Si no me equivoco, este bucle al menos garantiza que se realice un bloque del código una vez, y no entrará en el bucle si cierta condición no se cumple, creo que quedaría más profesional.
Título: Re:Sistema de "regreso"
Publicado por: Kabuto en 15 de Abril 2020, 23:33
Ambas formas, while() y do..while(), te van a servir.

Sí, do..while() te garantiza que al menos una vez se va a ejecutar el bucle, porque la condición se evalúa al final, después de ejecutar el bloque de código que contiene.
En cambio, el while() evalúa al principio y podría ocurrir que no se ejecute ni una sola vez.

Para un programa donde, sí o sí, queremos mostrar un menú de opciones al comienzo, sí parece más adecuado usar el do..while()

Para un programa distinto, donde queremos que el bloque de código se ejecute solo si se cumple cierta condición, mejor el while() sin duda.

Pero vamos, que un while(), si justo antes del bucle inicializas la variable que vas a usar como condición con valor true, también tienes garantizada al menos una ejecución del bucle.

Así que elegir uno u otro va a depender de cada caso, de si alguno te va a suponer ahorrar aunque sea una línea de código, o de simple gusto personal del programador.


Yo a veces elijo while() por encima del do..while() simplemente porque quiero que, quién vaya a leer mi código, lo primero que vea sea cuál es la condición (o condiciones) que se han de cumplir para que el bucle se repita.
Porque así facilito que quién lea mi código entienda mejor lo que se está haciendo.

Esto me ocurre a menudo. Si es un código para mí, lo escribo de cierta forma, donde prima la concisión y el ahorro de código.

Si es algo que tengo pensado compartir o es para alguien que ha pedido ayuda en un foro como este, entonces lo escribo de otra forma, donde prima la legibilidad y que sea fácil de entender.

Al compilador de Java le da igual una forma u otra    ;D
Título: Re:Sistema de "regreso"
Publicado por: CoduJ en 15 de Abril 2020, 23:40
¡Vale, muchas gracias por la ayuda!