Sei sulla pagina 1di 15

12/06/2014

Estructuras
Condicionales
Por: Ing Msc. Alberto Medina Villacorta

Varios estados de Java, que


pronto discutiremos
permiten al programador
especificar que la siguiente
instruccin a ejecutar no es
necesariamente el siguiente
en la secuencia, esto se llama
transferencia de control.

Ing. Msc. Alberto M. MEDINA VILLACORTA

Normalmente, las
declaraciones en un
programa se ejecutan una
detrs de otra en el orden
en que estn escritos, este
proceso se denomina
ejecucin secuencial.

Inicio
Accin 1
Accin 2

Accin N
Fin

Para escribir programas


complejos se requiere
formas para controlar el
orden de ejecucin de las
instrucciones.
Esta accin se llama Control
de Flujo, la misma que usa
las llamadas Estructuras de
control de flujo.

12/06/2014

Entre ellas se tiene:


Condicional simple,
Condicional doble,
Condicional mltiple y
Repetitivas, cclicas, lazos o bucles
(Loop).

Representacin en Diagrama N-S


Condicin
Verdadero

Bloque de
Instrucciones

Ing. Msc. Alberto M. MEDINA VILLACORTA

Falso

Representacin en Diagrama de Flujo


Condicin

Falso

Verdadero

Bloque de Instrucciones

Representacin en Pseudocdigo
Inicio
.
.
Si <Condicin> entonces
<Bloque de instrucciones>
Fin si
.
Fin

12/06/2014

Sintaxis en Java
Una sola
sentencia

Varias
sentencias

if (<Condicin>)
<Instruccin>;

if (<Condicin>)
{
<Bloque de instrucciones>;
}

Determina si la condicin de "nota del


estudiante es mayor que o igual a 60" es
verdadera o falsa. Si es true, se imprime
"Aprobado", si la condicin es false, la
sentencia de impresin se pasa por alto.
La sangra de la segunda lnea de esta
instruccin es opcional, se recomienda, ya
que hace hincapi en la estructura inherente
de programas estructurados.

Ing. Msc. Alberto M. MEDINA VILLACORTA

Los programas usan las sentencias de


seleccin para elegir entre los cursos
alternativos de accin. Por ejemplo,
supongamos que la calificacin de aprobado
en un examen es 60 o ms.
La declaracin de pseudocdigo:
Si la nota del estudiante es mayor o igual a 60
Imprimir "Aprobado
FinSi

Diagrama de actividad UML

12/06/2014

Representacin en Diagrama de Flujo


Verdadero

Condicin

Representacin en Diagrama N-S

Falso

Condicin
Verdadero

Bloque de Instrucciones 1

Falso

Bloque de Instrucciones 2

Bloque de
Instrucciones 1

Representacin en Pseudocdigo
Si <Condicin> entonces
<Bloque de instrucciones 1>
Si no
<Bloque de instrucciones 2>
Fin si

15-06-2014

Por: Ing. Msc. Alberto M.


MEDINA VILLACORTA

Ing. Msc. Alberto M. MEDINA VILLACORTA

Bloque de
Instrucciones 2

Sintaxis en Java
Aqu una sola
sentencia

Y aqu otra
sentencia

if (<Condicin>)
<Instruccin 1>;
else
<Instruccin 2>;

Notas:
No es necesario encerrar entre llaves si los
bloques son de una instruccin.
Note el uso del punto y coma, compare con la
otra forma.
15-06-2014

Por: Ing. Msc. Alberto M.


MEDINA VILLACORTA

12/06/2014

Representacin en Lenguaje Java


Aqu varias
sentencias

Aqu
tambin

15-06-2014

if (<Condicin>)
{
<Bloque instrucciones 1>;
}
else
{
<Bloque instrucciones 2>;
}

La declaracin de doble seleccin Si ... Sino


permite al programador especificar una
accin a realizar cuando la condicin es
verdadera y una accin distinta cuando la
condicin es falsa.
La declaracin en pseudocdigo:
Si la nota del estudiante es mayor o igual a 60
Imprimir "Aprobado"
Sino
Imprimir "Desaprobado
FinSi

Por: Ing. Msc. Alberto M.


MEDINA VILLACORTA

Imprime "Aprobado" si la calificacin del


