Sie sind auf Seite 1von 8

Programacion.

Java Estructuras de control

4. ESTRUCTURAS DE CONTROL DE FLUJO


Java toma de C las sentencias y sintaxis para el control de flujo de bloques de
sentecias, así se permiten la cronstrucción de sentecias o bloques de sentencias
condicionadas, repetitivas o alternativas. Estos son las siguientes:

if … else if … else
switch (…) {case … break; … default … break;}
do { … } while (…)
while (…) { … }
for (){ … }

4.1. Sentencia if - else


Su sintaxis es:

if (condicion)
acciones1;
else
acciones2;

donde acciones1 y acciones2 pueden ser una sentencia o más de una entre llaves. Si se
el resultado de evaluar la condición es verdadero se ejecuta acciones1, en caso contrario
se ejecuta acciones2. Ejemplo:

public class Votacion{


public static void main(String args[]){
short edad=19;
if (edad >= 18)
System.out.println("Puede votar");
else
System.out.println("No puede votar");
}
}

En el siguiente programa se realiza una lectura desde teclado, para ello se utiliza
la clase Scanner que permite leer datos de la fuente que se envíe como argumento al
constructor, en este caso el objeto System.in, que representa el teclado a nivel de
consola. Para usar esta clase hay que importar el paquete java.util.
Con la sentencia int talla=sc.nextInt(); lee un entero en el flujo del teclado

import java.util.*;
public class SiEntonces{

1
Programacion. Java Estructuras de control

public static void main(String args[]){


final int tallaMenor=36;
final int tallaMayor=54;
Scanner sc = new Scanner(System.in);
System.out.println("Dame tu talla");
int talla = sc.nextInt();
if(talla >= tallaMenor && talla <= tallaMayor)
System.out.println("La talla existe");
else
System.out.println("La talla no existe");
}
}

Java admite para la sentencia condicional la sintaxis de los operadores “?” y “:”

a=(c<d)?c*2:27; equivalente a
if (c<d)
a=c*2;
else a=27;

Se pueden encadenar unas sentencias detrás de otras con la sintaxis:

