Está en la página 1de 17

Tema 2.

Estructuras básicas de control

Autor/a: Cristian Catalán


Informática. Programación I
Tema 2. Estructuras básicas de control

Tema 2: Estructuras básicas de control

¿Qué aprenderás?



Desarrollar programas informáticos utilizando estructuras de control de flujo.
F P

Comentar y documentar adecuadamente los programas.
Revisar y corregir los errores que puedan aparecer. I A
N K
LI
¿Sabías que…?
N O
• U M
Se considera que el primer virus informático fue creado en 1983 por Fred

AL
Cohen para probar que era algo posible que un programa hiciera copias
del mismo y se transfiriera a otros ordenadores.

• L E
Existen más de 698 lenguajes de programación distintos.
Los programadores dedican aproximadamente el 30% del tiempo
navegando entre su código.
IB

M
Se considera que el término debug se generó cuando el almirante Grace
I
Murray encontró una polilla atrapada en un relé impidiendo las

debugging. P R
operaciones de una computadora. Al quitar la polilla se hizo un

IM
N
I Ó
R S
VE
Informática. Programación I
Tema 2. Estructuras básicas de control

1. Introducción

Un programa siempre empieza la ejecución en un punto y termina en otro. Su flujo de


ejecución es por defecto vertical, es decir, primero se ejecutan las instrucciones situadas en
la parte superior. A medida que el programa va avanzado el flujo de ejecución va bajando
por el código hasta terminar.

Las estructuras de control nos permiten alterar el flujo de ejecución de un programa para
que un bloque de código pueda o no ejecutarse, se repita múltiples veces, deje de
ejecutarse o se ejecute solo si se detecta algún error.
F P
I A
de otras estructuras.
N K
Siempre podemos anidar estructuras de control definiendo estructuras dentro de bloques

LI
2. Estructuras de Selección N O
U M
AL
Las estructuras de selección nos permiten delimitar un bloque de código que se va a
ejecutar o no según un valor.

L E
2.1. If
IB
I M
P R
Nos permite ejecutar o no un bloque de código según el resultado de evaluar una
expresión booleana. Su sintaxis es:
IM
if( ){ …. }
Entre los paréntesis indicaremos la expresión que se ha de cumplir para ejecutar el bloque
N
definido entre las llaves.
I Ó
Por ejemplo, el siguiente código solo mostrará el mensaje “Es igual a 3” cuando el
S
resultado de la operación numero==3 genere un valor true.
R
V E int numero=3;
if(numero==3){
System.out.println("Es igual a 3");
}

2
Informática. Programación I
Tema 2. Estructuras básicas de control

2.1.1. If/else

Si quisiéramos ejecutar un código en el caso contrario, siempre podemos añadir a


continuación de una estructura if(){} una estructura else{}

int numero=3;
if(numero==3){
System.out.println("Es igual a 3");
}else{

}
System.out.println("Es distinto a 3");
F P
I A
K
Podemos anidar estructuras de selección sin problema, pero hemos de recordar que las
N
LI
variables solo están disponibles dentro de los bloques de código en los que se han definido.

int numero=3;
if(numero==3){
N O
System.out.println("Es igual a 3");
}else{
U M
AL
if(numero==4){
System.out.println("Es igual a 4");
}
}
L E
I B
2.1.2 Else if I M
P R
Para facilitar el uso de if/else de forma anidada, podemos utilizar la estructura }else if(){}
IM
N
I Ó
R S int numero=3;
if(numero==3){

VE System.out.println("Es igual a 3");


}else if(numero==4){
System.out.println("Es igual a 4");
}

3
Informática. Programación I
Tema 2. Estructuras básicas de control

2.2. Switch / case

La estructura Switch/Case nos permite comparar una variable con distintos valores y
definir un bloque de código para que se ejecute en el caso que la variable sea igual a un
valor. Después de ejecutar uno de los casos automáticamente se ejecutará el código del
siguiente caso a no ser que se encuentre con un break;
La sintaxis se compone de:
• switch(valorComparar){ } en donde se define la variable a comparar. Limita el
bloque de código que contendrá los distintos casos a comparar.
• case opcion1: contiene el código a ejecutar cuando el valorCompara sea igual a
opcion1.
F P
A
• break; sentencia opcional que evita se siga ejecutando el contenido del siguiente
I
case.
• default: contiene el código a ejecutar cuando no se cumpla ningún case.
N K
LI
El siguiente ejemplo mostrará el mensaje “Hola”. Si la variable opción tuviera el valor

ningún break.
N O
“despedir” mostraría los valores “Ádios”, “Ánimos” y “mensaje por defecto” porque no hay