estudiante es mayor o igual a 60.
Imprime "Desaprobado" si la calificacin
del estudiante es menor de 60.
En cualquiera de los casos, se produce la
impresin de un mensaje.

Ing. Msc. Alberto M. MEDINA VILLACORTA

Diagrama de actividad UML

12/06/2014

Java proporciona el operador condicional


(? :) que en ocasiones se puede utilizar en
lugar de una instruccin if ... else.
Este es el nico operador ternario de Java,
esto significa que se requieren tres
operandos.
En conjunto, los operandos ? y : forman una
expresin condicional.

El primer operando (a la izquierda de ?) es


una expresin booleana (es decir, una
condicin)
El segundo operando (entre ? y : ) es el valor
de la expresin condicional si la expresin
booleana es verdadera y el tercer operando
(a la derecha de : ) es el valor de la
expresin condicional si la expresin lgica
se evala como falsa.

Por ejemplo, la declaracin:

Simple
if (n < 5)
cont++;

System.out.println(nota>=60?"Aprobado":"Desaprobado");

Imprime la cadena "Aprobado" si la


expresin booleana nota>=60 es verdadera e
imprime "Desaprobado" si la expresin
lgica es falsa.
Las
instrucciones
con
el
operador
condicional realizan la misma funcin que la
sentencia if ... else.

Ing. Msc. Alberto M. MEDINA VILLACORTA

Doble
if (x < y)
z=x;
else
z=y;

if (edad >= 18) {


System.out.println(Mayor);
System.out.print(Tiene +edad);
}
else
{
System.out.println(Menor);
System.out.print(Tiene +edad);
}

12/06/2014

if ( x > 5 )
if ( y > 5 )
System.out.println( "x e y son > 5" );
else
System.out.println( "x es <= 5" );

Java proporciona la instruccin switch de


seleccin mltiple para llevar a cabo
diferentes acciones sobre la base de los
posibles valores de una variable o expresin
entera.
Cada accin se asocia con un valor integral
constante (es decir, un valor de tipo byte,
short, int o char, pero no long) que la
variable o expresin puede asumir.

Ing. Msc. Alberto M. MEDINA VILLACORTA

If ( notaFinal >= 90 )
System.out.println( "A" );
else if (notaFinal>= 80 )
System.out.println( "B" );
else if (notaFinal>= 70 )
System.out.println( "C" );
else if (notaFinal>= 60 )
System.out.println( "D" );
else
System.out.println( "F" );

Representacin en Diagrama de Flujo


Selector
Caso1

Bloque 1

Caso 2

Bloque 2

Caso N

...

Bloque N

Otro caso

Bloque D

12/06/2014

Sintaxis en Java
Representacin en Pseudocdigo

switch (<Expresin>)
{
case <Constante 1>:<Bloque 1>;
break;
case <Constante 2>:<Bloque 2>;
break;
...
case <Constante N>:<Bloque N>;
break;
default: <Bloque por defecto>;
}

Segn <Selector> Hacer


Caso 1: <Bloque 1>
Caso 2: <Bloque 2>
...
Caso N: <Bloque N>
Si no
<Bloque por defecto>
Fin segn

Diagrama de
actividad UML

Ing. Msc. Alberto M. MEDINA VILLACORTA

<Expresin>: debe ser de uno de los siguientes


tipo: byte, char, short o int
El <Selector> es una expresin que produce un
valor entero, switch compara el resultado de
<Selector> con cada valor entero, si encuentra
un valor que coincida, ejecuta la sentencia
(simple o compuesta) correspondiente.
Si no encuentra ninguna coincidencia, ejecuta
la sentencia default.

12/06/2014

Si la ejecucin llega a una sentencia break la


sentencia switch termina.
Esta sentencia es equivalente a una
sentencia if else anidada.
La sentencia break no es necesaria para el
ltimo caso (o el caso por defecto, cuando
aparece en ltimo lugar), ya que la
ejecucin contina con la siguiente
declaracin despus de switch.

switch (iDiaSemana) {
case 1: sDia= Es lunes; break;
case 2: sDia= Es martes; break;
case 3: sDia= Es mircoles; break;
case 4: sDia= Es jueves; break;
case 5: sDia= Es viernes; break;
case 6: sDia= Es sbado; break;
case 7: sDia= Es domingo; break;
default: sDia= No se que da es!");
}
System.out.print(sDia);

