sentencias de selección curso de programación. objetivos implementar sentencias de control de...

33
Sentencias de selección Curso de Programación

Upload: celio-bejarano

Post on 23-Jan-2016

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Sentencias de selección

Curso de Programación

Page 2: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

OBJETIVOS

•Implementar sentencias de control de selección en un programa usando sentencias if.

•Implementar controles de selección en un programa usando sentencias switch.

•Escribir expresiones booleanas usando operadores relaciónales y booleanos.

•Evaluar determinadas expresiones booleanas correctamente.

•Anidar una sentencia if dentro de otra sentencia if then o else correctamente.

•Elegir la sentencia de selección de control adecuada para una determinada Tarea.

•Escribir aplicaciones usando las clases CuadroLista de la clase javabook y la clase Color del paquete estándar java.awt.

Page 3: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Flujo de control

Las sentencias de los programas se ejecutan en secuencia, lo que se denomina ejecución secuencial o flujo de contral, secuencial.

Sin embargo, se pueden añadir sentencias de toma de decisiones a un programa para alterar este flujo de control.

La sentencia que altera el flujo de control se denomina una sentencia de control.

En este capítulo se describen algunas sentencias de control importantes denominadas sentencias de selección.

En el siguiente capítulo, describiremos otras sentencias de control denominadas sentencias de repetición.

Page 4: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

La sentencia ifSe usa una sentencia if para especificar qué bloque de código se ejecuta.

Un bloque el código puede contener cero o más sentencias.

Qué bloque de código se ejecuta depende de resultado de la evaluación de una condición de prueba, denominada expresión booleana.

Un sentencia if en un programa que tiene el siguiente formato general:

if ( <expresion booleana> ) <bloque then>else <bloque else>

Page 5: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

if (puntuacionPrueba < 70)

