Logo Studenta

Taller de programacion sesion 05 - Patrick siyo mato

¡Este material tiene más páginas!

Vista previa del material en texto

Taller de programación
Luis Rojas Farro, Mg.
NO VALE REPETIR 
¿ALGO QUE RECUERDES DE LA CLASE ANTERIOR? 
Aprendimos a manejar estructuras condicionales 
Switch – Case 
• Como se termina la sentencia Switch
• En caso de que no se cumpla Switch con ningún valor que ocurre
• En caso de no poner break que ocurre?
Logro: 
Repasaremos lo aprendido en la 
Unidad 1, clase scanner, cadenas, 
condicionales if else, y switch. 
Realizaremos la practica de cierre de 
unidadad
Logro de la sesión: 
Contenido de la sesión
Semana 5:
Desarrollaremos ejercicios de repaso antes de la practica calificada
CLASE SCANNER
El uso de la clase Scanner es una de las mejores maneras de 
ingresar datos por teclado en Java.
Scanner es una clase en el paquete java.util utilizada para obtener 
la entrada de los tipos primitivos como int, double etc. y también 
String. 
Es la forma más fácil de leer datos en un programa Java, aunque 
no es muy eficiente si se quiere un método de entrada para 
escenarios donde el tiempo es una restricción, como en la 
programación competitiva.
En resumen:
•Para crear un objeto de clase Scanner, normalmente pasamos el 
objeto predefinido System.in, que representa el flujo de entrada 
estándar. Podemos pasar un objeto de clase File si queremos leer 
la entrada de un archivo.
•Para leer valores numéricos de un determinado tipo de datos XYZ, 
la función que se utilizará es nextXYZ(). Por ejemplo, para leer un 
valor de tipo short, podemos usar nextShort().
•Para leer cadenas (strings), usamos nextLine().
•Para leer un solo carácter, se usa next().charAt(0). La función 
next()devuelve el siguiente token/palabra en la entrada como 
cadena y la función charAt (0) devuelve el primer carácter de esa 
cadena.
https://www.javadesdecero.es/tipos-datos-java-ejemplos/
CLASE SCANNER
1. leer datos de varios tipos
2.A veces, debemos verificar si el siguiente valor que leemos es 
de cierto tipo o si la entrada ha finalizado (se encontró el 
marcador EOF).
Luego, verificamos si la entrada del Scanner es del tipo que 
queremos con la ayuda de las funciones hasNextXYZ() donde 
XYZ es del tipo que nos interesa. La función devuelve true 
(verdadero) si el scanner tiene un token de ese tipo, de lo 
contrario es false (falso). Por ejemplo, en el siguiente código, 
hemos utilizado hasNextInt(). Para verificar una cadena, usamos 
hasNextLine(). De manera similar, para verificar si hay un solo 
carácter, usamos hasNext().CharAt(0).
ESTRUCTURAS CONDICIONALES EN JAVA (IF, IF ELSE, IF ELSE IF)
El flujo de ejecución en Java es lineal por lo que se va ejecutando línea a línea en el orden en el que se va
leyendo por lo que las sentencias para controlar el flujo de ejecución son la base ya que permiten ejecutar
partes del código en base a condiciones (if, if else, el operador ternario ?: y switch), que se ejecuten un
número determinado de veces o hasta/mientras se cumpla una condición (for, while y do while), romper el
flujo saliendo del código que se está ejecutando (break, continue y return) o si se produce alguna excepción
(try catch finally y throw).
En esta ocasión nos vamos a centrar en las instrucciones condicionales que son las más básicas.
IF EN JAVA
La estructura condicional más simple en Java es el if, se evalúa una condición y en caso de que se cumpla se
ejecuta el contenido entre las llaves {} o en caso de que se omitan se ejecuta el código hasta el primer «;» por
lo tanto si no se usan los {} la condición aplica solo a la siguiente instrucción al if.
if (condicion) 
{ ejecutar(); } 
// Los {} son opcionales 
if (condicion) 
ejecutar(); 
// Y mas compacto 
if (condicion) 
ejecutar();
Por lo tanto el uso de las llaves es opcional cuando dentro de la condición hay 
una sola línea de código, pero puede generar errores si se añade más código 
que se espere que se ejecute bajo la condición si no recordamos que 
tenemos que añadir las llaves en estos casos. Personalmente, prefiero usar 
las llaves y en caso de no utilizarlas pondría el if completo en una única línea 
para que sea más claro que la condición solo aplica a esa línea.
Para que se ejecute el código dentro de un if se debe de cumplir la condición 
que puede ser directamente un boolean o una comprobación que genere uno 
(==,<,<=,>,>=,!=,.equals() o cualquier otra función que 
devuelva true o false pudiendo ser la condición todo lo compleja que 
queramos.
// Si la temperatura es mayor que 25
if (temperatura > 25) {
System.out.println("A la playa!!!");
}
// Si haceSol es vedadero
if (haceSol) {
System.out.println("No te olvides la sombrilla");
}
// Si esta nevando o hace sol
if (nevando || haceSol) {
System.out.println("Que bien");
}
// Si nevando y la temperatura esta entre 20 y 30
if (nevando && (temperatura >= 20 && temperatura <= 30)) 
{
System.out.println("No me lo creo");
}
// Si la temperatura es menor que 0 o mayor que 30 y hace 
sol
if ((temperatura < 0 || temperatura > 30) && haceSol) {
System.out.println("Mejor me quedo en casa");
}
https://programandoointentandolo.com/2014/05/bucles-y-en-java.html
https://programandoointentandolo.com/2014/05/break-y-continue-en-java.html
ESTRUCTURAS CONDICIONALES EN JAVA (IF, IF ELSE, IF ELSE IF)
IF ELSE EN JAVA
Con el if solo podemos hacer que se ejecute un fragmento de código o no pero en el caso de que no se cumpla
la condición no se hace nada (sigue el flujo normal de ejecución) por lo que si queremos que se ejecute otra cosa
cuando no se cumpla la condición solo con el if tenemos que hacer otro con la condición inversa provocando que
se tenga que comprobar la condición 2 veces mientras que si usamos el else solo necesitamos hacer la
comprobación una sola vez.
// Usando solo ifs
if (temperatura > 25) {
System.out.println("A la playa!!!");
}
if (temperatura <= 25) {
System.out.println("Esperando al buen tiempo...");
}
// Usando if con else
// Si la temperatura es mayor que 25 ... y si no ...
if (temperatura > 25) {
System.out.println("A la playa!!!");
} else {
System.out.println("Esperando al buen tiempo...");
}
ESTRUCTURAS CONDICIONALES EN JAVA (IF, IF ELSE, IF ELSE IF)
IF ELSE IF EN JAVA
El siguiente nivel es hacer el else condicional añadiendo un if para que si no se cumple la
primera condición (la del if principal) se evalue esta nueva condición de modo que se puede
concatenar la cantidad de if else que se necesiten para cubrir todos los distintos escenarios
que precisen ser tratados de una forma particular, siendo el ultimo else el que se ejecute
cuando no se cumpla ninguna condición (el else es siempre opcional).
if (temperatura > 25) 
{
// Si la temperatura es mayor que 25 ...
System.out.println("A la playa!!!");
} 
else
if (temperatura > 15) 
{
// si es mayor que 15 y no es mayor que 25 ..
System.out.println("A la montaña!!!");
} 
else
if (temperatura < 5 && nevando) 
{
// si es menor que 5 y esta nevando y no es mayor que 15 ni mayor que 25
System.out.println("A esquiar!!!");
} 
else
{
// si la tempera no es mayor que 25 ni que 15 ni menor que 5 si esta nevando
System.out.println("A descansar... zZz");
}
ESTRUCTURAS CONDICIONALES EN JAVA (IF, IF ELSE, IF ELSE IF)
IF ANIDADOS
Es posible anidar ifs para reorganizar las condiciones o hacerlas más sencillas lo que en muchas ocasiones hace 
el código más fácil de leer, a continuación una de las posibles formas posibles para reescribir el ejemplo anterior.
if (temperatura > 15) 
{
if (temperatura > 25) 
{
// Si la temperatura es mayor que 25 ...
System.out.println("A la playa!!!");
} 
else
{
System.out.println("A la montaña!!!");
}
} 
else
{
if (temperatura < 5) 
{
if (nevando) 
{
System.out.println("A esquiar!!!");
}
} 
else
{
System.out.println("A descansar... zZz");
}
}
ESTRUCTURAS CONDICIONALES EN JAVA (SWITCH - CASE)
Con el switch se puede hacer un control del tipo if else if… más estructurado pero 
en realidad no exactamente igual puesto que con el switch lo que se hace es definir 
un conjuntode casos que van a tener una ejecución distinta y se ejecutará el caso 
que coincida con el valor indicado en el switch.
switch (variable) 
{
case valor_1:
case valor_2:
// Ejecutar si el valor de variable es igual a valor_1 o a valor_2
ejecutarA();
break; // Salir del switch
case valor_3:
// Ejecutar si el valor de variable es igual a valor_3
ejecutarB();
break; // Salir del switch
default:
// Ejecutar si el valor de varible es distinto del del resto de casos
ejecutarC();
break; // Salir del switch
}
ESTRUCTURAS CONDICIONALES EN JAVA (SWITCH - CASE)
Por lo tanto el switch es la mejor opción cuando tenemos un conjunto de valores esperados (if con == o 
.equals()) porque es más legible y más limpio, imagina por ejemplo sacar el nombre del dia de la semana 
a partir de su número, con un if else necesitamos 7 elses… pero es completamente inservible para 
condiciones en las que se hacen comparaciones del tipo < o > por que controlar todos los posibles valores 
puede ser una locura, suponiendo que el rango no esté muy acotado que entonces si sería una opción 
valida.
// Switch con int como condicion
switch (dia) {
case 1:
System.out.println("Domingo");
break;
case 2:
System.out.println("Lunes");
break;
case 3:
System.out.println("Martes");
break;
case 4:
System.out.println("Miercoles");
break;
case 5:
System.out.println("Jueves");
break;
case 6:
System.out.println("Viernes");
break;
case 7:
System.out.println("Sabado");
break;
// default: es opcional
}
tring tipoVehiculo = "coche";
switch (tipoVehiculo) {
case "coche":
System.out.println("Puedes pasar de 00:00 a 08:00");
break;
case "camion":
System.out.println("Puedes pasar de 08:00 a 16:00");
break;
case "moto":
System.out.println("Puedes pasar de 16:00 a 24:00");
break;
default:
System.out.println("No se puede pasar con un " + tipoVehiculo);
break;
}
De los dos ejemplos anteriores podemos sacar que el 
número de casos es variable según las necesidades y 
que el caso por defecto (el que se ejecuta cuando no 
se cumple otro igual que el else de un if) es opcional 
por lo que lo podemos omitir si no se requiere ninguna 
acción especial para ese caso o si simplemente 
sabemos que no existe otra opción como sucede con 
los días de la semana.
ESTRUCTURAS CONDICIONALES EN JAVA (SWITCH - CASE)
Y si se quiere que en varios casos se ejecute la misma lógica no es necesario repetirla una y otra vez para cada 
caso, en su lugar podemos agrupar los casos y eliminar los break intermedios que hacen que se salga del switch. 
Por ejemplo para realizar una acción para los días laborables y otra distinta para los festivos se hace del siguiente 
modo.
switch (dia) {
case 2:
case 3:
case 4:
case 5:
case 6:
System.out.println("Dia laboral");
break;
case 1: 
case 7:
System.out.println("Fin de semana");
break;
default:
System.out.println("La semana solo tiene 7 dias");
break;
}
ESTRUCTURAS CONDICIONALES EN JAVA (SWITCH - CASE)
Y para terminar comentar que cualquier switch se puede hacer usando ifs else porque al fin y al cabo son la base sobre 
la que se sustenta su funcionamiento. Podemos verlo con la conversión del último ejemplo que es el más complejo de 
los switch que hemos visto
Integer diasHastaFinSemana = 0;
switch (dia) {
case 2:
diasHastaFinSemana++;
case 3:
diasHastaFinSemana++;
case 4:
diasHastaFinSemana++;
case 5:
diasHastaFinSemana++;
case 6:
System.out.println("Dia laboral: Dias restantes hasta el fin de semana: " 
+ diasHastaFinSemana);
break;
case 1: 
case 7:
System.out.println("Fin de semana");
break;
default:
System.out.println("La semana solo tiene 7 dias");
break;
}
Integer diasHastaFinSemana = 0;
if (dia > 1 && dia < 7) {
if (dia < 6) {
diasHastaFinSemana++;
if (dia < 5) {
diasHastaFinSemana++;
if (dia < 4) {
diasHastaFinSemana++;
if (dia < 3) {
diasHastaFinSemana++;
}
}
}
} 
System.out.println("Dia laboral: Dias restantes hasta el fin de 
semana: " + diasHastaFinSemana);
} else if (dia == 1 || dia == 7) {
System.out.println("Fin de semana");
} else {
System.out.println("La semana solo tiene 7 dias");
}
Repasamos la Unidad 1
Hicimos la practica calificada
¿SE LOGRÓ LA META DE LA SESIÓN?
Conclusiones
La clase scanner.
Cadenas
Condicionales
Problemas propuestos (algoritmo y código)
• Los Ejercicios se pueden visualizar en canvas
Tarea
REVISAR EL TEMA DE LA SIGUIENTE SESIÓN COLOCADO EN CANVAS
ESTRUCTURA REPETITIVA WHILE
	Diapositiva 1
	Diapositiva 2: no vale repetir ¿algo que recuerdes de la clase anterior? 
	Diapositiva 3
	Diapositiva 4: Clase Scanner
	Diapositiva 5: Clase Scanner
	Diapositiva 6
	Diapositiva 7
	Diapositiva 8
	Diapositiva 9
	Diapositiva 10
	Diapositiva 11
	Diapositiva 12
	Diapositiva 13
	Diapositiva 14: ¿se logró la meta de la sesión?
	Diapositiva 15
	Diapositiva 16
	Diapositiva 17: Revisar el tema de la siguiente sesión colocado en Canvas Estructura REPETITIVA WHILE
	Diapositiva 18

Continuar navegando