Está en la página 1de 38

Módulo 2.

Control de Flujo
Fundamentos de Programación
MTI. Carlos A. Piña Silva
estructuras de CONTROL
lenguaje Java

Los programas contienen instrucciones que se ejecutan


generalmente una a continuación de la otra según la
secuencia en la que el programador ha escrito el código.
Sin embargo, hay ocasiones en las que es necesario romper
esta secuencia de ejecución para hacer que una serie de
instrucciones se ejecuten o no dependiendo de una
determinada condición o hacer que una serie de
instrucciones se repitan un número determinado de veces.
Características DE
estructuras de CONTROL

Tienen un único punto de entrada y un único punto de salida.


Están compuestas por instrucciones o por otras estructuras
de control.
estructuras de CONTROL
lenguaje Java

Las estructuras de control se dividen en las siguientes


categorías:
• Estructura Secuencial
• Estructura Condicional o Selectiva
• Estructura Iterativa o Repetitiva.
• Instrucciones de salto
estructuras de selección lenguaje Java
ESTRUCTURA CONDICIONAL, ALTERNATIVA O
SELECTIVA

Es una de las estructuras que permiten modificar el orden de


ejecución de las instrucciones del programa.
Una estructura condicional determina si se ejecutan unas
acciones u otras según se cumpla o no una determinada
condición.
La condición que se comprueba para decidir si unas instrucciones
se ejecutan o no debe ser una expresión booleana es decir debe
dar como resultado un valor booleano true ó false.
ESTRUCTURA CONDICIONAL, ALTERNATIVA O
SELECTIVA

En java la estructura condicional se implementa mediante:


• Instrucción if.
• Instrucción switch.
• Operador condicional ? :
INSTRUCCION if
lenguaje Java

La instrucción condicional if puede ser de tres tipos::


• Condicional simple: if
• Condicional doble: if ... else ...
• Condicional múltiple o if anidados: if .. else if ..
INSTRUCCION if
lenguaje Java

La instrucción condicional if puede ser de tres tipos::


• Condicional simple: if
• Condicional doble: if ... else ...
• Condicional múltiple o if anidados: if .. else if ..
if
Estructura Condicional simple

Como su nombre indica, es la estructura condicional más


sencilla en Java. La usaremos para decidir si una
instrucción o bloque de instrucciones se ejecuta o no
dependiendo de una condición. Se evalúa la condición y si se
cumple se ejecuta. Si no se cumple la condición, se salta
dicho grupo de instrucciones.
if
Estructura Condicional simple

instrucción 1;
instrucción 2;
if(condición){ //inicio de la condición
instrucción 3;
instrucción 4;
} //fin de la condición
instrucción 5;
instrucción 6;
If - Estructura Condicional simple
EJEMPLO

/*
* Programa que pide una nota por teclado y muestra dos mensajes si la nota es mayor o igual que 7
*/
import java.util.*;
public class CondicionalSimple1 {
public static void main( String[] args ){
Scanner sc = new Scanner( System.in );
System.out.print(“Dame tu calificación del Primer Parcial: ");
int nota = sc.nextInt();
if (nota >= 7){//----------------------inicio de la condición
System.out.println("Enhorabuena!!");
System.out.println("Has aprobado");
}//-------------------------------------fin de la condición
System.out.println("Hasta Pronto!");
}
}
if
Estructura Condicional Doble

Mediante esta estructura de control el flujo de ejecución del


programa puede seguir dos caminos distintos dependiendo
del valor de una condición.
Se evalúa la condición y si se cumple se ejecuta una
determinada instrucción o grupo de instrucciones. Si no se
cumple se ejecuta otra instrucción o grupo de instrucciones
if
Estructura Condicional Doble
If - Estructura Condicional Doble
EJEMPLO
/*
* Programa que pide una nota por teclado y muestra si ha aprobado o no el Parcial
import java.util.*;
public class EjemploIfElse {
public static void main( String[] args ){
Scanner sc = new Scanner( System.in );
System.out.print("Nota: ");
int nota = sc.nextInt();
if (nota >= 7){
System.out.println("Enhorabuena!!");
System.out.println("Has aprobado el Primer Parcial");
} else {
System.out.println("Lo siento, has reprobado el Pimer Parcil");
}
System.out.println("Hasta Pronto!");
}
}
If - Estructura Condicional Doble
EJEMPLO
/*
* Programa que pide un número por teclado y muestra si es par o impar
*/
import java.util.*;
public class EjemploIfElse2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num;
System.out.print("Introduzca un número entero: ");
num = sc.nextInt();
if (num % 2 == 0) {
System.out.println("PAR");
} else {
System.out.println("IMPAR");
}
}
}
If anidados
Estructura Condicional Múltiple