U M
AL
L E
I
String opcion="saludar";B
switch(opcion){
I
case "saludar": M
P
break;
R
System.out.println("Hola !");

IM
case "despedir":
N System.out.println("Adios !");

I Ó
R S case "animar":
System.out.println("Ánimos !");

VE default:
System.out.println("mensaje por defecto");
}

4
Informática. Programación I
Tema 2. Estructuras básicas de control

3. Estructuras de repetición

Las estructuras de repetición nos permiten ejecutar un bloque de código repetidamente


mientras el resultado de evaluar una condición booleana sea true. Veremos tres
estructuras distintas de repetición: While, For, Do While. Aunque con las tres se pueden
resolver los mismos problemas cada una ofrece ventajas y desventajas en su aplicación.
Todas las estructuras de repetición se componen de la condición, el bloque de código a
repetir y una sentencia que altera la condición para que el bucle pueda finalizar.

F P
3.1. Estructura While
I A
N K
LI
Su sintaxis es: while( condición ){ …. }
Entre los paréntesis indicaremos la condición que se ha de cumplir para ejecutar el bloque

N O
definido entre las llaves. Una vez ejecutado se volverá a evaluar la expresión de nuevo para
ver si se tiene que volver a ejecutar. Éste proceso se repetirá mientras que la expresión siga
siendo válida. El código que altere la condición para finalizar el bucle se ha de escribir
dentro del bloque de código que queremos repetir.
U M
AL
El siguiente ejemplo mostrará por consola los mensajes:
El valor de numero es 0
El valor de numero es 1
El valor de numero es 2
L E
int numero=0; I B
while(numero < 3){
I M
P R
//bloque de código a repetir
System.out.println("El valor de número es:"+numero);

} IM
numero++; //operación que altera la condición para que finalice el bucle

N
I Ó
Las condiciones que especificamos entre los paréntesis en la declaración de un bucle
S
siempre van a tener que retornar un true o false.
R
V E Hay que tener presente siempre que es necesario alterar la condición para finalizar el
bucle. El siguiente ejemplo creará un bucle infinito que nunca va a terminar:

while(true){
//bloque de código a repetir infinitamente
}

5
Informática. Programación I
Tema 2. Estructuras básicas de control

3.2. For

Su sintaxis es:
For( variableCondicion; condición ; operación que altere la variableCondicion ){ …. }

Un bucle For nos permite iniciar en su definición la variable que utilizaremos para controlar
el bucle, definir la condición para volver a repetir el bloque de código y escribir la operación
que altere la condición para finalizar el bucle.
La gran diferencia respecto al bucle While, es que la variable usada para controlar el bucle
se define dentro del mismo For y no estará disponible una vez finalizado el bucle.
El siguiente ejemplo mostrará por consola los mensajes:
F P
El valor de número es 0
El valor de número es 1 I A
El valor de número es 2
N K
for(int numero=0; numero < 3; numero++){ LI
//bloque de código a repetir
N O
System.out.println("El valor de número es:"+numero);
}

U M
3.3. Do / While AL
L E
Su sintaxis es: do{ …. } IB
I M
while(condición);

P R
Un bucle Do While ejecuta el bloque de código que define y después evalúa la condición

IM
para ver si se ha de volver a ejecutar o no.
La gran diferencia con las anteriores estructuras de repetición es que el bloque de código
N
que contiene como mínimo se ejecuta una vez.

I Ó
R S
El siguiente ejemplo mostrará por consola el mensaje:
El valor de número es 0

VE int numero=0;
do{
//bloque de código a repetir
System.out.println("El valor de número es:"+numero);
}while(numero != 0);

6
Informática. Programación I
Tema 2. Estructuras básicas de control

4. Estructuras de salto

Las estructuras de salto son sentencias que alteran el flujo de ejecución de un programa
dentro de un bloque de código.

4.1. Break

La sentencia break; detiene la ejecución de un programa dentro del bloque de código


haciendo que la ejecución continúe fuera del bloque. Se puede utilizar dentro de cualquier
F P
estructura de control de flujo de selección, repetición o control de errores. El break lo
encontramos comúnmente en la estructura switch para detener cada uno de los case. I A
El siguiente ejemplo mostrará por consola los mensajes:
N K
LI
El valor de número es 0
El valor de número es 1
int numero=0;
while(numero < 3){ N O
if(numero == 2){
break;
U M
AL
}
System.out.println("El valor de número es:"+numero);

}
numero++;
L E
I B
I M
4.2. Continue
P R
IM
La sentencia continue; solo se puede utilizar dentro de una estructura de control de flujo
N
de repetición. Provoca que se ignore el resto de código dentro del bloque a repetir y que
I Ó
vuelva a evaluarse la condición del bucle.

R S
El siguiente ejemplo mostrará por consola los mensajes:
El valor de número es 0

