20261023 Bucles_ejerc3_for - 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:
Pues así calcado, porque estamos un poco todavía pensando muy detenidamente, con pinzas, dime, a ver, un momento, vale, pues entonces, si entendemos el ejercicio, después de haberlo leído, haber analizado un poquito lo que significa a elevado a b, pues ya llegamos a la conclusión de que es a por a por a por a b veces,
00:00:02
entonces es hacer una multiplicación acumulativa
00:00:37
muchas multiplicaciones
00:00:42
entonces ya identificamos que eso es lo que tenemos que hacer
00:00:43
y ya identificamos que es el patrón entonces de siempre
00:00:46
este para la suma acumulativa
00:00:49
y este para la multiplicación acumulativa
00:00:51
cambia el más por el por y el valor inicial
00:00:54
luego ya para cada ejemplo tenemos que ver
00:00:57
cómo ponemos la condición y de dónde sale este factor
00:01:01
Bueno, pues, bueno, vamos a leer a y b lo primero
00:01:04
Entonces, leemos a y b lo primero de todo
00:01:09
Introduzca base de la potencia
00:01:21
Introduzca la base, pues venga, la base igual
00:01:29
Uy, perdón
00:01:36
Pues venga, la base igual a scan.nextint
00:01:38
Vale, ahora introduzca el exponente
00:01:49
Introduzca el exponente de mi potencia
00:01:52
Pues, bueno, perdón, la base es A
00:02:02
Y el exponente es B
00:02:06
Vale, ya tenemos A elevado a B
00:02:08
Y ya sabemos que esto, por tanto, tiene que ser
00:02:10
A por A y por A
00:02:12
Y así un montón de veces
00:02:15
¿cuántas? b veces, vale, bueno, pues es una multiplicación acumulativa, pues nada, un acumulador, un acumulador, en este caso, como es multiplicación, inicializado a 1,
00:02:18
y ahora ya esto se va a ejecutar en un bucle
00:02:33
¿cuántas veces? pues no lo sé, tendremos que definirlo
00:02:37
y ahora en este bucle la operación que yo tengo que hacer es
00:02:41
acum igual a acum por
00:02:45
el factor que yo quiero multiplicar cada vez
00:02:51
esta sería la idea, ¿vale? y el resultado
00:02:55
sería pues esto, ¿vale? ahora ya esto
00:02:59
si entendemos lo que hay debajo de esto
00:03:03
que se supone que lo tenemos que entender
00:03:06
ahora ya se trata de que yo adapte
00:03:08
este factor que es lo que se va multiplicando cada vez
00:03:11
y que adapte esto
00:03:14
¿vale? ¿qué es lo que se va multiplicando?
00:03:16
A todo el rato
00:03:19
todas las multiplicaciones son por A
00:03:20
no son por nada variable
00:03:22
si fueran por algo variable
00:03:25
yo tendría que declarar aquí esto como una variable
00:03:26
porque es por algo variable
00:03:30
y ahora esta variable, darle aquí el valor que fuera, el valor que correspondiera, hasta construir en cada iteración el factor nuevo, pero esto es mucho más sencillo, este factor es a todo el rato, todo el rato es por a, por a, por a, pues mira, tan sencillo como era ya, no necesito una variable adicional para construir ese factor ni nada, por a todo el rato,
00:03:33
entonces la primera vez que entro aquí
00:03:58
hago 1 por A
00:04:01
y actualizo el acumulador
00:04:03
la siguiente vez que entre
00:04:04
ese 1 por A se multiplica por otro A
00:04:07
ya van 2, A por A
00:04:09
la siguiente vez que entre
00:04:11
ese A por A
00:04:13
se multiplica por un A adicional
00:04:14
ya van 3, A por A por A
00:04:17
y así todo el rato
00:04:18
cada iteración de este bucle
00:04:21
multiplico por un A adicional
00:04:23
pues esto ya está casi hecho
00:04:25
pero claro, me falta, oye
00:04:28
y cuan
00:04:30
ese bucle, cuantas veces
00:04:32
tengo que hacerlo, hasta cuando
00:04:35
bueno, pues aquí la condición
00:04:36
digo, lo tienes que hacer B veces
00:04:38
esa es una condición muy concreta
00:04:40
y es, tienes que asegurarte
00:04:43
de que este bucle se hace B veces
00:04:44
que se hace B veces
00:04:47
ahhh
00:04:49
pues automáticamente aquí me viene
00:04:50
anda, un contador
00:04:52
yo tengo que contar
00:04:54
las iteraciones del bucle
00:04:55
y cuando este bucle se haya hecho exactamente
00:04:58
B
00:05:00
ya termino
00:05:01
pues ahí ya me viene, bueno, tengo que contar
00:05:03
tengo que contar vueltas del bucle
00:05:06
contarlas
00:05:09
claro, ya tenemos la estructura
00:05:09
de contar en la cabeza, sabemos que yo puedo
00:05:12
contar las veces
00:05:14
que paso por un bucle
00:05:16
pues vamos a poner un contador
00:05:17
y las vamos a contar
00:05:20
y cuando ese contador llegue a B
00:05:22
adiós
00:05:24
pues venga, vamos a poner ahí un contador
00:05:26
para contar
00:05:28
todas las cuentas se inician a 0
00:05:29
y ahora este por ser un contador
00:05:32
en cada vuelta del bucle lo incremento
00:05:34
esta es mi estructura de contador
00:05:36
¿no? un contador
00:05:38
que empieza su cuenta a 0
00:05:40
y se incrementa en 1
00:05:42
cada vuelta del bucle
00:05:44
y así va contando
00:05:45
vale, pues este contador
00:05:47
me permite ahora fijar la condición
00:05:50
qué condición pongo aquí
00:05:52
para asegurarme que el bucle
00:05:55
se va a ejecutar exactamente
00:05:58
b veces
00:06:00
tengo la variable b que la acabo de leer
00:06:01
y tengo la variable cont
00:06:04
que se va incrementando de uno en uno
00:06:06
vale, pues decidme qué condición
00:06:08
pondríais ahí exactamente
00:06:10
para aseguraros
00:06:12
de que ese bucle se hace exactamente
00:06:14
b veces, en la vez b más 1
00:06:16
ya no entra
00:06:18
qué condición pondríais aquí
00:06:20
díctamela, cont menor o igual que b, casi, pero seguro, vamos a comprobarlo, a ver, tiene sentido, ¿no?
00:06:21
Entra para la vez 0, para la vez 1, para la vez 2, para la vez b, para la vez b más 1 ya no entra, para la vez b más 1 ya no entra, vamos a ejecutarlo, ¿vale?
00:06:46
Entendéis lo que hemos escrito, ¿no?
00:07:00
Y la idea de por qué lo hacemos, estamos contando para saber cuándo tenemos que salir,
00:07:01
que será cuando el opuesto a esto, cuando con ya sea mayor que b, cuando ya se haya salido.
00:07:07
Entonces, vamos a ejecutar esto.
00:07:13
Vamos a probar una operación fácil.
00:07:17
La base es 2 y el exponente es 3.
00:07:20
Nos debería dar 2 elevado a 3, que es 8, ¿no?
00:07:23
Nos debería dar 8 y nos da 16.
00:07:27
parece que lo ha hecho una de más
00:07:31
parece que lo ha hecho una de más
00:07:34
entonces esta prueba nos permite
00:07:36
uy, realmente es una de más
00:07:38
voy a volver a probarlo
00:07:40
porque yo tengo que tratar de aislar bien
00:07:41
mi fallo, caracterizarlo bien
00:07:44
para buscar donde puede venir
00:07:46
voy a hacer con otra prueba
00:07:47
por ejemplo, con 3
00:07:49
elevado a 3
00:07:52
3 elevado a 3 sería 3 por 3, 9
00:07:53
9 por 3, 27
00:07:55
a ver si me sale 27
00:07:57
pues me sale una vez más
00:07:58
27 por 3
00:08:02
con lo cual después de hacer varias pruebas
00:08:03
parece que entra al bucle
00:08:05
una vez más de las que debería
00:08:07
entra una vez más
00:08:09
luego entonces una vez que yo ya
00:08:10
he identificado el problema
00:08:12
y es que lo hace una vez más
00:08:14
porque no vale con que yo vea
00:08:16
uy, no lo hace bien
00:08:18
y ponerme aquí de buenas a primeras
00:08:19
a ver qué pasa, no
00:08:22
tengo que identificar bien exactamente
00:08:23
qué está pasando
00:08:26
Pues después de varias pruebas resulta que lo hace una vez de más.
00:08:27
Entonces me puedo ir a la zona peligrosa, que es esta,
00:08:31
que esta es la que me marca la cantidad de veces que se ejecuta.
00:08:34
Entonces me voy aquí y digo, vamos a pensar.
00:08:38
Me pongo yo cabeza CPU y digo, vamos a ver,
00:08:40
en el caso de prueba que yo le he dado, vamos a ver qué está pasando.
00:08:44
El primer caso de prueba que yo le he dado es A igual a 2 y B igual a 3.
00:08:47
Venga, conti igual a 0, primera vez que entra.
00:08:54
para cont igual a 0, la primera vez que entra me hace 1, porque acum es 1, por a, por 2,
00:08:56
luego para cont igual a 0 es la primera vez que entra en el bucle,
00:09:04
y la primera vez que entra en el bucle el acumulador se queda con a, vale,
00:09:08
y cont se queda con 1, cont se queda con 1, porque se ha incrementado, volvemos,
00:09:14
¿cont que es 1 es menor o igual que b que es 3?
00:09:22
sí, pues entramos una segunda vez
00:09:26
en esta segunda vez, cont es igual a 1
00:09:28
y la multiplicación que se hace es
00:09:31
lo que tenía en la acumula anterior, que era a
00:09:34
lo que tenía en la acumuladora anterior, que era a
00:09:36
se multiplica por a
00:09:40
luego ahora ya mi acumulador será
00:09:42
el a anterior que ya arrastraba por el nuevo a
00:09:45
a por a, vale
00:09:49
y cont se queda incrementado, se quedará a 2
00:09:50
¿2 es menor o igual que 3? Sí, pues entra una tercera vez
00:09:53
con cont igual a 2, esta es mi tercera vez, cont igual a 2
00:09:58
ahora, a mi acumulador anterior que tenía
00:10:03
a por a, a mi acumulador anterior que tenía a por a
00:10:06
le multiplico por el nuevo a, ya van 3
00:10:11
a por a por a, y eso al nuevo acumulador
00:10:14
A por A por A, vale, y cont se incrementa, se queda valiendo 3, ¿3 es menor o igual que 3? Sí, pues ahí está el error, está entrando una cuarta vez para cont igual a 3, y se está pasando, porque ahora nos hace A por A, por A, que tenía de antes los 3 A por el nuevo A,
00:10:18
luego el error está
00:10:39
que me ha entrado una vez de más
00:10:41
efectivamente me entra cuando contes igual a b
00:10:43
y yo no quiero que me entre cuando contes igual a b
00:10:46
esa última vez no la quiero
00:10:49
¿cómo puedo cambiar esta condición entonces?
00:10:51
¿cómo la transformo para que no me entre en la vez b?
00:10:55
esta sería una manera
00:11:05
cont menor o igual que b menos 1
00:11:06
vale, pero es más fea y más larga
00:11:08
que si ponemos directamente
00:11:12
cont menor que b
00:11:14
que es lo que habitualmente nos vamos a encontrar
00:11:15
uy, vale
00:11:18
si ponemos
00:11:23
cont menor que b, no es lo mismo
00:11:24
porque cont menor que b es
00:11:26
párate en la vez
00:11:29
b menos 1, párate en la b
00:11:30
menos 1, no te pares en la b
00:11:32
sino párate en la b menos 1
00:11:35
entonces acostumbraos
00:11:37
más a esta idea, cuando queréis
00:11:39
llegar a valores entre 0 y b
00:11:41
no pongáis menor o igual que b menos 1, que es más feo, poner menor que b, que es lo mismo, ¿verdad?
00:11:43
No es lo mismo poner menor o igual que b menos 1 que poner menor que b, no es lo mismo, es igual, ¿verdad?
00:11:52
Poner menor o igual que b menos 1 que poner menor que b, es la misma condición, es idéntica, si b es 0, ¿verdad que sí?
00:12:01
entonces
00:12:08
esta condición es más bonita
00:12:11
y más común ponerla así
00:12:13
que ponerla arriba
00:12:15
aunque son la misma
00:12:16
me da igual decir menor o igual que b menos 1
00:12:18
que decir menor que b
00:12:20
con menor o igual que b menos 1
00:12:21
llego hasta b menos 1
00:12:23
con menor que b llego hasta b menos 1
00:12:25
en ambas condiciones
00:12:28
llego hasta b menos 1
00:12:30
son la misma
00:12:31
pero esta de abajo es más bonita
00:12:32
vale pues este era nuestro único problema
00:12:34
de este ejercicio, que este menor o igual es un menor que b, ¿vale?, para que se quede en la b menos 1,
00:12:40
entonces si ahora ejecutamos esto, si ahora ejecutamos esto, pues seguramente ahora ya se lo haga,
00:12:51
base 3, exponente 3, 8, muy bien, base 3, exponente 3, 27, vale, ¿entendido?, bueno, pues resulta que así sin comerlo ni beberlo,
00:13:02
nos hemos encontrado en este ejercicio con una situación que se da muy a menudo,
00:13:26
un bucle
00:13:31
que yo quiero que se ejecute
00:13:33
un número de veces exacto tal cual
00:13:35
que yo ya sé de partida
00:13:38
¿vale?
00:13:40
en este caso yo quería que esto se ejecutara
00:13:41
B veces
00:13:44
¿vale? B veces
00:13:46
ya lo sabía de partida
00:13:50
no tengo ni que poner aquí una condición extraña
00:13:52
ni nada
00:13:55
he tenido que inventarme un contador
00:13:56
para poder poner ese hecho
00:13:59
que se ejecutara B veces
00:14:01
como si tenga otro programa
00:14:02
yo tengo 30 alumnos
00:14:04
y les voy a poner la nota
00:14:06
pues yo sé
00:14:08
que el trozo de código
00:14:10
poner nota lo tengo que hacer exactamente
00:14:12
30 veces
00:14:14
vale, hay una situación
00:14:15
de código que se puede dar a menudo
00:14:18
que es, tú tienes un bloque de código
00:14:20
que sabes exactamente
00:14:22
la cantidad de veces
00:14:24
que se tiene que ejecutar
00:14:26
en este caso era B, lo que tenga B
00:14:27
no sé lo que tendrá B, pero es exactamente B veces
00:14:29
bueno, pues cuando tenemos esa situación
00:14:32
tal cual
00:14:35
hay una tercera y última
00:14:36
sintaxis de bucle
00:14:39
que se adapta más, queda más bonita
00:14:40
que es el famoso
00:14:42
bucle for
00:14:45
¿vale?
00:14:45
entonces la sintaxis de bucle for
00:14:48
se adapta a la situación
00:14:50
de bucle
00:14:53
que se va a repetir exactamente
00:14:54
una cantidad de veces que yo sé de partida
00:14:56
la sé antes de entrar
00:14:59
entonces puedo hacerlo así
00:15:00
con un contador como hemos hecho aquí
00:15:03
empieza valiendo cero, lo incremento
00:15:04
y mientras sea menor que el número de veces
00:15:06
siempre podría hacerlo así
00:15:08
este bucle, sea lo que sea que hay aquí
00:15:09
se va a repetir exactamente
00:15:12
B veces, con esta estructura de contador
00:15:14
ya está, lo tengo
00:15:16
pero esta sintaxis
00:15:17
me permite
00:15:21
hacer esto mismo
00:15:23
sin poner el contador
00:15:24
porque la sintaxis se presta a eso
00:15:25
y vale para eso realmente
00:15:29
vale, pues vamos a ver cómo es la sintaxis del bucle for
00:15:30
entonces, a ver, vale, pues
00:15:34
vale, sintaxis del bucle for
00:15:45
bueno, pues en vez de while, aquí se pone for
00:16:07
vale, for, y entre paréntesis
00:16:14
las cositas que sean, ahora lo ponemos
00:16:20
y aquí el código que se repite, vale, ahora
00:16:23
La pregunta es, ¿qué se pone aquí dentro?
00:16:36
Dentro del while se ponía una condición, ¿verdad?
00:16:39
¿Aquí qué se pone?
00:16:42
Aquí se ponen hasta tres cosas, separadas por punto y coma.
00:16:43
Hay tres campitos aquí, separados por punto y coma.
00:16:50
¿Vale?
00:16:55
No tienen por qué estar los tres, ahora veremos lo que significa.
00:16:55
Pero lo que sí que tienen que estar es en los puntos y comas.
00:16:58
Si alguno de ellos no está, ahí se queda plantado el hueco.
00:17:01
Ahí se queda plantado.
00:17:04
¿Vale? Porque los separadores de punto y coma sí que tienen que estar.
00:17:06
¿Vale? ¿Qué se pone en cada huequito? Vamos a llamarlos huequito A, huequito B y huequito C.
00:17:10
¿Qué se pone en cada huequito? Pues a ver, en el huequito A se pone una sentencia, la que a mí me dé la gana,
00:17:17
que es la que se llama sentencia de inicialización, que se va a ejecutar cuando el bucle entre por primera vez.
00:17:29
y solo una vez, esa
00:17:36
la sentencia de inicio
00:17:38
podemos llamarla, vale
00:17:42
sentencia de inicio
00:17:44
vale, esa sentencia
00:17:47
se puede poner la que uno le dé la gana
00:17:48
ahora veremos cuál es su uso habitual
00:17:50
esa sentencia
00:17:52
la que yo ponga aquí, sea la que sea
00:17:55
cuando la máquina virtual llega por aquí
00:17:57
plaz, la ejecuta
00:17:59
y luego ya empieza con el bucle
00:18:00
ahora después de
00:18:03
ver esto
00:18:08
¿qué se pone en el huequito B?
00:18:09
se pone la condición equivalente, lo mismo que poníamos en el while,
00:18:14
condición que mientras se cumple tú entras.
00:18:19
Pues esa condición, con el mismo sentido que diría en el while, idéntico,
00:18:23
esa condición se mete ahí, en el hueco del medio.
00:18:28
Y eso funciona igual que el while.
00:18:33
Si esta condición se cumple, haces lo que tengas que hacer y vuelves arriba.
00:18:35
Que se sigue cumpliendo, haces lo que tienes que hacer y vuelves arriba.
00:18:41
que ya no se cumple, se acabó
00:18:44
es como si fuera la condición del while
00:18:46
vale, si la primera vez
00:18:49
que llegas ya no se cumple
00:18:52
ya no hay nada que hacer
00:18:54
se habrá ejecutado esta, eso sí
00:18:55
porque esa se ejecuta nada más llegar
00:18:58
una única vez, esta se habrá ejecutado
00:19:00
pero ya lo que hay dentro del bucle
00:19:02
no, porque lo que hay dentro del bucle
00:19:04
se ejecuta solo si B
00:19:06
es cierta
00:19:07
y por último
00:19:09
¿qué se pone en el hueco C?
00:19:11
si es que uno quiere ponerlo
00:19:14
se pone una sentencia, o incluso varias se podrían poner, que se van a ejecutar una por cada iteración.
00:19:15
Es decir, cuando este bucle esté lanzado, cada vez que entremos se ejecuta lo que hay debajo
00:19:25
y antes de volver arriba se ejecuta C.
00:19:31
Esto se ejecuta por iteración.
00:19:38
no es como la A
00:19:41
que la A se ejecutaba
00:19:44
según llegabas y ya nunca jamás
00:19:50
si tú has entrado en el bucle
00:19:52
cada vez que entres
00:19:56
se hace esto
00:19:57
y luego antes de volver arriba
00:19:59
se hace lo que hayas puesto en C
00:20:01
y se vuelve a evaluar condiciones
00:20:03
es cierta, entras
00:20:05
y se ejecuta C otra vez
00:20:07
es como si C estuviera escrito aquí al final
00:20:10
pero no está escrito aquí
00:20:12
está escrito ahí
00:20:13
que la condición sigue siendo cierta
00:20:14
y vuelves a entrar, se ejecuta esto
00:20:17
y la C también, y se vuelve
00:20:19
arriba, que la condición es cierta
00:20:21
se ejecuta esto
00:20:23
y se ejecuta esta otra vez
00:20:24
y vuelves arriba, que la condición es falsa
00:20:27
ya no entramos más
00:20:29
y se acabó
00:20:31
entonces A se ejecuta
00:20:33
cuando llegas
00:20:35
independientemente de la condición
00:20:36
y una única vez, por eso se llama
00:20:38
la sentencia de inicio
00:20:41
B es la condición del bucle que marca si entras o no entras
00:20:42
y C es una especie de sentencia de epílogo
00:20:47
que se pone aquí y se ejecuta una vez por iteración
00:20:51
ahora la pregunta sería
00:20:55
¿y qué utilidad tiene esta sintaxis de bucle tan extraña?
00:20:58
pues la utilidad natural para la que siempre se usa
00:21:02
aunque se puede usar poniendo aquí lo que te dé la gana
00:21:05
es justo el ejemplo que hemos visto aquí
00:21:08
cuando tienes un bucle que se ejecute exactamente
00:21:11
n veces
00:21:14
porque pones esto, aquí el contador
00:21:15
que se inicializa y aquí el incremento del contador
00:21:18
y ya lo tienes, no hace falta que lo hagas fuera
00:21:20
¿vale? pero bueno, paramos ahora
00:21:22
y lo
00:21:24
y lo ponemos después
00:21:25
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado básico
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado medio
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado superior
- Primer Curso
- Segundo Curso
- Ciclo formativo de grado básico
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 2
- Fecha:
- 25 de octubre de 2026 - 19:37
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 21′ 31″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 308.85 MBytes