La estructura condicional múltiple se obtiene encadenando


sentencias if ... else.
Mediante esta estructura podemos construir estructuras de
selección más complejas.
If anidados
Estructura Condicional Múltiple
If anidados
Estructura Condicional Múltiple

Cada else se corresponde con el if más próximo que no haya


sido emparejado.
Una vez que se ejecuta un bloque de instrucciones, la
ejecución continúa en la siguiente instrucción que aparezca
después de estructura condicional múltiple.
If anidados
Estructura Condicional Múltiple
/Programa que muestra un saludo distinto según la hora introducida
import java.util.*;
public class EjemploIfAnidados { En estos ejemplos podemos
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
comprobar que una vez que se
int hora; ejecuta una de las instrucciones
System.out.print("Introduzca una hora (>= 0 y <= 23): ");
hora = sc.nextInt(); dentro del bloque de if anidados, la
if (hora >= 0 && hora < 12) { ejecución del programa continúa en
System.out.println("Buenos días");
} else if (hora >= 12 && hora < 21) { la siguiente instrucción a
System.out.println("Buenas tardes");
} else if (hora >= 21 && hora < 24) {
continuación del bloque de if
System.out.println("Buenas noches"); anidados, en este caso la ejecución
} else {
System.out.println("Hora no válida");
sigue por la instrucción.
}
System.out.println("Hasta pronto!!!");
}
}
If anidados
Estructura Condicional Múltiple
// programa que lee una nota y escribe la calificación correspondiente
import java.util.*;
public class EjemploIfAnidados2 {
public static void main(String[] args) { Programa que pide que se introduzca un valor numérico de tipo double
Scanner sc = new Scanner(System.in); correspondiente a la nota de un alumno en una determinada asignatura y muestra
double nota; un texto con la calificación equivalente de la siguiente forma:
System.out.println("Introduzca una nota entre 0 y 10: ");
nota = sc.nextDouble();
System.out.println("La calificación del alumno es "); Si la nota es menor que 5 muestra “Suspenso”
if (nota < 0 || nota > 10) {
System.out.println("Nota no válida"); Si la nota es mayor o igual que 5 y menor que 6 muestra “Suficiente”
} else if (nota == 10) {
System.out.println("Matrícula de Honor");
Si la nota es mayor o igual que 6 y menor que 7 muestra “Bien”
} else if (nota >= 9) {
System.out.println("Sobresaliente");
} else if (nota >= 7) { Si la nota es mayor o igual que 7 y menor que 9 muestra “Notable”
System.out.println("Notable");
} else if (nota >= 6) { Si la nota es mayor o igual que 9 y menor que 10 muestra “Sobresaliente”
System.out.println("Bien");
} else if (nota >= 5) {
System.out.println("Suficiente"); Si la nota es igual a 10 muestra “Matrícula de honor”
} else {
System.out.println("Suspenso"); Si la nota es menor que 0 o mayor que 10 mostrará el mensaje “Nota no válida”
}
}
}
instrucciones if
Errores comunes que se suelen cometer

1. Escribir un punto y coma al final de la condición:


if (nota >= 6);
System.out.println("Notable");

En este caso el mensaje "Notable" saldrá siempre. El if termina en el ;

2. Escribir elseif en lugar de else if


elseif (nota >= 5)
System.out.println("Suficiente");
instrucciones if
Errores comunes que se suelen cometer

3. Usar = en lugar de == en las comparaciones


if (nota=10)
System.out.println("Matrícula de Honor");

4. Errores al comparar dos String


No se deben usar los operadores relacionales ==, >, <, <= , etc.

