Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 6-10-23 - 1 - 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:
Bueno, pues de cara simplemente a mencionarlo, para que no nos vayamos de aquí sin saber lo que es.
00:00:01
Los operadores para construir expresiones.
00:00:11
Ya el otro día hicimos un repaso más o menos de todos los aritméticos que involucran números y nos dan números.
00:00:13
Había pequeños, matices
00:00:25
Y el de división en particular
00:00:28
Pues que funcionaba de dos maneras diferentes
00:00:30
Si divide enteros o si divide decimales
00:00:31
Pero bueno, son los que más fáciles nos resultan
00:00:33
Porque sumar, restar, multiplicar, dividir
00:00:36
Y hacer el resto o el módulo lo hemos hecho toda la vida
00:00:38
Pues es lo mismo pero plantado aquí
00:00:40
Ya está, eso en cuanto a los aritméticos
00:00:42
Los relacionales
00:00:44
Los relacionales mezclan
00:00:46
Números o cosas ordenadas
00:00:48
Cosas ordenadas
00:00:50
Que hasta ahora para nosotros son números solo
00:00:51
porque no hemos visto más tipos de datos, pues mezclan números o cosas ordenadas y nos dan booleanos o condiciones,
00:00:54
el menor que, mayor que, eso también nos es fácil usarlos porque los hemos usado toda la vida,
00:01:03
el menor que, mayor que, menor, igual y distinto nos es fácil, pues es lo mismo plantarlo pero aquí,
00:01:07
mezcla números para obtener condiciones y luego ya los operadores lógicos o booleanos
00:01:13
que a lo mejor son los que menos familias nos resultan
00:01:19
porque si no hemos estudiado en matemáticas
00:01:24
pues álgebra de bulo, lógica
00:01:27
pues a lo mejor no estamos acostumbrados al AND y al OR
00:01:29
muchos a lo mejor si lo estáis
00:01:33
porque habéis estudiado lógica en matemáticas
00:01:35
pero el que no lo haya estudiado no se acuerde
00:01:37
te ha dado un sofoco, ¿a que sí?
00:01:40
te ha dado un sofoco
00:01:43
pues el que no haya estudiado lógica
00:01:44
el AND, el OR y el NOT
00:01:49
a lo mejor le suena menos
00:01:50
pero ahora es el momento de que entendamos
00:01:52
de que esos operadores lógicos
00:01:54
el AND, el OR y el NOT
00:01:56
lo que hacen es combinar condiciones
00:01:58
cosas que a la vez
00:02:01
que a su vez son verdad o mentira
00:02:02
para obtener una condición más grande
00:02:04
el AND ya sabemos lo que combina
00:02:06
dos condiciones
00:02:09
las combina con el AND
00:02:10
si ambas son ciertas
00:02:11
la total es cierta
00:02:13
y solo con que alguna de las dos sea falsa
00:02:15
pues entonces la total es falsa
00:02:17
y el OR combina dos condiciones
00:02:18
para dar una condición más compleja
00:02:21
y la condición compleja
00:02:23
será verdadera
00:02:25
solo con que una de las dos lo sea
00:02:26
me da igual cual o las dos
00:02:28
bueno, pues eso es lo que
00:02:30
vimos el otro día
00:02:33
y luego ya, según uno ya va formando expresiones
00:02:34
para hacer programas, pues ya se va familiarizando
00:02:37
con ello
00:02:39
y nos dejamos en el tintero
00:02:40
los operadores que trabajan a nivel de bits
00:02:42
que tiene una utilidad
00:02:45
bueno, relativa
00:02:48
pero a veces pueden ser prácticos
00:02:50
¿vale? vamos a revisarlos
00:02:52
muy rápidamente aquí en la pizarra
00:02:54
y no es que nos olvidemos de ellos
00:02:55
pero es raro que nos surjan algún ejercicio
00:02:57
es raro
00:03:00
¿vale?
00:03:00
vale, como va a ser muy rápido
00:03:13
ni voy a borrar el proyector
00:03:14
para no cargármelo
00:03:16
de tanto encender y
00:03:17
apagar y ya está
00:03:19
uy, os he sacado
00:03:21
me podríais denunciar, pero no me habéis dado
00:03:28
ah, si me disteis la autorización, ah no, me dijisteis
00:03:30
que nos importaba la voz
00:03:32
pero la imagen no, ¿quién no me la ha dado?
00:03:33
de palabra sí lo pregunté
00:03:36
me dijisteis todo, no ha pasado nada, así que sí
00:03:38
bueno, pues
00:03:40
ahí se queda
00:03:47
¿quién quiere salir?
00:03:53
Bueno, pues muy rapidito
00:04:01
Entonces, vosotros
00:04:08
Os tenéis que quedar en la cabeza
00:04:09
Todas estas cosas que os digo tienen que estar en la cabeza
00:04:11
Que existen operadores a nivel de bits
00:04:13
Que tienen ese aspecto
00:04:15
Y si alguna vez
00:04:17
De repente tenéis que hacer operaciones a nivel de bits
00:04:18
Sabemos a qué me refiero con eso
00:04:21
Pues decir, ah, vale, tengo estos operadores
00:04:22
Igual simplifico mi programa si los uso
00:04:23
Voy a ver cómo funcionaba
00:04:26
Eso es lo que tenéis que dejaros aquí registrado.
00:04:28
Vale, pues esos operadores son los que, si yo tengo una variable, por ejemplo, una variable entera,
00:04:32
tengo una variable, esa variable entera, en este caso por ser int, ya sabemos que está formada por 32 bits, los que sean.
00:04:46
¿Vale? Bueno, 32 bits, los que sean.
00:04:54
Bueno, todos los operadores que hemos visto trabajan con esta variable en su conjunto, si es un número y representa el 27, pues trabaja con el 27, para sumarlo, para restarlo, lo que sea, pues los operadores a nivel de bit son capaces de trabajar con cada bit por separado, simplemente.
00:05:01
¿Para qué puede ser interesante eso?
00:05:19
Pues a lo mejor para aplicaciones en las cuales a mí me interesa registrar información binaria del tipo
00:05:21
tengo un conjunto de sensores y quiero registrar qué sensor está activo,
00:05:27
este está activo, este no, este está activo, este no.
00:05:32
Entonces dedicar una variable con un montón de bits para indicar si un sensor está activo o no,
00:05:34
a lo mejor es un desperdicio, podemos dedicar una única variable
00:05:39
y cada bit tiene su significado por separado.
00:05:42
Cada bit tiene su significado por separado.
00:05:46
Este asociado al primer sensor, este al segundo
00:05:47
Entonces, en algún tipo de aplicaciones
00:05:50
Podría tener su interés
00:05:52
Pero las aplicaciones industriales
00:05:53
En realidad se harían con otro software
00:05:56
No se harían con este
00:05:58
Entonces, por eso lo mencionamos por encima
00:05:59
Pero, ¿cuáles son?
00:06:01
Pues ahí estaban escritos en el
00:06:03
Documento
00:06:05
Estos
00:06:08
Desplazamiento izquierda-derecha
00:06:11
Y derecha sin signo
00:06:14
Y luego esto es de aquí y listo.
00:06:17
Y nos quedamos tan tranquilos.
00:06:19
Vale.
00:06:24
Este.
00:06:26
Este lo usaríamos de esta manera.
00:06:28
N.
00:06:31
Desplazamiento a la izquierda y aquí una cantidad.
00:06:32
3, por ejemplo.
00:06:35
Pues esta es una expresión que uno asigna a otra variable, como siempre.
00:06:36
¿Vale?
00:06:42
Es un operador, con lo cual este operador sirve para formar una expresión con él.
00:06:43
Por ejemplo, esto.
00:06:47
Y el resultado se lo asignamos a algún lado
00:06:48
Los resultados de las expresiones van a alguna parte
00:06:51
Suponer que a esa variable, me da igual
00:06:54
Bueno, pues esta expresión lo que significa
00:06:56
Cogemos esta variable
00:06:58
Y desplazamos a la izquierda sus bits
00:06:59
Tantas posiciones como me diga este
00:07:03
Es decir, si n fuera esa variable
00:07:05
Se caerían estos tres, se caerían
00:07:08
Y por aquí entrarían ceros
00:07:11
¿Vale?
00:07:14
Se hace un desplazamiento
00:07:16
entonces, para eso sirve
00:07:18
se hace el desplazamiento a la izquierda
00:07:21
de tantos bits cayéndose los de aquí
00:07:23
y aquí rellándose con 0
00:07:25
y esa nueva variable que obtenemos
00:07:26
pues se asigna donde yo quiera
00:07:28
vale
00:07:30
puede tener
00:07:32
esta operación en realidad
00:07:34
es una forma rápida
00:07:37
de hacer
00:07:39
multiplicaciones por potencias
00:07:41
de 2, ¿verdad?
00:07:43
porque cada vez que hacemos un desplazamiento a la izquierda
00:07:44
estamos multiplicando por 2
00:07:47
en binario
00:07:48
uno tiene este número
00:07:50
este número es el 1
00:07:52
si desplazamos a la izquierda se convierte en este
00:07:53
2, si lo desplazamos a la izquierda otra vez
00:07:56
se convierte en este
00:07:58
4, si lo desplazamos a la izquierda otra vez
00:07:59
se convierte en este, 8
00:08:03
entonces en realidad cada desplazamiento
00:08:04
a la izquierda es como multiplicar por 2
00:08:06
entonces esto sería igual a
00:08:08
multiplicar por 2 elevado a 3
00:08:10
es una forma rápida de hacer
00:08:13
multiplicaciones por potencias exactas de 2
00:08:14
No va a ser habitual que lo veáis
00:08:16
¿Quién me ha hablado?
00:08:21
¿A eso?
00:08:26
Sí, pero está explicado en el documento de habla virtual
00:08:28
Está ahí, está explicado el significado de eso
00:08:30
¿Vale? Entonces
00:08:36
Este es lo mismo
00:08:38
Desplazamiento a la derecha
00:08:41
Si lo cambiamos aquí
00:08:43
Pues lo mismo
00:08:44
Pero van a la derecha
00:08:50
Se caen estos, se caen estos
00:08:52
¿Y por aquí qué entra?
00:08:55
Pues por aquí entra depende de lo que valga el bit de signo
00:08:57
No sé si en sistemas informáticos
00:09:00
Habéis visto ya si la codificación complemento a 2, complemento a 1
00:09:03
Pues ya sabéis que este bit es el bit de signo
00:09:07
Que es 1 si es negativo
00:09:09
Entonces, si este es un 1
00:09:11
Lo que se mete por la izquierda son unos
00:09:13
Y eso se hace así para conservar el signo
00:09:16
Del numerito resultante, para conservarlo
00:09:19
Si esto fuera un cero, lo que se mete por aquí son ceros
00:09:21
Simplemente, y lo que salga por aquí se cae
00:09:24
Entonces, el desplazamiento a la derecha
00:09:26
En realidad es como si dividiéramos
00:09:29
Ahora, en potencias hasta el de dos
00:09:32
Es lo mismo, ¿no?
00:09:34
Si yo desplazo a la derecha
00:09:35
Voy dividiendo entre dos
00:09:37
Cada vez que desplazo uno, va, divide entre dos
00:09:39
Bueno, pues esos son los desplazamientos
00:09:41
Luego hay un desplazamiento a la derecha
00:09:44
Que es este
00:09:46
Que es, con tres cositas
00:09:46
Que es sin signo
00:09:49
que es cuando estamos usando la variable
00:09:50
no como si fuera un número
00:09:53
sino a lo mejor la interpretación que os he dicho antes
00:09:54
que cada bit significa una cosa
00:09:56
entonces es desplazamiento a la derecha también del 3
00:09:57
pero aquí se mete ceros
00:10:00
independientemente de lo que valga el bit S
00:10:03
independiente de lo que valga
00:10:05
se meten ceros
00:10:06
entonces podría interesar
00:10:07
si esto no representa un número
00:10:10
sino que representa el estado de sensores
00:10:12
por ejemplo, pues yo quiero meter aquí ceros siempre
00:10:14
no 1
00:10:16
pues es la diferencia entre este y este
00:10:17
lo que se mete por la izquierda
00:10:19
¿vale?
00:10:22
bueno, esos son los operadores de desplazamiento de bits
00:10:23
que nos permiten mover bits
00:10:25
entonces, esos, nosotros no
00:10:27
claro, pero
00:10:29
Java, la librería de Java
00:10:31
que acompaña y que hace cosas y nosotros saberlo
00:10:33
o sea, cada vez que llamamos
00:10:35
un system.app.println, cada vez que llamamos
00:10:37
ahora mismo estamos llamando a pocas
00:10:39
sentencias ya hechas, pero cada vez que
00:10:41
llamamos a un montón de sentencias de Java
00:10:43
la máquina virtual necesita
00:10:44
llamar a programas
00:10:47
que ya están hechos, que están
00:10:49
en la JRE. Pues
00:10:51
esos programas sí que usan
00:10:53
esto, porque para construir sus variables
00:10:55
pues va llevando los bits de un lado a otro.
00:10:57
Entonces, claro que los usa,
00:11:00
pero esto se usa a muy bajo nivel.
00:11:01
Entonces nosotros
00:11:03
tan a bajo nivel no llegamos. Nosotros
00:11:04
nos interesa el numerito entero, normalmente.
00:11:07
¿Vale? Pero esto
00:11:10
sí que lo usa.
00:11:11
Las clases de Java de las que tiramos nosotros
00:11:13
lo tenemos más adelante, así que lo usan
00:11:15
porque ya sí que trabajan a bajo nivel
00:11:18
vamos a ver los datos
00:11:19
vale, esto en cuanto a los operadores de desplazamiento
00:11:20
que lo dejamos aquí
00:11:24
y
00:11:25
y luego están
00:11:26
los que no lo veis
00:11:28
pero los
00:11:30
los operadores
00:11:31
de
00:11:34
comparación de bits
00:11:35
estos
00:11:38
los escribo aquí y ahora
00:11:41
a ver
00:11:43
Este, este
00:11:45
Y este, este
00:11:51
¿Vale? Estos cuatro operadores
00:11:55
Vale
00:12:00
Estos se parecen
00:12:09
Bueno, más que se parecen
00:12:13
Este y este es que son el mismo
00:12:14
De hecho, a los operadores lógicos
00:12:17
Que habíamos ya visto el otro día
00:12:19
¿Verdad? El otro día ya habíamos visto
00:12:21
Que si yo tengo una condición
00:12:23
Esta, por ejemplo
00:12:24
La condición C1
00:12:26
Que tiene el valor que tenga
00:12:28
tengo otra condición
00:12:30
la condición c2
00:12:34
que tiene el valor que tenga
00:12:36
ahora yo puedo hacer por ejemplo
00:12:37
c1 igual a c1
00:12:40
a c2
00:12:43
esto es perfectamente válido
00:12:45
¿verdad?
00:12:47
este operador lógico
00:12:48
es el AND de dos cosas lógicas
00:12:50
de dos condiciones
00:12:53
si esta es verdad y esta es verdad
00:12:53
el resultado final es verdad
00:12:56
y ese true va ahí
00:12:57
Ese es el uso que habíamos visto
00:12:58
Bueno, pero es que este operador
00:13:01
También funciona
00:13:03
También lo puedo poner yo combinando números
00:13:05
Es decir, esto también sería válido
00:13:07
N1 lo que sea
00:13:10
Igual a 7
00:13:12
N2 igual a 5, por ejemplo
00:13:12
Y ahora yo hago esto
00:13:15
N1 igual a
00:13:17
N2
00:13:20
And
00:13:22
N1, por ejemplo
00:13:23
Con lo que sabemos hasta ahora diríamos
00:13:26
A ver, este es un operador lógico
00:13:29
Que hace el AND lógico
00:13:31
Entre dos cosas que son condiciones
00:13:33
Como aquí
00:13:35
Pero esto no son condiciones, son números
00:13:36
¿Cómo es que puedo poner este operador?
00:13:39
Vale, pues es que este operador tiene otra interpretación
00:13:42
Funciona de otra manera
00:13:45
Cuando combina números
00:13:47
Cuando combina números
00:13:49
Funciona de otra manera
00:13:51
Cuando combina condiciones
00:13:52
Funciona tal y como hemos visto el otro día
00:13:54
Pero cuando combina números
00:13:57
Funciona de otra manera
00:13:59
¿Y cómo funciona?
00:14:01
Bueno, pues
00:14:04
Si aquí tuviéramos N1, por ejemplo
00:14:06
Con sus bits
00:14:08
Y aquí tuviéramos
00:14:10
Este es N1
00:14:14
Y este es N2
00:14:17
Por ejemplo, ese es N1 y ese es N2
00:14:21
vale, pues que hace el AND este
00:14:36
opera a nivel de bits
00:14:39
es un operador a nivel de bits, lo hemos dicho
00:14:41
y que es lo que hace, va bit por bit
00:14:42
haciendo una operación de AND
00:14:45
entre ceros y unos, como si el cero fuera
00:14:47
false y el uno fuera true
00:14:49
es lo que hace, entonces va uno por uno
00:14:51
cero y uno
00:14:54
cero y uno, el AND
00:14:55
vale, es cero
00:14:57
uno y cero
00:14:59
imaginaos que el uno es true
00:15:01
y el cero es false, pues uno y cero
00:15:03
es cero, uno y cero es cero
00:15:06
uno y uno, aquí tengo dos true
00:15:08
pues uno, y así va bit por bit
00:15:10
por separado, cero y cero, cero, uno y uno
00:15:12
uno, uno y uno, y uno
00:15:14
cero y cero, cero y uno
00:15:15
cero, cero, cero
00:15:18
cero y uno
00:15:20
eso es lo que hace
00:15:21
va bit por bit como si hiciera
00:15:23
un and donde el uno es true y el cero
00:15:26
es false
00:15:28
entonces esto en realidad se puede interpretar
00:15:28
como por ejemplo
00:15:35
apagar y encender. Es decir, si tú haces un AND con 0, por ejemplo, pues obviamente
00:15:36
estás poniéndolo todo a 0. Pero si quieres poner todos los sensores o lo que fuera a
00:15:44
0 menos el último, pues harías un AND con 1. Si haces un AND con 1, este lo dejas como
00:15:53
está y los demás los pones todos a 0. ¿Verdad? Si haces un AND con 1, estás haciendo
00:16:01
un AND con esto, con todo esto. Entonces, ¿eso qué significa? Que este sensor de aquí
00:16:06
se va a quedar con el estado que tuviera, si tenía un 0 se quedaba con 0, si tenía
00:16:19
un 1 se quedaba con 1 y los demás todos a 0. Más o menos se podría hacer la relativa
00:16:22
utilidad que pudiera tener este operador. Pero a vosotros lo que se os tiene que quedar
00:16:28
es que este operador AND funciona tanto para combinar condiciones de la manera que vimos
00:16:32
el otro día, como para combinar
00:16:40
números, en realidad.
00:16:42
Ese es el uso más extraño que vais a ver, pero sí que podéis
00:16:44
verlo. Y cuando combina
00:16:46
números, lo que hace es
00:16:48
va bit por bit
00:16:49
haciendo el AND
00:16:51
interpretando el 1 como true y el 0 como false.
00:16:53
Es como si hiciera una suma.
00:16:57
Como si hiciera una suma.
00:16:58
Porque 0 y 0 es 0, 0 y 1 es 1
00:17:00
y 1 y 1, pues, una suma binaria.
00:17:02
Y el OR
00:17:07
que es este,
00:17:08
el OR lo mismo
00:17:11
Pero
00:17:13
Haciendo un or
00:17:14
0 y 0 sería 0
00:17:16
1 y 0 sería 1
00:17:18
0 y 0 sería 0
00:17:19
1 y 0 sería 1
00:17:20
Lo mismo
00:17:22
A 1 por 1
00:17:23
¿Vale?
00:17:24
Y luego está el negado
00:17:32
Por ejemplo
00:17:34
Yo podría hacer n1 igual al negado de n2
00:17:35
De ese otro operador que está en la lista
00:17:38
El negado
00:17:40
El negado es cambio
00:17:41
Cojo n2
00:17:43
Y cambio los bits
00:17:44
El que tenga 0 se pone a 1
00:17:45
y el que tiene 1 se pone a 0
00:17:47
el resultado va a la variable que yo quiera
00:17:48
bueno, eso es un poco
00:17:50
por encima de estos operadores
00:17:55
que tenéis que registrar que hay operadores
00:17:57
que actúan a nivel de bits
00:18:00
porque en algunas aplicaciones
00:18:01
os podéis encontrar que están ahí
00:18:06
y luego ya
00:18:07
las peculiaridades de uso de cada uno
00:18:10
pues si lo necesitáis
00:18:12
ya podéis ir a ver, este es exactamente como funcionaba
00:18:13
pero os tenéis que tener identificados en la cabeza
00:18:15
y sobre todo lo que no tenéis es que volveros loco
00:18:17
que en un código veis un AND
00:18:19
que combina números, es decir, pero ¿cómo puede ser
00:18:22
si el AND es de condiciones?
00:18:24
Puede ser, entonces se interpreta
00:18:25
como hemos dicho.
00:18:27
¿Vale? Vale.
00:18:30
Pues, bueno,
00:18:33
pues entonces, para construir expresiones
00:18:47
ya sabemos
00:18:49
las herramientas que tenemos.
00:18:51
Porque tenemos las variables
00:18:53
de los tipos que hemos dicho
00:18:55
y los operadores.
00:18:56
Y podemos combinar variables
00:18:59
variables y operadores para construir expresiones. Ahora ya el problema real es, cuando yo tengo
00:19:01
una situación real, construir la expresión que la refleja. Ese es el problema, porque
00:19:08
eso ya se trata de que yo lo piense. Pero las herramientas que tenemos, que son los
00:19:14
operadores y las variables con los tipos que conocemos, ya los conocemos todos. Eso es
00:19:18
lo que tenemos para hacer expresiones. Ahora se trata de que nuestras expresiones reflejen
00:19:22
el problema que yo estoy resolviendo. Que lo reflejen bien y que no me equivoco yo poniendo
00:19:27
poniéndolas, que te da cuidado con
00:19:31
la precedencia de los operadores
00:19:33
que ponga paréntesis si hacen falta, etc.
00:19:35
Ahora se trata de eso.
00:19:37
¿Vale?
00:19:39
Bueno, pues entonces
00:19:40
cerramos ya esto
00:19:42
de los operadores
00:19:45
y ahora
00:19:51
siguiente
00:19:52
de todos los ejercicios que habéis
00:19:54
hecho, que en principio
00:19:57
serían estos primeritos que en el aula virtual
00:19:59
que los puse yo ahí para que practicarais
00:20:01
un poco
00:20:03
a ver, estoy aquí con los distintos tokens
00:20:03
que debería decir los distintos elementos
00:20:06
para que familiarizarais
00:20:08
pues esta línea hay que poner al principio
00:20:10
esta es la declaración de una variable
00:20:11
y este es su tipo de dato
00:20:13
vale, bueno, estos ejercicios
00:20:15
que los dejé ahí
00:20:19
para que practicarais a los que no hemos hecho referencia
00:20:21
estaban por un lado
00:20:23
y luego por otro lado estaba
00:20:24
estos del lunes
00:20:26
vale
00:20:29
bueno pues a ver
00:20:30
ahora es el momento de
00:20:32
que hagamos algunos, de que me digáis que dudas
00:20:34
habéis encontrado algún ejercicio
00:20:37
de que trabajemos sobre ellos
00:20:38
antes de empezar
00:20:41
ya el tema siguiente
00:20:42
entonces hay alguien que sienta que no lo tiene todo
00:20:44
absolutamente bajo control
00:20:48
todo el mundo lo tenéis todo bajo control
00:20:50
que suerte
00:20:54
o sea nadie tiene ninguna duda
00:20:55
¿todo el mundo ha hecho todos los ejercicios exactos bien?
00:20:58
¿nadie quiere que hagamos ninguno aquí?
00:21:00
vale, o sea, estos
00:21:08
a ver, el problema de estos últimos es
00:21:08
que efectivamente
00:21:11
ya hay que elaborar
00:21:13
condiciones y combinar
00:21:15
esas condiciones con operadores booleanos
00:21:17
y luego ya como
00:21:19
el código ya va a depender
00:21:20
va a hacer unas cosas u otras de esa condición
00:21:22
pues tengo que tener un operador alternativo
00:21:24
entonces ahí se hace un poquito más
00:21:25
dioso, vale, a ver
00:21:28
¿Cuál podemos hacer?
00:21:31
¿Cuál queréis que hagamos?
00:21:33
¿Cuál os ha dado más
00:21:35
Ansiedad?
00:21:37
Si es que alguno os ha dado ansiedad
00:21:38
¿Por qué estáis tan pasivos?
00:21:40
A ver, por ejemplo
00:21:52
El 20
00:21:53
¿Alguien tendría algún problema en hacer el 20?
00:21:54
A ver, vamos a ver
00:21:59
Vamos a hacer algunos sueltos
00:22:15
A modo de repaso
00:22:18
Y sobre todo con la intención de que
00:22:20
os despertéis
00:22:22
venga, vamos a poner aquí
00:22:24
a ver, que ya estoy liando
00:22:26
demasiado el proyecto
00:22:36
vale, venga, pues voy a hacer
00:22:37
otro proyecto diferente, este de primeras pruebas
00:22:42
es en el que he ido recogiendo todo lo que hemos probado
00:22:45
aquí en clase, que es el caso de una aula virtual
00:22:47
pues
00:22:49
voy a, ahora empezamos otro proyecto
00:22:50
donde vamos a meter los ejercicios varios
00:22:53
que a lo mejor revisemos ahora
00:22:55
y lo subo como proyecto separado
00:22:57
venga, pues este proyecto
00:22:59
se va a llamar
00:23:01
Ejercicios varios, tema 1
00:23:02
Ahora, ejercicios varios, tema 1
00:23:13
Venga, ya está
00:23:16
Vale, pues venga, por ejemplo
00:23:17
Hemos dicho, este de aquí
00:23:26
Voy a copiar esto
00:23:30
Y este es el 20
00:23:32
Espera
00:23:49
Ejercicio 20, lunes
00:23:55
vale, juicio 20
00:23:59
lunes, y vamos a poner aquí
00:24:02
su
00:24:04
venga
00:24:07
esto de aquí
00:24:14
mejor así porque no es jabalón
00:24:15
vale, pues venga
00:24:17
primero de siempre
00:24:30
uno lo ha denunciado, se asegura
00:24:32
de que entiende bien lo que tiene que hacer
00:24:33
y cuando lo tiene ya claro, porque está
00:24:35
bien especificado y no necesita más aclaraciones
00:24:37
ya se plantea como construirlo
00:24:39
Y de nuevo no se lo plantea en secuencia, al menos que sea muy sencillo, esta a lo mejor podría plantearse en secuencia, pero bueno.
00:24:42
Aquí, resultado del programa, resultado del programa, mostrar un mensaje, resultado del programa.
00:24:50
Decir si el estudiante aprobó al menos una de ellas o no aprobó al menos una de ellas.
00:25:02
Luego el resultado es uno de dos posibles mensajes, ¿verdad? El resultado este de aquí se mueve entre dos posibilidades, se mueve entre decir aprobó o no aprobó, ¿vale?
00:25:08
Entonces, pues esto es lo de siempre
00:25:31
Resultado va a ser una cosa u otra
00:25:33
Va a ser una cosa u otra
00:25:35
En función de una condición
00:25:38
Va a ser una cosa u otra en función de una condición
00:25:42
Y esa cosa u otra, ¿cuál va a ser?
00:25:44
Aprobó al menos una
00:25:47
No aprobó ninguna
00:25:50
No aprobó ninguna
00:25:54
¿Vale? Entre estas dos posibilidades se mueve
00:26:03
La condición cuál va a ser
00:26:09
Aprobar al menos una de dos notas
00:26:12
Que son los datos de entrada al programa
00:26:16
Luego el programa tiene datos de entrada
00:26:18
Bueno, pues vamos a leerlos
00:26:21
Vale
00:26:23
Vale, pues venga, los leemos
00:26:43
Introduzca nota primera
00:26:48
nota1
00:26:57
igual a scan.nextint
00:27:02
e introduzca
00:27:07
nota2
00:27:09
joder, esto no era
00:27:09
vale
00:27:13
introduzca
00:27:16
nota2
00:27:19
vale, datos de entrada
00:27:19
ya están, no hay más
00:27:22
datos de entrada, son estos dos
00:27:24
uno, una cosa que uno hace
00:27:26
a menudo y no hay que hacer
00:27:28
es inventarse información
00:27:29
uno tiene que tener muy claro su programa
00:27:31
qué información de partida tiene
00:27:33
y no inventarse la información adicional
00:27:36
este solo tiene como información
00:27:37
de partida dos notas
00:27:40
las pide y las lee
00:27:42
y ya no se puede inventar más información
00:27:44
entonces con esas dos notas
00:27:46
tiene que ser capaz de
00:27:48
construir el resultado
00:27:50
ya hemos dicho que el resultado es
00:27:51
o este string
00:27:54
o este string
00:27:56
vale, pero depende entonces de una condición
00:27:57
que yo tengo que ser capaz
00:28:00
de construir
00:28:02
con los datos que tengo
00:28:03
y los datos que tengo son nota 1 y nota 2
00:28:05
no tengo más datos
00:28:08
vale, pues esa condición
00:28:08
ahora es cuando la leemos despacio
00:28:11
y esa condición nos dice
00:28:13
la condición que yo tengo que elaborar
00:28:15
es una condición que tiene que ser verdad
00:28:17
si al menos una de las dos notas
00:28:19
es mayor o igual que 5
00:28:21
y falsa en caso contrario
00:28:23
pues ahora ya entendiendo ese enunciado
00:28:24
tenemos que trasladarlo a una expresión
00:28:27
que combine los datos de entrada y los operadores que conocemos.
00:28:30
Pues venga, ¿cómo expresamos en código la condición
00:28:34
al menos una de las dos notas es mayor o igual que 5?
00:28:37
¿Cómo lo escribiríais, Claudia?
00:28:43
Díctame la tal cual.
00:28:45
Lo que acabo de decir, que es,
00:28:48
díctame cómo escribo yo aquí la condición Java
00:28:50
que expresa esa idea, que al menos una de las dos es mayor o igual que 5.
00:28:54
Repite
00:29:00
Esta es la condición que expresa
00:29:08
Para ti que al menos una de las dos
00:29:18
Sea mayor o igual que 5
00:29:20
Claro, no es lo mismo I o O
00:29:21
No, no es lo mismo
00:29:26
¿Vale?
00:29:28
Entonces, aquí en esta condición
00:29:33
Parece más o menos claro
00:29:35
Pero muchas veces en otro tipo de condiciones
00:29:36
Más elaboradas
00:29:39
No es tan fácil distinguir
00:29:40
Si es un AND o un OR lo que nos interesa
00:29:42
Aquí sí, aquí de
00:29:44
Al menos una de las dos
00:29:46
Lo tenemos que traducir nosotros al idioma
00:29:48
O una o la otra
00:29:50
O una y la otra
00:29:53
Tenemos que traducirlo a ese idioma
00:29:55
A lo o a li
00:29:57
Aquí traducirlo a lo o a li es fácil
00:29:58
Si es al menos una de las dos
00:30:00
O la primera o la segunda
00:30:01
Pues traducirlo o la primera o la segunda
00:30:03
Es el or lógico y el operador
00:30:06
Or, lo booleano or
00:30:08
¿Vale?
00:30:09
Entonces, ¿puedo ponerlo así?
00:30:13
O puedo ponerlo así
00:30:16
¿Verdad?
00:30:17
¿cómo lo pondríais?
00:30:18
¿qué elegiríais?
00:30:21
¿ponerlo con uno o con dos?
00:30:23
¿con dos?
00:30:25
¿por qué elegirías con dos?
00:30:26
ya que estás lanza
00:30:28
dime
00:30:29
no, mala respuesta
00:30:30
o sea, si alguien ha elegido con dos
00:30:36
tendrá un criterio para elegir con dos
00:30:40
no pasa nada, que podéis contestar mal
00:30:42
o decirlo mal, pero mejor si estáis vivos
00:30:44
¿por qué podría tener sentido poner dos
00:30:47
en vez de uno?
00:30:50
Lo dijimos el día anterior.
00:30:53
¿Cómo es que no lo tenéis en la cabeza?
00:30:55
¿Que por qué?
00:30:59
A ver, el operador
00:31:01
os dijimos que yo lo podría escribir así.
00:31:03
¿Vale? ¿Y es válido?
00:31:05
O lo podría escribir así.
00:31:07
Y también es válido. Entonces, ya que hay dos alternativas,
00:31:08
primera pregunta, ¿cuál elegiríais?
00:31:11
Me habéis dicho que...
00:31:13
Con dos.
00:31:15
¿Perdón?
00:31:19
elegiríais esta, vale, y ahora la pregunta es
00:31:20
¿por qué?
00:31:23
a ver, en los dos
00:31:37
claro, los hay
00:31:40
o sea, no es que
00:31:42
hay casos en los cuales
00:31:43
procede
00:31:47
poner una de las versiones, otros casos en los cuales
00:31:49
procede poner la otra, pusimos un ejemplo
00:31:50
el otro día de un caso en el cual
00:31:53
había una diferencia muy grande entre poner la una y la otra
00:31:54
entonces, lo que está claro
00:31:57
lo que comparten las dos, lo que dijimos
00:31:59
el otro día es que el resultado
00:32:01
de la condición, final, resultado
00:32:03
de la condición, ponga yo
00:32:05
esto o no lo ponga
00:32:07
siempre va a ser la misma
00:32:08
siempre va a ser, en este caso, el or
00:32:11
o sea, me da igual poner una que dos
00:32:12
resultado va a valer
00:32:15
siempre igual, que será
00:32:17
true, si cualquiera
00:32:19
de las dos es true
00:32:21
o incluso las dos
00:32:22
o false, si lo son las dos
00:32:24
eso, ponga yo una o dos
00:32:27
eso va a ser así
00:32:29
Pero aparte pasaban cosas distintas
00:32:30
Aparte de la asignación sin más
00:32:33
Pasaban cosas distintas
00:32:36
Respecto a poner una o dos
00:32:37
Entonces, en esas cosas distintas que pasaban
00:32:38
Es donde está la explicación
00:32:41
De por qué me puede interesar ni poner uno solo o dos
00:32:43
En determinados casos
00:32:46
¿Me habéis dicho dos?
00:32:47
¿Alguien más me puede decir por qué podría tener sentido poner dos?
00:32:48
Ándate
00:32:54
Al revés
00:32:54
Vale, entonces
00:33:02
La historia va por ahí
00:33:04
Si ponemos solo uno, la máquina virtual evalúa las dos, una y la otra, evalúa las dos y ahora hace el oro, vale, está claro.
00:33:06
Si tiene los dos, va evaluando en secuencia, primero evalúa la primera, si con eso ya es capaz de hacer el resultado global, de la segunda pasa.
00:33:19
entonces
00:33:28
nos interesa más 2
00:33:29
porque si esta ya fuera true
00:33:32
si esta ya fuera true
00:33:34
puede ignorar esta
00:33:35
entonces es una evaluación menos que hay que hacer
00:33:37
más tiempo de procesamiento
00:33:40
ganado, o sea el programa más rápido
00:33:42
entonces por defecto
00:33:44
siempre poner 2
00:33:46
porque si yo aquí ya tengo
00:33:48
el resultado global
00:33:50
cuando esta sea true, solo lo voy a tener cuando esta sea true
00:33:51
claro, cuando esta sea false voy a necesitar evaluar esta
00:33:55
a ver si es true o false
00:33:57
pero en los casos, en las ejecuciones
00:33:58
en las ejecuciones en las que coincida
00:34:00
que nota uno es true
00:34:03
pues en esas ejecuciones voy a ir más rápido
00:34:04
porque de esta paso
00:34:06
entonces esa sería la explicación
00:34:07
de por qué poner dos en vez de una
00:34:11
si pongo una, aunque esta sea true
00:34:12
esta la voy a evaluar siempre
00:34:14
pues que pérdida de tiempo
00:34:16
¿vale? eso era
00:34:17
entonces, ahora cuando hacéis la pregunta
00:34:19
que también respondimos el otro día
00:34:22
pues entonces
00:34:23
¿por qué existen dos versiones?
00:34:25
¿por qué existen?
00:34:29
¿por qué existe esta versión?
00:34:30
¿tendría sentido?
00:34:32
hacerlo siempre en secuencia
00:34:35
y cuando ya tengo el resultado global
00:34:36
lo asigno y el resto deja de evaluarlo
00:34:38
¿por qué existe esta otra versión?
00:34:40
¿alguien le suele
00:34:45
recuerda del otro día?
00:34:46
os digo un ejemplo además
00:34:48
¿por qué tiene sentido que exista esta otra versión?
00:34:49
a ver, era porque hay veces
00:34:52
que una condición
00:34:58
además
00:35:00
hace cosas
00:35:01
¿no? ¿no recordáis lo de los
00:35:03
operadores incremento y todo eso?
00:35:06
yo aquí puedo añadir, en una expresión
00:35:08
siempre puedo añadir
00:35:10
si me da la gana, por ejemplo, un operador
00:35:12
incremento o decremento
00:35:14
puedo añadir esto
00:35:16
y estoy compactando
00:35:16
en esa expresión dos cosas
00:35:19
primera, la condición
00:35:21
y luego el incremento de este
00:35:23
lo estoy compactando en una
00:35:25
entonces, si yo le pongo dos
00:35:27
en las ejecuciones
00:35:30
en las cuales esto sea true
00:35:31
este incremento no se va a hacer
00:35:33
pero si yo le pongo uno
00:35:35
en todas las ejecuciones
00:35:37
independientemente de que esto sea true o false
00:35:39
esto se va a evaluar, con lo cual este incremento se va a hacer
00:35:41
entonces hay situaciones
00:35:43
en las cuales
00:35:45
el funcionamiento del programa es distinto
00:35:46
si yo pongo dos y una
00:35:49
y esa situación será cuando en las cláusulas
00:35:51
las condiciones pequeñitas que hay a continuación
00:35:54
además de la condición
00:35:56
se hagan cosas
00:35:58
además de la condición se hagan cosas
00:35:59
entonces ahí sí va a ser distinto
00:36:01
por ejemplo, ¿qué otra cosa podríamos hacer?
00:36:03
esto, que es una tontería
00:36:07
pero, a ver si
00:36:08
me deja
00:36:10
vale, esto
00:36:11
pero lo podríamos hacer
00:36:15
esto es una expresión
00:36:17
ya nos iremos familiarizando con ella
00:36:20
yo puedo, a la vez que uso
00:36:22
una variable, a la vez que la uso
00:36:25
en una expresión, a la vez que la uso
00:36:27
puedo de paso asignarle un valor
00:36:29
puedo hacer eso si me da la gana
00:36:31
a la vez que uso una variable
00:36:33
en una expresión, puedo asignarle
00:36:35
un valor, entonces
00:36:37
esto que me haría, esto me hace
00:36:39
nota 2 le asigna 7
00:36:40
y ahora ya hace la expresión
00:36:42
¿vale? en este caso es una tontería
00:36:45
¿no? porque esto va a ser siempre true
00:36:47
pero bueno, lo que me interesa a mí
00:36:49
indicar es que
00:36:50
incorporar que cuando en una
00:36:51
expresión usamos una variable, yo puedo además
00:36:54
en ese momento asignarle valor
00:36:56
por ejemplo aquí
00:36:58
asignarle un 7 sería una tontería
00:37:00
pero yo podría a lo mejor plantearme
00:37:02
leerla en ese momento y hacer eso
00:37:04
podría plantearme
00:37:06
hacer esto
00:37:11
y me ahorro el next in de arriba
00:37:12
es decir, la leo
00:37:15
en el mismo momento
00:37:17
que la leo, ya la evalúo
00:37:19
primero la leo y luego la evalúo
00:37:21
esto es válido
00:37:24
porque también es una asignación, en lugar del 7
00:37:25
le asigno esto
00:37:27
entonces, en resumen
00:37:29
una variable, en el momento
00:37:31
en el que la usamos en cualquier expresión
00:37:34
en la que sea, me da igual que sea una expresión
00:37:36
relacionar o la que sea, una variable
00:37:37
cuando yo la uso en una expresión
00:37:39
puedo de paso, si quiero, además asignarle valor
00:37:41
en esa expresión, puedo
00:37:44
aquí tenemos un ejemplo
00:37:45
¿vale? en la que
00:37:48
le asignamos un valor fruto de leer del teclado
00:37:49
y además ya la usamos en la expresión que sea
00:37:52
bueno, pues en este tipo de situaciones
00:37:54
aquí la diferencia obviamente es enorme
00:37:57
entre una barrita y dos
00:38:00
¿vale? si yo pongo dos barritas
00:38:02
esta lectura se va a hacer o no se va a hacer
00:38:06
en función de si esto es true o no es true
00:38:09
porque si pongo dos barritas
00:38:11
si esto es true, aquí no llego
00:38:13
pero si pongo solo una barrita
00:38:15
me da igual que esto sea truco falso
00:38:18
siempre voy a llegar aquí, siempre
00:38:20
en este caso
00:38:22
si yo estoy leyendo la nota
00:38:26
ahí, pondría una barrita
00:38:28
porque yo quiero leer las dos
00:38:30
entonces quiero que se ejecuten las dos condiciones
00:38:31
pero en el caso en el que yo estaba
00:38:34
que ya las tenía leídas y que yo no estoy
00:38:36
haciendo nada, nada más que evaluar la condición
00:38:38
en el caso en el que yo estaba
00:38:40
no, no, no, no, no, no
00:38:42
eso es otra cosa
00:38:51
si fuera aprobada las dos, tendría que ser un and
00:38:51
pero es otra cosa, no, no, no
00:38:53
están mezclando cosas
00:38:54
claro, pero
00:38:57
claro, entonces tienes que poner un and
00:39:02
pero es que eso es otro problema
00:39:04
ahora lo ponemos
00:39:05
en este caso, para expresar que al menos una de las dos
00:39:07
esté aprobada, tiene que ser uno
00:39:10
y una barra o dos
00:39:12
eso ya depende de si en alguna de las condiciones
00:39:14
haces algo
00:39:16
aparte de evaluar la condición
00:39:18
como asignar
00:39:20
como incrementar si haces algo
00:39:22
si no haces nada, que aquí no hacemos nada
00:39:24
solamente tenemos la condición
00:39:26
pues entonces dos barritas
00:39:27
¿vale? porque si esta ya es verdadera
00:39:29
no quieres entrar aquí
00:39:32
y si sí que haces algo
00:39:32
como asignar valor
00:39:35
entonces querrías entrar aquí también
00:39:36
porque además de la condición
00:39:40
además estás haciendo algo
00:39:41
entonces pondría solo una barrita
00:39:43
¿vale?
00:39:44
esa, vamos a
00:39:47
ponerlo aquí
00:39:49
Entonces el programa tal y sería este, hemos puesto el or doble barra porque aquí en esta condición no tenemos ninguna necesidad de entrar, si es falsa, perdón si es tú la primera y la dejaríamos así, esta versión ya estaría.
00:39:50
Vale, vamos a incorporar aquí, vamos a incorporar aquí, si ponemos el or como una, vamos a indicar aquí, solo evalúa, solo evalúa la segunda condición si es necesario, si es necesario.
00:40:06
En este caso será necesario
00:40:45
Si la primera es false
00:40:47
¿Vale?
00:40:51
Si la primera es false
00:40:58
Es cuando es necesario evaluar la segunda
00:40:59
Para ver como es la total
00:41:02
Pero si la primera es true no le hace falta
00:41:03
Vale, si ponemos
00:41:05
El or como una única barra
00:41:07
Como una única barra
00:41:10
Evalúa las dos
00:41:11
Entonces, por ejemplo, vamos a suponer que vamos a hacer
00:41:13
Vamos a hacer este programa con otra versión
00:41:20
Le decimos directamente
00:41:22
introduzca las dos notas
00:41:23
vamos a ponerle aquí
00:41:26
introduzca
00:41:27
las dos notas
00:41:32
por ejemplo, introduzca las dos notas
00:41:35
vale, y ahora
00:41:37
vamos a leer las notas
00:41:38
a la vez que hacemos la condición
00:41:41
vamos a hacer esto
00:41:43
vamos a hacer esto
00:41:44
voy a
00:41:51
cambiarlo para que
00:41:52
espérate
00:41:55
yo le doy a control c, vale
00:41:57
y ahora
00:41:59
voy a copiar aquí y lo voy
00:42:00
bajando para que
00:42:03
vale, pues entonces, introduzca
00:42:04
las dos notas, en la misma condición
00:42:11
en la misma condición
00:42:14
yo voy a asignarle valor a nota 1
00:42:15
leyéndola del teclado
00:42:17
del teclado, scan.nextint
00:42:18
así, y la otra
00:42:21
también, en la misma condición
00:42:25
a la vez
00:42:27
que la uso para la condición
00:42:30
a la vez que la uso
00:42:34
la leo, que lo puedo hacer perfectamente
00:42:35
¿vale?
00:42:38
o sea, a la vez
00:42:42
que uso la variable
00:42:44
para que forme parte
00:42:45
de la condición, a la vez le doy
00:42:48
un valor, le doy un valor y la uso
00:42:50
hemos dicho que es algo que podemos incorporar
00:42:52
el asignar valor
00:42:54
a una variable en el momento de usarla
00:42:56
en una expresión
00:42:58
¿vale? voy a ponerlo aquí
00:42:59
Podemos asignar
00:43:01
Valor a una variable
00:43:08
A la vez que la usamos
00:43:10
En una expresión
00:43:15
¿Qué es lo que estamos haciendo aquí?
00:43:17
A la vez que la usamos en la expresión
00:43:26
De ser mayor o igual que 5
00:43:28
Le damos valor
00:43:29
Aquí lo mismo
00:43:30
A la vez que la usamos en la expresión
00:43:32
De ser mayor o igual que 5
00:43:34
Le damos valor
00:43:36
Ese valor que le damos
00:43:37
Lo que pasa es que he leído del teclado
00:43:38
Pero me da igual, como si le diera yo 7
00:43:39
bueno, pues entonces
00:43:41
ahora ya esta versión del programa
00:43:44
si yo le pongo
00:43:47
doble barra
00:43:49
cuando la primera nota que meto
00:43:50
es aprobada, ya no me pide la segunda
00:43:52
pasa de la segunda completamente
00:43:55
entonces, hombre
00:43:56
si el programa continúa y yo necesito tener
00:43:58
las dos notas inicializadas, este programa no funcionaría
00:44:00
¿no?
00:44:03
por ejemplo, vamos a suponer
00:44:05
que además de mostrar el resultado
00:44:07
si es aprobó
00:44:09
Le vamos a poner antes que diga
00:44:11
Las notas que sacó son
00:44:13
Y luego nos diga, aprobó al menos una o no
00:44:15
Las notas son
00:44:18
Y le ponemos aquí
00:44:23
N1 más
00:44:26
N2, eh, nota 1, perdón
00:44:31
Nota 1 más
00:44:35
Nota 2, ¿vale?
00:44:39
Ahí
00:44:41
Vale, entonces este programa
00:44:45
Primero muestra las notas
00:44:47
Son, concatena con nota 1
00:44:49
Le da un string
00:44:51
Y ahora ya ese string lo vuelve a concatenar con nota 2
00:44:52
Vamos a poner un espacio entre medias
00:44:55
Para que
00:44:56
Y
00:44:58
Ahora, las notas que sacó
00:44:59
Dirá, las notas son
00:45:03
Nota 1, lo concatenará con i
00:45:04
Y luego nota 2, vale
00:45:06
Y luego ya nos dirá si ha aprobado al menos una o no
00:45:08
Vale
00:45:11
Bueno, pues entonces
00:45:11
Ahora hacemos una versión del programa
00:45:15
Vamos a comentar esto
00:45:16
Vamos a comentar esto
00:45:19
Entonces
00:45:23
Este programita que hemos hecho
00:45:24
Vamos a probarlo
00:45:27
La versión donde hacemos, leemos antes
00:45:28
Y luego evaluamos
00:45:31
Venga, introduzca nota 1
00:45:33
Un 4, introduzca nota 2
00:45:38
Un 6, las notas son 4 y 6
00:45:40
Aproba al menos una, vale
00:45:42
Hombre, lo normal es que uno haga más casos de prueba
00:45:43
Por ejemplo, vamos a ponerle dos suspensos
00:45:46
No aprobó ninguna, vale
00:45:49
Vamos a ponerle dos aprobados
00:45:50
A ver si con dos aprobados también funciona bien el programa
00:45:52
Aprobó al menos una, vale
00:45:54
Bueno, después de una cantidad de pruebas
00:45:56
Esta versión que hemos hecho funciona
00:45:58
¿Vale?
00:46:00
Venga, vamos a comentar ahora esta versión
00:46:02
Y vamos a quedarnos con esta
00:46:05
¿Vale?
00:46:12
Nota 1, claro, tengo
00:46:21
La tengo que declarar arriba
00:46:23
Fuera del
00:46:26
Int nota 1
00:46:28
Y esto se queda aquí
00:46:31
Ahí
00:46:33
Nota 2
00:46:34
Y esto se queda así
00:46:37
Vale
00:46:38
Bueno, siguiente versión del programa
00:46:41
No os perdáis
00:46:44
Le decimos, introduzca las dos notas
00:46:45
Eso, silencio
00:46:48
introduzca las dos notas
00:46:51
y ahora ya
00:46:57
ponemos directamente la condición
00:46:58
pero aprovechamos en la condición
00:47:00
para de paso pedir la nota primero
00:47:02
la nota 1
00:47:04
o sea, se quedará esperando
00:47:06
la consola
00:47:08
cuando le hayamos dado el valor
00:47:09
lo leerá y lo llevará a nota 1
00:47:12
y luego hará el OR con esto
00:47:13
el OR con este
00:47:15
se quedará esperando
00:47:17
y después de leer nota 2
00:47:18
hace, vale, cuál
00:47:21
va a ser el problema de este
00:47:23
y ahora ya mostramos las dos notas
00:47:24
no, las notas son
00:47:26
y resultado
00:47:29
vale, cuál es
00:47:30
el problema de este código
00:47:36
pues que efectivamente el compilador
00:47:37
me dice, oye
00:47:40
perdona, que si
00:47:42
nota uno, la lees
00:47:44
y es verdadera
00:47:46
ya no voy a entrar ahí
00:47:48
ya no voy a entrar, porque como ya es
00:47:50
verdadera, el orden total
00:47:52
es verdadero, ya no voy a entrar
00:47:54
y te dice, y me estás diciendo
00:47:55
que hemos anotado dos, no tengo muy
00:47:58
claro que si voy a poder mostrarla, depende
00:48:00
la podré mostrar si
00:48:02
esta ha sido falsa y me has obligado a entrar
00:48:04
aquí, pero si esa ha sido verdadera, no
00:48:06
vale, entendéis el
00:48:07
problema, entonces en esta situación
00:48:10
aquí tendríamos que arreglarlo
00:48:12
y poner una barra
00:48:14
y ya el compilador se queda tranquilo
00:48:15
y dice, ah vale, ahora sé seguro
00:48:18
que me da igual que esta me dé falsa o true
00:48:19
voy a entrar en la otra
00:48:22
voy a entrar en la otra
00:48:24
entonces aquí el compilador
00:48:26
ya nos ha hecho ver la diferencia
00:48:28
entre poner doble barra y una
00:48:30
¿está claro?
00:48:31
bueno, a ver
00:48:43
la clave no es tanto poner la misma línea
00:48:43
sino entender la diferencia entre
00:48:45
María, explícaselo, anda
00:48:46
sí, o sea, pero la diferencia es
00:48:48
entre, no es tanto poner la misma línea
00:48:52
sino entre poner dos barras y una
00:48:54
claro, porque te las está preguntando
00:48:55
por separado
00:49:05
lo están preguntando por separado
00:49:06
eso
00:49:10
la pide a la vez que evalúa
00:49:13
entonces si no le hace falta evaluar
00:49:14
porque ya esta es true
00:49:16
vale, entonces aquí el compilador
00:49:17
entonces
00:49:20
aquí el compilador si no escribe esto rápido
00:49:24
y pone las dos barras
00:49:26
porque está acostumbrado y siempre pone las dos barras
00:49:27
si no lo escribe rápido
00:49:30
podría no darse cuenta de ese problema
00:49:32
podría no darse cuenta
00:49:34
pero aquí el compilador ya nos ha avisado
00:49:35
y nos ha dicho, al ponerse rojo no nos ha dejado seguir, y el compilador nos avisa.
00:49:38
Pero imaginaos que tenemos un programa en el cual esto se ha inicializado,
00:49:43
que suele ser la situación habitual, que uno cuando declara variables las inicializa
00:49:49
y luego ya le va dando valores según los usuarios van dando datos.
00:49:54
Entonces, si esto fuera un programa en el cual esto está inicializado,
00:49:59
porque por restricciones del procedimiento, por lo que sea, está inicializado,
00:50:04
Ahora ya el compilador no me va a avisar de que la estoy liando, no me va a avisar, porque yo pongo doble barra y él dice, vale, yo esto no lo voy a hacer, si esto es true, si esto es true no lo voy a hacer, con lo cual nota 2 se va a quedar con el valor de arriba, con el 0, no con el que le has metido, ¿me estoy explicando?
00:50:08
Vamos a ejecutarlo
00:50:26
Esta versión
00:50:28
Vale, introduzca las dos notas
00:50:30
Se queda esperando la primera
00:50:34
Un 3
00:50:35
Y se queda esperando la segunda
00:50:37
Porque la primera era falsa
00:50:39
Con lo cual, necesita la segunda
00:50:41
Se queda esperando un 6
00:50:44
Las notas son 3 y 6 es probablemente menos 1
00:50:45
Ahora vamos a darle una nota en la cual
00:50:47
Esta ya sea true
00:50:50
Como esta es true, ahí no entra
00:50:51
Vamos a volver a ejecutar
00:50:53
le damos 7
00:50:55
¿veis? ya ha pasado de pedir
00:50:58
la segunda nota, ha pasado y te dice
00:51:01
¿cuántas son 7 y 0? 0 porque 0 inicializamos
00:51:02
y de la segunda ha pasado
00:51:05
¿vale?
00:51:07
con lo cual el programa estaría funcionando mal
00:51:08
porque le estaría dejando la nota a 0
00:51:11
la segunda nota a 0
00:51:12
si ya la primera tiene aprobada pasaría
00:51:14
entonces
00:51:15
todos son pequeños matices
00:51:17
pequeñas cositas
00:51:20
que son muy básicas
00:51:22
pero que hay veces hacen que una aplicación
00:51:23
funcione mal
00:51:26
y no sabes por qué funciona mal
00:51:26
porque te crees que no, que es que en todo esto has hecho tu algoritmo mal
00:51:29
y no has hecho el algoritmo mal seguramente
00:51:31
sino es un error muy sencillo, muy básico
00:51:33
y a veces encontrar los errores básicos
00:51:35
es lo más difícil
00:51:38
¿vale? encontrar los errores sencillitos
00:51:39
vale, pues entonces, queda claro y clarísimo
00:51:42
la diferencia entre
00:51:46
lo ponemos aquí
00:51:48
lo ponemos aquí
00:51:51
si ponemos
00:51:53
doble barra
00:51:57
la segunda nota
00:51:59
no se lee
00:52:01
si la
00:52:04
primera
00:52:05
es mayor o igual
00:52:07
que 5
00:52:10
¿vale? entonces aquí en esta versión
00:52:11
si queremos las dos notas
00:52:13
porque luego el programa sigue haciendo cosas con las notas
00:52:16
pues si queremos las dos
00:52:18
porque sigue haciendo cosas con las notas
00:52:20
suponemos que es una aplicación más grande
00:52:21
pues si queremos las dos te voy a poner
00:52:22
¿vale?
00:52:23
vale
00:52:25
pues vamos a parar un segundito
00:52:27
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 12
- Fecha:
- 6 de octubre de 2023 - 13:07
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Duración:
- 52′ 30″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 1002.23 MBytes