if (condicion1)
acciones1;
else if (condicion29
acciones2;
else if (condicion3)
acciones3;
else
acciones4;

Ejemplo:
import java.util.*;

public class SiEntonces2{


public static void main(String arg[]){
final int tallaMenor=36;
final int tallaMayor=54;
Scanner sc = new Scanner(System.in);
System.out.println("Dame tu talla");
int talla = sc.nextInt();
System.out.println("Dame el numero del almacén");
int almacén = sc.nextInt();
if(talla >= tallaMenor &&

2
Programacion. Java Estructuras de control

talla <= tallaMayor && almacén == 1){


System.out.println("La talla existe");
System.out.println("Está en el almacén 1");
}else if(talla >= tallaMenor &&
talla <= tallaMayor && almacén == 2){
System.out.println("La talla existe");
System.out.println("Está en el almacén 2");
}else{
System.out.println("La talla no existe");
}
}
}

Cuando hay más de tres o cuatro bloques alternativos se debe utilizar


preferentemente la estructura switch … case ya que resulta más eficiente. Con el if
tiene que evaluar todas las condiciones hasta que encuentra una cierta, frente al switch
que evalua la expresión para determinar el bloque.

4.2. Sentencia switch - case

Sentencia de selección,

switch (expresion) {
[case valor_var_expres: acciones1;
break;}
{case valor_var_expres: acciones2;
break;}
….................................................
[default: acciones n;]

Se ejecutará el bloque case que coincida con el valor que se obtenga al evaluar la
expresión. Si no coincide ningún bloque case se ejecuta el bloque default. Todo bloque
debe de terminar con break, para que termine la sentencia (produce el salto a llave de
cierre de la sentencia switch); si a un bloque case no se le pone el break la ejecución
continuaría por el siguiente case o por default.

import java.util.*;
public class DiasDeCadaMes{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
System.out.println("Introduce el numero del mes");
short mes = sc.nextShort();
switch(mes) {

3
Programacion. Java Estructuras de control

case 1: case 3: case 5: case 7: case 10: case 12: case 8:


System.out.println("El mes numero "+ mes +
" tiene 31 días");
break;
case 2:
System.out.println("El mes numero "+ mes +
" tiene 28 días");
System.out.println("excepto bisiestos 29 días");
break;
case 4: case 6: case 9: case 11:
System.out.println("El mes numero "+
mes +" tiene 30 días");
break;
default:
System.out.println("Mes no contemplado");
}
}
}

En la versión 7 se puede utilizar una variable de tipo String para discriminar el bloque a
ejecutar.

public class DiasDeLaSemana


{
public static void main(String args[]){
String diaSemana = "Sabado";
switch(diaSemana) {
case "Sabado":
case "Domingo":
System.out.println("Este es un día libre");
break;
case "Lunes":
case "Martes":
case "Miercoles":
case "Jueves":
System.out.println("Este es un día de trabajo completo");
break;
case "Viernes":
System.out.println("Este es un día de media jornada de trabajo");
break;
default:
System.out.println("Este día tiene el nombre erroneo");
break;
}
}
}

4
Programacion. Java Estructuras de control

4.3. Sentencia for

Nos permite repetir la ejecución de un bloque un número de veces. Sintaxis:

for(exp_inicio, expresión_fin;exp_incremento){
[bloque sentencias ]
}

La expre_inicio, se le da valor a una variable que se utilizará como contador y se irá


incrementando o decrementando según indique la expresión_incremento; el bucle for dejará de
ejecutarse cuando se cumpla la expresión fin.
Ej
for (contador=inicio; contador<=fin; contador+=1)
System.out.println(“ contador= “+contador);

Cuando el bloque de sentencias está formado por una sola sentencia se puede omitir las llaves
En el siguiente ejemplo convertimos pesetas en euros, de 25 en 25 ptas hasta llegar a 200.

public class Euros{


public static void main(String args[]){
final float euro = 166.386f;
for( float ptas = 25;ptas< 200; ptas+= 25f){
System.out.printf("%5.2f Ptas. %5.2f Euros\n",
ptas,ptas/euro);
}
}
}

Las mascarillas dan forma a los datos de consola, en este caso se utiliza %5.2f. El
símbolo % indica que se trata de una mascarilla, f que es un float, el número de la izquierda el
número mínimo de caracteres de consola y el de la derecha el número de decimales.
En el siguiente ejemplo vemos como se pueden anidar esta estructura:

public class Triangulo{


public static void main (String arg[]){
for(int i=0; i<=5; i++){
for (int j=i;j>0;j--){
System.out.print("*");
}
System.out.println("");
}
}
}

Nota: Cuando existe algún contador del número de veces que se tiene que repetir la estructura se
usa for, si es una expresión lógica la que determina el número de repeticiones se usa do-while o
while. Aunque todo lo que se representa con un for se puede pasar a while.

5
Programacion. Java Estructuras de control

Ejemplo de recorrido de un array con un for.

public class Media{


public static void main(String args[]){
double números[] = {25.0,56.5,32.2,23.4,67.3,43.1,56.0,34.4,56.5};
double suma=0;
for(int i=0; i< números.length;i++)
suma += números[i];
System.out.println("Media = "+ suma/números.length);
}
}
En la versión J2SE5 se incluye una sintaxis nueva de la estructura for, que podemos ver en el
siguiente ejemplo:

public class Media2{


public static void main(String args[]){
double números[] = {25.0,56.5,32.2,23.4,67.3,43.1,56.0,34.4,56.5};
double suma=0;
for(double i : números)
suma += i;
System.out.println("Media = "+ suma/números.length);
}
}

4.4. Sentencia do-while

Bloque repetitivo condicionado en el que se ejecuta el bloque de sentencias al menos una vez,
aunque no se cumpla la condición de control, debido a que la expresión lógica del bucle se
evalúa al final Sintaxis:

do{
[bloque sentencias]
While (expr_logica)

Ejemplo programa DoWhile.java

import java.util.*;
public class DoWhile{
public static void main(String args[]){
long aux;
long factorial = 1;
Scanner sc = new Scanner(System.in);
System.out.println("Introduce un numero entero");
long numero = sc.nextLong();
aux=numero;
do{

6
Programacion. Java Estructuras de control

factorial *= aux;
aux--;
}while(aux > 0);
System.out.print("El factorial de: "+numero);
if(numero > 0 && numero < 25)
System.out.println(" es: "+factorial);
else if(numero == 0)
System.out.print("El factorial es 0");
else
System.out.println(" no se puede calcular");
}
}

4.5. Sentencia while

Sentencia condicionada, que se repite mientras la condición sea verdadera ( se puede repetir de
o a n veces; la anterior se repite de 1 a n veces) Sintaxis:

do (condición){
[bloque sentencias]
}

La condición es una expresión lógica. Ejemplo programa While.java

import java.util.*;
public class While{
public static void main(String args[]){
long aux;
long factorial = 1;
Scanner sc = new Scanner(System.in);
System.out.println("Introduce un numero entero positivo");
long numero = sc.nextLong();
aux=numero;
while(aux > 0){
factorial *= aux;
aux--;
}
System.out.print("El factorial de: "+numero);
if(numero > 0 && numero < 25)
System.out.println(" es: "+factorial);
else if(numero == 0)
System.out.print("El factorial es 0");
else
System.out.println(" no se puede calcular");
}
}

7
Programacion. Java Estructuras de control

4.6. Sentencias break y continue.


En cualquier punto de una estructura repetitiva se puede poner un punto de rotura de la
ejecución, para lo cual se cuenta con las sentencias break y contine. La sentencia break
interrumpe el bucle repetitivo inmediatamente superior. Continue transfiere el control a la
iteración siguiente del bucle inmediatamente superior. Si hay varias estructuras anidadas se
pueden identificar con una etiqueta ej

bucleA:
for (j=1;j>100; j++){
do{
if (condiciona)
break bucleA;
if condiciónB)
break;
while (condicionC);
}

Si se cumple la condiciónB se termina el bucle do; si se cumple la A se termina el for


Recomendación: no utilizarlas a no ser que sea estrictamente necesario.

Das könnte Ihnen auch gefallen