Instrucciones Control
Instrucciones Control
Instrucciones Control
Pedro Corcuera
Dpto. Matemática Aplicada y
Ciencias de la Computación
Universidad de Cantabria
corcuerp@unican.es
Objetivos
Java 2
Índice
• Estructuras de control
• Instrucciones if, if – else, if – else – else – if,
switch
• Instrucciones while, do – while, for
• Instrucciones break, continue, return
Java 3
Estructuras de Control
Java 4
Estructuras de Control de Decisión
Java 5
Instrucción if
Java 6
Instrucción if
expresión
booleana
True False
sentencia(s)
Java 7
Ejemplo de if
import java.util.Scanner;
public class MensajeNota {
public static void main( String[] args ){
Scanner in = new Scanner( System.in );
System.out.print(″Nota: ″);
int nota = in.nextInt();
if (nota > 7 ){
System.out.println(″Felicitaciones″);
System.out.println(″Has aprobado″);
}
}
}
Java 8
Recomendaciones de codificación
Java 9
Instrucción if - else
expresión
booleana
True False
sentencia(s) sentencia(s)
Java 11
Ejemplo de if - else
import java.util.Scanner;
public class MensajeNota1 {
public static void main( String[] args ){
Scanner in = new Scanner( System.in );
System.out.print(″Nota (0 – 10): ″);
double nota = in.nextDouble();
if (nota > 7 )
System.out.println(″Has aprobado″);
else
System.out.println(″Suspendido″);
}
}
Java 12
Ejemplo de if - else
import java.util.Scanner;
public class MensajeNota2 {
public static void main( String[] args ){
Scanner in = new Scanner( System.in );
System.out.print(″Nota (0 – 10): ″);
double nota = in.nextDouble();
if (nota > 7 ) {
System.out.println(″Felicitaciones″);
System.out.println(″Has aprobado″);
}
else {
System.out.println(″Suspendido″);
}
}
}
Java 13
Recomendaciones de codificación
Java 14
Instrucción if – else – else if
Java 15
Instrucción if – else – else if
True
ritcher >
Mayoría de las estructuras caen
8.0?
False
False
True
ritcher >= Daños en edificios construídos
4.5? deficientemente
False
No hay destrucción de edificios
Java 16
Ejemplo de if – else – else if
import java.util.Scanner;
Java 18
Errores comunes
Java 20
Comparación de cadenas de caracteres
Java 23
Ramificación alternativa: switch
• En la sintaxis de switch
expresion_switch es una expresión entera o
carácter
case_selector1, case_selector2, ...
son constantes enteras o carácter únicas
break finaliza cada case
default captura cualquier otro valor
Java 24
Funcionamiento de switch
Java 25
Instrucción switch
True
case
Instrucciones bloque1 break;
selec1:
False
case True
Instrucciones bloque2 break;
selec2:
False
case True
Instrucciones bloque3 break;
selec3:
False
True
case
Instrucciones bloque4 break;
selec4:
False
Instrucciones bloque default
Java 26
Instrucción switch
Diagrama de cajas
Java 27
Instrucción switch
True
case
Instrucciones bloque1
selec1:
False
case True
Instrucciones bloque2
selec2:
False
case True
Instrucciones bloque3 break;
selec3:
False
True
case
Instrucciones bloque4 break;
selec4:
False
Instrucciones bloque default
Java 28
Ejemplo de switch
import java.util.Scanner;
switch (c) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
System.out.printf("Tecla numerica "); break;
case ' ': case '\n': case '\t':
System.out.printf("blanco\n"); break;
default: System.out.printf("Otra tecla\n"); break;
}
}
}
Java 30
Instrucciones de repetición - Ciclos
Java 32
Ejemplo de ciclo while
public class DoblarInversion {
public static void main( String[] args ){
final double TASA = 5;
final double INVERSION_INICIAL = 10000;
final double OBJETIVO = 2*INVERSION_INICIAL;
double inversion = INVERSION_INICIAL;
int annos = 0;
while (inversion < OBJETIVO){
annos++;
double interes = inversion*TASA/100;
inversion += interes;
}
System.out.println(″A\0x00a4os: ″ + annos);
}
}
Java 33
Ciclo while
Java 34
Ciclo while
int x = 0;
while (x < 10){
System.out.println(x);
x++;
inversion += interes;
}
// ciclo infinito
while (true){
System.out.println(″hola″);
}
// no hay ciclo
while (false){
System.out.println(″hola″);
}
Java 35
Ejemplo de ciclo while (1)
// Imprime tabla de conversion Fahrenheit-Celsius 0-100
public class ConvFCw {
public static void main(String[] args) {
final double RANGO_INICIAL = 0; // limite inf. tabla
final double RANGO_FINAL = 100; // limite sup. tabla
final double PASO = 10 ; // tamanno paso
int fahrenheit;
double celsius;
Java 39
Ejemplo de ciclo while (2)
Java 40
Ejemplo de ciclo while (2) - Observaciones
Java 41
Ejemplo de ciclo while (2) - Pseudocódigo
leer N_interv, eps
dx = pi / N_interv
x=0
while (x <= pi)
t=x
i=1
seno = x
while | t | > eps
t = − t * (x*x)/(2*i*(2*i + 1)
seno = seno + t
i=i+1
end_while
print x, seno
x = x + dx
end_while
Java 42
Ejemplo de ciclo while (1)
/** **********************************************************
* Prog. que imprime el seno para valores en subintervalos *
* entre 0 y PI precison especificadas por el usuario *
* calculada con una serie de Taylor y la funcion de Math.sin *
* @author: Pedro Corcuera *
\*************************************************************/
import java.util.Scanner;
public class CalculoSeno {
public static void main( String[] args ){
double seno, x, term, dx, eps;
int i,ninterv;
Java 44
Ciclo do - while
int value;
do
{
System.out.println(″Escribe un entero <
100: ″);
value = in.nextInt();
}
while (value >= 100); // test
Java 46
Ejemplo de do - while
import java.util.Scanner;
public class ValidaInput {
public static void main( String[] args ){
int valor;
Scanner in = new Scanner( System.in );
do {
System.out.println(″Escribe un entero < 100″);
valor = in.nextInt();
} while (valor >= 100);
System.out.println(″Valor: ″ + valor);
}
}
Java 47
Ejemplo de do – while (1)
import java.util.Scanner; //Calcula promedio lista enteros
public class Promedio {
public static void main( String[] args ){
int n, cont = 1; float x, promedio, suma = 0;
Scanner in = new Scanner( System.in );
System.out.printf("Promedio de numeros enteros\n");
System.out.printf("Cuantos numeros? ");
n = in.nextInt();
do {
System.out.printf("Ingresa numero %2d = ",cont);
x = in.nextFloat(); suma += x; ++ cont;
} while ( cont <= n);
promedio = suma / n;
System.out.printf("El promedio es: %.3f\n", promedio);
}
}
Java 48
Ciclo for
Java 50
Ejemplo de for
import java.util.Scanner;
public class TablaInversion {
public static void main( String[] args ){
final double TASA = 5;
final double INVERSION_INICIAL = 10000;
double inversion = INVERSION_INICIAL;
System.out.print("Ingresa numero de a\u00a4os: ");
Scanner in = new Scanner(System.in);
int nannos = in.nextInt();
for (int anno=1; anno <= nannos; anno++) {
double interes = inversion*TASA/100;
inversion += interes;
System.out.printf("%4d %10.2f\n",anno, inversion);
}
}
}
Java 51
Ejemplo de for (1)
public class ConvFCfor {
public static void main(String[] args) {
final double RANGO_INICIAL = 0; // limite inf. tabla
final double RANGO_FINAL = 100; // limite sup. tabla
final double PASO = 10 ; // tamanno paso
int fahrenheit; double celsius;
Java 56
Etiquetas de sentencias
Java 57
Instrucción break
Java 58
Instrucción break
Java 59
Instrucción break etiquetado
• El break etiquetado:
– el control del flujo se transfiere a la instrucción que sigue a
la sentencia etiquetada.
– Sintaxis general:
break [EtiquetaSentencia:];
Java 60
Instrucción continue
Java 61
Instrucción continue
Java 62
Ejemplo de break y continue
public class EjBreakContinue {
public static void main( String[] args ) {
System.out.printf("Ejemplo break\n"); int i = 0;
while (i <= 20) {
i++;
if (i % 5 == 0) break;
System.out.println(i);
}
System.out.printf("Ejemplo continue\n"); i = 0;
while (i <= 20) {
i++;
if (i % 5 == 0) continue;
System.out.println(i);
}
}
}
Java 63
Instrucción return
Java 64