if(cadena1 == cadena2){ //Comparación no válida de 2 String


Comparar dos String en java

Para comprobar si dos String son iguales se debe usar el método


equals:
if (cadena1.equals(cadena2))

Si lo que queremos es comprobar si dos cadenas son iguales sin


tener en cuenta mayúscula o minúscula se usa el método
equalsIgnoreCase:

if (cadena1.equalsIgnoreCase(cadena2))
Comparar dos cadenas en java

Para comparar dos cadenas en el orden alfabético se usa el método


compareTo
El método compareTo compara las dos cadenas alfabéticamente y
devuelve un valor entero con el resultado de la comparación de la
siguiente forma:
• Devuelve 0 si las dos cadenas son iguales.
• Devuelve un valor < 0 si la primera cadena es alfabéticamente menor
que la segunda.
• Devuelve un valor > 0 si la primera cadena es alfabéticamente mayor
que la segunda.
Comparar dos cadenas en java

Ejemplos de uso:
Suponiendo que cadena1 y cadena2 son de tipo String y
ambas contienen una cadena de caracteres, podemos
compararlas de varias formas según necesitemos:
Comparar dos cadenas en java

if(cadena1.compareTo(cadena2) < 0) //si la condición se cumple significa que


//cadena1 es alfabéticamente menor que cadena2
if(cadena1.compareTo(cadena2) > 0) //si la condición se cumple significa que
//cadena1 es alfabéticamente mayor que cadena2
if(cadena1.compareTo(cadena2) == 0) //si la condición se cumple significa que
//cadena1 es igual que cadena2
if(cadena2.compareTo(cadena1) > 0) //si la condición se cumple significa que
//cadena2 es alfabéticamente mayor que cadena1
if(cadena2.compareTo(cadena1) < 0) //si la condición se cumple significa que
//cadena2 es alfabéticamente menor que cadena1
Comparar dos cadenas en java

Para comparar Strings en el orden alfabético sin tener en


cuenta mayúsculas o minúsculas se usa el método
compareToIgnoreCase
if(cadena1.compareToIgnoreCase(cadena2) > 0)
En este saso, si la condición se cumple significa que cadena
1 es alfabéticamente mayor que cadena2 sin importar que
los caracteres en ambas cadenas estén en mayúsculas o en
minúsculas.
estructuras de selección lenguaje Java

Las estructuras de selección (o condicionales) permiten


realizar una u otra acción con base en una expresión lógica.
Las acciones posibles a realizar son mutuamente
excluyentes, es decir, solo se puede ejecutar una a la vez
dentro de toda la estructura.
El bucle for en Java (y for-each)

• El bucle for en Java, junto con su primo el for-each, son


estructuras lógicas que te permiten realizar una y otra vez
una acción, siempre y cuando se cumpla una condición
booleana.
• Los bucles for y for-each en Java son dos maneras de
realizar bucles. Aunque su nombre es similar, su
estructura es diferente. Con el bucle for tienes más control
en la ejecución del bucle.
El bucle for en JavA

Estructura del bucle for en Java


El bucle for en Java toma como punto de partida un índice
de control. Al final de cada bucle, este índice se actualiza
según una regla que estableces en la estructura del bucle.
Acto seguido, el bucle comprueba si el índice satisface la
condición booleana.
El bucle for comienza con la palabra clave for y un
paréntesis, que contiene tres partes.
El bucle for en JavA
Qué has de tener en cuenta a la hora de examinar un
bucle en Java

La flexibilidad a la hora de construir un bucle for en Java es


tan grande, que puedes prescindir de algunas de las partes
de las que te acabo de hablar.
Por ejemplo, también puedes establecer una evaluación
booleana que siempre sea true. Como consecuencia, el
bucle no deja nunca de ejecutarse hasta que el programa se
detiene con un error por falta de memoria.
Qué has de tener en cuenta a la hora de examinar un
bucle en Java

Todo está permitido, con tres condiciones:


1. Los tres elementos van separados por ; (punto y coma)
en cualquier caso.
2. Si alguno de los elementos no está presente, los dos
puntos y comas han de aparecer de todas formas.
3. El índice de control ha de existir (se ha de haber
declarado, ya sea antes del bucle for o en la primera
parte del paréntesis del bucle
Qué has de tener en cuenta a la hora de examinar un
bucle en Java

¿Qué ocurre si utilizas directamente los valores true o false


en la evaluación?
A diferencia de lo que ocurría si utilizabas false en un if, que
era perfectamente válido, no puedes utilizar false en un
bucle for en Java, aunque el bucle esté vacío.
Qué has de tener en cuenta a la hora de examinar un
bucle en Java

El uso de true crea un bucle infinito, ya que la evaluación


nunca llega a tener el valor false.
Por último, un bucle for en Java puede prescindir de las
llaves, si el código que contiene consta de una sola línea
(hasta el primer punto y coma). Vigila la posición del bucle
for en ese caso:
Orden de ejecución DE bucle
FOR en Java

1. En primer lugar, se instancia el índice de control, o toma el


valor, si le determinas uno nuevo.
2. A continuación, se evalúa el índice de control. Si la
evaluación es falsa, el bucle se detiene.
3. Si la evaluación es verdadera, se ejecuta el código del bucle
for.
4. Una vez ejecutado, se modifica el valor del índice de control
según la regla establecida.
5. Se vuelve a evaluar el índice de control.
Bucles for anidados

Los bucles for anidados consisten en crear un bucle for


dentro de otro bucle. Son útiles si quieres, por ejemplo,
imprimir el contenido de un array de dos dimensiones:

También podría gustarte