Utilizar bucles
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Diferenciar entre bucles while y do-while.
- Utilizar operadores de aumento y disminución para controlar la ejecución del código.
En nuestro ejemplo Hora del té, creamos una tetera para compartir con nuestros amigos más cercanos. Pero ¿qué ocurre si tenemos que servir el té para un grupo de 100 personas? Tenemos que realizar los mismos pasos una y otra vez hasta que todo el mundo esté servido. Parece que esto va a suponer mucho código redundante, ¿verdad? Ahí es donde los bucles resultan de utilidad.
Un bucle es un bloque de código que se repite hasta que se cumple cierta condición. En el caso del código de Hora del té, revisemos los pasos que hay que repetir:
Los pasos repetidos pueden agregarse a un bucle: Apex tiene tres maneras de codificar bucles: los bucles while
, do-while
y for
. Por ahora nos centraremos en los bucles while
y do-while
. Como indican sus nombres, los bucles while
(mientras) y do-while
(hacer-mientras) son muy parecidos. Ambos verifican que se cumpla una condición en particular. El diferenciador es cuándo verifican que se cumple la condición. Los bucles while
comprueban la condición antes de iniciar el bucle y los bucles do-while
la comprueban después de finalizar el bucle.
Parece solo un pequeño detalle, ¿verdad? Pero realmente, la repercusión es bastante grande.
Piense en ello de esta manera: el bucle do-while
siempre se ejecuta al menos una vez. El bucle while
podría no ejecutarse nunca, dependiendo de la condición.
Bucles while
El bucle while
empieza verificando se cumplió una condición. Si la condición es verdadera, hace algo. Si es falsa, el bucle se detiene.
Esta es la sintaxis:
Apliquemos bucles while
a nuestro código Hora del té.
- En Developer Console, haga clic en Debug (Depuración) | Open Execute Anonymous Window (Abrir ventana de ejecución anónima).
- Copie el siguiente código y péguelo en la ventana Enter Apex Code (Ingresar código Apex).
- Seleccione la casilla de verificación Open Log (Abrir registro) y haga clic en Execute (Ejecutar). Se abre Execution Log (Registro de ejecución), mostrando el resultado de la ejecución de su código.
- Seleccione la casilla de verificación Debug Only (Solo depurar) en la parte inferior de la pantalla.
No, --
no es un error ortográfico. Se llama un operador post-disminución. Es una forma abreviada de decir, “Resta un número de este valor”. Si totalAmountSugar
es igual a 159, disminúyela de modo que ahora el valor de totalAmountSugar
sea igual a 158. El operador post-aumento, ++
, hace lo contrario, agregar un número al valor.
¿Qué está pasando exactamente aquí? Recuerde, tenemos un objetivo principal: servir té a 100 invitados. Cada vez que servimos a un invitado, se restan un servicio de cada ingrediente (totalAmountSugar
y totalAmountTea
) y un invitado (totalGuests
). Cuando totalAmountSugar
o totalAmountTea
llegan a 0 (línea 15) O totalGuests
llega a 0 (línea 12), el bucle se detiene y no se sirve a nadie más.
Veamos cómo funciona el bucle do-while
.
Bucles do-while
Un bucle do-while
permite que el código haga algo una vez antes de que se pruebe la condición.
El bucle do-while
comienza haciendo una tarea una vez. A continuación, se verifica una condición. Si la condición es verdadera, ejecuta la tarea de nuevo. Si es falsa, el bucle se detiene.
Eche un vistazo a la sintaxis:
- En Developer Console, haga clic en Debug (Depuración) | Open Execute Anonymous Window (Abrir ventana de ejecución anónima).
- Copie el siguiente código y péguelo en la ventana Enter Apex Code (Ingresar código Apex).
- Seleccione la casilla de verificación Open Log (Abrir registro) y haga clic en Execute (Ejecutar). Se abre Execution Log (Registro de ejecución), mostrando el resultado de la ejecución de su código.
- Seleccione la casilla de verificación Debug Only (Solo depurar) en la parte inferior de la pantalla.
Declaró variables, instanció valores, creó listas y realizó bucles de datos de varias maneras. ¡Felicitaciones! Completó una introducción a Apex y está en el buen camino para comprender más sobre el código.