Vous êtes sur la page 1sur 49

Estructuras de control en Java

FUNDAMENTOS DE PROGRAMACION ING. ABISAI MORALES JIMENEZ

Estructuras de control en Java

INTRODUCCION

Cada mtodo de los programas que hemos hecho hasta ahora, era un conjunto de sentencias que se ejecutaban en el orden en que se haban escrito.

Pero esto no es siempre as. Ya que puede surgir la necesidad de ejecutar unas sentencias u otras en funcin de algunos criterios especificados por nosotros.
As mismo en las de una ocasin necesitaremos ejecutar un conjunto de sentencias un numero determinado de veces o bien hasta que se cumpla una condicin impuesta por nosotros. En esta unidad aprenders a escribir cdigo para que un programa tome decisiones y para que sea capaz de ejecutar bloques de sentencias repetidas veces.

Estructuras de control en Java

Estructuras de control

Nos permite cambiar el orden de las declaraciones ejecutadas en nuestros programas. de seleccin / decisin control

Hay dos tipos de estructuras de control


Estructuras

structures
Nos permite seleccionar secciones especficas del cdigo para ser ejecutado, a partir de una condicin. Estructuras de iteracin / repetition control structures

Nos permite ejecutar secciones especficas del cdigo una cantidad determinada de veces.
Estructuras de control en Java 3

Estructuras de seleccin

Son declaraciones que nos permiten seleccionar y ejecutar bloques especficos del cdigo mientras otras partes son ignoradas.
if( boolean_expression ) statement; if( boolean_expression ){ statement1; } else{ statement2; } if( boolean_expression1 ) statement1; else if( boolean_expression2 ) statement2; else statement3
Estructuras de control en Java 4

Tipos:

A la hora de utilizar esta instruccin hay q tener en cuenta lo siguiente: La condicin de comprobacin puede ser cualquier expresin cuyo resultado sea de tipo bolean(true o false). En cualquier otro caso se producir un error de compilacin
Si
== != < > <= >=

Operadores condicionales

Significado Igual Distinto Menor Mayor Menor o igual Mayor o igual

El bloque else es opcional. En este caso si la condicin no se cumple el programa continuara su ejecucin en la siguiente lnea despus de la llave del cierre } del if.
Estructuras de control en Java 5

Nos permite comprobar una condicin dentro de un programa. En caso de que la condicin se cumpla se ejecutara un determinado conjunto de instrucciones Mientras que sino se cumple, se podr optar por ejecutar otro conjunto diferente de instrucciones o por no ejecutar ninguna.

Estructuras de control en Java

Consideraciones acerca del uso de la sentencia if.

Olvidar los parntesis al poner la condicin del if es un error sintctico (los parntesis son necesarios)

No hay que confundir el operador de comparacin == con el operador de asignacin =


Los operadores de comparacin ==, !=, <= y >= han de escribirse sin espacios. => y =< no son operadores vlidos en Java. El fragmento de cdigo afectado por la condicin del if debe sangrarse para que visualmente se interprete correctamente el mbito de la sentencia if
Estructuras de control en Java

Declaracin If Diagrama

Estructuras de control en Java

Decisin Simple
si <Expresin_Lgica> entonces <acciones> fin_si If (condicin) { Sentencias }

Estructuras de control en Java

Declaracin If else Diagrama

Estructuras de control en Java

10

Decisin doble
if ( condicin)

si <Expresin_Lgica> entonces

<acciones1>
si_no <acciones2>

sentencia
} else{ sentencia }

fin_si

Estructuras de control en Java

11

Declaracin If else if Diagrama

Estructuras de control en Java

12

