Activa JavaScript para disfrutar de los vídeos de la Mediateca.
Clase 31-10-23 - 1 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Vale, pues nos quedamos con este antes de irnos.
00:00:00
Entonces, a ver, la pregunta de siempre.
00:00:05
¿Quién lo ha hecho completo sin copiarlo y sin de otro?
00:00:11
Levantadla más, que no veo.
00:00:18
Hablo del 11.
00:00:24
No, perdón, hablo de este, de este.
00:00:26
El 10.
00:00:30
De este 10 hablo.
00:00:34
Vale.
00:00:47
Bueno, y quien no lo ha hecho, ¿por qué no lo ha hecho?
00:00:50
¿Por qué no lo ha intentado?
00:00:55
No es para poner nota, es para saber.
00:00:57
¿Por qué no lo ha intentado quién?
00:00:59
¿Por qué no lo ha intentado uno?
00:01:04
¿Por qué lo ha intentado y no le ha salido?
00:01:07
¿Por qué lo ha intentado más de tres horas y no le ha salido?
00:01:11
Siendo sincero, ¿sí?
00:01:18
¿Tú lo has intentado más de tres horas y no le ha salido?
00:01:21
Bueno, a ver, vamos a ver.
00:01:27
Pues venga, este ejercicio.
00:01:33
Ejercicio 10.
00:01:40
A ver, primero se le ha enunciado y se intenta entender lo que dice.
00:01:48
Leer de forma repetida un número N significa, vamos a leer un montón de veces un número, cada vez uno diferente, claro.
00:01:58
Introduzca número, tal, introduzca número, tal, introduzca número, tal.
00:02:07
Ahí ya, según leemos eso, ya empezamos a visualizar mentalmente que nuestro programa va a tener un bucle
00:02:12
que va a estar ahí pidiendo número, leyéndolo, pidiendo número, leyéndolo.
00:02:19
Ya lo empezamos a visualizar.
00:02:23
Y luego nos dice, ¿y qué hacemos con cada número N?
00:02:26
Pues con cada número N tienes que hacer bla, bla, bla.
00:02:29
Vale, pues ya haremos ese bla, bla, bla.
00:02:32
Pero ya la primera plantilla de mi programa ya la tengo hecha.
00:02:35
Programa que lea de forma repetida un número N y con ese número N haga bla, bla, bla.
00:02:39
Bueno, pues ya resolveremos ese bla, bla, bla.
00:02:44
Pero mi programa ya viene a hacer esto.
00:02:46
Vale, pues de forma repetida tenemos que leer un número N.
00:03:09
De forma repetida significa hacerlo varias veces.
00:03:12
Eso significa que voy a tener un bucle.
00:03:15
Bueno, pues un montón de veces, un montón de veces, no sé cuántas, eso dependerá de la condición que yo ponga aquí,
00:03:17
un montón de veces tendré que hacer.
00:03:24
Introduzca número.
00:03:26
Y leyéndolo.
00:03:32
Como vamos a leer, pues copiamos un escáner por ahí.
00:03:33
¿Dónde tengo el escáner? ¿No tengo ningún escáner por ahí puesto?
00:03:40
Ah, coño, está ahí. Vale.
00:03:45
Introduzca número.
00:03:53
Venga, int N igual a scan punto next int.
00:03:55
Vale, ya tenemos bastante hecho en realidad el programa.
00:04:00
Tenemos lo más importante, que es que ya le he dado una primera plantilla, una primera arquitectura,
00:04:05
que es voy a hacer muchas veces algo.
00:04:10
Pues venga, voy a hacer un montón de veces algo.
00:04:13
Ese algo que es leer número.
00:04:17
Vale, eso está muy claro, leer número.
00:04:19
Y luego me dice, con ese número leído tienes que bla, bla, bla.
00:04:21
Pues vamos a ver qué es todo eso.
00:04:26
Pues todo eso es, con ese número leído tienes que mostrar el resultado de hacer la suma 1 más 2 más 3 más N.
00:04:28
Bueno, pues eso es lo que tenemos que plantearnos aquí.
00:04:36
Ahora nos falta ese trabajo.
00:04:40
Ahora, aquí dentro, aquí dentro, dentro de ese bucle,
00:04:45
pues nos falta hacer ese trabajo que me han dicho.
00:04:52
Ahora tenemos que coger aquí, tenemos que calcular la suma 1 más 2 más N.
00:04:54
Eso es lo que nos toca hacer ahora.
00:05:10
Calcular esa suma aquí dentro.
00:05:13
Vale, estamos dentro del bucle porque eso lo tenemos que hacer muchas veces.
00:05:16
Vale, estamos dentro del bucle, está claro.
00:05:20
Bueno, ahora tenemos otro subproblema.
00:05:22
Estos son subproblemas, son subproblemas independientes.
00:05:24
Uno de ellos era la plantilla general, que es hacer varias veces leer número, lo que sea, leer número, lo que sea.
00:05:27
Ahora aquí yo tengo ya otra caja negra, independiente de la anterior.
00:05:35
Vale, ¿cómo resuelvo, dado este número N, hacer esta suma?
00:05:40
Esto lo hemos hecho ya, eso lo vamos a hacerlo.
00:05:44
Un bucle que va haciendo una suma acumulativa.
00:05:47
Esto es una suma acumulativa, eso ya lo sabemos hacer, lo hemos hecho muchas veces.
00:05:50
Pues eso que ya sé hacer, lo tengo que hacer ahí.
00:05:53
Eso que ya sé hacer, lo tengo que hacer ahí en medio, porque es lo que tengo que hacer ahí.
00:05:56
Me da igual que esté dentro de un bucle, que esté donde esté, lo tengo que hacer en ese punto.
00:06:00
Pues nada, esta suma, es una suma acumulativa, la hemos hecho un montón de veces, ya sabemos resolverlo.
00:06:04
Pues una variable suma, que empieza valiendo 0.
00:06:09
Mientras yo no haya terminado la suma, a esta variable suma, le sumo el sumando que toque.
00:06:14
Estos sumandos, ¿cuáles van a ser?
00:06:25
Pues empiezan valiendo 1 y se van incrementando.
00:06:28
Vale, pues los sumandos los genero, entonces por ejemplo así.
00:06:31
Pues el sumando empieza valiendo 1 y lo voy dejando incrementado.
00:06:35
¡Hala, estupendo!
00:06:40
Pues ya está, esto es lo que hemos hecho ya un montón de veces.
00:06:42
Una suma acumulativa, una variable que empieza siendo 0, suma más iguales a su...
00:06:45
¿Es la expresión que hemos usado siempre?
00:06:54
Suma más sumando, hemos dicho muchas veces que esto...
00:07:00
Pero es lo mismo que abajo, continuamente lo hemos dicho.
00:07:04
Bueno, a ver, me da igual el más más hacerlo antes que después.
00:07:08
Pero vamos, que esto es igual que esto lo hemos dicho todo el curso,
00:07:14
cuando hemos visto el operador, esto y esto es lo mismo,
00:07:18
que lo hemos dicho continuamente.
00:07:21
Vale, hemos dicho, así se ve más claro, pero con este operador se compacta
00:07:24
y es como os lo vais a encontrar normalmente, ya lo explicamos cuando vimos este operador
00:07:28
y cada vez que sale decimos eso, que hay dos formas de ponerlo.
00:07:32
Vale, eso.
00:07:38
Vale, entonces la forma en la que lo vais a encontrar es la de abajo,
00:07:40
pero es que por eso os decía que cuanto antes ya os familiaricéis con que las dos cosas son iguales,
00:07:45
con lo que significa este operador, tenéis que estar familiarizados,
00:07:50
desde el momento en que lo vimos, hace un montón de tiempo,
00:07:54
pues ahí es cuando uno se iba a casa y decía, a ver, a ver, que acabe de entenderlo,
00:07:57
me lo repito mil veces hasta que...
00:08:01
Bueno, pues entonces, la suma acumulativa, que la hemos hecho mil veces también, es esto,
00:08:04
una variable que empieza valiendo cero, y en un bucle lo voy metiendo sumandos.
00:08:08
Ahora ya, estos sumandos, ¿cuáles van a ser?
00:08:12
Pues ya pienso en mi suma en particular, mi suma en particular es la suma uno, dos,
00:08:15
los sumandos van a ser primero uno y luego dos.
00:08:19
Pues ¿cómo lo genero? Esta suma en concreto ya la hemos hecho,
00:08:22
pues los genero con una variable que empieza siendo uno
00:08:25
y la voy incrementando, por ejemplo, o puede empezar siendo cero,
00:08:30
pero sabes que entonces la primera iteración del bucle no te sirve para nada,
00:08:35
porque suma igual a suma más cero, es una iteración que haces de más,
00:08:38
pero que no te molesta, porque sumar a una variable cero no la estropea,
00:08:42
la deja igual.
00:08:47
Lo puedes empezar a cero, pero entonces el bucle se ejecuta una vez más
00:08:48
y es una vez más que le estás sumando un cero que no le...
00:08:52
Pero vamos, no es que estuviera mal, es que es una iteración que no te hace falta.
00:08:55
Entonces empiezas sumando uno y entonces suma más igual sumando,
00:09:00
cada iteración le sumas el numerito que toca y sumando,
00:09:07
después de hacer la suma hay que incrementarlo.
00:09:10
Entonces lo de siempre podríamos hacer aquí sumando más más
00:09:13
o sumando igual a sumando más uno, todo esto de nuevo lo tienes que hacer de memoria.
00:09:16
¿O para qué voy a escribir otra línea?
00:09:20
Si puedo directamente poner un posincremento en una misma expresión,
00:09:24
que también esto lo hemos hecho y lo tenéis que tener ya en la cabeza
00:09:28
memorizado y grabado todas las veces que lo hemos hecho.
00:09:31
¿Para qué?
00:09:33
Lo pongo ahí y ya sé cómo funciona esto.
00:09:34
Que es que primero hago la expresión y luego cuando ya he terminado
00:09:36
a la variable a la que esté afectando el posincremento la incremento.
00:09:41
Así funcionaba esto, ¿no?
00:09:45
Bueno, pues ya tengo hecha gran parte de la suma acumulativa.
00:09:49
Efectivamente a esta variable suma se le va sumando uno, dos, tres, así hasta n.
00:09:52
Claro, pero me falta, oye, ¿cuándo acabo yo de sumar?
00:09:56
Pues ya tengo que pensar en mi situación.
00:09:59
¿Cuándo acabo yo de sumar?
00:10:01
¿Cuándo?
00:10:03
¿Qué pongo aquí?
00:10:04
Para que este bucle ya no entre más.
00:10:05
Mientras sea menor o igual, ¿quién?
00:10:10
¿Qué número?
00:10:15
n.
00:10:17
Sumando menor o igual que n, ¿vale?
00:10:18
Esa sería efectivamente la condición.
00:10:20
Mientras sumando sea menor o igual que n, me interesa seguir sumando.
00:10:25
¿Vale? Pues ya está.
00:10:31
Ya he completado esa caja negra que tenía aquí dentro
00:10:33
que me tocaba a mí hacer ahora.
00:10:36
Entonces, claro, este programa resulta en un bucle dentro de otro,
00:10:39
pero ¿qué más da?
00:10:42
¿Qué más da?
00:10:44
¿Vale? Un bucle ya sabemos que es un conjunto de sentencias que se repiten.
00:10:46
Y esas sentencias que se repiten pueden ser a su vez más bucles.
00:10:50
Y ese bucle a su vez tendrá dentro un conjunto de sentencias que se repiten.
00:10:53
Que a su vez podrá ser bucles, depende de lo que me toque hacer.
00:10:56
Pues aquí me ha tocado hacer esto.
00:10:59
Con este número me ha tocado hacer la suma.
00:11:01
Y como me ha tocado hacer la suma, pues he tenido que plantar esto.
00:11:04
¿Vale? Pero todo lo sabemos hacer.
00:11:07
Lo único que tenemos que hacer es
00:11:09
construirlo para que el resultado final sea el que buscamos.
00:11:12
¿Vale? Entonces, gran parte del programa está hecho.
00:11:15
Un montón de veces, leemos número, calculamos suma.
00:11:18
Leemos número, calculamos suma.
00:11:22
Pero nos faltan cosas aquí por perfilar, como cuántas veces estoy, qué hago.
00:11:24
Bueno, el enunciado, ¿qué nos dice?
00:11:28
El enunciado nos dice que muestra la suma.
00:11:32
Nos la he mostrado.
00:11:34
Bueno, pues...
00:11:36
Por ejemplo, como solo tiene el bucle while aquí, solo tiene una sentencia.
00:11:38
Le puedo quitar la llave, por ejemplo.
00:11:44
Le quito la llave porque solo tiene una sentencia.
00:11:46
¿Vale?
00:11:51
Ahora dice, calcule y muestre.
00:11:52
Bueno, me falta mostrarla.
00:11:54
Claro, y aquí tendría que poner.
00:11:56
La suma de...
00:11:59
Uno más dos, más...
00:12:02
N es...
00:12:07
Y le pongo ahora aquí, pues suma.
00:12:12
¡Hala, ya está!
00:12:16
Para que se vea.
00:12:17
¿Vale? Pues ya he mostrado la suma.
00:12:19
Y luego aquí me falta lo de...
00:12:23
Vale, pero ¿esto se está ejecutando cuándo? ¿Hasta el infinito?
00:12:25
¿Cuántas veces está el programa pidiéndome un número?
00:12:27
Esa información me la tiene que haber dado el enunciado.
00:12:30
Pues a ver qué me dice el enunciado al respecto.
00:12:33
A ver, yo aquí estoy haciendo una cosa mal por rapidez,
00:12:36
que es como ir, según voy resolviendo,
00:12:38
voy mirando el enunciado.
00:12:42
No.
00:12:44
Antes de empezar a pensar,
00:12:45
un enunciado tiene que haber leído una y mil veces
00:12:47
y tener muy claro lo que tiene que hacer.
00:12:49
Y luego ya se hace este proceso que digo yo,
00:12:51
que es decir, vale, esto es algo que se hace muchas veces.
00:12:54
¡Plan! Un bucle.
00:12:56
¿Qué se hace muchas veces? Esto.
00:12:57
¿Esto cómo lo hago?
00:12:59
De esta manera, que a su vez es otro bucle.
00:13:00
Pues venga.
00:13:02
Yo estoy sobre la marcha mirando el enunciado
00:13:03
por un tema de rapidez.
00:13:05
Pero en condiciones normales,
00:13:09
uno tiene que tener muy claro lo que hace
00:13:11
antes de empezar a plantear el programa.
00:13:13
Porque si es una cosa larga,
00:13:15
pues luego le puede ser complicado
00:13:17
el irla retocando.
00:13:19
Vale, pues aquí ya me da la información
00:13:22
sobre lo que me faltaba a mí, que es
00:13:24
¿me estoy hasta el infinito?
00:13:26
Me dice no.
00:13:28
Cada vez que muestra el resultado del programa,
00:13:29
le dice si desea continuar o no.
00:13:31
Y el bucle
00:13:33
se volverá a ejecutar
00:13:36
se volverá a ejecutar
00:13:38
si se introduce una S
00:13:40
y en cualquier otro caso no.
00:13:42
Vale, pues entonces,
00:13:44
eso lo podemos hacer, efectivamente,
00:13:46
la condición puede ser en función de
00:13:48
una cadena que yo leo.
00:13:50
Si la cadena es S,
00:13:52
pues entonces
00:13:55
vuelvo a entrar y si no, no.
00:13:57
Vale, pues podemos
00:13:59
preguntarle ya aquí.
00:14:01
¿Desea continuar?
00:14:04
Y le damos esta información,
00:14:10
bueno, para que sepa lo que escribir.
00:14:12
Ahora, el dato
00:14:16
S, N,
00:14:18
como es una cadena de texto,
00:14:20
aunque solo tenga un carácter,
00:14:22
lo podemos tratar como cadena de texto.
00:14:24
Es una cadena de texto con un carácter.
00:14:26
Lo podemos guardar en un string,
00:14:28
para no complicarnos la vida.
00:14:30
Lo guardamos en un string.
00:14:32
Vale.
00:14:42
Pues entonces, ahora ya,
00:14:44
en función de esta opción,
00:14:46
aquí arriba,
00:14:48
podemos definir la condición.
00:14:50
Vale, entonces,
00:14:53
primera cosa que se me plantea aquí,
00:14:55
yo voy a tener aquí que trabajar
00:14:57
con si opción diferente de N,
00:14:59
de opción igual a S.
00:15:01
Cuidado, entonces, la primera cosa
00:15:03
que ya voy a tener que modificar antes que nada,
00:15:05
es el qué.
00:15:07
¿No? Porque si yo hago aquí,
00:15:09
venga, mientras opción
00:15:11
sea
00:15:13
igual a S, por ejemplo.
00:15:15
Opción es un string.
00:15:17
Como dijimos el otro día, que comparábamos
00:15:19
la igualdad de un string y otro.
00:15:21
No con el doble igual.
00:15:24
¿Que eso puede funcionar o no?
00:15:28
Así lo comparábamos, ¿verdad?
00:15:30
Si opción es igual a S,
00:15:34
entonces,
00:15:36
entro otra vez.
00:15:38
Y le vuelvo a preguntar.
00:15:40
Vuelvo arriba. Opción es igual a S.
00:15:42
Como podíamos prever,
00:15:44
aquí en orden de compilación,
00:15:46
se me pone rojo. ¿Por qué?
00:15:48
Se me pone rojo ahí.
00:15:51
¿Perdón?
00:15:53
Claro, porque
00:15:57
está declarado aquí dentro.
00:15:59
Entonces, cuando el programa llega
00:16:01
por aquí, opción todavía ni existe
00:16:03
ni está declarado.
00:16:05
Entonces digo, ah, no, cuidado, lo leo aquí.
00:16:07
Lo leo aquí. Pero hombre,
00:16:09
tengo que declararlo antes de su primer uso.
00:16:11
Y si su primer uso está
00:16:13
aquí, acordémonos de que
00:16:15
tenemos que declarar antes de su primer
00:16:17
uso.
00:16:19
Vale, ya lo he declarado desde su primer uso.
00:16:23
Aunque luego lo leo aquí.
00:16:25
Vale, se me sigue poniendo en rojo.
00:16:27
¿Por qué se me sigue
00:16:29
poniendo en rojo?
00:16:31
¿Perdón?
00:16:35
Pero con que no puede resolver, ¿a qué te refieres exactamente?
00:16:37
Eso sí, que no tiene valor.
00:16:41
Que no tiene un valor. Que opción no tiene valor.
00:16:43
Entonces, la primera vez, en la primera vez
00:16:45
que entramos,
00:16:47
opción no tiene ningún valor todavía.
00:16:49
Entonces esto lo podemos resolver de muchas maneras.
00:16:51
Podemos darle un valor
00:16:53
a opción cualquiera para forzar que
00:16:55
entre por primera vez. Esa podría ser
00:16:57
una opción, ¿no? Le damos un valor cualquiera
00:16:59
para forzarle que entre.
00:17:01
Que sería este.
00:17:03
Entonces, si yo a opción
00:17:05
le asigno
00:17:07
la cadena de caracteres ese,
00:17:09
entra ya una primera vez, porque esta condición
00:17:11
opción igual a ese será true.
00:17:13
Entra una primera vez.
00:17:15
Hace lo que me han pedido y pregunta.
00:17:17
¿Que vuelve a meter sí?
00:17:19
Entra una segunda vez.
00:17:21
Hace lo que tenga que hacer
00:17:23
y pregunta. ¿Que ahora ha metido
00:17:25
otra cosa que no es la ese?
00:17:27
¿Que otra cosa que no es la ese?
00:17:29
Cuando evalúe esta condición, ya será falsa.
00:17:31
Entonces saldrá por aquí.
00:17:33
¿Vale?
00:17:35
Y se despedirá y adiós.
00:17:37
¿Vale?
00:17:39
Bueno, pues así tendríamos ya un apaño de programa
00:17:41
perfectamente hecho.
00:17:43
¿Vale?
00:18:13
Una misma cosa se puede hacer de muchas maneras.
00:18:21
Lo que importa es que esté claro
00:18:23
lo que se está haciendo
00:18:25
y que esté bien hecho, claro.
00:18:27
¿Vale? Entonces,
00:18:29
nosotros con nuestro planteamiento hemos llegado a esta solución.
00:18:31
¿Vale?
00:18:33
Se puede hacer de muchas maneras diferentes,
00:18:35
siempre y cuando el resultado final sea el mismo.
00:18:37
Aquí, por ejemplo,
00:18:39
cuando uno ha apañado ya el tema de la condición
00:18:41
y ha dicho
00:18:43
uy, mientras la primera vez
00:18:45
yo quiero entrar sí o sí,
00:18:47
como la primera vez quiero entrar sí o sí,
00:18:49
hemos tenido que hacer el apaño
00:18:51
de poner esto a ese.
00:18:53
Eso ya nos pasó en un ejercicio anterior.
00:18:55
Y dijimos, hombre, a ver, si yo estoy haciendo
00:18:57
un bucle en el cual la primera vez quiero entrar sí o sí,
00:18:59
¿no sería mejor plantearlo
00:19:03
con otra sintaxis? ¿Como cuál?
00:19:05
Con el bucle Duhail.
00:19:07
¿Verdad? Porque el bucle Duhail
00:19:09
es un bucle en el cual
00:19:11
la primera vez entra seguro
00:19:13
y luego ya evalúa condición
00:19:17
y ya la siguiente depende de la condición.
00:19:19
Entonces, estoy en esa situación.
00:19:21
Estoy en una situación en la cual la primera vez
00:19:23
quiero que se haga sí o sí.
00:19:25
Me da igual lo que diga esta condición.
00:19:27
Entonces, como quiero que se haga sí o sí,
00:19:29
quedaría más bonito esto,
00:19:33
quedaría más bonito si le pongo un Duhail,
00:19:35
porque el código ya sabe
00:19:37
que la primera vez se va a hacer sí o sí
00:19:39
y inicializar la condición
00:19:41
no le va a hacer ninguna falta, le va a dar igual, etc.
00:19:43
Un segundito.
00:19:45
Entonces, si yo hiciera el cambio al Duhail,
00:19:47
pues esto simplemente,
00:19:49
vamos a suponer que
00:19:55
lo pusiéramos aquí abajo.
00:19:59
Pues entonces,
00:20:01
con el Duhail,
00:20:05
la condición se va aquí abajo.
00:20:07
Terminada con punto y coma.
00:20:11
Y aquí lo que se pone es el
00:20:13
Duh.
00:20:15
Entonces, con el Duhail,
00:20:17
¿esto cómo funciona?
00:20:21
Entra una primera vez,
00:20:23
con lo cual no necesita que opción
00:20:25
esté inicializado, no le hace ninguna falta.
00:20:27
Opción,
00:20:29
podría yo quitar esto perfectamente,
00:20:31
si es que adopto esa opción de abajo.
00:20:33
Opción ya, no le hace falta ningún tipo de
00:20:39
inicialización, porque esa inicialización era una trampa
00:20:41
para forzar entrar
00:20:43
una primera vez en este while.
00:20:45
Pero si yo hago un Duhail,
00:20:47
opción ya,
00:20:49
no la inicializo pero no me hace ninguna falta.
00:20:51
Y entonces este bucle, entra una primera vez,
00:20:53
esa forzosa,
00:20:55
y ahora ya pregunta.
00:20:57
Y ya las siguientes,
00:20:59
¿que entra una segunda? Depende de opción.
00:21:01
Entra una segunda, hace lo que sea.
00:21:03
¿Entra una tercera?
00:21:05
¿Perdona?
00:21:07
Si,
00:21:09
si pruebo, ¿qué me va a ocurrir?
00:21:11
Lo que me ocurrió el otro día, ¿verdad?
00:21:13
Y dijimos que lo íbamos a arreglar.
00:21:15
A lo mejor es que ya se había ido.
00:21:17
¿Puede ser eso?
00:21:19
Vale.
00:21:21
En cualquier caso, se quedaría grabado.
00:21:23
A ver, que alguien me diga,
00:21:25
si yo pruebo esto, ¿qué me va a ocurrir?
00:21:27
Me va a fallar,
00:21:29
me va a encontrar algo raro en la prueba.
00:21:31
Si yo pruebo este ejercicio, o la versión de arriba,
00:21:35
me da igual.
00:21:37
Sí, claro, ¿pero por qué?
00:21:39
¿Por qué?
00:21:41
Porque ya nos pasó el otro día,
00:21:43
o bueno, ya nos había pasado antes y lo habíamos solucionado
00:21:45
ya todas las veces que nos había pasado.
00:21:47
Que alguien me lo diga.
00:21:49
Eso sí.
00:21:51
¿Vale?
00:21:53
Que hemos repetido unas cuantas veces,
00:21:55
entre ellas el último día.
00:21:57
Y de hecho, lo he dicho
00:21:59
al principio de clase.
00:22:01
Al principio de clase, cuando estábamos repasando la anterior,
00:22:03
lo he vuelto a decir, al principio de la clase.
00:22:05
Que he vuelto a decir
00:22:07
al principio de la clase,
00:22:09
que si tú lees un número,
00:22:11
metes el salto de línea.
00:22:13
El salto de línea se queda en el buffer del teclado.
00:22:15
Y si luego haces un next line,
00:22:17
se queda,
00:22:19
¿vale?
00:22:21
Y lo dije otro día,
00:22:23
el viernes pasado,
00:22:25
y hoy al empezar la clase.
00:22:27
¿Vale? Entonces,
00:22:31
uno, pues si lo ejecuta y le pasa,
00:22:33
dice, ah, vale, vale, ya me acuerdo.
00:22:35
O a lo mejor lo puede prever desde ya,
00:22:37
y decir, ah, mira, estoy leyendo un número,
00:22:39
y luego un next line, cuidadín,
00:22:41
me voy a quitar después del número,
00:22:43
el este,
00:22:45
¿vale?
00:22:47
Me lo voy a quitar,
00:22:49
y ya preveo, prevengo,
00:22:51
ese problema.
00:22:53
Porque después de este número, ya me quita el salto de línea.
00:22:55
Y en el siguiente next line,
00:22:57
ya no va a haber problemas.
00:22:59
¿Vale?
00:23:01
Puedes usar otros métodos de escáner,
00:23:05
cambiar el token, usar un buffer R,
00:23:07
muchas cosas. Pero,
00:23:09
no quiero introduciros
00:23:11
objetos que no,
00:23:13
eh,
00:23:15
podéis entender cómo funcionan.
00:23:17
Bueno.
00:23:19
Entonces, si probáramos esto, ahora ya sí que
00:23:25
uno diría, venga, voy a hacer pruebas.
00:23:27
Y vamos a ver las pruebas, pues venga,
00:23:29
5, la suma
00:23:31
es 15, vale, bueno, suponemos
00:23:33
que es 15. ¿Desea continuar?
00:23:35
Sí. 6,
00:23:37
la suma es 21. ¿Desea continuar?
00:23:39
Sí, la suma es 78.
00:23:41
¿Desea continuar? No, salió.
00:23:43
Solo hemos hecho una prueba,
00:23:45
pero bueno, parece que funciona.
00:23:47
Uno haría pruebas con
00:23:49
isometro negativo, isometro no sé qué,
00:23:51
hace lo que yo quiero que haga, etcétera, etcétera.
00:23:53
¿Vale?
00:23:55
Bueno, pues os recuerdo la importancia
00:23:59
de estudiarse y aprenderse
00:24:01
todo lo que hemos visto,
00:24:03
todo, y repetirlo.
00:24:05
Repetirlo, ¿vale?
00:24:07
Bueno, lo estoy reiniciando aquí,
00:24:14
todo el rato, cada vez.
00:24:16
¿Que por qué no necesito?
00:24:18
Es que una vez acaba, vuelve arriba,
00:24:20
y al volver arriba vuelve a entrar aquí.
00:24:22
¿Cómo?
00:24:24
No te entiendo.
00:24:26
Una vez acabo por aquí, dices,
00:24:31
el while. Ya, pero es que vuelvo a entrar
00:24:33
y al volver a entrar los vuelvo a reiniciar.
00:24:35
Ahí.
00:24:37
Claro, claro, claro.
00:24:39
Si estuviera eso fuera del do while,
00:24:41
entonces sí que sería un problema,
00:24:43
pero es que está dentro.
00:24:45
Entonces se reinicia cada vez.
00:24:47
Si estuviera fuera, tendría que volverlos
00:24:49
a poner a cero y a uno, efectivamente.
00:24:51
Claro, lo que pasa es que lo tengo dentro.
00:24:53
Además es que me ha quedado dentro
00:24:57
directamente, porque es que es la forma
00:24:59
natural, porque cuando yo me he planteado
00:25:01
resolver este problema,
00:25:03
o sea, el problema de hacer la suma
00:25:05
y lo sumando, me ha llegado a mí
00:25:07
y lo he planteado cuando ya estaba aquí dentro.
00:25:09
Entonces, pues ahí dentro me declaro la variable
00:25:11
y lo hago todo. ¿Para qué la voy a declarar arriba?
00:25:13
Eso es un subproblema que está ahí acotadito
00:25:15
dentro de ese while. Ahí me lo guiso
00:25:17
y me lo como todo.
00:25:19
¿Vale?
00:25:21
Vale.
00:25:23
A ver.
00:25:27
El once.
00:25:31
Este lo habéis hecho.
00:25:33
Este ya es un programa de sacar cifras,
00:25:35
ya no particularizado
00:25:37
a que
00:25:39
el número tenga una cifra
00:25:41
o dos o tres, porque en su momento,
00:25:43
cuando veíamos las decisiones, el IF,
00:25:45
sí que hicimos ejercicios
00:25:47
de sacar las centenas o sacar las decenas,
00:25:49
pero claro,
00:25:51
ahí teníamos muy acotado
00:25:53
si el número era de tres cifras o de dos.
00:25:55
Entonces decíamos, hago dos veces
00:25:57
la división por diez y ya está.
00:25:59
Aquí no sé cuánta vez la tengo que hacer.
00:26:01
Aquí el número puede tener
00:26:03
una quinta cifra, puede tener tres, puede tener...
00:26:05
Entonces tengo que hacer divisiones por diez.
00:26:07
Está claro, porque sé que esa es la manera
00:26:09
de sacar cifras decimales, dividiendo por diez.
00:26:11
Pero tengo que hacerla
00:26:13
muchas veces y no sé cuántas en principio.
00:26:15
Luego tengo que meterlo en un bucle.
00:26:17
¿Vale? Entonces esa es la idea
00:26:19
de este ejercicio. Tendré que meter
00:26:21
en un bucle eso que hacíamos
00:26:23
de dividir entre diez,
00:26:25
que es el proceso que ya dijimos en su momento
00:26:27
de sacar cifras decimales.
00:26:29
Entonces...
00:26:31
...
00:26:35
...
00:26:37
...
00:26:39
Y ese proceso, ¿cuál era?
00:26:41
...
00:26:43
...
00:26:45
...
00:26:47
...
00:26:49
...
00:26:51
...
00:26:53
...
00:26:55
Bueno, pues entonces,
00:26:57
en el momento de hacer este ejercicio,
00:26:59
como de sacar cifras decimales,
00:27:01
uno,
00:27:03
lo primero que hace es
00:27:05
revisar ese procedimiento, a ver cómo era.
00:27:07
A ver si uno se acuerda de cómo era ese procedimiento
00:27:09
que dijimos en su momento.
00:27:13
Vale, entonces, si uno tiene un numerito cualquiera,
00:27:19
de cualquiera de las cifras, decíamos que era hacer
00:27:23
sucesivas divisiones por diez
00:27:25
e irnos quedando con el resto, ¿no?
00:27:27
Hacíamos una primera división por diez
00:27:29
del numerito.
00:27:31
Y esa división por diez
00:27:39
tiene su cociente, que es este,
00:27:41
y su resto, que es este.
00:27:43
Entonces, el resto,
00:27:49
el resto,
00:27:51
ya era la primera cifra decimal.
00:27:53
¿Y qué hacíamos con el cociente?
00:27:55
Otra vez lo mismo,
00:27:57
una segunda división por diez.
00:27:59
El cociente era 327.
00:28:01
Pues el cociente, ahora,
00:28:03
lo dividíamos entre diez
00:28:09
y el resto,
00:28:11
327, resto, diez.
00:28:13
Ese resto,
00:28:15
siete, ya tengo la segunda cifra decimal.
00:28:19
Una tercera vez,
00:28:21
vuelvo a hacer lo mismo,
00:28:23
que es una división y un resto.
00:28:25
Pero cada vez usando
00:28:27
el cociente anterior.
00:28:29
Luego habrá una variable cociente que se vaya
00:28:31
quedando pisada cada vez
00:28:33
con los sucesivos cocientes.
00:28:35
Aquí el cociente se ha quedado en treinta y dos.
00:28:37
Pues el nuevo cociente va a ser
00:28:39
treinta y dos entre diez
00:28:41
y el nuevo resto va a ser
00:28:43
treinta y dos por ciento diez.
00:28:45
El nuevo resto, dos.
00:28:47
A la siguiente cifra decimal.
00:28:49
Me falta una cuarta iteración.
00:28:51
Cuarta iteración.
00:28:53
El cociente de dividir, tres entre dos,
00:28:55
que era tres,
00:28:57
pues se vuelve a dividir entre diez.
00:28:59
Y el resto me da tres por ciento diez.
00:29:01
Vale.
00:29:03
El resto que me sale, tres.
00:29:05
La siguiente cifra decimal, ya las tengo todas.
00:29:07
Cuatro, siete, dos, tres.
00:29:09
Y este cociente ya queda cero.
00:29:11
Pues ya tengo el bucle perfilado.
00:29:15
Tengo que hacer un montón de veces.
00:29:17
Obtener una variable c
00:29:21
dividiendo el número entre diez.
00:29:23
Y luego cojo el resto
00:29:25
y ya tengo la primera cifra decimal.
00:29:27
Esa variable c la vuelvo a dividir entre diez.
00:29:29
Y el resto,
00:29:31
me quedo con su resto.
00:29:33
Esa misma variable c,
00:29:35
que se ha quedado pisada, la vuelvo a dividir entre diez.
00:29:37
Y me quedo con el resto.
00:29:39
Entonces ya tengo que hacer un montón de veces esto.
00:29:41
Un montón de veces esto.
00:29:43
Dos operaciones, un montón de veces.
00:29:45
Para que el bucle quede completo
00:29:47
tengo que decir, ¿hasta cuándo?
00:29:49
Pues hasta que esa variable c sea cero.
00:29:51
Porque cuando esa variable c es cero,
00:29:53
ya he terminado.
00:29:55
Ya no sigo dividiendo.
00:29:57
Pues tengo el bucle completo.
00:29:59
Lo que tengo que hacer dentro
00:30:01
y la condición de finalización.
00:30:05
Pues una vez ya entendido esto,
00:30:07
visualizado esto,
00:30:09
uno ya se pone a
00:30:11
programarlo y hacer sus pruebas
00:30:13
a ver cómo les sale.
00:30:15
¿Vale?
00:30:17
Vale.
00:30:21
Pues vamos a intentar programar esto.
00:30:23
Vale.
00:30:51
Pues esto era once.
00:30:55
A ver.
00:31:09
Ejercicio once.
00:31:13
Vale.
00:31:21
Yo aquí con el copia y pega
00:31:45
he debido hacer algo raro.
00:31:47
A ver.
00:31:49
Vale. Saque sus cifras.
00:31:57
Vale. Bueno, pues entonces
00:32:15
¿cómo programaríamos esto?
00:32:17
Vale, ya hemos visto qué necesitamos.
00:32:19
Primero vamos a leer el número.
00:32:21
Primero vamos a leer el número.
00:32:23
Número entero.
00:32:43
Vale.
00:32:47
Pues este número suponer que se ha leído aquí.
00:32:49
Vale.
00:32:59
Y ahora ya es cuando tenemos que hacer
00:33:01
toda esa sucesión de divisiones
00:33:03
que nos vamos quedando.
00:33:05
Cociente y resto, cociente y resto, cociente y resto.
00:33:07
Vale, pues entonces
00:33:09
vamos a necesitar una variable
00:33:11
para guardar el cociente
00:33:13
y para guardar el resto.
00:33:15
Porque una variable ya me va a dar
00:33:17
la cifra
00:33:19
y otra variable, cociente, es la que necesito
00:33:21
para que en la siguiente iteración
00:33:23
pueda yo volver a hacer la división y el resto.
00:33:25
Entonces esta variable cociente
00:33:27
es la que de una iteración a otra
00:33:29
voy actualizando
00:33:31
¿verdad? Voy actualizando
00:33:33
de una división a otra.
00:33:35
La voy actualizando cada vez.
00:33:37
Primero es esta, que es el número inicial.
00:33:39
La siguiente vez ya es esta.
00:33:41
La siguiente es esta y la siguiente es tres.
00:33:43
O sea, de una iteración a otra
00:33:45
la voy actualizando, partiendo del número inicial.
00:33:47
Esa variable cociente.
00:33:49
Bueno, vamos a suponer que, para ser claros,
00:33:51
que lo ponemos así.
00:33:53
Una variable va a ser el cociente
00:33:55
que la inicializo con el número que me han dado
00:33:57
y otra variable va a ser el resto.
00:33:59
Que es la primera,
00:34:01
que irá siendo las cifras decimales
00:34:03
que todavía no he sacado.
00:34:05
¿Qué he hecho yo aquí mal?
00:34:13
Ah, que he puesto a quinto otra vez.
00:34:19
Estaba volviendo de loca.
00:34:21
Vale, ya está.
00:34:23
Venga, pues ahora ya es el bucle
00:34:25
que hemos dicho.
00:34:27
Un bucle que está todo el rato.
00:34:29
¿Que está todo el rato haciendo qué?
00:34:31
Vale, pues podemos sacar
00:34:35
primero la cifra decimal,
00:34:37
que era el resto.
00:34:39
Sacamos
00:34:41
cifra decimal.
00:34:43
Que es resto
00:34:47
igual a
00:34:49
cociente
00:34:51
resto 10.
00:34:53
Esa ya es una cifra decimal.
00:34:55
¿Que vamos a mostrarla?
00:34:59
Pues venga, la mostramos. Como dicen líneas separadas,
00:35:01
pues por eso pongo el println.
00:35:03
Resto.
00:35:05
Y ahora, con esa ya saco el resto.
00:35:07
Ya tengo el resto.
00:35:11
Y ahora actualizo la variable cociente,
00:35:13
porque en la siguiente iteración
00:35:15
tengo que usar
00:35:17
el cociente de birlo entre 10.
00:35:19
Pues venga,
00:35:21
cociente igual
00:35:23
cociente entre 10.
00:35:29
Y ya está.
00:35:35
En la siguiente iteración,
00:35:37
ese cociente que se ha quedado
00:35:39
entre 10, al sacarle
00:35:41
el resto tendré la siguiente cifra.
00:35:43
Y lo vuelvo a actualizar
00:35:47
para que se quede entre 10.
00:35:49
Hemos quedado que,
00:35:51
¿vamos haciendo eso hasta cuándo?
00:35:53
Hemos dicho hasta que cociente sea 0.
00:35:55
¿Vale?
00:35:59
Cuando cociente ya es 0,
00:36:01
ya no tengo que hacer una quinta iteración.
00:36:03
Ya no tengo que hacer una quinta.
00:36:05
Cuando cociente es 0 es porque ya he sacado
00:36:07
la última cifra decimal.
00:36:09
Cuando me dé 0 es que ya saqué la última.
00:36:11
Bueno, pues entonces la condición
00:36:13
de finalización ya la tenemos.
00:36:15
Mientras cociente sea
00:36:17
mayor o igual que 0.
00:36:19
Y ya está, ya tengo ahí sacadas
00:36:23
todas las cifras.
00:36:25
Si ejecutamos esto,
00:36:31
¡Hola!
00:36:37
Porque he puesto mayor o igual.
00:36:41
Quería poner menor o igual.
00:36:43
Espera, espera, espera.
00:36:45
¡Para! A ver, ¿qué he hecho aquí?
00:36:47
¿Qué ha fallado aquí?
00:36:57
Mientras cociente sea...
00:37:01
¡Así!
00:37:03
Me vuelvo loca.
00:37:05
Mientras sea mayor que 0.
00:37:07
He puesto mayor o igual, entonces cuando llega a 0
00:37:09
se está ahí toda la vida, claro, cuando sea mayor que 0.
00:37:11
Error tonto.
00:37:13
Vale.
00:37:15
Venga, pues este.
00:37:19
Pues ya están las cifras.
00:37:21
3, 5, 6, 9 y 8.
00:37:23
¿Vale?
00:37:29
Bueno, es el procedente estándar
00:37:31
con el que uno puede sacar
00:37:33
cifras decimales de un número entero,
00:37:35
de una variable entera.
00:37:37
¿Vale?
00:37:39
Es programar lo que hemos visto.
00:37:45
Vamos haciendo
00:37:47
sucesivos restos
00:37:49
a partir de los sucesivos
00:37:51
cocientes.
00:37:53
Esta sentencia de aquí me va a quedar
00:37:59
mucho más bonita
00:38:01
si la hago así.
00:38:03
Esta sí mucho mejor.
00:38:07
Así más bonita.
00:38:11
Cociente entre 10
00:38:13
y el resultado se lo asigno a cociente.
00:38:15
¿Vale?
00:38:19
Vale.
00:38:31
Vale.
00:38:41
Vale, vámonos
00:38:49
aquí.
00:38:53
Que este nos sirve
00:38:55
para introducir el bucle Ford.
00:38:57
Que va a ser más cómodo.
00:38:59
¿Vale?
00:39:01
Bueno, ¿dudas o preguntas?
00:39:07
Se podría,
00:39:15
pero
00:39:17
A, recursivamente,
00:39:19
que no sabemos hacerlo.
00:39:21
B, metiendo las variables en una array,
00:39:23
que tampoco sabemos hacerlo.
00:39:25
Es que nos falta por saber
00:39:27
como el 99,9%
00:39:29
de lo que tendríamos que saber.
00:39:31
Pero esto, una vez entendido esto,
00:39:33
lo demás es incorporar
00:39:35
datos, entre comillas.
00:39:37
Es incorporar datos.
00:39:39
Pero esto no es incorporar datos,
00:39:41
esto es incorporar formas de pensar.
00:39:43
Sí, lo harías con un while,
00:39:49
pero
00:39:51
el problema es que el ejercicio así
00:39:53
tú vas mostrando las cifras
00:39:55
según se van saliendo.
00:39:57
Y te van saliendo en ese orden,
00:39:59
no lo puedes hacer de otra manera,
00:40:01
porque tú no sabes cuánto tamaño tiene,
00:40:03
entonces tienes que empezar siempre
00:40:05
por las unidades.
00:40:07
Entonces, como te van saliendo así,
00:40:09
las vas mostrando así.
00:40:11
Y no hay alternativa.
00:40:13
Que tú quieres mostrarlas en otro orden,
00:40:15
podrías, en lugar de irlas mostrando
00:40:17
según te salen,
00:40:19
irlas metiendo en una cajita
00:40:21
pero esa cajita es un array
00:40:23
que todavía no sabemos manejar.
00:40:25
Eso, o hacerlo de forma
00:40:27
recursiva, pero de eso por ahora
00:40:29
olvidate que es muy complicado.
00:40:31
Vale, ahora mismo,
00:40:33
con lo que sabemos,
00:40:35
como tienes que tirar de las unidades
00:40:37
porque no puedes tirar
00:40:39
de la otra parte,
00:40:41
pero no sabes cuánto es,
00:40:43
tienes que tirar de las unidades.
00:40:45
Y tal y como te van saliendo las tienes que mostrar,
00:40:47
porque no conocemos una estructura
00:40:49
que puedas tener ahí temporalmente
00:40:51
hasta que ya tengas todas.
00:40:53
No la conocemos todavía.
00:40:55
Con lo que sabemos no hay otra forma.
00:40:57
Pero en cualquier caso tendrías que hacerlo con un while.
00:40:59
Incluso aunque usaras esa estructura temporal,
00:41:01
un bucle tienes que hacer siempre.
00:41:03
Porque tienes que hacer
00:41:05
varias veces sacar una cifra.
00:41:07
Entonces un bucle siempre lo vas a tener que hacer.
00:41:09
¿Eh?
00:41:11
La misma, la misma.
00:41:13
La misma, claro,
00:41:15
porque la operación siempre tiene que ser
00:41:17
igual que ir haciendo divisiones, restos,
00:41:19
divisiones, restos, hasta que el cuente sea cero.
00:41:21
La misma.
00:41:23
Lo que cambiaría es si esas cifras
00:41:25
las vas mostrando
00:41:27
o las vas guardando
00:41:29
para mostrarlas luego.
00:41:31
Es lo que cambiaría.
00:41:33
Si las vas mostrando es que te van a salir en ese orden,
00:41:35
no hay otra.
00:41:37
Y si quieres mostrarlas en otro orden entonces las vas guardando
00:41:39
y luego ya las muestras como te da la gana.
00:41:41
Pero tendrías que irlas guardando.
00:41:45
¿Irlas guardando dónde?
00:41:47
Pues no conocemos estructuras de datos
00:41:49
que se adapten a eso aún.
00:41:51
Vale, pues venga, a ver,
00:41:57
este de aquí.
00:41:59
Bueno, este es de nuevo para jugar otra vez
00:42:01
con un bucle dentro de un bucle.
00:42:03
Este, ¿quién lo ha hecho?
00:42:05
Al doce.
00:42:07
¿No ha llegado nadie todavía? Vale.
00:42:09
Vale.
00:42:13
Lo importante es que todos los que hemos hecho
00:42:15
todos los volváis a hacer
00:42:17
vosotros solos.
00:42:19
Poneos de cero
00:42:21
directamente al cual anunciáis.
00:42:23
Vosotros solos, otra vez lo voy a volver a hacer.
00:42:25
Este mismo.
00:42:27
Y si os veis sueltos, pues ya
00:42:29
vais haciendo programas nuevos.
00:42:31
Bueno, este de aquí.
00:42:33
Este es,
00:42:35
como es mostrar por pantalla,
00:42:37
es hacer System.out.println.
00:42:39
De eso se trata, de hacer System.out.println.
00:42:41
¿Cuántos? Muchos.
00:42:43
Conclusión.
00:42:45
Un bucle que tiene dentro System.out.println.
00:42:47
Ese va a ser mi
00:42:49
mi programa, ¿no?
00:42:51
Un bucle que lo que tenga adentro
00:42:53
es System.out.println.
00:42:55
Eso es lo que, vale.
00:42:57
Bueno, pues,
00:42:59
cada System.out.println
00:43:01
me puedo plantear,
00:43:03
o cada iteración del bucle me puedo plantear
00:43:05
que va a mostrar, la primera iteración va a mostrar esta línea.
00:43:07
La segunda esta.
00:43:09
La tercera esta.
00:43:11
Y así hasta la enésima que me mostrará esta.
00:43:13
Entonces me puedo plantear mi programa
00:43:15
como un bucle
00:43:17
que en cada iteración me muestra una línea, ¿verdad?
00:43:19
Porque lo que nosotros
00:43:21
sí que vemos es que en función
00:43:23
de este numerito n,
00:43:25
ese triángulo es más pequeño o más grande.
00:43:27
Luego las iteraciones son por línea.
00:43:29
¿Que me meten un n que es 4?
00:43:31
Pues ese bucle se va a ejecutar
00:43:33
cuatro veces.
00:43:35
¿Que me meten un n que es 7? Pues ese bucle
00:43:37
es 7 veces. Entonces va a ser un bucle
00:43:39
que en cada iteración muestre una línea.
00:43:41
¿Vale? Eso va a ser.
00:43:43
Bueno, pues entonces
00:43:45
ya uno podría empezar ya
00:43:47
a poner esa estructura.
00:43:49
Este es el 12.
00:43:51
Venga, ejercicio 12.
00:44:09
A ver, no copie denunciado porque...
00:44:11
Vale, pues hemos dicho.
00:44:13
Bueno, habrá que leer el número lo primero.
00:44:15
Pues venga, vamos a leer el número lo primero.
00:44:17
Este.
00:44:23
El número ya está leído.
00:44:25
Lo vamos a llamar
00:44:27
en mayúscula para que se llame igual que el ejercicio.
00:44:29
Pero bueno, vale.
00:44:31
Ya tengo el número leído.
00:44:33
Y ahora,
00:44:35
la idea es
00:44:37
mostrar
00:44:39
estas líneas.
00:44:41
Pues un bucle
00:44:43
que cada iteración me muestra
00:44:45
la línea que le toque.
00:44:47
Pues venga, entonces
00:44:49
te lo podríamos plantear
00:44:51
while no se cuantos.
00:44:53
While no se cuantos.
00:44:57
Aquí que tenemos que hacer.
00:44:59
Mostrar
00:45:01
línea
00:45:03
Linea
00:45:05
Mostrar una línea.
00:45:07
Esa sería la estructura
00:45:09
de mi programa, ¿verdad?
00:45:11
Y ahora ya
00:45:13
hay que empezar a pensarlo.
00:45:15
Que la estructura es esa. Yo leo el numerito n.
00:45:17
Y ahora tengo que hacer un bucle
00:45:19
en el cual en la primera iteración muestro
00:45:21
esta línea. En la segunda
00:45:23
muestro esta. En la tercera muestro
00:45:25
esta. Luego es un bucle en el que estoy todo el rato
00:45:27
mostrando una línea.
00:45:29
Vale.
00:45:31
Bueno, aquí ya hay mucho que
00:45:35
meter.
00:45:37
Bueno, primero vamos a pensar
00:45:39
en la línea que tengo que mostrar. Depende
00:45:41
si estoy en la primera
00:45:43
iteración
00:45:45
tengo que mostrar 1.
00:45:47
Si estoy en la segunda iteración
00:45:49
tengo que mostrar 1
00:45:51
espacio 2.
00:45:53
Si estoy en la tercera iteración tengo que
00:45:55
mostrar 1 espacio 2
00:45:57
espacio 3.
00:45:59
Luego, directamente de lo que estoy
00:46:01
diciendo, ya
00:46:03
extraemos que
00:46:05
en función del número de iteración en la que
00:46:07
yo estoy, si estoy en iteración 1
00:46:09
en la 2, en la 3
00:46:11
muestro cosas distintas.
00:46:13
Luego conviene marcar la iteración en la
00:46:15
que estoy. Conviene marcarla.
00:46:17
De ahí ya me viene el contador.
00:46:19
De ahí ya me viene la idea del contador.
00:46:21
Vale, vamos a marcar un
00:46:23
contador.
00:46:25
Un contador, por ejemplo, que empiece
00:46:27
valiendo 1.
00:46:29
Y ahora ya, ¿qué tengo que hacer?
00:46:31
El contador luego, cuando termine
00:46:33
la iteración, se incrementará.
00:46:35
Y ahora, ¿qué tengo
00:46:37
que hacer aquí? Mostrar una línea
00:46:39
que sea de 1
00:46:41
2, así hasta
00:46:43
con. Ahora ya empieza
00:46:45
a tomar esto un poco más de forma.
00:46:47
¿Verdad?
00:46:49
Si estoy en la primera iteración mostraré
00:46:51
1 solo. Y con se quedará
00:46:53
incrementado.
00:46:55
No, no, no.
00:46:57
Hasta cont. Porque
00:46:59
aquí estoy en la línea de la iteración.
00:47:01
Y la primera línea es
00:47:03
hasta 1 solo.
00:47:05
Hasta n es solo la última.
00:47:07
Entonces, cont va variando.
00:47:09
En la primera iteración, cont es 1.
00:47:11
Por eso, de 1 hasta cont es 1
00:47:13
solo. En la segunda iteración
00:47:15
cont es 2, porque lo has dejado incrementado.
00:47:17
Pues mostrará de 1 a 2.
00:47:19
En la tercera, cont es 3.
00:47:21
Por eso hemos usado, se nos ha ocurrido
00:47:23
esa variable con a. Genial.
00:47:25
Porque así tengo una variable que me
00:47:27
dice en qué número de iteración estoy.
00:47:29
Y el número de iteración en la que estoy es relacionado
00:47:31
directamente con el numerito al que llevo.
00:47:33
Entonces ya
00:47:35
lo vamos perfilando un poco más. Tenemos aquí
00:47:37
un contador de iteraciones.
00:47:39
Por decirlo así.
00:47:41
Un contador de iteraciones.
00:47:43
La primera vez que entramos es 1.
00:47:45
Entonces tendría que mostrar la línea de 1 a 1, 1.
00:47:47
Y lo dejamos incrementado.
00:47:49
La siguiente vez
00:47:51
que entramos es 2.
00:47:53
Tendría que mostrar 1 con
00:47:55
que es 2. La siguiente vez que
00:47:57
entramos es 3. Pues tendríamos que mostrar
00:47:59
1, 2 hasta 3. En cualquier caso
00:48:01
hasta cont. Esto es lo que se nos
00:48:03
queda aquí ahora como caja negra.
00:48:05
Como mostramos esa línea. 1, 2
00:48:07
hasta cont. Que cont va variando.
00:48:09
Eso es una primera caja negra que hay que resolver.
00:48:11
Pero a cambio se nos ha
00:48:13
resuelto esta.
00:48:15
Porque esa ya me permite decir
00:48:17
cuándo acabo el bucle. Qué condición
00:48:19
pondríais ahí.
00:48:21
Fijaos que va valiendo. Aquí vale 1.
00:48:23
Aquí vale 2. Aquí vale 3.
00:48:25
Y así hasta ahí que vale n.
00:48:27
Luego qué condición
00:48:29
pondríais ahí.
00:48:31
Claro, mientras sea menor o igual
00:48:35
que n. Porque en la n también entramos.
00:48:37
¿Vale? Pues esto
00:48:39
ya lo tenemos resuelto.
00:48:41
Esto ya lo tenemos resuelto.
00:48:43
Entonces ya solo se nos ha quedado esto.
00:48:45
¿Cómo muestro yo ahí una línea
00:48:47
que sea la primera iteración 1?
00:48:49
O sea, hasta cont siempre.
00:48:51
Pues no es tan sencillo.
00:48:53
Porque de nuevo
00:48:55
esto a su vez va a tener que ser
00:48:57
otro bucle que se ejecute
00:48:59
cont veces.
00:49:01
Y en cada iteración
00:49:03
un bucle que se ejecute cont veces
00:49:05
y vaya mostrando los numeritos. 1, 2, 3
00:49:07
hasta cont. Ese será un bucle.
00:49:09
Para mostrar esta línea
00:49:11
tendremos que hacer un bucle
00:49:13
que vaya mostrando
00:49:15
todos los números comprendidos
00:49:17
entre 1 y cont.
00:49:19
¿No? Para mostrar todos los números
00:49:21
comprendidos entre 1 y cont, pues un bucle
00:49:23
que se ejecute cont veces
00:49:25
y vaya mostrando todos entre 1 y cont.
00:49:27
Bueno, pues esto lo tendremos que hacer
00:49:29
con otro bucle, entonces.
00:49:31
¿Vale? Pues lo podemos
00:49:33
hacer así. Venga, un bucle
00:49:35
bucle que
00:49:37
muestra
00:49:39
todos
00:49:41
los números desde
00:49:43
1
00:49:45
hasta cont.
00:49:47
Eso es lo que queremos, un bucle
00:49:49
que vamos mostrando todos desde 1 hasta cont.
00:49:51
¿Vale? Pues bueno, podemos hacer
00:49:53
una variable auxiliar cualquiera
00:49:55
que empieza valiendo 1
00:49:59
y ahora ya
00:50:01
mientras
00:50:03
aux sea
00:50:05
menor o igual que cont
00:50:07
que es el último que quiero mostrar
00:50:09
menor o igual que cont que es el último
00:50:11
pues hacemos
00:50:13
a la corrección, hacemos
00:50:15
mostrar aux
00:50:17
concatenado con un espacio para que no nos quede
00:50:19
muy pegadito al otro
00:50:21
y luego incrementamos
00:50:23
aux
00:50:25
¿Vale? O sea
00:50:35
todo este bucle de aquí
00:50:37
hace esto
00:50:39
primero te muestra 1
00:50:41
luego te muestra 2
00:50:43
luego 3 y así hasta cont
00:50:45
que es justo lo que queríamos, mostrar
00:50:47
todos los números 1, 2, 3 hasta cont
00:50:49
es justo lo que queríamos, esto hemos tenido que hacer en un
00:50:51
bucle, hemos tenido que hacerlo en un bucle
00:50:53
¿Vale? Pues este bucle se ha quedado
00:50:55
dentro de esto. ¿Vale? Vamos siempre
00:50:57
por partes
00:50:59
Aquí lo único es que
00:51:03
el
00:51:05
println
00:51:07
me mete un salto de línea
00:51:09
entonces yo mostraría 1 y el 2 abajo
00:51:11
y el 3, no, yo quiero que estén en la misma línea
00:51:13
todos hasta cont
00:51:15
pero tenemos otra variante del system.out.println
00:51:17
que es el system.out.print
00:51:19
que no te mete el salto de línea
00:51:21
pues este ya si que se adapta más a lo que queremos
00:51:23
entonces este bucle que nos iría haciendo
00:51:25
primero muestra el 1
00:51:27
luego muestra el 2
00:51:31
luego muestra el 3, todos seguidos, luego muestra el 4
00:51:33
así hasta cont
00:51:35
así hasta cont
00:51:37
pues justo lo que queríamos, esto, justo eso
00:51:39
es lo que necesitábamos, justo eso
00:51:41
pues ya está, con esto
00:51:45
hemos conseguido esto
00:51:47
con este bucle de aquí
00:51:49
hemos conseguido mostrar
00:51:51
esa línea
00:51:53
que queremos que se quede más bonito
00:51:57
compacto una línea, vamos a hacer el postincremento
00:51:59
aquí, lo hacemos aquí
00:52:01
entonces me lo quito de aquí
00:52:03
lo elimino y ya está
00:52:05
y puedo quitar hasta las llaves y todo
00:52:07
pero eso ya es lo de menos
00:52:09
hacerlo justo aquí después de mostrar
00:52:11
porque println
00:52:21
te muestra lo que sea y te salta la línea
00:52:23
entonces
00:52:25
el 1, 2, 3, no te aparecerían en la misma línea
00:52:27
te aparecerían en
00:52:29
líneas separadas
00:52:31
yo creo que aparecerían en la mina
00:52:33
eso, vale
00:52:35
entonces
00:52:41
esto que tenemos aquí hecho
00:52:45
estaría entendido
00:52:47
hemos visto que es un bucle
00:52:49
que N mayúscula veces
00:52:51
está haciendo mostrar
00:52:53
una línea
00:52:55
y esa línea
00:52:57
que tengo que mostrar
00:52:59
depende del número de iteración
00:53:01
en la que estoy
00:53:03
por eso hemos metido el contador
00:53:05
cuando nos hemos dado cuenta de eso
00:53:07
de que lo que tengo que mostrar
00:53:09
depende de la línea en la que estoy
00:53:11
luego marquemos las líneas con un contador
00:53:13
la 1, la 2, la 3
00:53:15
le ponemos puesto el incremento
00:53:17
ejecutamos a ver que sale
00:53:21
vale
00:53:23
entonces uno se pone a hacer pruebas
00:53:27
venga, 3
00:53:29
para que no sea un triángulo muy grande
00:53:31
pues no ha salido
00:53:33
ha salido el triángulo
00:53:35
pero roto
00:53:37
o sea, ha puesto el 1
00:53:39
pero 1, 2 que tendría que ir abajo lo ha puesto ahí
00:53:41
y 1, 2, 3 que tendría que ir abajo
00:53:43
lo ha puesto ahí
00:53:45
era de esperar
00:53:47
porque claro, lo que nos falta es
00:53:49
lo que nos falta es
00:53:51
cuando ya hemos terminado la línea
00:53:53
antes de pasar a la siguiente
00:53:55
ahí sí que queremos bajar
00:53:57
ahí sí
00:53:59
entonces ¿cuándo hemos acabado una línea? aquí
00:54:01
aquí ya hemos acabado una línea
00:54:03
y ya vamos a pasar a la siguiente
00:54:05
pues ahí sí que queremos saltar
00:54:07
bueno, pues no pasa nada, forcemos un salto de línea
00:54:09
así
00:54:11
pasándole un println sin nada
00:54:13
entonces el println no ha mostrado nada
00:54:15
pero como es un ln
00:54:17
no ha mostrado nada abajo
00:54:19
entonces esto simplemente
00:54:21
metí un salto de línea y ya está
00:54:23
queda lo que necesitábamos
00:54:27
meter un salto de línea
00:54:29
entre cada una de las líneas
00:54:31
vale, entonces
00:54:33
volvemos a hacer la prueba
00:54:35
venga, le metemos 8
00:54:37
vale, este ya sí
00:54:39
vale
00:54:41
vale, pues otra vez como siempre
00:54:50
tenemos que resolver el problema por partes
00:54:54
identificar
00:54:56
¿qué es este problema mío así en general que hace?
00:54:58
imprimir muchas líneas
00:55:00
pues un bucle
00:55:02
donde en cada iteración imprimo una
00:55:04
y ahora ya me planteo
00:55:06
¿y cómo imprimo cada línea?
00:55:08
pues ahí ya me tienen que salir los recursos
00:55:10
y es ah, pues lo que imprimo depende del número de línea en la que estoy
00:55:12
vale, podría poner un contador
00:55:14
que se va incrementando, que me dice en qué línea estoy
00:55:16
a partir de ahí ya son los recursos
00:55:18
los recursos de programación que a uno se le van ocurriendo
00:55:20
en función de las cosas que ya hemos visto
00:55:22
y en las que nos podemos apoyar
00:55:24
vale, nos podemos apoyar
00:55:26
en contadores, en sumadores, en todo eso
00:55:28
vale
00:55:36
entonces lo único es que este programa
00:55:38
pues nada, si está bien hecho, ya lo hemos comprobado
00:55:40
pero hombre, por su naturaleza
00:55:42
queda más claro
00:55:44
si utilizamos la tercera sintaxis
00:55:46
que le permite java de un bucle
00:55:48
que es la sintaxis de for
00:55:50
conocemos la while
00:55:52
la de do while
00:55:54
y nos falta una
00:55:56
vale, bueno, nos falta una con matices
00:55:58
porque
00:56:00
vale, bueno, pues vamos a parar aquí
00:56:02
un momentito
00:56:04
y
00:56:06
y ya lo encontramos
00:56:08
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 9
- Fecha:
- 31 de octubre de 2023 - 13:43
- Visibilidad:
- Público
- Centro:
- IES ROSA CHACEL
- Duración:
- 56′ 11″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1280x720 píxeles
- Tamaño:
- 1.04