20240930 ProgrEstruct-Ejercicios - 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 este enunciado
00:00:00
es un ejemplo de enunciado que
00:00:03
no está especialmente claro
00:00:05
entonces uno pregunta y dice
00:00:08
¿pero qué significa asegurándose de que no sea negativo?
00:00:09
lo que significa es
00:00:12
la única forma de que el resultado sea
00:00:13
no negativo es que tú decidas
00:00:15
quién es el minuendo y quién es el sustraendo
00:00:18
en función de cuál es el mayor
00:00:20
entonces siempre que pongas
00:00:21
el mayor el minuendo y el menor el sustraendo
00:00:23
es la única forma de asegurarse de que no sea
00:00:26
negativo, ¿vale?
00:00:28
restar siempre el más pequeño del más grande
00:00:29
pues a eso se refiere
00:00:32
entonces esto
00:00:33
pues de nuevo hay muchas formas de hacerlo
00:00:35
pero por ejemplo
00:00:37
podemos hacer lo siguiente
00:00:38
necesitamos
00:00:45
claro, en función de una condición
00:00:46
haces la resta de esta manera
00:00:53
o la haces de la otra
00:00:55
esa sería una de las posibilidades
00:00:56
otra sería
00:00:58
hacer la resta
00:01:01
Y si te da negativo, multiplicarlo por menos 1.
00:01:02
Por ejemplo, hay varias opciones.
00:01:05
Quizás esto estaba más pensado como se trata de hacer las comparaciones,
00:01:07
pues hacer la condición de menor que y mayor que y ya está.
00:01:13
Vale, entonces lo que está claro es que del teclado hay que leer.
00:01:17
Entonces, como del teclado hay que leer, pues esto sí o sí.
00:01:20
Vale, y ahora siempre presente, ¿con qué datos trabaja mi aplicación?
00:01:32
Va a trabajar con dos números dabel
00:01:37
Pues como trabaja con dos números dabel
00:01:39
Me declaro dos variables dabel
00:01:42
Vale
00:01:44
Esto se importa
00:01:48
¿Leer los datos de dónde se leen?
00:01:50
¿Del teclado?
00:01:55
Pues venga, leer los datos del teclado
00:01:56
Podemos hacerlo ya de partida
00:01:58
Sin pensar todavía en nada posterior
00:01:59
Pues venga, esto
00:02:01
Vale, pues nada
00:02:03
En num1 guardamos el resultado de leer un dabel
00:02:23
y en num2 guardamos el resultado de RR el otro
00:02:28
y ahora ya es donde empieza el análisis
00:02:35
de nuestra aplicación, cómo hacemos el diseño, etc.
00:02:44
los datos de entrada ya los tenemos
00:02:48
y los tenemos guardados en las variables
00:02:49
correspondientes según su tipo
00:02:51
vale, pues el resultado es mostrar una cantidad
00:02:54
un numerito, es mostrar una cantidad
00:02:57
que además nos dicen que es la resta de esos
00:03:00
entonces el resultado va a ser también un número decimal
00:03:02
el resultado es este
00:03:06
y estamos como siempre
00:03:08
el resultado de mi aplicación va a ser
00:03:10
mostrar esto, ese va a ser
00:03:12
el resultado de mi aplicación
00:03:17
vale, entonces
00:03:19
ahora tengo que decir, a ver
00:03:21
pues antes
00:03:23
de mostrarlo, tengo que decir
00:03:25
vale, muy bien
00:03:27
¿qué valor le das al resultado?
00:03:28
¿el resultado cómo se obtiene? ¿cómo obtengo yo
00:03:31
el resultado? te dicen la resta
00:03:33
si te dijeran la resta sin más
00:03:35
Sería muy fácil
00:03:37
Esto y nuestra aplicación ya estaría terminada
00:03:39
Nos han dicho la resta sin más
00:03:42
Pues ya estaría, aplicación terminada
00:03:44
Pero nos han dicho
00:03:46
Ojo, no puede ser negativo
00:03:47
Con lo cual tenemos dos opciones para la resta
00:03:49
O bien esta
00:03:53
O bien la otra
00:03:53
O bien esta otra
00:03:56
No sabemos que asignación darle a result
00:03:57
Le damos esta o le damos esta otra
00:04:06
Estamos entre dos opciones
00:04:08
Pues depende
00:04:10
Depende de que número es mayor
00:04:12
vale, pues entonces estamos en una asignación condicionada
00:04:14
la asignación condicionada
00:04:17
ya podemos hacerla, oye, ¿cuál es la condición
00:04:19
de la cual depende que haga yo la resta
00:04:21
en un orden o en la otra?
00:04:23
de si num1 es mayor que num2
00:04:25
bueno, pues entonces ya
00:04:27
num1 es
00:04:29
mayor que num2
00:04:33
esa es la condición de la que depende
00:04:35
si es mayor
00:04:37
entonces esta es la asignación
00:04:38
que hago, no, no es mayor
00:04:41
es menor o igual
00:04:42
Pues entonces hago esta otra
00:04:45
Y ya está
00:04:47
Y esto fuera
00:04:51
¿Vale?
00:04:53
Entonces ya tenemos la resta
00:04:55
Pero con la garantía de que el orden
00:04:57
De los elementos de la resta
00:04:59
Depende de esto
00:05:02
Y así nunca va a ser negativa
00:05:04
Puede ser 0, eso sí
00:05:06
Si un 1 es igual que un 2
00:05:08
Entonces esta condición será falsa
00:05:10
Entonces al ser falsa
00:05:13
Aquí no entra
00:05:14
Entra aquí
00:05:14
pero al ser iguales dará 0
00:05:16
vale, pues da 0, está bien
00:05:20
vale, entonces aunque parezca muy sencillo
00:05:21
uno siempre tiene que hacer las pruebas
00:05:25
y probarlo
00:05:27
23, número 2
00:05:28
98, la resta es 75
00:05:43
y sigue siendo
00:05:46
75, aunque lo haya metido yo en este orden
00:05:53
vale, dime
00:05:55
a ver, si esto es true
00:06:02
lo verdadero es la primera parte
00:06:09
La primera parte es lo que asigna
00:06:11
Si esto es verdad
00:06:15
Y la segunda si es falsa
00:06:16
Porque de una condición solo hay dos opciones
00:06:19
Verdad o mentira, no hay más
00:06:21
O es verdad o es mentira
00:06:23
Por eso hay dos partes
00:06:24
O esta o esta
00:06:26
Tal y como está, si los dos números son iguales
00:06:29
Esta es falsa
00:06:34
Claro, haría 3 menos 3, 0
00:06:35
En este caso sí
00:06:39
otra cosa es que nos dijeran que en el caso
00:06:40
de que sean iguales, hiciéramos una tercera cosa
00:06:43
pero si nos dicen eso, pues entonces
00:06:45
la operación de asignación así tal
00:06:47
como la tenemos no nos vale, porque esa solo nos da
00:06:49
dos posibilidades, dos
00:06:51
o esta primera o esa segunda, dos posibilidades
00:06:52
vale, vamos a ver si hay
00:06:55
alguna otra que tenga
00:06:57
vale
00:06:58
bueno, esto ya he visto por ahí que lo habéis
00:07:05
hecho muchos, dos variables enteras
00:07:12
Bueno, es que está muy fácil
00:07:14
Dos variables enteras, indicar cuál de los dos
00:07:18
Tiene más productos
00:07:20
Pues depende
00:07:21
Bueno, venga, vamos, como no tardamos nada
00:07:22
Vamos a hacerlo también
00:07:28
Venga, ejercicio 16
00:07:30
Leemos dos variables enteras
00:07:44
Copio el escáner otra vez
00:07:46
Vale, lee dos variables enteras
00:07:52
Pues venga, leemos dos variables enteras
00:08:12
Voy a copiarlo de aquí
00:08:14
Lo que pasa es que tendré que cambiar el double por int
00:08:15
Pero vamos
00:08:18
Leemos dos variables enteras
00:08:19
Y aquí entonces esto tendremos que cambiar
00:08:27
A int
00:08:33
Y esto también cambiará a int
00:08:34
Y esto lector
00:08:38
Vale, esta primera variable entera
00:08:44
Es lo que hay en el almacén 1
00:08:48
Y esta segunda variable es lo que hay en el almacén 2
00:08:50
vale, entonces
00:08:55
los datos de entrada ya están
00:09:01
esto es lo más fácil
00:09:03
dos variables enteras para mis dos datos de entrada
00:09:04
guardados en las variables que corresponden
00:09:07
ahora, ¿qué dice?
00:09:09
el resultado ahora
00:09:12
es mostrar un mensaje
00:09:13
vale, luego mi resultado
00:09:16
ahora no es un número
00:09:17
no es una resta, no es no sé qué
00:09:19
es un mensajito
00:09:21
bueno, luego mi resultado va a ser
00:09:22
ahora mismo, con lo que yo sé
00:09:25
que todavía el stream no sé nada,
00:09:27
pues mi resultado será aquí escribir algo.
00:09:29
Todavía no sabemos el qué.
00:09:33
Ahí escribir algo.
00:09:34
Ese es el resultado de mi programa.
00:09:35
Vale, ¿qué tengo que escribir ahí?
00:09:36
Estoy en el 16.
00:09:39
Pues analizando el enunciado, son dos posibilidades.
00:09:41
¿El almacén 1 tiene más o el almacén 2 tiene más?
00:09:46
Entonces, estoy en la misma.
00:09:50
Tengo dos posibilidades.
00:09:51
Luego, este mensajito de aquí, en realidad, son dos opciones.
00:09:53
O bien la primera opción, que es almacén uno más, así he escrito a lo bestia, o bien la segunda.
00:09:55
Es decir, no tengo una única salida posible, tengo dos posibilidades, o esta o esta.
00:10:22
Vale, pues estoy en el mismo caso, dependiendo de una condición.
00:10:30
¿La condición la conozco? Sí, la condición va a ser esta.
00:10:33
Num1 es mayor que num2
00:10:37
Pues si el numerito 1 es mayor que el numerito 2
00:10:41
Muestra la primera
00:10:48
Y si no, muestra la segunda
00:10:50
¿Vale? Aquí es cuando uno ya puede dejar esto así
00:10:53
Hacer sus pruebas y ya se da cuenta
00:10:57
De que muy bonita no está
00:10:59
Uno hace las pruebas
00:11:00
Venga, almacén 1 tiene 65 cosas
00:11:03
Almacén 2 tiene 23
00:11:06
Uy, que bien, ha funcionado
00:11:07
Vale, otra prueba, uno no hace una prueba y se acabó, claro, la otra prueba que haría el otro extremo, pues haría, este tiene 7 y este tiene 8, almacén 2 más, muy bien, vale, sigue haciendo pruebas, tiene que contemplar todos los casos, el almacén 1 tiene 6 y el almacén 2 tiene 6, dice almacén 2 más, dice, wow, ¿y esta aplicación funciona?
00:11:08
no tiene errores de ejecución
00:11:36
pero no hace lo que tiene que hacer
00:11:38
entonces la tendremos que retocar
00:11:40
porque no hace lo que tiene que hacer
00:11:42
vale, pues nos vamos al código
00:11:44
y entendemos primero
00:11:47
dónde está el problema
00:11:48
entendemos primero dónde está el problema
00:11:49
y lo entendemos porque decimos
00:11:52
uy, claro
00:11:54
cuando num1 es mayor que num2
00:11:54
o sea, true, está claro, no hay duda
00:11:57
el almacén 1 tiene más
00:12:00
pero qué pasa en el caso que me ha dado problemas
00:12:01
que num1 y num2 sean iguales
00:12:04
entonces esto es falso
00:12:06
al ser falso
00:12:08
efectivamente
00:12:09
al ser falso se va a ir aquí
00:12:13
es así nuestro problema
00:12:15
esta condición puede ser falso
00:12:17
tanto porque num1
00:12:19
sea igual a num2
00:12:21
como porque num1 sea menor
00:12:23
que num2, puede ser falso en ambos casos
00:12:25
y para los dos casos
00:12:28
me suelta esto
00:12:30
para los dos, no nos vale
00:12:31
Queremos distinguirlo
00:12:33
Entonces ahora decimos, vale
00:12:36
En el caso true está claro, esto está muy bien
00:12:38
Pero ¿qué pasa en el false?
00:12:40
En el false de nuevo
00:12:42
Quiero distinguir entre dos posibilidades
00:12:44
Iguales o almacén dos más
00:12:46
Luego aquí en realidad, dependiendo de una condición
00:12:48
Dependiendo de una condición
00:12:53
Tendré otra vez
00:12:55
Dos posibilidades
00:12:56
Eso
00:12:58
Aquí claro, ¿qué condición pongo?
00:13:00
aquí ya sí que podré poner
00:13:06
num2 mayor que num1
00:13:08
si esto es true
00:13:11
almacén 2 más
00:13:13
y si esto es falso
00:13:14
si eso es falso es que ya no hay más opciones
00:13:16
que que sean iguales
00:13:19
claro, porque ya venía de que esta era falsa
00:13:20
entonces si num1 mayor que num2
00:13:23
es falsa
00:13:25
num2 mayor que num1 también es falsa
00:13:26
solo hay una posibilidad
00:13:28
y es que num2 y num1 sean iguales
00:13:30
solo hay una
00:13:33
vale
00:13:34
entonces
00:13:37
esto es un poco lo más lioso del operador
00:13:38
condicional, que lo puedes ir anidando
00:13:41
es decir, la condición
00:13:43
me da dos opciones, pero luego dentro
00:13:46
de cada una de ellas, también lo podría poner aquí
00:13:47
en el caso de que sea true
00:13:49
además se cumple esta cosa, pero
00:13:51
se entiende peor
00:13:53
entonces también lo puedo anidar
00:13:54
una condición tiene los dos lados
00:13:56
este lado o el otro lado
00:13:59
pero este otro lado de nuevo lo puedo dividir
00:14:00
También en dos opciones.
00:14:03
¿Vale?
00:14:07
Entonces uno hace ya la prueba de esto.
00:14:07
Y dice, a ver, voy a hacer el caso de prueba que me fallaba.
00:14:10
Pues sí, son iguales.
00:14:14
¿Vale?
00:14:16
Claro, a lo mejor le ha empezado a fallar porque sin darse cuenta ha cambiado algo y ya no le funciona para los casos en los que le funcionaba antes.
00:14:17
Pues sí que funciona.
00:14:24
Y para este caso pues también funciona.
00:14:28
Bueno, este que no lo haya hecho que lo haga.
00:14:45
Y si tiene problemas que lo diga
00:14:48
Vale
00:14:50
A ver, ahora hay ejercicios que involucran
00:14:51
Operadores and or los de lógica booleana
00:14:54
De estas
00:14:56
Vale, vamos a buscar alguno que tenga
00:14:57
Venga
00:15:00
Por ejemplo, vamos a
00:15:16
Eh
00:15:19
Hacer el 18, por eso de que
00:15:19
Hay dos variables booleanas, que se os puede hacer más raro
00:15:25
Venga
00:15:27
Ejercicio 18
00:15:29
Vale
00:15:39
Venga, leemos dos variables boolean
00:15:40
Dos variables boolean por teclado
00:15:45
Luego el escáner
00:15:47
Tiene que estar
00:15:49
Y ahora las variables boolean que vamos a leer
00:15:50
Pues esta es para
00:16:04
La asignatura 1, por ejemplo
00:16:05
Y esta es para la asignatura 2
00:16:07
Ya le podemos decir
00:16:10
A ver
00:16:16
Aprobó asignatura 1 para que nos meta
00:16:17
True o false, que es lo único que nos puede meter
00:16:20
Con una variable boolean
00:16:21
Asignatura 1, y le vamos a decir
00:16:22
le vamos a dar la información
00:16:29
de que nos escriba true o false
00:16:30
la aprobó
00:16:33
esto dentro de la
00:16:38
las comillas, ahí
00:16:40
y ahora ya leemos el boolean
00:16:42
pues así, 1 igual a
00:16:47
scan.
00:16:49
Ah, next, está poniendo read, vale
00:16:57
next boolean
00:17:01
y lo mismo con la asignatura 2
00:17:03
aprobó asignatura 2
00:17:05
vale
00:17:15
Vale, entonces
00:17:23
Ya tenemos los datos
00:17:26
ASIC 1 puede ser true o false
00:17:27
En función de si aprobó la primera
00:17:30
ASIC 2 puede ser true o false en función de si aprobó la segunda
00:17:31
Lo que haya metido el tío
00:17:34
Y ahora ya
00:17:35
La pregunta es
00:17:36
Si muestra un mensaje diciendo
00:17:39
Si aprueba o repite
00:17:42
Vale
00:17:44
Pues estamos en las mismas
00:17:45
El resultado de la
00:17:47
Aplicación es
00:17:49
Dos posibilidades
00:17:50
Entonces, ¿aprueba o repite?
00:17:52
Entendemos, habría que preguntárselo a quien nos lo pidió,
00:17:57
entendemos que aprueba es si ha aprobado las dos
00:17:59
y repite con que tenga suspensas alguna de las dos.
00:18:02
Entonces, ¿qué vamos a mostrar?
00:18:07
¿Aprueba o repite?
00:18:09
Dependiendo de una condición.
00:18:11
Y ahora ya esa condición hay que pensar.
00:18:14
A ver, esa condición tiene que ser la que refleje este hecho.
00:18:16
El estudiante aprueba si los dos módulos están aprobados
00:18:20
Y repite si alguno de los dos está suspenso
00:18:25
Bueno, pues ahora tenemos que traducir eso a una condición aquí
00:18:28
¿Qué condición pondríais?
00:18:32
¿Cuál?
00:18:35
ASIC 1 y ASIC 2
00:18:39
No hace falta
00:18:45
Claro
00:18:48
A ver
00:18:50
lo puedes poner
00:18:52
pero es redundante
00:18:53
claro, es como decir
00:18:55
esta mesa es amarilla
00:18:58
es algo que es verdad o mentira
00:19:00
luego es un boolean, es un enunciado boolean
00:19:01
y decir esta mesa es amarilla
00:19:04
es verdad, también es un boolean
00:19:06
pero estoy diciendo lo mismo
00:19:08
si yo digo
00:19:10
que esta mesa es amarilla es verdad
00:19:11
estoy expresando
00:19:13
el mismo hecho booleano que decir
00:19:15
esta mesa es amarilla
00:19:18
estoy diciendo lo mismo
00:19:18
Entonces
00:19:20
Uy, perdón, es que no me había dado cuenta
00:19:21
Que es que no me había dado cuenta que estaba subida
00:19:27
Perdón
00:19:29
Vale, a ver
00:19:30
Se ve bien la letra al final
00:19:35
Y se ve mejor así
00:19:38
O
00:19:42
A ver
00:19:44
A ver
00:19:59
¿Se ve mejor en negro o en blanco?
00:20:14
En blanco
00:20:18
Vaya hombre
00:20:18
¿Seguro?
00:20:20
¿Tengo que deshacer el cambio?
00:20:22
¿Se ve mejor en blanco seguro?
00:20:24
Venga
00:20:27
Espera, voy a
00:20:27
Vale
00:20:32
Pues hemos puesto el primer ejemplo
00:20:35
De ejercicio con un operador booleano
00:20:38
Vale
00:20:40
Entonces, os pueden parecer
00:20:42
Ah, bueno, está muy sencillo de entender
00:20:45
No es tan fácil
00:20:46
Luego, cuando me dan una condición cualquiera
00:20:48
Pasar a la expresión
00:20:51
Aquí me han dicho
00:20:53
¿Va a pasar de curso?
00:20:54
Yo lo traduzco, para pasar de curso
00:20:56
O decir aprobar
00:20:58
Bueno, esto quizá queda más claro
00:21:00
Si ponemos aquí
00:21:03
Pasa de curso
00:21:07
O promociona
00:21:09
Que pasa de curso suena muy raro
00:21:10
promociona
00:21:11
¿vale? entonces a mí el enunciado
00:21:13
me decía, ¿si promociona o no?
00:21:16
entonces
00:21:18
claro, porque es que no tienes que poner un
00:21:18
número, tienes que poner un boolean
00:21:24
estamos leyendo variables booleanas
00:21:25
variables booleanas, de todas maneras
00:21:28
esa es una manera
00:21:32
muy mala, no conmigo, porque
00:21:34
sino en general, cuando tú eres en un centro de trabajo
00:21:35
nunca digas, uy eso está mal
00:21:38
jamás digas eso
00:21:40
di, anda
00:21:42
me está pasando esto
00:21:42
me he encontrado un problema
00:21:46
nunca digo que está mal
00:21:46
porque está fuera
00:21:47
que se cree un listo y dice que esto está mal
00:21:51
así que vuestra forma de hablar
00:21:54
tenéis que irla adaptando al entorno
00:21:56
en el que vais a trabajar
00:21:57
¿vale? bueno, a ver
00:21:58
en este caso
00:22:01
más o menos se entiende
00:22:03
silencio, estáis un poquito
00:22:05
revolucionados hoy
00:22:07
en este caso
00:22:09
traducir lo de promociona
00:22:11
al and lógico
00:22:13
era más o menos trivial, pero decimos, vale, para promocionar
00:22:14
tengo que aprobar esta
00:22:17
y también esta, y también esta, lo que es lo mismo
00:22:18
todas, entonces aprobar esta
00:22:21
y aprobar esta, y aprobar esta
00:22:23
se traduce inmediatamente
00:22:25
al and lógico
00:22:27
se traduce, hay veces que la traducción
00:22:28
no es tan sencilla
00:22:31
entonces, en este caso
00:22:33
cuando esta condición va a ser true
00:22:35
cuando esta sea
00:22:37
true y también
00:22:39
simultáneamente
00:22:41
cuando esta también sea true
00:22:42
simultáneamente
00:22:45
luego el alumno va a promocionar
00:22:46
si ha aprobado la primera y también
00:22:49
ha aprobado la segunda
00:22:51
¿cuándo va a ser false?
00:22:52
en cualquiera de los tres casos restantes
00:22:54
esta true pero esta no
00:22:57
ahí será false
00:22:59
esta true pero esta no
00:23:00
ahí será false
00:23:03
o las dos son false
00:23:04
luego el operador
00:23:05
AND, ¿vale? En su tabla
00:23:09
de verdad que se llama,
00:23:11
solo tiene true si las dos son true.
00:23:13
Si está true y está false, el total
00:23:15
false. Si está false y está true,
00:23:17
el total false. Si está false
00:23:19
y está false, el total false.
00:23:21
¿Vale? Así como funciona el operador AND.
00:23:23
Pues, entendiéndolo bien, cómo funciona
00:23:26
ese operador, ahora ya lo
00:23:27
usamos para expresar condiciones
00:23:29
cuando aplique y cuando tenga sentido.
00:23:31
Aquí lo tiene. ¿Vale?
00:23:33
Entonces,
00:23:37
si nosotros ejecutamos esto
00:23:38
Uy, se me había ponido el paréntesis
00:23:43
¿Aprobó la asignatura 1?
00:23:49
Sí
00:23:52
¿Aprobó la asignatura 2?
00:23:52
No, pues repite, claro
00:23:54
¿Aprobó la asignatura
00:23:56
1? No, la aprobó
00:23:59
¿Aprobó la asignatura 2?
00:24:01
Esta sí, pues sigue repitiendo
00:24:03
¿Aprobó esta?
00:24:05
Sí, aprobó esta, sí
00:24:09
Solo en este caso promociona
00:24:10
¿Vale? Solo en este caso
00:24:12
¿Vale?
00:24:15
Está hiper mega claro
00:24:32
El operador
00:24:34
AND este
00:24:37
Lo que significa
00:24:38
Luego ya otra cosa es, repito
00:24:40
Usarlo para hacer expresiones
00:24:43
Que representen lo que yo quiero
00:24:45
A veces será fácil, a veces no
00:24:47
Pero lo que significa está claro, ¿no?
00:24:48
Une dos condiciones
00:24:51
Es decir, lo que tiene a los lados
00:24:52
El operador AND este
00:24:55
tienen que ser boolean también
00:24:57
aquí tiene que haber un boolean
00:24:58
o una condición que es lo mismo
00:25:00
condición y boolean
00:25:02
y aquí tiene que haber un boolean o una condición que es lo mismo
00:25:03
pues une dos condiciones
00:25:06
o dos booleanos, como lo queráis llamar
00:25:08
y el resultado final es también
00:25:09
una condición u otro booleano
00:25:12
true si los dos son true
00:25:15
false en cualquier otro caso
00:25:17
vale
00:25:18
bueno y ahora
00:25:19
igual
00:25:22
me volvéis a preguntar
00:25:23
porque ya me preguntasteis
00:25:26
cuando estábamos con la lista de operadores
00:25:28
que no la hemos terminado
00:25:29
lo que pasa es que nos hemos parado
00:25:30
en esa lista
00:25:31
por hacer los ejercicios
00:25:32
y todo eso
00:25:37
vale
00:25:37
cuando hemos visto para las booleanos
00:25:40
decíais, uy, tengo dos formas de ponerle
00:25:42
de ponerlo
00:25:45
solo un and o dos
00:25:46
hay dos formas de ponerlo
00:25:48
venían los apuntes
00:25:50
de hecho voy a poner la otra
00:25:53
Porque si en los apuntes decía que las dos eran en antes, voy a poner la otra.
00:25:56
Compilar, compila.
00:26:00
No le ha cagado.
00:26:01
Pero si hay dos polls, te va a ayudar.
00:26:01
No.
00:26:05
Vamos a probar los cuatro casos.
00:26:05
A ver si en los cuatro casos.
00:26:07
¿Aproba asignatura 1?
00:26:08
True.
00:26:10
¿Aproba asignatura 2?
00:26:10
True.
00:26:12
Promociona.
00:26:12
¿Aprobó esta?
00:26:16
¿Aprobó esta?
00:26:19
Repite.
00:26:20
¿Aprobó esta?
00:26:26
¿Aprobó esta?
00:26:28
Repite.
00:26:29
Nos queda solo un caso por probar.
00:26:29
aprobó esta, aprobó esta
00:26:31
repite
00:26:34
el programa funciona exactamente igual
00:26:34
que si le pongo el doble
00:26:37
no hay ninguna diferencia
00:26:39
entonces ¿para qué hay dos?
00:26:40
vale, efectivamente
00:26:44
en este caso no hay ninguna diferencia
00:26:45
pero podría haberlo en otro caso
00:26:47
a ver, ¿cuál es la diferencia entre que haya uno
00:26:49
y que haya dos?
00:26:51
¿vale?
00:26:55
a ver si lo entendemos
00:26:56
tampoco es una cosa que es especialmente fácil de entender
00:26:57
vamos a ver
00:27:00
¿qué hace la máquina virtual?
00:27:01
silencio
00:27:05
¿qué hace la máquina virtual cuando le toca evaluar
00:27:06
una condición con doble AND?
00:27:09
con doble AND
00:27:12
¿vale?
00:27:13
primero
00:27:15
evalúa esto
00:27:16
y se lo guarda
00:27:19
en algún sitio
00:27:20
luego, evalúa esto
00:27:22
y se lo guarda en algún sitio
00:27:25
luego hace
00:27:27
la operación lógica, el i
00:27:29
los dos son true, true
00:27:32
uno de los dos no, false
00:27:34
eso es lo que creéis que hace
00:27:36
¿verdad? pues no hace eso
00:27:38
¿vale? no hace exactamente eso
00:27:40
estoy hablando del
00:27:42
caso de que tenga el doble and
00:27:44
o sea, lo que yo he dicho, lo que acabo
00:27:45
de decir, que es lo que vosotros creíais que hacía
00:27:48
eso es exactamente
00:27:50
lo que hace cuando hay un simple and
00:27:52
cuando hay un simple and
00:27:54
no hay duda, es lo que vosotros habéis creído siempre
00:27:56
¿qué hace? Coge la primera
00:27:58
condición y la evalúa. En este
00:28:00
caso, es ya directamente coger
00:28:02
el true que tenía. Coge
00:28:04
la segunda condición y la evalúa.
00:28:06
Y ahora ya, mira a ver,
00:28:08
¿las dos son true, true?
00:28:10
¿Alguna es false? ¿O las dos
00:28:12
false? Eso es
00:28:14
exactamente lo que hace cuando hay un simple A.
00:28:16
Entonces la pregunta sería,
00:28:19
¿y por qué existe un doble A?
00:28:20
Pues existe un doble A para
00:28:22
ahorrarnos tiempo. Porque precisamente
00:28:23
el operador AND
00:28:26
si después de evaluar la primera
00:28:29
le ha dado false
00:28:31
la segunda
00:28:32
se la trae al fresco completamente
00:28:34
¿qué más le da?
00:28:37
que la segunda sea true o false
00:28:38
ya sabe que el resultado va a ser false
00:28:40
ya lo sabe, da igual lo que sea
00:28:42
¿vale?
00:28:44
entonces cuando ponemos el doble AND
00:28:47
cuando ponemos el doble AND
00:28:49
la máquina virtual
00:28:51
¿qué da?
00:28:53
evalúa la primera
00:28:54
y mira lo que es.
00:28:55
¿Es true?
00:28:58
Pues entonces tiene que ir a evaluar la segunda.
00:28:59
Porque depende de la segunda el resultado.
00:29:01
Depende de la segunda.
00:29:04
Pero si después de evaluar la primera
00:29:06
ha visto que es falsa,
00:29:08
no hace nada más para que ya
00:29:10
tenga el resultado final.
00:29:11
Que es falsa. Ya lo tiene.
00:29:13
¿Vale?
00:29:15
Conclusión.
00:29:18
¿Qué pregunta
00:29:19
me haríais ahora?
00:29:20
¿Cuál es el comentario
00:29:23
natural a esto
00:29:24
pues que esto sirve para
00:29:25
si cambias una condición por el camino
00:29:27
efectivamente
00:29:29
ahora lo que me diríais es
00:29:32
y entonces para que existe la versión
00:29:33
con uno
00:29:36
para que existe, hagamos siempre la versión
00:29:37
con dos, porque te ahorra tiempo
00:29:40
porque si siendo esta falsa
00:29:42
y ya sabes que es falsa, que más te da
00:29:44
esta, que más te da
00:29:46
claro, es que a veces
00:29:48
como ya hemos dicho
00:29:50
en el pasado, y lo tendréis seguramente grabado
00:29:52
todo en la memoria, porque recordad que lo vais
00:29:54
memorizando todo, porque si no lo vais
00:29:56
memorizando todo, estamos hundidos
00:29:58
esta es la que valora las dos opciones
00:30:00
esta es la que valora las dos
00:30:02
la de un único AN
00:30:04
la de un único AN
00:30:05
que ya tengo arreglada la mnemotécnica
00:30:08
si solo hay uno, evalúo las dos
00:30:10
si solo hay dos, evalúo uno
00:30:12
y la segunda solo si lo necesito
00:30:14
a veces lo necesitaré y a veces no
00:30:16
solo si lo necesito
00:30:19
bueno, pues la pregunta que me diréis es
00:30:20
¿y por qué existe
00:30:22
el simple
00:30:24
porque quiero yo evaluar la segunda
00:30:25
aunque no lo necesite
00:30:28
bueno, pues porque existe la variante
00:30:29
del simple, porque
00:30:32
como hemos dicho en su momento
00:30:33
cuando hacemos una condición
00:30:35
ponemos una expresión de condición
00:30:38
a la vez que usamos una variable
00:30:40
para
00:30:42
que tome valor en esa expresión
00:30:44
en esa condición, podemos a la vez
00:30:46
asignarle un valor si nos da la gana
00:30:48
lo vimos con los operadores, por ejemplo
00:30:49
Metíamos el operador más más
00:30:52
Que nos deja de ser una asignación
00:30:54
Entonces usábamos una variable x
00:30:56
¿Verdad?
00:30:58
Por ejemplo
00:31:05
Hemos hecho a veces
00:31:06
Una expresión como esta
00:31:07
x más más 3
00:31:09
x más más más, tres máses
00:31:10
Igual a x más más más 3
00:31:13
Vale, bueno, pero lo voy a poner en la
00:31:16
En el
00:31:18
Paint para que se grabe
00:31:20
En esta cosa
00:31:21
Vale, vendría muy bien una pizarra digital, ¿verdad?
00:31:25
Para escribir en ella
00:31:31
Pues tenía una
00:31:32
Para las clases del
00:31:37
Confinamiento, cuando estábamos en casa
00:31:38
¿La podría traer?
00:31:40
Vale
00:31:43
Joder, yo quería
00:31:44
Vale, ya hemos hecho esto, ¿verdad?
00:31:46
¿Vale? Ya hemos hecho estas
00:32:07
Por ejemplo, hemos hecho expresiones como esta
00:32:08
Las hemos hecho a veces, ¿vale?
00:32:10
Esta expresión ya nos acordamos todos
00:32:13
De qué significaba
00:32:14
porque repito por la vez número 315
00:32:15
todo lo tenéis que estudiar
00:32:19
y volver a hacer en casa, mirarlo
00:32:22
si no os habéis enterado a mirar la grabación
00:32:24
todo lo tenéis que estudiar y todo lo tenéis que dejar grabado a la memoria
00:32:26
no venís de un día para otro sin tener todo lo anterior
00:32:30
perfectamente grabado y memorizado
00:32:33
y ojalá entendido, si no es entendido pues me lo preguntáis
00:32:35
porque si no estamos condenados
00:32:39
Bueno, pues entonces, como no es ese vuestro caso y si lo tenéis todo refrescado, recordáis que hemos evaluado expresiones como esta. ¿Qué significaba esto? Pues que la x, ¿vale? A la vez que formaba parte de una expresión del tipo x más 3, porque y era igual a x más 3, además se le estaba asignando un valor. Esto era como hacer x más 3 y luego después a x hacerle x más 1, ¿vale?
00:32:42
Entonces, ¿qué quiero decir con esto?
00:33:13
Que a la vez que una variable forma parte de una expresión,
00:33:16
a la vez se le puede asignar un valor.
00:33:19
Y no pasa nada.
00:33:22
Es como mezclar asignación con expresión.
00:33:23
Luego, por ejemplo,
00:33:26
imaginaos que yo hubiera decidido
00:33:28
simplificar este programa
00:33:29
y decir,
00:33:32
oye, voy a dejarme de estos mensajitos,
00:33:34
que es un rollo,
00:33:37
por ejemplo, vamos a comentar todo esto,
00:33:38
lo dejo ahí comentado,
00:33:43
y voy a decir, vale, asig1
00:33:43
que no la tengo todavía leída ni nada
00:33:46
a la vez que la tengo en la expresión
00:33:48
ya de paso voy a asignarle un valor
00:33:51
ya de paso
00:33:53
next boolean
00:33:53
y asig2 lo mismo
00:33:59
a la vez que la tengo en la expresión le asigno un valor
00:34:09
si aquí le pones un más más
00:34:13
espera, espera
00:34:23
y asig1
00:34:26
y asig2
00:34:26
igual a aquí
00:34:29
boolean
00:34:31
Ahora, vale
00:34:35
Si no pongo aquí paréntesis, el and lo interpreta
00:34:38
Que va pegado a esto
00:34:40
Entonces él igual dice eso que es
00:34:41
Vale, entonces, ¿qué he hecho aquí?
00:34:43
Aunque quede un poco raro, ¿vale?
00:34:46
Ahora no quiero que nos perdamos demasiado en
00:34:47
En compactar
00:34:50
Las expresiones de esta manera, pero sí es importante
00:34:52
Que lo entendamos de cara a entender
00:34:54
Por qué hay dos operadores distintos, por qué hay dos versiones
00:34:56
Vale, hemos cambiado aquí el código
00:34:58
Y hemos dicho
00:35:00
El and sigue siendo el and
00:35:01
De asig1
00:35:04
Y de asig2, eso no ha cambiado
00:35:05
El and sigue siendo el and de los dos
00:35:07
Pero he aprovechado
00:35:09
A la vez que uso
00:35:11
Esta variable, ya le doy un valor
00:35:13
Y puedo hacerlo
00:35:15
¿Vale? Por ejemplo
00:35:16
Para que no...
00:35:19
Esto yo lo puedo hacer
00:35:21
Int n igual a 9
00:35:22
Y ahora hago aquí, por ejemplo
00:35:25
Paramos ahora
00:35:27
Int m igual a...
00:35:29
Bueno, de hecho, esto lo puedo quitar
00:35:31
vale, esta expresión
00:35:33
os puede sonar rara
00:35:43
pero no es rara
00:35:45
es decir, m es
00:35:47
n más 2
00:35:50
pero cualquier variable
00:35:51
a la vez que forma parte de una expresión
00:35:53
puedo yo en ese momento darle un valor si me da la gana
00:35:55
igual que antes he podido sumarle 1
00:35:58
etcétera, entonces esta expresión es válida
00:36:01
yo podría hacer esto
00:36:03
y estaría haciendo lo mismo
00:36:05
a n le asigno 7 y luego hago
00:36:12
n más 2, o puedo
00:36:14
compactarlo todo en la misma
00:36:16
y puedo decir
00:36:17
m igual a n más 2, pero ojo
00:36:19
a n
00:36:22
asignale el 7
00:36:23
estoy haciendo lo mismo
00:36:26
con lo de antes que con esto, lo mismo
00:36:28
estoy compactando una expresión
00:36:30
y en una variable, lo podría
00:36:32
hacer con muchas, si hay más variables
00:36:34
una variable a la vez que la uso para que
00:36:35
forma parte de la expresión sumándose a la vez que la uso
00:36:38
le asigno un 2
00:36:40
¿vale? eso lo puedo hacer siempre
00:36:41
si veo que me queda el código más claro.
00:36:43
Bueno, pues entonces, ¿qué ocurre aquí?
00:36:46
Vamos a...
00:36:51
A ver, pues aquí estamos haciendo eso.
00:36:53
¡Jolín!
00:37:07
¡Ay, como bicho!
00:37:11
Vale, pues aquí estamos haciendo eso.
00:37:12
Estamos usando...
00:37:15
¡Ay, se me va a meter en la boca!
00:37:18
¿Qué te apuestas?
00:37:21
Estamos usando ASIC1
00:37:23
como expresión booleana
00:37:25
pero a la vez que la usamos le asignamos un valor
00:37:27
magnífico, ese valor se va a quedar
00:37:30
esperando por teclado, no pasa nada
00:37:32
y ahora estamos usando asig2
00:37:33
pero a la vez que la usamos para tomar
00:37:35
su valor booleano para llevárselo a lan
00:37:38
para llevárselo a lan
00:37:40
a la vez la estamos leyendo por teclado
00:37:41
no pasa nada, le meto su valor por teclado
00:37:44
bueno, pues cuál es la diferencia
00:37:45
la diferencia es que
00:37:47
si nosotros ponemos un doble and
00:37:48
y yo
00:37:51
el primer valor que meto es falso
00:37:55
Ya no se me va esta
00:37:57
Con lo cual no tengo opción
00:37:59
De meter el otro valor, no tengo
00:38:02
Puede ser importante o no, depende
00:38:03
Si yo ahora quiero mostrar las notas
00:38:05
Hoy quiero mostrar las dos
00:38:07
Quiero mostrar
00:38:08
Asic1
00:38:10
Y quiero mostrar asic2
00:38:12
Asic2 no le ha llegado valor
00:38:15
¿Vale?
00:38:18
Y de hecho el propio compilador
00:38:20
Me lo está diciendo, me está diciendo
00:38:21
Ojo, que asic2 no está inicializada
00:38:23
¿por qué? porque esto es un doble and
00:38:26
luego
00:38:29
si este hubiera dado
00:38:30
false, es que aquí ni entra
00:38:33
no he tenido yo opción de darle al less boolean, ni entra
00:38:34
pero si yo pongo un operador
00:38:37
solamente, automáticamente ya ese
00:38:39
rojo se quita, porque el compilador
00:38:41
ya sabe que al margen de que esto
00:38:43
ya ha sido true o false, a la segunda
00:38:45
parte entra, y va a leer el valor
00:38:47
¿vale?
00:38:49
entonces, claro que tiene trascendencia
00:38:51
poner uno o dos, pero
00:38:53
la tiene, solo si
00:38:55
en esta segunda parte
00:38:57
estamos haciendo alguna asignación
00:38:58
o estamos ejecutando algo.
00:39:01
¿Vale? Por ejemplo,
00:39:04
voy a comentar esto para poder ejecutarlo.
00:39:05
Yo ejecuto el programa así.
00:39:09
¿Qué le pasa?
00:39:14
¿Vale? Se me ha quedado esperando
00:39:16
el primero. Le doy true
00:39:17
y se me queda esperando el segundo.
00:39:19
Vale, al segundo le doy false.
00:39:21
Repite. Vale.
00:39:23
Pero ahora voy a darle ya de
00:39:25
partida al false.
00:39:27
No espera al segundo.
00:39:29
No espera.
00:39:31
Directamente ya sale.
00:39:31
No se queda esperando el siguiente valor.
00:39:33
¿Veis?
00:39:35
No se ha quedado esperando.
00:39:36
No se ha quedado esperando el siguiente valor.
00:39:39
Porque no ha entrado aquí porque tiene el segundo operador.
00:39:41
Sin embargo, si yo pongo solo un operador, solo pongo uno, y ya con esto paro.
00:39:45
Aunque yo ponga aquí false, se queda esperando el segundo igualmente.
00:39:53
Se queda esperando el segundo.
00:39:57
¿Vale?
00:40:03
pues esta es la diferencia
00:40:04
entre las dos versiones
00:40:06
que tiene implicación o no la tiene
00:40:08
según lo que yo haga en la segunda parte
00:40:10
si en la segunda parte además de
00:40:12
evaluar la condición estoy haciendo
00:40:14
modificaciones de variables
00:40:16
esas modificaciones no se van a hacer
00:40:17
y con el simple and
00:40:20
si se van a hacer, siempre
00:40:22
¿vale? venga pues ahora
00:40:24
sí que paramos aquí
00:40:26
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 13
- Fecha:
- 30 de septiembre de 2024 - 22:05
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 40′ 28″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 169.56 MBytes