1 00:00:00,000 --> 00:00:16,219 Voy a grabar esta clase, por lo tanto, si habláis, me dais vuestra autorización a grabar vuestra voz. Dicho esto, segunda parte del Java básico. Hasta ahora nosotros hemos visto variables, hemos visto cómo leer de teclado, cómo escribir en pantalla y poco más. 2 00:00:16,219 --> 00:00:44,659 Algunos operadores, suma, resta y división. Vamos a añadir más elementos para poder hacer más ejercicios, ejercicios más distintos y empezar un poquito a acercarnos a lo que es la parte interesante de este primer trimestre, que son el control del flujo de información, que son if, while, iterativos, condicionales y llamadas de métodos. 3 00:00:44,659 --> 00:00:49,399 ¿Sí? Entonces, lo que vamos a ver hoy son muchas cosillas, ¿vale? 4 00:00:49,799 --> 00:00:52,299 Nosotros hemos visto las variables. ¿Qué es una variable? 5 00:00:52,479 --> 00:00:56,259 Es un trozo de memoria donde dentro le pongo un valor. 6 00:00:56,619 --> 00:00:59,859 Este valor está asociado con un tipo, solo puede tener un determinado tipo. 7 00:01:00,380 --> 00:01:01,359 Puede variar este valor. 8 00:01:04,879 --> 00:01:10,280 Sí. Y en cualquier momento puede decir int edad es igual a 10. 9 00:01:10,719 --> 00:01:14,040 Y mañana es mi cumpleaños y pongo edad es igual a edad más 1. 10 00:01:14,239 --> 00:01:16,319 Pues ya está. Ahora tengo 11 dentro de él. 11 00:01:16,319 --> 00:01:26,159 Se llama variable porque este trozo de memoria está allí, nadie me lo toca, nadie lo modifica, pero en cualquier momento yo puedo cambiar esto. 12 00:01:27,140 --> 00:01:34,540 Hay situaciones, hay contextos dentro de mis programas y mis sistemas en el que yo podría crear un trozo de memoria diciendo, 13 00:01:34,540 --> 00:01:42,799 mira, yo aquí dentro te meto un valor que te pongo al principio y quiero que este valor no cambie nunca jamás. 14 00:01:42,799 --> 00:01:46,040 De una ejecución a otra 15 00:01:46,040 --> 00:01:47,459 Podría hasta variar 16 00:01:47,459 --> 00:01:49,939 Yo podría decir, vale, este es un juego 17 00:01:49,939 --> 00:01:51,379 Dime el número de jugadores 18 00:01:51,379 --> 00:01:53,700 ¿Cuánto hay? Tres, vale, a partir de ahora 19 00:01:53,700 --> 00:01:55,560 Para esta sesión hay tres jugadores 20 00:01:55,560 --> 00:01:57,680 La próxima vez cuando juego 21 00:01:57,680 --> 00:01:59,939 Digo, ahora hay siete jugadores, vale, perfecto 22 00:01:59,939 --> 00:02:01,519 En esta partida hay siete jugadores 23 00:02:01,519 --> 00:02:03,739 Pero no cambiarán nunca hasta que 24 00:02:03,739 --> 00:02:05,500 No reinicie el juego, ¿sí? 25 00:02:05,640 --> 00:02:07,920 Por ejemplo, estas no se llaman 26 00:02:07,920 --> 00:02:09,340 Variables, sino se llaman 27 00:02:09,340 --> 00:02:11,759 Constantes, ¿vale? Por ejemplo 28 00:02:11,759 --> 00:02:13,680 el pi griego 29 00:02:13,680 --> 00:02:16,979 es una constante 30 00:02:16,979 --> 00:02:18,180 ¿por qué? porque no vale 31 00:02:18,180 --> 00:02:18,680 ¿vale? 32 00:02:20,139 --> 00:02:22,599 ¿cómo se define? exactamente 33 00:02:22,599 --> 00:02:24,259 como una variable 34 00:02:24,259 --> 00:02:26,599 solo que le ponemos 35 00:02:26,599 --> 00:02:28,639 delante la palabra reservada 36 00:02:28,639 --> 00:02:30,840 final, como decir, este es tu valor 37 00:02:30,840 --> 00:02:32,979 final, no vas a cambiar 38 00:02:32,979 --> 00:02:34,159 nunca, ¿vale? 39 00:02:34,580 --> 00:02:36,680 entonces, final double pi 40 00:02:36,680 --> 00:02:37,539 es igual a 41 00:02:37,539 --> 00:02:41,159 pues me crea un trozo de memoria 42 00:02:41,159 --> 00:02:45,240 pone dentro este valor, ese trozo de memoria se referencia como 43 00:02:45,240 --> 00:02:48,099 con la palabra pi, ¿vale? pi 44 00:02:48,099 --> 00:02:53,180 pero ya no puedo cambiarlo, no puedo hacer después 45 00:02:53,180 --> 00:02:56,939 pi es igual a 3, me va a dar un error, me dice 46 00:02:56,939 --> 00:03:01,039 no, no lo puedes modificar, si le quito el final, sí, puede hacer lo que me la haga 47 00:03:01,039 --> 00:03:04,960 pero con el final, una vez definido, es eso para siempre 48 00:03:04,960 --> 00:03:09,120 ¿ok? para diferenciarlas 49 00:03:09,120 --> 00:03:14,120 De las variables, las constantes van todas en mayúsculo. 50 00:03:15,560 --> 00:03:19,060 El nombre de la variable se pone entera en mayúsculo. 51 00:03:19,520 --> 00:03:24,599 Por ejemplo, en el ejercicio que hemos hecho antes, ¿esto qué será? 52 00:03:27,210 --> 00:03:28,310 Una constante. 53 00:03:28,710 --> 00:03:30,889 ¿De qué clase? ¿Dónde es definida esta clase? 54 00:03:31,370 --> 00:03:33,449 ¿Dónde está definida esta constante? 55 00:03:35,719 --> 00:03:36,659 En la clase math. 56 00:03:36,659 --> 00:03:50,699 Si yo me voy a la clase math.java y voy a leer el código de math.java, allí dentro encontraré una línea que pone final double p es igual a 3,14, bla, bla, bla. 57 00:03:52,500 --> 00:03:52,979 ¿Entiendes? 58 00:03:57,659 --> 00:04:04,199 O por ejemplo, final int max-usuarios, veis, todo en mayúscula, es igual a 300. 59 00:04:04,319 --> 00:04:06,560 Eso quiere decir que mi sistema es máximo 300 usuarios. 60 00:04:07,120 --> 00:04:08,479 Y eso no cambiará nunca. 61 00:04:08,479 --> 00:04:11,419 se escribe en mayúscula 62 00:04:11,419 --> 00:04:12,699 porque así yo cuando leo 63 00:04:12,699 --> 00:04:15,360 un nombre, más o menos sé 64 00:04:15,360 --> 00:04:16,420 de qué estoy hablando 65 00:04:16,420 --> 00:04:19,060 empieza por mayúscula, pero el resto es minúscula 66 00:04:19,060 --> 00:04:21,240 posiblemente es un objeto, como string 67 00:04:21,240 --> 00:04:22,259 como scanner 68 00:04:22,259 --> 00:04:24,920 es todo minúsculo 69 00:04:24,920 --> 00:04:27,360 probablemente es o una variable 70 00:04:27,360 --> 00:04:28,360 o un método 71 00:04:28,360 --> 00:04:30,259 todavía no lo hemos visto, hemos visto main 72 00:04:30,259 --> 00:04:33,300 todo mayúsculo 73 00:04:33,300 --> 00:04:34,180 pues eso no lo está 74 00:04:34,180 --> 00:04:37,199 entonces, ¿es necesario 75 00:04:37,199 --> 00:04:41,199 que sea así? No. Podéis hacer lo que os da la gana. ¿Todos los que 76 00:04:41,199 --> 00:04:45,120 programan en Java hacen así? Sí. Por lo tanto, si no lo hacéis, la gente 77 00:04:45,120 --> 00:04:47,819 que programa en Java os dirá que lo se ha escrito mal. 78 00:04:50,920 --> 00:04:53,279 Una constante no puede cambiar su valor. El identificador 79 00:04:53,279 --> 00:04:55,519 de una constante suele ir en mayúsculas. 80 00:04:59,300 --> 00:05:02,959 Tema, concepto, abstracto 81 00:05:02,959 --> 00:05:06,139 y teórico. ¿Vale? 82 00:05:06,139 --> 00:05:08,220 el ámbito de una variable 83 00:05:08,220 --> 00:05:09,519 o de una constante 84 00:05:09,519 --> 00:05:12,199 un elemento de estos que creo 85 00:05:12,199 --> 00:05:12,839 hasta ahora 86 00:05:12,839 --> 00:05:15,579 en inglés se llama scope 87 00:05:15,579 --> 00:05:17,100 ¿vale? 88 00:05:17,819 --> 00:05:19,439 ¿qué es el ámbito de una variable? 89 00:05:19,680 --> 00:05:22,220 es donde existe esta variable 90 00:05:22,220 --> 00:05:24,019 la variable 91 00:05:24,019 --> 00:05:26,560 existe en el bloque 92 00:05:26,560 --> 00:05:27,899 en que la creo 93 00:05:27,899 --> 00:05:29,379 ¿qué era un bloque? 94 00:05:30,579 --> 00:05:32,240 ¿os acordáis los delimitadores de bloque? 95 00:05:37,689 --> 00:05:38,949 cuando vimos los delimitadores 96 00:05:38,949 --> 00:05:43,870 como la tercera transparencia del Java Básico 1, vimos delimitador de bloque. 97 00:05:43,990 --> 00:05:44,910 ¿Qué era el delimitador de bloque? 98 00:05:46,149 --> 00:05:46,829 La llave. 99 00:05:48,649 --> 00:05:51,949 Se marca que aquí empezó un bloque de código, aquí acaba un bloque de código. 100 00:05:53,250 --> 00:05:55,170 Llave abierta, llave cerrada. 101 00:05:55,269 --> 00:06:02,829 Pues si yo declaro una variable aquí dentro, esta variable tiene sentido, existe dentro de este bloque. 102 00:06:03,290 --> 00:06:06,970 Si salgo de este bloque, esta variable ya no existe. 103 00:06:06,970 --> 00:06:15,910 por ahora es que me cuentas dentro de un rato tendrá sentido pero acordados si yo te abro abro 104 00:06:15,910 --> 00:06:21,310 una llave declaró una variable si cierro esa llave no puedo volver a utilizar esa variable 105 00:06:21,310 --> 00:06:30,139 ya no existe fuera de ese modo puede ser sensible sólo dentro del bloque es decir entre estas cosas 106 00:06:30,139 --> 00:06:35,899 aquí vale en el que ha sido definida el mismo nombre de otra declarada del mismo ámbito vale 107 00:06:35,899 --> 00:06:42,920 si yo hago int edad es igual a 3 y ahora hago int edad es igual a 4, pues él colapsa, porque dice 108 00:06:42,920 --> 00:06:49,579 no, dentro de un bloque o tú defines una variable con un nombre en un bloque, pues dentro de este 109 00:06:49,579 --> 00:06:54,740 bloque no puede haber otra variable que tenga el mismo nombre. En un bloque distinto quizás sí, 110 00:06:54,740 --> 00:07:04,579 pero dentro de este bloque no. Si se declara una variable en un ámbito más interno, 111 00:07:04,579 --> 00:07:06,339 no se podrá acceder a la misma 112 00:07:06,339 --> 00:07:07,819 desde un ámbito más externo. 113 00:07:07,939 --> 00:07:10,319 Sin embargo, desde un ámbito más interno 114 00:07:10,319 --> 00:07:12,620 sí se puede acceder a las variables externas. 115 00:07:12,699 --> 00:07:13,439 ¿Qué quiere decir? 116 00:07:14,040 --> 00:07:15,339 Mirad esta cosa de aquí. 117 00:07:16,139 --> 00:07:17,699 ¿Aquí cuántos bloques hay? 118 00:07:18,699 --> 00:07:19,220 Dos. 119 00:07:19,920 --> 00:07:22,259 Uno que es este de aquí, más externo, 120 00:07:22,259 --> 00:07:24,259 y un bloque interno. 121 00:07:25,480 --> 00:07:27,899 Si yo hago int a es igual a 3, 122 00:07:28,720 --> 00:07:31,439 este a existe en el bloque externo. 123 00:07:32,740 --> 00:07:32,879 Sí. 124 00:07:32,879 --> 00:07:41,379 ¿Existe en el bloque interno? Sí, también, porque ésta dejará de existir cuando salgo de este bloque. 125 00:07:41,379 --> 00:07:47,120 Por lo tanto, todos los bloques que están dentro tienen ésta. Por lo tanto, si yo aquí dentro hago 126 00:07:47,120 --> 00:07:55,439 int b es igual a, funciona perfectamente. Ahora, imaginaos esta otra cosa. ¿Cuántos bloques hay aquí? 127 00:07:55,439 --> 00:08:04,860 siempre 2, ¿vale? Abro el primer bloque, abro el segundo bloque y declaro la variable int a es 128 00:08:04,860 --> 00:08:13,379 igual a 3 dentro del bloque interno y luego intento utilizarlo en el bloque externo. Esto 129 00:08:13,379 --> 00:08:34,350 me da un error, me dice no sé qué es a. Imaginaos aquí, hago un bloque y digo int a es igual a 3 130 00:08:34,350 --> 00:08:38,309 y luego creo otro bloque dentro 131 00:08:38,309 --> 00:08:40,450 que digo int b es igual a 132 00:08:40,450 --> 00:08:42,289 ningún problema 133 00:08:42,289 --> 00:08:44,269 ¿vale? no me da errores 134 00:08:44,269 --> 00:08:45,350 se puede hacer 135 00:08:45,350 --> 00:08:47,490 si yo aquí hago 136 00:08:47,490 --> 00:08:51,110 int x es igual a 137 00:08:51,110 --> 00:08:52,429 a más 3 funciona 138 00:08:52,429 --> 00:08:54,350 ¿por qué no? 139 00:08:56,169 --> 00:08:57,110 pero si lo he declarado aquí 140 00:08:57,110 --> 00:08:57,710 ¿por qué no funciona? 141 00:08:59,450 --> 00:09:01,470 porque estoy fuera de este bloque 142 00:09:01,470 --> 00:09:03,250 el bloque donde se ha declarado 143 00:09:03,250 --> 00:09:05,570 ha acabado aquí. Y por lo tanto 144 00:09:05,570 --> 00:09:06,710 aquí A no existe. 145 00:09:16,399 --> 00:09:17,320 ¿Cuánto vale aquí? 146 00:09:19,840 --> 00:09:27,779 Y he entrado aquí dentro, he creado A 147 00:09:27,779 --> 00:09:29,399 ¿Vale? 148 00:09:29,580 --> 00:09:32,159 He dado 3. Cuando he llegado aquí 149 00:09:32,159 --> 00:09:34,200 A ha desaparecido. 150 00:09:34,519 --> 00:09:35,299 Ya no existe. 151 00:09:35,700 --> 00:09:37,960 Y he creado otro trozo de memoria que se 152 00:09:37,960 --> 00:09:39,240 llama A donde le he puesto 7. 153 00:09:41,700 --> 00:09:43,100 Son dos variables distintas. 154 00:09:44,779 --> 00:09:45,940 Si yo muevo esta línea 155 00:09:45,940 --> 00:09:47,759 aquí. ¿Funciona? 156 00:09:48,399 --> 00:09:48,580 Sí. 157 00:09:57,120 --> 00:10:05,220 Porque ahora yo he definido en el bloque este de aquí, el bloque del main, he definido la variable A. 158 00:10:05,220 --> 00:10:12,440 Y cuando intento volver a definir A en un bloque más interno, la variable A ya existe. 159 00:10:13,000 --> 00:10:18,220 Y no puedo declarar dos variables en el mismo ámbito que se llamen igual. 160 00:10:20,409 --> 00:10:20,950 ¿Se entiende? 161 00:10:21,289 --> 00:10:22,490 ¿Se le quitará a Selim? 162 00:10:22,490 --> 00:10:25,629 sí, claro, pero entonces 163 00:10:25,629 --> 00:10:27,429 lo que sería, no estaría 164 00:10:27,429 --> 00:10:29,289 declarando otras variables 165 00:10:29,289 --> 00:10:31,250 o si pusiera 166 00:10:31,250 --> 00:10:33,450 pusiera double, funcionaría 167 00:10:33,450 --> 00:10:37,539 ¿está la variable? 168 00:10:38,539 --> 00:10:39,720 no puedo tener 169 00:10:39,720 --> 00:10:41,860 dos variables que se llamen 170 00:10:41,860 --> 00:10:43,419 igual dentro del 171 00:10:43,419 --> 00:10:45,740 mismo ámbito, y me da igual 172 00:10:45,740 --> 00:10:47,740 yo no te he hablado de tipo, te he hablado 173 00:10:47,740 --> 00:10:49,600 del nombre, vale, no se puede 174 00:10:49,600 --> 00:10:51,460 yo no puedo poner aquí scanner A 175 00:10:51,460 --> 00:10:53,600 no puedo poner aquí double A 176 00:10:53,600 --> 00:10:56,460 o boolean A, pues que ya existe. 177 00:10:57,419 --> 00:11:00,419 Entonces, A no lo puede usar hasta que acabe el bloque. 178 00:11:00,759 --> 00:11:03,460 Cuando acabe el bloque, si lo quiero reutilizar en otro bloque, ¿por qué no? 179 00:11:05,019 --> 00:11:05,960 ¿Ve? No se suele hacer. 180 00:11:08,580 --> 00:11:08,980 ¿Dudas? 181 00:11:10,179 --> 00:11:11,799 ¿Entiende el ámbito de una variable? 182 00:11:12,440 --> 00:11:14,100 Es donde existe esta variable. 183 00:11:14,840 --> 00:11:19,679 Existe dentro del bloque en la que la hemos definido 184 00:11:19,679 --> 00:11:22,480 y normalmente por debajo de donde se define. 185 00:11:22,480 --> 00:11:25,039 O sea, por arriba de donde se define no existe. 186 00:11:25,419 --> 00:11:37,519 El discurso que si yo esto lo bajo abajo, funciona porque cuando llego aquí, A no existe, entonces la puedo crear. 187 00:11:37,519 --> 00:11:46,519 Y cuando llego aquí, esta A desaparece, entonces cuando vuelvo a recrearla, pues sigue sin existir y la puedo recrear. 188 00:11:46,519 --> 00:11:52,519 Ahora, esta A y esta A no tienen nada que ver, son trozos de memoria separados. 189 00:11:52,519 --> 00:11:56,059 Lo que hago en esta A no es lo mismo lo que hago en esta A. 190 00:11:56,100 --> 00:11:58,259 Son dos cosas completamente distintas. 191 00:11:59,159 --> 00:12:02,100 Por eso situaciones de este estilo no se suelen hacer. 192 00:12:02,539 --> 00:12:06,379 No se suelen llamar las mismas variables iguales porque luego te confundes. 193 00:12:08,679 --> 00:12:11,960 Llámala A1 y A2 si no tienes tantas. 194 00:12:13,799 --> 00:12:14,080 ¿Sí? 195 00:12:17,049 --> 00:12:18,769 ¿Dudas sobre el ámbito de la variable? 196 00:12:18,889 --> 00:12:20,309 Lo mismo vale para las constantes. 197 00:12:20,470 --> 00:12:21,610 ¿Dónde dejó la constante? 198 00:12:21,750 --> 00:12:22,730 Dentro de ese bloque existe. 199 00:12:22,730 --> 00:12:24,730 dudas 200 00:12:24,730 --> 00:12:29,720 clase ámbito 201 00:12:29,720 --> 00:12:31,879 que está mal porque debe ser colar mayúscula 202 00:12:31,879 --> 00:12:33,759 este es el main, creo la 203 00:12:33,759 --> 00:12:35,500 x, creo la q 204 00:12:35,500 --> 00:12:37,879 interso más x más q lo puedo hacer 205 00:12:37,879 --> 00:12:39,779 porque x existe 206 00:12:39,779 --> 00:12:41,620 en todo este bloque aquí y q 207 00:12:41,620 --> 00:12:43,539 existe en este bloque aquí, por lo tanto 208 00:12:43,539 --> 00:12:45,799 lo puedo hacer, si salgo fuera 209 00:12:45,799 --> 00:12:47,240 y digo dime cuánto vale x 210 00:12:47,240 --> 00:12:49,779 pues valdrá, existirá porque x 211 00:12:49,779 --> 00:12:51,659 vale, existe 212 00:12:51,659 --> 00:12:52,700 también en este bloque 213 00:12:52,700 --> 00:12:54,519 dudas 214 00:12:58,500 --> 00:13:05,799 Expresiones son un conjunto de tokens que el programa podrá resolver en tiempo de ejecución a un valor concreto, ¿vale? 215 00:13:05,820 --> 00:13:09,460 Lo que decimos a la derecha del igual va a una expresión. 216 00:13:09,620 --> 00:13:14,940 Esta expresión es un conjunto de sumas, restas, operaciones y cosas por el estilo. 217 00:13:14,940 --> 00:13:21,220 Lo que hace el programa es pillar toda esa expresión, evaluarla y de allí sacar un valor. 218 00:13:21,899 --> 00:13:23,620 Y ese es el valor de la expresión. 219 00:13:24,120 --> 00:13:26,179 Y ese valor tendrá un tipo, ¿vale? 220 00:13:26,179 --> 00:13:28,980 Si el tipo coincide con una variable 221 00:13:28,980 --> 00:13:32,100 Puedo guardar ese valor en esa variable 222 00:13:32,100 --> 00:13:32,580 Si no, no 223 00:13:32,580 --> 00:13:37,120 Si el resultado de mi expresión es un booleano 224 00:13:37,120 --> 00:13:38,600 Y yo tengo un int x 225 00:13:38,600 --> 00:13:41,379 Pues no puedo guardar el booleano dentro de un int x 226 00:13:41,379 --> 00:13:44,720 Pero si la expresión al final me da un entero 227 00:13:44,720 --> 00:13:45,820 Y tengo un int x 228 00:13:45,820 --> 00:13:47,820 Pues puedo guardar este valor ahí 229 00:13:47,820 --> 00:13:51,620 La expresión más simple consiste de un literal 230 00:13:51,620 --> 00:13:53,500 O sea, tres es una expresión 231 00:13:53,500 --> 00:13:56,559 comillas, gato, comillas 232 00:13:56,559 --> 00:13:57,639 es una expresión 233 00:13:57,639 --> 00:14:01,000 es un literal, lo vimos la semana pasada 234 00:14:01,000 --> 00:14:02,200 que eran los literales 235 00:14:02,200 --> 00:14:04,820 otro tipo 236 00:14:04,820 --> 00:14:06,940 de expresión habitual es un identificador 237 00:14:06,940 --> 00:14:08,919 de variable, también una variable 238 00:14:08,919 --> 00:14:10,860 puede ser una expresión 239 00:14:10,860 --> 00:14:12,820 una expresión 240 00:14:12,820 --> 00:14:13,080 ¿vale? 241 00:14:16,000 --> 00:14:18,360 aquí, esta es una expresión 242 00:14:18,360 --> 00:14:22,220 esta es una expresión 243 00:14:22,220 --> 00:14:34,629 sería una expresión, pero B no existe. ¿Qué error me da? 244 00:14:34,629 --> 00:14:43,129 B cannot be resolved to a variable. No puedo pillar B y decir qué variable es. 245 00:14:43,129 --> 00:14:48,129 No puedo resolverla a una variable. No puedo decir, ah, B es esta variable de aquí. 246 00:14:48,129 --> 00:14:52,129 No me has dicho que es B. Me tienes que decir que es B antes. 247 00:14:52,129 --> 00:15:00,710 lo he dicho aquí. Sí, pero en un bloque interno y desde esta paréntesis de aquí, b no existe. 248 00:15:00,710 --> 00:15:11,269 Y si quisiera usarla, pues pillo esta, la pongo aquí fuera, le doy un valor inicial, aquí lo cambio a y ahora sí que me existe. 249 00:15:11,269 --> 00:15:21,299 Porque ahora la he declarado en el bloque externo y entonces existe aquí y sigue existiendo aquí. 250 00:15:21,299 --> 00:15:23,639 dejará de existir cuando salgo de este bloc. 251 00:15:25,740 --> 00:15:30,899 ¿Entiendes? Sí, vale. 252 00:15:34,480 --> 00:15:35,860 Operadores, ¿vale? 253 00:15:36,460 --> 00:15:40,899 Son símbolos que representan algún tipo de operación. 254 00:15:40,960 --> 00:15:43,059 Hay varios tipos de operaciones distintas. 255 00:15:43,120 --> 00:15:46,659 Nosotros conocemos típicamente las aritméticas y ya las hemos usado. 256 00:15:46,659 --> 00:15:48,879 Summa, resta, división y multiplicación. 257 00:15:48,940 --> 00:15:51,120 La única que ha un poquito molesta es la división. 258 00:15:51,120 --> 00:15:52,960 Todos los demás son bastante fáciles. 259 00:15:53,679 --> 00:15:55,539 Pero hay otros tipos de operaciones. 260 00:15:55,539 --> 00:16:02,419 hay las lógicas, que nos sirven para crear expresiones, ¿vale? 261 00:16:02,700 --> 00:16:08,399 2 más 3 es una expresión, 3 más saldo es una expresión, saldo más incentivos es una expresión, 262 00:16:09,019 --> 00:16:14,559 saldo dividido por 2 es lo que sale, más 1000 es lo que sale, módulo 10 es una expresión. 263 00:16:15,200 --> 00:16:17,179 Ahí es el módulo, cierra el módulo. 264 00:16:19,320 --> 00:16:21,059 El resto de la división entera. 265 00:16:25,820 --> 00:16:28,320 Agrupación. El operador de agrupación son las paréntesis. 266 00:16:28,679 --> 00:16:35,100 ¿Vale? Me sirven para situaciones como estas, para saber qué se ejecuta antes y qué después. 267 00:16:35,919 --> 00:16:38,259 ¿Vale? Hay dos opciones, tenéis dos opciones. 268 00:16:38,259 --> 00:16:48,039 O sabéis de memoria esta tabla, que os dice qué operadores se ejecutan antes que otros, 269 00:16:49,259 --> 00:16:50,740 o usáis las paréntesis. 270 00:16:52,340 --> 00:16:53,259 Elegid vosotros. 271 00:16:54,620 --> 00:16:55,620 Y yo uso las paréntesis. 272 00:16:55,620 --> 00:17:00,509 Clasificación de operadores 273 00:17:00,509 --> 00:17:02,610 ¿Vale? Por el número de expresión 274 00:17:02,610 --> 00:17:04,609 O por la posición que ocupan de esto 275 00:17:04,609 --> 00:17:06,069 ¿Vale? Si yo hablo de los operadores 276 00:17:06,069 --> 00:17:08,549 Sean aritméticos 277 00:17:08,549 --> 00:17:10,269 Sean lógicos y cosas por el estilo 278 00:17:10,269 --> 00:17:12,849 Puedo agruparlos, puedo definirlos 279 00:17:12,849 --> 00:17:13,809 De alguna forma ¿Vale? 280 00:17:14,369 --> 00:17:16,809 Si son monarios o unarios 281 00:17:16,809 --> 00:17:18,269 Yo suelo usar unarios 282 00:17:18,269 --> 00:17:20,650 Son operadores 283 00:17:20,650 --> 00:17:22,630 Que solo reciben un parámetro 284 00:17:22,630 --> 00:17:24,069 Como por ejemplo 285 00:17:24,069 --> 00:17:25,150 Menos uno 286 00:17:26,150 --> 00:17:28,230 Menos 1, ¿cuántos parámetros reciben? 287 00:17:28,309 --> 00:17:28,789 Solo el 1. 288 00:17:29,509 --> 00:17:29,690 ¿Vale? 289 00:17:29,869 --> 00:17:33,609 Y lo que te está diciendo es, invértele el signo a ese 1. 290 00:17:34,109 --> 00:17:36,329 Si 1 es positivo, menos 1 es negativo. 291 00:17:41,359 --> 00:17:41,779 ¿Entiendes? 292 00:17:42,480 --> 00:17:50,119 Eso sería un ario, porque recibe un solo elemento. 293 00:17:52,079 --> 00:17:55,640 Nosotros estamos más acostumbrados a los binarios, ¿vale? 294 00:17:55,640 --> 00:17:59,180 Que reciben 2, como 3 más 2. 295 00:17:59,180 --> 00:18:02,180 El operador más recibe dos elementos. 296 00:18:03,279 --> 00:18:06,180 Necesita dos operandos para poder operar. 297 00:18:07,400 --> 00:18:07,519 ¿Sí? 298 00:18:07,680 --> 00:18:08,819 El operador es el más. 299 00:18:09,200 --> 00:18:10,940 El más es un operador binario. 300 00:18:11,119 --> 00:18:11,359 ¿Por qué? 301 00:18:11,480 --> 00:18:15,299 Porque recibe dos valores y hace algo con estos dos valores. 302 00:18:16,019 --> 00:18:17,980 El operador de concatenación. 303 00:18:19,380 --> 00:18:20,279 ¿Cuál es? 304 00:18:22,140 --> 00:18:23,099 El más. 305 00:18:23,619 --> 00:18:24,519 ¿Y cómo es? 306 00:18:24,700 --> 00:18:25,380 ¿Unario, binario? 307 00:18:27,079 --> 00:18:29,589 Binario también. 308 00:18:29,589 --> 00:18:30,609 es 309 00:18:30,609 --> 00:18:33,329 el string que tienes a la izquierda 310 00:18:33,329 --> 00:18:35,650 pégale detrás el string que tienes 311 00:18:35,650 --> 00:18:36,230 a la derecha 312 00:18:36,230 --> 00:18:39,069 ¿sí? ¿dudas? 313 00:18:41,109 --> 00:18:41,589 y luego está 314 00:18:41,589 --> 00:18:42,609 el operador ternario 315 00:18:42,609 --> 00:18:44,950 que sostancialmente es sólo esto 316 00:18:44,950 --> 00:18:46,390 y sólo veremos esto 317 00:18:46,390 --> 00:18:48,549 pero, bueno, existe 318 00:18:48,549 --> 00:18:50,769 el operador ternario es un operador que recibe 319 00:18:50,769 --> 00:18:53,170 tres cosas 320 00:18:53,170 --> 00:18:54,069 ¿vale? 321 00:18:54,309 --> 00:18:57,529 y esto es lo más parecido 322 00:18:57,529 --> 00:18:58,190 a un if 323 00:18:58,190 --> 00:19:00,329 sin que sea un if. 324 00:19:00,950 --> 00:19:02,410 Esto no es un if. 325 00:19:03,630 --> 00:19:03,990 ¿Vale? 326 00:19:04,109 --> 00:19:06,309 Nosotros lo usaremos if, como if, 327 00:19:06,569 --> 00:19:08,450 hasta que veamos los if 328 00:19:08,450 --> 00:19:10,349 que son de verdad, pero el if 329 00:19:10,349 --> 00:19:11,829 es más potente que esta cosa. 330 00:19:12,690 --> 00:19:14,150 Esta es una expresión. 331 00:19:14,410 --> 00:19:15,869 El if no es una expresión. 332 00:19:17,150 --> 00:19:17,289 ¿Vale? 333 00:19:17,890 --> 00:19:19,589 ¿Qué es esto? Me dice, mira, 334 00:19:20,190 --> 00:19:22,210 es este operador aquí, este operador aquí. 335 00:19:22,730 --> 00:19:24,329 ¿Vale? Interrogación 336 00:19:24,329 --> 00:19:26,049 y dos puntos. Y recibe 337 00:19:26,049 --> 00:19:27,990 tres cosas. Esto 338 00:19:27,990 --> 00:19:38,450 esto y esto. Por eso es ternario. ¿Cómo funciona? Es una pregunta. Dice, ¿esta cosa de aquí es 339 00:19:38,450 --> 00:19:52,019 verdadera? Si es verdadera, mi valor es esto. Si es falsa, mi valor es esto. Si el número vale 5, 340 00:19:52,019 --> 00:19:53,680 esta expresión, ¿cuánto vale? 341 00:19:56,549 --> 00:19:57,589 4.7 342 00:19:57,589 --> 00:20:00,470 y si NUM en vez es 10 343 00:20:00,470 --> 00:20:06,559 ¿cuánto vale? 4.7 344 00:20:06,559 --> 00:20:08,519 y si NUM es 130 345 00:20:08,519 --> 00:20:12,539 4.7 346 00:20:12,539 --> 00:20:14,920 y si NUM es 4.7 347 00:20:14,920 --> 00:20:17,660 pues siempre 4.7 348 00:20:17,660 --> 00:20:20,299 y si NUM es 3 349 00:20:20,299 --> 00:20:24,019 porque esto 350 00:20:24,019 --> 00:20:25,839 es el operador de igualdad 351 00:20:25,839 --> 00:20:28,220 y dice, si NUM 352 00:20:28,220 --> 00:20:29,880 es exactamente 353 00:20:29,880 --> 00:20:33,000 3 es, entonces 354 00:20:33,000 --> 00:20:35,980 yo, todo esto 355 00:20:35,980 --> 00:20:37,579 vale 3,4. 356 00:20:38,839 --> 00:20:41,460 Sin embargo, si no es 3, 357 00:20:42,039 --> 00:20:44,319 todo esto vale 4,6. 358 00:20:45,039 --> 00:20:46,799 Entonces, es en un cierto sentido 359 00:20:46,799 --> 00:20:48,720 el primer 360 00:20:48,720 --> 00:20:53,900 prototipo de condicional que yo tengo. 361 00:20:53,900 --> 00:20:55,799 Aquí puedo hacerme una pregunta 362 00:20:55,799 --> 00:20:59,400 en base a lo que hay aquí dentro, decidir si 363 00:20:59,400 --> 00:21:00,960 si el resultado es uno u otro. 364 00:21:03,420 --> 00:21:05,180 Es como la suma. 365 00:21:05,319 --> 00:21:07,200 5 más 3, ¿no es así? 5 más 3, pero 366 00:21:07,200 --> 00:21:09,500 si la luna es llena, entonces vale 7 367 00:21:09,500 --> 00:21:10,420 y si no, vale 368 00:21:10,420 --> 00:21:12,759 5 más 3, 8. 369 00:21:13,759 --> 00:21:14,240 Siempre. 370 00:21:15,519 --> 00:21:17,079 Sin embargo, este de aquí es, 371 00:21:17,200 --> 00:21:18,900 dependiendo de esta cosa de aquí, 372 00:21:19,380 --> 00:21:21,200 que será un... ¿Qué tipo tiene 373 00:21:21,200 --> 00:21:22,220 esta parte de aquí? 374 00:21:27,920 --> 00:21:30,480 Esta es una expresión aritmética 375 00:21:30,480 --> 00:21:35,539 y el resultado de esto es un número. 376 00:21:36,380 --> 00:21:41,380 Esa es una operación booleana. 377 00:21:41,380 --> 00:21:46,380 Aquí, el resultado de esto tiene que ser o true o false. 378 00:21:46,380 --> 00:21:50,380 Si el resultado de este es true, entonces me das esto. 379 00:21:50,380 --> 00:21:55,380 Si el resultado de este es false, entonces me das esto. 380 00:21:55,380 --> 00:22:00,380 Estos dos señores tienen que tener el mismo tipo. 381 00:22:00,380 --> 00:22:04,380 Si he usado double, tiene que ser double. Si he usado int, int. Si string, string. 382 00:22:04,380 --> 00:22:07,380 Puedo usar lo que me da la gana, pero tienen que ser iguales. 383 00:22:07,380 --> 00:22:10,519 ¿Veis? 384 00:22:10,519 --> 00:22:13,519 Por hacer un secado. 385 00:22:13,519 --> 00:22:18,519 Pero, más que esto de aquí, que ahora lo volveremos a ver, el operador ternario, 386 00:22:18,519 --> 00:22:22,519 este operador ternario de aquí, es, cuando yo tengo un operador, 387 00:22:22,519 --> 00:22:25,519 te puedo decir, oye, mira, te estás equivocando, este operador es un ario. 388 00:22:25,519 --> 00:22:26,519 ¿Qué quiere decir? 389 00:22:26,519 --> 00:22:30,519 Que solo se usa para un elemento. 390 00:22:30,519 --> 00:22:34,519 O no, mira, que estás usando la forma, pero como un aria, pero en realidad es binaria. 391 00:22:34,519 --> 00:22:39,859 ¿Qué te estoy diciendo? Oye, que te falta un operando. ¿Entiendes? 392 00:22:41,299 --> 00:22:44,539 Esto es sólo para clasificación. Existen operadores unarios, 393 00:22:44,539 --> 00:22:48,500 existen operadores binarios, existen operadores ternarios. 394 00:22:48,500 --> 00:23:00,640 Típicamente nosotros usaremos... Nosotros usaremos como operador unario también el 395 00:23:00,640 --> 00:23:07,059 NOT. Esto cambia el valor de verdad a lo que viene después. 396 00:23:08,680 --> 00:23:15,910 Por ejemplo, ¿cuánto vale todo esto? 397 00:23:19,279 --> 00:23:20,700 ¿3 es igual a 5? 398 00:23:23,970 --> 00:23:24,210 No. 399 00:23:24,630 --> 00:23:26,470 Esto sería falso. 400 00:23:27,410 --> 00:23:29,890 Este operador de aquí, que es un ario, 401 00:23:30,089 --> 00:23:32,829 esto se aplica a un solo elemento, que es este de aquí, 402 00:23:33,309 --> 00:23:35,589 lo que haría es negar lo que es esto. 403 00:23:35,730 --> 00:23:40,990 Por lo tanto, todo esto es... 404 00:23:40,990 --> 00:23:42,329 Volveremos sobre eso. 405 00:23:42,990 --> 00:23:43,150 ¿Vale? 406 00:23:46,779 --> 00:23:51,859 O, en vez de mirar cuántos operadores, cuántos operandos pilla, 407 00:23:51,859 --> 00:23:55,859 puedo clasificar los operadores en base a dónde se ponen. 408 00:23:57,059 --> 00:24:00,859 Entonces son o prefijos, o posfijos, o infijos. 409 00:24:02,279 --> 00:24:02,400 ¿Vale? 410 00:24:03,140 --> 00:24:07,200 Prefijos, el operador va antes del operando. 411 00:24:08,119 --> 00:24:11,940 Posfijo, el operador va después del operando. 412 00:24:12,579 --> 00:24:15,500 Y infijo va en el medio de los operandos. 413 00:24:15,619 --> 00:24:17,900 Por ejemplo, menos uno, el menos, 414 00:24:18,319 --> 00:24:20,880 es prefijos, posfijos o infijos. 415 00:24:21,859 --> 00:24:32,640 prefijo, ¿vale? En 2 más saldo, entonces el más, infirmo, ¿vale? El, creo que lo hemos visto una vez, 416 00:24:32,640 --> 00:24:49,259 me equivoco, no lo sé, el operador este de aquí que hace 5a es igual a 5a, a más más. 417 00:24:49,259 --> 00:24:51,299 No hemos visto esto 418 00:24:51,299 --> 00:24:54,009 Visto nunca 419 00:24:54,009 --> 00:24:56,230 Esto es equivalente a decir 420 00:24:56,230 --> 00:24:59,250 A es igual a A más 1 421 00:24:59,250 --> 00:25:04,579 Hacer esto 422 00:25:04,579 --> 00:25:06,480 O hacer esto 423 00:25:06,480 --> 00:25:08,700 Es exactamente lo mismo 424 00:25:08,700 --> 00:25:10,819 Suma 1 425 00:25:10,819 --> 00:25:12,000 A esa variable 426 00:25:12,000 --> 00:25:14,299 Y lo verbo guardar en esa variable 427 00:25:14,299 --> 00:25:15,759 ¿Ok? 428 00:25:16,259 --> 00:25:17,180 Esto es un operador 429 00:25:17,180 --> 00:25:22,670 Infijo, prefijo, posfijo 430 00:25:22,670 --> 00:25:24,910 Postfijo 431 00:25:24,910 --> 00:25:26,910 porque viene después 432 00:25:26,910 --> 00:25:28,910 unario, binario, ternario 433 00:25:28,910 --> 00:25:30,710 unario 434 00:25:30,710 --> 00:25:32,869 unario, pues fijo 435 00:25:32,869 --> 00:25:36,740 existe también el mas-masa 436 00:25:36,740 --> 00:25:38,900 pero lo dejamos en otro 437 00:25:38,900 --> 00:25:39,599 compuesto 438 00:25:39,599 --> 00:25:41,519 no se suele usar nunca 439 00:25:41,519 --> 00:25:47,220 antes hace la suma y luego lo usa 440 00:25:47,220 --> 00:25:49,019 entonces cuando lo usas 441 00:25:49,019 --> 00:25:50,819 dentro de cosas así puede variar 442 00:25:50,819 --> 00:25:52,579 pero se suele utilizar el mas-mas 443 00:25:52,579 --> 00:25:55,059 ¿dudas? 444 00:25:57,279 --> 00:25:57,500 ¿sí? 445 00:25:58,299 --> 00:26:05,039 Preguntas, aquí, esto es solo nombres, para que ellos digan a veces, 446 00:26:05,039 --> 00:26:09,160 mira que esto es un operador infijo, y tú entiendas qué quiere decir. 447 00:26:11,279 --> 00:26:18,200 Tipos de expresiones, vale, nosotros, el tipo de datos que devuelve una expresión 448 00:26:18,200 --> 00:26:23,640 dependerá del tipo de la expresión involucrada, vale, lo que decíamos, un int más int, el resultado es? 449 00:26:23,640 --> 00:26:25,539 int 450 00:26:25,539 --> 00:26:28,380 int por double 451 00:26:28,380 --> 00:26:29,259 el resultado es 452 00:26:29,259 --> 00:26:31,680 int dividido int 453 00:26:31,680 --> 00:26:35,839 string más int 454 00:26:35,839 --> 00:26:39,859 pero double más string 455 00:26:39,859 --> 00:26:42,400 string también 456 00:26:42,400 --> 00:26:43,900 ¿sí? 457 00:26:44,519 --> 00:26:46,099 entonces, la operación 458 00:26:46,099 --> 00:26:48,279 si yo tengo una expresión grande así 459 00:26:48,279 --> 00:26:50,259 me meto allí y puedo calcular 460 00:26:50,259 --> 00:26:52,240 y saber que toda esta expresión 461 00:26:52,240 --> 00:26:53,079 tiene un tipo 462 00:26:53,079 --> 00:27:02,039 en algunos 463 00:27:02,039 --> 00:27:04,279 casos, y esta es una parte 464 00:27:04,279 --> 00:27:05,279 importante 465 00:27:05,279 --> 00:27:07,839 se pueden hacer 466 00:27:07,839 --> 00:27:09,140 conversiones 467 00:27:09,140 --> 00:27:12,599 o sea, hay conversiones 468 00:27:12,599 --> 00:27:14,140 que están 469 00:27:14,140 --> 00:27:16,059 admitidas y conversiones 470 00:27:16,059 --> 00:27:16,599 que no 471 00:27:16,599 --> 00:27:19,799 por ejemplo, nosotros hemos visto algunas 472 00:27:19,799 --> 00:27:20,640 si yo hago 473 00:27:20,640 --> 00:27:23,579 double x es igual a 3 474 00:27:23,579 --> 00:27:24,660 punto y coma 475 00:27:24,660 --> 00:27:36,890 Funciona. Pero ¿3 qué tipo tiene? Int. ¿Y lo puedo guardar en un double? 476 00:27:36,890 --> 00:27:49,240 Sin problema, porque int ocupa cuántos bytes. ¿Y double? 477 00:27:49,240 --> 00:27:54,880 Entonces, en un espacio de memoria de 8 puedo guardar todo lo que se hace en un 478 00:27:54,880 --> 00:28:02,559 espacio de una molécula. Todos los enteros se pueden representar como double. Al revés, 479 00:28:02,559 --> 00:28:15,740 puede hacer int x es igual a 3.5. ¿Por qué no? Porque no todos los doubles, que yo pueda hacer 480 00:28:15,740 --> 00:28:32,700 2 elevado a la 64, 2 a la 64 distintos, double distintos, ¿vale? Pero puede hacer solo 2 a la 32 481 00:28:32,700 --> 00:28:41,940 distintos enteros. Entonces hay double que no podría hacer como entero, ¿entiendes? Entonces no le gusta. 482 00:28:41,940 --> 00:28:45,140 cuando quiero hacer este tipo de 483 00:28:45,140 --> 00:28:45,980 conversiones 484 00:28:45,980 --> 00:28:48,759 hay conversiones 485 00:28:48,759 --> 00:28:51,640 automáticas, o sea implícitas 486 00:28:51,640 --> 00:28:53,259 ¿vale? es decir 487 00:28:53,259 --> 00:28:55,160 que si dos tipos 488 00:28:55,160 --> 00:28:56,960 son compatibles 489 00:28:56,960 --> 00:29:00,730 lo intentamos 490 00:29:00,730 --> 00:29:05,470 por ejemplo, imaginaos que yo 491 00:29:05,470 --> 00:29:07,549 tengo float n1 es igual a 492 00:29:07,549 --> 00:29:09,670 3.4, aquí debería poner una f 493 00:29:09,670 --> 00:29:10,490 ¿vale? 494 00:29:10,970 --> 00:29:12,230 y esto sería double 495 00:29:12,230 --> 00:29:21,240 double n2, n2 igual a n1. ¿Funciona? Sí, sin ningún problema, porque un float son 496 00:29:21,240 --> 00:29:25,759 cuatro bytes, un double son ocho bytes, son tipos compatibles porque son 497 00:29:25,759 --> 00:29:31,019 numéricos y todos los float se pueden representar como double. Entonces no me 498 00:29:31,019 --> 00:29:40,190 pide nada Java, me dice vale, aceptado. ¿Entiendes? Cuando hace así es una 499 00:29:40,190 --> 00:29:47,930 conversión automática. Como cuando hago double x es igual a 3. Está haciendo una conversión 500 00:29:47,930 --> 00:29:53,230 automática desde entero a double sin pedirme permiso y sin pedirme autorización. Dice no te 501 00:29:53,230 --> 00:30:01,490 preocupes que lo hago yo porque no pierdo precisión. En esta operación, en esta conversión, no vas a 502 00:30:01,490 --> 00:30:09,009 perder ningún dato. El dato que tú me hayas puesto se va a mantener exactamente igual en esta nueva 503 00:30:09,009 --> 00:30:15,250 variable en este nuevo tipo no te preocupes me encargo yo que no pase nada si puedo hacer esto 504 00:30:15,250 --> 00:30:19,769 ni te pido el permiso es una conversión automática una conversión implícita 505 00:30:22,910 --> 00:30:30,009 luego estaba el casting o sea la conversión explícita es decir oye mira yo quiero hacer 506 00:30:30,009 --> 00:30:37,390 una operación y esta operación no es válida yo sé que si tú haces estas operaciones hay 507 00:30:37,390 --> 00:30:49,250 casos en que puede ser que pierdas algo. Aún así, yo, programador, te digo, sí Java, lo sé, no te 508 00:30:49,250 --> 00:31:01,650 preocupes, tú hazlo. Entonces, se lo digo. Por ejemplo, si tengo un double e intento ahora meter 509 00:31:01,650 --> 00:31:09,569 este double en un float, esto no funciona. Porque un double tiene 8 bits, es representado en 8 bits, 510 00:31:09,569 --> 00:31:14,910 y yo estoy intentando decir, oye mira, ponmelo en un espacio de solo 4 bits. Entonces podría ser que 511 00:31:14,910 --> 00:31:22,829 pierda algo de precisión, pierda algunos datos infinitesimales pequeñitos, se pierda. Y yo no 512 00:31:22,829 --> 00:31:30,150 quiero. El Java me dice, no se puede hacer. A menos que yo no le diga explícitamente, 513 00:31:30,150 --> 00:31:32,490 hace un casting explícito 514 00:31:32,490 --> 00:31:34,609 entonces, él sabe 515 00:31:34,609 --> 00:31:36,250 que no debería hacerlo, pero 516 00:31:36,250 --> 00:31:38,809 como el programador está diciendo 517 00:31:38,809 --> 00:31:40,990 explícitamente, tranquilo 518 00:31:40,990 --> 00:31:42,009 yo lo sé 519 00:31:42,009 --> 00:31:44,490 entonces dice, vale, si luego 520 00:31:44,490 --> 00:31:46,130 habrá problemas, porque en verdad 521 00:31:46,130 --> 00:31:48,210 no era 3,4, era 3,4 522 00:31:48,210 --> 00:31:59,009 y al pasarlo a float, has perdido este 1 aquí, el problema es tuyo, porque tú has dicho de hacerlo. 523 00:32:03,599 --> 00:32:11,200 Como por ejemplo, puedo yo convertir un double en un entero. Claramente estoy perdiendo toda la 524 00:32:11,200 --> 00:32:16,680 parte decimal, pero a lo mejor es lo que quiero. Yo quiero la parte entera de un número. Pues lo 525 00:32:16,680 --> 00:32:17,960 Lo converto entero y lo pillo. 526 00:32:18,400 --> 00:32:18,640 Está. 527 00:32:19,400 --> 00:32:20,019 Es en fácil. 528 00:32:20,920 --> 00:32:26,019 Y luego está el tercer tipo de conversiones, 529 00:32:26,160 --> 00:32:27,980 que es, estas no las puedes hacer. 530 00:32:28,640 --> 00:32:29,619 Bajo ningún concepto. 531 00:32:30,059 --> 00:32:30,660 Esto no se hace. 532 00:32:31,220 --> 00:32:34,880 Como por ejemplo, yo tengo el nombre Pepe 533 00:32:34,880 --> 00:32:37,059 e intento hacer Pepe menos n. 534 00:32:39,039 --> 00:32:41,140 String menos 4, ¿qué quiere decir? 535 00:32:42,640 --> 00:32:43,539 No lo sé. 536 00:32:44,279 --> 00:32:44,420 ¿Vale? 537 00:32:45,039 --> 00:32:47,599 Debería convertir esto en un número 538 00:32:47,599 --> 00:32:49,119 para poder hacer esta operación. 539 00:32:49,500 --> 00:32:51,420 Y no lo voy a hacer porque no lo sé hacer. 540 00:32:51,619 --> 00:32:53,420 No sé convertir una string a un número. 541 00:32:54,099 --> 00:32:56,980 Por lo tanto, no se puede hacer esta cosa. 542 00:32:59,930 --> 00:33:03,130 Esto es entre tipos incompatibles o entre tipos compatibles, 543 00:33:03,349 --> 00:33:05,430 pero perdiendo precisiones y casting explícito. 544 00:33:06,430 --> 00:33:09,029 Yo tengo un entero, lo intento poner en un byte. 545 00:33:09,150 --> 00:33:10,369 El entero son cuatro bytes. 546 00:33:10,690 --> 00:33:12,470 El byte es un byte solo. 547 00:33:13,349 --> 00:33:16,190 Si no hago casting explícito, me va a decir, no, no puede ser. 548 00:33:17,509 --> 00:33:18,630 Vamos a probarlos. 549 00:33:18,630 --> 00:33:23,079 por ejemplo 550 00:33:23,079 --> 00:33:28,690 por ejemplo 551 00:33:28,690 --> 00:33:30,109 pongo una 552 00:33:30,109 --> 00:33:31,190 int 553 00:33:31,190 --> 00:33:33,230 x es 554 00:33:33,230 --> 00:33:35,069 igual a 555 00:33:35,069 --> 00:33:37,089 doble 556 00:33:37,089 --> 00:33:40,230 x es igual a 557 00:33:40,230 --> 00:33:41,930 esto funciona 558 00:33:41,930 --> 00:33:44,710 si, que tipo de 559 00:33:44,710 --> 00:33:45,769 conversión es 560 00:33:45,769 --> 00:33:48,569 automática o implícita 561 00:33:48,569 --> 00:33:50,150 vale, no 562 00:33:50,150 --> 00:33:52,130 pierdo algo, no 563 00:33:52,130 --> 00:33:53,250 vale 564 00:33:53,250 --> 00:33:55,710 porque todos los enteros se pueden representar 565 00:33:55,710 --> 00:33:57,349 como double, no ha perdido nada 566 00:33:57,349 --> 00:33:59,690 a revés 567 00:33:59,690 --> 00:34:01,589 int x2 568 00:34:01,589 --> 00:34:02,910 es igual a 10 569 00:34:02,910 --> 00:34:05,430 no 570 00:34:05,430 --> 00:34:06,150 double 571 00:34:06,150 --> 00:34:12,309 int y2 572 00:34:12,309 --> 00:34:13,730 es igual a x2 573 00:34:13,730 --> 00:34:19,760 ¿cuántas conversiones hay? 574 00:34:26,710 --> 00:34:28,710 dos conversiones, ¿de qué tipo? 575 00:34:30,289 --> 00:34:30,670 una 576 00:34:30,670 --> 00:34:38,400 ¿aquí o no? 577 00:34:38,420 --> 00:34:44,360 conversión. ¿Vale? ¿Que es una conversión de qué tipo? Implícita. 578 00:34:44,380 --> 00:34:47,079 Tengo un int y lo estoy transformando en un double. 579 00:34:47,659 --> 00:34:54,079 Ningún problema. Pero cuando ahora esté double, porque ahora es un double, porque x2 580 00:34:54,079 --> 00:34:58,219 contiene double, no obstante dentro tenga un int, porque al fin y al cabo tiene un int, 581 00:34:58,460 --> 00:35:00,139 pero ahora su tipo es double. 582 00:35:00,239 --> 00:35:03,619 Lo intento poner dentro de un int, no funciona. 583 00:35:03,619 --> 00:35:10,139 vamos a hacer una cosa 584 00:35:10,139 --> 00:35:28,829 que hay 585 00:35:28,829 --> 00:35:31,210 tres 586 00:35:31,210 --> 00:35:32,329 tres 587 00:35:32,329 --> 00:35:33,829 no 588 00:35:33,829 --> 00:35:37,010 porque lo he hecho 589 00:35:37,010 --> 00:35:39,150 lo he puesto fuera del main 590 00:35:39,150 --> 00:35:42,349 lo he puesto fuera del main 591 00:35:42,349 --> 00:35:46,110 ahí 592 00:35:46,110 --> 00:35:48,550 a ver 593 00:35:48,550 --> 00:35:50,710 vale, entonces 594 00:35:50,710 --> 00:35:52,670 imaginámonos 595 00:35:52,670 --> 00:35:55,150 que yo quiera hacer esto 596 00:35:55,150 --> 00:35:57,030 ¿cómo puedo hacer para forzar que lo haga? 597 00:35:58,900 --> 00:36:07,000 ¿Qué le pongo aquí? ¿Cómo? ¿Veis que ahora me deja? 598 00:36:07,000 --> 00:36:12,000 Este es un casting explícito. 599 00:36:12,000 --> 00:36:17,000 Estoy diciendo, yo lo sé que no lo podría hacer, pero hazlo. 600 00:36:17,000 --> 00:36:22,000 Y pongamos esto. ¿Qué me escribe? 601 00:36:22,000 --> 00:36:29,079 Bien. A ver. ¿Esto funciona? 602 00:36:29,079 --> 00:36:31,539 que me escribe 603 00:36:31,539 --> 00:36:35,659 veis que en este paso 604 00:36:35,659 --> 00:36:37,579 de aquí he perdido toda la parte 605 00:36:37,579 --> 00:36:38,380 decimal 606 00:36:38,380 --> 00:36:46,630 entiende 607 00:36:46,630 --> 00:36:50,119 aquí con esto 608 00:36:50,119 --> 00:36:52,000 puedo hacer varias 609 00:36:52,000 --> 00:36:54,420 conversiones, nos servirá más adelante 610 00:36:54,420 --> 00:36:56,119 pero para que 611 00:36:56,119 --> 00:36:57,280 sepáis que se puede hacer 612 00:36:57,280 --> 00:37:01,829 operadores, estos los conocemos 613 00:37:01,829 --> 00:37:03,329 más menos por 614 00:37:03,329 --> 00:37:05,309 dividido y módulo 615 00:37:05,309 --> 00:37:06,949 esto ya los hemos visto 616 00:37:06,949 --> 00:37:21,030 ¿Sí? Más operadores tenemos los lógicos, los comparación, el ternario condicional, que es el que hemos visto antes, eso de la interrelación en dos puntos, y estas cosas de aquí que probablemente no veremos. 617 00:37:21,670 --> 00:37:28,150 ¿Vale? A nivel de bit. Son cosas más avanzadas que se usan relativamente poco en lo que hacemos nosotros. 618 00:37:28,150 --> 00:37:32,769 La lógica booleana es 619 00:37:32,769 --> 00:37:36,750 Estos dos son todos operadores de true y false 620 00:37:36,750 --> 00:37:37,409 ¿Vale? 621 00:37:37,590 --> 00:37:40,050 O sea que los lógicos y los de comparación 622 00:37:40,050 --> 00:37:43,969 Me sirven para que haya un resultado de verdadero o falso 623 00:37:43,969 --> 00:37:46,750 Es lo que usaremos luego en la condición 624 00:37:46,750 --> 00:37:49,230 Tanto aquí en el eternario condicional 625 00:37:49,230 --> 00:37:52,130 Como en el condicional verdadero que es el if 626 00:37:52,130 --> 00:37:53,550 Como en el why 627 00:37:53,550 --> 00:37:54,210 ¿Vale? 628 00:37:54,210 --> 00:37:56,489 esta parte de aquí será una parte 629 00:37:56,489 --> 00:37:58,250 interesante e importante 630 00:37:58,250 --> 00:38:00,650 porque nos permitirá 631 00:38:00,650 --> 00:38:02,750 establecer condiciones de verdad 632 00:38:02,750 --> 00:38:04,389 si esto es verdadero o falso 633 00:38:04,389 --> 00:38:06,829 si es verdadero hace una cosa, si es falso hace otra cosa 634 00:38:06,829 --> 00:38:08,570 mientras esto sea verdadero 635 00:38:08,570 --> 00:38:10,889 sigue haciendo una cosa, cuando esto se vuelva 636 00:38:10,889 --> 00:38:11,949 falso pues sal 637 00:38:11,949 --> 00:38:14,789 comprueba si este número 638 00:38:14,789 --> 00:38:16,710 es mayor que otro, entonces haz algo 639 00:38:16,710 --> 00:38:18,190 si es menor haz otra cosa 640 00:38:18,190 --> 00:38:20,769 por ejemplo para ordenar números 641 00:38:20,769 --> 00:38:23,110 para saber 642 00:38:23,110 --> 00:38:25,210 si el DNI 643 00:38:25,210 --> 00:38:27,090 que has puesto es el correcto 644 00:38:27,090 --> 00:38:29,530 si la password que has puesto es la correcta 645 00:38:29,530 --> 00:38:29,989 y todo esto 646 00:38:29,989 --> 00:38:33,210 creo que 647 00:38:33,210 --> 00:38:34,230 ya estamos 648 00:38:34,230 --> 00:38:41,030 llegando al final, mañana 649 00:38:41,030 --> 00:38:43,110 vemos estos operadores de aquí 650 00:38:43,110 --> 00:38:45,190 y luego empezamos 651 00:38:45,190 --> 00:38:45,969 a hacer ejercicios