Bucles
¿ Que son los bucles ?
Qué pasa si queremos hacer algo varias veces.
Como por ejemplo sumar un número varias veces
let i = 0
console.log("Valor de i=",i)
- Ahora queremos que imprima el valor de i cuando sea cero y sumar 1 a i y volver a imprimir
let i = 0
console.log("Valor de i=",i)
i = i + 1
console.log("Valor de i=",i)
- Ahora queremos hacer esto 100 veces :(
A veces necesitamos que ciertas partes de nuestro código se ejecute varias veces. dependiendo de una condición
Por ejemplo acá tenemos el bucle de una canción.
- ¿ Pero que pasa si el ciclo anterior nunca termina?.
Entonces acá tenemos los bucles para ayudarnos.
El primero bucle que encontramos es el bucle WHILE, que en inglés significa mientras.
ósea mientras se cumpla una condición se ejecutará el código que pongamos entre llaves
Veamos el siguiente código
function ciclowhile(n){
let i = 1;
while(i < n){
console.log(i)
i++;
}
}
ciclowhile(11);
- ¿ Que devuelve este código ?
- a. Imprimir del 0 al 10
- b. Imprimir del 1 al 12
- c. Imprimir del 1 al 10
- ¿ Cual es el último valor mostrado en console.log por este código ? ¿ Por que ?
let i = 4;
while(i){
console.log( i-- )
}
- El otro bucle es el DO WHILE
function ciclodowhile(n){
let i = 1;
do{
console.log(i)
i++;
} while (i < n)
}
ciclodowhile(11);
hacer condición falsa con cero
Después tenemos el bucle más utilizado el bucle FOR
Donde tenemos una inicialización ; un condición y una actualización
for (inicialización; condición; actualización)
- Veamos un ejemplo
function buclefor(n){
for (let i = 0; i < n; i++){
console.log(i);
}
}
buclefor(11);
- Ahora busca tu editor favorito y tratemos de realizar el siguiente ejercicio
/*
----------------------
| |
| |
| |
| |
----------------------
*/
Write a loop that makes seven calls to console.log to output the following triangle:
#
##
###
####
#####
######
#######
/*
MINUTA
CONTAR CANTIDAD DE CALORIAS PARA 1 PERSONA en M SEMANAS
L M M J V S D
P A L F P E A
P = POROTOS = 1200c
A = ARROZ CON HUEVOS = 2500c
L = LENTEJAS = 1230c
F = FIDEOS = 2000c
E = ENSALADA = 900c
*/
Recursión
Recursión es cuando una función sigue llamándose a sí misma, hasta que ya no tiene que hacerlo
La función se sigue llamándose a sí misma, pero con una entrada más pequeña cada vez.
Piensa en la recursión, como la silla musical, en cada pausa se saca una silla, hasta que solamente queda 1
Pero, la función no decide por sí misma cuando parar.
Nosotros le decimos cuando.
Nosotros le damos a la función una condición conocida como caso base.
El caso base es la condición que le dice a la función cuando dejar de llamarse a sí misma.
En el caso de la silla musical , decirle que en la ultima silla pare o en la escondida, cuando pquede un solo jugador
//Cuenta regresiva
// 5
// 4
// 3
// 2
// 1
let cuentaAtras = numero => {
//base case
if (numero === 0) {
return;
}
console.log(numero);
return cuentaAtras(numero - 1);
};
console.log(cuentaAtras(5)) // 5, 4, 3, 2, 1
¿Qué exactamente es lo que pasa aquí?
Si te diste cuenta, lo primero que hicimos fue definir el caso base. ¿Por qué?
Porque la función primero que nada necesita saber cuándo dejará de llamarse a sí misma.
¿Nunca jugarías a una silla musical infinita , o si?
Si no le dices a la función cuándo detenerse, entonces sucederá algo llamado stackoverflow
La pila(stack) se va a llenar con funciones que se están llamando, pero que no regresan ni se quitan de la pila.
1// La entrada actual es 5 2// Es 5 igual a 0 ? 3// No, Ok entonces imprime 5 en la consola. 4// Se llama asi misma de nuevo con el numero - 1 O 5 - 1; 5// La entrada principal es 4 6// Es 4 igual a 0 ? 7// No, Ok entonces imprime 4 en la consola. 8// Repite hasta que la entrada sea 0, y asi la función deja de llamarse a si misma.