Estructuras de control 1: condicionales - 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, voy a grabar esta clase, por lo tanto, si habláis, me dais vuestra autorización a grabar vuestra voz.
00:00:00
Entonces, nosotros hasta ahora hemos visto principalmente expresiones y tipos de datos.
00:00:08
A este momento, a hoy, a 7 de octubre de 2026, deberíais tener claro la diferencia entre tipos y cómo se declara una variable y qué tipos de operadores hay.
00:00:17
Esta es la base que hemos visto hasta ahora y con eso hemos hecho algunos ejemplos.
00:00:34
Hemos hecho ejercicios que han usado la suma, la resta, el módulo, hemos usado el operador ternario para ver sobre todo la parte booleana.
00:00:40
Entonces hemos visto convicciones con el AND, con el OR, con el NOT, con el mayor, menor, comparación, igual, igual, not igual, etc.
00:00:49
etcétera. En este momento vosotros deberíais saber estas cosas de aquí y cómo se utilizan.
00:01:01
Cómo declarar una variable, qué quiere decir declarar una variable, qué diferencia hay entre
00:01:08
declarar una variable y asignar una variable, qué son los tipos de datos, cuáles son los tipos de
00:01:13
datos compatibles, cómo puede hacer un casting o sea una conversión desde un tipo a otro,
00:01:18
cuáles son las conversiones automáticas, cuáles son las conversiones en vez que tengo que hacer
00:01:23
explícitamente y cuáles son las conversiones que no puedo hacer esto es lo que hemos estado
00:01:28
trabajando la última semana un poco más de las últimas vale cuando nosotros hemos utilizado
00:01:34
un ternario vale que es el operador ternario existe porque valdrá la expresión que hay esto
00:01:45
Es un operador, no un booleano, no necesariamente, pero ¿todo esto de aquí qué es en una palabra?
00:02:04
No.
00:02:14
¿Con disquete?
00:02:15
No.
00:02:16
¿Lo mismo que esto?
00:02:17
¿O esto?
00:02:20
No, no.
00:02:21
Bueno, no.
00:02:22
¿Qué son esto?
00:02:23
¿Qué son esto?
00:02:24
¿Qué son esto?
00:02:26
¿Qué son esto?
00:02:27
¿Qué son esto?
00:02:28
Bueno, no.
00:02:29
¿Qué son esto?
00:02:31
Expresiones.
00:02:41
Este señor de aquí es una expresión.
00:02:43
¿Vale? En concreto es un
00:02:45
operador, es un operador
00:02:47
externario, pero, sustancialmente,
00:02:49
esto es una expresión.
00:02:51
Esto...
00:02:53
¿Qué tipo tiene?
00:02:55
Tres más cinco, ¿qué tipo tiene?
00:03:00
¿Vale?
00:03:02
T más cinco, ¿qué tipo tiene?
00:03:04
¿Qué es? El tipo de C.
00:03:11
Si C es un string, esto sería un string.
00:03:19
Si C es un int, sería un int.
00:03:21
Si C es un double, eso es un double.
00:03:23
Entonces, muy probablemente tiene el tipo de C.
00:03:26
¿Cuál es? No lo sé.
00:03:29
No sé C, no lo he declarado, pues no lo sé.
00:03:30
¿Vale? Pero sé que es el tipo de C.
00:03:33
¿Qué tipo tiene esto?
00:03:35
Entonces, tiene el tipo de la expresión que está aquí.
00:03:45
Tipo T.
00:03:59
si esa es una string
00:03:59
pues todo esto se evaluará
00:04:04
un string, si esto es un int
00:04:06
pues todo esto se evaluará
00:04:08
un int
00:04:10
¿está claro?
00:04:10
¿y esto qué tipo tiene?
00:04:13
tiene que tener el mismo tipo
00:04:20
no puede tener otro tipo
00:04:22
si lo habéis probado
00:04:23
si esto es verdadero devuelve un string
00:04:25
si esto es falso devuelve un int
00:04:28
se enfada, te dice no
00:04:30
estas dos ramas tienen que tener
00:04:31
expresiones distintas
00:04:34
pero con el mismo tipo
00:04:37
que cuando se evalúen estas expresiones
00:04:38
obtengan el mismo tipo
00:04:41
sea igual sea ese tipo
00:04:42
si has metido string a un lado, pues el otro tiene que ser string
00:04:43
si has metido un int a un lado, el otro tiene que ser un int
00:04:46
si has metido double a un lado, el otro a un lado
00:04:49
si has metido scanner a un lado
00:04:50
el otro tiene que ser un scanner también
00:04:53
¿sí?
00:04:54
¿qué tipo tiene esto?
00:04:57
aquí, ¿qué va?
00:05:14
¿Qué tipo tiene?
00:05:15
Es una expresión
00:05:26
de tipo booleano
00:05:27
¿Se entiende esto?
00:05:29
Esta es una expresión
00:05:38
de tipo T
00:05:39
y esta es una expresión
00:05:41
de tipo T
00:05:43
Lo que quiero que quede claro
00:05:44
porque luego es la diferencia con el
00:05:47
hizo que veremos en breve
00:05:49
es que aquí y aquí va una expresión.
00:05:50
¿Entendéis qué es una expresión?
00:05:56
System.org.tln
00:06:01
Me gustan los gatos.
00:06:03
¿Es una expresión?
00:06:06
No.
00:06:09
Es un comando.
00:06:10
Es una instrucción.
00:06:12
No es una expresión.
00:06:15
¿Comillas me gustan los gatos?
00:06:17
¿Comillas es una expresión?
00:06:19
Sí.
00:06:23
es un literal de tipo string
00:06:23
y un literal es
00:06:27
una expresión
00:06:28
las expresiones son
00:06:29
cosas que tú puedes
00:06:32
evaluar y te dan un valor
00:06:34
si te digo system.auto.println
00:06:36
¿qué valor tiene?
00:06:39
no tiene valor
00:06:41
su gente tiene un valor
00:06:42
pero como lo hemos visto nosotros
00:06:45
no da un valor, hace una cosa
00:06:46
ejecuta una instrucción
00:06:48
hace un comando
00:06:51
Pilla la expresión que me has dado
00:06:52
Y la imprime en pantalla
00:06:55
Pero por sí mismo
00:06:57
No le puedo sumar 7
00:06:58
No puedo hacer system.auto.println
00:07:00
Algo más 7
00:07:03
No sé si me explico
00:07:04
Al system.out
00:07:06
No puedo operar con él
00:07:07
No puedo aplicar operadores
00:07:09
Al system.auto.println
00:07:12
Porque no es una expresión
00:07:13
Es un comando
00:07:15
Scan.nexint
00:07:16
Es una expresión. Bueno, dejamos. Porque devuelve un valor. Dejamos por ahí. Eso no funciona.
00:07:22
Estoy buscando, porque hemos hecho muy poco, otras cosas que podrían ser expresión.
00:07:36
Si yo te digo int c es igual a 7, esta es una expresión. Esto. Int x es igual a c más 7. Esta es una expresión.
00:07:43
No, es un coma, un coma de asignación.
00:08:01
Esta es una expresión, ¿sí?
00:08:09
Esta la puede evaluar a un valor.
00:08:12
No sé cuánto vale c, si el p vale 5, pues 5 más 7, 12,
00:08:14
pues esto vale 12 y es un entero.
00:08:18
Sí lo puede hacer.
00:08:20
Pero si te digo, ¿y cuánto vale esto?
00:08:21
No lo sé.
00:08:23
Esto hasta lo podría pensar, decir, mira, x sí, x así,
00:08:26
es una expresión, pero aquí yo estoy haciendo una declaración, en otros son muy tristes, ¿vale?
00:08:31
Es, tenéis que entender la diferencia entre las instrucciones y comandos, que son lo que hacen
00:08:36
hacer algo en mi programa, ¿vale? Que construirán pasito a pasito el algoritmo, y las expresiones,
00:08:43
que son los valores, a lo mejor complejos, porque yo para sacar el valor no es sólo siete,
00:08:51
el tema es, pilla la edad, multiplícala para dos y divídala para el número de árboles de...
00:08:57
¿Para qué sirve? No lo sé. ¿Vale? Pero es una operación grande, pero es una expresión que luego se evaluará a un valor concreto.
00:09:04
¿Entendéis la diferencia? ¿Dudas?
00:09:13
Bueno, la diferencia fundamental entre el operador ternario, que es este de aquí, y el if, es que yo aquí, en el operador ternario, no puedo poner comandos.
00:09:18
En el operador ternario, allí van expresiones.
00:09:32
Sin embargo, en el if, van comandos.
00:09:36
Yo puedo, en el if, en esta rama de aquí, en esta rama de aquí, poner un programa entero.
00:09:41
Es decir, si tú me tecleas 1
00:09:48
Entonces esta cosa aquí
00:09:51
X es 1
00:09:53
Pues entonces calcula la área del triángulo
00:09:54
Y si X es 2
00:09:57
Pues entonces abre un programa
00:09:59
Para escribir el Quijote
00:10:01
Dos cosas completamente distintas
00:10:02
Que no tienen que ver con tipos distintos
00:10:05
Y que hacen cosas distintas
00:10:07
Dos algoritmos, dos programas completamente distintos
00:10:08
Eso con un IFA lo puede hacer
00:10:11
Con un
00:10:13
Operador ternario
00:10:14
No
00:10:17
en un if aquí
00:10:17
yo puedo tener 25 líneas
00:10:20
de código
00:10:23
aquí siempre tendré
00:10:23
una expresión
00:10:27
no puedo tener 6 expresiones ahí
00:10:28
no puedo poner un system.out
00:10:30
aquí dentro
00:10:33
porque esto es un valor
00:10:35
no una operación
00:10:39
no le puedo decir si 3 es mayor que 4
00:10:41
entonces escribe algo
00:10:43
no lo hemos hecho nunca
00:10:45
nosotros hemos dicho escribe
00:10:46
y luego nos hemos preguntado, hemos dicho,
00:10:48
si es mayor que 4, entonces escribe 7.
00:10:51
Y si no escribe 9, le damos el valor que tiene que escribir.
00:10:53
Pero no le hemos dicho nunca,
00:10:56
si esto es verdadero, entonces escribe,
00:10:58
y si no, no escribe, por ejemplo.
00:11:01
Eso no lo hemos dicho nunca.
00:11:04
Porque no lo podemos hacer.
00:11:05
Porque es una expresión, no es un comando.
00:11:06
¿Dudas hasta aquí?
00:11:11
Vale.
00:11:13
Esto es como previo para...
00:11:14
Nosotros conocemos esto, no conocemos el otro.
00:11:15
pues esta es la diferencia
00:11:17
de por qué necesitamos el otro
00:11:19
y no podemos seguir con este de aquí
00:11:22
porque este es un poquito menos potente
00:11:24
esto es un operador
00:11:26
y el otro es un comando
00:11:27
es una sentencia
00:11:29
¿vale?
00:11:30
entonces
00:11:33
hoy lo que vamos a ver
00:11:33
como nuevo elemento
00:11:35
son las estructuras de control
00:11:37
¿vale?
00:11:40
hasta ahora
00:11:41
nuestros programas
00:11:42
han sido secuencias de instrucciones
00:11:44
Yo empezaba desde el principio y seguía instrucción por instrucción hasta el final. En ningún momento he cambiado el flujo de ejecución de mi programa.
00:11:46
He siempre estado desde la primera línea hasta la última.
00:12:02
La cosa un poquito más compleja que quizá he hecho ha sido el ternario, ¿vale?
00:12:06
Porque o hacía una cosa o hacía otra, pero era siempre ese comando.
00:12:14
Yo ejecutaba esa línea de código, ¿vale?
00:12:19
Y en esa línea de código hacía una cosa u otra dependiendo del valor que salía de ese ternario.
00:12:22
Las estructuras de control son estructuras avanzadas para poder alterar, para poder cambiar el flujo de ejecución de mi programa.
00:12:27
Es decir, que ahora en vez de decir que ejecuto todas las instrucciones desde la primera hasta la última, puede ser que en un determinado momento haga cambios en el orden con el que se ejecutan estas instrucciones.
00:12:42
Cuidado, en cada momento el ordenador tiene que estar seguro al 100% de cuál es el comando que se va a ejecutar en ese momento.
00:12:56
Seguimos en un estado determinista.
00:13:08
No puedo decirle al ordenador, mira, si crees ejecuta esta operación y si no ejecuta otra, siéntetelo tú.
00:13:11
Pues no, eso no existe.
00:13:22
Tú al ordenador le tienes siempre que decir, haz esto, haz esto, haz esto, haz esto.
00:13:24
¿Vale?
00:13:28
Pero no en el orden que hemos visto hasta ahora.
00:13:29
No desde el principio hasta el final, todas una seguida a otra.
00:13:32
¿Vale?
00:13:35
Puedo alterar este flujo de ejecución.
00:13:36
¿Vale?
00:13:41
Estudio de control, son elementos del lenguaje que nos permiten romper con el flujo lógico de ejecución de instrucciones.
00:13:41
¿Vale?
00:13:47
O sea, las entiendes.
00:13:48
se domina flujo de ejecución
00:13:48
el orden en el que se ejecutan
00:13:52
un determinado conjunto de instrucciones
00:13:54
o sentencias, hasta ahora nosotros
00:13:56
hemos usado un orden secuencial
00:13:58
¿vale? la secuencia
00:14:00
de instrucciones es una
00:14:02
estructura de control ¿vale?
00:14:04
pero es la más válida, es
00:14:06
he dado una lista, pues va desde la primera
00:14:07
hasta la última, hace esta operación
00:14:10
este comando, luego este comando, este comando
00:14:11
este comando, este comando, ya está
00:14:14
lo hemos utilizado, pero es
00:14:15
digamos, el más natural. Hago las cosas
00:14:17
en orden. Se acabó.
00:14:20
El flujo lógico, es decir,
00:14:22
que se asume, mientras
00:14:24
no sería lo contrario, es de arriba
00:14:25
abajo, de izquierda a la derecha.
00:14:28
Si yo no digo nada y no
00:14:30
le digo modifica el flujo, es
00:14:32
empiezo desde el primer
00:14:34
comando y voy hacia abajo.
00:14:35
Y en el comando, si hubiese
00:14:38
dos comandos en la misma línea,
00:14:39
separado por punto y coma, haría primero el
00:14:42
que está a la izquierda, luego el que está a la derecha.
00:14:43
¿Sí? Como se lee.
00:14:46
Porque existen distintos tipos de sentencias de control.
00:14:47
Por un lado están los condicionales, por otro lado están los iterativos y por último están las llamadas a métodos.
00:14:55
Estos son tres grupos de estructuras que lo que hacen es modificar el flujo con el que van, el orden de ejecución.
00:15:03
¿Se entiende eso? ¿Repetido ya cinco veces? ¿Os ha ocurrido lo suficiente?
00:15:14
Los condicionales. Los condicionales me permiten elegir si un bloque lo ejecuto o no.
00:15:20
Yo marcaré un bloque y le diré que si una condición es verdadera, entonces ejecútalo y si no, no.
00:15:29
Eso es el ir más básico. Te marco un bloque y te digo, esto se ejecuta solo si la condición es verdadera.
00:15:36
Si lo salto, estoy modificando
00:15:43
El flujo de ejecución
00:15:48
Porque yo he ejecutado los primeros comandos
00:15:51
Llego a este if, este if es falso
00:15:54
Me salto todos estos comandos que están dentro del bloque
00:15:56
Y sigo con los otros
00:15:59
He modificado, ya no estoy haciendo uno tras otro
00:16:00
He hecho un salto, por eso está modificado
00:16:03
Luego el if tiene versión if-else
00:16:06
¿Vale? Ahora veremos qué es. Si esto es verdadero, haz este bloque. Si es falso, sáltate este bloque, pero ejecuta este otro.
00:16:11
O sea, entonces me permite un vídeo, una... no sé, una... una elección, ¿vale? Gráficamente.
00:16:21
si yo llego desde una
00:16:34
estructura
00:16:36
si yo llego aquí
00:16:37
estoy ejecutando, estoy ejecutando
00:16:40
cuando llega un if
00:16:42
vale, si es un if
00:16:43
a secas normal, me dice
00:16:47
que si es verdadero
00:16:49
ejecuta
00:16:53
estas instrucciones de aquí, vale
00:16:54
y luego sigues adelante, si no
00:16:56
lo que hace es
00:16:58
saltarte estas instrucciones
00:17:00
y retomar de aquí
00:17:02
Esto sería el if básico, ¿sí?
00:17:04
En vez, el if else sería que cuando llega la información del if, aquí hay una condición, si es sí, elige esta vía de aquí y hace estas instrucciones, si es no, hace estas instrucciones de aquí y luego sigues adelante, ¿sí?
00:17:08
el if básico normal
00:17:29
estándar, lo que me dice es
00:17:32
ejecuto este bloque
00:17:34
si es verdadero y si no me lo salto
00:17:35
no hago nada más, salto
00:17:38
solo este bloque, lo salto
00:17:40
no lo ejecuto, mientras
00:17:41
el if else me dice si es verdadero
00:17:43
hago así, si no es verdadero hago así
00:17:46
esto es parecido
00:17:48
al ternario
00:17:50
la diferencia es que en el
00:17:51
ternario aquí tenía expresiones
00:17:54
sin embargo
00:17:56
aquí ahora tengo comandos, tengo bloques de comandos. Tengo un bloque que abre aquí y que
00:17:58
cierra aquí y todo lo que se hace aquí se ejecuta sólo si esta condición que he puesto aquí es
00:18:04
verdadera. ¿Entiendes? El switch es una cosa que nos habría servido en algunos ejercicios que hemos
00:18:10
hecho, que es sustancialmente igual al conditional, igual al if, ¿vale? Todo lo que se hace con el
00:18:23
solo que en determinados casos esta es una sintaxis más cómoda cuando cuando yo tengo
00:18:29
un valor una variable y tengo que comprobar si esta variable tiene algunos valores concretos
00:18:41
vale imaginaos un menú típicamente en el que te dice que quieres hacer quieres sumar entonces
00:18:47
pulsa 1, restar, pulsa 2, dividir, pulsa 3
00:18:54
o multiplicar, pulsa 4. ¿Vale? Entonces, si ahora debería
00:18:58
hacer, si lo que has puesto es 1, hace esto. Si lo que has puesto
00:19:01
2, es este. Pues el switch me lo hace más sencillo. Me dice, a ver, mira,
00:19:06
comprueba X. Cuando es 1, hace esto. Cuando es 2, hace esto. Cuando es 3,
00:19:09
hace esto. ¿Vale? Sale más fácil de ver. Pero,
00:19:14
sustancialmente, los dos hacen lo mismo. Cambian el
00:19:17
flujo de ejecución de los comandos
00:19:21
en base a una condición.
00:19:23
Me dicen cuál bloque
00:19:25
ejecutar o si ejecutarlo
00:19:27
o no, en base a
00:19:29
una
00:19:31
condición.
00:19:32
Evalúo la condición.
00:19:36
La condición será una expresión
00:19:38
booleana. Me dará true o false.
00:19:39
En base a true o false, hago o no
00:19:41
hago una determinada.
00:19:43
¿Sí? Esta es la condición.
00:19:46
¿Dudas?
00:19:48
Luego están los iterativos.
00:19:51
Los iterativos me permiten repetir muchas veces un mismo bloque de código.
00:19:52
Entonces, llego al final del bloque de código y cuando llego al final puedo decidir de volver a saltar al principio de este bloque de código.
00:20:00
Entonces estoy alterando otra vez el flujo de ejecución porque normalmente seguiría abajo.
00:20:09
En vez de en determinado momento podría saltar arriba y ejecutarlo otra vez y volver a saltar arriba y ejecutarlo otra vez.
00:20:15
¿Vale? Aquí normalmente hay dos interesantes, también el do while, pero es una versión del while.
00:20:22
El while es que mientras una condición es verdadera, tú sigues ejecutando lo mismo, ¿vale?
00:20:30
Mientras x sea positivo, pues haz x menos menos.
00:20:39
Entonces, en cada ciclo, pues lo que estoy haciendo es reducir x un poquito, un poquito, un poquito,
00:20:43
mientras que x sea positivo. Si x vale mil, lo haré mil veces.
00:20:48
Si x vale 3, pues lo haré 3 veces.
00:20:52
Pero estoy allí, dando vueltas, mientras que x sea positivo.
00:20:55
El for, en vez de me sirve para decir unos límites, ¿vale?
00:21:00
Normalmente digo desde 0 hasta 5.
00:21:05
Pues, entonces, este bloque se repitirá 5 veces.
00:21:08
Tienen algo de diferencia entre los dos,
00:21:14
pero cambiando un poquito como se escribe,
00:21:17
lo que hace un while se puede hacer con un for
00:21:20
y lo que hace un for se puede hacer con un while
00:21:23
¿vale? son
00:21:25
más cómodos en determinados
00:21:26
contextos, entonces veremos
00:21:29
que a veces usamos el while, a veces usamos
00:21:31
el for en base a algunas reglitas
00:21:33
que nos daremos, pero
00:21:35
en teoría el concepto es que hacen
00:21:37
la iteratividad, o sea la posibilidad
00:21:39
de repetir más de una vez
00:21:41
un mismo bloque de código
00:21:43
¿sí?
00:21:44
y finalmente las llamadas a métodos
00:21:47
O sea, yo puedo pillar un trozo de código, darle un nombre y ponerlo en algún lado.
00:21:49
Y ahora en otro trozo de código, en mi main, para ejecutar ese trozo de código que le he dado un nombre, puedo llamar ese nombre.
00:21:58
Entonces, cada vez que yo en mi código, que estoy yendo desde arriba abajo ordenadamente,
00:22:07
encuentro este nombre con el que he llamado el bloque de código que he guardado por otro lado,
00:22:13
salto desde donde estoy
00:22:18
a ese bloque de código
00:22:21
ejecuto ese bloque de código
00:22:23
y vuelvo a donde estaba
00:22:25
y sigo con la siguiente
00:22:27
entonces hago saltos
00:22:28
hacia funciones, hacia trozos de código
00:22:30
que están en otro lado
00:22:33
por ejemplo
00:22:34
el scan
00:22:35
por ejemplo
00:22:48
yo tengo mi programa
00:22:49
se ejecuta aquí
00:22:52
las varias ejecuciones
00:22:54
bla bla bla
00:22:57
De repente me encuentro
00:22:57
un system.auto.println
00:22:59
¿Qué es este println?
00:23:01
Eso es un método, es una función.
00:23:07
Es decir, que es un trozo de código
00:23:09
escrito por otra persona
00:23:11
en algún lado del multiverso
00:23:13
¿Qué es esto?
00:23:15
println
00:23:18
que hace cosas
00:23:18
¿Vale? Aquí estará su if
00:23:20
su while, su retorno
00:23:23
lo que sea. Es un código que no he
00:23:25
escrito yo y que alguien ha llamado
00:23:27
como println. Cuando
00:23:29
Cuando yo aquí me encuentro un system.auto.println, lo que estoy diciendo es, para aquí la ejecución,
00:23:31
vete aquí, ejecuta este código y cuando has acabado, vuelve aquí y sigues con la
00:23:39
siguiente.
00:23:46
Entonces estoy interrumpiendo otra vez el normal flujo de ejecución de este programa.
00:23:51
Este sería uno tras otro, pero cuando llego aquí hago un salto al println que a lo mejor
00:23:57
Ahora aquí dentro tiene if, tiene while, hasta aquí un 15 minutos haciendo cosas.
00:24:02
Cuando ha acabado esta llamada de método, esta llamada de función, esta llamada de procedura,
00:24:07
llamada como os da la gana, vuelve a quien lo ha llamado, a la línea donde se había llamado,
00:24:12
y empieza por la línea siguiente.
00:24:17
Si vuelvo a hacer otro println, desde aquí saltaré otra vez aquí, lo re-ejecuto,
00:24:20
y cuando acabo vuelvo aquí.
00:24:27
Esa es una llamada de método.
00:24:31
Yo puedo crear mis métodos, ¿vale? Puedo darle, por ejemplo, cuando hemos hecho calcular ala del triángulo, calcular ala del cuadrado, pues podría llamar esos trocitos de código con un nombre, con un nombre de función y tenerlos a un lado y reutilizarlo todas las veces que yo quiera.
00:24:32
¿Se entiende más o menos?
00:24:51
Entonces, no los damos por vistos, ¿vale?
00:24:55
Estos de aquí todavía tenemos que trabajar con ellos.
00:24:59
Hoy empezaremos con estos de aquí.
00:25:01
Pero lo que me interesa es que tú, como sentencias de control,
00:25:03
tienes tres formas de alterar la ejecución básica secuencial de mi programa.
00:25:08
O decidiendo si hacer una cosa o no.
00:25:15
segunda opción, repitiendo
00:25:17
un bloco de código una cierta
00:25:19
vez mientras una condición sea
00:25:21
verdadera, o
00:25:23
irte a otro lado, ejecutar
00:25:24
otro trozo de código que
00:25:27
tú has llamado de alguna forma, y luego volver.
00:25:29
¿Vale?
00:25:31
Nosotros hemos dado el punto, ¿no?
00:25:33
Hemos hecho scan.nextInt.
00:25:35
Pues era esta cosa.
00:25:37
O system.out.println.
00:25:41
Más esta cosa. ¿Vale?
00:25:44
Luego veremos qué son los métodos.
00:25:46
En el mundo de la
00:25:48
Programación orientada a objetos se suele llamar de métodos, estos son métodos, Java son métodos.
00:25:49
En el mundo de la programación estructurada normal, pues eso se suele llamar funciones si te devuelven
00:25:56
un valor o proceduras si no devuelven ningún valor. Nosotros los llamaremos métodos. Ahora,
00:26:06
Si tú tienes un lenguaje de programación
00:26:14
¿Qué hace?
00:26:17
Lo que hemos visto hasta ahora
00:26:18
O sea, declaración de variables
00:26:20
Ejecución, una tras otra, cosas por el estilo
00:26:21
Y tiene estas tres opciones
00:26:23
¿Vale?
00:26:28
O sea, tiene comandos para hacer condicionales
00:26:29
Iterativos y llamadas en método
00:26:31
Se llama Turing equivalente
00:26:32
O sea, que puede hacer todo
00:26:34
Lo que haga otro lenguaje de programación
00:26:37
Con las mismas cosas
00:26:40
¿Vale?
00:26:41
y sustancialmente es un 95% de lo que se puede hacer en programación.
00:26:42
Lo que se añade, la programación de unidad de objetos y cosas así,
00:26:48
es para que esto funcione de forma más eficiente
00:26:51
y pueda hacer programas y proyectos más grandes.
00:26:56
¿Vale?
00:27:01
Porque técnicamente todos los proyectos se podrían hacer con estos elementos de aquí,
00:27:01
saldría un infierno, pero se podría hacer.
00:27:05
¿Sí?
00:27:08
las programaciones orientadas a objetos
00:27:09
mejora la forma
00:27:11
con que se usan estas cosas y cómo se
00:27:13
estructura el código para que sea
00:27:15
más fácil utilizarlos en proyectos
00:27:17
complejos y sobre todo
00:27:19
reutilizarlos. No tener
00:27:21
cada vez que tener que
00:27:23
reimplementar las mismas funciones
00:27:25
si estas funciones ya las he implementado
00:27:27
anteriormente. Simplemente importo
00:27:29
las clases que necesito
00:27:31
y las uso. Como nosotros no
00:27:33
hemos tenido que implementar el system.org
00:27:35
lo hemos importado de forma nativa
00:27:37
en nuestros programas
00:27:41
y lo hemos utilizado
00:27:42
nosotros no sabemos como se escribe en pantalla
00:27:44
¿sabéis vosotros como se escribe en pantalla?
00:27:46
ni idea, usamos un printerln
00:27:48
que es un código complejo
00:27:50
que se hablará con el
00:27:51
con el driver
00:27:54
de la pantalla
00:27:57
por algún lado
00:27:58
y allí sacará la información
00:27:59
son cosas de bajo nivel
00:28:01
que nosotros hemos tapado
00:28:03
con un lenguaje de alto nivel
00:28:06
que nos permite hacer las cosas
00:28:08
sin tener que trastear con los
00:28:10
ceros y los unos o los drivers de la
00:28:12
pantalla.
00:28:14
¿Entiendes?
00:28:16
Exactamente, nosotros queremos poder
00:28:18
ser cómodos.
00:28:19
¿Tú das hasta aquí?
00:28:22
Entonces,
00:28:25
empezamos
00:28:28
con los condicionales, ¿vale?
00:28:29
Vamos a ver, lo que he dicho
00:28:31
ahora era todo lo que hay que saber.
00:28:33
¿Vale? Ya sabes, estamos listos,
00:28:35
para el examen, pero vamos a verlo un poquito más en detalle y luego hacemos ejemplo.
00:28:37
Entonces, los condicionales sirven para proporcionar distintos caminos lógicos de ejecución y
00:28:43
después continuar con el programa, ¿vale? Es decir, las estructuras que he dibujado
00:28:47
antes. Yo puedo pasar por este camino o por este otro en base a una condición y entonces
00:28:52
ejerceré o no una parte, una serie de comandos, si esta condición es verdadera o no, ¿vale?
00:28:58
se evaluará una condición
00:29:04
y en base al resultado se ejecutan
00:29:06
instrucciones u otras
00:29:08
este es el dibujito mejor hecho
00:29:10
por expectantes, vale
00:29:14
esto es en ifasecas
00:29:15
si esta condición es verdadera
00:29:18
entonces hay un bloque de código
00:29:20
ejecútalo y luego sigue con el programa
00:29:22
si la condición que he ponido aquí
00:29:24
es falsa, pues salta
00:29:26
de este bloque de código y sigue adelante
00:29:28
¿qué irá en condición?
00:29:30
expresión
00:29:38
incompleta
00:29:39
¿Expresión? Boolean. Aquí tengo que poner una expresión compleja cuantos da la gana, pero el resultado tiene que ser true o false. En base a true o false, si es true, voy para aquí, si es false, voy para acá.
00:29:42
¿Qué tengo que poner aquí?
00:29:57
Lo que me da la gana
00:30:03
Es un bloque de código
00:30:04
Lo que necesito para resolver mi programa
00:30:06
¿Vale?
00:30:08
Pero aquí podría poner
00:30:09
Una secuencia de instrucciones
00:30:11
Podría poner otro is
00:30:12
Podría poner un while
00:30:14
Podría poner una llamada método
00:30:16
Podría llamar todos los anteriores juntos
00:30:18
Aquí haré lo que tengo que hacer
00:30:21
En base a la condición que me ha dicho
00:30:23
¿Ve?
00:30:25
Ahora, si en vez de
00:30:27
Esto es, sustancialmente me está preguntando, ¿este bloque lo ejecuto o no?
00:30:29
Si en vez de no tengo un bloque que tengo que ejecutar o no,
00:30:35
tengo que hacer cosas distintas en base de si es verdadero o falso la condición,
00:30:38
entonces tengo el IFELS.
00:30:44
El IFELS me dice que si es verdadero, esto es el bloque que tienes que ejecutar.
00:30:46
Si es falso, hay un bloque distinto.
00:30:51
Estos dos bloques son exclusivos.
00:30:54
O es que ejecuto uno, o ejecuto el otro. No puede ejecutar los dos, ¿ves?
00:30:57
Ejemplo del instrumento número uno. Int x es igual a 5, si x es menor que 5,
00:31:10
System.app.println es menor que 5. System.app.println es fin.
00:31:16
¿Qué me escribe esto? ¿Por qué por pantalla sale fin?
00:31:21
Porque yo te digo, x es menor que 5.
00:31:30
No.
00:31:37
¿Puede ser menor o igual? Sí.
00:31:39
Pero así es falso.
00:31:40
Esto sería el bloque true.
00:31:43
Me lo salto y voy al bloque este de aquí.
00:31:46
Pero esto no es el bloque else.
00:31:49
Esto se ejecuta siempre.
00:31:50
Si aquí le pongo 7,
00:31:52
si aquí le pongo 3, ¿qué me escribe?
00:31:54
Me pone menor que 5, fin.
00:31:59
Me pone los dos.
00:32:02
ahora normalmente
00:32:02
esto es un poquito
00:32:11
confuso porque me dicen
00:32:13
pero por qué ejecuta esto
00:32:15
esto no estaba
00:32:18
en el bloque
00:32:20
yo quiero que si esto es verdadero
00:32:21
escriba estas dos cosas y si es falso
00:32:24
no escriba nada
00:32:26
¿cómo lo hago?
00:32:27
tengo que marcar los bloques
00:32:29
y esto siempre
00:32:31
si yo no fijo aquí un bloque
00:32:32
el if solo se
00:32:35
se refiere al primer
00:32:36
comando que encuentra. Solo
00:32:39
un comando. Pero
00:32:41
normalmente, los
00:32:42
if pillan un bloque.
00:32:45
¿Os acordáis de los delimitadores que vimos
00:32:47
y decimos, pero no sirven de mucho?
00:32:48
Ahora empiezan a servir.
00:32:50
Entonces, si esto
00:32:53
es verdadero, ejecutas
00:32:55
todo este bloque. Si no,
00:32:57
te saltas este bloque y vas aquí directamente.
00:32:59
Entonces aquí, x es 5,
00:33:03
5 es menos que 6.
00:33:05
Sí. Por lo tanto, entro aquí dentro y escribo resultado dos puntos menor que seis y luego fin.
00:33:06
Y si yo pusiera X7, escribiría.
00:33:15
Solo fin.
00:33:23
Entro aquí, esto es falso, me salto todo este bloque, voy aquí y escribo este de aquí.
00:33:25
Esto está fuera del bloque, esto se ejecuta siempre.
00:33:30
Esto está aquí.
00:33:33
Mi fin está aquí.
00:33:36
Me he saltado el bloque de información y me he ido allí directamente.
00:33:38
¿Qué pasa si no pongo esta de aquí?
00:33:45
El mismo ejercicio, este de aquí, quito las paréntesis.
00:33:48
¿Qué me escribe?
00:33:52
Escribe menor que 6 y 5.
00:33:55
No, escribe exactamente lo mismo.
00:33:59
5 es menor que 6, entonces me escribiría esto,
00:34:03
luego escribiría esto y luego escribiría esto.
00:34:07
Sin problema. Pero si ahora le pongo x igual a 7, ¿qué escribiría?
00:34:10
O sea, quito las paréntesis y pongo estas 7.
00:34:16
Ahora me pondría menor que 6.
00:34:20
Fin. Se saltaría sólo esta línea aquí, porque el if
00:34:24
afectaría esta línea. Como idea,
00:34:28
siempre que usáis un if, un while, un cualquier cosa,
00:34:32
marcad el bloque. Siempre utilizad
00:34:36
estas paréntesis. No se os ocurra nunca no ponerlas. Hasta si es una línea sola, poned una
00:34:40
llave aquí y una llave allá. No cambia nada, son seis segundos de vida, no, tres segundos de vida,
00:34:51
pero os sirve para evitar errores de que luego se aplique solo a esta línea y no a la siguiente.
00:35:00
¿Sí? ¿Dudas hasta aquí?
00:35:07
¿Qué hace esto?
00:35:16
Esto es un if-else.
00:35:30
Entonces me dice, aquí hay dos opciones.
00:35:32
O este bloque de aquí, o este bloque de aquí.
00:35:34
¿Vale?
00:35:38
Y ejecutaré o uno o el otro, nunca los dos a la vez,
00:35:39
dependiendo del valor de esta expresión booleana.
00:35:44
Evalúo la expresión booleana, 5 es menor que 5, falso.
00:35:46
por lo tanto me salto el bloque true y escribo solo el bloque
00:35:50
falso. Si esto fuera verdadero, escribo el bloque
00:35:54
verdadero y salto el bloque falso. En este caso
00:35:58
como 5 no es menor que 5, me iría a leerse, escribiría mayor o igual
00:36:02
que 5 y luego fin, porque fin está fuera del bloque if
00:36:06
y por lo tanto lo escribiría siempre.
00:36:10
Paréntesis pequeña.
00:36:20
Ahora que empezamos a utilizar los bloques, ¿os acordáis que era el ámbito de una variable, los Q?
00:36:21
Y las variables solo existen dentro del bloque en que la creo.
00:36:33
Entonces, si yo digo, si X es menor que 5, pongamos que es verdadero, entro aquí dentro y aquí creo una variable,
00:36:39
esa variable fuera, donde está el fin, ya no existe.
00:36:47
Si creo una variable dentro de un bloque
00:36:51
Cuando salgo de ese bloque ya no existirá
00:36:55
¿Vale?
00:36:57
Entonces ahora el ámbito de la variable
00:36:59
Empieza a tener un poquito más de sentido
00:37:00
Antes era todo el mismo bloque
00:37:02
¿Sí?
00:37:04
¿Es esto?
00:37:10
¿Es esto es como antes hacíamos
00:37:30
Un ternario dentro de un ternario?
00:37:32
Pues esto es un if dentro de un if
00:37:35
El primer if es el azul
00:37:36
¿Vale?
00:37:38
Que pones esta cosa es verdadera
00:37:39
Entonces hace esto de aquí
00:37:41
si no, hace esta otra cosa.
00:37:42
Y en esta otra cosa he metido
00:37:45
un if. ¿Vale?
00:37:46
Esto sería un bloque que empieza aquí
00:37:48
y acaba aquí, y dentro está otro if
00:37:50
que dice, oye, pero si es igual,
00:37:52
entonces, por lo que es igual, y si no,
00:37:54
este else es de este if
00:37:57
de aquí. ¿Veis?
00:37:58
Tened cuidado que a veces
00:38:03
esto lía un poquito
00:38:04
las cosas, porque este else requiere
00:38:06
selección de este if, o de este if, o de este cual.
00:38:08
¿Vale? Entonces,
00:38:11
puede que os liéis un poquito.
00:38:12
Aún así, esto en realidad es el SIF. Existe una forma de escribirlo juntos para que es como si es esto, si no, si es esto, si no, si es esto, si no, si es esto, pero por ahora no nos compliquemos mucho.
00:38:14
¿Qué hace esto? Es lo mismo que antes, ¿vale? Solo que esta vez lo he delimitado con las llaves, ¿vale? Para que se vea que esto es otra cosa, ¿vale?
00:38:30
aquí funciona lo mismo porque esto dice este else se aplicaría solo al siguiente comando y
00:38:52
todo este de aquí es un comando es un comando solo es un comando if por lo tanto funciona
00:38:59
pero quizás así se vea un poco más grande al menos a nuestro nivel esto
00:39:05
después de recreo la solución. Entonces, antes de recreo estamos aquí. ¿Qué hace este programa?
00:39:16
Mi if es menor que uno. Hace lo del is. El problema de esto es cuando no usáis las
00:39:39
las llaves, es este else, es hijo de este if, o es hijo de este if. O sea, este else es si este
00:40:02
if menos de 1 hace esta cosa aquí y si no hace esta otra, o esto es un if plano sin else y dentro
00:40:15
tiene un infeliz. Cuidado con lo que hacéis. Por eso os he dicho, intentad poner siempre las
00:40:25
llaves porque así definís vosotros cómo se tiene que comportar el programa. Si no, tengo que saber
00:40:35
bien cómo funcionaría Java interiormente en estas cosas de aquí y a ver qué pasa. En este caso
00:40:44
concreto y según lo que está escrito aquí debajo, en principio escribiría nada, ¿vale?
00:40:51
Porque esto sería un if y esto sería una sentencia if-else, entonces todo este if-else
00:40:58
sería como si estuviera en un bloque, ¿vale? Y entonces el esto no es verdad saldría y ya está.
00:41:04
Pero claro, cuando esto lo hago muchas veces mezclado así, pues a lo mejor cuando lo leo
00:41:11
rápidamente, medio. Ponéis siempre las llaves, ¿vale? Y dentro tenéis, debajo tenéis la, es útil.
00:41:16
Vale, ¿y esto era LIFS? ¿Te queda claro LIFS? Sencillo, ¿vale? Muy parecido al otro. La diferencia está siempre en esta cosa de aquí.
00:41:26
aquí son solo system.out
00:41:40
no hace grandes
00:41:43
aprietos, vale, la diferencia con lo que
00:41:44
utilizamos antes es que en estas ramas
00:41:46
de aquí, if-else, vale
00:41:49
antes aquí podíamos poner solo expresiones
00:41:50
mientras ahora no estamos
00:41:53
poniendo expresiones, estamos poniendo
00:41:55
programas, estamos poniendo
00:41:56
llamadas a métodos, podemos poner while
00:41:58
podemos poner otros if
00:42:00
podemos poner lo que nos da la gana, vale
00:42:02
estas son comandos, son líneas
00:42:04
de instrucciones, más que una, pueden estar
00:42:07
cinco líneas se me da la gana, ¿vale?
00:42:09
Sin embargo, en el
00:42:11
operador condicional, eso es un operador
00:42:13
que devuelve
00:42:15
un tipo y que se puede evaluar.
00:42:17
Esto no se evalúa, esto se ejecuta.
00:42:19
¿Sí? ¿Me entienden?
00:42:22
Siguiente
00:42:26
condicional que vamos
00:42:26
a ver es el switch case, ¿vale?
00:42:28
El switch case
00:42:31
es siempre un condicional,
00:42:32
siempre es un tercer condicional, y todo
00:42:35
lo que se puede hacer con el switch case
00:42:37
se puede hacer con un if. Eso de if-else, if-else, if-else, if-else,
00:42:39
o el si-else, el si-else, el si-else, pues se puede hacer
00:42:43
la misma cosa. Solo que en determinadas circunstancias, si lo hago con if-else,
00:42:46
me saldría un if dentro de un if, dentro de un if, dentro de un if,
00:42:51
dentro de un if, entonces saldría una cosa bastante compleja de leer.
00:42:55
Mientras este de aquí, en las situaciones en que se usa el switch case,
00:42:59
lo hace más fácil de leer. Está claro que en otras situaciones,
00:43:02
Usar el switch case es relativamente imposible, no se podría, ¿vale?
00:43:06
Esta es la sentencia condicional que permite comparar una determinada variable con varios valores posibles.
00:43:12
Dependiendo del valor de dicha variable, esto tendremos un bloque, o no, ¿vale?
00:43:18
Se puede hacer lo mismo con varios x vanidados, esto hemos ya dicho, ¿vale?
00:43:22
Esto es un switch case, ¿vale?
00:43:28
La idea es esta, ¿sí?
00:43:30
Entonces, si yo tengo una variable, ¿vale?
00:43:33
No sé qué valor tiene esta variable, pero esta variable debería tener un cierto número finido de posibles valores, ¿vale?
00:43:38
Típicamente un menú, ¿vale?
00:43:49
Yo tengo un menú, digo, la opción 1 es esta, la opción 2 es esta, la opción 3 es esta.
00:43:51
Entonces tengo tres posibles valores, 1, 2 y 3.
00:43:55
Tengo cuatro posibles valores, 1, 2 y 3, y cualquier otra cosa, ¿vale?
00:43:58
Cualquier otra cosa me valdría como
00:44:02
Te has equivocado
00:44:04
1, 2 y 3 tengo que hacer cosas concretas
00:44:05
Entonces pillo esta variable
00:44:09
Y voy a comprobar
00:44:11
¿Vale o no?
00:44:12
¿Vale un valor concreto?
00:44:13
Si vale ese valor concreto
00:44:16
Entonces ejecute este código
00:44:18
¿Vale?
00:44:19
Vale 2, ejecute este código
00:44:21
Vale 3, ejecute este código
00:44:23
En base a
00:44:25
¿Cuál pillo de estas?
00:44:27
O sea, ¿Cuál es salida de estas?
00:44:30
de true, ¿vale?
00:44:31
Puede hacer dos cosas.
00:44:34
O ejecutar este bloque
00:44:35
de consentencias y todos
00:44:37
los otros que vienen por debajo.
00:44:39
O salir
00:44:42
con el break. El break
00:44:43
me devolvería al final
00:44:45
del switch. ¿Qué quiere decir?
00:44:47
Mirámoslo aquí.
00:44:50
¿Vale? Entonces yo tengo
00:44:51
switch una variable, x,
00:44:53
¿vale? Case,
00:44:55
en el caso en que valga 1,
00:44:57
pues aquí pongo 1,
00:44:59
ejecutaría esta sentencia
00:45:00
las sentencias 1
00:45:03
si le pongo el break
00:45:04
quiere decir que una vez ejecutada
00:45:07
las sentencias 1
00:45:09
saldría al final del
00:45:11
switch case y seguiría adelante
00:45:13
si no le pongo el break
00:45:15
ejecutaría las sentencias
00:45:17
1 y también las sentencias
00:45:19
2 independientemente de si
00:45:21
el case vale 2 o no
00:45:23
una vez que yo he seleccionado
00:45:24
cuál es el caso
00:45:27
ejecutaré
00:45:28
esas sentencias
00:45:31
y todas las que vienen debajo
00:45:32
hasta llegar a un break
00:45:34
si llega a un break
00:45:36
salgo del switch
00:45:38
si, diría
00:45:40
un ejemplo, así
00:45:50
vale
00:45:52
por ejemplo, me han dado una nota
00:45:53
si, nota
00:45:56
7, pues quiero
00:45:58
transformar este 7 en
00:46:00
suspenso, aprobado
00:46:02
notable, cosas por el estilo
00:46:04
entonces tengo este switch
00:46:06
digo, pillo nota
00:46:07
la variable nota
00:46:10
y miro sus casos
00:46:12
si es 5, en el caso en que sea 5
00:46:13
escribes aprobado
00:46:16
y sales
00:46:18
acabo
00:46:20
en el caso en que
00:46:22
sea 6, pues escribes
00:46:24
bien y sales
00:46:26
en el caso en que sea
00:46:27
7, no hagas nada
00:46:30
pero tampoco el break
00:46:32
¿lo veis?
00:46:35
y en el caso que sea 8
00:46:37
escribe notable
00:46:39
y sale
00:46:41
esto me hace que tanto 7 como 8
00:46:42
me escriberá notable
00:46:45
¿entendéis?
00:46:46
¿entendéis?
00:46:49
yo tengo un 7, saldría aquí
00:46:49
no ejecuto nada, pero ejecuto todo lo que viene
00:46:52
debajo hasta el break
00:46:55
por lo tanto ejecutaría también esto notable
00:46:56
y al break saldría
00:46:59
¿Sí? Entonces, si yo tengo varios casos que harían lo mismo, puedo hacer esto.
00:47:00
Caso 7, 8, 9, 10 y 9, hace esta cosa aquí.
00:47:09
Caso 20, 30, 40, 50, hace esta otra.
00:47:12
¿Entienden?
00:47:16
Fijaos, pero que aquí no estoy preguntándome si es menor, mayor, si es entre unidad.
00:47:17
Pues eso lo hace el IF. Esto es un valor concreto.
00:47:22
Cuando nota, vale ese valor. Ese es el caso.
00:47:25
caso 9 sobresaliente caso 10 matrícula de honor y luego está este de aquí que
00:47:28
viene aquí que me ha saltado vale que es el default el default es un método es un
00:47:35
valor que te dice en todos los otros casos si no has encontrado un caso que
00:47:41
te vale pues aplica el default
00:47:48
si yo no he puesto break antes el default se ejecutará siempre si yo he
00:47:53
puesto break pues entonces sólo en el caso en el que no sea un valor entre entre 5 y 10 en cualquier
00:47:57
otro caso de dar suspecho por aquí se me da 11 pues el suspecho 120 suspecho menos 7 suspecho
00:48:07
¿Entendéis? Y este es el fich. Un ejemplo, es así, hay que probarlo y ver un poquito
00:48:16
cómo funciona. Entonces, lo que vamos a hacer ahora es un poco de código, hago algunos
00:48:31
ejemplos, probamos un poco de IFA, probamos un switch case y cosas por el estilo y luego
00:48:38
como no una banda de 30 artistas la mañana vale entonces sabramos el eclipse
00:48:42
me creo un nuevo
00:48:52
package
00:49:15
con la fecha de hoy
00:49:16
lección
00:49:19
2026
00:49:20
10.07
00:49:23
y aquí dentro creo
00:49:24
un ejemplo
00:49:29
ejemplo if a uno
00:49:30
vale, entonces
00:49:33
la sintaxis del if es sencilla
00:49:41
vale, entonces en base
00:49:44
a un valor que me dan
00:49:46
pues hago algo, vale
00:49:48
casi todos los ejercicios
00:49:50
que os he dado que usan
00:49:53
un ternario
00:49:54
se pueden volver
00:49:57
a rehacer con un if
00:49:58
vale, sería prácticamente lo mismo
00:50:00
Vamos a hacer uno de los ejercicios sencillos de lo que hemos visto.
00:50:02
Dame un número y dime si es par en par.
00:50:06
Entonces, scannerScan es igual a newScannerDeSystem.int
00:50:12
para poder leer.
00:50:18
Si eso lee un número.
00:50:21
intX es igual a scan.nextInt.
00:50:26
He leído un número.
00:50:29
Y ahora me pregunto, si este número es módulo 2 es 0, misma cosa que escribíamos antes, entonces si yo es par, el se, y yo no es par.
00:50:31
En una situación como esta, casi el otro era más compacto, porque al fin y al cabo te daba un string que tú escribías solo una vez un system.out.entendent.
00:50:59
Para estos ejercicios tan sencillos, el otro puede ser una alternativa válida.
00:51:15
Está claro que si yo aquí no te estoy preguntando solo si es par o impar, más te digo, si es par, haz toda una serie de operaciones.
00:51:21
Y si es impar a todo otro ser eliger, pues allí ya es una otra versión.
00:51:28
Allí el otro no lo puedo usar, tengo que utilizar eliger.
00:51:33
Esto es un ejemplo.
00:51:43
Modificámoslo.
00:51:47
Entonces, sí.
00:51:48
Dime si es par o impar, pero también si es positivo o negativo.
00:52:00
Entonces, una forma de hacerlo.
00:52:10
Con esto yo sé si es par o impar.
00:52:13
Cuando digo que es par, y ahora aquí dentro, dentro de este bloque que sé que es par, me pregunto si es positivo o negativo, pero lo podría hacer aquí fuera.
00:52:16
Antes digo si es par o impar, y luego hago otro if para decir si es positivo o negativo.
00:52:26
Pero lo quiero hacer de otra forma. Quiero en una sola cadena decir que es par positivo o par negativo o cosa por el estilo.
00:52:34
de estilo, no sé si me explico, ¿vale? Para forzar
00:52:42
a que el if esté aquí dentro.
00:52:44
¿Sí? Entonces,
00:52:47
yo si estoy en esta rama de aquí,
00:52:48
estoy seguro que es
00:52:51
par, ¿vale? Entonces me vuelvo a preguntar
00:52:52
si
00:52:54
x es mayor que 0,
00:52:55
entonces
00:53:01
es par positivo.
00:53:02
Si no,
00:53:10
es par negativo.
00:53:18
¿Sí?
00:53:22
Es que en esta zona
00:53:23
aquí estoy seguro que es par y aquí me pregunto si es positivo o negativo y lo mismo tendré que
00:53:25
volver a hacer aquí. Aquí sé que es impar, por lo tanto es impar, pero si es mayor que cero es impar
00:53:34
positivo y si es... esto lo he puesto de error. Entonces ahora yo tengo un programa que le digo
00:53:49
el número. Número 7 es en par positivo. Número menos 8 es par negativo. ¿Vale? Número cero
00:54:00
que me da par positivo. Par negativo. Porque le he puesto un escrito mayor que cero. ¿Vale?
00:54:11
Si quisiera que fuera par positivo, le pongo mayor o igual y ahora es cero, es par positivo.
00:54:29
¿Sí? Este es un ejemplo de un if dentro de un if.
00:54:36
¿Mismo ejercicio de otra forma?
00:54:52
Voy a preguntar.
00:55:07
Si es par y mayor que cero, entonces es par positivo.
00:55:09
¿Justo?
00:55:35
Y ahora me pregunto.
00:55:36
¿El se if es así?
00:55:39
pero es menor, entonces es par negativo. El 6, si es 1 o es distinto de 0, como queráis, y es mayor que 0, entonces es impar positivo.
00:55:47
y si no, si es distinto
00:56:29
y menor que cero, es impar.
00:56:40
Negativo. Todo esto ya no me sirve. Fuera.
00:56:48
Se quedaría una cosa así. ¿Vale? Estoy usando
00:56:56
el sí, el sí, el sí, el sí. Hace lo mismo que antes. ¿Vale?
00:57:04
Simplemente estoy comprobando las cuatro opciones.
00:57:08
Yo debería hacer más o menos lo mismo.
00:57:17
7
00:57:20
par positivo
00:57:22
menos 8
00:57:24
par positivo
00:57:26
pero par positivo
00:57:27
no sé cuál gusta más
00:57:30
o los parezca más
00:57:39
claro si este de aquí
00:57:40
o este de aquí
00:57:43
pero
00:57:45
en realidad
00:57:46
esto también me da
00:57:49
es como decir
00:57:52
Si esto, esto, si no, si esto, esto, si no, si esto, esto, en cualquier otro caso, el último caso que me queda es el que no vale ninguno de estos tres, entonces allí sé que es impar negativo.
00:57:57
¿Sí? ¿Dudas? Estos son. ¿Queréis hacer un ejercicio? ¿Me diréis vosotros qué hacer y yo lo hago?
00:58:09
Siempre os doy los ejercicios yo, unir. Si no, pues hacemos un switch.
00:58:27
Hacemos un switch y luego los ejercicios los hacemos después.
00:58:36
Ejemplo, switch.
00:58:43
Copio esto para pillar un número, ¿vale?
00:58:48
Esta parte aquí es la misma. Hagamos un pequeño menú. Hagamos una calculadora.
00:58:59
calculadora. Entonces, ¿qué hago? Pillo tres números. Dame num1, num2, n2, n1. ¿Vale?
00:59:07
Y finalmente, un operador. Operador lo leo como número. ¿Vale? Para hacerlo más sencillo.
00:59:29
1 suma, 2 resta y leo int operador es igual a scan.nexit.
00:59:48
Entonces, aquí estoy leyendo un número, un otro número y luego te pregunto, ¿qué quiero hacer?
01:00:04
¿Sumar o restar?
01:00:09
¿O multiplicar?
01:00:10
Venga, 3 multiplicar.
01:00:11
No pongo la división porque se complica un programa.
01:00:14
No mantengo nada.
01:00:21
¿Vale?
01:00:22
Ok, perfecto. Entonces, en base al valor de esto, yo tendré que hacer cosas distintas de estas.
01:00:23
Entonces, lo que hago es un switch.
01:00:30
Switch sobre operador.
01:00:32
Y me digo, en el caso en que sea 1, si eso, num1 más num2.
01:00:35
N1 más N2.
01:00:51
Se me olvida el break. Case dos, dos puntos, siso, n, n1, menos n2. Case tres, dos puntos, siso, n1, multiplicado n2.
01:00:54
Entonces lanzo esto y le digo
01:01:19
¿Cuál es el número uno? Dos
01:01:26
¿Cuál es el número dos? Tres
01:01:28
¿Qué quieres hacer? Multiplicar
01:01:31
Seis, perfecto, funciona fenomenal
01:01:33
Entrego esto y saco un
01:01:36
No, seis
01:01:39
¿Por qué?
01:01:41
Porque si ahora le digo, vale, número cuatro
01:01:44
3, súmalos
01:01:47
el resultado sería 7
01:01:50
y él me escribe 7, 1, 12
01:01:51
¿por qué?
01:01:53
porque él entra
01:01:56
en este
01:01:57
case y como
01:02:00
no hay break, él ejecutará
01:02:02
esto, esto y esto
01:02:04
entonces hace las 3 operaciones
01:02:06
¿entiendes?
01:02:08
entonces aquí le pongo un break
01:02:12
ya está
01:02:14
entonces ahora si le pongo
01:02:21
Muestres suma. Ahora recuerdo la cara malvada de un italiano medianamente alto que me enseñaba
01:02:25
programación y siempre me ha dicho pon las llaves en los bloques. Entonces le pongo llaves en los
01:02:40
bloques para que sepas cada caso donde piensa y donde acaba. Y si quiero lo puedo poner así,
01:02:47
si lo veis mejor vale esto no cambia nada desde la perspectiva de cómo funciona cuando son pocos
01:02:59
como en este caso que sólo escribir y hacer break hasta en una línea sola no no da problema si se
01:03:15
ve bien cuando aquí hay que meter 25 líneas de código pues entonces está bien que sea marcado
01:03:22
con él con este aquí y te diga aquí empezó a casa 3 aquí acaba a mí me gusta más así vale yo lo veo
01:03:28
más claro pero como mi mente que ha aprendido a programar en 2000 pues lo ve vale luego él le
01:03:39
gusta más así. Vale, entrego esto y saco 5,5. Aprobado. Está muy bien. ¿Por qué? Porque quedan
01:03:48
cosillas feas, como por ejemplo si pongo 6 y 5 y 6. No hace nada. Pongámosles algo. Mira que estás
01:04:13
equivocado pues entonces aquí le pongo default en cualquier otro caso siso operación no admitida
01:04:23
Entonces 1, 2 y le pongo... Ya está, ya tengo un 6. ¿Dudas? Sí. Código es esto.
01:04:37
¿Esto se puede hacer con un if? Claramente, sí. op es igual a igual a 1, hace esto. else if op
01:05:15
2, hace esto, o dice, a ver, else, etc. Es un if-else. Solo que cuando la opción es,
01:05:27
pilla un número y compáralo en varios valores, ponga que es en cien valores, pues esta cosa
01:05:38
de aquí suele parecer más estructurada, más fácil de leer con respecto a poner un if-else,
01:05:43
y flex, y flex, y flex, y flex.
01:05:53
¿Esto funciona solo con enteros?
01:05:58
No. Funciona también con char,
01:06:02
con double, con lo que te da la gana.
01:06:03
Funciona también con string.
01:06:05
¿Vale? La string que ponga
01:06:08
aquí se equivalerá aquí con
01:06:09
no igual, igual,
01:06:11
más un punto de igual.
01:06:13
Todo funciona.
01:06:15
¿Vale?
01:06:17
Con otros objetos no lo he probado
01:06:19
en mi vida.
01:06:21
¿Duras?
01:06:22
Vale.
01:06:33
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Autor/es:
- Stefano Chiesa
- Subido por:
- Stefano C.
- Licencia:
- Reconocimiento - No comercial
- Visualizaciones:
- 1
- Fecha:
- 7 de octubre de 2026 - 12:21
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 1h′ 06′ 36″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 160.98 MBytes