Saltar navegación

iterativos - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 13 de octubre de 2026 por Stefano C.

1 visualizaciones

Descargar la transcripción

Voy a grabar esta clase, por lo tanto, si habláis, me dais vuestro consentimiento a grabar esta voz. 00:00:00
Vale, entonces, nosotros estamos viendo los distintos tipos de sentencias de control. 00:00:05
Los condicionales ya lo hemos visto y lo hemos repasado, si no miráis el vídeo anterior. 00:00:12
Hoy empezamos un poquito con los iterativos. 00:00:17
El iterativo es sustancialmente un programa que me permite iterar varias veces en un bloque. 00:00:19
es decir, repetir este bloque una y otra vez y otra vez y otra vez, en base a, veremos qué, ¿vale? 00:00:26
En teoría, como pasaba con los condicionales, que tanto el if, el if else y los switch son todos iguales, 00:00:35
porque tú puedes escribir las cosas de tal forma que valga en un lado o en el otro, 00:00:41
o sea, con el if es suficiente, no serviría nada más, pero es cómodo tener las otras cosas, 00:00:45
lo mismo pasa con el iterativo, tú puedes tener un while, ¿vale? 00:00:51
y con el while es suficiente, ya tienes 00:00:54
el iterativo, ya tienes toda la potencia 00:00:57
que necesitas. Ahora, en determinados 00:00:59
casos, el for 00:01:01
es más útil, más claro, 00:01:03
más interesante. En algunos 00:01:05
casos es más interesante el while. 00:01:07
Si puede, puedo reescribir 00:01:09
el código para que una cosa sea la otra 00:01:11
y la otra sea una cosa, y haremos un ejemplo. 00:01:12
A lo mejor ahora hacemos un ejercicio, 00:01:15
vemos cómo funciona, luego decimos si es lo que 00:01:17
se hace con un for, y lo hacemos con un for. 00:01:18
A lo mejor nos sale peor o mejor. 00:01:20
Y luego está el do while, que es otra alternativa del while, que está ahí por ahí también, ahora la veo. 00:01:22
Pero los tres hacen lo mismo, es darme un bloque de código y te lo repito unas cuantas veces. 00:01:29
¿Para qué me sirve esto? 00:01:36
Nosotros hemos hecho ejercicios de info, donde se decía, oye, mira, haz esta cosa tres veces, haz esta cosa cinco veces, ¿vale? 00:01:38
Mientras que yo tenga un número concreto y finito de cosas para hacer, ¿no? 00:01:46
El ejercicio que hemos hecho la otra vez de el ordenador se inventa un número 00:01:50
y luego lo esconde y me pregunta a mí, dame un número, 00:01:55
y si lo pilla me dice bien, y si no me dice si es mayor o menor, ¿vale? 00:01:59
Nosotros en el ejercicio con el IS le decimos tres veces, cinco veces, ¿vale? 00:02:03
Porque el IS no puede rehacer código anterior, 00:02:08
puede solo decirte si lo hace o no lo hace, ¿vale? 00:02:13
Entonces, el problema es que mientras tú tengas en mente cuántas vidas tiene que tener este juego, cuántas veces vas a hacer esto, te sale una cosa terrible, porque con el if viene un if dentro de un if, dentro de otro if, dentro de otro if, una cosa terrible, luego de mantener que si tiene que cambiar algo, has repetido muchas veces el mismo código, entonces si encuentras un error lo tendrás que resolver en 25 sitios donde lo has copiado, pero funciona. 00:02:16
Cuando no funciona y cuando no puedo utilizar un if, es cuando no sé cuántas veces tú repites esto. 00:02:46
Cuando a priori tú sabes que antes o después mi programa funcionará, acabará, pero no sabes si en una, dos o veinticinco iteraciones. 00:02:55
No lo sabes. Ahora, si no lo sabes, no puedes poner un cierto número de if. 00:03:06
el número de ILS. Yo voy a decir, ah, mira, hago un cajero automático, ¿vale? Cajero automático, tú vas allí, metes dinero, 00:03:12
solamente la carta, papapá, quiero 100 euros, pues te pillas 100 euros. ¿Cuántas ven? ¿Pongo 20 veces? Pues los primeros 20 00:03:20
que van allí a sacar dinero, sacan dinero, el 21esimo, ha acabado el programa, se acabó, tú nada. Tú apagas el ordenador, 00:03:30
lo enciendes otra vez, venga, otros veinte. 00:03:39
Eso, hay programas 00:03:43
que están pensados para no acabar nunca. 00:03:46
Que es, a la vez, una cosa buena 00:03:49
y una cosa mala. 00:03:52
Porque hasta ahora, 00:03:53
hasta los condicionales, 00:03:55
yo no puedo hacer 00:03:57
un programa infinito. 00:03:59
Es imposible. 00:04:02
Mi programa antes o después acaba. 00:04:03
A partir de la introducción 00:04:06
de los wild, 00:04:07
yo puedo hacer programas que no terminan nunca. 00:04:09
Y si yo quiero que el programa no termine nunca, muy bien. 00:04:13
Si yo me he equivocado y quería que el programa no terminara nunca, 00:04:18
o sea, terminara, perdón, y en vez de terminar, no terminara nunca, 00:04:22
es un problema grave. 00:04:26
¿Vale? 00:04:27
Vosotros podéis hacer while infinitos y os pasará, sobre todo al principio. 00:04:28
¿Vale? 00:04:33
Cuidado, porque si os dais cuenta que vuestro programa está allí, 00:04:34
pensando y haciendo algo, pues lo lanzáis otra vez, lo lanzáis otra vez, lo lanzáis otra vez y luego tenéis ocho procesos que están yendo a tope, 00:04:39
haciendo siempre el mismo cálculo miles y miles de veces y llega un momento que vuestro pobre ordenador sufre, ¿vale? 00:04:47
Esas cosas allí son útiles solo por una cosa, en invierno, cuando hace frío, ¿vale? 00:04:55
Entonces ponéis unos 7, 8, while a trabajar mucho, vuestro ordenador calienta mucho y os ponéis detrás, el ventilador detrás, calentando vuestras manos. 00:05:01
Única cosa para que sirve while, this, that, ¿vale? 00:05:13
Entonces, vamos a verlo. 00:05:17
Estructuras iterativas, ¿vale? 00:05:26
Las estructuras iterativas permiten repetir un determinado bloque más de una vez. 00:05:28
mientras una condición sea verdadera, 00:05:33
o sea, el while me dice que tengo una condición 00:05:37
y mientras esta condición sigue verdadera, 00:05:40
pues repito el código. 00:05:45
Llego al final y la evalúo otra vez. 00:05:47
¿Sigue verdadera? Sí, repito el código. 00:05:49
Hago todo el código y al final vuelvo arriba y digo 00:05:51
¿sigue verdadera? Sí, sí. 00:05:53
Y así, así, así, hasta que esta condición se volverá falsa. 00:05:55
Cuando la condición es falsa, salto el bloque 00:06:02
y sigo por desde el bajo. Este es el while. Ahora, yo como programador tengo que cerciorarme 00:06:05
que la condición antes o después cambia. Si la condición que yo he puesto no cambia 00:06:16
nunca dentro del bloque de mi while, entonces eso será o siempre true o siempre false, 00:06:27
Si es false, no lo ejecutaré nunca. 00:06:34
Si es true, entraré dentro y nunca saldré de este núcleo. 00:06:36
Entonces, si mi condición se basa sobre la variable x, 00:06:41
hago para decir, 00:06:45
debería en algún lado de mi código dentro del bloque del while 00:06:46
modificar esa x. 00:06:52
Si yo hago una condición que se basa sobre una variable x 00:06:55
y no la toco nunca, no hago nada dentro del cuerpo del while, 00:06:59
eso quiere decir que el valor que tendrá al principio no cambiará nunca. 00:07:05
Y por lo tanto es un poco. 00:07:09
¿Sí? 00:07:12
Otra opción que yo quiero para utilizar los bucles 00:07:13
es que sepa que esta cosa de aquí la tengo que hacer 25 veces. 00:07:17
Esta cosa de aquí la tengo que hacer 77 veces. 00:07:22
Sé el número de veces que quiero repetir esta cosa. 00:07:25
En ese caso, hablamos más de un for. Un for me permite hacer una cosa por un determinado número de veces. 00:07:28
Cuidado, no es que tú tengas que saberla a priori. Yo hago mi programa y digo, este programa siempre se ejecutará cien veces. Pues un for. 00:07:37
a lo mejor me lo dice el usuario 00:07:52
a lo mejor al principio del programa 00:07:55
dice, usuario, ¿cuántas veces 00:07:58
los quieres hacer? 37 00:07:59
y este 37 se guarda 00:08:01
en la variable final 00:08:04
no, final no, variable 00:08:05
sí 00:08:07
y ahora 00:08:08
antes cuando he programado no sabía 00:08:10
que era 37 veces, pero ahora sé 00:08:14
que son 37 veces, por lo tanto es un 00:08:16
foco 00:08:18
ahora lanzo otra vez el programa 00:08:18
el siguiente usuario me pone 56 00:08:22
en vez de 37, pues voy a repetir 00:08:25
esta cosa 57 veces 00:08:27
en vez de 36. Pues pero sé 00:08:28
cuántas veces van a ser. 00:08:30
¿Qué se me explica? O sea, no lo sé 00:08:32
a priori, pero llegará un momento 00:08:35
en los ejemplos más lógicos. 00:08:36
Yo quiero pillar una palabra 00:08:39
y hacer algo 00:08:40
por cada carácter de esa palabra. 00:08:43
¿Es un for o un why? 00:08:46
Por. Porque yo pillo 00:08:49
la palabra, independientemente de la palabra 00:08:50
que tú me hayas dado yo sé cuántas letras tiene me has dado gato son cuatro letras entonces sé 00:08:52
que no tendré que hacer cuatro veces me has dado supercalifragilisticexpialidox son más vale pero 00:09:01
yo sé que es cada uno de ellos si entendéis lo que quiero decir que es un while vale el comando while se usa 00:09:11
cuando quiere repetir un cierto bucle 00:09:23
mientras una condición sea verdadera. 00:09:24
Entro de aquí y me pregunto 00:09:27
¿la condición es verdadera? 00:09:28
Sí, entonces hace unas instrucciones 00:09:29
y vuelve atrás, antes de la condición. 00:09:32
¿Es verdadera? Otra vez. 00:09:35
¿Es verdadera? Otra vez. 00:09:36
Cuando será falsa, te saltas estas instrucciones 00:09:38
y sigues adelante. 00:09:41
Esto es un while. 00:09:43
Esto es como se escribe un while. 00:09:49
Y si es igual a cero, 00:09:52
mientras y sea menor o igual a diez, 00:09:53
y más más que hace este magnífico programa 00:09:55
más que hace este programa 00:10:07
50 de 1 a 10 00:10:11
¿Qué sentido? 00:10:15
No cuento 00:10:16
Vamos con 1, 2, 3, 4, 5 00:10:17
Bueno, quizá por el cero 00:10:19
0, 1, 2, 3, 4 00:10:29
¿Hasta cuándo? 00:10:32
Hasta el día 00:10:34
¿Esto de qué escribo? 00:10:34
Los números de 0 a 10 00:10:39
Ya, yo te entiendo 00:10:41
Pero es que informar 00:10:42
es eso también 00:10:44
Ser informado quiere decir ser muy 00:10:45
rígido en estas cosas, ¿vale? 00:10:48
No es lo mismo hacer de 1 a 10 00:10:50
que hacer de 0 a 10 si es 00:10:53
una multiplicación. Si yo estoy multiplicando 00:10:54
todos los números entre ellos, antes lo multiplico por 1 00:10:56
luego por 2, si meto el 0 00:10:58
el resultado es 0. Y si no lo meto 00:11:00
el resultado será distinto de 0. 00:11:02
Entonces, cuidado con lo que hace. 00:11:04
¿Sí? Este de aquí es un 00:11:06
programa que empieza desde 0, 00:11:08
entra aquí dentro, me queda de 0, es menor que o igual 00:11:10
a 10, sí. Entonces, escríbelo 00:11:12
y suma 1. 00:11:14
Ahora ahí vale 1. 00:11:16
Vuelvo aquí, 1 es menor que 10, igual a 10, sí, escríbelo y le da suma 1, 2, 3, 4, 5, 6, llega al 10 y dice, 10 es menor o igual que 10, sí, la condición sigue la verdadera. 00:11:18
Entro aquí, escribo 10, entonces 10 lo escribe, va a 11, llega aquí y dice, es fácil, aquí abajo, ¿cuánto vale? 11, porque en la última vez cuando escribe 10, suma 1 y va a 11, 00:11:30
vuelve aquí, 11 no es 00:11:52
menor o igual a E, y sale. 00:11:54
Pero dentro de esta variable ahora tengo 11. 00:11:55
Hasta así 00:11:59
no lo he escrito nunca. 00:12:00
¿Entiendes? 00:12:03
¿Cómo podría 00:12:05
escribir los números 00:12:06
de 1 00:12:07
a 10? 00:12:09
De 1... 00:12:16
De 1 a 10. 00:12:16
¿Cómo lo he dicho? 00:12:21
Pones 1 aquí, ¿no? 00:12:30
A 10. 00:12:31
Sí, ya está. ¿Cómo pondríais los números de 1 al 11? 00:12:32
¿Cómo? 00:12:37
Arriba el 1 y abajo el 10. 00:12:44
1 y 10. Y 11. 00:12:46
¿Y otra forma? 00:12:49
Quitas el igual y pon el 12. 00:12:51
1 y 12 es igual. Vale, ¿otra forma? 00:12:53
Números de 1 a 11. Los dejas así, pero invertes estos dos. 00:13:00
antes haces la suma y lo escribes 00:13:11
entonces la primera vez, esto valdría 0 00:13:16
entra, pero suma 1, 1 00:13:18
y lo imprime, entonces el primero que imprime 00:13:20
es el 1 00:13:22
y la última vez, cuando esto sea 10 que es igual a 10 00:13:22
entra, lo suma 1, es 11 00:13:26
entra allí, lo escribe 00:13:28
y luego saldrá 12 00:13:30
cambiando estas pequeñezas 00:13:31
así, pues, fijaos 00:13:34
que mi condición 00:13:36
sobre que se vaya 00:13:37
sobre comprobar y 00:13:39
y fijaos que dentro del cuerpo 00:13:43
de la cosa, pues por algún lado 00:13:46
y cambia 00:13:48
¿qué pasa si pongo y menos menos? 00:13:49
ahora está, y entonces 00:13:56
¿hasta cuándo? 00:13:57
¿escribe de cero hasta el número? 00:13:59
hasta el infinito 00:14:04
no acaba nunca 00:14:05
es posible que o una cosa 00:14:06
de ese estilo o 00:14:14
cuando llega un momento en que no puedes 00:14:16
más calcular o 00:14:18
llegará un momento en que 00:14:20
me estás pidiendo demasiado explotó pero técnicamente estoy aquí como es un entero 00:14:21
es el cliente cuando llega a menos dos mil millones posiblemente te dirá el siguiente 00:14:29
número no es un entonces se enfadará por lo cual 00:14:33
dubai es lo mismo que un wild pero asumiendo que tú quieres al menos una vez hacer el cuerpo del 00:14:41
programa, del while. El while podría no hacer nunca el cuerpo, ¿vale? El cuerpo, esas son las instrucciones. 00:14:50
He hecho ahí. Si yo pongo aquí 100, el while llega aquí y dice, 100 es menor o igual que 10, falso. Salto y esto 00:14:59
no lo ha ejecutado nunca. 00:15:16
Un while 00:15:19
ejecuta el cuerpo 00:15:19
cero o más veces. 00:15:21
Cero o más. 00:15:25
¿Esto se lo recordará 00:15:26
la base de datos? 00:15:27
¿De uno a uno, de uno a muchos? 00:15:29
Esto es de cero 00:15:32
a muchos. 00:15:34
Sin embargo, si yo no quisiera 00:15:38
de cero a muchos, me diría, oye, esto 00:15:39
una vez lo ejecutas, siempre 00:15:41
lo haces, y luego 00:15:44
ya veremos si lo haces varias veces. Pues en vez de utilizar el while, puede hacer un do while. 00:15:46
Haz esto mientras esta condición. Esto, la primera vez que entra aquí, 00:15:53
esto lo hace una vez de segura. Esto se ejecuta. Cuando llega aquí, 00:16:01
decide si volver al do y hacerlo otra vez o, si esto es falso, salir. 00:16:07
Cuidado con esta cosa. Hay punto y coma. No. Hay punto y coma. Sí. Cuidado, que luego 00:16:16
os equivocáis. ¿Qué pasa si yo hago y, y, punto y coma, y luego escribo esto? 00:16:30
Y, y, menos 10, punto y coma, es para calentarse las manos. 00:16:49
Porque él dice, y el menor que 10, sí, ¿qué hago? Nada, punto y coma, vacío. 00:17:02
Era como el for, o sea, el if. 00:17:15
¿Os acordáis que el if podía no ponerle el bloque? 00:17:19
Si no le pongo el bloque, se aplica a una sola instrucción, a la instrucción que viene después del if. 00:17:22
Esto es lo mismo, si yo pongo punto y coma, me está diciendo que si esto es verdadero, lo que tienes que hacer es punto y coma. 00:17:30
nada 00:17:36
pero entonces ¿qué hará? volverá aquí 00:17:38
y me preguntará otra vez, pero este es verdadero 00:17:40
claro, como no he cambiado nada, seguirá siendo 00:17:43
verdadero, entonces entra otra vez 00:17:45
y hace nada, punto y coma 00:17:47
y como no ha cambiado nada, me preguntará 00:17:48
y es verdadero 00:17:50
y así, así, así, así, para siempre 00:17:52
es un ciclo infinito 00:17:55
¿sí? 00:17:57
¿entienden? 00:18:00
entonces cuidado, que el while no entiende 00:18:01
punto y coma, el do while 00:18:04
para decidir al final he acabado la cosa por si tiene un punto también para diferenciarlo del 00:18:05
baile aquí la diferencia es simplemente esto si yo quiero al menos una vez las instrucciones 00:18:11
ejecutarla como pongo todo ejecutó ese centro y aquí si es verdadero vuelvo a hacerlo una y otra 00:18:18
vez y otra vez y si no menos se puede hacer exactamente lo mismo con wine o dubai yo puedo 00:18:24
hacer un bloque arriba, luego poner un while y el mismo bloque 00:18:32
abajo, entonces lo estoy ejecutando una vez, luego empiezo el 00:18:36
while y aquí ciclo cuántas veces me da la gana, o ponerlo en un 00:18:39
do while y hacerlo una vez y tengo que pensar, este bloque de 00:18:42
código lo voy a ejecutar al menos una vez o no, en base a eso 00:18:47
elijo while o do while. 00:18:52
Yo no soy un gran fan del do while. 00:18:55
Y luego está el for. El for pasa por varias fases. Hace una inicialización. Te dice al 00:18:58
principio algo. Te dice, oye mira, empezamos con una variable que vale esto. Va. Luego 00:19:08
mira una condición. Y te dice, vale, ahora en este momento, ¿esta condición es verdadera 00:19:18
falso. Si es falsa, he acabado, me voy. Si es verdadera, entro aquí dentro, hago unas 00:19:24
instrucciones y antes de volver a hacer las condiciones, que en un while volvía directamente, 00:19:34
hago una fase de actualización, cambio algo, modifico algo y luego vuelvo a hacer la condición. 00:19:40
Entonces, inicializo a un valor, miro la condición, instrucciones, actualizo. 00:19:48
Miro si la condición después de estas actualizaciones ha cambiado o no. 00:19:55
¿Sigue verdadera? Pues lo rehago. 00:19:59
¿Sigue verdadera? Lo rehago. 00:20:01
¿Sigue verdadera? Cuando yo lo he hecho, cuando ya no es verdadera, salgo. 00:20:02
Parecido, ¿vale? 00:20:06
Y se hace así. 00:20:08
Por int igual a cero. 00:20:10
Esta es la inicialización. 00:20:13
Piensa una variable i que empiece a cero. 00:20:15
Esto es como se inicializa. 00:20:19
Esto se hace al principio. 00:20:21
Punto y coma. 00:20:23
Y menor que 10. 00:20:24
Me está diciendo. 00:20:26
Esta es la condición. 00:20:27
Mientras que Y se mayor que 0. 00:20:31
Y antes de volver aquí. 00:20:33
Después de haber hecho el bloque. 00:20:35
Siempre ejecuta este incremento actualización. 00:20:37
O sea, que Y le das más más. 00:20:41
Entonces, el que hace es entrar aquí. 00:20:44
Dice 0. 00:20:46
0 es menor que 10. 00:20:47
Sí, entra aquí dentro. Lo escribo y luego después vuelvo aquí. Pero al volver aquí, incremento y de 1. ¿Se entiende? Hago esta cosa aquí. Podría incrementar de 1, podría incrementar de 7, podría hacer otras cosas, ¿vale? 00:20:48
Pero esto se ejecuta cada vez que yo he acabado el bloque y vuelvo arriba. Lo ejecuto y luego 00:21:08
vuelvo a comprobar si este es verdadero o falso. ¿Que esto se ha vuelto falso? He acabado. ¿Que esto se ha vuelto verdadero? 00:21:18
Esta cosa aquí, por ejemplo, es un FOR que usaréis mil millones de veces porque esta cosa de 00:21:23
aquí se repite cuántas veces? Diez veces. Exactamente diez veces. Por int i igual a cero punto y coma i 00:21:33
menor que n punto y coma i más más, te está diciendo, esta cosa de aquí, repítela n veces. 00:21:46
Pues si yo sé que tengo que hacer una cosa n veces, por ejemplo, tengo cinco vidas, pues esta cosa aquí 00:21:55
ya me da cinco veces. Tengo una palabra con diez letras, pues esta cosa aquí ya me da 00:22:02
diez veces. Pues sustituyo esto con el número de veces que quiero hacer esta cosa. La otra 00:22:07
ventaja de tener esto es que tengo un índice, y está por índex, ¿vale? ¿Qué me está 00:22:17
diciendo? Que en el primer giro esto vale cero, en el segundo vale uno, en el tercero 00:22:23
vale dos, en el tercero vale cuatro, cinco... Me está diciendo en qué ciclo, en qué ronda 00:22:28
estoy. ¿Se puede hacer con un while? Sí. De hecho, esto y el otro tienen que hacer lo mismo. Si yo le pongo aquí un mayor igual en vez que un menor igual, en vez que un menor estricto, hacen lo mismo con lo que hemos visto worldwide antes. Solo que cuando tengo situaciones como esta de un índice que tiene que recorrer todos los valores desde cero hasta otro valor o desde un a otro valor, pues este de aquí es mucho más práctico que el otro. 00:22:33
Ejemplo, intifor igual a 0 y menor que 3 y más más, igual a 10. 00:23:06
¿Funciona? Sí. 00:23:20
Int lo he declarado fuera del for, por lo tanto esto vive hasta después del for, lo puedo reutilizar, ningún problema. 00:23:22
me escribe 0, 1 y 2, porque empieza por 0 y es menor, estrictamente menor que 3, 00:23:31
entonces entrará aquí con 0, entrará aquí con 1, entraré con 2, 00:23:38
cuando entra aquí con 3, irá 2, y saldrá, entonces no me lo escribe. 00:23:42
¿Dudas? Esto explota, porque si yo lo declaro aquí, esto es parte del for, 00:23:50
Y solo existirá dentro del for. 00:24:05
Cuando salgo fuera del for, esta variable aquí era local a este bloque y por lo tanto ya no existe. 00:24:08
Cuando intento utilizarlo me va a decir no. 00:24:17
¿La quiero utilizar fuera? 00:24:20
Entonces la sí. 00:24:22
La declaro antes y luego voy for. 00:24:24
¿La quiero utilizar, no la quiero utilizar después? 00:24:26
Pues toquemos lo que hice. 00:24:29
¿Sí? 00:24:32
Este i, normalmente se usa i, j y k, ¿vale? 00:24:33
Pero podéis utilizar lo que os da la gana. 00:24:38
Esta es una variable. 00:24:41
Yo estoy declarando una variable que existe en este for. 00:24:42
Que será mi contador. 00:24:45
Si hago int contador es igual a hacer contador menor que 3, contador más más, funciona perfectamente. 00:24:47
Fijaos un momento que si no es una i, no funciona. 00:24:54
For anidados. 00:25:04
Una maravilla. 00:25:06
dentro de un ford lo que os molará mogollón que os hará explotar el cerebro vale entonces esto 00:25:07
requiere un poquito de tranquilidad, no, si lo pago aquí, no lo deis, va, entonces estos son un for dentro de un for, vale, antes tengo un for externo y como ejecución dentro de este bloque tengo el for entero, entonces empiezo desde arriba 00:25:16
Y me dice, oye, crea un i que vale 1, ¿vale? 00:25:56
Entonces yo tengo i que vale 1, ¿sí? 00:26:00
i es menor o igual que 2, sí. 00:26:07
Por lo tanto, entro dentro. 00:26:11
Y dentro me encuentro este for, el for interno, 00:26:13
que me dice, oye, existe un j que vale 1, ¿vale? 00:26:15
j vale 1. 00:26:19
Y me dice, j es menor o igual que 2, sí, es 1. 00:26:27
Perfecto. Entra aquí dentro. Entonces me dice, escribe i, un espacio, j, un espacio, i por j. 00:26:32
Entonces esto me escribe i, ¿cuánto vale i? Uno. Un espacio, j, ¿cuánto vale j? Uno. 00:26:44
1 por 1 00:26:54
¿Están de acuerdo? 00:26:58
Ahora, he acabado el foro interno. 00:27:02
¿Dónde voy? 00:27:05
Entonces, 00:27:10
hemos acabado el foro interno. 00:27:11
¿Vale? 00:27:14
Desde aquí, he acabado esta cosa ahí. 00:27:15
¿Dónde voy? 00:27:17
¿Dónde salto? 00:27:21
Ahí. 00:27:26
¿Qué me oyes? 00:27:27
¿Incremento de cuál? 00:27:29
¿Quién incrementa? 00:27:30
¿Y o J? 00:27:32
Porque he acabado el for interno. 00:27:38
Entonces vuelvo a saltar al for interno, porque todavía este comando no ha acabado. 00:27:41
Y lo que haré es ejecutar el incremento del J. 00:27:48
Por lo tanto, J ahora vale 2. 00:27:52
J ahora vale 2. 00:28:01
Pero estoy aquí dentro. 00:28:04
he saltado a este foro de aquí 00:28:05
y me pregunto, ¿2 es menor o igual que 2? 00:28:06
Sí. 00:28:10
Por lo tanto, vuelvo a entrar 00:28:11
en este foro interno 00:28:12
y escribo, y ahora, ¿cuánto vale i? 00:28:14
Uno. 00:28:17
¿Cuánto vale j? 00:28:18
Y un por dos? 00:28:20
Y llego al final del foro interno. 00:28:25
¿Dónde salto? 00:28:27
No. 00:28:30
Al interior. 00:28:31
No lo he acabado todavía. 00:28:34
Bien. Hago el incremento y j se vuelve 3. 00:28:36
Y me pregunto, ¿3 es menor o igual que 2? 00:28:42
No. 00:28:46
Entonces salgo del for. 00:28:48
Y al salir del for, j desaparece. 00:28:51
Ya no existe. 00:28:56
¿De acuerdo con esto? 00:28:59
Llego a estas paréntesis de aquí porque he acabado el for interno 00:29:00
y vuelvo aquí arriba, haciendo el incremento del i. 00:29:05
Es decir, que ahora i vale 2. 00:29:10
Y me pregunto, ¿2 es menor o igual que 2? 00:29:13
Sí, por lo tanto entro aquí dentro. 00:29:17
Y aquí dentro me dice, ¡uy, hay un for! 00:29:20
Créame una variable j. 00:29:23
Creo una nueva variable j. 00:29:24
¿Cuánto vale j? 00:29:27
1 es menor que 2. 00:29:34
Sí, por lo tanto entro aquí dentro 00:29:37
Y escribo 00:29:40
¿Cuánto vale I? 00:29:41
¿Cuánto vale J? 00:29:44
¿Dos por uno? 00:29:46
Sí 00:29:49
Y voy aquí 00:29:50
¿Y desde aquí dónde salto? 00:29:52
Al sol interior 00:29:57
Y aumento J 00:29:58
Va a dos 00:30:03
¿Dos es menor o igual que dos? 00:30:05
Sí 00:30:08
Por lo tanto, entro. ¿Cuánto vale i? ¿Cuánto vale j? ¿2 por 2? Y llego aquí. Y vuelvo aquí, aumentando j. ¿Ahora j vale 3? ¿3 es menor o igual que 2? No. 00:30:09
Por lo tanto, salto esto y llego aquí. 00:30:28
Cuidado que ahora, opa, ya no existe. 00:30:32
Porque he salido de este for de ahí. 00:30:35
Voy aquí, vuelvo aquí arriba y hago el incremento. 00:30:39
Por lo tanto, i se transforma en 3. 00:30:42
Y me pregunto, ¿3 es menor o igual que 2? 00:30:45
No. 00:30:49
Por lo tanto, salgo de este for e desaparece. 00:30:50
Esto es lo que escribo. 00:30:57
Si en vez de 2 le pongo 10 y menor, pues me hace la tabla del, sí, me haría todas las tablas de 1x1, 1x2, 1x3, 1x4, 1x5, por ejemplo, 2x1, 2x2, 2x3, 3x1, 2x3, ¿entendéis? 00:30:58
Pues, sinceramente, ¿cómo funciona esto? 00:31:23
Por cada ciclo del exterior se hacen todos los ciclos internos. 00:31:25
Entonces, ciclo 1, IE1, J1, 2, 3, 4, 5, 6, 7, hasta que salga. 00:31:32
Ahora IBA2, J1, 2, 3, 4, 5, 6, 7, hasta que salga. 00:31:37
J3, I3, J1, ¿sí? 00:31:41
O sea, por cada ciclo exterior se hace todo lo interior. 00:31:45
FOR dentro de FOR o WHILE dentro de WHILE, 00:31:52
o WHILE dentro de FOR o FOR dentro de WHILE, 00:31:55
hacen que mis programas exploten a nivel de complejidad, a nivel de necesidades computacionales. 00:31:58
Mientras que tengo un solo while o cosa por estilo bien, pero while dentro de while o for dentro de for, 00:32:12
tengo que estar, tener mucho cuidado en cómo lo hago. Porque puede que pocos datos para 00:32:18
procesar se vuelvan una cosa muy lenta de procesar. Normalmente tienen una... Si un 00:32:29
programa. La complejidad de un programa se calcula en base al input. Si yo tengo n datos, 00:32:40
me dan n elementos para procesar y mi programa tarda n operaciones en programarla, en resolverla, 00:32:58
dice que está del orden de n. Entonces, ¿me das mil palabras para procesar? Tardo mil 00:33:08
segundos. ¿Me das cien mil palabras para procesar? Pues tardo cien mil segundos. Es lineal. Si 00:33:16
hago esto, cuántas palabras me das, o cuántos datos me das, cuántos segundos tardo, es 00:33:23
lineal. Esto puede ser un poquito más, un poquito menos, pero es lineal. Cuántos más 00:33:31
más datos me das, peor será mi rendimiento, más tarde, pero de una forma lineal. 00:33:39
Si yo tengo for dentro de for, normalmente con n datos estamos hablando de un orden de 00:33:46
n al cuadrado. Entonces ya no tengo esta cosa aquí, tengo esta cosa aquí. Cuanto más 00:33:55
aumente los datos 00:34:08
que proceso, el tiempo 00:34:10
que se necesita 00:34:12
no es lineal. 00:34:14
No es una parábola. Entonces, cuanto 00:34:16
más me alejo, más esto 00:34:18
va para arriba. ¿Rápidamente? 00:34:20
Bueno, bastante rápidamente. 00:34:24
¿Sí? 00:34:26
No tan rápidamente como si 00:34:27
la n fuera el exponente. Si yo tengo 00:34:29
una cosa que es 2 a la n, 00:34:31
exponencial, esto es 00:34:34
parecido, pero mucho más lípido. 00:34:35
¿Sí? 00:34:42
Lo que yo quiero es tener O de log de bien. 00:34:43
Si yo consigo hacer un algoritmo que tiene esta complejidad, 00:34:57
quiere decir que la información, o sea, por cuánto aumente la cosa, 00:35:02
pues esa es la función del log. 00:35:08
Entonces la cosa interesante es que aumento los datos, 00:35:14
pero el tiempo que tardo en procesar estos datos 00:35:18
crece, va creciendo, pero va creciendo lentamente 00:35:22
tengo 100 datos, tardo 100 segundos 00:35:25
tengo 1000 datos, pues a lo mejor tardo 900 segundos 00:35:29
tengo 10.000 datos, a lo mejor 9.000 segundos 00:35:33
voy tardando más, pero menos que se fuera el día 00:35:41
Ahora, estas son cosas avanzadas. Si algún día de estos vais a la universidad, estudiaréis cómo, dado un algoritmo, pueda saber cuál es su coste computacional, ¿vale? Su complejidad. 00:35:46
Y lo que tenéis que hacer es evitar esto, al ser posible evitar esto, bueno, aceptable, bien, hasta mejor. 00:36:07
Hay cosas que son ODC, constantes. 00:36:20
Eso es lo mejor. 00:36:25
¿Has dado un millón de datos? Pues tardo tres segundos. 00:36:26
¿Diez millones de datos? Tardo tres segundos. 00:36:29
¿Siete millones de datos? Pues tres segundos. 00:36:31
Fenomenal. 00:36:35
Hay problemas que no se pueden hacer así. 00:36:37
Problemas que tienes que ir aquí o aquí. 00:36:40
Por lo tanto, todo esto, que es una cosa compleja, que dejáis allí, 00:36:58
si lo habéis entendido bien, si no lo habéis entendido, no pasa nada, 00:37:05
nunca os pediré estas cosas, ni en exámenes, ni en clase, ni nada. 00:37:08
A lo mejor de vez en cuando hablaremos o lo volveré a explicar. 00:37:12
Pues cuando vosotros empezáis a utilizar while dentro de while 00:37:16
O for dentro de for, iterativos dentro de iterativos 00:37:21
Os estáis exponiendo a que estáis entrando en este mundo 00:37:24
¿Vale? 00:37:27
Esto quiere decir que si tú metes 00:37:30
Hagamos una tabla rápida 00:37:33
Pensamos en aquí 00:37:35
Aquí está o de n 00:37:48
Y aquí está o de n al cuadrado 00:37:53
si yo tengo 00:37:56
y aquí está en 00:37:59
si yo tengo 10 datos 00:38:00
asumiendo una cosa mágica 00:38:02
que estos son segundos 00:38:06
¿cuántos tardo aquí? 00:38:07
10 segundos 00:38:09
¿cuánto tardo aquí? 00:38:10
bien, 10 elevado a 2 00:38:15
ahora aumento el doble 00:38:16
si yo tengo 20 00:38:22
datos 00:38:25
¿cuánto tardo aquí? 00:38:26
20 segundos 00:38:29
el doble 00:38:30
¿Cuánto tarda aquí? 00:38:31
400 00:38:34
20 por 100 00:38:35
No es doble 00:38:37
4 veces tanto 00:38:40
Si yo tengo 100 datos 00:38:42
¿Cuántos segundos tarda aquí? 00:38:46
¿Y aquí? 00:38:50
100 por 100 00:38:54
¿Bien? 00:38:55
1, 2, 0 00:38:57
¿Entendéis el problema 00:38:58
de esta cosa aquí. 00:39:02
Y aquí sería hasta peor. 00:39:05
¿Vale? 00:39:08
Aquí tendría 12 a la 10. 00:39:09
Y 24. 00:39:14
Y crece. 00:39:16
Crece más bajo, 00:39:17
pero luego, en un momento que va mucho más a la red. 00:39:20
¿Vale? 00:39:22
Pero la idea de esta aquí es que si yo hago un algoritmo 00:39:23
que va linealmente con el número 00:39:26
de datos, pasa esto. 00:39:28
Doblo los datos, este va al doble de lento. 00:39:29
O sea, tarda más el doble. 00:39:32
triplico los datos 00:39:33
está bien, si en vez de lo hago 00:39:34
con esto, que cuando hago un 00:39:37
iterativo dentro de un iterativo, es posible 00:39:39
que me salga esta cosa aquí 00:39:41
pues me está pasando esto 00:39:43
si hago el doble de datos 00:39:45
hago el doble del tiempo 00:39:47
cuatro veces 00:39:50
si hago diez veces los 00:39:51
datos, pues a lo mejor lo que estoy haciendo es 00:39:53
cien veces más 00:39:55
¿se entiende? 00:39:57
¿dudas? 00:40:00
Vale 00:40:01
Bueno 00:40:05
Esto era 00:40:09
Nuestro 00:40:12
For dentro del for 00:40:13
Y aquí vamos a hacer ejemplos 00:40:14
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Primer Curso
Autor/es:
Stefano Chiesa
Subido por:
Stefano C.
Licencia:
Reconocimiento - No comercial
Visualizaciones:
1
Fecha:
13 de octubre de 2026 - 14:32
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
40′ 27″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
93.11 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid