Saltar navegación

20240930 ProgrEstruct-Ejercicios - Contenido educativo

Ajuste de pantalla

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

Subido el 30 de septiembre de 2024 por Raquel G.

13 visualizaciones

Descargar la transcripción

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
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
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
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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid