Bucles

¿ Que son los bucles ?

  1. Qué pasa si queremos hacer algo varias veces.

  2. Como por ejemplo sumar un número varias veces

let i = 0
console.log("Valor de i=",i)
  1. 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)
  1. Ahora queremos hacer esto 100 veces :(

  1. A veces necesitamos que ciertas partes de nuestro código se ejecute varias veces. dependiendo de una condición

  2. Por ejemplo acá tenemos el bucle de una canción.

  1. ¿ Pero que pasa si el ciclo anterior nunca termina?.

  1. Entonces acá tenemos los bucles para ayudarnos.

  2. El primero bucle que encontramos es el bucle WHILE, que en inglés significa mientras.

  3. ósea mientras se cumpla una condición se ejecutará el código que pongamos entre llaves

  4. Veamos el siguiente código

function ciclowhile(n){
  let i = 1;
  while(i < n){
    console.log(i)
    i++;
  }
}

ciclowhile(11);
  1. ¿ Que devuelve este código ?
    • a. Imprimir del 0 al 10
    • b. Imprimir del 1 al 12
    • c. Imprimir del 1 al 10
  1. ¿ Cual es el último valor mostrado en console.log por este código ? ¿ Por que ?
let i = 4;

while(i){
  console.log( i-- )
}
  1. El otro bucle es el DO WHILE
function ciclodowhile(n){
  let i = 1;
  do{
    console.log(i)
    i++;
  } while (i < n)
}

ciclodowhile(11);
  1. hacer condición falsa con cero

  2. Después tenemos el bucle más utilizado el bucle FOR

  3. Donde tenemos una inicialización ; un condición y una actualización

for (inicialización; condición; actualización)
  1. Veamos un ejemplo
function buclefor(n){
 for (let i = 0; i < n; i++){
   console.log(i);
 }
}

buclefor(11);
  1. 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

  1. Recursión es cuando una función sigue llamándose a sí misma, hasta que ya no tiene que hacerlo

  2. La función se sigue llamándose a sí misma, pero con una entrada más pequeña cada vez.

  3. Piensa en la recursión, como la silla musical, en cada pausa se saca una silla, hasta que solamente queda 1

  4. Pero, la función no decide por sí misma cuando parar.

  5. Nosotros le decimos cuando.

  6. Nosotros le damos a la función una condición conocida como caso base.

  7. El caso base es la condición que le dice a la función cuando dejar de llamarse a sí misma.

  8. 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
  1. ¿Qué exactamente es lo que pasa aquí?

  2. Si te diste cuenta, lo primero que hicimos fue definir el caso base. ¿Por qué?

  3. Porque la función primero que nada necesita saber cuándo dejará de llamarse a sí misma.

  4. ¿Nunca jugarías a una silla musical infinita , o si?

  5. Si no le dices a la función cuándo detenerse, entonces sucederá algo llamado stackoverflow

  6. 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. 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.