Upload
ximi-vivar-de-la-cruz
View
216
Download
0
Embed Size (px)
Citation preview
Control de flujo
Fundamentos de programación/Programación I
2007-2008
2
¿Qué es el flujo de un programa?
• Es el orden con el cual el ordenador ejecuta instrucciones
• El orden común es en secuencia, instrucción por instrucción
• El bloque es el que permite este orden secuencial
• Un bloque está marcado con llaves:{
instruccion1;instruccion2;instruccion3;…
}
3
¿Qué es el flujo de un programa?
• En Java, existen dos estructuras que cambian el flujo de control:– Estructuras condicionales: un bloque sólo se ejecuta
bajo ciertas condiciones– Estructuras de repetición: 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
4
Instrucciones condicionales
• if
• if-else
• if-else-if
• switch
• El operador ?:
5
Instrucción ifSintaxis: if (<expresión-boolean>) <bloque-o-instruccion>
expresión-boolean
bloque-o-instruccion
true false
Control de flujo
6
Ejercicio
• Saber si un número es divisible por otro (el resultado de la división es un entero)
• Si el primer número es divisible por el segundo, mostrar el cociente en la pantalla
7
Instrucción if-elseSintaxis: if (<expresión-boolean>) <bloque-o-instruccion1>
else<bloque-o-instruccion2>
expresión-boolean
bloque-o-instruccion1
true false
bloque-o-instruccion2
8
Ejercicio
• Saber si un número entero está dentro del intervalo [-128, …, 127]
• Si es el caso, escribir que el número es un byte• En caso contrario, mostrar mensaje de error
9
Sintaxis: if (<expresión-boolean1>) <bloque-o-instruccion1>
else if (<expresión-boolean2>)<bloque-o-instruccion2>
...else if (<expresión-booleanN-1>)
<bloque-o-instruccionN-1>else
<bloque-o-instruccionN>
Instrucción if-else-if
10
Ejercicio
• Saber si un número es positivo, negativo, o cero
11
Ejercicio
• Saber si un carácter es un dígito, una letra mayúscula o una letra minúscula
• ASCII:– dígito: 48 – 57– letra mayúscula: 65 – 90– letra minúscula: 97 – 122
12
Instrucción if-else
• Sin llaves, cada else siempre está asociado con el if más cercano
• Ejemplo: Saber si ambos números x e y son mayor que 0
13
Instrucción 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
Instrucción if-else
if (x > 0) { if (y > 0) System.out.println(“Ambos mayor que 0");} else System.out.println(“Alguno no mayor que 0");
15
Sentido: if (<expresión-boolean1>) <bloque-o-instruccion1>
else {if (<expresión-boolean2>)
<bloque-o-instruccion2>
else { ...
}}
Instrucción if-else-if
16
Instrucción switch
• A menudo la expresión boolean de un if-else-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 instrucción llamada switch
• Más compacto que un if-else-if
17
Instrucción switchswitch (<selector>) {
case <etiqueta1>: <sentencias1>; break;
case <etiqueta2>: <sentencias2>; break;
...case <etiquetan>: <sentenciasn>;
break;default: <sentenciasd>; // opcional
}
18
Ejercicio
• Leer un número entero entre 1 y 10• Mostrar el número escrito en numerales
romanos
19
¿Qué pasa si excluimos break?
• ¡El programa pasa a la siguiente instrucción dentro del switch!
• La función de break es de cambiar el control de flujo
20
El operador ?:
• Único operador ternario en Java (requiere tres operandos)
• Sintaxis: <operando1> ? <operando2> : <operando3>
• operando1 tiene que ser una expresión boolean
• operando2 y operando3 pueden ser expresiones de cualquier tipo siempre que sean ambos del mismo tipo
• El resultado de la expresión esoperando2 si operando1 es trueoperando3 si operando1 es false
21
El operador ?:
• Como siempre, si queremos guardar el resultado de la expresión, la variable tiene que ser del mismo tipo que operando2 y operando3
• Prioridad: ?: se evalúa antes de asignación (=) pero después de los demás operadores
• Ejemplos:int a = n == 0 ? 10 : 20;
char c = n > 0 && a > 15 ? ‘a’ : ‘b’;
String s = a < 15 ? “pequeño” : “grande”;
22
Palabras reservadas
class inicio de programa
public, static, void método ‘main’byte, short, int, long enterosfloat, double realeschar caracteresboolean tipo Booleantrue, false literales Booleanif, else, switch instrucción condicionalcase, break, default parte de switch