Ing. Msc. Alberto M. MEDINA VILLACORTA

switch (oper) {
case +: x+= y; break;
case -: x-= y; break;
case *: x*= y; break;
case /: x /= y; break;
case i: x++; break;
case r:
case m: System.out.print("No definido"); break;
default: System.out.print(Error!");
}

// Programa que ingresa 3 nmeros enteros e


// imprime el menor de ellos.
import java.util.Scanner;
public class numeroMenor
{
public static void main(String args[ ] )
{
int a, b, c, menor;
Scanner lector = new Scanner(System.in);
System.out.print("Ingrese valor de a: ");
a=lector.nextInt( );
System.out.print("Ingrese valor de b: ");
b=lector.nextInt( );

12/06/2014

System.out.print("Ingrese valor de c: ");


c=lector.nextInt( );
/*Se procede a la comparacin de valores
usando una sentencia if anidada*/
if ( a<=b && a<=c)
menor=a;
else
if (b<=a && b<=c)
menor=b;
else
menor=c;
System.out.println(El menor es: +menor);
}}

if ( a==b)
System.out.println( Son nmeros iguales );
else
if (a>b) {
System.out.println(a+ es mayor que +b);
}
else {
System.out.println(a + es menor que +b);
}
}

Ing. Msc. Alberto M. MEDINA VILLACORTA

// Programa que permite ingresar dos valores


