You are on page 1of 33

SENTENCIAS DE

SELECCIN
CURSO DE PROGRAMACIN
RECUERDA QUE: UNA CONDICIN EST
FORMADA POR EXPRESIONES LGICAS
Y SOLAMENTE PUEDEN TENER DOS
VALORES: "VERDADERO" Y "FALSO".

OBJETIVOS
Implementar sentencias de control de seleccin en un programa usando
sentencias if.

Implementar controles de seleccin en un programa usando sentencias


switch.

Escribir expresiones booleanas usando operadores relacinales y


booleanos.

Evaluar determinadas expresiones booleanas correctamente.


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

Elegir la sentencia de seleccin de control adecuada para una determinada


Tarea.

Escribir aplicaciones usando las clases CuadroLista de la clase javabook y


la clase Color del paquete estndar java.awt.

FLUJO DE CONTROL
Las sentencias de los programas se ejecutan en secuencia, lo
que se denomina ejecucin secuencial o flujo de contral,
secuencial.
Sin embargo, se pueden aadir 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 captulo se describen algunas sentencias de control
importantes denominadas sentencias de seleccin.
En el siguiente captulo, describiremos otras sentencias de
control denominadas sentencias de repeticin.

LA SENTENCIA IF
Se usa una sentencia if para especificar qu bloque de cdigo se
ejecuta.
Un bloque el cdigo puede contener cero o ms sentencias.
Qu bloque de cdigo se ejecuta depende de resultado de la
evaluacin de una condicin de prueba, denominada expresin
booleana.
Un sentencia if en un programa que tiene el siguiente formato
general:
if (

<expresion booleana> )
<bloque then>

else
<bloque else>