cuadroMensaje.show("no ha aprobado“);

else

cuadroMensaje.show("ha aprobado");

Bloque then

Bloque else

Expresión Booleana

Page 6: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Operadores relaciónales

< // menor que

<= // menor que o igual a

== // igual a

!= // distinto de

> // mayor que

>= // mayor que o igual a

Page 7: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Ejemplos

a*a <= c //cierto si a*a es menor que o igual a c

x+y != z //cierto si x + y no es igual a z

a == b //cierto si a es igual a b

a + 4 > 7 //cierto si a + 4 es mayor que 7

b - 6 >= d //cierto si b - 6 es mayor o igual a d

Page 8: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Diagrama de flujo

puntuacionPrueba < 70

cuadroMensaje.show(“Ha aprobado“);

cuadroMensaje.show(“No ha aprobado“);

F V

Page 9: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

if (puntuacionPrueba < 70){ cuadroMensaje.show(“No ha aprobado“); cuadroMensaje.show(“Inténtelo otra vez“);}else{ cuadroMensaje.show(“Ha aprobado“); cuadroMensaje.show(“Siga trabajando");}

Sentencias compuestas

Sentencias compuestas

Page 10: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Estiloif (<expresion booleana>) {

else {

}

if (<expresion booleana>)

{

}

else

{

}

Estilo 1

Estilo 2

Page 11: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Reglas para escribir los bloques then y else

1. Las llaves izquierda y derecha son necesarias para rodear a las sentencias si el bloque then o el bloque else contienen múltiples sentencias.

2. Las llaves no son necesarias si el bloque then o el bloque else contienen una única sentencia.

3. No se necesita un punto y coma después de la llave derecha.

Page 12: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

If abreviado

puntuacionPrueba>=95

cuadroMensaje.show(“Ud. es excelente“);

F V

if (puntuacionPrueba >= 95){ cuadroMensaje.show(“Ud. es excelente“);}

else {}

Page 13: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Preguntas rápidas1. Identifique las sentencias if inválidas

a. if(a < b) then c . if(a < b) x = y; x = y;else else { x= z; x= z;

}

b. if ( a < b ) d. if ( a < b ) {

else x = y; x = y; } else

x = z;

2. Exprese las siguientes sentencias if-then usando if-then-else.a. if ( a < b ) x = y;b. if ( a < b ) {}c. if ( a < b ) x = y;

if ( a >= b ) x = z;

Page 14: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Expresiones booleanas y variables

Tres operadores booleanos son AND, OR y NOT.

En Java, los símbolos &&, ||, y ! representan los operadores AND, OR y NOT respectivamente.

Operadores booleanos y su significado.

A B A&&B A||B !A

F F F F V

F V F V V

V F F V F

V V V V F

V = verdadero, F = falso

Page 15: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

ejemplos

(x 150) x < y && ! (y < z && z < x)

x/y > z || y==0

evaluación en corto circuito

y==0 || x/y > z

Page 16: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Error frecuente

Un error muy frecuente cuando se escribe un programa es mezclar los operadores de asignación y de igualdad.

Frecuentemente cometemos el error de escribir.

if (x = 5) . . .

cuando realmente queríamos decir:

if (x == 5) ...

Page 17: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Preguntas rápidasEvalúe las siguientes expresiones booleanas. Suponga que x, y y z tienen valores numéricos.a. a < 5 || 6 == 6b. 2 < 4 && (false || 5 <= 4 )c. x <= y && ! (z != z) | x > yd. x < y || z < y && y <= z

2. Identifique errores en las siguientes expresiones y asignaciones booleanas.a. boolean hecho; hecho = x = y;b. 2 < 4 && (3 < 5) + 1 == 3c. boolean rápido; rapido = true; rapido == ( 34 == 20 ) && rapido;

Page 18: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Sentencias if anidadas

Las cláusulas then y else de una sentencia if pueden contener cualquier sentencia, incluyendo otra sentencia if.

Una sentencia if que contiene otra sentencia if, bien en el bloque then o bien en el bloque else, se denomina una sentencia if anidada.

Page 19: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Ejemploif (puntuacionPrueba >= 70) { if (edadEstudiante < 10) { cuadroMensaje.show(

"Ha hecho un gran trabajo"); } else { //puntuación prueba >= 70 //y edad >= 10 cuadroMensaje.show("Ha aprobado"); }}else { // puntuación prueba < 70

cuadroMensaje.show("No ha aprobado");}

Page 20: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Otra versiónif (puntuacionPrueba >= 70 && edadEstudiante < 10) { cuadroMensaje.show(

"Ha hecho un gran trabajo");}else { //o bien puntuación prueba < 70 OR // edad >= 10 if (puntuacionPrueba >= 70){ cuadroMensaje.show("Ha aprobado"); } else { cuadroMensaje.show("No ha aprobado"); }}

Page 21: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

if (num1 < 0) if (num2 < 0) if (num3 < 0) contadorNegativo = 3; //los tres son negativos else contadorNegativo = 2; //num1 y num2 son negativos else if (num3 < 0) contadorNegativo = 2; //num1 y num3 son negativos else contadorNegativo = 1; //num1 es negativoelse if (num2 < 0) if (num3 < 0) contadorNegativo =2; // num2 y num3 son negativos else contadorNegativo = 1; // num2 es negativo else if (num3 < 0) contadorNegativo =1; // num3 es negativo else contadorNegativo =0; // no hay números negativos

Page 22: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Otra versión

contadorNegativo = 0;

if (num1 < 0)

contadorNegativo++;

if (num2 < 0)

contadorNegativo++;

if (num3 < 0)

contadorNegativo++ ;

Page 23: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Cálculo de la nota de un estudiante

Prueba puntuación Nota

90 < puntuación A

80 <= puntuación < 90 B

70 <= puntuación < 80 C

60 <= puntuación < 70 D

Page 24: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

if (puntuación >= 90) cuadroMensaje.show("Su nota es A");else if (puntuación >= 80) cuadroMensaje.show("Su nota es B"); else if (puntuación >= 70) cuadroMensaje.show("Su nota es C"); else if (puntuación >= 60) cuadroMensaje.show("Su nota es D"); else cuadroMensaje.show("Su nota es F");

Page 25: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

if (puntuación >= 90) cuadroMensaje.show("Su nota es A");else if (puntuación >= 80) cuadroMensaje.show("Su nota es B");else if (puntuación >= 70) cuadroMensaje.show("Su nota es C");else if (puntuación >= 60) cuadroMensaje.show("Su nota es D");else cuadroMensaje.show("Su nota es F");

Page 26: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

else colgadoif (x < y) if (x < z) cuadroMensaje.show("Hola") ;else cuadroMensaje.show("Adiós") ;

if (x < y) if (x < z) cuadroMensaje.show("Hola") ; else cuadroMensaje.show("Adiós") ;

Page 27: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Solución

if (x < y){ if (x < z) cuadroMensaje.show("Hola") ;}else cuadroMensaje.show("Adiós") ;

Page 28: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Preguntas rápidas1. Rescriba las siguientes sentencias de if anidados sin usar ningún anidamiento:a. if ( a < c ) c. if ( a < b ) if ( b < c ) if ( a >- b ) x = y; x = z; else else x = z; x = y; else else x = z; x = z;b. if ( a -= b ) x = y; else if ( a > b ) x = y; else x = z;

Page 29: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Preguntas rápidas2. Dé formato a las siguientes sentencias if usando sangrado.

a. if(a<b)if(c>d)x = y; else x = z;

b. if(a<b){if(c > d)x = y;}else x = z;

c. if(a<b)x = y;if(a<c)x-z;else if(c<d) z = y;

Page 30: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

ListBoxSe considera una interfaz mejor aquella que permite al usuario introducir solamente valores que son válidos, en lugar de detectar los errores después de que el usuario ha introducido un valor inválido.

Existe un objeto ListBox en el paquete javabook que proporciona una lista de elementos que el usuario puede seleccionar.

MainWindow ventanaPrincipal = new MainWindow( );ListBox colorLista = new ListBox(ventanaPrincipal);

Page 31: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

Si desea especificar su propio título, hay que pasar dicho título como segundo argumento cuando se crea un objeto como en:

colorLista = new ListBox(ventanaPrincipal, "SeleccioneColor“);

Se añaden los nombres de los colores usando el mensaje additem

colorLista.addItem("Magenta");colorLista.addItem("Cyan");colorLista.addItem("Rojo");colorLista.addItem("Azul");colorLista.addItem("Verde");

y se ejecuta

seleccion = colorLista.getSelectedIndex( );

Page 32: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

El método getSelectedIndex devuelve NO_SELECTION si el usuario pulsa el botón OK sin seleccionar una opción y devuelve CANCEL si el usuario pulsa el botón Cancel o la opción cerrar la ventana.

Después de que el método getSelectedIndex devuelve un valor, el objeto ListBox desaparece de la pantalla. NO_SELECTION y CANCEL son constantes públicas de clase de tipo int y se hace referencia a las mismas como:

CuadroLista.NO_SELECTION

CuadroLista.CANCEL

Page 33: Sentencias de selección Curso de Programación. OBJETIVOS Implementar sentencias de control de selección en un programa usando sentencias if. Implementar

El código siguiente muestra el nombre del color seleccionado:

seleccion = colorLista.getSelectedIndex( );

if (seleccion == CuadroLista.NO_SELECTION) cuadroMensaje.show("No ha seleccionada nada");else if (seleccion == CuadroLista.CANCEL) cuadroMensaje.show("Ha cancelado CuadroLista")else if (seleccion == 0) cuadroMensaje.show("Ha seleccionado Magenta");else if (seleccion == 1) cuadroMensaje.show("Ha seleccionado Cyan");else if (seleccion == 2) cuadroMensaje.show("Ha seleccionado Rojo");else if (seleccion == 3) cuadroMensaje.show("Ha seleccionado Azul");else if (seleccion == 4) cuadroMensaje.show("Ha seleccionado Verde");