You are on page 1of 22

Control de flujo

Fundamentos de programacin/
Programacin I
2007-2008

Qu es el flujo de un
programa?
Es el orden con el cual el ordenador ejecuta
instrucciones
El orden comn es en secuencia, instruccin
por instruccin
El bloque es el que permite este orden
secuencial
Un bloque est marcado con llaves:
{
instruccion1;
instruccion2;
instruccion3;

Qu es el flujo de un
programa?
En Java, existen dos estructuras que cambian
el flujo de control:
Estructuras condicionales: un bloque slo se ejecuta
bajo ciertas condiciones
Estructuras de repeticin: un mismo bloque se
ejecuta repetidamente

Ejemplos:
Escribir un mensaje de saludo si encuentras el
nombre de un amigo
Escribir Hola Mundo! 10 o 100 o 1000 veces

Instrucciones
condicionales

if
if-else
if-else-if
switch
El operador ?:

Instruccin if
Sintaxis:

if (<expresin-boolean>)
<bloque-o-instruccion>

Control de flujo
expresin-boolean
true

false

bloque-o-instruccion
5

Ejercicio
Saber si un nmero es divisible por otro (el
resultado de la divisin es un entero)
Si el primer nmero es divisible por el
segundo, mostrar el cociente en la pantalla

Instruccin if-else
Sintaxis:

if (<expresin-boolean>)
<bloque-o-instruccion1>

else
<bloque-o-instruccion2>

expresin-boolean
true
bloque-o-instruccion1

false
bloque-o-instruccion2
7

Ejercicio
Saber si un nmero entero est dentro del
intervalo [-128, , 127]
Si es el caso, escribir que el nmero es un byte
En caso contrario, mostrar mensaje de error

Instruccin if-else-if
Sintaxis:

if (<expresin-boolean1>)
<bloque-o-instruccion1>
else if (<expresin-boolean2>)
<bloque-o-instruccion2>

...
else if (<expresin-booleanN-1>)
<bloque-o-instruccionN-1>
else
<bloque-o-instruccionN>

Ejercicio
Saber si un nmero es positivo, negativo, o
cero

10

Ejercicio
Saber si un carcter es un dgito, una letra
mayscula o una letra minscula
ASCII:
dgito: 48 57
letra mayscula: 65 90
letra minscula: 97 122

11

Instruccin if-else
Sin llaves, cada else siempre est asociado
con el if ms cercano
Ejemplo: Saber si ambos nmeros x e y son
mayor que 0

12

Instruccin if-else
if (x > 0)
if (y > 0)
System.out.println(Ambos mayor que 0");
else
System.out.println(Alguno no mayor que 0");

13

Instruccin if-else
if (x > 0) {
if (y > 0)
System.out.println(Ambos mayor que 0");
}
else
System.out.println(Alguno no mayor que 0");

14

Instruccin if-else-if
Sentido:

if (<expresin-boolean1>)
<bloque-o-instruccion1>
else {
if (<expresin-boolean2>)
<bloque-o-instruccion2>
else {
...
}
}

15

Instruccin switch
A menudo la expresin boolean de un ifelse-if depende de una sola variable de tipo
primitivo
Tipos primitivos = palabras reservadas; por
ejemplo byte, int, double pero no String
En este caso se puede utilizar otra instruccin
llamada switch
Ms compacto que un if-else-if

16

Instruccin switch
switch (<selector>) {
case <etiqueta1>: <sentencias1>;
break;
case <etiqueta2>:
<sentencias2>;
break;
...
case <etiquetan>:
<sentenciasn>;
break;
default:
<sentenciasd>; // opcional
}

17

Ejercicio
Leer un nmero entero entre 1 y 10
Mostrar el nmero escrito en numerales
romanos

18

Qu pasa si excluimos
break?
El programa pasa a la siguiente instruccin
dentro del switch!
La funcin de break es de cambiar el control
de flujo

19

El operador ?:
nico operador ternario en Java (requiere tres
operandos)
Sintaxis:
<operando1> ? <operando2> : <operando3>
operando1 tiene que ser una expresin boolean
operando2 y operando3 pueden ser
expresiones de cualquier tipo siempre que sean
ambos del mismo tipo
El resultado de la expresin es
operando2
si operando1 es true
operando3
si operando1 es false

20

El operador ?:
Como siempre, si queremos guardar el resultado
de la expresin, la variable tiene que ser del
mismo tipo que operando2 y operando3
Prioridad: ?: se evala antes de asignacin (=)
pero despus de los dems operadores
Ejemplos:
int a = n == 0 ? 10 : 20;
char c = n > 0 && a > 15 ? a : b;
String s = a < 15 ? pequeo : grande;
21

Palabras reservadas
class
inicio de programa
public, static, void
mtodo main
byte, short, int, long
enteros
float, double reales
char caracteres
boolean
tipo Boolean
true, false
literales Boolean
if, else, switch
instruccin condicional
case, break, default
parte de switch

22