Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 9-10-23 - 3 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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
si
00:29:28
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
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