Control Structures
1. Tomanndo Una Decision: If-Statement
Patrick 🐥 es un pato muy cordial que le gusta saludar a todo el que conoce con “Good Morning,” “Good Afternoon,” o “Good Night” dependiendo del tiempo del día.
(image by National Geographic: giphy.com/natgeochannel)
Como aprendimos antes, podemos imprimir las siguientes oraciones:
System.out.println("Good Morning"); // se dice entre 0:00 - 11:59
System.out.println("Good Afternoon"); // se dice entre 12:00 - 19:59
System.out.println("Good Night"); // se dice entre 20:00 - 23:59
Sin embargo, también sabemos que Patrick 🐥 solo puede decidir que decir dependiendo la hora.
En otras palabras, tenemos que escribir código que tome la decisión sobre que imprimir dependiendo la situación.
En Java, podemos tomar una decisión usando el if statement o if…else statement:
If Statement
if(boolean expression){
statement(s)
}
Un if statement tiene la siguiente esctructura mostrada arriba. Este método ejecutará el código dentro del bloque solo si la expresión boolean iguala a true
. Si no, el programa salta el bloque de código.
If-Else Statement
if(boolean expression){
statement(s) A
}else{
statement(s) B
}
Un if-else statement tiene la siguiente esctructura mostrada arriba. Este método ejecutará el código de statement(s) A
del bloque solo si la expresión boolean iguala a true
. Si no, el programa ejecutará el código de statement(s) B
dentro del else-block.
Ejemplo
boolean likeMusic = true;
if(likeMusic == true){
System.out.println("I like Music");
}else{
System.out.println("I don't like Music");
}
El código imprimirá I like Music
(o ‘me gusta la musica’) porque la expresión boolean, likeMusic == true
, es igual al valor de true.
Repasa el ejemplo de arriba, y toma una decisión si Patrick debe decir “Good Morning,” “Good Afternoon,” o “Good Night”.
Patrick debería decir “Good Morning” entre 0:00 - 11:59, “Good Afternoon” entre 12:00 - 19:59, y “Good Night” entre 20:00 - 23:59.
- Tenemos la variable
currentHour
que guarda la hora actual. - Llene la correcta
boolean expression A
yboolean expression B
para completar su programa. - Pruebe su resultado asignando la variable
currentHour
a un número entre 0 y 23:
2. Repítalo de nuevo: For-Loop, While-Loop
En clase de matemáticas, la maestra de Patrick 🐥 le pregunta a la clase que solucione un problema, y tal vez Patrick necesite ayuda:
La maestra les pide que encuentren la suma de sum of 1, 2, 3, …., 100. Es decir, que sumen 1 + 2 + 3 + 4 … + 99 + 100?
Meintras se puede usar la calculadora, eso tomaría demasiado tiempro. Por suerte, en Java, podemos facilmente calcular esta suma con solo 3 líneas de código usando un for loop o while loop.
For loop u While loop son estructuras de control en Java que te permitem ejecutar bloques de código multiples veces.
While Loop
while(boolean expression){
statement(s)
}
statement(s)
en el bloque de while serán ejecutados siempre y cuando el valor de el boolean expression
sea true.
El siguiente ejemplo imprime los números del 1 al 10:
int number = 1;
while(number <= 10){
System.out.println(number);
number = number + 1; // número incrementado por 1
}
En el while loop del ejemplo arriba, el programa imprimirá el valor de number
e incrementa el valor de number
. Este paso será ejecutado siempre y cuando la variable number <= 10
, y en este caso el loop termina cuando number
sea 11.
For Loop
for(initialization; termination condition; update statement){
statement(s)
}
En un for loop, hay tres partes en el bloque de condiciones: initialization
, termination condition
, y update statement
.
- Cuando se ejecuta un for loop, el programa primero corre la parte de
initialization
. Un ejemplo es,int number = 1
. - Luego, el programa chequea
termination condition
. Un ejemplo esnumber <= 10
. - Si es igual a
true
, ejecuta losstatement(s)
y elupdate statement
(un ejemplo esnumber = number + 1
) después repite el paso 2. Si esfalse
, se termina el for loop.
Lo siguiente es un ejemplo que imprime los números entre el 1 y el 10:
for(int number = 1; number <= 10; number = number + 1){
System.out.println(number);
}
Luego de aprender sobre el for loop y el while loop, vamos a ver si Patrick 🐥 puede calcular 1 + 2 + 3 + 4 … + 99 + 100 fácilmente?
Ahora intenetemos lograr la sumatoria usando un while loop:
- Tenemos una variable llamada
total
que guarda el total de la sumatoria. - Tenemos una variable llamada
num
que guarda el próximo número que será sumado atotal
. - Declara un
boolean expression
e imprimelo dentro del while loop.
Luego de seguir estos pasos, terminamos con el siguiente código:
int total = 0;
int num = 1;
while(num <= 100){
total = total + num;
num = num + 1;
}
System.out.println("Answer calculated in a while loop: " + total);
Pruebe esto presionando Run
y escribe una versión del programa usando for loop que calcule lo mismo. Ambos programas deberían resultar en el mismo valor.