V E El valor de número es 2

int numero=0;
while (numero < 3) {
if (numero == 1) {
//es muy importante modificar la variable de control antes del continue
numero++;
continue;
}
System.out.println("El valor de número es:" + numero);
numero++;
} 7
Informática. Programación I
Tema 2. Estructuras básicas de control

4.3. Return

La sentencia return; altera la ejecución de un programa finalizando la función que se


estuviera ejecutando y retornando un valor. Cuando veamos el uso de funciones la
veremos con mayor atención, de momento nos provocará que el programa finalice.
El siguiente ejemplo mostrará por consola los mensajes:
El valor de número es 0
El valor de número es 1
F P
int numero=0; I A
while(numero < 3){
N K
LI
if(numero == 2){
return7;
}
System.out.println("El valor de número es:"+numero);
numero++; N O
}
U M
A L
4.4.
E
Estructuras de control de excepciones try/catch
L
IB
¿Qué ocurre si intentamos acceder al teclado pero éste no está disponible? , ¿y si

I M
intentamos dividir un número entre 0? . Éstas y muchas otras operaciones pueden producir

PR
errores inesperados durante el flujo de ejecución de nuestro programa. El control de
excepciones nos va a permitir controlar la ejecución de un bloque de código e indicar qué
código queremos que se ejecute si se produce un error.
IM
Como a quizás queramos actuar distinto según el tipo de error, el control de excepciones

N
nos ofrece también la posibilidad de ejecutar distinto código según el error encontrado.

I Ó
Su sintaxis es: try { …… }
catch(TipoDeExcepcion e){ ... }

R S catch(OtroTipoDeExcepcion e){ … }
finally{ … }

VE La palabra clave Try precede el bloque de código que vamos a controlar. El bloque de
código de cada catch contendrá el código a ejecutar según el error definido dentro de sus
paréntesis. El bloque de código de finally se ejecutará siempre que se produzca un error
independientemente del tipo de error.

8
Informática. Programación I
Tema 2. Estructuras básicas de control

En el siguiente ejemplo controlamos tres posibles errores que se pueden producir al


intentar leer un valor desde consola, dividir entre 0 o convertir un texto a número.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ControlandoExcepciones {

public static void main(String[] args) {


System.out.println("Introduce un numero != 0");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); F P
try{
I A
String numeroEscrito = br.readLine();
N K
LI
int numero = Integer.parseInt(numeroEscrito);
double resultado = 10/numero;
} catch(IOException e){
System.out.println("Error al intentar acceder al teclado");
} catch(ArithmeticException e){ N O
System.out.println("El número no puede ser 0");
} catch(NumberFormatException e){
U M
AL
System.out.println("No has indicado un valor numérico");
} finally{

} L E
System.out.println("Se ha producido algún error");

}
IB
}
I M
P R
5. Depuración de erroresIM
N
I Ó
R S
Una de las principales tareas que deberemos realizar como programadores es aprender a
conocer, depurar y arreglar errores, pues lo más normal va a ser que nuestros programas

V E
no funcionen nunca a la primera.
Normalmente nos encontraremos con 2 tipos de errores: errores sintáctico/gramaticales o
errores lógicos.

Los errores sintáctico/gramaticales se producirán cuando escribamos variables con


distintos nombres, expresiones inexistentes o cerremos de forma errónea un bloque de
código. En la gran mayoría de casos los IDE (en nuestro caso NetBeans) nos marcará estos
errores en rojo y va a ser imprescindible que los solucionemos para poder ejecutar nuestro
programa.

9
Informática. Programación I
Tema 2. Estructuras básicas de control

Los errores lógicos son aquellos que provocan que la aplicación no haga lo que nosotros
queremos. Suelen ser más complejos de solucionar y deberemos ver y entender cómo se
va desarrollando el flujo de ejecución de nuestro programa para poder solucionarlos.
Una técnica consiste en ir imprimiendo valores y variables para ver cómo van evolucionado
y poder comprender así donde está el error.
La forma más concisa es utilizar el “Debug” de nuestro programa para poder ir viendo
cómo evolucionan las distintas variables y qué código se va ejecutando.

En el siguiente video podemos ver como depurar errores con NetBeans:

F P
I A
N K
LI
N O
U M
AL
L E
B
Vídeo: DepuracionErrores : Depuración de errores con NetBeans

I
I M
P R
IM
N
I Ó
R S
VE

10
Informática. Programación I
Tema 2. Estructuras básicas de control

Recursos y enlaces
• Documentación oficial de Java: https://docs.oracle.com/en/java/javase/11/

• Eclipse es otro IDE alternativo a NetBeans que puedes encontrar aquí: F P