// enteros e imprime la relacin entre ellos.
import java.util.Scanner;
public class relacionNumeros
{
public static void main(String args[ ] )
{
int a, b;
Scanner lector = new Scanner(System.in);
System.out.print("Ingrese valor de A: ");
a=lector.nextInt( );
System.out.print("Ingrese valor de B: ");
b=lector.nextInt( );

// Programa que ingresa los coeficientes de


// una ecuacin de 2do grado e imprime sus
// races si estas existen en los Reales
import java.util.Scanner;
public class ecuacionCuadratica
{
public static void main(String args[ ] )
{
double a, b, c, d, x1, x2;
Scanner lector = new Scanner(System.in);
System.out.print(Dar Coeficiente a:");
a=lector.nextDouble( );

10

12/06/2014

System.out.print(Dar Coeficiente b:");


b=lector.nextDouble ( );
System.out.print(Dar Coeficiente c:");
c=lector.nextDouble ( );
if ( a==0)
System.out.println( a no puede ser cero);
else
{
d=b*b-4*a*c;
}

/*Programa que lee el nmero de pginas de un


libro e imprime su precio que se calcula as: El
precio base es S/. 30, si tiene ms de 50 hojas, el
precio se incrementa en S/. 0.50 por hoja
excedente. Si tiene ms de 100 hojas el precio se
incrementa en 20%.*/
import java.util.Scanner; //Importa clase
public class precioLibro
{
public static void main(String args[ ] )
{

Ing. Msc. Alberto M. MEDINA VILLACORTA

if (d>=0) {
x1=(-b+Math.sqrt(d))/(2*a);
x2=(-b-Math.sqrt(d))/(2*a);
System.out.println( Raz X1= + x1);
System.out.println( Raz X2= + x2);
}
else
System.out.println(Races imaginarias);
}

// Declara variables
int nPag; double precio;
//Objeto para leer datos
Scanner lector = new Scanner(System.in);
//Entrada de datos
System.out.print(Dar N de pginas:");
nPag=lector.nextInt( );
if ( nPag>0)
{
precio=30;
if (nPag>50)
precio=precio + 0.5*(nPag-50);

11

12/06/2014

if (nPag>100)
precio=precio + 0.2*precio;
System.out.print( El precio es: +precio);
}
else
System.out.print(Dato incorrecto);

a=lector.nextInt(
b=lector.nextInt(
c=lector.nextInt(
d=lector.nextInt(
if (a>=b)
may1=a;
else
may1=b;
if (c>=d)
may2=c;
else
may2=d;

// Programa que ingresa cuatro nmeros


// enteros e imprime el mayor de ellos.
import java.util.Scanner;
public class numeroMayor
{
public static void main(String args[ ] )
{
int a, b, c, d;
int mayor, may1, may2;
Scanner lector = new Scanner(System.in);
System.out.print( Ingrese 4 valores enteros: );

);
);
);
);

Ing. Msc. Alberto M. MEDINA VILLACORTA

if (may1>=may2)
mayor=may1;
else
mayor=may2;
System.out.print(El mayor es: +mayor);
}

12

12/06/2014

/* Programa que ingresa una nota e imprime


su calificativo as: de 0 a 5 es psima, de 6
a 10 es deficiente, de 11 a 15 es regular y
de 16 a 20 es excelente. */
import java.util.Scanner;
public class calificaNota
{
public static void main(String args[ ] )
{
int n;
Scanner lector = new Scanner(System.in);

else
if (n>=6)
System.out.print( Es deficiente!!);
else
System.out.print( Nota Psima!!);
}

Ing. Msc. Alberto M. MEDINA VILLACORTA

System.out.print( Ingrese Nota: );


n=lector.nextInt( );
if ( n<0 || n>20)
System.out.print( Nota NO vlida);
else
if (n>=16)
System.out.print( Est excelente!!);
else
if (n>=11)
System.out.print( Est regular!!);
else

/*Programa que lee la clase de un vehculo


(1=Automvil, 2=omnibus, 3=camin) e
imprime tipo de vehculo y peaje a pagar.*/
import java.util.Scanner;
public class costoPeaje
{
public static void main(String args[ ] )
{
int tipo, p;
Scanner lector = new Scanner(System.in);
System.out.print(Indique clase de vehiculo);

13

12/06/2014

tipo=lector.nextInt( );
switch (tipo)
{
case 1:
p=5;
System.out.println(Automvil, peaje= +p);
break;
case 2:
p=10;
System.out.println( Omnibus, peaje= +p);
break;

import java.util.Scanner;
public class calificaNota
{
public static void main(String args[ ] )
{
int nota;
Scanner lector = new Scanner(System.in);
System.out.print( Ingrese Nota: );
nota=lector.nextInt( );
switch (nota)
{
case 1:

Ing. Msc. Alberto M. MEDINA VILLACORTA

case 3:
p=15;
System.out.println( Camin, peaje= +p);
break;
default:
System.out.println( Clase desconocida!!);
}

case 2:
case 3:
case 4:
case 5:
System.out.println( Nota psima); break;
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
System.out.println( Deficiente!); break;

14

12/06/2014

case 12: case 13: case 14: case 15:


case 16:
System.out.print( Regular!);
break;
case 17: case 18: case 19:
case 20:
System.out.print( Excelente);
break;
default:
System.out.print("Fuera de Rango");
}

Hallar el sueldo de un operador, conociendo el


nmero de horas trabajadas por da, el nmero
de das trabajados, su tarifa horaria y su
nmero de hijos. Si el nmero de hijos es ms
de 5 y su sueldo es menor que S/. 1000 se hace
un aumento de 25% y solo de 10% en otro caso.
Si el operador est afiliado a una AFP se le
descuenta el 12% del total y el descuento es de
15% si no lo est. Mostrar el sueldo bruto, la
bonificacin, el descuento por AFP y el sueldo
neto. Debe validar la entrada de los datos en un
rango adecuado y mostrar los resultados con
dos decimales.

En una pollera se venden seis tipos de combos, segn


los precios dados en la siguiente tabla:
Tipo

1/8 Pollo

Costo

S/. 4.50

Pollo
S/. 9.00

Pollo

Un Pollo

1 Pollo

Dos Pollos

S/. 17.0

S/. 32.00

S/. 48.00

S/. 60.00

Hallar el costo total a pagar por un consumo, sabiendo


que los precios NO incluyen IGV, el servicio es en mesa o
delivery, si es en mesa se debe pagar 10% del total por
el servicio y 5% del costo por propinas, en caso
contrario se paga el taxi segn la zona:
A

S/. 5.00

S/. 10.00

S/. 15.00

S/. 20.00

Adems si el usuario paga al contado gana un punto por


cada sol, mientras que si paga con tarjeta de crdito
gana dos puntos por cada sol.
Reportar el monto a pagar, el costo por servicio, la
propina, el costo del taxi y los puntos ganados.

15-06-2014

Ing. Msc. Alberto M. MEDINA VILLACORTA

15

Potrebbero piacerti anche