1 00:00:02,799 --> 00:00:09,919 A ver, ¿en qué se basaba la programación estructurada? 2 00:00:09,919 --> 00:00:30,839 La programación estructurada es una manera de programar que se sustenta en la idea de que nosotros podemos elaborar una solución para cualquier tipo de problema sin más que combinar, recordad, ¿verdad? 3 00:00:30,839 --> 00:00:51,030 Pues lectura de datos, bueno lo voy a llamar asignaciones porque es como estábamos acostumbrados, entonces todo lo relacionado con lectura de datos, asignaciones de datos a variables, todo eso ya lo hemos visto. 4 00:00:51,030 --> 00:00:54,369 ¿Qué otro tipo de sentencia hemos visto? 5 00:00:54,549 --> 00:00:55,909 Tomar decisiones 6 00:00:55,909 --> 00:01:01,609 Es decir, que mi programa 7 00:01:01,609 --> 00:01:02,950 En función de una condición 8 00:01:02,950 --> 00:01:04,250 Haga una cosa o haga otra 9 00:01:04,250 --> 00:01:06,870 Y eso, según lo vamos anidando 10 00:01:06,870 --> 00:01:08,170 Pues permite que un programa 11 00:01:08,170 --> 00:01:10,909 Tenga un montón de ramas de posibilidades distintas 12 00:01:10,909 --> 00:01:12,370 Según yo voy anidando 13 00:01:12,370 --> 00:01:13,909 Decisiones una dentro de otra 14 00:01:13,909 --> 00:01:14,909 ¿Vale? 15 00:01:16,209 --> 00:01:17,670 Pero nos falta 16 00:01:17,670 --> 00:01:20,349 Una posibilidad más 17 00:01:20,349 --> 00:01:22,930 Para ahora ya sí tener todas las herramientas 18 00:01:22,930 --> 00:01:24,370 Que necesitamos para poder hacer 19 00:01:24,370 --> 00:01:27,250 cualquier cosa, solo nos falta 20 00:01:27,250 --> 00:01:28,530 una herramienta más 21 00:01:28,530 --> 00:01:30,109 que son los bucles 22 00:01:30,109 --> 00:01:33,209 bueno, pues 23 00:01:33,209 --> 00:01:34,329 solamente con esto 24 00:01:34,329 --> 00:01:37,170 ya se puede elaborar cualquier algoritmo 25 00:01:37,170 --> 00:01:39,069 para resolver cualquier cosa que pueda hacer el ordenador 26 00:01:39,069 --> 00:01:40,609 no hace falta nada más 27 00:01:40,609 --> 00:01:43,670 ¿vale? entonces la programación 28 00:01:43,670 --> 00:01:45,230 que usa esto 29 00:01:45,230 --> 00:01:47,390 es la programación estructurada 30 00:01:47,390 --> 00:01:49,010 esas sentencias 31 00:01:49,010 --> 00:01:50,890 claro, se ponen en secuencia, una tras otra 32 00:01:50,890 --> 00:01:53,209 y así podemos resolver cualquier problema 33 00:01:53,209 --> 00:01:56,829 la dificultad efectivamente es 34 00:01:56,829 --> 00:01:58,709 elaborar el algoritmo, es decir 35 00:01:58,709 --> 00:02:00,849 decidir esas sentencias 36 00:02:00,849 --> 00:02:02,129 cuáles son y en qué orden 37 00:02:02,129 --> 00:02:04,629 ¿vale? elaborar el algoritmo 38 00:02:04,629 --> 00:02:07,269 que permite realmente llegar a esa solución 39 00:02:07,269 --> 00:02:08,990 lo que llamamos 40 00:02:08,990 --> 00:02:10,330 normalmente hacer el diseño de mi programa 41 00:02:10,330 --> 00:02:12,509 eso es lo difícil, ¿cómo las combino yo? 42 00:02:13,050 --> 00:02:14,990 ¿cómo combino yo mis sentencias para conseguir 43 00:02:14,990 --> 00:02:15,629 lo que yo quiero? 44 00:02:16,530 --> 00:02:18,770 bueno, más o menos ya hemos visto que cuando yo 45 00:02:18,770 --> 00:02:20,669 veo, vislumbro que un programa 46 00:02:20,669 --> 00:02:22,930 puede tener varias posibilidades 47 00:02:22,930 --> 00:02:24,509 ahí ya sabemos que 48 00:02:24,509 --> 00:02:26,870 pues voy a tener que coger una decisión 49 00:02:26,870 --> 00:02:28,830 entonces cuando ya nos damos cuenta 50 00:02:28,830 --> 00:02:31,310 de que tenemos que coger una decisión, ya empezamos a perfilarlo 51 00:02:31,310 --> 00:02:33,189 vale, hay una condición involucrada 52 00:02:33,189 --> 00:02:34,270 ¿esa condición cuál es? 53 00:02:34,590 --> 00:02:36,310 pues ya empiezo a elaborar esa condición 54 00:02:36,310 --> 00:02:39,009 ¿tengo más de una rama? pues entonces tendré 55 00:02:39,009 --> 00:02:40,990 if con otro 56 00:02:40,990 --> 00:02:42,030 if anidado dentro 57 00:02:42,030 --> 00:02:44,830 ¿que lo puedo poner en un if el save para que sea más bonito? 58 00:02:44,889 --> 00:02:46,830 lo pongo, en un switch case porque es el caso 59 00:02:46,830 --> 00:02:48,770 concreto de que la decisión es salvar de una variable 60 00:02:48,770 --> 00:02:50,490 pues lo pongo, todo eso 61 00:02:50,490 --> 00:02:51,530 que no dejan de ser 62 00:02:51,530 --> 00:02:54,650 pautas para permitirnos 63 00:02:54,650 --> 00:02:56,689 diseñar a nosotros los programas 64 00:02:56,689 --> 00:02:57,889 todo eso 65 00:02:57,889 --> 00:03:00,509 se nos queda todavía corto porque hay cosas 66 00:03:00,509 --> 00:03:01,710 que no podemos hacer con eso 67 00:03:01,710 --> 00:03:03,710 hay cosas que no podemos hacer 68 00:03:03,710 --> 00:03:06,030 entonces para eso tenemos las sentencias 69 00:03:06,030 --> 00:03:08,129 de repetición o los bucles 70 00:03:08,129 --> 00:03:17,090 esto es como 71 00:03:17,090 --> 00:03:18,229 por ejemplo 72 00:03:18,229 --> 00:03:21,389 imaginaos 73 00:03:21,389 --> 00:03:22,669 que me piden 74 00:03:22,669 --> 00:03:25,370 en un programa que sea 75 00:03:25,370 --> 00:03:27,949 el típico menú 76 00:03:27,949 --> 00:03:32,169 Por ejemplo, un menú donde se tiene que mostrar, 77 00:03:32,849 --> 00:03:34,129 bueno, ya se me ha acabado la tinta, 78 00:03:36,789 --> 00:03:39,250 pues un menú donde se muestran mensajitos, 79 00:03:39,830 --> 00:03:42,590 opción 1, pues sumar, 80 00:03:43,189 --> 00:03:44,710 imaginaos que fuera una calculadora, 81 00:03:49,840 --> 00:03:56,740 opción 2, restar, 82 00:03:57,199 --> 00:03:58,780 ¿no? Me están pidiendo que haga una calculadora. 83 00:03:59,439 --> 00:04:02,680 Y esa calculadora no me tiene que valer solo para una operación, 84 00:04:03,360 --> 00:04:04,340 sino para varias. 85 00:04:06,080 --> 00:04:09,819 Pero claro, yo tengo que poder salir de ese programa cuando quiera, 86 00:04:09,939 --> 00:04:15,460 pues podría tener otra opción que fuera salir. 87 00:04:17,060 --> 00:04:20,500 Vale, me dicen, y que este menú se vaya mostrando 88 00:04:20,500 --> 00:04:23,339 mientras tú no le des a la opción esta. 89 00:04:24,300 --> 00:04:27,160 Entonces, ahora ya sí que estamos haciendo una calculadora 90 00:04:27,160 --> 00:04:28,579 de sumas y restas normal y corriente. 91 00:04:29,480 --> 00:04:30,860 Se muestra el mensajito. 92 00:04:31,740 --> 00:04:33,300 Se lee esto, 1. 93 00:04:34,120 --> 00:04:35,720 Ah, me has dado la opción 1. 94 00:04:36,319 --> 00:04:37,680 Pues entonces tengo que sumar. 95 00:04:37,680 --> 00:04:39,600 pido los datos y los subo 96 00:04:39,600 --> 00:04:41,420 ¿vale? ¿y ahora qué tiene que ocurrir? 97 00:04:41,759 --> 00:04:43,959 pues que se tiene que volver a mostrar el menú otra vez 98 00:04:43,959 --> 00:04:45,220 no vale que mi programa acabe 99 00:04:45,220 --> 00:04:48,220 ¿que ahora me has dado la opción 2? 100 00:04:48,699 --> 00:04:50,139 le pido los números y hago la resta 101 00:04:50,139 --> 00:04:52,100 ¿y qué tiene que ocurrir? que se tenga que volver a mostrar 102 00:04:52,100 --> 00:04:53,819 el programa otra vez, no vale que el programa acabe 103 00:04:53,819 --> 00:04:56,079 vale, y así me puedo estar un montón de veces 104 00:04:56,079 --> 00:04:58,139 ¿que ahora 105 00:04:58,139 --> 00:04:59,680 me han dado la opción 3? termino 106 00:04:59,680 --> 00:05:02,019 esto podría ser un programa que funciona como 107 00:05:02,019 --> 00:05:04,019 una calculadora, que está todo el rato, muestra 108 00:05:04,019 --> 00:05:05,980 menú, leo opción, hace 109 00:05:05,980 --> 00:05:07,899 operación, con un switch efectivamente 110 00:05:07,899 --> 00:05:10,100 y sale, pero claro, con lo que nosotros 111 00:05:10,100 --> 00:05:12,040 hemos hecho, no podemos hacer 112 00:05:12,040 --> 00:05:13,980 eso, es imposible, nosotros solo 113 00:05:13,980 --> 00:05:14,420 sabemos 114 00:05:14,420 --> 00:05:17,180 hacer esto una vez 115 00:05:17,180 --> 00:05:19,060 le pedimos la opción 116 00:05:19,060 --> 00:05:20,779 y en función de 117 00:05:20,779 --> 00:05:23,980 la opción que me hayan dado, ahora ya 118 00:05:23,980 --> 00:05:26,000 hago la suma o la resta, o no hago nada 119 00:05:26,000 --> 00:05:27,480 pero claro 120 00:05:27,480 --> 00:05:29,839 esto tiene que ocurrir otra vez más 121 00:05:29,839 --> 00:05:32,000 y otra vez más, y otra vez más, y así varias 122 00:05:32,000 --> 00:05:32,579 todo el rato 123 00:05:32,579 --> 00:05:34,899 ¿se podría hacer sin un bucle pero con un 124 00:05:34,899 --> 00:05:36,540 go to dentro de un if? 125 00:05:38,870 --> 00:05:40,529 no, no, primero porque 126 00:05:40,529 --> 00:05:42,470 go to no existe en la programación estructurada 127 00:05:42,470 --> 00:05:44,769 de hecho, si la programación estructurada 128 00:05:44,769 --> 00:05:46,410 se diseñó precisamente 129 00:05:46,410 --> 00:05:48,250 su primera pauta fue eliminar 130 00:05:48,250 --> 00:05:49,129 los go to 131 00:05:49,129 --> 00:05:52,029 es que ni tienes esa sentencia 132 00:05:52,029 --> 00:05:53,629 no puedes, no puedes usarla 133 00:05:53,629 --> 00:05:56,269 claro, y si la tuvieras 134 00:05:56,269 --> 00:05:58,350 un go to, es que estarías haciéndome un bucle 135 00:05:58,350 --> 00:05:59,870 al que le estás llamando go to 136 00:05:59,870 --> 00:06:02,310 entonces me estarías haciendo un bucle, estarías usando go to 137 00:06:02,310 --> 00:06:03,910 como bucle, claro 138 00:06:03,910 --> 00:06:06,050 con lo que tenemos 139 00:06:06,050 --> 00:06:07,910 seríamos incapaces de hacer este programa 140 00:06:07,910 --> 00:06:09,629 o sea, ¿qué necesitamos? 141 00:06:10,470 --> 00:06:11,769 necesitamos, cuando uno se da cuenta 142 00:06:11,769 --> 00:06:13,230 de cómo quiere que funcione, dice 143 00:06:13,230 --> 00:06:15,949 ojo, es que yo lo que necesito es 144 00:06:15,949 --> 00:06:16,949 que esto 145 00:06:16,949 --> 00:06:18,949 que incluye 146 00:06:18,949 --> 00:06:21,509 leer la opción 147 00:06:21,509 --> 00:06:23,670 y luego ya operar 148 00:06:23,670 --> 00:06:26,009 con las sentencias que fueran 149 00:06:26,009 --> 00:06:27,689 lo que necesitamos es 150 00:06:27,689 --> 00:06:29,649 todo esto hacerlo 151 00:06:29,649 --> 00:06:30,750 muchas veces 152 00:06:30,750 --> 00:06:33,470 ¿Vale? Entonces, cuando ya hemos 153 00:06:33,470 --> 00:06:35,250 entendido lo que tiene que hacer una aplicación 154 00:06:35,250 --> 00:06:36,990 pues nos podemos haber dado cuenta 155 00:06:36,990 --> 00:06:39,209 que una parte de esa aplicación 156 00:06:39,209 --> 00:06:41,189 o toda ella, depende 157 00:06:41,189 --> 00:06:43,009 necesitamos que se haga 158 00:06:43,009 --> 00:06:44,230 varias veces 159 00:06:44,230 --> 00:06:47,509 ¿Un número de veces cuáles? No lo sé 160 00:06:47,509 --> 00:06:49,430 ahora nos metemos en ella, pero identificamos que tiene que hacer 161 00:06:49,430 --> 00:06:51,329 varias. Entonces 162 00:06:51,329 --> 00:06:53,310 con lo que nosotros hemos visto hasta ahora no podemos 163 00:06:53,310 --> 00:06:55,310 hacerlo. Otra cosa es que me dijeran 164 00:06:55,310 --> 00:06:57,370 espera, tu calculadora tiene 165 00:06:57,370 --> 00:06:59,350 que hacer esto siete 166 00:06:59,350 --> 00:07:01,069 veces, entonces sí 167 00:07:01,069 --> 00:07:03,509 podríamos hacerlo con lo que hemos hecho hasta ahora 168 00:07:03,509 --> 00:07:05,350 copiaríamos y pegaríamos el código 169 00:07:05,350 --> 00:07:06,970 siete veces, una debajo de la otra 170 00:07:06,970 --> 00:07:08,990 quedaría el programa horroroso 171 00:07:08,990 --> 00:07:11,329 pero efectivamente hasta siete 172 00:07:11,329 --> 00:07:13,250 veces podríamos hacer operaciones 173 00:07:13,250 --> 00:07:14,629 podríamos hacer siete operaciones 174 00:07:14,629 --> 00:07:17,149 pero normal no es funcionar así, normal es decir 175 00:07:17,149 --> 00:07:19,709 no, no, esto que se repita 176 00:07:19,709 --> 00:07:21,290 hasta que 177 00:07:21,290 --> 00:07:22,529 no se dé una condición 178 00:07:22,529 --> 00:07:25,329 ¿vale? pues eso es justo la definición 179 00:07:25,329 --> 00:07:25,689 de BUP 180 00:07:25,689 --> 00:07:28,930 conjunto de sentencias que se repiten 181 00:07:28,930 --> 00:07:30,970 mientras no se cumpla 182 00:07:30,970 --> 00:07:32,410 una condición de fin 183 00:07:32,410 --> 00:07:34,629 bueno, pues justo eso 184 00:07:34,629 --> 00:07:37,149 es lo que veríamos que pasa 185 00:07:37,149 --> 00:07:38,209 en un programa como este 186 00:07:38,209 --> 00:07:41,250 oye, ojo, esto lo tengo claro como programarlo 187 00:07:41,250 --> 00:07:42,750 muy bien, pero es que además 188 00:07:42,750 --> 00:07:45,550 necesito que esto se repita un montón de veces 189 00:07:45,550 --> 00:07:47,230 vale, pues tengo ahí 190 00:07:47,230 --> 00:07:49,050 un bucle, eso tendré que meterlo 191 00:07:49,050 --> 00:07:49,790 dentro de un bucle 192 00:07:49,790 --> 00:07:52,930 vale, pero una vez que ya he identificado 193 00:07:52,930 --> 00:07:54,990 que tengo un bucle y que tengo que meter 194 00:07:54,990 --> 00:07:56,490 algo dentro de ese bucle 195 00:07:56,490 --> 00:07:58,889 tenemos que ponerle ya el colofón 196 00:07:58,889 --> 00:08:00,410 que es decir, muy bien, pero 197 00:08:00,410 --> 00:08:02,230 ¿hasta cuándo se va a repetir eso? 198 00:08:02,589 --> 00:08:04,589 ¿Hasta cuándo? Pues depende 199 00:08:04,589 --> 00:08:06,810 de la aplicación que estemos haciendo. En este caso 200 00:08:06,810 --> 00:08:09,170 sería mientras la opción 201 00:08:09,170 --> 00:08:11,029 no sea 3. Cuando la opción 202 00:08:11,029 --> 00:08:11,910 sea 3, se acabó. 203 00:08:13,370 --> 00:08:14,870 Entonces un bucle se caracteriza 204 00:08:14,870 --> 00:08:16,050 por dos cosas. 205 00:08:16,689 --> 00:08:19,310 El conjunto de acciones que se va a repetir 206 00:08:19,310 --> 00:08:21,110 y forma 207 00:08:21,110 --> 00:08:22,810 parte ya de mi diseño, 208 00:08:22,949 --> 00:08:24,589 de mi elaboración del programa, 209 00:08:24,589 --> 00:08:26,689 de mis ideas, decidir qué parte 210 00:08:26,689 --> 00:08:27,709 es la que se tiene que repetir. 211 00:08:28,970 --> 00:08:30,310 Y luego, una vez que hemos decidido 212 00:08:30,310 --> 00:08:31,910 qué parte es la que se va a repetir, 213 00:08:32,629 --> 00:08:34,110 lo que necesitamos saber siempre, 214 00:08:34,210 --> 00:08:36,809 obligatoriamente, es una condición 215 00:08:36,809 --> 00:08:38,809 que es la que fija cuando va a dejar 216 00:08:38,809 --> 00:08:39,629 eso de repetirse. 217 00:08:40,610 --> 00:08:42,509 No hay bucle que no se caracterice 218 00:08:42,509 --> 00:08:43,950 por una condición de finalización. 219 00:08:44,950 --> 00:08:46,330 No lo hay. Un bucle tiene que tener 220 00:08:46,330 --> 00:08:47,750 una condición de finalización asociada. 221 00:08:48,809 --> 00:08:49,809 Bueno, pues en este caso, 222 00:08:50,330 --> 00:08:51,409 para este ejemplo concreto, 223 00:08:52,129 --> 00:08:53,809 sería esto, por ejemplo. 224 00:08:54,590 --> 00:09:01,080 y así pues en los 225 00:09:01,080 --> 00:09:03,120 creo que cientos ejemplos 226 00:09:03,120 --> 00:09:05,139 que veremos de ejercicios de estos 227 00:09:05,139 --> 00:09:07,399 en ese caso también habría que 228 00:09:07,399 --> 00:09:09,460 encorsetarlo entre que las opciones 229 00:09:09,460 --> 00:09:10,519 son 1, 2 y 3 230 00:09:10,519 --> 00:09:13,740 si las opciones son 1, 2 y 3 231 00:09:13,740 --> 00:09:14,559 entra este bucle 232 00:09:14,559 --> 00:09:17,860 bueno luego habría que ver 233 00:09:17,860 --> 00:09:19,980 si no pues tú le podías poner 234 00:09:19,980 --> 00:09:21,779 un mensaje opción incorrecta pero te tendría que 235 00:09:21,779 --> 00:09:22,820 volver a mostrar otra vez 236 00:09:22,820 --> 00:09:24,480 iría todo dentro del bucle 237 00:09:24,480 --> 00:09:26,220 vale vamos a ver como es la sintaxis 238 00:09:26,220 --> 00:09:28,220 la sintaxis para expresar esa idea 239 00:09:28,220 --> 00:09:30,720 que es repetir un montón de cosas 240 00:09:30,720 --> 00:09:32,679 varias veces hasta que 241 00:09:32,679 --> 00:09:34,539 una condición deje de cumplirse 242 00:09:34,539 --> 00:09:35,539 ¿vale? 243 00:09:36,480 --> 00:09:38,779 bueno, pues entonces la sintaxis es esta 244 00:09:38,779 --> 00:09:42,370 la palabra while 245 00:09:42,370 --> 00:09:44,269 entre paréntesis 246 00:09:44,269 --> 00:09:45,649 una condición 247 00:09:45,649 --> 00:09:48,490 una condición 248 00:09:48,490 --> 00:09:50,450 porque la condición tenemos 249 00:09:50,450 --> 00:09:52,509 que tenerla, no hay bucle sin condición 250 00:09:52,509 --> 00:09:53,490 no existe 251 00:09:53,490 --> 00:09:56,509 y ahora ya, entre llaves 252 00:09:56,509 --> 00:09:58,570 las sentencias que se repiten 253 00:09:58,570 --> 00:10:04,539 que he decidido yo que son las que tienen que repetir 254 00:10:04,539 --> 00:10:16,539 ¿vale? esta es la sintaxis 255 00:10:16,539 --> 00:10:18,860 entonces necesito las dos cosas 256 00:10:18,860 --> 00:10:20,860 tener claro que es lo que quiero 257 00:10:20,860 --> 00:10:23,000 que se repita, que eso repito 258 00:10:23,000 --> 00:10:25,100 lo habré hecho después de haber analizado mi programa 259 00:10:25,100 --> 00:10:26,940 haber visto de que va, como funciona 260 00:10:26,940 --> 00:10:28,039 que tiene que ver el usuario 261 00:10:28,039 --> 00:10:30,500 pues las sentencias que se tienen que repetir 262 00:10:30,500 --> 00:10:32,879 y imprescindible 263 00:10:32,879 --> 00:10:34,700 identificar 264 00:10:34,700 --> 00:10:36,840 qué condición va aquí. 265 00:10:37,799 --> 00:10:39,080 Y ahora, ¿esto cómo funciona 266 00:10:39,080 --> 00:10:40,779 una vez que la máquina virtual se lo ha encontrado? 267 00:10:41,419 --> 00:10:42,799 Pues esto es una sentencia más. 268 00:10:42,879 --> 00:10:44,259 La máquina virtual viene por aquí, 269 00:10:44,879 --> 00:10:47,019 va haciendo lo que va haciendo y de repente llega al while. 270 00:10:47,440 --> 00:10:48,220 ¿Qué es lo que hace? 271 00:10:48,539 --> 00:10:51,360 Lo primero que hace, evalúa condición, 272 00:10:51,720 --> 00:10:52,539 que se cumple, 273 00:10:53,080 --> 00:10:54,820 ejecuta esto, como si fuera un if. 274 00:10:55,340 --> 00:10:56,960 Pero la diferencia con un if es que cuando aquí 275 00:10:56,960 --> 00:10:58,559 teníamos un if, evalúa condición, 276 00:10:58,659 --> 00:11:00,440 que se cumple, ejecuta esto y luego sigue. 277 00:11:00,879 --> 00:11:01,940 Ya está, no hace nada más. 278 00:11:01,940 --> 00:11:03,559 pues el while 279 00:11:03,559 --> 00:11:05,360 añade algo al if 280 00:11:05,360 --> 00:11:08,220 evaluamos condición 281 00:11:08,220 --> 00:11:09,960 como si fuera un if, que se cumple 282 00:11:09,960 --> 00:11:11,379 entramos y 283 00:11:11,379 --> 00:11:14,139 volvemos arriba otra vez y la volvemos 284 00:11:14,139 --> 00:11:16,259 a evaluar, se sigue cumpliendo 285 00:11:16,259 --> 00:11:17,159 entramos 286 00:11:17,159 --> 00:11:19,899 y volvemos arriba otra vez a evaluarla 287 00:11:19,899 --> 00:11:21,659 se sigue cumpliendo, entramos 288 00:11:21,659 --> 00:11:23,340 y volvemos arriba otra vez 289 00:11:23,340 --> 00:11:25,039 y así se está indefinidamente 290 00:11:25,039 --> 00:11:27,519 hasta que llegue un momento en que esta condición 291 00:11:27,519 --> 00:11:28,419 deja de cumplirse 292 00:11:28,419 --> 00:11:31,500 claro, si el bucle está bien diseñado y hace 293 00:11:31,500 --> 00:11:33,879 algo con sentido, las sentencias 294 00:11:33,879 --> 00:11:35,659 que hay aquí, las sentencias 295 00:11:35,659 --> 00:11:36,360 que hay aquí 296 00:11:36,360 --> 00:11:39,340 van modificando las variables 297 00:11:39,340 --> 00:11:40,700 de las que depende esta condición 298 00:11:40,700 --> 00:11:43,559 porque si estas sentencias no 299 00:11:43,559 --> 00:11:45,340 tocan ninguna de las variables 300 00:11:45,340 --> 00:11:47,659 de las que depende la condición, el bucle no acabaría 301 00:11:47,659 --> 00:11:49,179 jamás, ¿no? 302 00:11:49,399 --> 00:11:51,720 o sea, si es true desde el principio, seguiría siendo true 303 00:11:51,720 --> 00:11:54,000 pero claro, no es la idea 304 00:11:54,000 --> 00:11:55,600 no queremos bucles 305 00:11:55,600 --> 00:11:57,340 infinitos, no valen para nada, un programa 306 00:11:57,340 --> 00:11:59,419 con un bucle infinito se quedaría trazcado para siempre 307 00:11:59,419 --> 00:12:02,159 entonces esto responderá a 308 00:12:02,159 --> 00:12:03,940 ahora lo veremos en ejemplos 309 00:12:03,940 --> 00:12:04,879 yo tengo aquí unas variables 310 00:12:04,879 --> 00:12:07,519 si esas variables cumplen una condición 311 00:12:07,519 --> 00:12:08,600 entro aquí 312 00:12:08,600 --> 00:12:11,299 como consecuencia de haber operado 313 00:12:11,299 --> 00:12:14,019 puede que esta condición 314 00:12:14,019 --> 00:12:15,120 ya haya dejado de ser true 315 00:12:15,120 --> 00:12:17,379 porque aquí han cambiado los valores de sus variables 316 00:12:17,379 --> 00:12:19,100 y si es falso 317 00:12:19,100 --> 00:12:20,580 se acabó, es salido 318 00:12:20,580 --> 00:12:23,960 entonces esto en el diagrama de flujo 319 00:12:23,960 --> 00:12:25,919 que ya mencionamos cuando hablábamos de los if 320 00:12:25,919 --> 00:12:27,860 pues si el if era esto 321 00:12:27,860 --> 00:12:29,639 esto era LIF 322 00:12:29,639 --> 00:12:33,240 evalúo condición, que se cumple hago esto 323 00:12:33,240 --> 00:12:34,639 que no se cumple hago esto 324 00:12:34,639 --> 00:12:35,320 y termino 325 00:12:35,320 --> 00:12:37,179 esto era LIF 326 00:12:37,179 --> 00:12:41,190 pues el WHILE no es eso 327 00:12:41,190 --> 00:12:49,590 el WHILE es 328 00:12:49,590 --> 00:12:52,029 evalúo condición 329 00:12:52,029 --> 00:12:53,750 hasta ahí estamos igual 330 00:12:53,750 --> 00:12:55,429 evalúo condición 331 00:12:55,429 --> 00:12:59,639 que se cumple 332 00:12:59,639 --> 00:13:03,559 hago lo que tengo que hacer 333 00:13:03,559 --> 00:13:05,259 vale 334 00:13:05,259 --> 00:13:06,940 vamos a poner aquí como si hubiera cosas 335 00:13:06,940 --> 00:13:12,779 Que se cumple 336 00:13:12,779 --> 00:13:14,960 Hago lo que tengo que hacer 337 00:13:14,960 --> 00:13:16,120 ¿Y qué hago? 338 00:13:16,820 --> 00:13:18,179 Y vuelvo arriba otra vez 339 00:13:18,179 --> 00:13:20,740 Vuelvo arriba 340 00:13:20,740 --> 00:13:22,019 Entonces en el if 341 00:13:22,019 --> 00:13:25,039 Si se cumplía, hago lo que tengo que hacer y se acabó 342 00:13:25,039 --> 00:13:25,720 Se acabó 343 00:13:25,720 --> 00:13:28,919 En el while, que se cumple, hago lo que tengo que hacer 344 00:13:28,919 --> 00:13:30,379 Y vuelvo arriba otra vez 345 00:13:30,379 --> 00:13:32,399 ¿Y en la rama del no, qué pasa? 346 00:13:32,700 --> 00:13:34,960 En la rama del no, sigue, se ha acabado 347 00:13:34,960 --> 00:13:35,820 Y seguimos por aquí 348 00:13:35,820 --> 00:13:38,659 Luego este es el if y este es el while 349 00:13:38,659 --> 00:13:40,259 ¿vale? porque a veces 350 00:13:40,259 --> 00:13:43,080 a la hora de escribir el código 351 00:13:43,080 --> 00:13:43,940 los mezcláis 352 00:13:43,940 --> 00:13:46,620 y dices, ah, si pasa esto, tengo que hacer esto 353 00:13:46,620 --> 00:13:48,620 y ponéis un while directamente 354 00:13:48,620 --> 00:13:49,639 pero es claro, el while 355 00:13:49,639 --> 00:13:52,320 si pasa eso, efectivamente lo hace 356 00:13:52,320 --> 00:13:54,259 pero es que luego se vuelve arriba otra vez 357 00:13:54,259 --> 00:13:56,179 si sigue pasando, lo va a volver a hacer 358 00:13:56,179 --> 00:13:58,679 y vuelve arriba, si sigue pasando, lo va a volver a hacer 359 00:13:58,679 --> 00:14:00,220 sin embargo el if 360 00:14:00,220 --> 00:14:02,639 lo hace una vez y solo una, y se acabó 361 00:14:02,639 --> 00:14:04,600 me da igual que la condición siga siendo cierta 362 00:14:04,600 --> 00:14:06,620 o no sea cierta, solo lo va a ejecutar una vez 363 00:14:06,620 --> 00:14:08,519 solo una, y continúa 364 00:14:08,519 --> 00:14:11,200 Sin embargo, el while lo va a estar ejecutando 365 00:14:11,200 --> 00:14:13,019 Un montonaco de veces 366 00:14:13,019 --> 00:14:14,600 Hasta que esto sea falso 367 00:14:14,600 --> 00:14:16,399 Y cuando esto sea falso 368 00:14:16,399 --> 00:14:18,379 Pues ya se va por aquí 369 00:14:18,379 --> 00:14:19,580 ¿Vale? 370 00:14:20,299 --> 00:14:22,659 Entonces, esta estructura la necesitamos 371 00:14:22,659 --> 00:14:24,039 Para hacer muchísimas cosas 372 00:14:24,039 --> 00:14:25,240 Muchísimas 373 00:14:25,240 --> 00:14:29,019 ¿Cómo? 374 00:14:32,200 --> 00:14:33,179 ¿Cómo un bucle en falso? 375 00:14:33,259 --> 00:14:33,879 Es que no entiendo 376 00:14:33,879 --> 00:14:38,320 Bueno, a ver, el no es que ya se acabó 377 00:14:38,320 --> 00:14:40,320 la sentencia, a partir de aquí yo le pongo 378 00:14:40,320 --> 00:14:42,500 la sentencia que quiera, que toca ahí hacer otro while 379 00:14:42,500 --> 00:14:43,759 porque toca hacer otro bucle 380 00:14:43,759 --> 00:14:45,580 ya veremos, depende de lo que toque 381 00:14:45,580 --> 00:14:48,399 pero esta estructura es una estructura 382 00:14:48,399 --> 00:14:49,179 que funciona así 383 00:14:49,179 --> 00:14:52,240 y yo decido en qué momento 384 00:14:52,240 --> 00:14:54,080 me es útil, en qué momento me es útil 385 00:14:54,080 --> 00:14:55,820 o la necesito y entonces la pongo ahí 386 00:14:55,820 --> 00:14:58,399 y cuando decidiré que me sea útil, cuando me doy 387 00:14:58,399 --> 00:15:00,299 cuenta que hay algo que tengo que hacer varias veces 388 00:15:00,299 --> 00:15:02,799 entonces ahí la identifico 389 00:15:02,799 --> 00:15:04,379 y cuando ya me he dado cuenta de eso 390 00:15:04,379 --> 00:15:06,559 lo siguiente que tengo que pensar es, vale, ¿y de qué condición 391 00:15:06,559 --> 00:15:08,940 Depende que esto se siga haciendo o no 392 00:15:08,940 --> 00:15:10,600 ¿Vale? 393 00:15:11,159 --> 00:15:12,080 Si es falso 394 00:15:12,080 --> 00:15:14,419 Y os apunto, es falso 395 00:15:14,419 --> 00:15:15,539 Y si muestra un mensaje no válido 396 00:15:15,539 --> 00:15:17,019 No se puede repetir el bucle de nuevo 397 00:15:17,019 --> 00:15:18,139 Para que la persona 398 00:15:18,139 --> 00:15:21,059 No, no, no, o sea, si la condición es falsa 399 00:15:21,059 --> 00:15:23,659 Ya no hace nada, o sea, si tú quieres que se meta 400 00:15:23,659 --> 00:15:24,620 El bucle de nuevo 401 00:15:24,620 --> 00:15:25,639 Es que 402 00:15:25,639 --> 00:15:29,379 Es que entonces, ¿para qué haces un bucle? 403 00:15:29,480 --> 00:15:31,179 O sea, quieres que lo repita 404 00:15:31,179 --> 00:15:33,299 Tanto si es falsa como si no, entonces no sería 405 00:15:33,299 --> 00:15:35,080 Tendrías un bucle infinito 406 00:15:35,080 --> 00:15:36,080 Es que no acabo de entenderte 407 00:15:36,080 --> 00:15:39,259 Por ejemplo, necesitamos los datos 408 00:15:39,259 --> 00:15:40,860 Y necesita que los datos sean 409 00:15:40,860 --> 00:15:42,279 El número del 0 al 4 410 00:15:42,279 --> 00:15:45,299 Si es el 0 al 4, va a decir que sí 411 00:15:45,299 --> 00:15:47,340 Va a ingresar los datos y se va a repetir 412 00:15:47,340 --> 00:15:49,080 Pero si es falso 413 00:15:49,080 --> 00:15:50,200 O sea, que si el número es 5 414 00:15:50,200 --> 00:15:52,159 Que diga, el número no es válido 415 00:15:52,159 --> 00:15:53,120 Y que se vuelva a repetir 416 00:15:53,120 --> 00:15:54,799 Claro, pero es que entonces 417 00:15:54,799 --> 00:15:57,840 La condición no será 418 00:15:57,840 --> 00:15:59,100 Que el número sea de una hasta cuatro 419 00:15:59,100 --> 00:16:00,299 Aquí pondrás la condición 420 00:16:00,299 --> 00:16:02,840 Que el número sea 1, 2, 3, 4 y 5 421 00:16:02,840 --> 00:16:05,620 Y aquí ya dentro distinguirás 422 00:16:05,620 --> 00:16:07,840 que es los cuatro primeros, hago lo que sea 423 00:16:07,840 --> 00:16:10,000 que es el cinco, pongo no válido 424 00:16:10,000 --> 00:16:12,220 y vuelves, pero en la condición 425 00:16:12,220 --> 00:16:14,440 va a figurar como válido todos los números 426 00:16:14,440 --> 00:16:15,519 vale 427 00:16:15,519 --> 00:16:18,240 y ya, si no se mete 428 00:16:18,240 --> 00:16:20,080 ninguno de ellos, en algún momento tendrás que 429 00:16:20,080 --> 00:16:21,980 decidir salir, habrá alguna opción que sea 430 00:16:21,980 --> 00:16:22,879 salir, la que sea 431 00:16:22,879 --> 00:16:26,220 porque si tú haces un programa que una condición 432 00:16:26,220 --> 00:16:27,899 sea imposible, que se haga falsa 433 00:16:27,899 --> 00:16:30,000 solo tiene una opción para ser apagado 434 00:16:30,000 --> 00:16:32,139 que es que mates el proceso 435 00:16:32,139 --> 00:16:34,080 directamente y nunca deberíamos tener una aplicación 436 00:16:34,080 --> 00:16:35,779 cuya única salida es matar el proceso 437 00:16:35,779 --> 00:16:38,120 en el sistema operativo, me refiero 438 00:16:38,120 --> 00:16:40,000 siempre debería haber una salida por código 439 00:16:40,000 --> 00:16:42,039 entonces siempre tendrías que poner 440 00:16:42,039 --> 00:16:44,720 una condición 441 00:16:44,720 --> 00:16:46,159 que alguna vez se haga falsa 442 00:16:46,159 --> 00:16:47,340 en el ejemplo que tú me dices 443 00:16:47,340 --> 00:16:49,000 cuando metas 6, por ejemplo 444 00:16:49,000 --> 00:16:50,919 el 6, la que sea 445 00:16:50,919 --> 00:16:53,980 o salir, o lo que sea 446 00:16:53,980 --> 00:16:56,100 vale, pues esto de 447 00:16:56,100 --> 00:16:58,419 identificar que un bug nos vendría muy bien 448 00:16:58,419 --> 00:16:59,879 ya nos ha pasado 449 00:16:59,879 --> 00:17:02,100 en algunos ejercicios 450 00:17:02,100 --> 00:17:02,580 en realidad 451 00:17:02,580 --> 00:17:14,970 no, bueno, pero ahí no nos hacía falta un bucle 452 00:17:14,970 --> 00:17:17,170 la fecha del día siguiente, dices 453 00:17:17,170 --> 00:17:19,490 no, porque eso era una fecha, pues la del siguiente 454 00:17:19,490 --> 00:17:20,609 y ya está 455 00:17:20,609 --> 00:17:26,769 no, es que no sé a la misma a cuál te refieres 456 00:17:26,769 --> 00:17:28,230 pero bueno, si te acuerdas o lo que sea 457 00:17:28,230 --> 00:17:30,730 pero por ejemplo 458 00:17:30,730 --> 00:17:33,009 vamos a hacer primero el uso de un bucle 459 00:17:33,009 --> 00:17:35,890 solamente para ver su sintaxis 460 00:17:35,890 --> 00:17:37,450 es un ejemplo más sencillo 461 00:17:37,450 --> 00:17:39,769 y luego podemos ya plantear ejercicios 462 00:17:39,769 --> 00:17:41,309 más retorcidos 463 00:17:41,309 --> 00:17:49,960 vale, ¿qué pasa? 464 00:17:52,599 --> 00:17:53,779 vale, venga, vamos a hacer 465 00:17:53,779 --> 00:17:55,579 un nuevo proyecto solamente ya de 466 00:17:55,579 --> 00:17:56,099 bucle 467 00:17:56,099 --> 00:17:59,779 perdón, sí, sí, sí 468 00:18:01,640 --> 00:18:02,799 vale, a ver ya esto 469 00:18:02,799 --> 00:18:03,539 ¿cómo funciona? 470 00:18:03,819 --> 00:18:04,240 a ver, a ver 471 00:18:04,240 --> 00:18:30,200 Venga, un nuevo proyecto 472 00:18:30,200 --> 00:18:33,200 Ejemplos 473 00:18:33,200 --> 00:18:40,960 Proyecto Ejemplo Buclis 474 00:18:40,960 --> 00:19:33,730 Vamos a ver. 475 00:19:33,750 --> 00:19:36,309 Vamos a suponer 476 00:19:36,309 --> 00:19:39,509 Un ejercicio que me piden simplemente 477 00:19:39,509 --> 00:19:43,589 Vamos a meter un número 478 00:19:43,589 --> 00:19:44,190 De 479 00:19:44,190 --> 00:19:48,380 Cuatro cifras 480 00:19:48,380 --> 00:19:52,420 Leer entero 481 00:19:52,420 --> 00:19:54,400 De cuatro cifras 482 00:19:54,400 --> 00:19:56,119 No vamos a verificar que sean 483 00:19:56,119 --> 00:20:00,460 Y contar 484 00:20:00,460 --> 00:20:02,400 Cuántas son pares 485 00:20:02,400 --> 00:20:12,339 Vale, no he puesto el 486 00:20:12,339 --> 00:20:25,450 se puede hacer algo así como 487 00:20:25,450 --> 00:20:27,170 charat 0++ 488 00:20:27,170 --> 00:20:29,670 para que sube 489 00:20:29,670 --> 00:20:33,950 para que luego la posición sea la 1 490 00:20:33,950 --> 00:20:35,150 y luego la posición sea la 2 491 00:20:35,150 --> 00:20:36,670 no, porque creo que es que cambian la tabla 492 00:20:36,670 --> 00:20:39,890 no, no, no, si tú pones charat 0 493 00:20:39,890 --> 00:20:41,170 más más 494 00:20:41,170 --> 00:20:43,690 no, no, no, en todo caso 495 00:20:43,690 --> 00:20:45,289 el 0 se convertiría en 1 496 00:20:45,289 --> 00:20:47,690 en el almacenamiento temporal, pero da igual 497 00:20:47,690 --> 00:20:49,130 vale, a ver 498 00:20:49,130 --> 00:20:50,150 es una 499 00:20:50,150 --> 00:20:52,230 es un enunciado 500 00:20:52,230 --> 00:20:53,869 un poco absurdo y estúpido 501 00:20:53,869 --> 00:20:55,750 pero es porque vamos a ir incrementando poco a poco 502 00:20:55,750 --> 00:20:57,690 vale, esto en cualquier caso 503 00:20:57,690 --> 00:21:00,349 si me apuráis 504 00:21:00,349 --> 00:21:01,769 esta versión así 505 00:21:01,769 --> 00:21:04,170 uno la podría hacer 506 00:21:04,170 --> 00:21:05,450 en realidad sin bucles, ¿verdad? 507 00:21:06,589 --> 00:21:07,569 porque podríamos hacer 508 00:21:07,569 --> 00:21:08,930 si la primera 509 00:21:08,930 --> 00:21:11,349 sacando las cifras, unidades decenas 510 00:21:11,349 --> 00:21:13,910 si la primera es par y la segunda no 511 00:21:13,910 --> 00:21:15,210 y la tercera no y la cuarta no 512 00:21:15,210 --> 00:21:17,490 o si la primera es impar 513 00:21:17,490 --> 00:21:19,630 y la segunda no y la tercera no y la cuarta no 514 00:21:19,630 --> 00:21:25,690 O sea, podríamos así deducir si hay solo una, o si hay dos, o si hay tres, o si hay cuatro. 515 00:21:25,809 --> 00:21:27,910 Pero bueno, sería una condición muy larga y muy retorcida. 516 00:21:28,509 --> 00:21:33,109 Vale, entonces lo que yo quería poner con este ejemplo es una situación que se nos puede dar mucho. 517 00:21:33,690 --> 00:21:39,450 Un ejercicio, una aplicación en la que tenemos que contar cuántas veces ocurre algo, ¿vale? 518 00:21:40,069 --> 00:21:45,289 Entonces esta es la primera cosa que la palabra contar, cuando nos damos cuenta de que tenemos que contar, 519 00:21:45,289 --> 00:21:49,210 aquí ya se nos enciende la bombilla 520 00:21:49,210 --> 00:21:51,130 de que voy a necesitar un book 521 00:21:51,130 --> 00:21:54,890 yo veo un enunciado y digo 522 00:21:54,890 --> 00:21:56,809 ya traducido a mi idioma 523 00:21:56,809 --> 00:21:59,230 tengo que contar cuantas veces pasa algo 524 00:21:59,230 --> 00:22:04,450 contar implicará 525 00:22:04,450 --> 00:22:07,109 ir yo recorriendo 526 00:22:07,109 --> 00:22:13,230 algún espacio de situaciones 527 00:22:13,230 --> 00:22:16,369 seguir en una variable 528 00:22:16,369 --> 00:22:19,069 en una variable llevando una cuenta, ¿verdad? 529 00:22:19,170 --> 00:22:22,470 Entonces, cuando yo identifico que tengo que contar algo, automáticamente 530 00:22:22,470 --> 00:22:25,250 ya digo, vale, aquí voy a tener que hacer varias 531 00:22:25,250 --> 00:22:28,349 veces, mirar si algo ocurre y si 532 00:22:28,349 --> 00:22:31,269 eso ocurre, incrementar una cuenta, incrementar 533 00:22:31,269 --> 00:22:34,470 una cuenta. Entonces, primero, yo me he dado cuenta 534 00:22:34,470 --> 00:22:37,470 de que tengo que contar y no me he dado cuenta de 535 00:22:37,470 --> 00:22:40,250 nada más, ¿vale? 536 00:22:40,250 --> 00:22:44,299 Entonces, pues si yo 537 00:22:44,299 --> 00:22:46,160 Me he dado cuenta que tengo que contar 538 00:22:46,160 --> 00:22:47,680 Vamos a poner un contador 539 00:22:47,680 --> 00:22:49,099 Que es el que va a llevar la cuenta 540 00:22:49,099 --> 00:22:51,180 Lo inicializo a 0 541 00:22:51,180 --> 00:22:54,480 Y ahora este contador lo tendré que ir 542 00:22:54,480 --> 00:22:55,400 Sumando 1 543 00:22:55,400 --> 00:22:58,099 1, 1 más, 1 más, 1 más 544 00:22:58,099 --> 00:23:00,700 ¿Vale? Entonces ahí ya está el bucle 545 00:23:00,700 --> 00:23:01,960 Ahí ya está el bucle, vale 546 00:23:01,960 --> 00:23:04,259 Entonces, ahora ya 547 00:23:04,259 --> 00:23:06,279 He identificado que hay que contar, vale, contador 548 00:23:06,279 --> 00:23:07,880 Venga, vamos a leer 549 00:23:07,880 --> 00:23:09,019 El numerito 550 00:23:09,019 --> 00:23:30,509 Importamos 551 00:23:30,509 --> 00:23:33,599 Vale 552 00:23:33,599 --> 00:23:36,039 Bueno, pues ahora 553 00:23:36,039 --> 00:23:37,460 Tendré que 554 00:23:37,460 --> 00:23:39,579 Ir recorriendo 555 00:23:39,579 --> 00:23:44,529 Vale, espera 556 00:23:44,529 --> 00:23:46,029 Voy a cambiar de enunciado porque 557 00:23:46,029 --> 00:23:47,849 No quiero, vamos a 558 00:23:47,849 --> 00:23:50,609 Olvidarnos de los string que no gustan mucho 559 00:23:50,609 --> 00:23:52,269 Este primero que sea sin string 560 00:23:52,269 --> 00:23:54,690 Vale, vamos a cambiar 561 00:23:54,690 --> 00:23:56,210 No, no, no, no, no, no 562 00:23:56,210 --> 00:23:58,289 Pero es verdad que con este iba a mezclar 563 00:23:58,289 --> 00:23:59,950 String y no hay necesidad 564 00:23:59,950 --> 00:24:01,369 Vamos a partir más sencillo 565 00:24:01,369 --> 00:24:19,569 Vale, solicitar números enteros y contar los pares. 566 00:24:20,170 --> 00:24:22,049 Vale, el programa tiene que funcionar. 567 00:24:22,309 --> 00:24:29,750 Introduzca número 7, introduzca número 25, introduzca número menos 4, introduzca número menos 8, números tal cual. 568 00:24:30,390 --> 00:24:36,930 Vale, pues el resultado final del programa tiene que ser, has metido 7 pares, has metido 5 pares. 569 00:24:36,930 --> 00:24:38,049 Es decir, contar los pares. 570 00:24:38,049 --> 00:24:40,049 vale, pues entonces 571 00:24:40,049 --> 00:24:41,930 automáticamente sabemos que tenemos que contar 572 00:24:41,930 --> 00:24:44,269 muy bien, bueno, ahora ya 573 00:24:44,269 --> 00:24:46,329 ¿qué es lo que tenemos que hacer varias veces aquí? 574 00:24:46,730 --> 00:24:48,329 tratando, cuando seguimos entendiendo 575 00:24:48,329 --> 00:24:50,269 el ejercicio, hombre pues con lo que 576 00:24:50,269 --> 00:24:51,670 me han dicho que tiene que funcionar 577 00:24:51,670 --> 00:24:54,230 introduzca número, meter número 578 00:24:54,230 --> 00:24:56,289 y operarlo, introduzca 579 00:24:56,289 --> 00:24:58,049 número, meter número, lo que tenemos que hacer 580 00:24:58,049 --> 00:25:00,089 varias veces es pedir 581 00:25:00,089 --> 00:25:01,369 un número, leerlo 582 00:25:01,369 --> 00:25:03,990 y ver si es par o no es par, entonces eso 583 00:25:03,990 --> 00:25:05,049 lo tenemos que hacer varias veces 584 00:25:05,049 --> 00:25:07,390 pues entonces, yo aquí voy a tener 585 00:25:07,390 --> 00:25:11,670 un bucle en el que 586 00:25:11,670 --> 00:25:13,349 varias veces tendré que hacer 587 00:25:13,349 --> 00:25:19,940 introduzca 588 00:25:19,940 --> 00:25:20,519 número 589 00:25:20,519 --> 00:25:31,970 leemos el numerito 590 00:25:31,970 --> 00:25:35,700 y ahora 591 00:25:35,700 --> 00:25:39,039 pues operar con él para ir 592 00:25:39,039 --> 00:25:40,380 obteniendo mi cuenta final 593 00:25:40,380 --> 00:25:42,319 entonces mi programa empieza a ser algo así 594 00:25:42,319 --> 00:25:44,980 nos hemos dado cuenta de que lo que va a hacer varias veces 595 00:25:44,980 --> 00:25:46,619 es introducir número 596 00:25:46,619 --> 00:25:48,259 leerlo 597 00:25:48,259 --> 00:25:50,180 y ver como hacer para 598 00:25:50,180 --> 00:25:52,119 llevar yo una cuenta 599 00:25:52,119 --> 00:25:53,660 de si es par o no es impar 600 00:25:53,660 --> 00:25:55,460 pero eso lo tendremos que hacer varias veces 601 00:25:55,460 --> 00:25:57,900 si tiene porcentaje 2, contador más más 602 00:25:57,900 --> 00:25:59,519 claro, entonces, ¿qué ocurre? 603 00:26:00,000 --> 00:26:02,319 el bucle está todavía indefinido 604 00:26:02,319 --> 00:26:03,799 aparte de que hay falta 605 00:26:03,799 --> 00:26:05,779 completar esto, el bucle tiene que tener 606 00:26:05,779 --> 00:26:07,859 obligatoriamente una condición 607 00:26:07,859 --> 00:26:09,960 vale, pues entonces, claro 608 00:26:09,960 --> 00:26:12,200 la pregunta es, ¿cuándo salgo yo de aquí? 609 00:26:12,319 --> 00:26:13,240 ¿cuándo salgo yo de aquí? 610 00:26:13,720 --> 00:26:15,339 me lo tendrán que definir enunciado 611 00:26:15,339 --> 00:26:17,940 estoy pidiéndole números indefinidamente 612 00:26:17,940 --> 00:26:18,900 estoy pidiéndole números 613 00:26:18,900 --> 00:26:22,019 bueno, te dirán, mira, hasta que introduzcas uno negativo 614 00:26:22,019 --> 00:26:25,019 por ejemplo, yo ya he pedido 615 00:26:25,019 --> 00:26:27,000 ese dato añadido 616 00:26:27,000 --> 00:26:29,000 y digo, el programa 617 00:26:29,000 --> 00:26:32,640 finaliza 618 00:26:32,640 --> 00:26:35,839 cuando 619 00:26:35,839 --> 00:26:39,099 se introduzca 620 00:26:39,099 --> 00:26:43,900 número negativo 621 00:26:43,900 --> 00:26:47,200 vale, ya tengo los datos 622 00:26:47,200 --> 00:26:49,200 entonces, todo esto 623 00:26:49,200 --> 00:26:51,279 de aquí, introducir número 624 00:26:51,279 --> 00:26:53,339 leerlo y operar 625 00:26:53,339 --> 00:26:55,119 con él, introducir número, leerlo y operar 626 00:26:55,119 --> 00:26:56,680 con él, se tiene que 627 00:26:56,680 --> 00:26:59,220 ocurrir mientras el numerito 628 00:26:59,220 --> 00:27:00,319 leído sea positivo 629 00:27:00,319 --> 00:27:03,160 esa condición ya la tengo, mientras n 630 00:27:03,160 --> 00:27:04,400 sea mayor o igual que 0 631 00:27:04,400 --> 00:27:09,430 mientras n sea mayor o igual 632 00:27:09,430 --> 00:27:11,490 que 0, el numerito n 633 00:27:11,490 --> 00:27:13,609 esto se tendrá 634 00:27:13,609 --> 00:27:14,410 que realizar 635 00:27:14,410 --> 00:27:17,049 vamos a seguir 636 00:27:17,049 --> 00:27:19,470 haciendo el código hasta encontrar 637 00:27:19,470 --> 00:27:21,369 ya la solución final, bueno yo lo sigo 638 00:27:21,369 --> 00:27:21,990 perfilando 639 00:27:21,990 --> 00:27:25,130 ya he leído este numerito n 640 00:27:25,130 --> 00:27:26,890 ¿qué tengo que hacer con él? 641 00:27:26,890 --> 00:27:29,710 Me han dicho que si es positivo 642 00:27:29,710 --> 00:27:32,130 Si es par se incrementa mi cuenta 643 00:27:32,130 --> 00:27:32,990 Y si no, no 644 00:27:32,990 --> 00:27:35,569 Pues entonces ahora aquí ya puedo hacer 645 00:27:35,569 --> 00:27:36,769 Si en es par 646 00:27:36,769 --> 00:27:41,799 Entonces incremento mi cuenta 647 00:27:41,799 --> 00:27:45,440 Y si no, pues nada 648 00:27:45,440 --> 00:27:47,819 Si en es par 649 00:27:47,819 --> 00:27:48,519 Contador 650 00:27:48,519 --> 00:27:54,660 Bueno, esto ya empieza a tener un aspecto 651 00:27:54,660 --> 00:27:55,420 Ya más de programa 652 00:27:55,420 --> 00:27:58,299 Aunque le faltan cosas por definir 653 00:27:58,299 --> 00:27:59,480 Vale, ¿qué hemos hecho? 654 00:27:59,599 --> 00:28:01,299 Primero, identificar 655 00:28:01,299 --> 00:28:25,920 Vale, entonces, ¿qué pasos hemos seguido? 656 00:28:26,019 --> 00:28:28,660 Primero, identificar qué tenemos que hacer varias veces 657 00:28:28,660 --> 00:28:30,720 Pues mostrar el mensaje 658 00:28:30,720 --> 00:28:31,819 Leer numerito 659 00:28:31,819 --> 00:28:33,819 Y contarlo 660 00:28:33,819 --> 00:28:35,960 Al principio hemos dejado contado abierto 661 00:28:35,960 --> 00:28:38,160 Pero ahora ya hemos perfilado un poco más 662 00:28:38,160 --> 00:28:40,740 Y contar siempre lo vamos a hacer así 663 00:28:40,740 --> 00:28:41,980 Contar siempre lo vamos a hacer 664 00:28:41,980 --> 00:28:44,039 Si yo tengo que contar una variable 665 00:28:44,039 --> 00:28:45,299 Que empieza siendo cero 666 00:28:45,299 --> 00:28:58,099 Claro, por eso, lo estamos definiendo 667 00:28:58,099 --> 00:29:00,779 Claro, estamos aproximándonos a la solución final 668 00:29:00,779 --> 00:29:01,140 ¿Vale? 669 00:29:01,579 --> 00:29:04,380 Hemos identificado que esto es lo que tengo que hacer varias veces 670 00:29:04,380 --> 00:29:05,480 Vale 671 00:29:05,480 --> 00:29:08,279 Ahora ya nos hemos dado cuenta 672 00:29:08,279 --> 00:29:10,140 Y ya lo vamos a tener claro para siempre 673 00:29:10,140 --> 00:29:12,619 Que cuando tenemos que hacer una cuenta 674 00:29:12,619 --> 00:29:15,140 Eso siempre va a implicar 675 00:29:15,140 --> 00:29:17,640 una variable que empieza siendo 0 676 00:29:17,640 --> 00:29:19,200 y un bucle 677 00:29:19,200 --> 00:29:22,000 en el cual yo la voy incrementando 678 00:29:22,000 --> 00:29:22,799 si ocurre algo. 679 00:29:24,000 --> 00:29:25,460 Pues entonces ya automáticamente 680 00:29:25,460 --> 00:29:27,980 interiorizamos, asociamos 681 00:29:27,980 --> 00:29:29,720 que una operación natural en programación 682 00:29:29,720 --> 00:29:31,779 es contar. Y esa operación 683 00:29:31,779 --> 00:29:33,099 natural va a implicar 684 00:29:33,099 --> 00:29:35,720 declarar un contador, inicializarlo a 0 685 00:29:35,720 --> 00:29:37,759 y tendrá que haber un bucle 686 00:29:37,759 --> 00:29:39,640 dentro del cual 687 00:29:39,640 --> 00:29:41,660 se vaya incrementando la cuenta si 688 00:29:41,660 --> 00:29:43,660 procede. Esa es la estructura de 689 00:29:43,660 --> 00:29:45,839 contador. ¿Vale? Pues en este caso 690 00:29:45,839 --> 00:29:47,420 efectivamente tengo un bucle 691 00:29:47,420 --> 00:29:48,960 y la cuenta se va 692 00:29:48,960 --> 00:29:51,380 incrementando si procede 693 00:29:51,380 --> 00:29:53,440 y en este caso, ¿cuándo va a proceder? 694 00:29:53,500 --> 00:29:55,400 Cuando el número sea par. ¿Vale? Pues ya tengo 695 00:29:55,400 --> 00:29:57,740 bastante hecho. Aquí efectivamente 696 00:29:57,740 --> 00:29:59,119 me salen errores de compilación. 697 00:29:59,980 --> 00:30:01,660 Claro, ya al verlo 698 00:30:01,660 --> 00:30:03,420 pues ya es que nos hacía daño a la vista. 699 00:30:03,680 --> 00:30:05,539 ¡Ojo! Hemos declarado N dentro 700 00:30:05,539 --> 00:30:06,319 de este bloque. 701 00:30:07,700 --> 00:30:09,460 Claro, ya hemos dicho, dijimos 702 00:30:09,460 --> 00:30:10,740 en su momento cuando el IF. 703 00:30:11,400 --> 00:30:13,240 Cuidado cuando yo abro un bloque 704 00:30:13,240 --> 00:30:14,900 que es un código entre llaves 705 00:30:14,900 --> 00:30:17,640 cuando abro un bloque que es un código entre llaves 706 00:30:17,640 --> 00:30:19,299 todas las variables 707 00:30:19,299 --> 00:30:20,700 que se declaren dentro 708 00:30:20,700 --> 00:30:23,039 solamente son visibles 709 00:30:23,039 --> 00:30:24,819 y se pueden usar ahí dentro 710 00:30:24,819 --> 00:30:26,759 cuando el bucle termina han desaparecido 711 00:30:26,759 --> 00:30:28,779 entonces aquí 712 00:30:28,779 --> 00:30:30,480 estoy dentro del bloque 713 00:30:30,480 --> 00:30:32,539 estoy fuera, perdón, del bloque 714 00:30:32,539 --> 00:30:35,259 estoy fuera, entonces el compilador me dice 715 00:30:35,259 --> 00:30:36,039 ¿y en quién es? 716 00:30:36,900 --> 00:30:39,240 claro, es que lo tengo que declarar fuera de este bloque 717 00:30:39,240 --> 00:30:40,720 para poder usarla aquí 718 00:30:40,720 --> 00:30:44,829 vale, pues la tengo que declarar aquí 719 00:30:44,829 --> 00:30:46,890 con lo cual aquí ya no la declaro 720 00:30:46,890 --> 00:30:48,490 solo la leo 721 00:30:48,490 --> 00:30:50,950 solo la leo 722 00:30:50,950 --> 00:30:53,170 vale, aun así 723 00:30:53,170 --> 00:30:56,089 aun así 724 00:30:56,089 --> 00:30:58,390 el compilador sigue dándonos un error 725 00:30:58,390 --> 00:31:01,630 ¿qué nos va a estar diciendo? 726 00:31:01,809 --> 00:31:04,410 nos va a decir, ojo, la primera vez que entras 727 00:31:04,410 --> 00:31:06,609 n no tiene 728 00:31:06,609 --> 00:31:07,789 ningún valor todavía 729 00:31:07,789 --> 00:31:10,289 la primera vez que entras n está sin definir 730 00:31:10,289 --> 00:31:12,750 con lo cual la primera vez yo no puedo evaluar 731 00:31:12,750 --> 00:31:13,470 esta condición 732 00:31:13,470 --> 00:31:17,190 ¿Cómo voy a entrar aquí si n todavía está por definir? 733 00:31:17,210 --> 00:31:18,210 Eso es lo que nos está diciendo 734 00:31:18,210 --> 00:31:20,369 Cuidado que n está sin inicializar 735 00:31:20,369 --> 00:31:21,609 No puedo entrar 736 00:31:21,609 --> 00:31:24,089 Bueno, démosle cualquier variable 737 00:31:24,089 --> 00:31:26,509 Que haga que esta condición 738 00:31:26,509 --> 00:31:27,869 Sea cierta 739 00:31:27,869 --> 00:31:30,589 ¿Vale? Y entonces ya podamos entrar 740 00:31:30,589 --> 00:31:34,819 ¿Vale? Pues ya tenemos 741 00:31:34,819 --> 00:31:36,680 Nuestro programa bastante terminado 742 00:31:36,680 --> 00:31:38,980 Y ahora le decimos 743 00:31:38,980 --> 00:31:44,480 Los números pares 744 00:31:44,480 --> 00:31:47,960 Han sido 745 00:31:47,960 --> 00:31:54,200 Y mostramos 746 00:31:54,200 --> 00:31:55,440 El resultado de contador 747 00:31:55,440 --> 00:31:59,369 Bueno, pues este programa sin un bucle 748 00:31:59,369 --> 00:32:00,289 Habría sido imposible 749 00:32:00,289 --> 00:32:03,049 Porque esto lo teníamos que hacer varias veces 750 00:32:03,049 --> 00:32:05,569 Y no vale 751 00:32:05,569 --> 00:32:07,170 Copiar y pegar 752 00:32:07,170 --> 00:32:09,589 Uno debajo del otro porque no sabemos cuántas 753 00:32:09,589 --> 00:32:11,549 Depende de cuándo 754 00:32:11,549 --> 00:32:13,450 Tarde en llegar el número 0 755 00:32:13,450 --> 00:32:14,950 Depende de cuánto tarde 756 00:32:14,950 --> 00:32:17,130 El negativo, perdón, depende de cuánto tarde 757 00:32:17,130 --> 00:32:17,829 Llega el negativo 758 00:32:17,829 --> 00:32:25,009 Porque si no está inicializada 759 00:32:25,009 --> 00:32:27,470 La máquina virtual llega por aquí 760 00:32:27,470 --> 00:32:28,789 Y te dice 761 00:32:28,789 --> 00:32:31,029 Uy, para la primera evaluación no tengo nada 762 00:32:31,029 --> 00:32:33,009 Entonces le das un primer valor para que entre 763 00:32:33,009 --> 00:32:34,609 O puedes leer el primero fuera también 764 00:32:34,609 --> 00:32:37,029 O también puedes leer el primero fuera 765 00:32:37,029 --> 00:32:39,349 Claro 766 00:32:39,349 --> 00:32:41,410 Podemos leer el primer valor 767 00:32:41,410 --> 00:32:42,670 Fuera también, si queremos 768 00:32:42,670 --> 00:32:47,630 A ver 769 00:32:47,630 --> 00:32:53,369 Ahora el tema ya 770 00:32:53,369 --> 00:32:54,970 Es que las dudas 771 00:32:54,970 --> 00:32:56,950 matemáticas, pues uno se tiene que ir 772 00:32:56,950 --> 00:32:58,369 al que le ha planteado el ejercicio y decirle 773 00:32:58,369 --> 00:33:01,390 oye, ¿tú qué estás considerando? ¿Cero par o impar? 774 00:33:01,869 --> 00:33:03,329 Cero, yo creo 775 00:33:03,329 --> 00:33:05,349 que no es ni par ni impar 776 00:33:05,349 --> 00:33:07,190 al menos en la 777 00:33:07,190 --> 00:33:08,910 matemática axiomática. 778 00:33:08,950 --> 00:33:10,609 ¿Y el porcentaje 2 de 0 779 00:33:10,609 --> 00:33:12,650 es igual a 0? 780 00:33:13,910 --> 00:33:15,250 Ya, sí, pero 781 00:33:15,250 --> 00:33:17,430 que matemáticamente las cosas no se definen 782 00:33:17,430 --> 00:33:18,829 así, como el resultado de operaciones, 783 00:33:19,190 --> 00:33:20,950 porque estaría siendo del final al principio. 784 00:33:21,369 --> 00:33:23,349 Las operaciones se definen en función de axiomas 785 00:33:23,349 --> 00:33:25,109 Y hay un axioma 786 00:33:25,109 --> 00:33:27,250 Sobre el que se sustenta todo, varios 787 00:33:27,250 --> 00:33:29,769 Y creo que para que encaje 788 00:33:29,769 --> 00:33:30,950 Todo el edificio del álgebra 789 00:33:30,950 --> 00:33:33,430 El cero no es ni par ni impar 790 00:33:33,430 --> 00:33:35,750 ¿Vale? Pero claro, esto ya son cuestiones 791 00:33:35,750 --> 00:33:36,750 Que uno aclara con el edificio 792 00:33:36,750 --> 00:33:38,150 Oye, ¿quieres contarlo o no quieres contarlo? 793 00:33:38,569 --> 00:33:41,190 Porque si no lo quieres contar, pues lo sacas de aquí 794 00:33:41,190 --> 00:33:43,630 Si es igual a cero y n distinto de cero 795 00:33:43,630 --> 00:33:44,670 Lo pones en la condición o no 796 00:33:44,670 --> 00:33:46,630 Pero ya sería una cuestión de cambiar la condición 797 00:33:46,630 --> 00:33:48,630 ¿Vale? Nosotros ahora mismo estamos 798 00:33:48,630 --> 00:33:52,089 Asumimos que el cero nos vale como par 799 00:33:52,089 --> 00:33:53,490 pero claro, pero si lo haremos 800 00:33:53,490 --> 00:33:55,589 ya te suma uno aunque no pongas nada 801 00:33:55,589 --> 00:33:58,049 pero como te lo lees fuera al cero, como la inicialista es al cero 802 00:33:58,049 --> 00:33:59,950 ya entra dentro y te está sumando uno 803 00:33:59,950 --> 00:34:02,529 sí, bueno, que podríamos efectivamente 804 00:34:02,529 --> 00:34:06,289 sí, pero luego el contador 805 00:34:06,289 --> 00:34:07,630 no cuenta, no cuenta 806 00:34:07,630 --> 00:34:09,650 lo estoy haciendo, lo estoy ejecutando 807 00:34:09,650 --> 00:34:10,650 no cuenta 808 00:34:10,650 --> 00:34:13,190 a ver, el primer 809 00:34:13,190 --> 00:34:15,929 solo te contarían los ceros que tú has metido 810 00:34:15,929 --> 00:34:16,650 el primero no 811 00:34:16,650 --> 00:34:19,570 o sea, este cero no, porque este no está contado 812 00:34:19,570 --> 00:34:22,610 Este no lo cuenta porque solo incrementas el contador 813 00:34:22,610 --> 00:34:23,929 Después de haberlo introducido 814 00:34:23,929 --> 00:34:28,929 Claro, solo se incrementa después de haberlo introducido 815 00:34:28,929 --> 00:34:30,829 Este está ignorado para la cuenta 816 00:34:30,829 --> 00:34:33,809 Este solamente es para meter el número 817 00:34:33,809 --> 00:34:38,110 Lo que sí que está ocurriendo es que el negativo del final 818 00:34:38,110 --> 00:34:40,889 Si lo cuenta, porque tú metes el negativo 819 00:34:40,889 --> 00:34:42,750 Ese lo mete en la cuenta 820 00:34:42,750 --> 00:34:45,650 Y luego ya se da cuenta después de que tiene que salir 821 00:34:45,650 --> 00:34:48,909 De nuevo son detalles que habría que hablar con el que lo ha planteado 822 00:34:48,909 --> 00:34:51,130 y decirle, concrétame 823 00:34:51,130 --> 00:34:53,030 bien estos casos extremos como quieres 824 00:34:53,030 --> 00:34:55,250 que funcione, pero ahora mismo 825 00:34:55,250 --> 00:34:57,050 no nos vamos a perder con eso 826 00:34:57,050 --> 00:34:59,090 entonces, lo único que queremos decir 827 00:34:59,090 --> 00:35:00,849 es, en este programa 828 00:35:00,849 --> 00:35:02,730 hemos identificado, una vez que lo hemos analizado 829 00:35:02,730 --> 00:35:04,949 lo hemos visto, que hay algo que tiene que repetir varias veces 830 00:35:04,949 --> 00:35:06,670 pues ese algo 831 00:35:06,670 --> 00:35:08,650 dentro del bucle, vale 832 00:35:08,650 --> 00:35:10,250 se va a repetir varias veces 833 00:35:10,250 --> 00:35:13,110 pedir número, leerlo 834 00:35:13,110 --> 00:35:15,329 y si ocurre una condición 835 00:35:15,329 --> 00:35:16,989 incrementar la cuenta 836 00:35:16,989 --> 00:35:18,570 todo esto varias veces 837 00:35:18,570 --> 00:35:19,929 pues a un while, no hay otro 838 00:35:19,929 --> 00:35:22,829 y ahora hay que decir, el while no se puede 839 00:35:22,829 --> 00:35:24,630 quedar indefinido, hay que decir 840 00:35:24,630 --> 00:35:27,010 vale, pero esto hasta cuándo, hasta cuándo 841 00:35:27,010 --> 00:35:29,269 pues ahí de nuevo te lo habrán tenido que indicar 842 00:35:29,269 --> 00:35:30,750 oye, eso mientras no 843 00:35:30,750 --> 00:35:32,730 metas un negativo, en cuanto metas un negativo 844 00:35:32,730 --> 00:35:34,269 ya no tiene que seguir el programa 845 00:35:34,269 --> 00:35:36,750 pues eso ya te permite definir la 846 00:35:36,750 --> 00:35:38,789 condición, ¿vale? 847 00:35:39,849 --> 00:35:40,590 bueno, pues 848 00:35:40,590 --> 00:35:42,590 este es un ejemplo que no podríamos 849 00:35:42,590 --> 00:35:44,949 haber hecho sin bucles, claro, no nos queda más remedio 850 00:35:44,949 --> 00:35:46,650 entonces ahora ya si ejecutamos esto con la 851 00:35:46,650 --> 00:35:48,530 salvedad de que el negativo 852 00:35:48,530 --> 00:35:50,349 lo va a tener en cuenta en la cuenta 853 00:35:50,349 --> 00:35:52,610 que podríamos quitarlo para que no 854 00:35:52,610 --> 00:35:54,510 lo tenga en cuenta, pues simplemente 855 00:35:54,510 --> 00:35:56,769 así, claro ponemos 856 00:35:56,769 --> 00:35:57,949 aquí si n es 857 00:35:57,949 --> 00:35:59,889 mayor o igual que 0 858 00:35:59,889 --> 00:36:02,809 y siendo n mayor o igual que 0 859 00:36:02,809 --> 00:36:04,530 es par, si no quisiéramos contar el negativo 860 00:36:04,530 --> 00:36:06,510 pero eso ya son detalles que tendríamos que hablar con 861 00:36:06,510 --> 00:36:10,699 y si no quisiéramos que contara 862 00:36:10,699 --> 00:36:11,940 los ceros como pares 863 00:36:11,940 --> 00:36:14,320 lo ponemos así, depende de lo que queramos 864 00:36:14,320 --> 00:36:16,679 si n es mayor que 0 y es 865 00:36:16,679 --> 00:36:18,539 par, eso ya depende de lo que nos haya dicho 866 00:36:18,539 --> 00:36:20,179 el que nos planteó el enunciado 867 00:36:20,179 --> 00:36:22,480 así contaría 868 00:36:22,480 --> 00:36:24,519 solamente como pares los positivos 869 00:36:24,519 --> 00:36:26,159 diferentes de cero 870 00:36:26,159 --> 00:36:27,719 bueno, cero es que no es positivo 871 00:36:27,719 --> 00:36:33,489 vale, entonces 872 00:36:33,489 --> 00:36:36,489 si ejecutamos esto, pues claro, los cuenta 873 00:36:36,489 --> 00:36:39,070 el 8, el 3, el 4 874 00:36:39,070 --> 00:36:41,010 el 7 y el menos 2 875 00:36:41,010 --> 00:36:42,670 pues he metido 876 00:36:42,670 --> 00:36:43,630 dos 877 00:36:43,630 --> 00:36:47,030 dos pares 878 00:36:47,030 --> 00:36:53,599 vale 879 00:36:53,599 --> 00:36:58,519 Vale, vamos a hacer otro anunciado 880 00:36:58,519 --> 00:36:59,719 A lo mejor más 881 00:36:59,719 --> 00:37:00,860 A ver 882 00:37:00,860 --> 00:37:13,300 ¿Perdón? 883 00:37:15,880 --> 00:37:16,659 ¿Cómo que no? 884 00:37:16,780 --> 00:37:17,900 ¿En cuanto metas un negativo? 885 00:37:18,019 --> 00:37:18,800 Si a mí me ha salido 886 00:37:18,800 --> 00:37:22,239 ¿Por qué no va a salir? 887 00:37:22,380 --> 00:37:23,480 Meto 76 888 00:37:23,480 --> 00:37:25,079 Menos 4 889 00:37:25,079 --> 00:37:26,059 Ya está, ya ha salido 890 00:37:26,059 --> 00:37:28,119 ¿Qué? 891 00:37:30,699 --> 00:37:32,820 una condición de final 892 00:37:32,820 --> 00:37:40,300 a ver, pero ¿cómo que meta 4? 893 00:37:40,480 --> 00:37:41,980 o sea, a ver si el programa te dice 894 00:37:41,980 --> 00:37:43,320 y si tú quieres meter 700 895 00:37:43,320 --> 00:37:49,179 a ver, que depende de lo que te pida el ejercicio 896 00:37:49,179 --> 00:37:51,340 este es, cuenta los pares 897 00:37:51,340 --> 00:37:52,960 hasta que te introduzca yo un negativo 898 00:37:52,960 --> 00:37:55,460 en una ejecución puedes haber metido 2, en otra puedes haber metido 1.500 899 00:37:55,460 --> 00:37:57,539 no lo limitas 900 00:37:57,539 --> 00:37:58,039 de partida 901 00:37:58,039 --> 00:38:02,059 No, con el 0 no 902 00:38:02,059 --> 00:38:04,199 Porque n mayor o igual que 0 903 00:38:04,199 --> 00:38:05,039 Es la condición 904 00:38:05,039 --> 00:38:06,519 Si yo lo pongo así, sí 905 00:38:06,519 --> 00:38:08,639 Con el 0 lo pararía también 906 00:38:08,639 --> 00:38:11,480 Entonces, claro 907 00:38:11,480 --> 00:38:14,139 Otra versión, lo paramos así 908 00:38:14,139 --> 00:38:17,599 Entonces este te pararía con el 0 909 00:38:17,599 --> 00:38:19,340 Lo que pasa es que 910 00:38:19,340 --> 00:38:21,300 Cuando tú has metido el 0, como aquí 911 00:38:21,300 --> 00:38:23,860 Entra, aquí lo tengo que mantener 912 00:38:23,860 --> 00:38:25,559 Para, si no quiero contarlo 913 00:38:25,559 --> 00:38:27,099 Si no quiero contarlo, el 0 914 00:38:27,099 --> 00:38:34,090 claro, pero 915 00:38:34,090 --> 00:38:37,110 a la condición no llega hasta después de hacer esto 916 00:38:37,110 --> 00:38:39,150 me refiero, si yo el 0 no quiero que lo cuente 917 00:38:39,150 --> 00:38:40,050 este no lo puedo quitar 918 00:38:40,050 --> 00:38:41,690 porque me lo va a contar también 919 00:38:41,690 --> 00:38:43,550 o el negativo 920 00:38:43,550 --> 00:38:46,889 vale, es un ejemplo, este programa 921 00:38:46,889 --> 00:38:48,829 una vez se ejecutará 3 veces, otra vez 922 00:38:48,829 --> 00:38:50,809 se ejecutará 27, depende, lo que tarde esto 923 00:38:50,809 --> 00:38:51,969 es meter el negativo, depende 924 00:38:51,969 --> 00:38:54,570 y es así como tiene que funcionar, claro 925 00:38:54,570 --> 00:38:56,849 que no limites tú de partida las veces que 926 00:38:56,849 --> 00:38:58,429 vale, pues a ver 927 00:38:58,429 --> 00:39:00,829 otro ejemplito 928 00:39:00,829 --> 00:39:09,050 vale 929 00:39:09,050 --> 00:39:15,969 venga, ahora ya sí vamos a poner 930 00:39:15,969 --> 00:39:17,489 string y char que os gustan tanto 931 00:39:17,489 --> 00:39:21,550 venga, vamos a 932 00:39:21,550 --> 00:39:29,190 a ver, bueno, venga 933 00:39:29,190 --> 00:39:31,750 espera, vamos a 934 00:39:31,750 --> 00:39:37,119 vale 935 00:39:37,119 --> 00:39:48,250 venga, vamos a hacer uno 936 00:39:48,250 --> 00:39:51,690 Enunciado 937 00:39:51,690 --> 00:39:54,090 No tiene este al final 938 00:39:54,090 --> 00:39:56,889 Enunciado, venga 939 00:39:56,889 --> 00:40:02,050 Programa que solicite 940 00:40:02,050 --> 00:40:06,559 Dos números enteros 941 00:40:06,559 --> 00:40:13,889 N1 y N2 942 00:40:13,889 --> 00:40:15,050 ¿Vale? 943 00:40:17,090 --> 00:40:18,489 De nuevo vamos a hacer una cuenta 944 00:40:18,489 --> 00:40:21,670 El programa tiene que mostrar 945 00:40:21,670 --> 00:40:26,059 Cuantos 946 00:40:26,059 --> 00:40:42,000 Números entre 1 y N1 son múltiplos de N2 947 00:40:42,000 --> 00:40:55,489 Venga, datos de entrada, dos números 948 00:40:55,489 --> 00:41:00,829 Entonces, por ejemplo, si N1 fuera 100 949 00:41:00,829 --> 00:41:04,769 El programa tiene que mostrar cuántos números entre 1 y 100 950 00:41:04,769 --> 00:41:07,170 Son múltiplos del segundo que he metido 951 00:41:07,170 --> 00:41:10,269 Si meto 100 y 3 952 00:41:10,269 --> 00:41:12,769 Tengo que mostrar cuantos múltiplos 953 00:41:12,769 --> 00:41:14,409 Entre 1 y n1 954 00:41:14,409 --> 00:41:15,670 Son múltiplos de 3 955 00:41:15,670 --> 00:41:17,889 Entre 1 y 100 son múltiplos de 3 956 00:41:17,889 --> 00:41:23,690 ¿Cuánto sabe contar? 957 00:41:26,090 --> 00:41:27,230 ¿Cuánto sabe contar? 958 00:41:27,369 --> 00:41:29,409 Pues hasta que se le acabe la pila de memoria 959 00:41:29,409 --> 00:41:30,369 Y te haga un 960 00:41:30,369 --> 00:41:31,769 Un 961 00:41:31,769 --> 00:41:34,829 Stack overflow error 962 00:41:34,829 --> 00:41:36,909 ¿Te da mucho? 963 00:41:38,090 --> 00:41:38,650 No 964 00:41:38,650 --> 00:41:41,809 Bueno, el stackoverflow error te lo va a dar 965 00:41:41,809 --> 00:41:43,969 Si lo haces recursivamente 966 00:41:43,969 --> 00:41:46,550 No, pero un bucle infinito nunca jamás va a parar 967 00:41:46,550 --> 00:41:47,070 Es decir 968 00:41:47,070 --> 00:41:49,389 Tú puedes hacer esto si te da la gana 969 00:41:49,389 --> 00:41:50,909 Si lo que ha hecho ha sido el contador más más 970 00:41:50,909 --> 00:41:52,349 Y la condición del contador sea más cero 971 00:41:52,349 --> 00:41:54,750 No, lo que va a pasar es que te va a desbordar la variable 972 00:41:54,750 --> 00:41:56,409 Imagínate que yo hago esto 973 00:41:56,409 --> 00:41:57,969 A ver 974 00:41:57,969 --> 00:41:59,889 Int 975 00:41:59,889 --> 00:42:02,469 Cont igual a cero 976 00:42:02,469 --> 00:42:03,289 Y ahora hago esto 977 00:42:03,289 --> 00:42:06,989 Este programa 978 00:42:06,989 --> 00:42:08,550 Nunca jamás va a petar 979 00:42:08,550 --> 00:42:12,050 Cuando cont salga de lo que caiga en un int 980 00:42:12,050 --> 00:42:14,030 Como desborda 981 00:42:14,030 --> 00:42:14,750 Por fuera 982 00:42:14,750 --> 00:42:16,269 Pues el numerito 983 00:42:16,269 --> 00:42:18,289 Vuelve a reiniciarse 984 00:42:18,289 --> 00:42:20,349 Ya te empiezan a salir cosas sin sentido 985 00:42:20,349 --> 00:42:22,849 Pero este programa nunca jamás va a parar 986 00:42:22,849 --> 00:42:24,510 Pero no te va a romper el ordenador 987 00:42:24,510 --> 00:42:25,670 No te va a romper la memoria 988 00:42:25,670 --> 00:42:28,469 Esto nunca 989 00:42:28,469 --> 00:42:29,750 Ahí lo tenemos, ya está 990 00:42:29,750 --> 00:42:32,030 No va a parar nunca jamás 991 00:42:32,030 --> 00:42:35,070 Aquí me puedo estar hasta el infinito 992 00:42:35,070 --> 00:42:36,909 Voy a tener que parar con esta 993 00:42:36,909 --> 00:42:38,489 si 994 00:42:38,489 --> 00:42:41,250 claro, si le haces 995 00:42:41,250 --> 00:42:44,690 que además me lo muestre 996 00:42:44,690 --> 00:42:47,869 si fuéramos 997 00:42:47,869 --> 00:42:50,130 tuviéramos la vista tan hábil 998 00:42:50,130 --> 00:42:51,329 de 999 00:42:51,329 --> 00:42:52,889 claro, claro, si es lo que ha hecho 1000 00:42:52,889 --> 00:42:55,250 muy bien, muy rápido 1001 00:42:55,250 --> 00:42:56,949 claro, entonces vas a ver un montón 1002 00:42:56,949 --> 00:42:58,809 y si fueras capaz de verlo 1003 00:42:58,809 --> 00:43:00,670 llegarías a ver un momento que cuando ha llegado 1004 00:43:00,670 --> 00:43:02,010 al número int más alto 1005 00:43:02,010 --> 00:43:03,809 pues ya empiezas a irte cosas sin sentido 1006 00:43:03,809 --> 00:43:05,909 pero porque está cortando, nada más 1007 00:43:05,909 --> 00:43:09,699 Esto nunca te va 1008 00:43:09,699 --> 00:43:13,760 Vale, contar múltiplos 1009 00:43:13,760 --> 00:43:15,460 Bueno, pues leer los dos numeritos 1010 00:43:15,460 --> 00:43:17,659 Eso lo sabemos hacer sin problemas 1011 00:43:17,659 --> 00:43:32,389 Ni mensaje ni nada 1012 00:43:32,389 --> 00:43:34,170 Lo leemos así directamente para 1013 00:43:34,170 --> 00:43:36,889 Next int 1014 00:43:36,889 --> 00:43:38,190 Y n2 1015 00:43:38,190 --> 00:43:52,360 Bueno, pues aquí ya empiezan nuestros problemas 1016 00:43:52,360 --> 00:43:53,719 Que es, a ver, ¿cómo hacemos esto? 1017 00:43:54,940 --> 00:43:56,099 Tenemos que contar 1018 00:43:56,099 --> 00:43:57,719 Cuántos números 1019 00:43:57,719 --> 00:43:59,980 Entre 1 y n1 cumplen 1020 00:43:59,980 --> 00:44:02,239 una condición. La condición 1021 00:44:02,239 --> 00:44:03,599 de ser múltiplos de n2. 1022 00:44:04,559 --> 00:44:06,000 Bueno, algo hemos 1023 00:44:06,000 --> 00:44:07,500 llegado y es a que tenemos que contar. 1024 00:44:08,280 --> 00:44:09,960 Contar cuántos de algo, 1025 00:44:10,139 --> 00:44:12,239 en este caso, cuántos números cumplen la condición. 1026 00:44:12,400 --> 00:44:13,619 Algo hemos llegado, que tenemos que contar. 1027 00:44:14,340 --> 00:44:15,960 Pues un contador vamos a necesitar 1028 00:44:15,960 --> 00:44:17,980 sí o sí. Pues no pasa nada, 1029 00:44:18,039 --> 00:44:19,239 nos ponemos ahí un contador 1030 00:44:19,239 --> 00:44:21,480 que empieza siendo cero. 1031 00:44:22,880 --> 00:44:24,199 Ahora, si tenemos que contar, 1032 00:44:25,039 --> 00:44:26,000 va a tener que haber algún 1033 00:44:26,000 --> 00:44:27,039 bucle en algún sitio 1034 00:44:27,039 --> 00:44:30,980 que si se cumple una condición 1035 00:44:30,980 --> 00:44:32,760 inclemente mi contador. 1036 00:44:34,099 --> 00:44:36,199 Algo así va a tener que haber en algún sitio. 1037 00:44:41,079 --> 00:44:43,579 Algo así va a tener que ser mi programa. 1038 00:44:48,260 --> 00:44:48,980 Algo así, ¿no? 1039 00:44:49,420 --> 00:44:51,820 En un bucle mi contador será incrementando 1040 00:44:51,820 --> 00:44:52,719 si ocurre algo. 1041 00:44:53,000 --> 00:44:54,619 Y así hasta que este bucle termine. 1042 00:44:55,119 --> 00:44:55,599 Algo así. 1043 00:44:56,820 --> 00:44:58,340 Vale, pero esto todavía se queda muy corto. 1044 00:44:58,340 --> 00:44:59,840 Ahora vamos a seguir pensando. 1045 00:44:59,840 --> 00:45:03,179 vale, ¿qué tengo yo que recorrer? 1046 00:45:03,739 --> 00:45:04,940 ¿qué tengo yo que recorrer? 1047 00:45:05,019 --> 00:45:06,300 los números entre n1 y n2 1048 00:45:06,300 --> 00:45:08,400 claro, para hacer las comprobaciones 1049 00:45:08,400 --> 00:45:10,599 bueno, pues tenemos que recorrer 1050 00:45:10,599 --> 00:45:12,039 los números entre n1 1051 00:45:12,039 --> 00:45:13,840 entre 1 y n1 1052 00:45:13,840 --> 00:45:16,599 es decir, tenemos que recorrer 1053 00:45:16,599 --> 00:45:18,539 1, luego 2, luego 3 1054 00:45:18,539 --> 00:45:19,780 y con cada uno de ellos 1055 00:45:19,780 --> 00:45:22,059 ver si es múltiplo de n2 1056 00:45:22,059 --> 00:45:24,679 con lo cual, si yo ese numerito 1057 00:45:24,679 --> 00:45:26,440 ese numerito que empieza siendo 1058 00:45:26,440 --> 00:45:28,019 1, luego es 2, luego es 3 1059 00:45:28,019 --> 00:45:30,099 lo tuviera guardado en algún sitio 1060 00:45:30,099 --> 00:45:31,900 la condición esta ya me sería 1061 00:45:31,900 --> 00:45:33,519 muy cómoda, ¿vale? 1062 00:45:34,199 --> 00:45:35,420 imaginamos que se llama num 1063 00:45:35,420 --> 00:45:37,940 pues porque yo pondría 1064 00:45:37,940 --> 00:45:39,840 el resto de 1065 00:45:39,840 --> 00:45:41,280 dir num entre n2 1066 00:45:41,280 --> 00:45:43,920 es igual a 0, pues le cuento 1067 00:45:43,920 --> 00:45:45,699 entonces lo que me falta es 1068 00:45:45,699 --> 00:45:47,239 que este número 1069 00:45:47,239 --> 00:45:49,300 en cada iteración del bucle 1070 00:45:49,300 --> 00:45:51,260 la primera vez tiene que ser 1 1071 00:45:51,260 --> 00:45:53,559 pero la segunda tiene que ser 2 1072 00:45:53,559 --> 00:45:55,400 y la tercera tiene que ser 3 1073 00:45:55,400 --> 00:45:57,340 y la cuarta tiene que ser 4 1074 00:45:57,340 --> 00:46:00,760 vale, pues entonces ya puedo decir 1075 00:46:00,760 --> 00:46:02,280 ah, vale, pues me voy a hacer una variable 1076 00:46:02,280 --> 00:46:04,000 que empiece siendo 1 1077 00:46:04,000 --> 00:46:06,719 y yo en cada 1078 00:46:06,719 --> 00:46:08,260 iteración del bucle 1079 00:46:08,260 --> 00:46:10,039 la vaya incrementando 1080 00:46:10,039 --> 00:46:12,840 vale, vale, venga 1081 00:46:12,840 --> 00:46:14,639 pues entonces, esta variable 1082 00:46:14,639 --> 00:46:15,719 que empiece siendo 1 1083 00:46:15,719 --> 00:46:17,400 y ahora 1084 00:46:17,400 --> 00:46:20,139 me hago esto de aquí 1085 00:46:20,139 --> 00:46:22,760 y ya me estoy aproximando cada vez más 1086 00:46:22,760 --> 00:46:25,000 entonces, ¿qué se hace un montón de veces? 1087 00:46:25,739 --> 00:46:26,260 primero 1088 00:46:26,260 --> 00:46:27,699 para num igual a 1 1089 00:46:27,699 --> 00:46:30,179 si es múltiplo de n2 lo cuento 1090 00:46:30,179 --> 00:46:32,440 y lo dejo incrementado 1091 00:46:32,440 --> 00:46:33,820 para la siguiente vuelta 1092 00:46:33,820 --> 00:46:35,699 volvemos a la siguiente vuelta 1093 00:46:35,699 --> 00:46:37,260 si ha quedado incrementado, ahora será 2 1094 00:46:37,260 --> 00:46:39,659 ¿2 es múltiplo de n2? 1095 00:46:39,860 --> 00:46:40,940 sí, lo cuento 1096 00:46:40,940 --> 00:46:43,420 y lo dejo incrementado 1097 00:46:43,420 --> 00:46:44,599 para la siguiente cuenta 1098 00:46:44,599 --> 00:46:45,820 entonces para hacer esto 1099 00:46:45,820 --> 00:46:49,380 me he tenido por tanto que inventar una variable nueva 1100 00:46:49,380 --> 00:46:50,659 una variable nueva 1101 00:46:50,659 --> 00:46:52,539 que representa mi recorrido 1102 00:46:52,539 --> 00:46:53,820 todo lo que tenemos que ir recorriendo 1103 00:46:53,820 --> 00:46:55,360 el 1, el 2, el 3, el 4 1104 00:46:55,360 --> 00:46:57,059 Entonces ya tenemos mucho hecho 1105 00:46:57,059 --> 00:46:59,360 Vale, ¿qué nos falta? 1106 00:46:59,539 --> 00:47:01,440 ¿Cuándo termino yo de hacer 1107 00:47:01,440 --> 00:47:02,619 Estas iteraciones? 1108 00:47:03,880 --> 00:47:05,219 Claro, me han dicho que compruebe 1109 00:47:05,219 --> 00:47:07,099 Cuántos números desde 1 1110 00:47:07,099 --> 00:47:09,440 Hasta n1 1111 00:47:09,440 --> 00:47:11,619 ¿Cuántos entre 1 y n1? 1112 00:47:12,260 --> 00:47:13,699 Entonces tendré que parar esto 1113 00:47:13,699 --> 00:47:14,739 Cuando num 1114 00:47:14,739 --> 00:47:17,440 Ya me haya, yo he pasado 1115 00:47:17,440 --> 00:47:19,840 Y sea mayor que n1 1116 00:47:19,840 --> 00:47:21,079 Perdón 1117 00:47:21,079 --> 00:47:23,199 Mientras no me haya pasado, perdón 1118 00:47:23,199 --> 00:47:23,960 Que estoy viendo al revés 1119 00:47:23,960 --> 00:47:26,639 y ahora ya sé que lo he terminado 1120 00:47:26,639 --> 00:47:32,039 bueno, sí, porque 1121 00:47:32,039 --> 00:47:33,780 si dice entre 1 y n1 1122 00:47:33,780 --> 00:47:35,440 pues entonces este bucle 1123 00:47:35,440 --> 00:47:37,079 entrará cuando no me es igual a 1 1124 00:47:37,079 --> 00:47:39,860 mirará si es múltiplo de 0 1125 00:47:39,860 --> 00:47:41,179 de n2 y lo contará 1126 00:47:41,179 --> 00:47:42,639 y lo deja incrementado 1127 00:47:42,639 --> 00:47:44,360 para la siguiente 1128 00:47:44,360 --> 00:47:47,099 cuando ya me he pasado 1129 00:47:47,099 --> 00:47:49,059 y num ya no es menor o igual que n1 1130 00:47:49,059 --> 00:47:50,880 y ya me he saltado 1 1131 00:47:50,880 --> 00:47:52,179 ya no tengo que contar más 1132 00:47:52,179 --> 00:47:55,860 es decir, si n1 es 100 1133 00:47:55,860 --> 00:47:59,039 Num irá oscilando entre 1, 2, 3 1134 00:47:59,039 --> 00:48:01,340 Hasta 101 la última vez 1135 00:48:01,340 --> 00:48:03,199 Pero cuando ya es 101 ya no entro 1136 00:48:03,199 --> 00:48:06,320 Bueno, me faltaría aquí mostrar 1137 00:48:06,320 --> 00:48:11,239 La cuenta final, el resultado final 1138 00:48:11,239 --> 00:48:13,300 Vale, pues aquí hemos dado 1139 00:48:13,300 --> 00:48:15,320 Muchos pasos 1140 00:48:15,320 --> 00:48:16,260 Muchos saltos 1141 00:48:16,260 --> 00:48:18,500 Hasta llegar a la versión del programa 1142 00:48:18,500 --> 00:48:20,920 Hemos dado muchos saltos 1143 00:48:20,920 --> 00:48:22,579 ¿Vale? 1144 00:48:23,579 --> 00:48:25,219 El primer salto, el básico 1145 00:48:25,219 --> 00:48:27,460 leer los datos, vale, el segundo 1146 00:48:27,460 --> 00:48:29,400 salto mental que hemos 1147 00:48:29,400 --> 00:48:31,320 dado, tengo que 1148 00:48:31,320 --> 00:48:32,679 contar cosas, tengo que contar 1149 00:48:32,679 --> 00:48:35,460 vale, pues yo tengo que contar 1150 00:48:35,460 --> 00:48:37,239 un contador que me haga 1151 00:48:37,239 --> 00:48:39,199 la cuenta empezando a cero, y si 1152 00:48:39,199 --> 00:48:40,579 tengo que contar cosas 1153 00:48:40,579 --> 00:48:41,900 un bucle 1154 00:48:41,900 --> 00:48:45,280 va a tener que haber, un bucle 1155 00:48:45,280 --> 00:48:46,920 va a tener que haber en el que se haga la cuenta 1156 00:48:46,920 --> 00:48:49,280 un contador, una cuenta 1157 00:48:49,280 --> 00:48:51,219 siempre implica un bucle, una cuenta 1158 00:48:51,219 --> 00:48:52,219 siempre implica un bucle 1159 00:48:52,219 --> 00:48:55,579 en las sucesivas iteraciones 1160 00:48:55,579 --> 00:48:57,539 cada pasada del bucle es lo que se llama iteración 1161 00:48:57,539 --> 00:48:59,559 en las sucesivas iteraciones 1162 00:48:59,559 --> 00:49:01,239 se va incrementando, pero claro 1163 00:49:01,239 --> 00:49:03,380 esa cuenta me cuenta 1164 00:49:03,380 --> 00:49:05,000 si se cumplen cosas 1165 00:49:05,000 --> 00:49:07,079 pero esa cuenta normal es que voy a entrar en un if 1166 00:49:07,079 --> 00:49:08,840 claro, si se cumplen cosas 1167 00:49:08,840 --> 00:49:11,340 vale, pues yo ahora ya 1168 00:49:11,340 --> 00:49:13,280 los siguientes 1169 00:49:13,280 --> 00:49:15,239 pasos quedan, a partir de ahí ya son los más 1170 00:49:15,239 --> 00:49:17,380 críticos, que es, vale, muy bien 1171 00:49:17,380 --> 00:49:18,400 pero ¿cómo? 1172 00:49:19,159 --> 00:49:21,500 ¿cuál es el hecho que debo comprobar que se cuente 1173 00:49:21,500 --> 00:49:23,480 y como, dijimos, ah, vale 1174 00:49:23,480 --> 00:49:25,360 pues si yo tengo que comprobar los números 1175 00:49:25,360 --> 00:49:27,159 entre 1 y n1 1176 00:49:27,159 --> 00:49:28,639 lo que pasa con ellos 1177 00:49:28,639 --> 00:49:31,639 pues el salto más difícil aquí es decir, vale, pues una variable 1178 00:49:31,639 --> 00:49:33,460 adicional, una variable más 1179 00:49:33,460 --> 00:49:36,000 que vaya entre 1 y n1 1180 00:49:36,000 --> 00:49:37,360 empieza entre 1 1181 00:49:37,360 --> 00:49:38,420 y la voy incrementando 1182 00:49:38,420 --> 00:49:40,739 y en cada iteración 1183 00:49:40,739 --> 00:49:43,179 voy mirando si es múltiplo 1184 00:49:43,179 --> 00:49:46,380 y así 1185 00:49:46,380 --> 00:49:47,900 ¿vale? 1186 00:49:50,480 --> 00:49:51,579 bueno, porque esta 1187 00:49:51,579 --> 00:49:53,500 este es su primer valor 1188 00:49:53,500 --> 00:49:55,420 o sea, num está declarada afuera 1189 00:49:55,420 --> 00:49:59,429 está fuera del if 1190 00:49:59,429 --> 00:50:00,969 está fuera del if, no del while 1191 00:50:00,969 --> 00:50:04,289 este es el fin del if 1192 00:50:04,289 --> 00:50:06,869 es decir, num tú lo incrementas 1193 00:50:06,869 --> 00:50:09,050 siempre, es decir 1194 00:50:09,050 --> 00:50:10,949 num tiene que pasar por todos los valores 1195 00:50:10,949 --> 00:50:12,090 primero el 1 1196 00:50:12,090 --> 00:50:14,909 es múltiplo de esta, lo cuentas 1197 00:50:14,909 --> 00:50:16,110 y lo pasas al 2 1198 00:50:16,110 --> 00:50:18,489 pero tú lo incrementas siempre, da igual 1199 00:50:18,489 --> 00:50:20,750 que sea múltiplo o no sea múltiplo 1200 00:50:20,750 --> 00:50:22,730 num va pasando por todos 1201 00:50:22,730 --> 00:50:32,250 que pase por todos, claro 1202 00:50:32,250 --> 00:50:34,110 si el 3 ya ha salido, que pase por todos 1203 00:50:34,110 --> 00:50:35,849 por el 3 y por el 4 y por el 5 y por el 6 1204 00:50:35,849 --> 00:50:36,610 que pase por todos 1205 00:50:36,610 --> 00:50:43,250 y ya está 1206 00:50:43,250 --> 00:50:45,849 vale, entonces 1207 00:50:45,849 --> 00:50:48,409 bueno, iba a hacer 1208 00:50:48,409 --> 00:50:50,050 uno para que hicierais ahora vosotros 1209 00:50:50,050 --> 00:50:52,110 pero bueno, el próximo día ya 1210 00:50:52,110 --> 00:50:53,969 a través de un listado de ejercicios 1211 00:50:53,969 --> 00:50:54,849 y eso ya lo 1212 00:50:54,849 --> 00:50:57,809 vamos y vais practicando más 1213 00:50:57,809 --> 00:50:59,250 con esto, dime 1214 00:50:59,250 --> 00:51:04,320 si, a ver 1215 00:51:04,320 --> 00:51:06,559 ya directamente he partido de dos ejemplos 1216 00:51:06,559 --> 00:51:08,820 que no son sencillos, o sea son dos ejercicios 1217 00:51:08,820 --> 00:51:10,559 que no son sencillos, una forma 1218 00:51:10,559 --> 00:51:12,480 muy fácil de ver 1219 00:51:12,480 --> 00:51:14,159 al principio como funciona un bucle 1220 00:51:14,159 --> 00:51:16,079 pues sería esto 1221 00:51:16,079 --> 00:51:18,780 por ejemplo 1222 00:51:18,780 --> 00:51:19,519 ya nos vamos 1223 00:51:24,699 --> 00:51:26,219 Para que su primer valor sea 1. 1224 00:51:27,320 --> 00:51:29,420 Porque la primera vez empieza siendo 1. 1225 00:51:30,320 --> 00:51:33,079 Y tú cuentas a ver si el 1 es múltiplo de lo que toca. 1226 00:51:33,960 --> 00:51:34,820 Y lo incrementas. 1227 00:51:34,940 --> 00:51:38,860 Es decir, NUM tiene que oscilar entre 1 y N1. 1228 00:51:39,420 --> 00:51:41,079 Con lo cual, su primer valor es 1. 1229 00:51:41,659 --> 00:51:44,460 Lo vas incrementando, lo vas incrementando, lo vas incrementando. 1230 00:51:44,960 --> 00:51:46,639 Mientras sea menor o igual que N1. 1231 00:51:46,760 --> 00:51:48,800 Cuando ya se ha salido, sale. 1232 00:51:50,880 --> 00:51:52,099 Este es su primer valor. 1233 00:51:52,099 --> 00:51:54,699 porque el ejercicio te dice que muestres 1234 00:51:54,699 --> 00:51:56,139 cuántos entre 1 y n1 1235 00:51:56,139 --> 00:51:58,400 luego su primer valor es 1 1236 00:51:58,400 --> 00:52:01,280 ¿vale? un segundito y ya nos vamos 1237 00:52:01,280 --> 00:52:03,239 por ejemplo, una forma más fácil 1238 00:52:03,239 --> 00:52:05,280 que estos dos ejercicios 1239 00:52:05,280 --> 00:52:07,039 de haber visto finalmente un bucle 1240 00:52:07,039 --> 00:52:08,860 podría ser esta, a lo mejor 1241 00:52:08,860 --> 00:52:33,070 por ejemplo 1242 00:52:33,070 --> 00:52:36,030 una forma más sencilla de entender cómo funciona un bucle 1243 00:52:36,030 --> 00:52:40,190 Imaginaos que queremos mostrar todos los números entre 1 y 100. 1244 00:52:41,849 --> 00:52:43,989 Momento, que nos vamos en 3 minutos, pero vale. 1245 00:52:44,750 --> 00:52:48,230 Imaginaos que ahora lo que queremos es mostrar todos los números entre 1 y 100. 1246 00:52:48,989 --> 00:52:50,710 Lo podemos hacer sin bucles, claro. 1247 00:52:50,869 --> 00:52:55,570 Podemos hacer system.out.println 1, system.out.println 2 y así copiar hasta 100 líneas. 1248 00:52:56,349 --> 00:52:58,789 No tiene sentido que copiemos 100 system.out. 1249 00:52:59,349 --> 00:53:00,789 Pues, ¿cómo podríamos hacer esto? 1250 00:53:01,449 --> 00:53:03,969 Pues, de nuevo, una variable que empieza siendo 1. 1251 00:53:03,969 --> 00:53:05,530 y ahora 1252 00:53:05,530 --> 00:53:07,510 nos hacemos un bucle 1253 00:53:07,510 --> 00:53:09,050 mientras n sea 1254 00:53:09,050 --> 00:53:11,349 menor o igual que 100 1255 00:53:11,349 --> 00:53:23,389 ¿vale? por ejemplo 1256 00:53:23,389 --> 00:53:26,309 una forma más fácil de entender 1257 00:53:26,309 --> 00:53:26,889 el bucle 1258 00:53:26,889 --> 00:53:30,309 programa que muestra números entre 1 y 100 1259 00:53:30,309 --> 00:53:32,010 n empieza siendo 1 1260 00:53:32,010 --> 00:53:34,289 lo voy incrementando y en cada iteración del bucle 1261 00:53:34,289 --> 00:53:36,130 lo muestro, pues ya está, este programa me mostrará 1262 00:53:36,130 --> 00:53:36,829 desde 1 y 100 1263 00:53:36,829 --> 00:53:43,980 venga, pues vamos a parar aquí si queréis 1264 00:53:43,980 --> 00:53:46,480 y seguimos el jueves 1265 00:53:46,480 --> 00:53:47,480 jueves