Decision multiple
si <Expresin_Lgica> entonces <acciones1> si_no if( Expresion_logica) { Acciones1 } else{

si <Expresin_Lgica> entonces <acciones2> si_no


<acciones3> fin_si fin_si

if(Expresion_Logica) {
Acciones2

}
else { Acciones3

Estructuras de control en Java

13

Errores comunes
1. La condicin dentro de la declaracin If no evala

un valor boleano. Por ejemplo, //WRONG int number = 0; if( number ){ //some statements here } La variable number no es un tipo booleano 2. Escribir elseif en vez de else if.

Estructuras de control en Java

14

Declaracin switch

La sentencia switch se encarga de estructurar una seleccin mltiple. Al contrario del enunciado if-else que slo podemos indicar dos alternativas, maneja un nmero finito de posibilidades.

La estructura general del enunciado switch es la siguiente:


... break } En caso de que el resultado de la expresin coincida con el valor representado por el valor1, se ejecutaran las sentencias definidas, en este bloque, sino coincide se compara con el valor2, y a si sucesivamente. Si el resultado no coincide con ninguno de los valores indicados en los case, se ejecutara el bloque de instrucciones indicado en default.

Estructuras de control en Java

15

segn_sea switch( expresin ) { <Expresin_Ordinal > hacer case valor1: <lista_de_valores_ordinales >:<acciones>

sentencia1;
... break;

[si_no //El corchete indica opcionalidad <acciones>]

...
case valor2: sentencia2; ... break; default:

fin_segn

Estructuras de control en Java

sentencia;

16

Declaracin switch

El valor de la expresin y de las constantes tiene que ser de tipo char, byte, short o int . Al evaluar la expresin de switch, el intrprete busca una constante con el mismo valor. Si la encuentra, ejecuta las sentencias asociadas a esta constante hasta que tropiece con un break. La sentencia break finaliza la ejecucin de esta estructura. Si no encuentra ninguna constante que coincida con la expresin, busca la lnea default.

Si existe, ejecuta las sentencias que le siguen. La sentencia default es opcional.


Estructuras de control en Java 17

Declaracin switch
NOTA:
A

diferencia con el caso de declaracin if, las mltiples declaraciones se ejecutan en la declaracin sin necesidad de cambiar las llaves. un case en un switch se ha encontrado la misma condicin, todas las declaraciones relacionadas con este case se ejecutan. No slo eso, las declaraciones relacionadas con los cases siguientes son tambin ejecutados.
evitar que el programa siga ejecutando los case posteriores, usamos la declaracin break como ltima declaracin.
Estructuras de control en Java 18

Cuando

Para

Ejemplo declaracin switch


public class Lineas{ public static void main(String args[]){ int j = 0; switch (j) { case 5: System.out.println("5********"); case 4: System.out.println("4********"); break; case 3: System.out.println("3********"); case 2: System.out.println("2********"); case 1: System.out.println("1********"); default: System.out.println(Por defecto"); } } }
Estructuras de control en Java 19

Diagrama de Flujo switch

Estructuras de control en Java

20

Estructuras de iteracin
Nos permite ejecutar secciones especficas del cdigo una cantidad determinada de veces..

Tipos:
while
do-while for
Estructuras de control en Java 21

FOR

La instruccin repetitiva for permite ejecutar in conjunto de instrucciones un numero determinado de veces.

Estructuras de control en Java

22

For
desde <Variable> <V_Inicial> Hasta <V_Final> [Incremento|Decremet o <incremento>] Hacer
for (<inicializacin>;<c ondicin>;<increment o>) { <sentecias>

<acciones>
fin_desde

Estructuras de control en Java

23

for (int i=1; i<=10; i++) //muestra los nmeros del 1-10 { system.out.println(el numero es:+i); }

Estructuras de control en Java

24

FOR

La ejecucin del bucle for comienza con la instruccin de inicializacin, es decir inicializara una variable de control. Incluyendo su declaracin. A continuacin se comprueba la condicin, cuyo resultado debe de ser siempre de tipo bolean. En caso de que el resultado sea true se ejecutarn las instrucciones delimitadas por el bloque, de llaves {} Despus se ejecuta la instruccin de incremento, y volver a comprobarse la condicin. En el momento en que la condicin sea false, las instrucciones del bloque no se ejecutaran, continuando el programa en la siguiente lnea.
}
Estructuras de control en Java 25

FOR
CONSIDERACIONES

Las instrucciones de control del bucle for (inicializacin, condicin e incremento) son opcionales. En cualquier caso, el delimitador de instrucciones , siempre debe estar presente. Por ejemplo si se omiten instrucciones de comparacin e incremento, la cabecera del for quedara:
for(int i=0;;)

Si se declara una variable, en la instruccin de inicializacin, sta sera accesible nicamente desde el interior del for. Al igual que sucede con if, las llaves delimitadas del bloque solamente son obligatorias si el for esta compuesto por mas de una instruccin
}
Estructuras de control en Java 26

bucle while
Permite En

ejecutar un bloque de instrucciones mientras se cumpla una determianda condicion dentro del programa. ambos casos el bloque de instruciones se ejecuta mientras la condicon se cumple. En el segundo formato se ejecutan las instrucciones y luego se comprueba la condicion. Lo que garantiza que el bloque de instrucciones se ejecute por lo menos una vez iteracin continuar hasta que su condicin sea falsa.

La

Estructuras de control en Java

27

while

mientras <Expresin_Lgica> Hacer

while( condicion) { sentecia; }

<acciones>
fin_mientras

Estructuras de control en Java

28

Ejemplo 1
int x = 0; while (x<10) { System.out.println(x); x++; }

Estructuras de control en Java

29

Ejemplo 2
//infinite loop while(true) System.out.println(hello);

Estructuras de control en Java

30

Ejemplo 3
//no loops // statement is not even executed while (false) System.out.println(hello);

Estructuras de control en Java

31

bucle do-while

do-while
La

sentencia de iteracin do-while es de tipo posprueba. Primero realiza las acciones luego pregunta.

do-while tiene esta sintaxis:

Estructuras de control en Java

32

Do while
repetir <acciones> do { Acciones } while ( Expresion_Logica );

hasta_que <Expresin_Lgica >

Estructuras de control en Java

33

Ejemplo 1
int x = 0;
do { System.out.println(x); x++; }while (x<10);

Estructuras de control en Java

34

Ejemplo 2
//infinite loop do{ System.out.println(hello); } while (true);

Estructuras de control en Java

35

Ejemplo 3
//one loop // statement is executed once do System.out.println(hello); while (false);

Estructuras de control en Java

36

Directrices de codificacin
1. Un error de programacin comn se da cuando se utiliza el bucle do-while y se olvidar de escribir el punto y coma despus de la expresin while,
do{ ... }while(boolean_expression)//WRONG->forgot semicolon;

2. Al igual que en el while, controlar entrar en un bucle infinito.

Estructuras de control en Java

37

bucle for

Bucle for

Permite la ejecucin del mismo cdigo un nmero de veces.

Sintaxis del bucle for:


for (<inicializacin>;<condicin>;<actualizacin>)
<bloque-o-instruccin>

Siempre equivalente a un bucle while Como en el caso de do-while, muchas veces un bucle for es ms compacto que un while.

Estructuras de control en Java

38

Diagrama bucle for


inicializacin condicin false true

bloque-o-instruccin
actualizacin

Estructuras de control en Java

39

Sentencia break

La sentencia de 'break' es de tipo de control de bucles. Dentro de la iteracion en un bucle, de cualquiera de los tipos (while, do-while, for), el uso de esta sentencia rompe la iteracion de dicho bucle.

Cuando se encuentra en una sentencia switch o bucle, break hace que el control del flujo del programa pase a la siguiente sentencia que se encuentre fuera del entorno del switch o bucle.

Estructuras de control en Java

40

Sentencia break

Ejemplo:
0; j<10; j++){ 1; 2; 3;

for(int j = sentencia sentencia sentencia break; }

Este bucle debera ejecutarse 10 veces, desde j = 0 hasta j = 9, sin embargo la utilizacin de la sentencia break, rompe la iteracin del bucle, de tal manera que tras la primera ejecucin el bucle acaba habindose ejecutado una sola vez.

Estructuras de control en Java

41

Sentencia break etiquetada

Java incorpora la posibilidad de etiquetar la sentencia break, de forma que el control pasa a sentencias que no se encuentran inmediatamente despus de la sentencia switch o del bucle, es decir, saltar a la sentencia en donde se encuentre situada la etiqueta. La sintaxis de una sentencia etiquetada es la siguiente: break [etiqueta];

Estructuras de control en Java

42

Ejemplo break etiquetada


public class TestBreakLabel { public static void main(String[] args) { int[][] numbers = {{1, 2, 3}, {4, 5, 6,7, 8, 9}}; int searchNum = 8; boolean foundNum = false;

searchLabel:
for( int i=0; i<numbers.length; i++ ){ for( int j=0; j<numbers[i].length; j++ ){ if( searchNum == numbers[i][j] ){ foundNum = true;

break searchLabel;
}
} } if( foundNum ) System.out.println(searchNum + " found!" ); else System.out.println(searchNum + " not found!"); } }
Estructuras de control en Java 43

Sentencia continue

La sentencia de continue es de tipo de control de bucles. Dentro de la iteracion en un bucle, de cualquiera de los tipos (while, do-while, for), el uso de esta sentencia rompe la iteracion de dicho bucle. La sentencia continue no se puede utilizar en una sentencia switch. Provocando que se ejecute la siguiente iteracion de dicho bucle, ignorando las sentencias posteriores a "continue"

Estructuras de control en Java

44

Sentencia continue

Ejemplo:

for(int j = 0; j<10; j++){ sentencia 1; sentencia 2; sentencia 3; continue; sentencia 4; };

Este bucle se ejecuta 10 veces, pero con la salvedad de que la sentencia 4 no se ejecuta ninguna vez. Es decir, se ejecutan las sentencias 1, 2 y 3 y cuando se llega a la sentencia de control continue se vuelve de nuevo a comprobar la condicion del for y en caso de cumplirse de nuevo a la sentencia 1 y as sucesivamente.
Estructuras de control en Java 45

Sentencia continue etiquetada

Java permite el uso de etiquetas en la sentencia continue, de forma que el funcionamiento normal se ve alterado y el salto en la ejecucin del flujo del programa se realizar a la sentencia en la que se encuentra colocada la etiqueta. La sintaxis de una sentencia etiquetada es la siguiente: continue [etiqueta];

Estructuras de control en Java

46

Ejemplo continue etiquetada


outerLoop:
for( int i=0; i<5; i++ ){ for( int j=0; j<5; j++ ){ System.out.println("Inside for(j) loop j="+j+"\n i="+i);//msg1 if( j == 2 ) continue outerLoop; } System.out.println("Inside for(i) loop"); //message2 } In this example, message 2 never gets printed since we have the statement continue outerloop which skips the iteration.

Estructuras de control en Java

47

Sentencia return

La sentencia return se utiliza para terminar un mtodo o funcin y opcionalmente devolver un valor al mtodo de llamada.

En el cdigo de una funcin siempre hay que ser consecuentes con la declaracin que se haya hecho de ella. Por ejemplo, si se declara una funcin para que devuelva un entero, es imprescindible colocar un return final para salir de esa funcin, independientemente de que haya otros en medio del cdigo que tambin provoquen la salida de la funcin. En caso de no hacerlo se generar un Warning, y el cdigo Java no se puede compilar con Warnings.

Estructuras de control en Java

48

Sentencia return

Si el valor a retornar es void, se puede omitir ese valor de retorno, con lo que la sintaxis se queda en un sencillo: return;

y se usara simplemente para finalizar el mtodo o funcin en que se encuentra, y devolver el control al mtodo o funcin de llamada.

Estructuras de control en Java

49

Vous aimerez peut-être aussi