https://www.eclipse.org I A
N K
LI
N O

U M
Joodle: compilador online de Java: https://www.jdoodle.com/online-java-compiler

AL
L E
IB
• I M
Repl.it : compilador online de Java: https://repl.it/repls/FamousBumpyFilename

P R
IM
N
I Ó
R
• S
CodeCombat: aprende a programar jugando: https://codecombat.com

VE

11
Informática. Programación I
Tema 2. Estructuras básicas de control

Conceptos clave
• Debuggear: depurar errores.
• Bug: un error en un programa informático.
• Flujo de un programa: líneas que va ejecutando el programa.
• Estructuras de selección: altera el flujo de un programa para ejecutar o bien unas
líneas de código u otras.
• Estructuras de repetición: altera el flujo de un programa para volver a ejecutar unas


líneas.
F P
líneas. I A
Estructuras de salto: altera el control de flujo saltando la ejecución de un conjunto de


N K
Estructuras de control de errores: altera el flujo de un programa capturando los
errores para evitar que el programa se detenga.
LI
N O
U M
AL
L E
IB
I M
P R
IM
N
I Ó
R S
VE

12
Informática. Programación I
Tema 2. Estructuras básicas de control

Test de autoevaluación

¿Qué tipo de estructura de control de flujo es un do/while?


a) Selección.
b) Repetición.
c) Salto.
d) Control de errores.

F P
¿Qué tipo de estructura de control de flujo es un switch/case?
I A
a) Selección.
N K
b) Repetición.
c) Salto.
LI
d) Control de errores.
N O
U M
AL
¿Qué tipo de estructura de control de flujo es un try/catch?
a) Selección.
b) Repetición.
L E
c) Salto.
IB
d) Control de errores.
I M
P R
Ponlo en práctica IM
N
I Ó
R S
Actividad 1

VE Crea un programa de nombre EjemploControlDeFlujo que muestre por consola un menú


pidiendo que se ejecute una de las siguientes opciones y excepto si se selecciona finalizar
el programa se vuelva a pedir la opción:
• 1- muestra los números del 20 al 40 con un while
• 2- muestra los número del 50 al 30 con un bucle for
• 0- Finaliza el programa

13
Informática. Programación I
Tema 2. Estructuras básicas de control

SOLUCIONARIOS

Test de autoevaluación

¿Qué tipo de estructura de control de flujo es un do/while?


a) Selección.
b) Repetición.
F P
c) Salto.
I A
d) Control de errores.

N K
¿Qué tipo de estructura de control de flujo es un switch/case? LI
e) Selección.
N O
f) Repetición.
g) Salto.
U M
h) Control de errores.
AL
L E
¿Qué tipo de estructura de control de flujo es un try/catch?
i) Selección. IB
j) Repetición.
I M
k) Salto.
P R
IM
l) Control de errores.

N
I Ó
R S
VE

14
Informática. Programación I
Tema 2. Estructuras básicas de control

Ponlo en práctica

Actividad 1

Crea un programa de nombre EjemploControlDeFlujo que muestre por consola un menú


pidiendo que se ejecute una de las siguientes opciones y excepto si se selecciona finalizar
el programa se vuelva a pedir la opción:
• 1- muestra los números del 20 al 40 con un while
• 2- muestra los número del 50 al 30 con un bucle for F P
• 0- Finaliza el programa I A
N K
Solución:
LI
N O
import java.io.*;

U M
AL
public class EjemploControlDeFlujo {

public static void main(String[] args) {

L E
String numeroEscrito = "0";
int opcion = 0; IB
I M
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

do {
P R
//bucle para volver a mostrar el menú

IM
System.out.println("Indica la opción a realizar");
System.out.println("1- muestra los números del 20 al 40 con un while");

N
System.out.println("2- muestra los número del 50 al 30 con un bucle for");

Ó
System.out.println("0- Finaliza el programa");
I
R S
VE

15
Informática. Programación I
Tema 2. Estructuras básicas de control

try {
numeroEscrito = br.readLine();
opcion = Integer.parseInt(numeroEscrito);
} catch (IOException ex) {
System.out.println("Error al intentar acceder al teclado");
}
switch (opcion) {
case 1:
// 1- muestra los números del 20 al 40 con un while
int k = 20;
while (k <= 40) { F P
System.out.println(k);
I A
}
k++;
N K
break;
case 2: LI
// 2- muestra los número del 50 al 30 con un bucle for
for (int i = 50; i >= 30; i--) { N O
}
System.out.println(i);
U M
AL
break;

}
L E
//hasta que el usuario no introduzca un 0 se ejecutará el bule
} while (opcion != 0);
IB
}
I M
}
P R
IM
N
I Ó
R S
VE

16

También podría gustarte