Saltar navegación

Activa JavaScript para disfrutar de los vídeos de la Mediateca.

Clase 25-09-23 - 3 - 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 25 de septiembre de 2023 por Raquel G.

14 visualizaciones

Descargar la transcripción

Vale, pues venga, ejemplo char y boolean. 00:00:02
El tipo char primitivo, siguiente que nos falta. 00:00:05
Este nombre para una variable es un nombre feísimo, 00:00:10
recordad siempre el principio que hemos dicho que los nombres de las variables 00:00:14
lo más explicativos posible respecto al sentido de lo que guardan. 00:00:17
Ahora mismo es que él no está guardando nada, nada más que un ejemplo para mí, 00:00:24
lo llamo c, pero hombre, una variable que se llama abcxjk 00:00:27
suele venir de un programa un poquito mal pensado y mal hecho. 00:00:30
Lo digo para que vuelva a surgir este tema. 00:00:37
Pero bueno, en mi caso, por comodidad, no escribir mucho, 00:00:39
lo voy a llamar c y ya está. 00:00:41
Bueno, pues las variables char c ya sabemos que sirven 00:00:43
para guardar un único carácter y uno solo y nada más. 00:00:46
¿Y cómo se expresa un único carácter en Java? 00:00:51
no se expresa con las comillas dobles 00:00:55
o sea, uno podría decir 00:00:57
oye, esto es un único carácter 00:01:00
V, ¿por qué no me dejas guardarlo en C? 00:01:02
porque no es la manera que tiene 00:01:04
Java de entender 00:01:06
un único carácter 00:01:07
esto para Java es toda una 00:01:09
cadena de caracteres y eso se tiene que usar 00:01:12
de otra manera, ya veremos cómo 00:01:14
¿que esta cadena de caracteres coincide que solo tiene 00:01:15
un carácter? bueno, coincide que solo tiene uno 00:01:18
pero es una cadena de caracteres 00:01:20
y una cadena de caracteres nunca puede ir 00:01:21
a un char, a un char solo puede ir 00:01:24
un carácter, y como se le 00:01:26
dice a java, oye que lo que te doy 00:01:28
es solo un carácter, guárdamelo como 00:01:30
un carácter, pues con una comilla 00:01:32
simple, ya está, con la comilla 00:01:34
simple en vertical, ahí ya 00:01:36
sí, ahí ya sí le gusta y esa 00:01:38
asignación ya es válida, ¿vale? y en la variable 00:01:40
char solo puede ir un carácter, y solo 00:01:42
uno, dentro 00:01:44
de todos los caracteres posibles codificables 00:01:46
¿y cuáles son esos? 00:01:48
los de la famosa tabla hasti 00:01:50
a ver si encontramos una tabla ASCII 00:01:51
aquí, estupenda 00:01:54
bueno, esta está bastante bien 00:01:55
esto es una 00:02:05
¿cómo lo puedo quitar sin contestarle? 00:02:12
cago en la madre 00:02:17
bueno, esto es una tabla 00:02:18
¿cómo puedo quitar esto sin 00:02:23
darle a ninguna de las dos opciones? 00:02:25
vale 00:02:37
pues esto es una tabla ASCII 00:02:38
la tabla ASCII 00:02:41
concepto fundamental de cualquier informático 00:02:43
claro 00:02:47
es una tabla que como ya me he dicho otras veces 00:02:47
hace corresponder 00:02:51
cada uno de los caracteres 00:02:52
que usamos 00:02:55
a un numerito entero 00:02:56
¿por qué? 00:02:59
porque lo único que se puede codificar en binario son bits 00:03:00
entonces estos numeritos 00:03:03
111, 112, 113 00:03:05
se pueden codificar en binario 00:03:06
entonces la codificación binaria 00:03:08
del 82 00:03:11
se corresponde la tabla ASCII con la R 00:03:12
mayúscula, la del 83 con la S 00:03:15
esto es la tabla ASCII 00:03:19
y aquí están todos los caracteres que podemos usar 00:03:20
pues un montonazo de caracteres 00:03:23
la A con tilde, la A sin tilde 00:03:25
los números, los guiones, los espacios 00:03:27
los tabuladores, pues cualquier cosa 00:03:29
¿vale? por ejemplo 00:03:31
yo aquí podría poner 00:03:35
la A con tilde 00:03:37
la con tilde es un carácter también 00:03:42
es decir, a un char 00:03:44
le puedo dar 00:03:46
a un char le puedo asignar 00:03:47
cualquiera 00:03:50
de los caracteres que hay en esta tabla 00:03:53
cualquiera, todos ellos son char 00:03:55
¿vale? 00:03:56
cualquiera de los caracteres de esta tabla 00:03:58
le puedo asignar 00:04:00
¿vale? 00:04:01
un tabulador 00:04:03
es un carácter 00:04:04
un espacio, todo eso son char 00:04:07
y se los puedo asignar a una variable char 00:04:10
vale 00:04:12
entonces por comodidad 00:04:14
por comodidad a la hora de programar 00:04:16
como según la tabla 00:04:19
ASTI hay una correspondencia 00:04:21
directa entre char 00:04:22
y número entero 00:04:24
una correspondencia unívoca, verdad 00:04:26
hay una biyección ahí perfecta entre char 00:04:28
y número entero, pues Java me permite 00:04:30
trabajar indistintamente 00:04:33
cuando uso una variable char 00:04:35
con el carácter entre comillas simples 00:04:36
y el numerito 00:04:38
es decir, si yo busco esta A con tilde 00:04:39
en la tabla ASCII 00:04:43
y esta A con tilde, si no la encuentro rápido 00:04:45
pues me busco otro carácter 00:04:47
esta 00:04:48
la A con tilde es el 160 00:04:50
bueno, pues estas dos sentencias en Java son idénticas 00:04:53
para Java son idénticas 00:04:58
¿vale? 00:05:03
porque para él es equivalente 00:05:06
cuando asigno una variable char, claro 00:05:08
es equivalente 00:05:11
el numerito entero de la tabla ASCII 00:05:13
y el carácter entrecomillado 00:05:15
claro, otra cosa es 00:05:17
esto, ¿vale? 00:05:19
imaginaos que yo tengo aquí una variable entera 00:05:21
y hago 00:05:23
n igual 00:05:25
a 160 00:05:27
¿vale? 00:05:29
estas dos asignaciones en realidad son distintas 00:05:33
o sea, yo a c 00:05:35
como es una variable char 00:05:37
le estoy asignando 00:05:39
el carácter que según la tabla 00:05:42
ASCII se corresponde a este número 00:05:43
pero sin embargo a n, como n 00:05:45
es un entero, a n le estoy 00:05:47
asignando el numerito 160 00:05:49
son dos asignaciones con dos sentidos 00:05:51
distintos 00:05:54
vamos a mostrarlas con un 00:05:54
system out 00:05:57
yo aquí voy a mostrar la variable 00:05:58
c y en otro system 00:06:02
out aquí debajo 00:06:04
voy a mostrar la variable n 00:06:04
y de hecho voy a quitar esta asignación 00:06:07
de aquí, la voy a quitar 00:06:11
esta asignación, voy a asignarle 00:06:13
a C 160 00:06:16
y a N 160 00:06:17
la única diferencia es que C es un char 00:06:18
y N es un entero 00:06:21
vale, vamos a ejecutar este código 00:06:22
vale, a ver 00:06:25
es que el editor de texto 00:06:31
este, del eclipse 00:06:33
no, hay que cambiar la fuente 00:06:34
de codificación para que muestre las tildes 00:06:37
por eso lo muestra así, voy a elegir 00:06:39
uno que no sea con tilde porque 00:06:41
pero es un problema del editor de texto 00:06:42
de aquí 00:06:44
voy a 00:06:45
pero como veis son dos cosas distintas 00:06:47
voy a elegir un carácter de la tabla 00:06:50
ASCII que precisamente no sea una tilde 00:06:52
pues 00:06:54
cualquiera, 76 00:06:56
voy a poner 76 00:06:58
voy a asignarle 00:07:00
76 y 76 00:07:05
vale 00:07:12
a las dos variables les he asignado lo mismo 00:07:13
y ahora la voy a mostrar 00:07:16
C y N. Voy a mostrarlas. Ejecuto esto de nuevo y efectivamente la primera sentencia para mostrar me ha mostrado la L y la siguiente me ha mostrado el 76. 00:07:18
claro, porque C es una variable char 00:07:34
cuando a C se le hizo 00:07:37
esa asignación 00:07:39
en realidad lo que se hizo 00:07:40
fue asumir que en C va el char 00:07:42
que según la tabla ASTI 00:07:45
está en el número 76 00:07:47
pero cuando se hizo la de abajo 00:07:48
N es un entero, aquí no hay tabla ASTI, no hay historias 00:07:51
aquí asigno el 76 00:07:53
pues el 76 y punto pelota 00:07:54
¿vale? y punto pelota 00:07:57
76 y lo busco en la tabla ASTI 00:07:59
tendrá que ser la L 00:08:03
efectivamente es la L 00:08:04
bueno, pues esto es lo más importante 00:08:07
de tener presente de los char 00:08:15
que se puede trabajar indistintamente 00:08:16
con ellos, con el número entero 00:08:20
y con la variable 00:08:21
y con el char 00:08:23
entre comillas siempre, se puede trabajar indistintamente 00:08:25
esto luego 00:08:27
ahora no quiero liaros mucho 00:08:39
pero bueno, yo creo que sí que podemos 00:08:42
mencionarlo un poquito más 00:08:44
este hay que manejarlo con cuidado 00:08:47
porque se puede prestar a error 00:08:51
por ejemplo, vamos a crear 00:08:53
dos variables char 00:08:55
c1 y c2 00:08:57
vale, a c1 le doy 76 00:08:59
y a c2 00:09:02
le doy 00:09:06
vale, le doy 6 00:09:15
vale, doy 66 y 6 00:09:17
vale, venga, vamos a seguir 00:09:21
haciendo 00:09:27
muestras de aquí 00:09:28
voy a poner aquí un siso para 00:09:30
dividirlo 00:09:33
que tenga aquí muchos asteriscos 00:09:34
para dividirlo, vale, aquí esto me va a mostrar 00:09:37
esta cadena de texto, vale, ¿qué vamos a mostrar ahora? 00:09:39
después de estos asteriscos, voy a mostrar 00:09:41
esto 00:09:43
voy a mostrar 00:09:47
más ceros 00:10:04
los operadores básicos 00:10:11
que son suma, resta, multiplicación y división 00:10:14
vamos, no hace falta 00:10:18
cuando veamos operadores va a hacer falta decir poco de ellos 00:10:20
porque son naturales 00:10:23
uno sabe que más es la suma 00:10:24
y si ponemos un número a un lado y otro al otro 00:10:26
pues es una 00:10:28
según el álgebra 00:10:29
que conocemos 00:10:31
todos sabemos sumar según nuestro álgebra 00:10:33
bueno, pues entonces 00:10:36
C1 más C2 en realidad es una suma 00:10:38
¿verdad? porque C1 es un número 00:10:41
y C2 es otro número 00:10:43
también, podemos trabajar 00:10:45
directamente con ellos como si fuera entero 00:10:47
entonces, esta operación tiene sentido 00:10:48
¿vale? C1 más C2 00:10:51
tiene sentido 00:10:53
vale, vamos a ver qué es lo que muestra 00:10:54
C1 más C2, vamos a ejecutarlo 00:10:56
¿vale? 00:10:58
C1 más C2 00:11:04
me está dando 82 00:11:05
esto no es un char 00:11:07
entonces nosotros lo que podríamos haber esperado es 00:11:09
a ver, c1 más c2 sería 00:11:12
76 más 6, 82 00:11:17
como estamos diciendo 00:11:20
que cuando se trata de un char 00:11:23
el char, cuando tiene un numerito entero 00:11:25
en realidad es equivalente al carácter que codifica 00:11:29
pues si yo he hecho 76 más 6 me da 82 00:11:32
Entonces uno podría haber esperado 00:11:35
Podría haber esperado 00:11:37
Que al haber hecho C1 más C2 00:11:39
Lo que me hubiera mostrado es 00:11:41
Este 82 que me sale aquí 00:11:42
Me voy a la tabla ASTI 00:11:45
¿Vale? Me voy a la tabla ASTI 00:11:46
Me debería 00:11:50
Podríamos esperar que me salga la R 00:11:53
¿Verdad? 00:11:55
¿No estáis perdidos? ¿Sabéis por dónde voy? 00:11:57
00:12:00
¿Vale? Pero no nos ha mostrado la R 00:12:00
Nos ha hecho la suma 00:12:03
¿Por qué? Cuidado. Cuando involucramos operadores algebraicos, él de nuevo hace conversiones automáticas, promociones automáticas. Este término ya lo hemos usado antes. Cuando él tenía que asignar un int a un long, ya hacía alguna pequeña conversión, que es del int al long, no puede. 00:12:05
Entonces cuidado, Java hay determinadas situaciones que rápidamente cuando uno ya lleva un tiempo 00:12:26
Ya las tiene todas identificadas y ya no le causa un problema 00:12:32
Hace rápidamente conversiones automáticas 00:12:34
Que si uno las controla y las entiende las puede usar 00:12:43
Pero si no las controla y las entiende le pueden dar errores 00:12:48
Pues cuando hay operadores algebraicos involucrados como más, menos, por y división 00:12:49
cuando hay operadores algebraicos involucrados 00:12:55
cuidado 00:12:57
porque automáticamente lo que él hace 00:12:58
es lo que tenga alrededor 00:13:01
promocionarlo a número 00:13:02
y convertirlo a número 00:13:04
porque él dice, uy hay una operación matemática 00:13:05
hay una operación matemática, para hacer operaciones matemáticas 00:13:08
me hacen falta números, pues lo convierto a número 00:13:11
y es lo que hace 00:13:13
hace esa promoción, vale 00:13:14
lo convierte a número 00:13:16
es lo que ha hecho, C1 más C2 00:13:17
ha visto que hay un más 00:13:21
lo ha convertido a número 00:13:22
Y me muestra el número 82. 00:13:24
Y bueno, pues ya, si uno sabe, controla eso, pues no pasa nada. 00:13:27
Bueno, vamos a indicarlo aquí. 00:13:33
Los operadores algebraicos, vamos a llamarlo algebraicos, los que hacen operaciones algebraicas. 00:13:41
Algebraicos, si lo necesitan, convierten los operandos a números. 00:13:49
y eso puede dar efectos secundarios 00:13:57
que podemos no entender 00:14:01
vale, pues lo pongo aquí 00:14:03
cuidado, vale 00:14:10
es decir, lo vamos a explicar un poco más 00:14:14
lo vamos a explicar un poco más 00:14:17
lo siguiente 00:14:21
no muestra 00:14:21
el carácter 00:14:24
el carácter ASCII 00:14:27
76 más 6 00:14:34
Sino el número 82 directamente 00:14:37
¿Vale? 00:14:41
Todo lo ha convertido 00:14:49
¿Cómo puedo arreglar yo esto? 00:14:50
No hay problema 00:14:58
O sea, si yo quiero asegurarme 00:14:59
Podría hacer 00:15:00
Vamos a volver a repetir esto 00:15:01
Que yo quiero 00:15:03
Él lo ha convertido a número 00:15:13
Pero yo quiero mostrar el carácter ASCII 82 00:15:14
Número 82 00:15:17
Alguien se aventuraría a decir 00:15:18
¿Qué puedo hacer? 00:15:23
si yo quiero que eso sea un char, otras empeñan que sea un número 00:15:24
pero quiero que sea un 00:15:27
pues un casting 00:15:28
que ya lo hemos visto antes 00:15:32
pues venga, un casting 00:15:34
y un casting de que no, que yo lo quiero como char 00:15:36
que lo quiero como char 00:15:39
pues venga, hago un casting 00:15:40
este c1 más c2 00:15:46
hable un casting a char 00:15:48
hombre ya 00:15:51
tú lo has interpretado como número 00:15:52
porque has visto un operador numérico 00:15:55
algebraico, perdón, lo has interpretado como número 00:15:56
pero no 00:15:59
yo lo quiero como char 00:16:01
porque yo lo que ahí quería era 00:16:03
el carácter char S 00:16:05
vale, ahora ya sí 00:16:09
ahora ya nos muestra la R 00:16:20
que la R efectivamente es 00:16:21
el carácter ASCII 00:16:24
que está situado en el 82 00:16:28
en el 82 00:16:29
el que está en el 82 00:16:31
bueno, esto es 00:16:33
Entonces hay muchas casuísticas que se pueden dar relacionadas con esto, pero lo importante es que tengamos más o menos clara la idea, por si nos sale algo que no esperamos, entender la base de por qué ha podido ser y arreglarla. 00:16:38
No podemos ejemplificar todas las casuísticas que se pueden dar, ¿vale? Pero más o menos con esto tenemos las ideas básicas, que son, recopilamos un char y el numerito de la tabla ASTI que lo representa, son equivalentes a la hora de asignarlo a una variable char, son equivalentes, ¿vale? 00:16:52
ahora el siguiente salto que podríamos dar 00:17:17
como en una variable char 00:17:20
en realidad va un entero 00:17:23
yo puedo operar con él 00:17:24
pero cuidado 00:17:27
porque si usamos operadores algebraicos 00:17:28
los operadores algebraicos 00:17:30
lo convierten a número 00:17:31
lo convierten a número 00:17:33
entonces que yo quiero ese efecto 00:17:35
¿vale? quiero ese efecto 00:17:37
pero que ahora quiero volver 00:17:39
dar el otro salto 00:17:40
y no, yo no quiero el número 00:17:42
quiero el char que lo representa 00:17:43
siempre tengo la opción del casting 00:17:45
¿Vale? Es como si yo hago aquí ahora 00:17:47
Por ejemplo, en char, en otra variable, en otra cualquiera 00:17:54
En char c3 00:17:59
Yo le voy a asignar, vamos a intentar asignarle n 00:18:01
Aquí tenemos claro que me va a decir 00:18:06
No, el tipo no es compatible 00:18:10
N es un número entero, es un int 00:18:13
No puedes asignar un número entero 00:18:17
a una variable char 00:18:20
está claro, no se iba a salir un error de compilación 00:18:22
porque no se pueden asignar 00:18:24
tipos incompatibles 00:18:26
salvo los dos matices 00:18:28
que hemos visto hasta ahora, que él puede hacer 00:18:30
pronunciación automática de int a da 00:18:32
de int a lo ojo, de flow a da da 00:18:33
pero este no, hay pronunciación automática que valga 00:18:35
este, no puedes asignar un int 00:18:40
a un char 00:18:42
pero yo podría hacer un char 00:18:43
podría hacer un casting, perdón 00:18:46
si hago un casting, ningún problema 00:18:48
y ahora que estaré asignando a C3 00:18:51
estaré asignando a C3 00:18:55
el carácter que está 00:18:56
en la posición 00:18:59
ASCII 76 00:19:01
eso es lo que estaré asignando a C3 00:19:02
vamos a mostrarlo 00:19:05
a ver si es verdad que nos encaja 00:19:09
vale, nos muestra la L 00:19:10
la L 00:19:18
debería estar en 00:19:20
la posición 76 00:19:22
porque yo he hecho aquí el char 00:19:25
el casting de este, en la 76 00:19:26
si buscamos aquí en la tabla 00:19:29
ASCII, pues en la 76 00:19:31
está la L 00:19:34
¿vale? en la 76 está la L 00:19:34
bueno, pues todo esto os lo revisáis 00:19:37
para tenerlo ahí en la mente 00:19:43
porque hay aplicaciones 00:19:44
en las que 00:19:46
gran parte de los errores 00:19:47
son este tipo de cosas 00:19:49
de este tipo de cosas 00:19:53
hasta que uno encuentra, porque uno a veces 00:19:54
cuando una aplicación tocha enorme 00:19:56
que hace cosas súper sofisticadas no le funciona 00:19:58
como la aplicación es tocha 00:20:00
sofisticada y no le funciona 00:20:02
pues entonces busca errores 00:20:04
tochos sofisticados y no 00:20:06
la mayoría de las veces los errores son 00:20:08
por detalles mínimos como este 00:20:10
que yo no me he dado cuenta de que aquí 00:20:12
estoy utilizando 00:20:14
haciendo una suma de números cuando lo que quería hacer 00:20:15
era concatenación, cosas de este estilo 00:20:18
a lo mejor de formato 00:20:21
cosas pequeñísimas 00:20:22
y es muy difícil encontrarlos 00:20:23
porque cuando uno los busca 00:20:26
da por sentado que como esto es básico 00:20:28
eso lo tiene bien 00:20:30
y normalmente el ojo te filtra automáticamente 00:20:31
la parte sencilla del código 00:20:34
no la ve 00:20:35
y se va a la conflictiva 00:20:36
donde están los bucles, donde están las cosas 00:20:39
y la otra la podemos mirar mil veces 00:20:41
y no nos damos cuenta 00:20:44
entonces tenemos que girar ese filtro 00:20:46
porque los errores muchas veces están 00:20:47
en este tipo de cosas sencillas 00:20:49
¿Vale? Un tipo de cosas sencillas. 00:20:52
Entonces, como las ideas ya están, ahora lo tenéis que revisar, aseguraos de que lo tenéis interiorizado 00:20:54
y que entendéis en qué medida se puede hacer equivaler el número entero con el char, ¿vale? 00:21:01
Y evitar las conversiones de plazas de algebraicos, etc. 00:21:07
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
14
Fecha:
25 de septiembre de 2023 - 13:34
Visibilidad:
Público
Centro:
IES ROSA CHACEL
Duración:
21′ 13″
Relación de aspecto:
1.78:1
Resolución:
1280x720 píxeles
Tamaño:
404.98 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid