Está en la página 1de 43

UNIVERSIDAD DE SANTIAGO DE CHILE

FACULTAD DE INGENIERA Fundamentos de Computacin y Programacin (10111-1)

Unidad 2: Fundamentos de programacin

SENTENCIAS DE DECISIN

Objetivos
Aprendizajes esperados:
Explicar la finalidad de una sentencia de decisin. Conocer la sintaxis de las sentencias de decisin. Elaborar algoritmos utilizando las sentencia de decisin. Elaborar algoritmos utilizando anidacin de sentencia de decisin.

Sentencias de Decisin

Sentencias de Decisin
Sentencia que permite controlar la ejecucin de un programa, cuando se requiere que se cumplan ciertas condiciones para la realizacin de ciertas instrucciones.

if if else switch

Sentencias de Decisin: if

SINTXIS EN JAVA

if (condicin_es_verdadera) {
Conjunto de instrucciones caso VERDADERO }

Si condicin se cumple, se ejecutan las sentencias del bloque. Note que la condicin debe entregar SIEMPRE un booleano.
5

Sentencias de Decisin: if
EJEMPLO EN JAVA
import java.util.Scanner;
class Ejemplo1 { public static void main(String args[]) { int edad; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese su edad: "); edad = FlujoDatos.nextInt(); if (edad >= 100) { System.out.println("Ud. es una persona longeva."); } } }

Sentencias de Decisin: if
Establecer un dilogo que solicite las 3 notas y, calcular la nota final de un alumno. Deber mostrar el mensaje si aprob la asignatura y con qu nota:
import java.util.Scanner; class Ejemplo2 { public static void main(String args[]) { double nota1, nota2, nota3, notaFinal; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese nota 1: "); nota1 = FlujoDatos.nextDouble(); System.out.print("Ingrese nota 2: "); nota2 = FlujoDatos.nextDouble(); System.out.print("Ingrese nota 3: "); nota3 = FlujoDatos.nextDouble(); notaFinal = (nota1 + nota2 + nota3)/3; if (notaFinal >= 3.95) { System.out.println("Ud. ha aprobado con nota: " + notaFinal); } } } 7

Sentencias de Decisin: if - else

SINTXIS EN JAVA

if (condicin_es_verdadera) {
Conjunto de instrucciones caso VERDADERO } else { Conjunto de instrucciones caso FALSO }

Si condicin se cumple, se ejecutan las sentencias del bloque VERDADERO. Si condicin NO se cumple, se ejecutan las sentencias del bloque else.
8

Sentencias de Decisin: if - else


EJEMPLO EN JAVA
import java.util.Scanner;
class Ejemplo3 { public static void main(String args[]) { int edad; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese su edad: "); edad = FlujoDatos.nextInt(); if (edad >= 100) { System.out.println("Es una persona longeva."); } else { System.out.println("Es una persona joven."); } } }
9

Sentencias de Decisin: Ejercicio 1


Establecer un dilogo Hombre Computador, donde solicite el ingreso de UN valor y, como resultado deber mostrar Un mensaje indicando si el valor ingresado es positivo o negativo.
Qu se pide? Datos? Frmula o regla?

Dilogo:

Valor: El 45 es positivo.

escribir un valor: 45
10

Sentencias de Decisin: Ejercicio 1


RESPUESTA EN JAVA: (Por qu se escogi double para el nmero?)
import java.util.Scanner;
class Ejercicio1 { public static void main(String args[]) { double numero;

Scanner FlujoDatos = new Scanner(System.in);


System.out.print("Ingrese su nmero: "); numero = FlujoDatos.nextDouble(); if (numero >= 0) { System.out.println("El valor ingresado es positivo."); } else { System.out.println("El valor ingresado es negativo."); } }

11

Sentencias de Decisin: Ejercicio 2


Establecer un dilogo Hombre Computador, donde solicite el ingreso de dos valores y, como resultado deber mostrar el mayor de los dos valores:
Qu se pide? Datos? Frmula o regla?

Dilogo:

Valor 1: Valor 2:

escribir un valor: 45 escribir un valor: 32


12

El mayor de los valores es: 45

Sentencias de Decisin: Ejercicio 2


RESPUESTA EN JAVA: (Por qu se escogi double para el nmero?)
import java.util.Scanner; class Ejercicio2 { public static void main(String args[]) {

double numero1, numero2; Scanner FlujoDatos = new Scanner(System.in);


System.out.print("Ingrese un nmero: "); numero1 = FlujoDatos.nextDouble(); System.out.print("Ingrese otro nmero: "); numero2 = FlujoDatos.nextDouble(); if (numero1 > numero2) { System.out.println("El mayor numero ingresado es: " + numero1); } else { System.out.println("El mayor numero ingresado es: " + numero2); } } }
13

Sentencias de Decisin: Ejercicio 3


Establecer un dilogo Hombre Computador, donde solicite ingresar la edad y determinar si es un adulto mayor. Persona de ms de 60 aos.
Qu se pide? Datos? Frmula o regla?

Dilogo:

Edad:

escribir un valor: 78
14

Ud. es un Adulto Mayor

Sentencias de Decisin: Ejercicio 3


RESPUESTA EN JAVA: (Por qu se usa slo if, y no if else?)
import java.util.Scanner; class Ejercicio3 { public static void main(String args[]) { double edad; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese su edad: "); edad = FlujoDatos.nextDouble(); if (edad > 60) { System.out.println("Ud. es un adulto mayor."); } } }

15

Sentencias de Decisin: Ejercicio 4


Establecer un dilogo Hombre Computador, donde solicite ingresar un monto correspondiente a dinero y emita un mensaje indicando si puede comprar un almuerzo ($4.200) o sndwich ($2.750) no ambos-, dependiendo del dinero que tiene el cliente. Adems deber indicar el dinero restante, correspondiente al vuelto.
Qu se pide? Datos? Frmula o regla?
Dilogo:

Monto:

escribir un valor: 10000


16

Puede comprar un almuerzo de $4200 y su vuelto es: $5800

Sentencias de Decisin: Ejercicio 4


RESPUESTA EN JAVA:
import java.util.Scanner; class Ejercicio4 { public static void main(String args[]) { int dinero, vuelto; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese cantidad de dinero: "); dinero = FlujoDatos.nextInt();

if (dinero >= 4200) { System.out.println("Ud. puede comprar un almuerzo."); vuelto = dinero - 4200; System.out.println("Su vuelto ser de: " + vuelto); } else { if (dinero >= 2750) { System.out.println("Ud. puede comprar un sandwich."); vuelto = dinero - 2750; System.out.println("Su vuelto ser de: " + vuelto); } }
} }

17

Sentencias de Decisin: Ejercicio 5


Establecer un dilogo Hombre Computador, donde solicite ingresar las 3 notas de las PEP de un alumno y despliegue el promedio y el mensaje de aprobacin o reprobacin. Las notas tienen las siguientes ponderaciones: 25%, 35% y 40% Qu se pide? Datos? Frmula o regla?
Dilogo:

Nota 1: Nota 2: Nota 3: Su promedio es: 5.5

escribir un valor: 4.5 escribir un valor: 6.2 escribir un valor: 5,8 y ha aprobado la asignatura
18

Sentencias de Decisin: Ejercicio 5


RESPUESTA EN JAVA: versin 1 import java.util.Scanner; class Ejercicio5_1 { public static void main(String args[]) { double PEP1, PEP2, PEP3, notaFinal; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese nota 1: "); PEP1 = FlujoDatos.nextDouble(); System.out.print("Ingrese nota 2: "); PEP2 = FlujoDatos.nextDouble(); System.out.print("Ingrese nota 3: "); PEP3 = FlujoDatos.nextDouble(); notaFinal = PEP1*0.25 + PEP2*0.35 + PEP3*0.4; if (notaFinal >= 3.95) { System.out.print("Su promedio es: " + notaFinal + ", y ha aprobado la asignat."); } else { System.out.print("Su promedio es: " + notaFinal + ", y ha reprobado la asignat."); } } }

19

Sentencias de Decisin: Ejercicio 5


RESPUESTA EN JAVA: versin 2 import java.util.Scanner; class Ejercicio5_2 { public static void main(String args[]) { double PEP1, PEP2, PEP3, notaFinal; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese nota 1: "); PEP1 = FlujoDatos.nextDouble(); System.out.print("Ingrese nota 2: "); PEP2 = FlujoDatos.nextDouble(); System.out.print("Ingrese nota 3: "); PEP3 = FlujoDatos.nextDouble(); notaFinal = PEP1*0.25 + PEP2*0.35 + PEP3*0.4; if (notaFinal >= 3.95) { System.out.format("Su promedio es: %.1f, y ha aprobado la asignat.", notaFinal); } else { System.out.format("Su promedio es: %.1f, y ha reprobado la asignat.", notaFinal); } } }

20

Sentencias de Decisin: Ejercicio 5


RESPUESTA EN JAVA: versin 3 import java.util.Scanner; class Ejercicio5_3 { public static void main(String args[]) { double PEP1, PEP2, PEP3, notaFinal; String mensaje; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese nota 1: "); PEP1 = FlujoDatos.nextDouble(); System.out.print("Ingrese nota 2: "); PEP2 = FlujoDatos.nextDouble(); System.out.print("Ingrese nota 3: "); PEP3 = FlujoDatos.nextDouble(); notaFinal = PEP1*0.25 + PEP2*0.35 + PEP3*0.4; if (notaFinal >= 3.95) { mensaje = "aprobado"; } else { mensaje = "reprobado"; } System.out.format("Su promedio es %.1f, y ha %s la asignatura.", notaFinal, mensaje); }

21

Sentencias de Decisin: Ejercicio 6


Mostrar un mensaje: CARA o sello. Generar un nmero aleatorio y si ste es inferior a 0,5 corresponder a CARA, En caso contrario ser SELLO.
Qu se pide? Datos? Frmula o regla?

Dilogo:

Simulando tirar una moneda SELLO


22

Sentencias de Decisin: Ejercicio 6


RESPUESTA EN JAVA:

(Math.random() entrega un double entre 0 y 1, aleatoriamente)


class Ejercicio6 { public static void main(String args[]) {

double moneda;
moneda = Math.random(); if (moneda < 0.5) { System.out.print("Ha salido CARA."); } else { System.out.print("Ha salido SELLO."); } } }
23

Sentencias de Decisin: Ejercicio 7


Calcular el sueldo de un empleado, mostrando su nombre y sueldo a pagar. Los datos con los que se cuenta son: nombre, nmero de horas trabajadas, valor hora. Si el empleado trabaj ms de 40 horas, el excedente que se paga es el 50% ms que la hora normal. Qu se pide? Datos? Frmula o regla?

Dilogo:

Nombre: Horas: Valor hr: Sueldo: $

escribir un valor: Juan escribir un valor: 35 escribir un valor: 9200 . No trabaj horas extras.
24

Sentencias de Decisin: Ejercicio 7


RESPUESTA EN JAVA: versin 1 import java.util.Scanner; class Ejercicio7_v1 { public static void main(String args[]) { String nombre; double numeroHorasTrabajadas, valorHora, sueldo; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese nombre del trabajador: "); nombre = FlujoDatos.next(); System.out.print("Ingrese numero de horas trabajadas por " + nombre + ": "); numeroHorasTrabajadas = FlujoDatos.nextDouble(); System.out.print("Ingrese el valor por hora trabajada: "); valorHora = FlujoDatos.nextDouble(); if (numeroHorasTrabajadas > 40) { sueldo = numeroHorasTrabajadas * valorHora * 1.5; System.out.print("El sueldo de " + nombre + ", es de: " + sueldo + ". Si trabajo hrs. extras."); } else { sueldo = numeroHorasTrabajadas * valorHora; System.out.print("El sueldo de " + nombre + ", es de: " + sueldo + ". No trabajo hrs. extras."); }

Sentencias de Decisin: Ejercicio 7


RESPUESTA EN JAVA: versin 2 import java.util.Scanner; class Ejercicio7_v2 { public static void main(String args[]) { String nombre; double numeroHorasTrabajadas, valorHora, sueldo; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese nombre del trabajador: "); nombre = FlujoDatos.next(); System.out.print("Ingrese numero de horas trabajadas por " + nombre + ": "); numeroHorasTrabajadas = FlujoDatos.nextDouble(); System.out.print("Ingrese el valor por hora trabajada: "); valorHora = FlujoDatos.nextDouble(); if (numeroHorasTrabajadas > 40) { sueldo = numeroHorasTrabajadas * valorHora * 1.5; System.out.format("El sueldo de %s, es de: $%.0f. Si trabajo horas extras.", nombre, sueldo); } else { sueldo = numeroHorasTrabajadas * valorHora; System.out.format("El sueldo de %s, es de: $%.0f. No trabajo horas extras.", nombre, sueldo); }

Sentencias de Decisin: Ejercicio 7


RESPUESTA EN JAVA: versin 3 import java.util.Scanner; class Ejercicio7_v3 { public static void main(String args[]) { String nombre, trabajoHorasExtras; double numeroHorasTrabajadas, valorHora, sueldo; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese nombre del trabajador: "); nombre = FlujoDatos.next(); System.out.print("Ingrese numero de horas trabajadas por " + nombre + ": "); numeroHorasTrabajadas = FlujoDatos.nextDouble(); System.out.print("Ingrese el valor por hora trabajada: "); valorHora = FlujoDatos.nextDouble(); if (numeroHorasTrabajadas > 40) { valorHora = 1.5 * valorHora; trabajoHorasExtras = "Si"; } else { trabajoHorasExtras = "No"; } sueldo = numeroHorasTrabajadas * valorHora; System.out.format("El sueldo de %s es de: $%.0f. %s trabajo horas extras. ", nombre, sueldo, trabajoHorasExtras); }

Sentencias de Decisin: Anidamiento


Cuando se debe evaluar varias condiciones, se pueden anidar sentencias de decisin (escribir if/if-else en las instrucciones de otros if/if-else). El uso de { } permite dar ms claridad al cdigo, as como el uso de indentacin.

28

Sentencias de Decisin: Anidamiento


(Ejemplo 4) Determinar si un vehculo va:
Muy lento: <50 km/hr A exceso de velocidad: >100 km/hr Prudente: 50 <= velocidad <= 100

29

Sentencias de Decisin: Anidamiento


RESPUESTA EN JAVA:
import java.util.Scanner; class Ejemplo4 { public static void main(String args[]) { double velocidad; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese la velocidad: "); velocidad = FlujoDatos.nextDouble(); if (velocidad < 50) { System.out.println("Va muy lento."); } else { if (velocidad <= 100) { System.out.println("Va prudente."); } else { System.out.println("Va a exceso de velocidad."); } } } } 30

Sentencias de Decisin: Anidamiento


(Ejemplo 5) Determinar si un alumno est:
Eximido: nota >=5,5 Reprobado: nota < 3,0 A examen: 3,0 <= nota < 5,5

31

Sentencias de Decisin: Anidamiento


RESPUESTA EN JAVA:
import java.util.Scanner; class Ejemplo5 { public static void main(String args[]) { double nota; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese la nota: "); nota = FlujoDatos.nextDouble(); if (nota < 3) { System.out.println("El alumno esta REPROBADO."); } else { if (nota < 5.5) { System.out.println("El alumno debe rendir EXAMEN."); } else { System.out.println("El alumno esta APROBADO."); } } } } 32

Sentencias de Decisin: Anidamiento


(Ejemplo 6) Dado 3 valores, imprimir el mayor de ellos.

33

Sentencias de Decisin: Anidamiento


RESPUESTA EN JAVA:
import java.util.Scanner; class Ejemplo6 { public static void main(String args[]) { double valor1, valor2, valor3; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese valor 1: "); valor1 = FlujoDatos.nextDouble(); System.out.print("Ingrese valor 2: "); valor2 = FlujoDatos.nextDouble(); System.out.print("Ingrese valor 3: "); valor3 = FlujoDatos.nextDouble(); if (valor1 > valor2 && valor1 > valor3) { System.out.println("El mayor valor es: " + valor1); } else { if (valor2 > valor1 && valor2 > valor3) { System.out.println("El mayor valor es: " + valor2); } else { System.out.println("El mayor valor es: " + valor3); } } }

34

Sentencias de Decisin: Seleccin Mltiple


Switch Sentencia que permite representar varias selecciones en una instruccin. Durante la ejecucin, busca el valor contenido en una variable, dentro de una lista de constantes de tipo int, char o String.

35

Sentencias de Decisin: Seleccin Mltiple


Elementos:
switch ( variable) case valor: break; default:

(ver Ejemplo 7)

36

EJERCICIOS PROPUESTOS

37

Ejercicio 1
Escriba un programa que, a travs de un dilogo, permita ingresar un nmero entero positivo de hasta tres cifras y muestre un mensaje indicando si tiene 1, 2, o 3 cifras. Mostrar un mensaje de error si el nmero de cifras es mayor.
Qu se pide? Datos? Frmula o regla?

38

Ejercicio 1
RESPUESTA EN JAVA: import java.util.Scanner;

class EjercicioPropuesto1 { public static void main(String args[]) {


int numero; Scanner FlujoDatos = new Scanner(System.in); System.out.print("Ingrese un numero entero positivo: "); numero = FlujoDatos.nextInt(); if (numero>=0 && numero<10) { System.out.print("El numero posee UNA cifra."); } else { if (numero>=10 && numero<100) { System.out.print("El numero posee DOS cifras."); } else { if (numero>=100 && numero<1000) { System.out.print("El numero posee TRES cifras."); } else { System.out.print("ERROR: El numero posee ms de TRES cifras."); } } } } }

39

Ejercicio 2
Escriba un programa que, despliegue el siguiente men de opciones: MEN 1. Conversin de pesos a dlares 2. Conversin de libras a kilogramos 3. Conversin de kilmetros a millas Seleccione una opcin: ____ Y luego solicite los datos necesarios y realice el clculo correspondiente:
Qu se pide? Datos? Frmula o regla?
40

Ejercicio 2
RESPUESTA EN JAVA:

import java.util.Scanner; class EjercicioPropuesto2 { public static void main(String args[]) { int opcion; double pesos, dolares, libras, kilos, kms, millas; System.out.println(" MENU"); System.out.println("1. Conversin de pesos a dlares."); System.out.println("2. Conversin de libras a kilogramos."); System.out.println("3. Conversin de kilmetros a millas."); System.out.print("\nIngrese una opcin: "); Scanner FlujoDatos = new Scanner(System.in); opcion = FlujoDatos.nextInt(); switch (opcion) { case 1: System.out.print("\nIngrese la cantidad de pesos: "); pesos = FlujoDatos.nextDouble(); dolares = pesos * 476.15; System.out.format("$ %.0f, corresponden a U$ %.2f dlares.", pesos, dolares); break;

41

Ejercicio 2
RESPUESTA EN JAVA (continuacin): case 2: System.out.print("\nIngrese la cantidad de libras: "); libras = FlujoDatos.nextDouble(); kilos = libras * 0.453592; System.out.format("%.1f libras, corresponden a %.2f kilogramos.", libras, kilos); break; case 3: System.out.print("\nIngrese la cantidad de kilometros: "); kms = FlujoDatos.nextDouble(); millas = kms * 0.621371; System.out.format("%.1f kilometros, corresponden a %.2f millas.", kms, millas); break; default: System.out.format("La opcin %d, no es valida. Slo 1, 2 3.\nVuelva a intentar.", opcion); } } }

42

UNIVERSIDAD DE SANTIAGO DE CHILE


FACULTAD DE INGENIERA Fundamentos de Computacin y Programacin (10111-1)

Unidad 2: Fundamentos de programacin

SENTENCIAS DE DECISIN

También podría gustarte