Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Clase 9-10-23 - 3 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 10 de octubre de 2023 por Raquel G.

5 visualizaciones

Descargar la transcripción

Vale, pues venga, vamos a meter los dos que resolvamos aquí en un proyecto aparte, ejercicios resueltos, sentencia selectiva, para cuando lo subamos al aula virtual. 00:00:01
Resueltos, sentencia if, vale. 00:00:18
Vale, pues venga, vamos a ver con este primero. 00:00:34
vale, pues venga, este mismo 00:00:37
este es un ejemplo 00:01:16
de como un programa 00:01:19
se puede hacer de mil maneras distintas 00:01:21
¿vale? como seguramente 00:01:23
cada uno lo haya resuelto 00:01:25
entonces lo primero es entender 00:01:26
exactamente que es lo que pide 00:01:29
da dos números 00:01:30
si uno es múltiplo de otro 00:01:32
todos tenemos que tener claro lo que significa que un número 00:01:34
sea múltiplo de otro 00:01:37
un número es múltiplo de otro 00:01:38
si el resto de su división entera es cero 00:01:40
¿vale? 00:01:43
Vale, pues entonces 00:01:43
¿6 es múltiplo de 3? 00:01:46
Sí, ¿no? 00:01:50
Vale 00:01:51
¿Cuál es el resto de dividir 6 entre 3? 00:01:52
¿Y cuál es el resto de dividir 3 entre 6? 00:01:57
¿Eh? 00:02:02
¿El resto de dividir 3 entre 6? 00:02:04
A ver 00:02:13
Lo que quiero decir es que un problema 00:02:13
Hay que contemplar todas las posibilidades 00:02:15
Porque hay algunas que no son triviales 00:02:17
cuando el número que hace de dividendo es mayor que el de divisor, 00:02:19
todos tenemos claro lo que es el cociente y el resto. 00:02:24
Todos sabemos dividir 9 entre 3. 00:02:26
Cociente 3, resto 0. 00:02:28
Todos sabemos dividir 9 entre 4. 00:02:31
Cociente 2, resto 1. 00:02:32
Pero esto es un problema en el cual no necesariamente 00:02:35
tiene por qué ser el primero mayor que el segundo. 00:02:37
¿Vale? 00:02:40
Entonces, tenemos que entender bien todas las situaciones que se pueden dar. 00:02:42
Por ejemplo, por eso digo, resto de dividir, 3 entre 6. 00:02:45
Volviendo a decir, cociente, ¿cuánto sería? 00:02:51
El cociente de dividir, 3 entre 6. 00:02:55
Cociente, 0. 00:02:58
Resto, 3. 00:03:01
Recordad que siempre tiene que cumplir la regla de la división. 00:03:04
Que la regla de la división es dividiendo igual a divisor por cociente más resto. 00:03:08
Pues efectivamente 3 entre 6 00:03:11
Resto 3, cociente 0 00:03:14
3 es igual a 0 00:03:17
Que es el cociente por 6 00:03:19
Más 3 que es el resto 00:03:21
¿Vale? 00:03:22
Entonces, una vez que tenemos entendida 00:03:25
Andrés 00:03:27
Silencio, le hablas luego 00:03:28
Si yo oigo hablar mientras hablo 00:03:34
No me despisto 00:03:36
Entonces silencio 00:03:38
¿Vale? 00:03:40
Entonces primero hay que entender bien 00:03:41
todas las casuísticas 00:03:43
y ramificaciones del problema en el que estamos 00:03:45
¿vale? para poder atacarlo bien 00:03:47
bueno, pues aquí 00:03:49
el resto, la división entera no era tan trivial 00:03:50
si yo divido un número 00:03:53
más pequeño entre otro, tengo que entender 00:03:55
bien cómo funciona esa división entera 00:03:57
¿vale? la entendemos, ¿no? 00:03:58
si dividimos 00:04:02
4 entre 9 00:04:05
¿cuál sería el cociente? 00:04:06
0, resto 00:04:12
4, ¿vale? 00:04:13
vale, bueno, pues entonces ahora ya que tenemos entendido 00:04:15
el problema matemático 00:04:18
ahora me dicen, te damos dos números 00:04:20
y tienes que decirme si alguno 00:04:22
es múltiplo del otro, bueno, pues ahí 00:04:24
ya se nos abre un mundo de probabilidades para programar 00:04:26
esto, que es una tontería 00:04:28
pero tenemos mil formas de programarlo 00:04:30
entonces, como lo que tenemos es que leer 00:04:31
por teclado, pues yo ya directamente 00:04:34
me copio y pego 00:04:36
esto de aquí 00:04:38
y ahora ya le digo 00:04:38
introduzca 00:04:44
Número 1 00:04:50
Bueno, primer número 00:04:52
Porque el número 1 podría ser un poco confuso 00:04:53
Y ahora ese primer número 00:04:55
Lo voy a guardar en N1 00:05:00
Un nombre variable un poco feo 00:05:01
Pero bueno, es un programa cortito 00:05:03
Vale, y ahora de nuevo 00:05:05
El programa tiene dos posibilidades 00:05:26
El programa 00:05:28
O bien me hace un system out 00:05:29
Que dice si uno es múltiplo del otro 00:05:31
O me hace un system out 00:05:33
Que me dice no, no son múltiplos 00:05:36
entonces mi programa en realidad tiene dos ramas posibles 00:05:38
esta rama 00:05:41
si uno es múltiplo del otro 00:05:44
o esta otra rama 00:05:53
o hace una cosa o hace la otra 00:05:59
son dos posibles ramas las que tiene 00:06:00
ninguno es múltiplo del otro 00:06:03
entonces me va a hacer una cosa o me va a hacer otra 00:06:15
en función de una condición 00:06:18
y esa condición 00:06:20
¿cuál sería? 00:06:22
pues ahora es cuando tenemos que empezar a pensarla en Java 00:06:23
entonces, que uno sea múltiplo del otro 00:06:25
es el or de dos cosas 00:06:30
o el primero es múltiplo del segundo 00:06:33
o el segundo es múltiplo del primero 00:06:35
¿verdad? 00:06:38
entonces ya automáticamente ya 00:06:39
lo desgloso en que es el or de dos cosas 00:06:41
para que uno sea múltiplo del otro 00:06:43
o bien es el primero del segundo 00:06:45
o bien es el segundo del primero 00:06:47
vale, pues mi condición ya es un or 00:06:49
si ocurre esto o ocurre esto otro 00:06:51
ya está, y ahora cada una de las cláusulas pequeñitas 00:06:54
ya las tengo que ver, ¿cómo programo que el primero sea múltiplo del segundo? 00:06:59
pues un número es múltiplo de otro si el resto de su división es 0 00:07:03
eso ya es Java, porque ya sabemos programar el operador resto 00:07:06
y ya sabemos programar ser igual a, entonces ya lo tenemos todo 00:07:10
entonces, la rama 1 00:07:14
va a ser si se cumple esa condición que vamos a poner ahí 00:07:18
Y la rama 2 es la del no, el else 00:07:21
¿Vale? Entonces estas dos ramas tienen que ir en un if 00:07:28
Porque se hace o una cosa o se hace la otra 00:07:37
Aquí estoy abriendo por el rombo 00:07:40
Se hace una o se hace la otra 00:07:42
¿En qué caso se hace una y en qué caso se hace la otra? 00:07:43
Ya lo hemos dicho, que esto es 00:07:46
Uno es múltiplo de otro 00:07:47
Si ocurre o una cosa o la otra 00:07:50
Luego será un or 00:07:53
Y ahora una cosa cual será 00:07:54
Que el resto de dividir 00:07:56
N1 entre N2 00:07:57
sea igual a 0 00:08:00
o que el resto de dividir 00:08:02
n2 entre n1 00:08:05
sea igual a 0 00:08:06
¿vale? 00:08:08
si esta condición se cumple 00:08:10
me voy por aquí 00:08:12
y si no se cumple 00:08:14
me voy por este otro lado 00:08:16
aquí ya el programa continuaría 00:08:17
continuaría 00:08:20
me da igual haber entrado por la rama 1 00:08:22
que por la rama 2 00:08:24
por cualquiera de las dos ramas voy a parar ahí 00:08:25
¿Y que el programa sigue haciendo cosas? Pues bueno, la seguirá haciendo. Por ejemplo, mostrar un mensaje, lo que sea. ¿Vale? Y esta es una sentencia selectiva que va a continuación de esta otra y a continuación de esta va a la siguiente. 00:08:28
Y dentro de esta sentencia selectiva ha habido dos posibilidades, dos ramas. La del sí y la del no. ¿Vale? Entonces, uno, ¿he escrito algo mal? Dime. 00:08:46
¿Perdona? A ver, he puesto dos barras porque es lo más óptimo computacionalmente, porque las dos barras implica que si con esta ya tienes el resultado de la evaluación total, no te metas en la otra. 00:09:00
Y cuando esto sea verdad, cuando esto sea verdad, el agregado con el OR ya es verdad, entonces no te hace falta evaluar la otra, la máquina virtual no le hace falta. 00:09:22
entonces siempre por defecto 00:09:29
ponemos el doble barrita o el doble and 00:09:32
porque es el óptimo computacionalmente 00:09:34
si con esto 00:09:36
ya tienes 00:09:38
el resultado de todo el boolean 00:09:40
no te metes a evaluar 00:09:42
lo otro 00:09:44
recordad los matices que hemos repetido mil veces 00:09:45
si en esta sentencia 00:09:48
hiciéramos algo entonces ya no 00:09:50
imagínate que yo quiero dejar n1 incrementado 00:09:52
si o si 00:09:54
lo quiero dejar incrementado 00:09:56
Pues entonces, aquí la diferencia es muy grande 00:09:57
Entre poner la doble barra y la 1 00:10:01
Pero sobre esto ya hemos contado un rollo muy largo 00:10:02
Mil veces 00:10:04
Y está en las grabaciones 00:10:05
Vale 00:10:07
Entonces 1, pues 00:10:11
Probaría esto 00:10:13
Con todos los casos de prueba posibles 00:10:16
¿Casos de prueba? 00:10:18
Pues que el primero sea múltiplo del segundo 00:10:20
A ver si me lo saca 00:10:22
Otro caso de prueba 00:10:23
Que el segundo sea múltiplo del primero 00:10:25
A ver si me lo saca 00:10:28
Otro caso de prueba 00:10:29
Que ninguno sea múltiplo de ninguno 00:10:31
Me lo saca 00:10:33
Otros casos de prueba 00:10:36
Números negativos 00:10:37
Pues uno pondría aquí todas las 00:10:38
Y después de un 00:10:40
Barrido de un conjunto 00:10:42
De casos de prueba completos 00:10:45
Pues podría concluir que sí 00:10:47
Que parece que su programa funciona 00:10:49
Pero nunca os quedéis satisfechos con una única prueba 00:10:51
Hay que hacer muchas 00:10:53
Con el que contemplen todas las posibilidades 00:10:54
¿vale? porque si no 00:10:58
hemos contemplado, es una posibilidad 00:11:01
ah, me funciona, el programa está bien, no, pero es que igual lo pruebas 00:11:02
para otra posibilidad y no te funciona 00:11:05
entonces pruebas todas las que se puedan 00:11:06
vale 00:11:08
entonces esta sería una posibilidad 00:11:09
bueno, pues primera cosa 00:11:12
que incorporamos 00:11:14
primera cosa que incorporamos 00:11:16
cuando en la rama del sí 00:11:18
o en la rama del no 00:11:21
solo hay una sentencia 00:11:22
y solo hay una 00:11:25
y solo hay una, estas llaves son opcionales 00:11:26
¿vale? esta llave es opcional 00:11:30
si solo 00:11:37
hay una sentencia, y lo que aplica en la rama 00:11:40
esta del sí, aplica en la del no, también 00:11:48
como aquí solo hay una, la puedo quitar 00:11:51
no es necesaria, cuidado siempre con esto 00:11:54
Si después del else o después del if 00:11:59
No nos encontramos llave 00:12:01
No hay llave 00:12:04
Significa que lo que entra dentro de la rama 00:12:05
Es la siguiente sentencia 00:12:08
Y ya está 00:12:09
Y ya lo que hay después ya va fuera del if 00:12:11
Ya va fuera 00:12:13
Lo digo porque 00:12:14
Si uno tabula 00:12:17
Lo ve claro a los ojos 00:12:20
Pero uno podría tener un código como este 00:12:21
Imaginaos que tenéis un código así 00:12:23
Que el que lo hace 00:12:25
Tiene un estilo horroroso 00:12:27
y programa de esta manera 00:12:29
y ha programado así 00:12:31
pues este programa 00:12:34
¿qué hace? 00:12:36
si se cumple que no, si la condición es falsa 00:12:37
como no hay llaves 00:12:40
dentro de la rama del no solo va esta 00:12:41
porque no hay llaves 00:12:43
entonces se asume que solo es la siguiente sentencia 00:12:45
y ya la que viene después 00:12:48
ya la que viene después ya está fuera 00:12:50
del IFELSE, ya está fuera 00:12:51
ya no tiene nada que ver con la sentencia selectiva 00:12:53
ya va a continuación 00:12:55
con lo cual esta se haría 00:12:56
me da igual si he entrado por aquí 00:12:58
que me da igual si he entrado por aquí 00:13:00
me da lo mismo 00:13:02
esta se va a hacer en cualquier caso 00:13:02
porque ya es una sentencia aparte 00:13:05
es la de después 00:13:06
lo que pasa es que uno llega 00:13:07
ve este código así 00:13:09
y le parece que todo esto va dentro del ELSE 00:13:10
y le parece por un efecto óptico 00:13:13
de los tabuladores 00:13:15
entonces es importante 00:13:16
seguir las reglas de estilo 00:13:19
y las reglas de estilo dicen 00:13:21
primero que todas las sentencias 00:13:24
van a la misma altura 00:13:26
todas 00:13:27
salvo si yo 00:13:28
me estoy metiendo ya en una compuesta 00:13:29
como la del IF que es la única que estamos viendo por ahora 00:13:32
la del IF, entonces lo que va dentro del IF 00:13:34
lo meto dentro para que quede más claro 00:13:36
como esto no va dentro del IF 00:13:38
vuelvo otra vez a este nivel 00:13:40
de tabulación 00:13:42
al nivel este de aquí 00:13:43
para que se vea claro en los ojos 00:13:45
para que se vea que esta sentencia 00:13:48
está fuera del IF ese 00:13:50
que al programa le da igual 00:13:52
y a la máquina virtual le da lo mismo 00:13:54
estos son los efectos nuestros de verlo 00:13:55
Me da igual que este system out esté aquí 00:13:57
Que que esté aquí metido 00:14:00
El programa es idéntico 00:14:04
Es el mismo y hace lo mismo 00:14:07
Pero hombre el que lo está viendo 00:14:09
Y ve esto así 00:14:11
Pues no se entera 00:14:11
Y le expulsan del trabajo 00:14:13
Entonces seguid bien las reglas de estilo 00:14:14
¿Vale? 00:14:18
Bueno pues eso 00:14:21
Sentencias todas alineaditas 00:14:22
Tabuladas dentro aquí del main alineaditas 00:14:24
Cuando me he metido ya en un if o en un else 00:14:27
Que ya me he metido en una rama 00:14:30
Ahí ya la tabulo para que se vea bien que está dentro 00:14:31
Para que se vea bien 00:14:34
Y luego ya aparte las llaves 00:14:35
Las llaves las puedo poner o no 00:14:38
Si solo hay una sentencia 00:14:41
Si hay más de una tengo que ponerlas 00:14:42
Si yo quiero que en el else 00:14:44
Hubiera otra sentencia más 00:14:45
Yo que sé 00:14:48
Imagínate que en el else 00:14:50
Quiero que vayan estas dos cosas 00:14:54
Si quiero que vayan estas dos cosas en el else 00:14:56
Aquí ya sí que no tengo elección 00:14:58
Aquí ya sí que tendría que poner 00:15:00
La llave, porque aquí no tengo elección 00:15:03
Porque hay dos 00:15:05
¿Vale? Porque si no pusiera la llave 00:15:06
Si yo no la pongo 00:15:08
Entonces la máquina virtual cuando ejecuta 00:15:10
Interpreta que la rama 2 es sólo esto 00:15:13
Porque no hay llaves 00:15:15
Entonces es sólo esa primera, sólo esa 00:15:16
Y esto de aquí 00:15:18
Ya estaría fuera de lift 00:15:20
El 6 ejecutaría tanto 00:15:22
Viniendo por esta rama como por esta otra 00:15:24
¿Vale? Y no es eso lo que queremos 00:15:26
Queremos que esto se ejecute solo 00:15:30
En la rama del no 00:15:32
Pues que no se nos olvide poner ahí una llavecita 00:15:34
Porque en este caso es imprescindible 00:15:36
¿Vale? 00:15:38
Bueno, pues que esto quede muy claro 00:15:40
Porque también se dan muchísimos errores 00:15:42
Por cosas como esta 00:15:44
¿Vale? Por no tener claro 00:15:45
Que se hace dentro del if, que se hace dentro del else 00:15:48
Que se está haciendo ya fuera en ambos casos 00:15:50
Porque no agrupamos bien con las llaves 00:15:52
O no ponemos llaves 00:15:55
¿vale? y es más claro verlo 00:15:56
si me he equivocado o no me he equivocado 00:15:59
es mucho más fácil verlo si he seguido 00:16:01
las tabulaciones correctamente 00:16:03
¿vale? si las he seguido 00:16:05
vale, entonces aquí voy a dejar 00:16:06
quitada esta llave para cuando 00:16:09
vale, aquí esta llave como solo hay una sentencia 00:16:11
esa llave la 00:16:14
la quito y no pasa nada 00:16:15
esta no la podría quitar 00:16:17
¿vale? 00:16:19
vale, más cosas 00:16:21
bueno, esta sería la versión del 00:16:24
programa más sencilla, entre comillas. Pero vosotros algunos los habéis hecho anidando 00:16:25
if, ¿vale? No hay problema. ¿Cómo algunos lo habéis planteado? Pues algunos lo habéis 00:16:32
planteado. A ver, voy a preguntarme primero si n1 es múltiplo de n2. Voy a hacerme primero 00:16:42
esta pregunta. Si n1 es múltiplo de n2. Vale, si n1 es múltiplo de n2, está claro la respuesta. 00:16:51
Si uno es múltiplo del otro. Ahí es que está claro ya. Vale. Y yo contestaría. Y 00:16:58
ahora nos preguntamos, ¿vale? Pero, ¿qué pasa en la rama del no? ¿Qué pasa si n1 00:17:06
no es múltiplo de n2? Yo todavía no puedo concluir que ninguno sea múltiplo del otro 00:17:13
Porque puede ocurrir que N2 sea múltiplo de N1 00:17:18
Con lo cual yo aquí en mi ELSE 00:17:21
No puedo ya sacar esta conclusión 00:17:23
No puedo 00:17:25
Todavía 00:17:26
Porque en el caso de que N1 no sea múltiplo de N2 00:17:27
Todavía tengo una pregunta que hacerme 00:17:31
Que sería, vale, N1 no es múltiplo de N2 00:17:33
Por eso estoy en el ELSE, por eso estoy ahí 00:17:35
Pero, ¿N2 lo es de N1? 00:17:36
Pues me hago otra pregunta 00:17:40
Pues venga, me hago otra pregunta 00:17:41
Vale, asumo que N1 no es múltiplo de N2 00:17:44
Pero voy a anidar a otra pregunta 00:17:46
Un else anidado sin problemas 00:17:47
¿N2 lo es de N1? 00:17:49
Que sí que lo es 00:17:55
Quito la llave porque se me ha ponido una sentencia 00:17:56
Pues volveríamos a mostrar esto 00:17:58
Que sí que lo es 00:18:00
Pues os voy a mostrar esto 00:18:01
Que no 00:18:03
Entonces ahora ya sí que puedo mostrar esto 00:18:05
¿Vale? 00:18:07
Aquí tengo un else anidado 00:18:10
¿N1 es múltiplo de N2? 00:18:11
Pues sí lo es, rama del sí 00:18:14
Esa sentencia 00:18:16
Esta llave me sobra 00:18:17
La tengo puesta, pero me sobraría, ¿verdad? 00:18:19
En el caso de que no 00:18:23
En el caso de que no, todavía no tengo la respuesta definitiva 00:18:24
Todavía no la tengo 00:18:26
Depende de otra condición más 00:18:27
Pues no pasa nada, dentro del ELSE yo pongo todas las sentencias que quiera 00:18:29
Entre ellas otro IF si quiero 00:18:32
Pues venga, me voy a volver a hacer la pregunta 00:18:33
Asumiendo el ELSE 00:18:36
Porque estoy dentro de él 00:18:38
Asumiendo que N1 es múltiplo de N2 00:18:39
¿N2 lo es de N1? 00:18:42
Ah, vale, pues ya tengo la respuesta definitiva 00:18:44
¿Que no lo es? 00:18:46
Pues entonces, ni se cumple esta 00:18:47
Porque estoy en el else de aquí 00:18:51
Ni se cumple esta otra 00:18:52
Porque estoy en el else de aquí 00:18:54
Pues entonces ya puedo concluir con esto 00:18:55
¿Vale? 00:18:58
Entonces, este código 00:19:03
Hace lo mismo que este de arriba 00:19:05
Hace lo mismo 00:19:07
Lo que pasa es que este es más largo 00:19:09
Y más complejo de ver porque ya ni he dado if 00:19:11
En este no he ni dado ninguno 00:19:13
Tengo un if y un else 00:19:15
Y ya está, tengo un if y un else 00:19:16
En este, este hace lo mismo 00:19:18
El código es igual 00:19:21
El programa es igual, perdón 00:19:22
Pero el código es un pelín más enrevesado 00:19:25
¿Vale? 00:19:27
Entonces hay muchas formas de escribir código 00:19:31
Que hace lo mismo 00:19:33
Siempre he intentado hacer códigos 00:19:34
Lo más legibles y claros posibles 00:19:37
Para el que lo vea 00:19:40
Aunque repito, para la máquina virtual es igual 00:19:40
La máquina virtual va a tardar lo mismo 00:19:44
en ejecutar lo de arriba y lo de abajo, va a tardar lo mismo 00:19:47
porque va a evaluar esta condición 00:19:49
si es cierta ya ha terminado, y aquí igual 00:19:51
va a evaluar esta condición, si es cierta ya ha terminado 00:19:53
si no lo es, tiene que evaluar esta 00:19:55
que es lo que hace aquí, si no lo es, tiene que evaluar esta 00:19:57
¿vale? entonces la máquina virtual 00:19:59
está haciendo las mismas ejecuciones 00:20:02
pero el código 00:20:04
este como que es más cortito y más compacto 00:20:06
¿vale? sin embargo 00:20:09
si me preguntaran, si el programa no fuera 00:20:13
decir simplemente si uno es múltiplo del otro 00:20:15
Sino decir cuál de los dos es múltiplo del otro 00:20:16
Entonces esto no me valdría 00:20:19
Porque yo aquí en esta rama del sí 00:20:22
No puedo distinguir cuál es múltiplo del otro 00:20:25
Tendría que hacerme otro if dentro 00:20:28
Para ver cuál es el mayor 00:20:29
Pero este código sí 00:20:32
Porque este código yo pondría aquí 00:20:35
Sí, n1 es múltiplo de n2 00:20:36
El primero es múltiplo del segundo 00:20:39
y aquí en este caso puedo distinguir 00:20:47
si el segundo es múltiplo del primero 00:20:49
vale 00:20:51
luego repito, si me hubieran pedido además 00:20:59
especificar cuál de los dos 00:21:02
es el múltiplo 00:21:04
con esta versión tal y como está no puedo 00:21:05
solo sé que uno de los dos lo es pero no sé cuál 00:21:07
tendría que aquí dentro del if a su vez 00:21:09
meterme en otra decisión 00:21:12
pero con esta versión 00:21:13
claro que puedo distinguir porque si estoy en esta rama 00:21:16
sé que es el primero 00:21:18
y estoy en esta otra sé que es el segundo 00:21:19
¿verdad? 00:21:21
¿Vale? Luego podemos anidar perfectamente if dentro de otros if, dentro de la rama del else del if, me da igual. 00:21:27
Por ejemplo, si yo quisiera aquí distinguir lo que he dicho, cuál de los dos es múltiplo, aquí podría hacer un if. 00:21:37
Si n1 es mayor que n2, por ejemplo, voy a ponerlo. 00:21:43
si quiero distinguir 00:21:46
además 00:21:49
cuál de los dos 00:21:54
es el 00:21:59
múltiplo 00:22:00
pues han ido 00:22:05
otro if y ya está, no pasa nada 00:22:07
si además quiero distinguir cuál de los dos es el último 00:22:09
pues han ido otro if 00:22:11
y podría hacer, si n1 00:22:12
es mayor que n2 00:22:15
está claro que el múltiplo es el mayor 00:22:17
¿verdad? 00:22:19
entonces ya podría poner 00:22:21
Si el primero es múltiplo del segundo 00:22:22
Que no 00:22:26
Pues entonces podría poner 00:22:31
Si el segundo es múltiplo del primero 00:22:34
¿Vale? 00:22:37
Y ahora me da error 00:22:46
Porque ahora he puesto dos sentencias 00:22:51
Esta más esta 00:22:53
Ahora ya tengo dos 00:22:54
Entonces ahora yo tengo que poner llaves obligatorias 00:22:55
La había quitado 00:22:57
Ahora ya sí que las tengo que poner 00:22:59
porque ahora mi if tiene dos sentencias 00:23:02
tiene este 00:23:05
y tiene toda esta 00:23:06
tiene dos, esta y la de abajo 00:23:08
ahora ya si que no tengo opción, tengo que poner 00:23:11
llaves para indicar 00:23:13
que esto va dentro del if 00:23:15
vale 00:23:16
entonces conclusión, si yo lo necesito 00:23:17
puedo anidar if 00:23:21
dentro de otros if, en la rama que sea 00:23:22
en la del si, en la del no, como he hecho aquí 00:23:25
según lo vaya necesitando 00:23:27
vale, según lo vaya necesitando 00:23:28
vale, incorporamos una cosita y nos vamos 00:23:30
entonces cuando anidamos if dentro de otros if 00:23:39
es cuando java nos permite 00:23:43
usar una forma más compacta 00:23:47
vale, por ejemplo 00:23:50
yo aquí anidado un if dentro de este if 00:23:54
aquí anidado dentro de este else 00:23:57
y aquí anidado un if 00:24:00
pues esto lo puedo expresar de una manera más compacta 00:24:01
porque java me deja 00:24:03
vamos a ponerlo aquí 00:24:04
Cuando anidamos una sentencia if dentro de un else, tenemos una forma más compacta de escribirle. 00:24:06
Vamos a hacer este código de arriba en el que ocurre justo eso que he dicho. 00:24:32
Estamos anidando dentro del else, estamos anidando un if. 00:24:37
Pues cuando yo identifico esa situación 00:24:39
Que dentro de un else estamos anidando un if 00:24:42
Cuando yo lo identifico 00:24:45
Tengo una forma más compacta de hacerlo en Java 00:24:46
Más compacta 00:24:48
¿Y cuál es esa forma? 00:24:48
Pues mi if se queda como estaba 00:24:51
Mi if se queda como estaba 00:24:52
Y ahora, mi else 00:24:57
El que tiene el if anidado 00:24:59
Pues yo pongo directamente 00:25:02
El se if 00:25:04
Y la condición que fuera 00:25:06
Que era esta 00:25:08
y aquí pongo lo que le tocara 00:25:10
y ahora ya pongo el ELSE 00:25:17
luego el código de arriba y el de abajo son idénticos 00:25:23
esta es una forma compacta de ponerlo de arriba 00:25:34
que es la famosa sentencia IF-ELSE-IF 00:25:38
y esta sentencia compacta 00:25:40
la situación en la cual dentro de un ELSE hay un IF 00:25:43
la compacta para que quede más claro 00:25:47
porque en realidad aquí lo vemos más claro 00:25:50
Porque esto, si yo lo veo, significa 00:25:54
¿Esto es cierto? 00:25:55
Sí, hago lo de aquí 00:25:58
Y se acabó, ya he terminado 00:25:59
¿Que no lo es? 00:26:01
Esto es cierto, hago lo de aquí 00:26:03
Y se acabó, hemos terminado 00:26:05
¿Que tampoco lo es? Hago lo de aquí 00:26:06
Entonces es una forma como más clara 00:26:08
De expresar esto de arriba 00:26:11
Pero es lo mismo 00:26:14
Esta es una forma más compacta de hacerlo 00:26:15
¿Vale? Pero es exactamente lo mismo 00:26:18
Y esto sería 00:26:20
Como anidar este if 00:26:22
else dentro del else, es como tenerlo ahí anidado 00:26:23
como tenerlo anidado 00:26:25
¿vale? 00:26:27
y la sentencia 00:26:29
else if esta de aquí 00:26:44
con else if nos permite 00:26:46
extenderla ya 00:26:49
y programar de forma sencilla 00:26:50
algunas situaciones 00:26:53
vale, situación en la que 00:26:55
vale, situación 00:27:17
en la que, una situación 00:27:33
que se puede dar mucho en código 00:27:35
identificamos que se da una situación 00:27:37
en la cual tenemos 00:27:39
varios caminos excluyentes 00:27:41
o bien se da este 00:27:43
en función de una condición, o bien se da este 00:27:45
en función de una condición, o bien se da este en función de una condición 00:27:47
o bien se da este en función de una condición 00:27:49
eso lo podríamos hacer haciendo if 00:27:50
si no se da, ábrete otro if 00:27:52
que tampoco se da, ábrete otro if 00:27:55
podríamos anidar if 00:27:57
hasta el infinito 00:27:59
pero se hace mucho más claro si usamos un if el save 00:28:00
por ejemplo 00:28:03
ejemplo 00:28:04
vamos a suponer 00:28:06
un programa que nos dicen 00:28:12
yo te voy a dar 00:28:14
un nombre 00:28:16
bueno, no un nombre, porque sería una cadena 00:28:18
te voy a dar un número 00:28:20
y me vas a decir 00:28:22
una cosa 00:28:25
si el número es 0 00:28:26
si me vas a decir otra si el número es 5 00:28:27
y otra si el número es 10 00:28:30
si es 0 me vas a decir suspenso 00:28:32
si es 5 me vas a decir aprobado 00:28:34
y si es 10 me vas a decir matrícula 00:28:36
nos podrían pedir eso 00:28:37
Te voy a dar un número que puede ser 0, 5 o 10 00:28:38
Y en función de si ese número es 0 00:28:42
Es 5 o es 10 00:28:44
Me vas a decir algo 00:28:45
Entonces ahí veo que tengo 3 posibilidades 00:28:46
En realidad, 3 ramas 00:28:49
Si es 0 hago una cosa 00:28:51
Si es 5 hago otra 00:28:53
Y si es 10 hago otra 00:28:54
3 ramas 00:28:55
Entonces hemos dicho que el if solo abre 2 00:28:57
Pues tendríamos que hacerlo 00:28:59
Primero miro si es 0 00:29:01
Si lo es, suspenso 00:29:02
Que no lo es, tengo que abrir otro if 00:29:04
ahora es 5, aprobado 00:29:07
que tampoco lo es 00:29:09
entonces ya es suspenso, o sea tendría que ir añadiendo 00:29:10
ir anidando if, verdad 00:29:13
pero con un if else if 00:29:15
se me queda más sencillo 00:29:17
y yo lo podría poner 00:29:18
vamos a ver 00:29:21
vamos a suponer que tenemos nuestro numerito n1 00:29:22
n1 es igual a 0 00:29:31
pues en ese caso 00:29:34
que muestre 00:29:36
suspenso 00:29:36
Ahora 00:29:40
Si NI no es 0 00:29:43
Si N1 no es 0 00:29:45
Con lo que sabemos hasta solamente del ELSEIF 00:29:46
Tendríamos que hacer un ELSE y volver a abrir 00:29:49
Vale 00:29:52
N1 no es 0, pero es 5 00:29:54
Pues si es 5 00:29:57
Entonces tendría que poner 00:29:59
Vale, aprobado 00:30:01
Y ahora ya 00:30:02
Que no es 5 00:30:05
Pues ahora ya pondría 00:30:06
matrícula, o lo que fuera 00:30:09
claro, con solo tres casos vale 00:30:13
pero imagina que me dicen distinguir 00:30:17
si es 0, si es 1, si es 2 00:30:19
por nota distinta, entonces tendría que poner 00:30:21
si es igual a 0, suspenso, que no 00:30:22
abrir, n1 es igual a 1, lo que sea 00:30:24
que no, n1 es igual a 2 00:30:27
lo que sea, que no 00:30:29
tendría aquí una rista de else's uno tras otro 00:30:30
hasta el infinito 00:30:33
¿verdad? lo podríamos hacer con if else 00:30:34
pero tendríamos un montón de anidamientos 00:30:36
Pues para evitar tanto anidamiento 00:30:38
Java nos deja esta sintaxis de if-else-if 00:30:41
Que es, a ver, tienes varias opciones 00:30:44
Ponlas todas detrás de if-else-if, if-else-if, if-else-if 00:30:46
Y ya está, y te queda más cómodo 00:30:48
Pues esta versión con if-else-if sería 00:30:50
Voy a copiar y pegar para que me sea más fácil 00:30:52
Con if-else-if 00:30:58
Se me quedaría así 00:31:01
¿Vale? n1 es igual a 0, esto 00:31:04
n1 es igual a 5, esto 00:31:15
Que no, ninguna de las anteriores es esta 00:31:18
Y esto me permite abrir fácilmente muchas posibilidades 00:31:21
Me dicen, oye no, incorpora distinguir también que n1 sea 7 00:31:24
Porque en ese caso quiero que pongas notable 00:31:29
Ah vale, pues me meto otra rama con el save rápidamente 00:31:30
A ver, me faltaría la llave 00:31:34
El save n1 igual a 7 00:31:37
Meto rápidamente otra 00:31:42
vale, entonces aquí veo 00:31:45
todas las alternativas 00:31:53
las veo más juntitas, más compactas 00:31:54
en 1 es igual a 0, haz esto 00:31:57
y te vas 00:31:58
y se acabó, que no 00:32:00
es 5, haz esto 00:32:02
que tampoco 00:32:05
vas a la siguiente, que tampoco 00:32:05
ya te vas al final 00:32:08
vas una por una hasta que llegas a una 00:32:09
que se cumple 00:32:12
y si no se cumple ninguna, al final 00:32:13
vale, y aquí 00:32:16
me falta esta llave 00:32:17
vale, entonces esto se ve más claro 00:32:19
que si yo tuviera que abrir aquí 00:32:23
si aquí en este programa me dicen 00:32:25
oye, añade la posibilidad del notable 00:32:27
pues me tengo que venir a este else y decir 00:32:29
a ver, if 00:32:31
no es 5, vale 00:32:33
pues si n1 es igual a 7 00:32:35
entonces ahora ya 00:32:37
voy a copiar y pegar 00:32:41
notable 00:32:47
un momento que no se mueva nadie 00:32:52
¿vale? o sea, fijaos 00:32:55
es mucho más claro el código de abajo que el de arriba 00:32:58
y hacen lo mismo 00:33:01
¿verdad? hacen lo mismo 00:33:03
esta es una forma más compacta de expresar 00:33:04
diferentes posibilidades 00:33:06
que van por diferentes caminos 00:33:09
¿vale? bueno 00:33:10
lo de no se mueva nadie no ha dicho ni caso 00:33:12
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
5
Fecha:
10 de octubre de 2023 - 12:47
Visibilidad:
Público
Centro:
IES ROSA CHACEL
Duración:
33′ 18″
Relación de aspecto:
1.78:1
Resolución:
1280x720 píxeles
Tamaño:
635.56 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid