1 00:00:07,150 --> 00:00:14,710 en el vídeo anterior hemos estado viendo las estructuras de control en java y hemos 2 00:00:14,710 --> 00:00:24,129 estado estudiando pues las posibles diferencias entre cada una de ellas vamos a ver en esta 3 00:00:24,129 --> 00:00:30,890 ocasión en este vídeo un ejemplo que está adaptado a estas estructuras de control que 4 00:00:30,890 --> 00:00:36,590 Por supuesto no las vamos a ver todas, pero vamos a hacer entender cómo funcionan. 5 00:00:37,369 --> 00:00:42,829 El ejemplo que vamos a poner se puede montar con distintas estructuras de control 6 00:00:42,829 --> 00:00:48,909 y es visión de los alumnos probar un poco cómo funciona cada una de ellas. 7 00:00:50,070 --> 00:00:58,210 El enunciado de este ejercicio es un ejercicio bastante sencillo. 8 00:00:58,210 --> 00:01:01,670 se le va a pedir al usuario un número entre 1 y 7 9 00:01:01,670 --> 00:01:05,989 y este número va a ser validado 10 00:01:05,989 --> 00:01:09,989 la validación obviamente se va a hacer mediante una estructura de control 11 00:01:09,989 --> 00:01:13,890 que va a comprobar que el número introducido va a estar entre 1 y 7 12 00:01:13,890 --> 00:01:17,269 una vez que el número esté validado 13 00:01:17,269 --> 00:01:21,450 este número va a significar 14 00:01:21,450 --> 00:01:25,650 o el significado que va a tener mejor dicho es un día de la semana 15 00:01:25,650 --> 00:01:36,049 siendo 1 el lunes y 7 el domingo. Se van a utilizar dos métodos de decodificación del día de la semana, 16 00:01:36,209 --> 00:01:46,069 de modo que cada uno de estos métodos va a aceptar este número de la semana y va a devolver el nombre del día de la semana. 17 00:01:47,129 --> 00:01:51,310 Vamos a ver la estructura del programa y después hacemos una prueba de ejecución. 18 00:01:51,310 --> 00:02:02,099 Dentro del método principal como vemos tenemos el método main y hemos declarado dos variables 19 00:02:02,099 --> 00:02:06,280 una que va a ser para el día de la semana y otra para el nombre de la semana 20 00:02:06,280 --> 00:02:19,620 El día de la semana como vemos lo que está haciendo el programa principal es hacer una llamada a un método que se llama leer día de la semana 21 00:02:19,620 --> 00:02:28,439 y este método que lo veremos ahora se va a encargar de hacer la validación de que ese día de la semana esté entre 1 y 7. 22 00:02:29,120 --> 00:02:42,180 Una vez que este día de la semana ya sepamos que está entre 1 y 7 vamos a utilizar un algoritmo, perdón, un método de codificación del nombre de la semana 23 00:02:42,180 --> 00:02:49,879 pasándole como parámetro el día que hemos obtenido en el proceso anterior, en el método anterior 24 00:02:49,879 --> 00:02:53,000 y nos devolverá el nombre del día de la semana. 25 00:02:53,900 --> 00:03:02,060 A continuación lo vamos a escribir por pantalla y le vamos a etiquetar como nombre de la semana método 1. 26 00:03:02,240 --> 00:03:09,000 Vamos a hacer lo mismo haciendo uso del método 2 y pasándole el mismo parámetro. 27 00:03:09,000 --> 00:03:15,479 La única salvedad es que los métodos son exactamente iguales 28 00:03:15,479 --> 00:03:19,419 A diferencia que se utilizan distintas estructuras de control 29 00:03:19,419 --> 00:03:23,099 En el primer método se utiliza una estructura switch 30 00:03:23,099 --> 00:03:27,879 Que viene siendo una selección o selectiva múltiple 31 00:03:27,879 --> 00:03:31,580 En la segunda se va a utilizar una condicional compuesta 32 00:03:31,580 --> 00:03:35,000 Vamos a ver cada uno de estos métodos 33 00:03:35,000 --> 00:03:38,939 El primer método leer día de la semana 34 00:03:38,939 --> 00:03:42,439 tiene nuestra clase scanner 35 00:03:42,439 --> 00:03:44,860 que nos va a permitir leer el día de la semana 36 00:03:44,860 --> 00:03:47,879 lo interesante de este método es ver el uso 37 00:03:47,879 --> 00:03:51,039 de la estructura repetir, que aquí está marcada 38 00:03:51,039 --> 00:03:53,219 con un do y una condición 39 00:03:53,219 --> 00:03:56,099 para poder salir de este bucle 40 00:03:56,099 --> 00:03:58,659 utilizamos una variable booleana 41 00:03:58,659 --> 00:04:02,159 que ya sabéis que solo puede tener dos posibles valores 42 00:04:02,159 --> 00:04:03,699 verdadero o falso 43 00:04:03,699 --> 00:04:08,360 se le va a pedir dentro del bucle un mensaje 44 00:04:08,360 --> 00:04:22,300 al usuario y este mensaje le va a decir que introduzca un número entre 1 y 7. Si el número de la semana no está entre 1 y 7, no va a entrar por esta condición 45 00:04:22,300 --> 00:04:35,620 que aparece aquí debajo y en ese caso volvería a repetir la petición del dato. Es decir, siempre que no le metamos un número que esté entre 1 y 7 46 00:04:35,620 --> 00:04:39,620 me vuelve a sacar el mensaje y me lo vuelve a pedir, esto lo vamos a ver después 47 00:04:39,620 --> 00:04:43,620 en la ejecución del programa, en caso 48 00:04:43,620 --> 00:04:47,399 de que sí que se cumpla la condición, pues la variable 49 00:04:47,399 --> 00:04:51,560 blnSalir valdrá true y ya no se cumplirá la 50 00:04:51,560 --> 00:04:55,720 condición mientras del bucle repetir, por lo tanto 51 00:04:55,720 --> 00:04:58,519 se saldrá y devolverá el día de la semana 52 00:04:58,519 --> 00:05:03,699 en el siguiente método, asignar 53 00:05:03,699 --> 00:05:06,519 nombre día por el método 1 54 00:05:06,519 --> 00:05:10,220 uno de los detalles importantes es que 55 00:05:10,220 --> 00:05:12,899 tenéis que ver que se le está pasando por parámetro 56 00:05:12,899 --> 00:05:14,920 el número del día de la semana 57 00:05:14,920 --> 00:05:18,819 este número día de la semana es el que habíamos 58 00:05:18,819 --> 00:05:21,480 leído en la primera parte del programa 59 00:05:21,480 --> 00:05:23,000 y está validado 60 00:05:23,000 --> 00:05:26,899 este detalle es importante porque sabemos que cuando 61 00:05:26,899 --> 00:05:30,540 se llega a esta parte del código en un día de la semana 62 00:05:30,540 --> 00:05:32,879 va a tener un valor entre 1 y 7 63 00:05:32,879 --> 00:05:42,230 y no va a poder tener ningún otro valor, si os fijáis aquí está montada la estructura switch 64 00:05:42,230 --> 00:05:49,129 evaluando como variable en un día de la semana, como sabemos que estos valores solo pueden estar entre 1 y 7 65 00:05:49,129 --> 00:05:57,990 en el caso de que valga 1 el nombre del día de la semana será lunes, si vale 2 martes, si vale 3 miércoles 66 00:05:57,990 --> 00:06:01,810 y así sucesivamente. Alguien se fijará en que el último 67 00:06:01,810 --> 00:06:05,949 caso es el 6 porque el nombre del día de la semana es el 68 00:06:05,949 --> 00:06:09,629 sábado. ¿Por qué no hace falta poner el 7? 69 00:06:09,750 --> 00:06:13,990 Porque ya hemos dicho que cuando ejecuta este método en un día de la semana 70 00:06:13,990 --> 00:06:17,870 va a estar entre 1 y 7 y por supuesto si no entra en ninguno 71 00:06:17,870 --> 00:06:21,769 de los anteriores, es decir, si no entra entre el 1 y el 6, la única 72 00:06:21,769 --> 00:06:25,889 opción disponible es que el nombre del día de la semana sea 73 00:06:25,889 --> 00:06:29,949 el domingo, otro detalle importante es 74 00:06:29,949 --> 00:06:33,810 el break que aparece en cada una de las opciones 75 00:06:33,810 --> 00:06:38,050 este break lo que hace es romper la ejecución del bucle 76 00:06:38,050 --> 00:06:41,509 en el caso de que entre dentro de esta 77 00:06:41,509 --> 00:06:45,889 de esta sentencia, bueno he dicho bucle pero 78 00:06:45,889 --> 00:06:50,189 realmente me estaba refiriendo a esta estructura 79 00:06:50,189 --> 00:06:54,069 de control, de este modo si entra por ejemplo 80 00:06:54,069 --> 00:06:57,050 por el caso 2 que sería el martes 81 00:06:57,050 --> 00:06:59,209 asigna el nombre del día de la semana 82 00:06:59,209 --> 00:07:02,769 y al hacer el break ya no puede asignar ningún otro 83 00:07:02,769 --> 00:07:06,269 día de la semana porque se saldría de esta estructura 84 00:07:06,269 --> 00:07:07,069 de control 85 00:07:07,069 --> 00:07:10,449 en el caso de 86 00:07:10,449 --> 00:07:14,410 el método asignar nombre por el día 87 00:07:14,410 --> 00:07:16,589 de la semana 88 00:07:16,589 --> 00:07:20,649 pues también nos aseguramos de que el número 89 00:07:20,649 --> 00:07:23,569 del día de la semana está entre 1 y 7 90 00:07:23,569 --> 00:07:29,350 En este caso fijaos que la estructura está formada mediante IF y SIF 91 00:07:29,350 --> 00:07:35,529 En el caso de que se cumpla la primera condición en la que el número del día de la semana sea 1 92 00:07:35,529 --> 00:07:37,769 El nombre del día de la semana será lunes 93 00:07:37,769 --> 00:07:42,009 En el caso de que sea 2 será martes y así sucesivamente 94 00:07:42,009 --> 00:07:47,670 Evidentemente de todas estas opciones solamente va a entrar por 1 95 00:07:47,670 --> 00:07:50,610 Porque solamente se va a cumplir una de las condiciones 96 00:07:50,610 --> 00:07:54,970 de modo que el nombre del día de la semana solo se va a asignar una vez 97 00:07:54,970 --> 00:07:59,009 también hay que fijarse en la condición ELSE 98 00:07:59,009 --> 00:08:06,269 si os fijáis los comparadores de las condiciones comparan el 1, el 2, el 3, el 4, el 5 y el 6 99 00:08:06,269 --> 00:08:11,230 pero no se compara el 7 y el motivo es igual que en la estructura anterior 100 00:08:11,550 --> 00:08:17,069 si el número de día de la semana sabemos que seguro que cuando entramos aquí va a estar entre 1 y 7 101 00:08:17,069 --> 00:08:21,750 si hemos evaluado del 1 al 6 y no se ha producido ejecución alguna 102 00:08:21,750 --> 00:08:24,290 sabemos que el nombre del día de la semana 103 00:08:24,290 --> 00:08:27,129 sí o sí tiene que ser domingo 104 00:08:27,129 --> 00:08:33,909 bueno, espero que hayáis entendido el flujo del programa 105 00:08:33,909 --> 00:08:36,090 ahora lo vamos a ver en ejecución 106 00:08:36,090 --> 00:08:42,090 aquí tenemos el código del programa 107 00:08:42,090 --> 00:08:45,529 y como veis es exactamente lo que hemos estado viendo 108 00:08:45,529 --> 00:08:48,330 en la presentación 109 00:08:48,330 --> 00:08:51,110 este es el método principal 110 00:08:51,110 --> 00:09:00,509 que tiene las llamadas al día de la semana y las dos formas de ejecución de los métodos uno y dos para obtener el día de la semana. 111 00:09:01,490 --> 00:09:14,649 Aquí tenemos el método leer día de la semana que está exactamente escrito igual y los métodos asignar nombre día método uno y asignar nombre día método dos. 112 00:09:14,649 --> 00:09:21,309 Vamos a ejecutar el programa para ver que esto realmente funciona 113 00:09:21,309 --> 00:09:25,730 Bueno, estamos aquí abajo, no sé si lo podéis ver bien en el vídeo 114 00:09:25,730 --> 00:09:30,590 Pero voy a meter un día que no esté entre 1 y 7 115 00:09:30,590 --> 00:09:32,590 Por ejemplo, vamos a meter el 8 116 00:09:32,590 --> 00:09:38,730 Como el día de la semana no está entre 1 y 7, porque el 8 no está en ese rango 117 00:09:38,730 --> 00:09:42,509 El programa me vuelve a pedir el dato 118 00:09:42,509 --> 00:09:48,289 esto es una validación de números y podemos meter cualquier otro 119 00:09:48,289 --> 00:09:54,190 por ejemplo el 0 y nos va a volver a pedir el número entre 1 y 7 120 00:09:54,190 --> 00:09:57,429 solamente cuando metamos ese número va a funcionar 121 00:09:57,429 --> 00:10:02,769 si le metemos por ejemplo el 5 que correspondería al viernes 122 00:10:02,769 --> 00:10:14,789 pues veis que aquí abajo nos ha devuelto el método 1 y el método 2 el día de la semana viernes 123 00:10:14,789 --> 00:10:20,669 porque evidentemente los dos métodos funcionan exactamente igual 124 00:10:20,669 --> 00:10:28,169 y recordar que la única diferencia es que uno está hecho con selección múltiple 125 00:10:28,169 --> 00:10:30,730 y el otro está hecho con condicional compuesto 126 00:10:30,730 --> 00:10:36,690 si queréis hacemos una nueva ejecución para que veáis que funciona para cualquier día de la semana 127 00:10:36,690 --> 00:10:43,970 vamos a probar por ejemplo con el 7 y nos dice aquí que el nombre de la semana es domingo 128 00:10:43,970 --> 00:10:51,779 con este vídeo pues se termina la explicación de las estructuras de control 129 00:10:51,779 --> 00:10:55,700 y bueno espero que haya quedado claro y lo hayáis entendido bien