Palabras clave: Variables booleanas', `Estructuras de control
, Estructuras condicionales
, Condiciones booleanas
.
1. Instrucciones condicionales
Una instrucción (o estructura) condicional o de selección es aquella que establece qué instrucciones deben de ejecutarse o no, en función del valor de una condición.
TIPOS DE INSTRUCCIONES CONDICIONALES
|
El valor de la condición que determina si se ha de ejecutar o no un conjunto de instrucciones viene dado por un valor booleano que es el resultado de una expresión booleana.
2. Condicional Simple
Un condicional simple es una estructura de control que ejecuta un conjunto de líneas de código si es cierta una expresión booleana. En Processing un condicional simple se expresa según este código:
if (expresion) { Líneas de código que se ejecutan si la expresión es cierta. }
El siguiente código muestra la división de dos números naturales siempre y cuando el denominador no sea nulo.
1
2
3
4 if (a != 0) {
print("El cociente es: ");
println(b/a);
}
3. La cláusula else
A un condicional simple se le puede añadir la cláusula else
para especificar qué lineas de código se quieren ejecutar si la expresión booleana es falsa. En este caso se habla de la estructura if-else
, que en Processing se expresa según este código:
if (expresion) { Líneas de código que se ejecutan si la expresión es cierta. } else { Líneas de código que se ejecutan si la expresión es falsa. }
El siguiente código muestra un mensaje para indicar cuándo un número es negativo y cuándo no lo es.
1
2
3
4
5 if (a < 0) {
println("El número es negativo");
} else {
println("El número es nulo o positivo");
}
4. Anidamiento
Las instrucciones (o estructuras) condicionales pueden aparecer en cualquier bloque del programa. Por ejemplo puede aparecer en el bloque de una función pero también puede aparecer en los bloques que componen una instrucción condicional.
Un bloque de un programa es todo aquello que se encuentra entre las llaves |
Cuando en alguno de los bloques de un instrucción if-else
se incluye otro if
u otro if-else
se dice que esta segunda estructura está anidada en la primera
y se habla de secuencia de estructuras condicionales anidadas.
El siguiente código mejora el código anterior.
Se muestra un mensaje para indicar cuándo un número es negativo, positivo o nulo.
Para ello se recurre a una estructura condicional que está anidada en la cláusula else
.
1
2
3
4
5
6
7
8
9 if (a < 0) {
println("El número es negativo");
} else {
if (a == 0) {
println("El número es nulo");
} else {
println("El número es positivo");
}
}
Dicho código es equivalente al siguiente, formado únicamente por condicionales simples.
1
2
3
4
5
6
7
8
9
10
11 if (a < 0) {
println("El número es negativo");
}
if (a == 0) {
println("El número es nulo");
}
if (a > 0) {
println("El número es positivo");
}
Cuando un estructura condicional está anidada en la cláusula
se escribe
Donde el código especificado entre corchetes |
En muchas situaciones la estructura condicional anidada en el bloque correspondiente al bloque del if
se puede evitar añadiendo mas condiciones en la primera expresión condicional.
El siguiente código tiene una estructura condicional anidada en el bloque del primer if
.
Cada if
tiene una expresión booleana simple (con un solo operador condicional).
1
2
3
4 if (a > 0) {
if (a % 2 == 0)
println("Es un número positivo y par.");
}
Dicho código es equivalente al siguiente, formado por un único if
con una expresión booleana compleja (con operadores lógicos y condicionales).
1
2
3 if ((a > 0) && (a % 2 == 0))
println("Es un número positivo y par.");
}
5. Estructura de selección múltiple
En el caso de anidar reiteradamente estructuras if-else
en cada una de las cláusula else
puede convenir la estructura de selección múltiple. Es una estructura que permite seleccionar entre varias alternativas posibles. Las alternativas tienen que ser valores literales de tipo int
, char
o String
. En Processing se expresa según este código:
switch (expresion) { case constante1: conjunto de sentencias que se ejecutarán si expresion == constante1 es cierto. break; case constante2: conjunto de sentencias que se ejecutarán si expresion == constante2 es cierto. break; ... case constanteK: conjunto de sentencias que se ejecutarán si expresion == constanteK es cierto. break; default: conjunto de sentencias que se ejecutarán si expresion no retorna un valor coincide con ninguna de las constantes anteriores. }
switch-case-default
El siguiente código muestra un mensaje correspondiente al día de la semana, en función de un valor numérico.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 int dia;
switch (dia)
{
case 1 : println("lunes");
break;
case 2 : println("martes");
break;
case 3 : println("miércoles");
break;
case 4 : println("jueves");
break;
case 5 : println("viernes");
break;
case 6 : println("sábado");
break;
case 7 : println("domingo");
break;
default : println("¡ Día desconocido !");
break;
}
Un par de observaciones sobre esta estructura:
-
Se requiere de al menos un
case
. -
Si vas a usar pocos casos, quizás deberías plantearte el uso de
if-else
anidados en vez deswitch-case
. -
La cláusula
default
es opcional. No estás obligado a ponerla, pero es aconsejable. -
La sentencia
break;
evita que Processing siga ejecutando las líneas siguientes de los siguientes case. Por ejemplo, si el primerbreak
no se hubiese puesto en el ejemplo anterior, entonces se mostrarían los mensajes"lunes"
y"martes"
. El siguiente ejemplo debe aclararte este aspecto.
switch
sin algunos break
El siguiente código muestra un mensaje para indicar cuándo un día es laborable o no.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 int dia;
switch (dia)
{
case 1 :
case 2 :
case 3 :
case 4 :
case 5 : println("Es día laborable");
break;
case 6 : println("sábado");
break;
case 7 : println("domingo");
break;
default : println("¡ Día desconocido !");
break;
}
6. Repaso
-
Una estructura condicional ejecuta ciertas líneas de código en función de una expresión booleana.
-
Hay 3 tipos de estructuras de control condicional.
-
de condición simple, la estructura
if
; -
bicondicional, la estructura
if-else
; y -
de condición múltiple, la estructura
switch-case-default
.
-
-
Mientras que en las estructuras
if
yif-else
la expresión booleana condicional puede contener cualquier tipo de dato y puede intervenir cualquier tipo de operador condicional o booleano, la expresión condicional de la estructuraswitch-case
es solo de comparación de igualdad y restringida a los tipos de datosint
,char
oString
-
Cualquiera de estas estructuras pueden estar anidadas en cualquier bloque del programa, donde se incluyen los bloques de las estructuras anidadas.