Expresin Booleana
Bloque then
if (puntuacionPrueba < 70)
cuadroMensaje.show("no ha aprobado);
else

Bloque else

cuadroMensaje.show("ha aprobado");

OPERADORES RELACINALES
<

// menor que

<=

// menor que o igual a

==

// igual a

!=

// distinto de

>

// mayor que

>=

// mayor que o igual a

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

DIAGRAMA DE FLUJO
F

puntuacionPrueba < 70

cuadroMensaje.show
(Ha aprobado);

cuadroMensaje.show
(No ha aprobado);

SENTENCIAS COMPUESTAS
Sentencias
compuestas

if (puntuacionPrueba < 70)


{
cuadroMensaje.show(No ha aprobado);
cuadroMensaje.show(Intntelo otra vez);
}
else
{
cuadroMensaje.show(Ha aprobado);
cuadroMensaje.show(Siga trabajando");
}

ESTILO
if (<expresion booleana>) {
else {

Estilo 1

if (<expresion booleana>)
{
}

Estilo 2

else
{
}

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 mltiples 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 despus de la llave
derecha.

IF ABREVIADO
F

puntuacionPrueba>=95

cuadroMensaje.show
(Ud. es excelente);

if (puntuacionPrueba >= 95)


{
cuadroMensaje.show(Ud. es excelente);
}
else {}

PREGUNTAS RPIDAS
1. Identifique las sentencias if invlidas
a. if(a < b) then
x = y;
else
x= z;

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

b. if ( a < b )
else x = y;

d. if ( a < b ) {
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;

EXPRESIONES BOOLEANAS Y
VARIABLES
Tres operadores booleanos son AND, OR y NOT.
En Java, los smbolos &&, ||, y ! representan los operadores
AND, OR y NOT respectivamente.
Operadores booleanos y su significado.
A

A&&B

A||B

!A

V = verdadero, F = falso

EJEMPLOS

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


x/y > z || y==0
evaluacin en corto circuito
y==0 || x/y > z

ERROR FRECUENTE
Un error muy frecuente cuando se escribe un programa es
mezclar los operadores de asignacin y de igualdad.
Frecuentemente cometemos el error de escribir.
if (x = 5) . . .
cuando realmente queramos decir:
if (x == 5) ...

PREGUNTAS RPIDAS
Evale las siguientes expresiones booleanas. Suponga que x, y y z tienen
valores numricos.
a. a < 5 || 6 == 6
b. 2 < 4 && (false || 5 <= 4 )
c. x <= y && ! (z != z)
| x > y
d. 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 == 3
c. boolean rpido;
rapido = true;
rapido == ( 34 == 20 ) && rapido;

SENTENCIAS IF ANIDADAS
Las clusulas 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.
Recuerda que: una sentencia if puede contener otras
sentencias if. Si esto ocurre decimos que tenemos sentencias
if anidadas.

EJEMPLO
if (puntuacionPrueba >= 70) {
if (edadEstudiante < 10) {
cuadroMensaje.show(
"Ha hecho un gran trabajo");
}
else {
//puntuacin prueba >= 70
//y edad >= 10
cuadroMensaje.show("Ha aprobado");
}
}
else { // puntuacin prueba < 70
cuadroMensaje.show("No ha aprobado");
}

OTRA VERSIN
if (puntuacionPrueba >= 70 && edadEstudiante < 10) {
cuadroMensaje.show(
"Ha hecho un gran trabajo");
}
else {
//o bien puntuacin prueba < 70 OR
// edad >= 10
if (puntuacionPrueba >= 70){
cuadroMensaje.show("Ha aprobado");
}
else {
cuadroMensaje.show("No ha aprobado");
}
}

if (num1 < 0)
if (num2 < 0)
if (num3 < 0)
contadorNegativo
else
contadorNegativo
else
if (num3 < 0)
contadorNegativo
else
contadorNegativo
else
if (num2 < 0)
if (num3 < 0)
contadorNegativo
else
contadorNegativo
else
if (num3 < 0)
contadorNegativo
else
contadorNegativo

= 3; //los tres son negativos


= 2; //num1 y num2 son negativos
= 2; //num1 y num3 son negativos
= 1; //num1 es negativo

=2; // num2 y num3 son negativos


= 1; // num2 es negativo
=1; // num3 es negativo
=0; // no hay nmeros negativos

OTRA VERSIN
contadorNegativo = 0;
if (num1 < 0)
contadorNegativo++;
if (num2 < 0)
contadorNegativo++;
if (num3 < 0)
contadorNegativo++ ;

CLCULO DE LA NOTA DE
UN ESTUDIANTE
Prueba puntuacin

Nota

90 < puntuacin

80 <= puntuacin < 90

70 <= puntuacin < 80

60 <= puntuacin < 70

if (puntuacin >= 90)


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

if (puntuacin >= 90)


cuadroMensaje.show("Su nota
else if (puntuacin >= 80)
cuadroMensaje.show("Su nota
else if (puntuacin >= 70)
cuadroMensaje.show("Su nota
else if (puntuacin >= 60)
cuadroMensaje.show("Su nota
else
cuadroMensaje.show("Su nota

es A");
es B");
es C");
es D");
es F");

ELSE COLGADO
if (x < y)
if (x < z)
cuadroMensaje.show("Hola") ;
else
cuadroMensaje.show("Adis") ;
if (x < y)
if (x < z)
cuadroMensaje.show("Hola") ;
else
cuadroMensaje.show("Adis") ;

SOLUCIN
if (x < y){
if (x < z)
cuadroMensaje.show("Hola") ;
}
else
cuadroMensaje.show("Adis") ;

PREGUNTAS RPIDAS
1. Rescriba las siguientes sentencias de if anidados sin usar ningn
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;

PREGUNTAS RPIDAS
2. 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;

LISTBOX
Se considera una interfaz mejor aquella que permite al usuario
introducir solamente valores que son vlidos, en lugar de
detectar los errores despus de que el usuario ha introducido un
valor invlido.
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);

Si desea especificar su propio ttulo, hay que pasar dicho ttulo


como segundo argumento cuando se crea un objeto como en:
colorLista = new ListBox(ventanaPrincipal,
"SeleccioneColor);

Se aaden 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( );

El mtodo getSelectedIndex devuelve


NO_SELECTION si el usuario pulsa el botn OK sin
seleccionar una opcin y devuelve CANCEL si el usuario
pulsa el botn Cancel o la opcin cerrar la ventana.
Despus de que el mtodo getSelectedIndex
devuelve un valor, el objeto ListBox desaparece de la
pantalla. NO_SELECTION y CANCEL son constantes
pblicas de clase de tipo int y se hace referencia a las
mismas como:
CuadroLista.NO_SELECTION
CuadroLista.CANCEL

El cdigo 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");

You might also like