Sie sind auf Seite 1von 77

Capítulo 1:  Nivelación

¿Nunca programaste antes? Aprendé los fundamentos de la programación a través de videos y ejercicios prácticos.

Contenido
Lección 1: Fundamentos

  1. ¿Qué es Programar?


  2. ¿Programar? ... ¡Si! ... ¡Programar!

  3. El Tablero

  4. El Cabezal

  5. Movimientos

  6. Movimientos 2

  7. Movimientos 3

  8. El orden de las cosas

  9. Sí, esto también puede fallar

  10. Bolitas

  11. Bolitas 2

  12. Bolitas 3

  13. Sacar Bolitas

  14. Cuando no hay bolitas

  15. Limpiar celda

  16. Calentando motores

  17. El orden de los factores altera el producto

  18. Combinando comandos

  19. La delgada línea roja

  20. Portugal

  21. Reemplazar bolitas

  22. Una escalerita

  23. Y claro, no podía faltar Argentina

Lección 2: Introducción a JavaScript

  1. ¡JavaScript, el lenguaje de la Web!


  2. La consola

  3. Impresión por pantalla

  4. Jugando con la consola


Lección 3: Variables y Tipos de datos

  1. ¿Variables?
  2. Declaración de variables

  3. Almacenando datos

  4. Siempre falta un punto para la coma?

  5. Variables y Operaciones

  6. Otro tipo de dato

  7. Más operaciones

  8. Otras operaciones

  9. Intercambiando valores

  10. Mas tipos de datos

  11. Más sobre los Booleanos

Lección 4: Funciones

  1. ¿Funciones?
  2. Declaración

  3. Usando Funciones

  4. Haciendo cuentas

  5. Funciónception

  6. Formulas y Funciones

  7. Operando Strings

  8. Cartelitos

  9. Funciones Gratis!

  10. Una función mas...

Lección 5: Condicionales

  1. ¿Condicionales?
  2. ¿Que tal si?

  3. Y ¿que tal si no...?

  4. ¿Cuál es mayor?

  5. ¿De qué signo sos?

  6. La cábala de Mariana

  7. ¿Podemos ir al banco?

  8. El filósofo hipster

  9. Las tablas de la verdad


  10. La familia Buen Día

  11. La hora de la verdad

  12. Mi nombre es Xor

  13. Volviendo al secundario

  14. Un ejercicio sin precedentes

  15. Vamos al parque de diversiones

  16. Ahora, te vamos a dar un premio

Lección 6: Ciclos

  1. ¿Ciclos?
  2. La computadora repite por nosotros

  3. Reforzando lo que vimos

  4. Pasito a pasito...

  5. One more rep

  6. Par o no par, esa es la cuestion

  7. Repetición Variable

  8. Solo 3 empanadas

  9. Muchas Empanadas

  10. Seguimos variando

  11. Sumatoria

  12. Usain Bolt te necesita

Lección 7: Arrays

  1. ¿Arrays?
  2. Series favoritas

  3. Y esto, es un array

  4. Juegos de azar

  5. Arrays vacíos

  6. ¿Cuántos elementos tenés?

  7. Agregando sabor

  8. Trasladar

  9. ¿Y dónde está?

  10. Contiene

  11. Enésimo elemento


  12. Más premios

  13. Sumatorias, primera parte

  14. Sumatorias, segunda parte

  15. Sumatorias, tercera parte

  16. Sumatorias, cuarta parte

  17. Ciclos con Arrays

  18. Conteos

  19. Más conteos

  20. Filtrados

  21. Palo de truco

------------------------------------------------------------

nombre parametro

function suma ( numeroA , numeroB) {

var resultado= numeroA +numeroB;

return resultado;

Suma (3,3);

Fundamentos
¿Nunca programaste antes? Aprendé los fundamentos de la programación utilizando Gobstones, un innovador
lenguaje gráfico en el que utilizás un tablero con bolitas para resolver problemas.

Contenido 
  1. ¿Qué es Programar?
  2. ¿Programar? ... ¡Si! ... ¡Programar!

  3. El Tablero

  4. El Cabezal

  5. Movimientos
  6. Movimientos 2

  7. Movimientos 3

  8. El orden de las cosas

  9. Sí, esto también puede fallar

  10. Bolitas

  11. Bolitas 2

  12. Bolitas 3

  13. Sacar Bolitas

  14. Cuando no hay bolitas

  15. Limpiar celda

  16. Calentando motores

  17. El orden de los factores altera el producto

  18. Combinando comandos

  19. La delgada línea roja

  20. Portugal

  21. Reemplazar bolitas

  22. Una escalerita

  23. Y claro, no podía faltar Argentina

Ejercicio 2:  ¿Programar? ... ¡Si! ...


¡Programar!
Aunque la programación parece una ciencia exacta, programar es el arte de hacer que una computadora  resuelva
nuestros problemas.

Momento... ¿arte?  ¡Sí! Hay muchas formas de resolver un problema y encontrarlas es un proceso creativo . El
resultado de este proceso es un programa: una descripción de la solución al problema, que puede ser ejecutada por
una máquina.

Saber programar nos da un gran poder: en lugar de hacer tareas repetitivas y tediosas, usaremos nuestros
conocimientos e imaginación para automatizarlas (por suerte, la computadora no se aburre ).

Pero, ¿cómo le explicamos a la máquina de qué forma resolver el problema?

A través de un idioma que tanto ella como las personas podamos entender: los lenguajes de programación.

Ejercicio 3:  El Tablero


Para poder comunicarnos con la computadora, aprenderemos a programar usando JavaScript, uno de los lenguajes de
programación más utilizados. Pero antes de empezar a programar en JavaScript, tenemos que aprender a pensar de la
misma forma que piensa una computadora. Para eso vamos a usar Gobstones, un lenguaje de programación en el que
trabajamos con bolitas que se mueven por un tablero cuadriculado, similar al del Ajedrez, Damas o Go.

Estos tableros pueden ser de cualquier tamaño, por ejemplo:


4x4 3x2

Para cada ejercicio de esta primera sección (fundamentos) vamos a disponer de un tablero sobre el cual
podremos ejecutar nuestro programa. Lo interesante es que un mismo programa puede ejecutarse sobre distintos
tableros, potencialmente produciendo resultados diferentes.
No te preocupes, nosotros nos vamos a encargar de crear los tableros por vos en cada uno de los ejercicios. Y para que veas que no
mentimos, presioná el botón Continuar, y generaremos tu primer tablero: un tablero de 3x3.

 ¡Muy bien!
Tablero final
0 1 2

2 2

1 1

0 0

0 1 2

Ejercicio 4:  El Cabezal


Como podés ver a continuación, el nuevo tablero que generamos tiene
una celda marcada:
0 1 2

2 2

1 1

0 0
0 1 2
¿Por qué ocurre esto? Porque en nuestro tablero vamos a tener una máquina que tiene
un cabezal que en todo momento está situado sobre una de las celdas del tablero y nos
permite realizar distintas operaciones sobre ella (paciencia, ya las vamos a conocer ).
Algo importante: fijate que contamos las filas desde abajo hacia arriba, y las columnas
desde la izquierda hacia la derecha. La primera fila es la de abajo de todo, y la
primera columna es la de la izquierda. Pero además, si prestás atención vas a ver que
la primera fila es la cero, y la primera columna también es la cero. Esto es así porque en
todos los lenguajes de programación siempre empezamos a contar desde el cero.
Por ejemplo, el siguiente es un tablero de 5x2, con el cabezal en la segunda fila (fila número 1)
y la cuarta columna (columna número 3).
0 1 2 3 4

1 1

0 0
0 1 2 3 4

 ¡Muy bien!
Tablero final
0 1 2

2 2

1 1

0 0

2
0 1

Ejercicio 5:  Movimientos
En este ejercicio vamos a aprender una de las órdenes que podemos darle a la máquina: mover el cabezal. Para eso,
le indicaremos al cabezal la dirección en la que tiene que moverse usando los puntos cardinales:

 Norte (arriba)
 Sur (abajo)

 Este (derecha)

 Oeste (izquierda)

Por ejemplo, partiendo de un tablero inicial vacío, podemos fácilmente escribir un programa que mueva el cabezal una
posición hacia el Norte:

Inicial Final

0 1 2 0 1 2

2 2 2 2

1 1 1 1

0 0 0 0
Inicial Final

0 1 2 0 1 2
El código del programa que logra esto (es decir, el texto de la solución que le daremos a la computadora) es el
siguiente:

program {
Mover(Norte)
}

Ojo 
¡Fijate que siempre escribimos las direcciones con la inicial en mayúscula!

program {
Mover(Norte)
}
Muy bien! Tu solución pasó todas las pruebas
Tablero inicial
0 1 2

2 2

1 1

0 0

0 1 2

Tablero final
0 1 2

2 2

1 1

0 0

0 1 2

¡Felicitaciones, escribiste tu primer programa!   

Este programa, al ser ejecutado por la máquina, hace que el cabezal se mueva una posición hacia el Norte.
Pero programar no se trata de copiar y pegar código.

Avanzá al próximo ejercicio para entender qué es lo que hicimos exactamente...


Importante
Cada vez que completes correctamente un ejercicio, vas a ver información extra como ésta, con algún comentario
sobre el tema que estás aprendiendo o sobre la resolución del ejercicio.
¡No lo pases de largo, ya que te ayudará a fijar los conceptos nuevos!

Ejercicio 6:  Movimientos 2
Entendamos qué es lo que acabamos de hacer. Aunque no lo creas, acabamos de escribir un programa.

Todo programa tiene una sección de código donde se declaran los comandos (acciones) que queremos que la
máquina realice. Al correr un programa, se ejecutan los comandos, y obtenemos un resultado.

En el lenguaje Gobstones esta sección de código se denomina program. En esta sección se van a correr los comandos
que queremos que la máquina realice sobre el tablero inicial y cuyo resultado visualizaremos en el tablero final.

La sintaxis del program en Gobstones es bastante simple:

1. escribimos una línea (renglón) que diga program (en minúscula), seguido de una llave de apertura: {
2. a continuación, los comandos: uno en cada línea

3. y finalmente, una última llave que cierra la que abrimos anteriormente: }

Algunos ejemplos de programs:

program {
} No hace nada

program {
Mover(Norte) Mueve el cabezal una posición hacia el norte
}

program {
Mover(Norte)
Mover(Norte) Mueve el cabezal dos posiciones hacia el norte
}

Sabiendo ésto, escribí un programa que mueva el cabezal tres veces hacia el norte, en un
tablero de 2x4 con el cabezal en el origen (la celda de abajo a la izquierda):

Inicial Final

0 1 0 1

3 3 3 3

2 2 2 2

1 1 1 1

0 0 0 0
0 1 0 1
 ¡Dame una pista!
Cuando escribas tu propio código, tenés que ser muy cuidadoso respetando la sintaxis.

En particular:
 prestá atención al uso de mayúsculas y minúsculas. No es lo mismo Mover que mover ni MOVER.
 acordate que las direcciones SIEMPRE empiezan con mayúscula. Si usas norte o NORTE la máquina no
entiende lo que querés decir.

 en cualquier lenguaje de programación, siempre que se abre una llave ({), tiene que cerrarse (}).

program {
Mover(Norte)
Mover(Norte)
Mover(Norte)
}

Ejercicio 7:  Movimientos 3
Como te imaginarás, el cabezal no sólo se puede mover hacia el Norte, y un programa puede combinar cualquier tipo
de movimientos.

Escribí un programa que mueva el cabezal dos posiciones hacia el Este y una hacia el Sur,
produciendo el siguiente resultado:

Inicial Final

0 1 2 0 1 2

2 2 2 2

1 1 1 1

0 0 0 0
0 1 2 0 1 2
Recordá que el comando que mueve el cabezal se llama Mover (ni mOvEr, ni mover, ni MOVER). ¡Respetar la sintaxis es
muy importante! Si no lo hacés, el programá no andará 

 ¡Dame una pista!


Acordate que las direcciones tienen los nombres de los cuatro puntos cardinales, y se escriben con la primera letra en
mayúscula:

 Norte
 Sur

 Este

 Oeste

program {
Mover(Este)
Mover(Este)
Mover(Sur)
}
¡Muy bien! Tu solución pasó todas las pruebas
Tablero inicial
0 1 2

2 2

1 1

0 0

0 1 2

Tablero final
0 1 2

2 2

1 1

0 0

0 1 2

program {
Mover(Este)
Mover(Este)
Mover(Sur)
}
program {
Mover(Este)
Mover(Sur)
Mover(Este)
}

Moraleja: ¡no hay una sóla forma de resolver un problema!

Y además, el orden, a veces, no es tan importante. Avanzá al siguiente ejercicio para entender mejor esto.

Siguiente Lección: Funciones 

Ejercicio 8:  El orden de las cosas


Cuando trabajamos en Gobstones, hacemos las cosas en un cierto orden. Por ejemplo,
pensemos que dado el siguiente tablero inicial, queremos mover el cabezal a la esquina
noreste:

Inicial Final

0 1 2 0 1 2

2 2 2 2

1 1 1 1

0 0 0 0
0 1 2 0 1 2
Si tenemos el siguiente programa:

program {
Mover(Norte)
Mover(Norte)
Mover(Este)
Mover(Este)
}

una forma posible de leerlo (llamada secuencial) es como lo haría una máquina: en orden, de arriba hacia abajo:

1. primero se mueve al norte: Mover(Norte)


2. luego se mueve al norte nuevamente: Mover(Norte)

3. luego se mueve al este: Mover(Este)

4. y finalmente se mueve al este una vez más: Mover(Este)

Y de hecho se ejecuta de esa forma.

Pero, los humanos solemos pensar en función del resultado final, es decir, resaltamos el objetivo del programa. Nos
importa más qué hace, y no tanto el cómo lo hace. Esta forma de pensar nos llevaría a decir, simplemente, mueve el
cabezal a la esquina noreste.

Por eso hay varias formas de resolver un mismo problema: podemos escribir varios programas que hagan lo mismo
(el qué), pero que lo hagan de forma diferente (el cómo).
Veamos si entendiste esto: escribí otro programa que haga lo mismo que el de arriba (mover hacia la esquina noreste), pero de manera
distinta. Ojo: tiene que funcionar en un tablero de 3x3.
 ¡Dame una pista!
Probá invertir el orden de los comandos.

Si bien la máquina lo ejecutará en un orden diferente, el resultado final será el mismo.

:  ¡Muy bien! Tu solución pasó todas las pruebas


Tablero inicial
0 1 2

2 2

1 1
0 0

0 1 2

Tablero final
0 1 2

2 2

1 1

0 0

0 1 2

¡Perfecto!

Recién escribimos un programa en el que el orden no afecta al qué.


Pero esto no será siempre así: en breve nos toparemos con problemas en los que hay que tener más cuidado con el
orden de los comandos.

Siguiente Lección: Funciones  

Ejercicio 9:  Sí, esto también puede fallar


Hasta ahora veníamos tratando de esquivar el asunto, pero seguro ya habrás pensado
que tiene que haber alguna forma de que esto falle (incluso es posible que ya lo hayas
experimentado).
Si bien nunca vamos a querer que nuestro programa falle, es algo que
definitivamente nos va a pasar muchas veces. Pero no es motivo para frustrarse ni
mucho menos, te aseguramos que a todo el mundo le pasó alguna vez (bueno, también
2, 3, 100, 800 veces...).
Dicho esto, te vamos a mostrar una forma de hacerlo, simplemente para que no te
asustes tanto cuando te pase de verdad .
¿Y cómo es esa forma? Descubrilo vos: partiendo del tablero que te mostramos acá abajo,
escribí un programa que provoque que el cabezal se salga fuera de los límites.
0 1 2

2 2

1 1

0 0
0 1 2

program {

Mover(Norte)
Mover(Norte)

Mover(Norte)

¡Muy bien! Tu solución pasó todas las pruebas


Resultados de las pruebas:

  ¡BOOM!

Tablero inicial
0 1 2

2 2

1 1

0 0

0 1 2

Tablero final
0 1 2

2 2

1 1

0 0

0 1 2

BOOM

[4:1]: No se puede mover hacia la dirección Norte: cae afuera del tablero.

Ejercicio 10:  Bolitas
Genial !!!.
Ya entendiste cómo mover el cabezal del tablero usando la operación Mover y las
direcciones (Norte, Sur, Este y Oeste). Vayamos un paso más allá: las bolitas.
En cualquier celda de nuestro tablero podemos poner bolitas. Las hay de distintos
colores:
 Rojas (Rojo)
 Azules (Azul)
 Negras (Negro)
 Y verdes (Verde)

Por ejemplo, este es un tablero con una bolita roja y una negra:
0 1
1
1 1

0 0
1

0 1
Además de moverse, el cabezal también puede poner bolitas en la celda donde está
parado.
Para eso contamos con la operación Poner, que le dice al cabezal que deposite una bolita
del color dado:

program {
Poner(Rojo)
}

¡Probá este programa! Escribí el código en el editor y dale Enviar para ver lo que pasa al ejecutarlo sobre este tablero.
0 1 2

2 2

1 1

0 0
0 1 2

program {

Poner(Rojo)

 ¡Muy bien! Tu solución pasó todas las pruebas


Tablero inicial
0 1 2

2 2

1 1

0 0
0 1 2

Tablero final
0 1 2

2 2

1 1

0 0
1

0 1 2

¡Felicitaciones! Acabás de escribir un programa que pone una bolita roja en la celda actual. Te imaginás como se hace
para poner muchas bolitas de distintos colores?

Ejercicio 11:  Bolitas 2
Algo interesante de nuestros tableros es que en sus celdas podemos poner cualquier cantidad de bolitas de cualquier
color.

Por ejemplo, si tenemos este tablero:


0 1 2 3 4

1 1

0 0
0 1 2 3 4
y ejecutamos el siguiente programa:

program {
Poner(Rojo)
Poner(Rojo)
Poner(Azul)
Poner(Verde)
Poner(Rojo)
}

El cabezal colocará en la celda actual tres bolitas rojas, una azul y una verde.
¡Escribí este programa en el editor y fijate cómo queda el tablero!

program {

Poner(Rojo)

Poner(Rojo)

Poner(Azul)

Poner(Verde)

Poner(Rojo)
}

¡Muy bien! Tu solución pasó todas las pruebas


Tablero inicial
0 1 2 3 4

1 1

0 0

0 1 2 3 4

Tablero final
0 1 2 3 4

1 1
3 1

0 0

0 1 2 3 4

Notá que en este problema, si cambiamos el orden de las instrucciones, el resultado no cambia: siempre nos terminará
quedando un tablero con tres bolitas rojas, una azul y una verde.

Por ejemplo, los siguientes dos programas también generan este mismo resultado:

program {
Poner(Rojo)
Poner(Rojo)
Poner(Rojo)
Poner(Verde)
Poner(Azul)
}
program {
Poner(Rojo)
Poner(Azul)
Poner(Rojo)
Poner(Verde)
Poner(Rojo)
}

Siguiente Lección: Funciones  


Ejercicio 12:  Bolitas 3
Como te habrás dado cuenta, estos tableros son un poco mágicos, podemos poner en una
celda tantas bolitas como queramos: 2, 4, 12, 50, 1000. ¡No hay ningún límite!
Esto es algo muy interesante que ocurre al programar: podemos trabajar con cantidades
tan grandes como queramos.
Ahora te toca a vos escribir un programa que ponga cuatro bolitas rojas y tres bolitas negras en la celda actual.

 ¡Dame una pista!


Fijate que no te dijimos cómo es el tablero sobre el que ejecutaremos este programa, ni
en que posición exacta está el cabezal, ya que no necesitas esta información para
resolver el problema.
De todas formas, sólo por esta vez y como ayudita te mostramos el tablero sobre el que
ejecutaremos tu programa:
0 1 2

2 2

1 1

0 0
0 1 2

program {

Poner(Rojo)

Poner(Rojo)

Poner(Rojo)

Poner(Rojo)

Poner(Negro)

Poner(Negro)

Poner(Negro)

Muy bien! Tu solución pasó todas las pruebas


Tablero inicial
0 1 2

2 2

1 1

0 0

0 1 2

Tablero final
0 1 2

2 2

1 1

0 0
4

0 1 2

Dijimos que no te debe importar cómo es el tablero, ni dónde está el cabezal.


Si tu programa está bien escrito, y resuelve el problema de poner 4 rojas y 3 negras en la celda actual, este puede
funcionar para cualquier tablero.

Siguiente Lección: Funciones  

Ejercicio 13:  Sacar Bolitas


De la misma forma que uno puede dar el comando de "poner bolita" (Poner), tenemos una
forma de "sacar bolita" (Sacar), que quita exactamente una bolita del color dado.
Por ejemplo, el siguiente programa saca dos bolitas de color Rojo de la posición inicial.

program {
Sacar(Rojo)
Sacar(Rojo)
}

Sabiendo esto, escribí un programa que elimine sólo la bolita roja de este tablero. ¡Tené cuidado! Prestá atención a la posición del
cabezal 
0 1
1
1 1

0 0
1

0 1

program {

Mover(Sur)

Sacar(Rojo)

Muy bien! Tu solución pasó todas las pruebas


Tablero inicial
0 1

1 1 1
0 0
1

0 1

Tablero final
0 1

1 1

0 0

0 1

¡Bien! ¿Y si no hubiera ninguna bolita para sacar? 

Ejercicio 14:  Cuando no hay bolitas


A la hora de utilizar el comando Sacar, tenemos que tener más cuidado, porque...

¿Querés saber por qué? Intentá sacar una bolita verde o azul de este tablero y descubrilo.
0 1
1
1 1

0 0
1

0 1

program {

Mover(Oeste)

Sacar(Azul)

¡Muy bien! Tu solución pasó todas las pruebas


Resultados de las pruebas:

  ¡BOOM!

Tablero inicial
0 1

1 1

0 0
1

0 1

Tablero final
0 1

1 1

0 0

0 1

BOOM

[3:1]: No se puede sacar una bolita de color Azul: no hay bolitas de ese color.

Claro, otra vez BOOM 

Esta vez lo que pasó fue que el cabezal intentó sacar una bolita de un color que no había, lo cuál produjo una falla en
nuestro programa. Esto te va a pasar siempre que intentes sacar una bolita que no exista, así que ¡a prestar atención!

Ejercicio 15:  Limpiar celda


Un último esfuercito: usando Sacar, escribí un programa que elimine todas las bolitas de este tablero:
0 1

1 1

1 1
0 0
1 1

0 1
program {

Sacar(Azul)

Sacar(Negro)

Sacar(Rojo)

Sacar(Verde)

Muy bien! Tu solución pasó todas las pruebas


Tablero inicial
0 1

1 1
1 1

0 0
1 1

0 1

Tablero final
0 1

1 1

0 0

0 1

¡Buenísimo! Ahora que ya sabes Poner y Sacar bolitas, y Mover el cabezal por el tablero, estamos listos para los
ejercicios divertidos! 

Ejercicio 16:  Calentando motores


¡Veamos el siguiente programa!

Este programa coloca una bolita roja en la posición inicial y una negra al este.

program {
Poner(Rojo)
Mover(Este)
Poner(Negro)
}

Probá escribir y ejecutar este programa. Te mostraremos el resultado al ejecutarlo en un tablero de 2x2, y en otro de 3x2, ambos con el
cabezal inicialmente en el origen.
 ¡Dame una pista!
Recordá: dentro del cuerpo del programa, las operaciones se ejecutan en orden, de arriba para abajo.

No siempre nos importa, pero en este caso...

program {

Poner(Rojo)

Mover(Este)

Poner(Negro)

Muy bien! Tu solución pasó todas las pruebas


Resultados de las pruebas:

  Tablero de 2x2

Tablero inicial
0 1

1 1
0 0

0 1

Tablero final
0 1

1 1

0 0
1

0 1

  Tablero de 3x2

Tablero inicial
0 1 2

1 1

0 0

0 1 2

Tablero final
0 1 2

1 1

0 0
1

0 1 2

Ahora que combinamos operaciones, la cosa se pone un poco mas complicada, porque hay que tener más cuidado
con el orden.

Mirá el programa que escribiste:

program {
Poner(Rojo)
Mover(Este)
Poner(Negro)
}

Secuencialmente:

1. pone una bolita roja


2. luego se mueve al este

3. luego pone una bolita negra

Es decir: pone una bolita roja en la posicion inicial, y una bolita negra al este

Ejercicio 17:  El orden de los factores altera


el producto
Ahora que estamos combinando operaciones, y como te comentamos previamente, hay que tener más cuidado con el
orden de los comandos.

Teniendo en cuenta esto, contestá... ¿Qué hacen estos programas?

program {
Mover(Este)
Poner(Rojo)
Poner(Negro)
}
program {
Poner(Negro)
Mover(Este)
Poner(Rojo)
}

Ejecutan los mismos comandos, en el mismo orden y llegan a diferentes tableros finales

¡La respuesta es correcta!


Moraleja: ¡no hacen lo mismo! Cambiar el orden nos cambió el objetivo, es decir el qué.

El primer programa

program {
Mover(Este)
Poner(Rojo)
Poner(Negro)
}

secuencialmente:

1. se mueve al este
2. luego pone una bolita roja

3. luego pone una bolita negra


Es decir: pone una bolita roja y una bolita negra al este de la posición inicial.

Mientras que el segundo programa

program {
Poner(Negro)
Mover(Este)
Poner(Rojo)
}

secuencialmente:

1. Pone una bolita negra


2. se mueve al este

3. luego pone una bolita roja

Es decir: pone una bolita negra en la posición inicial y una bolita roja al este de la bolita negra.

Ejercicio 18:  Combinando comandos


Escribí un programa que ponga dos bolitas en la posición inicial, y otras dos en la celda que se encuentra hacia el Este. Todas las bolitas deben ser
rojas.

Acá te dejamos un ejemplo de cómo debería quedar el tablero:


0 1 2

2 2

1 1

02 0
2

0 1 2

program {
Poner(Rojo)
Poner(Rojo)
Mover(Este)
Poner(Rojo)
Poner(Rojo)
}
Muy bien! Tu solución pasó todas las pruebas
Tablero inicial
0 1

1 1

0 0
0 1

Tablero final
0 1

1 1

0 0
2 2

0 1

Ejercicio 19:  La delgada línea roja


Escribí un programa que, a partir de un tablero vacío con el cabezal en la posición inicial (0,0), dibuje una línea de cuatro bolitas rojas, cada una al
Este de la otra.

Acá te dejamos un ejemplo de cómo debería quedar el tablero. Tené en cuenta que, además,
el cabezal debe quedar en el extremo final de la línea, como se ve en la imagen:

0 1 2 3

1 1

01 0
1 1 1

0 1 2 3

program {
Poner(Rojo)
Mover(Este)
Poner(Rojo)
Mover(Este)
Poner(Rojo)
Mover(Este)
Poner(Rojo)
}
Muy bien! Tu solución pasó todas las pruebas
Tablero inicial
0 1 2 3

1 1

0 0
0 1 2 3

Tablero final
0 1 2 3

1 1

0 0
1 1 1 1

0 1 2 3

Ejercicio 20:  Portugal
Escribí un programa que dibuje una bandera portuguesa, que se ve así:

Como no nos vamos a poner tan quisquillosos, te vamos a pedir una versión simplificada, que
se tiene que ver así:
0 1 2

1 1
1 1 1

0 0
1 1 1

0 1 2
Ah, el cabezal empieza en el origen.

program {
Poner(Verde)
Mover(Este)
Poner(Rojo)
Mover(Este)
Poner(Rojo)
Mover(Norte)
Poner(Rojo)
Mover(Oeste)
Poner(Rojo)
Mover(Oeste)
Poner(Verde)
}
Muy bien! Tu solución pasó todas las pruebas
Tablero inicial
0 1 2

1 1

0 0

0 1 2

Tablero final
0 1 2

1 1
1 1 1

0 0
1 1 1

0 1 2

Ejercicio 21:  Reemplazar bolitas


¿Ya estás entrenado? 

Pasemos a algo un poco más difícil entonces. Te vamos a dar un tablero de 2x2 (o sea, con 4 celdas) donde cada una
de ellas tiene una bolita roja.

Tu tarea es escribir un programa que reemplace todas las bolitas rojas por verdes.

Inicial Final

0 1 0 1

11 1 1 1
1 1 1

01 0 0 0
1 1 1

0 1 0 1
¡Ojo! Fijate en la representación de arriba: el cabezal debe quedar nuevamente en la posición inicial (0,0) 

 ¡Dame una pista!


La idea de reemplazar una bolita por otra es algo que nosotros, los humanos, podemos entender.

Por el contrario, Gobstones sólo entiende de Poner y Sacar. Pensá cómo podés combinar esas operaciones para lograr
el efecto deseado.

program {
Sacar(Rojo)
Poner(Verde)
Mover(Este)
Sacar(Rojo)
Poner(Verde)
Mover(Norte)
Sacar(Rojo)
Poner(Verde)
Mover(Oeste)
Sacar(Rojo)
Poner(Verde)
}
 ¡Muy bien! Tu solución pasó todas las pruebas
Tablero inicial
0 1

1 1
1 1

0 0
1 1

0 1

Tablero final
0 1

1 1
1 1

0 0
1 1

0 1

Ejercicio 22:  Una escalerita


Valiéndote de las herramientas que ya conocés, dibujá una escalera azul como la que se ve en la imagen. El
cabezal empieza en la posición inicial (0,0) y debe quedar en el extremo inferior derecho de la escalera.

¿Muy complicado? Te mostramos como debería quedar el tablero final:


0 1 2 3

3 3

21 2

11 1
1

01 1 1
0

0 1 2 3
program {
Poner(Azul)
Mover(Norte)
Poner(Azul)
Mover(Norte)
Poner(Azul)
Mover(Este)
Mover(Sur)
Poner(Azul)
Mover(Sur)
Poner(Azul)
Mover(Este)
Poner(Azul)
}
Muy bien! Tu solución pasó todas las pruebas
Tablero inicial
0 1 2 3

3 3

2 2

1 1

0 0

0 1 2 3

Tablero final
0 1 2 3

3 3

2 2

11 1 1
1 1 1

0 0

0 1 2 3

Ejercicio 23:  Y claro, no podía faltar Argentina


¿Pensaste que nos habíamos olvidado de nuestra bandera? ¡Claro que no!.

Aunque como en Gobstones no hay amarillo, nos vamos a tomar el atrevimiento de cambiarlo por negro
(perdón Belgrano, no nos queda otra ).

Con el cabezal en el origen, tu tarea es dibujar esta pseudo-bandera argentina:


0 1 2 3 4 5 6

21 1 1 1 1 1 1
2

1
1 1

01 1 1 1 1 1 1
0

0 1 2 3 4 5 6
Ojo, fijate que según el gráfico el cabezal debe quedar en la misma posición donde estaba cuando empezó la ejecución
del programa.

program {
Poner(Azul)
Mover(Este)
Poner(Azul)
Mover(Este)
Poner(Azul)
Mover(Este)
Poner(Azul)
Mover(Este)
Poner(Azul)
Mover(Este)
Poner(Azul)
Mover(Este)
Poner(Azul)
Mover(Norte)
Mover(Norte)
Poner(Azul)
Mover(Oeste)
Poner(Azul)
Mover(Oeste)
Poner(Azul)
Mover(Oeste)
Poner(Azul)
Mover(Oeste)
Poner(Azul)
Mover(Oeste)
Poner(Azul)
Mover(Oeste)
Poner(Azul)
Mover(Sur)
Mover(Este)
Mover(Este)
Mover(Este)
Poner(Negro)

}
Muy bien! Tu solución pasó todas las pruebas
Tablero inicial
0 1 2 3 4 5 6

2 2

1 1

0 0

0 1 2 3 4 5 6

Tablero final
0 1 2 3 4 5 6

1 1 1 1 1 1 1

2 2
1

1 1

1 1 1 1 1 1 1

0 0

0 1 2 3 4 5 6

Muchos comandos repetidos, ¿no?. ¿Copiaste y pegaste comandos cuando escribiste el programa?

Por ahora no podemos hacer nada mejor, pero para que lo vayas pensando: una particularidad de nuestra bandera es
su simetría, la franja de arriba es exactamente igual a la de abajo. Si pudieramos crear un comando que dibuje la franja
celeste tantas veces como quisiéramos nuestro programa quedaría mucho más simple...

Más adelante vamos a ver otras estructuras que nos permitan reutilizar comandos. Pero a partir de ahora, vamos a
empezar a trabajar con Javascript, el lenguaje de la web.

Lección 2: Introducción a JavaScript

  1. ¡JavaScript, el lenguaje de la Web!


  2. La consola

  3. Impresión por pantalla

  4. Jugando con la consola

Ejercicio 1:  ¡JavaScript, el lenguaje de la


Web!
Existen muchos lenguajes de programación diferentes. Los hay de distintos niveles de complejidad y con distintos
objetivos, algunos se enfocan en interfaces gráficas y otros exclusivamente en realizar cálculos avanzados. Con tantas
opciones, ¿Cómo hacemos para elegir? 

Entre los lenguajes de programación más usados vamos a encontrar a JavaScript. Se trata de un lenguaje pensado
para la web, crítico para el manejo de sitios. Además, es fácil de usar y de aprender. 

En las próximas lecciones aprenderás a programar usando este lenguaje. En cada lección trabajaremos los conceptos
esenciales que todo programador debe dominar: variables y tipos de datos, funciones, condicionales, ciclos y arrays.

Vamos a trabajar con un comando en JavaScript que te permite mostrar en la consola lo que nosotros le pidamos  . En
programación a esto lo llamamos ¡¡imprimir por pantalla!!. Te va a ser super útil cuando empecemos a escribir
programas en JavaScript.

El comando es console.log(). Dentro de los paréntisis incluiremos la información que deseamos "imprimir" por
pantalla.

Veamos un ejemplo:

console.log("Hola")

Probá console.log("Hola") en la consola. Al presionar enter, la consola nos "imprimirá" el resultado por pantalla. Si lo que querés
"imprimir" es un texto, tenés que escribirlo entre comillas.
También podés "imprimir" por pantalla el resultado de un comando, por ejemplo una cuenta matemática.

Veamos un ejemplo:

console.log(5*5 + 4)

Ejercicio 2:  La consola


En estas nuevas lecciones, hay un gran personaje que va a desaparecer: el tablero. Seguro lo vas a extrañar, ¿no?

 Bueeeno, no llores, quizás fuimos un poco duros: en JavaScript no hay tablero ¡porque no lo necesitás! 

El tablero nos servía para ver lo que nuestro programa hacía y qué resultados generaba.

Ahora vamos a contar con la consola: una herramienta poderosa que nos permite hacer pruebas más detalladas y
flexibles. Además, nos permite mostrar información por pantalla.

En Mumuki, podés reconocer fácilmente la consola porque arrancan todos con el chirimbolito .

Muchas veces daremos ejemplos usando la consola. Por ejemplo, si escribimos:

4+4

Al presionar enter mostrará un 8.

4 + 4
8

Te invitamos a que juegues con la consola todo lo que quieras para ponerte canchero. Podés usarla como una calculadora, ingresando
cualquier operador matemático que conozcas, como la suma, la resta, la multiplicación y la división. Si ponés algun comando que la
consola no entienda, te va a mostrar un texto largo en rojo, informando un error.

Ejercicio 3:  Impresión por pantalla


Vamos a trabajar con un comando en JavaScript que te permite mostrar en la consola lo que nosotros le pidamos  . En
programación a esto lo llamamos ¡¡imprimir por pantalla!!. Te va a ser super útil cuando empecemos a escribir
programas en JavaScript.

El comando es console.log(). Dentro de los paréntisis incluiremos la información que deseamos "imprimir" por
pantalla.

Veamos un ejemplo:

console.log("Hola")

Probá console.log("Hola") en la consola. Al presionar enter, la consola nos "imprimirá" el resultado por pantalla. Si lo que querés
"imprimir" es un texto, tenés que escribirlo entre comillas.
También podés "imprimir" por pantalla el resultado de un comando, por ejemplo una cuenta matemática.

Veamos un ejemplo:

console.log(5*5 + 4)

Hacé varias pruebas con el comando console.log() para ponerte canchero.

Ejercicio 4:  Jugando con la consola


En JavaScript si queremos un programa que imprima por pantalla el clásico "Hola, mundo!", lo podremos escribir así
sencillamente:

console.log("Hola, mundo!");
Lección 3: Variables y Tipos de datos

  1. ¿Variables?
  2. Declaración de variables

  3. Almacenando datos

  4. Siempre falta un punto para la coma?

  5. Variables y Operaciones

  6. Otro tipo de dato

  7. Más operaciones

  8. Otras operaciones

  9. Intercambiando valores

  10. Mas tipos de datos

 11. Más sobre los Booleanos

Variables y Tipos de datos


¡Hola! Como ya vimos, los programas son secuencias de comandos o instrucciones que ejecuta una computadora.
Muchas veces queremos almacenar datos dentro de nuestro programa, por ejemplo, la edad de una persona, el peso,
entre otros. Cada uno de estos datos se pueden almacenar dentro de una “cajita”. A estas “cajitas” las vamos a llamar
variables.

En este capítulo vamos a ver cómo utilizarlas. ¡Acompañanos!

Contenido 
  1. ¿Variables?
  2. Declaración de variables

  3. Almacenando datos

  4. Siempre falta un punto para la coma?

  5. Variables y Operaciones

  6. Otro tipo de dato

  7. Más operaciones

  8. Otras operaciones

  9. Intercambiando valores

  10. Mas tipos de datos

  11. Más sobre los Booleanos

¡Excelente! 

Eso significa que ya estás entrando en calor en el mundo de JavaScript: pudiste definir y asignar variables, y usarlas en
el flujo de ejecución de un programa.

Y por si fuera poco, aprendiste en el camino algunas herramientas nuevas: los strings y los booleanos.

¿Querés seguir aprendiendo? ¡Acompañanos a la siguiente lección!


Funciones
Hasta acá vimos como trabajar con valores de distintos tipos en nuestros programas. ¿Pero qué es lo que vamos a
hacer con esos valores?

Aprenderemos a continuación sobre las funciones. Una estructura muy común en todos los lenguajes de
programación que nos permite definir conjuntos de instrucciones, para luego poder usarlos todas las veces que sea
necesario sin necesidad de repetir todo nuestro código.

Ejercicio 2:  Declaración
Empecemos por lo básico:

Las funciones constan de 4 partes. La palabra reservada function, el nombre con el que vamos a llamar a la función,
los paréntesis donde van a ir los parámetros (si es que los necesita) y entre {} llaves el código que queremos que
ejecute la función.

Si queremos que una función nos devuelva un valor, vamos a necesitar la palabra clave return. Después de eso va a ir
todo lo que queramos devolver.

Con las funciones, podemos hacer infinidad de cosas, pero vamos a empezar por algo fácil. Acá escribimos la función
que dobla el valor del número que le pasemos.

function doble(numero) {
return 2 * numero;
}

Como podemos ver, arriba declaramos una función con la palabra reservada function y el nombre doble. Entre los
paréntesis, pusimos el parámetro numero el cual va a estar reemplazado por el número que le demos cuando lo
llamemos. Para terminar, con la palabra return le decimos que lo que queremos es que devuelva 2 veces
el número que le dimos.

Para ejecutar la función y que haga lo que queremos, hay que llamarla por el nombre y entre paréntesis ingresar el
número que queremos que utilice.

doble(5); //Esto nos va a devolver 10


doble(1.5); //Y éste nos devolverá 3

 Una variable es un espacio de memoria que podemos utilizar para almacenar valores.

 Si queremos utilizar una variable lo primero que debemos hacer es declararla, o sea, crear esa “cajita” donde
vamos a guardar valores.

 En JavaScript, las variables se declaran utilizando la palabra var seguida del nombre con la que la
identificaremos.

 Por ejemplo:

 var precio

 Ya vimos cómo declarar una variable. ¿Pero cómo guardamos algo en ella?

 Para guardar un valor en una variable utilizamos el signo = y a continuación el valor que queremos
almacenar.

 En programación, almacenar un valor en una variable se denomina “asignar”.


 Por ejemplo:

 var meses = 12
 var cantidadDeAlumnos = 30

 Ejercicio 3:  Usando Funciones


 Entonces para armar una función hay cosas que no podemos dejar pasar. La palabra function, el nombre de
la función, los parámetros si se necesitan, el código entre {} y un return dentro del código si queremos que
nos devuelva algo.

 Veamos si se va entendiendo: escribí ahora una función mitad, que tome un número y devuelva su mitad.

  ¡Dame una pista!


 Tené en cuenta que el operador de división en JavaScript es /.

function mitad(num1){

return num1 / 2;
}
mitad (6);

Ejercicio 4:  Haciendo cuentas


Ya vimos los operadores básicos matemáticos +, -, / y *

Ahora podemos usar las funciones para hacer las cuentas mas fáciles.

function sumar(numero1,numero2){
return numero1 + numero2 ;
}

Escribí la función multiplicar que tome dos parámetros, los multiplique y retorne su valor.

function multiplicar(numero1,numero2){
return numero1 * numero2 ;
}

Ejercicio 5:  Funciónception
Teniendo estas funciones pequeñas, podemos combinarlas para hacer cosas mas complejas.

Por ejemplo, si queremos sumar dos números y después multiplicarlos por 3, podríamos hacerlo de la siguiente forma:

function sumaPorTres(numero1,numero2){
var resultadoDeSuma = sumar(numero1,numero2);
return resultadoDeSuma * 3;
}

Acá vemos que al ya tener la función sumar() definida, podemos llamarla dentro de otra función y hacernos el trabajo
mas fácil.
Veamos si con la función sumar() podemos hacer una función dobleDelSiguiente() que tome un parámetro y nos devuelva el doble del
siguiente.
 ¡Dame una pista!
Pensa que "el doble de un número" puede ser el resultado de sumar el número consigo mismo; y "el próximo de un
número" también se podría entender como "el número mas uno".

Recordá además que ya tenemos las funciones sumar() y multiplicar().

function sumar(numero1, numero2){


return numero1 + numero2;
}

function multiplicar(numero1, numero2){


return numero1 * numero2;
}

function dobleDelSiguiente(numero) {

return 2 * numero + 2;
}

Ejercicio 6:  Formulas y Funciones


Ya vimos que podemos hacer cálculos matemáticos simples y de alguna complejidad.

Ahora vayamos a algo más importante.

Queremos hacer funciones que nos permitan sacar el área y el perímetro de un círculo.
Hagamos una función perimetro que nos diga el perímetro de un círculo cuando le damos el radio como parámetro.

También la función area que nos dé el area de un círculo cuando recibe el radio como parámetro.
 ¡Dame una pista!
Acordate que:

perimetro = π * radio * 2;

area = π * radio * radio;

π = 3.14;

function perimetro(radio){

return 3.14 * radio * 2;

}
perimetro(10);

function area(radio){

return 3.14 * radio * radio;


}
area(5);

Ejercicio 7:  Operando Strings


¿Y que podemos hacer que no sea matemática? ¡Varias cosas! Por ejemplo, podemos trabajar con Strings:

Si te acordás, los strings son un tipo de dato. Representan cadenas de texto y lo que se escribe dentro de las comillas
("") es literal.

¿Qué podemos hacer entonces con los strings? Por ejemplo podemos medir qué tan largos son (en caracteres):

"biblioteca".length // devuelve 10
"babel".length // devuelve 5

También te recordamos que podemos sumar strings... Si, ¡sumarlos! Aunque el término correcto es concatenarlos, es
decir, obtener uno nuevo, juntando dos o más strings:

"aa" + "bb" // devuelve "aabb"


"aa" + " " + "bb" // devuelve "aa bb"

Probemos qué tan claro quedó: Escribí una función longitudNombreCompleto que tome un nombre y un apellido y devuelva su longitud
total, contando un espacio extra para separar a ambos.

Por ejemplo:

longitudNombreCompleto("Cosme", "Fulanito")
// devuelve 14

function longitudNombreCompleto(nombre, apellido) {


return nombre.length + " " + apellido.length;
}

longitudNombreCompleto("Cosme", "Fulanito")

Ejercicio 8:  Cartelitos
Para una importante conferencia, los organizadores nos pidieron que escribamos cartelitos identificatorios que cada
asistente va a tener.
Para eso, tenemos que juntar su nombre, su apellido, y su título (dr., dra., lic., etc) y armar un único string.
Escribí la función escribirCartelito, que tome como parámetros un título, un nombre y un apellido y devuelva un único string como
resultado. Por ejemplo:

escribirCartelito("Dra.", "Ana", "Pérez")


"Dra. Ana Pérez"

function escribirCartelito(título, nombre, apellido){

return "título ", "nombre " , "apellido";


}
escribirCartelito("Dra.", "Ana", "Pérez")

Ejercicio 9:  Funciones Gratis!


Gracias a los programadores de JavaScript tenemos algunas funciones que podés usar sin declarar (porque ellos lo
hicieron por nosotros). Éstas son algunas de las funciones matemáticas que podemos usar.

Math.abs(4) //devuelve 4
Math.abs(0) //devuelve 0
Math.abs(-123) //devuelve 123

Math.abs() nos devuelve el valor absoluto del número que le pasamos como parámetro.

Math.round(4.6) //devuelve 5
Math.round(4.3) //devuelve 4

Math.floor(4.6) //devuelve 4
Math.floor(4.3) //devuelve 4

Math.round() nos redondea matemáticamente el parámetro (es decir hasta .5 hacia abajo y superior a .5 hacia arriba)
y Math.floor() nos redondea el parámetro siempre hacia abajo.

Math.max(4, 7) //devuelve 7
Math.min(4, 7) //devuelve 4

Math.max() toma dos parámetros y nos devuelve el número más alto, mientras Math.min() toma dos parámetros y devuelve el mas
bajo.

Probá estas funciones en la consola y fijate lo que te devuelven.


Ejercicio 10:  Una función mas...
Además de las funciones vistas en el punto anterior, hay una función ya definida en JavaScript que es super
importante: Math.random().
Esta función genera al azar un número decimal entre 0 y 1, y es la base para muchos cálculos usados en
programación.

Math.random()
0.056

Math.random()
0.178

Escribí una función inventarProbabilidad(), que no recibe parámetros y devuelve el porcentaje de probabilidad de lluvia, calculado al
azar usando Math.random().
 ¡Dame una pista!
Acordate que Math.random() devuelve un número al azar entre el 0 al 1.

Si queremos que el resultado final sea un porcentaje, va a ser necesario multiplicar el valor obtenido por 100.

function inventarProbabilidad(){

return Math.random();

Condicionales
Como ya viste a lo largo de varios ejercicios, cuando programamos trabajamos con booleanos que representan valores
de verdad. Podemos operar con ellos mediante lo que denominamos operadores lógicos, como la conjunción (y) y la
disyunción (o). ¡Vamos a aprender un poco más sobre ellos! 

¡Continuá esta lección!

Contenido 
  1. ¿Condicionales?
  2. ¿Que tal si?

  3. Y ¿que tal si no...?

  4. ¿Cuál es mayor?

  5. ¿De qué signo sos?

  6. La cábala de Mariana

  7. ¿Podemos ir al banco?

  8. El filósofo hipster

  9. Las tablas de la verdad


  10. La familia Buen Día

  11. La hora de la verdad

  12. Mi nombre es Xor

  13. Volviendo al secundario

  14. Un ejercicio sin precedentes

  15. Vamos al parque de diversiones

  16. Ahora, te vamos a dar un premio

Ejercicio 2:  ¿Que tal si?


Ninguna introducción a JavaScript estaría completa sin mostrar la estructura de control condicional, conocida como if.

El if nos permite ejecutar un código según una condición.

Un ejemplo de la vida real podría ser: ¡Si el día está soleado, vamos a la plaza!. Como podés ver, en el ejemplo
anterior estamos condicionando nuestra salida a la plaza si y solo si está soleado.

Ahora bien, ¿cómo podemos llevar esto a código? Primero deberemos entender que la estructura del if se divide en 3
partes:

1. La palabra reservada if.
2. La condición que queremos evaluar, la cual se encierra entre paréntesis ().

3. El bloque de código que se ejecuta en el caso que la condición evaluada se cumpla (es decir, sea  true -
verdadera-), el cual se encierra entre llaves {}.

Veamos un ejemplo:

var numero = 43;

if (numero > 0) {
console.log('El número es positivo');
}

Ahora ¿Qué podríamos hacer para codificar nuestra salida a la plaza?

Veámoslo:

if (diaSoleado == true) {
console.log('¡Qué bien¡ Salgamos a la plaza');
}

En el ejemplo anterior, diaSoleado sería una variable que almacena un valor booleano, y siempre y cuando ese valor
sea exactamente igual a true, vamos a ejecutar el bloque de código que se encuentra dentro de las {}, en ese caso,
el console.log. Va tomando más sentido ¿no?

Hagamos una pequeña práctica para ir asentando el concepto.


Declará la variable diaDeSemana y asignale el valor "domingo". Luego implementa un condicional usando el if que compare la igualdad
de diaDeSemana con el día "domingo", y si es verdadero que imprima por pantalla "Hoy se juega al futbol!!!".

var diaDeSemana= "domingo"


if (diaDeSemana) {
console.log('Hoy se juega al futbol!!!');
}

Ejercicio 3:  Y ¿que tal si no...?


En el ejercicio anterior analizamos el siguiente código:

if (diaSoleado == true) {
console.log('¡Qué bien¡ Salgamos a la plaza');
}

Y comentamos que siempre y cuando el valor de diaSoleado sea exactamente igual a true, vamos a ejecutar el bloque
de código que se encuentra dentro de las {}.

Muy bien, pero ¿qué pasa si queremos hacer algo en caso de que el día no esté soleado?. Es ahí en donde entra
el else, la contraparte del if. Se vería así:

if (diaSoleado == true) {
console.log('¡Qué bien¡ Salgamos a la plaza');
} else {
console.log('¡Uff que mal! mejor nos quedamos codeando');
}

El condicional else nos permite ejecutar un bloque de código, en el caso que la condición del if no se cumpla, es decir,
no sea verdadera. A diferencia del if, la estructura del else solo tiene 2 partes:

1. La palabra reservada else.
2. El bloque de código que se ejecuta en el caso que la condición del if no se cumpla.

Entonces, ahora que sabemos cómo funcionan el if y else, veamos un ejemplo de una función que nos retorna true si
un número es mayor a 5, o false en caso contrario:

function esMayor(unNumero) {
if (unNumero > 5) {
return true;
} else {
return false;
}
}

En el ejemplo anterior, la función se encargará de recibir un número por parámetro y utilizando if y else,


retorna true o false si el mismo es mayor a 5.
Definí la función hoySeJuega, la cual recibe por parámetro el string del día de la semana. Esta función retorna "Hoy se juega al
futbol!!!" si recibe por parámetro el valor "domingo", caso contrario retornará "Hoy no se juega al futbol :(".

 ¡Dame una pista!


A diferencia del ejercicio anterior este no está pidiendo que imprimas (console.log ()) algo por pantalla, sino que la
funcion retorne (return) un valor.

function hoySeJuega(undia){
if (undia == "domingo") {

return ("Hoy se juega al futbol!!!");

} else {

return ("Hoy no se juega al futbol");


}
}

Ejercicio 4:  ¿Cuál es mayor?


Muy bien, veamos otro ejercicio para reforzar el funcionamiento del if y else.
Definí la función elMayor, la cual recibiendo por parámetro dos números, retornará el mayor de los dos. Por ejemplo, si pasamos 4 y 5
retornará 5 pues es el mayor, y si pasamos 10 y 4, retornará 10.

function elMayor(Numero1,Numero2) {
if (Numero1 > Numero2) {
return Numero1 ;
} else {
return Numero2;
}
}

Ejercicio 5:  ¿De qué signo sos?


¡Excelente! Vamos bastante bien, es más sencillo de lo que pensabas ¿no?

Ahora, necesitamos de tus geniales habilidades para que definas la función signo, la cual dado un número, nos retorne
solo uno de los siguientes valores:

 1, si el número es positivo
 0, si el número es cero

 -1, si el número es negativo

Vamos a por ello, definí la función signo, para lograr el objetivo deseado. TIP: recuerda que quizá necesites usar más de un if.
function signo (Numero1) {
if (Numero1== 1) {
return Numero1 ;
}
if (Numero1 == 0) {
return Numero1 ;
}
else (Numero1 == -1)
return Numero1 ;
}

Ejercicio 6:  La cábala de Mariana


Mejor, imposible. Ahora que ya vimos cómo usar el if, es momento de un pequeño secreto: si usás adecuadamente
las expresiones booleanas, ¡no es necesario utilizar esta estructura de control! Genial ¿no?, pero… no se lo digas a
nadie 🤓

¿Cómo es ésto? Supongamos que queremos definir la función esMayorDeEdad, la cual nos diga si alguien tiene 18 años
de edad o más. Quizá, nuestro primer acercamiento sería es el siguiente:

function esMayorDeEdad(edad) {
if (edad >= 18) {
return true;
} else {
return false;
}
}

Sin embargo, si lo miramos con más detalle, este if y else son totalmente innecesarios, pues la expresión edad >=
18 ya es en sí, una expresión booleana, pues si pensamos en edad como un número, lo que estamos haciendo es
preguntar si ese número es mayor o igual a 18. Y esa pregunta solo tiene dos posibles respuestas, ¿intuyes cuales
son? Exacto, true ó false. Por lo tanto podríamos hacer que nuestro código fuese más sencillo haciendo esto:

function esMayorDeEdad(edad) {
return edad >= 18;
}

Maravilloso, ¿no? por eso ¡JavaScript es lo más!.

Ahora bien, ¿qué pasaría si quisiéramos tener más condiciones a ser evaluadas queriendo que se cumplan todas?. Lo
único que necesitaríamos, es usar el operador && (que se lee como 'and' o en castellano 'y'). Veamos un ejemplo:

function estaEntre(numero, base, limite) {


return numero > base && numero < limite;
}

La función anterior nos retornará true si numero es mayor a base y a su vez menor que limite. De lo contrario, si dichas
condiciones no se cumplen, nos retornará false.
Genial ¿no te parece?, pero ¿qué pasa si quisiéramos que una función retornara true si se cumple solo alguna de las
condiciones?. Para ello, podemos usar el operador || (que se lee como 'or', en castellano 'o'). Veámoslo:

function esMayorOEsMenor(numero1, numero2, numero3) {


return numero2 > numero1 || numero2 < numero3;
}

En este escenario, la función esMayorOEsMenor nos retornará true si numero2 es mayor que numero1 o si numero2 es


menor que numero3. Con que alguna de las condiciones sea verdadera, retornará true. Lógicamente, si ninguna de las
dos condiciones es verdadera, entonces la función nos retornará false. Súper claro, ¿no es así?

Otro escenario posible, es quizá aquel en donde queramos preguntar si algo es distinto de otra cosa. ¿Te acordás del
operador !? A éste se lo denomina negación o not (en castellano sería 'no'). Veámoslo en acción:

function esDiaLaboral(diaDeLaSemana) {
return diaDeLaSemana != 'Sábado' && diaDeLaSemana != 'Domingo';
}

Como lo podés ver, la función esDiaLaboral recibe por parámetro un día (string) y retornará true si diaDeLaSemana no es


Domingo ni tampoco Sábado. En caso contrario, si el día es Domingo o Sábado, retornará false.

Perfecto. Ahora te toca a vos. Demostrá que lo anterior ha quedado completamente claro. Para ello ayudanos a
resolver lo siguiente:

Mariana, una gran amiga de la casa, nos dice que para ella un número es de la suerte si:

1. es positivo, y a su vez
2. es múltiplo de 2 o de 3, y a su vez,

3. no es el 15

Escribí la función esNumeroDeLaSuerte la cual recibiendo un número, le diga a Mariana si es un número de la suerte. Recuerda que el
número debe cumplir con las tres condiciones mencionadas. Tu reto adicional será: NO usar el if.
 ¡Dame una pista!
Para saber si un número múltiplo de otro usamos el operador módulo(%), que me devuelve el resto de la división
entera entre dos números.

Entonces:

 11 % 5 --> me devuelve el resto de dividir 11 por 5. En este caso devuelve 1. Como es distinto de 0, 11 NO
es múltiplo de 5.

 12 % 3 --> dará 0. Esto implica que 12 es múltiplo de 3.

function esNumeroDeLaSuerte(numero) {
return numero == 1 && numero % 2 || numero % 3 && numero == 3 != 15;
}

Ejercicio 7:  ¿Podemos ir al banco?


¡Sorprendente! Cada vez más vas manejando mucho mejor los condicionales. Pero ¿Nunca te pasó haber querido
hacer algún trámite en el banco y llegar sólo para darte cuenta de que estaba cerrado? A Dory  sí, por lo que le vamos
a dar una mano y vamos a definir una función que le ayude a la gente despistada como ella a saber si les conviene ir o
no al banco.

Primero que todo tenemos que saber que un banco está cerrado cuando es fin de semana (Sábado y Domingo) y
cuando siendo día entre semana, no estamos dentro del horario bancario (9 a 15hs).
Es tu turno. Define la función puedoIrAlBanco la cual, recibiendo dos parámetros, el primero: diaDeLaSemana (string) y el
segundo horaActual (number), deberá retornar true, solo si es posible ir al banco y que lo encontremos abierto.
Ejemplo:

puedoIrAlBanco("Lunes", 10);
// true, es día entre semana y está en horario bancario, 10hs
puedoIrAlBanco("Martes", 18);
// false, es día entre semana y NO está en horario bancario, 18hs
puedoIrAlBanco("Sábado", 11);
// false, es fin de semana

Recuerda que podés hacer lo necesario en la misma línea del return si hacer uso de if/else.

function puedoIrAlBanco(diaDeLaSemana,horaActual ) {
return diaDeLaSemana != 'Sábado' && diaDeLaSemana != 'Domingo'&&
horaActual > 9 && horaActual < 15;
}

Ejercicio 8:  El filósofo hipster


Como ya lo vimos en ejercicios anteriores, un operador con el que ya te encontraste, es la conjunción
lógica && (también llamada 'and' o en castellano 'y'), que sólo retorna verdadero cuando las dos expresiones que evalúa
son verdaderas.

Así mismo, ya sabemos que podemos unir varias expresiones a evaluar mediante este operador y si alguna de ellas no
es verdadera (false) el resultado final será falso.

Por ejemplo, si analizamos la siguiente función:

function esCantanteExitoso(cdsEditados, recitalesRealizados, graboAlgunDVD) {


return cdsEditados >= 10 && recitalesRealizados >= 20 && graboAlgunDVD;
}

Nos podemos dar cuenta que basta con que un cantante no haya grabado un DVD para no ser considerado exitoso 😞,
incluso aunque haya editado 10 o más CDs y dado 20 o más recitales.

Como siempre, ahora es tu turno.


Definí la función filosofoHipster que tome por parámetro: la profesión de una persona (string), su nacionalidad (string) y la cantidad de
kilómetros que camina por día (number). Y que evalúe con estos datos, si una persona es o no ( true/false) un Filósofo Hipster. Tené
en cuenta que un Filósofo Hipster es alguien proveniente de Argentina, de profesión Músico y a quien le gusta caminar más de 2
kilómetros por día.

Ejemplo:
filosofoHipster('Músico', 'Argentina', 5) // true
filosofoHipster('Futbolista', 'Brasil', 12) // false
filosofoHipster('Músico', 'Argentina', 1) // false

function filosofoHipster(profesión , nacionalidad , kilómetros) {


return profesión == "Músico " && nacionalidad == " Argentina " &&
kilómetros > 5;
}

Ejercicio 9:  Las tablas de la verdad


Siguiendo con los planteamientos filosóficos y analizando la siguiente tabla, podemos concluir que en la lógica
booleana, se puede definir el comportamiento de una expresión mediante una tabla de la verdad. En donde siendo A y
B expresiones que evalúan true o false y
usando el símbolo ^ (que representa la conjunción de las
mismas), podemos determinar si su unión nos arroja un Verdadero o Falso.

A B A^B

V V V

V F F

F V F

F F F

En el mundo de la lógica estas expresiones se llaman proposiciones. Pero… ¿qué cosas pueden ser una proposición?
Sólo hace falta que porten un valor de verdad, es decir, cualquier expresión booleana puede ser una proposición.

¿Nos creés? Probá en la consola tu función filosofoHipster con los siguientes valores y comprobá si se comporta
como en la tabla:

filosofoHipster('Músico', 'Argentina', 5) // true


filosofoHipster('Futbolista', 'Brasil', 12) // false
filosofoHipster('Músico', 'Argentina', 1) // false
filosofoHipster('Docente', 'Canadá', 12) // false

Ejercicio 10:  La familia Buen Día


Vamos ahora con un reto un poco más complejo.

Todos sabemos que los árboles genealógicos pueden tornarse complicados cuando hay muchas personas y relaciones
involucradas.

Seguramente conoces la novela Cien Años de Soledad, en donde hacer seguimiento de quienes son hermanos y
medio hermanos se vuelve algo confuso pues la línea sanguínea se cruzó múltiples veces, pues por poner algunos
ejemplos:

 Arcadio es hijo de José Arcadio y de Pilar Ternera


 Aureliano José es hijo del Coronel Aureliano y Pilar Ternera

 Aureliano Segundo y Remedios son hijos de Arcadio y Sofía De La Piedad

Por lo tanto podríamos definir que Arcadio y Aureliano José son medio hermanos pues tienen la misma madre pero no
el mismo padre.

Para que puedas resolver este ejercicio, nosotros definimos por vos las funciones madreDe y padreDe, las cuales,
recibiendo un hijo (string), retorna el nombre (string) de la madre o padre según corresponda. Ejemplo:

padreDe(aurelianoJose)
"Coronel Aureliano"
madreDe(aurelianoSegundo)
"Sofía De La Piedad"

Ahora es tu turno de ayudarnos a entender mejor la novela Cien Años de Soledad. Para ello, vas a tener que definir 3
funciones: tienenLaMismaMadre que tomando dos hijos por parámetro retorne true o false si efectivamente comparten la misma madre.
Dentro de ésta podés usar la función que te regalamos madreDe.
tienenElMismoPadre que al igual que la anterior, tome dos hijos por parámetro y retorne true o false si comparten el mismo padre.
Dentro de ésta podés usar la función que te regalamos padreDe.

Y sonMedioHermanos, que, recibiendo dos hijos por parámetro, nos diga si efectivamente son medio hermanos. Aquí dentro, debés usar
las dos funciones anteriores. Recordá que los medios hermanos se dan cuando, dos hijos comparten la misma madre, pero NO el
mismo padre o viceversa. Pues si ambos tienen la misma madre y el mismo padre ¡en ese caso serían hermanos! 
 ¡Dame una pista!
Tené presente que quizá tengas que usar la negación (!) dentro de la función sonMedioHermanos

function tienenLaMismaMadre(nombre1 , nombre2) {

return madreDe;
}
function tienenLaMismaPadre(nombre1 , nombre2) {

return padreDe;
}
function sonMedioHermanos(nombre1 , nombre2) {

return padreDe;
}

Ejercicio 11:  La hora de la verdad


Ahora pensemos cómo sería la tabla de verdad que representa el comportamiento de la función que acabás de hacer.

Las proposiciones serán tienenLaMismaMadre y tienenElMismoPadre, pues las mismas portan un valor booleano


(true/false) dependiendo de cuáles personas se estén evaluando.

Y el valor booleano final resultará de operar las mismas mediante la función sonMedioHermanos:

tienen la misma madre tienen el mismo padre son medios hermanos

true true false

true false true

false true true

false false false

Probá tu función sonMediosHermanos con los siguientes valores y comprobá si se comporta como la tabla:

  sonMediosHermanos(arcadio, aurelianoJose)
  sonMediosHermanos(aurelianoSegundo, remedios)

  sonMediosHermanos(aurelianoJose, remedios)
 ¡Dame una pista!
Recordá que en la familia Buendía:

 Arcadio es hijo de José Arcadio y de Pilar Ternera


 Aureliano José es hijo del Coronel Aureliano y Pilar Ternera

 Aureliano Segundo y Remedios son hijos de Arcadio y Sofía De La Piedad

 Ejercicio 12:  Mi nombre es Xor


 Ya hemos llegado lo suficientemente lejos como para entender que las
funciones tienenLaMismaMadre y tienenElMismoPadre son proposiciones genéricas de tipo A y B. Además,
si representamos la operación que realiza sonMedioHermanos con el símbolo ⊻ lo que obtenemos
es... ¡una nueva tabla de la verdad!

A B A⊻B

V V F

V F V

F V V

F F F

 Este comportamiento existe como un operador dentro de la lógica y se lo denomina xor o disyunción lógica
excluyente.

 A diferencia del and y or, el xor no suele estar definido en los lenguajes de programación.  Sin embargo,
ahora que sabés cómo funciona, si alguna vez lo necesitás podés definirlo a mano. 

 Veamos si se entiende: definí la función xor, que tome por parámetro dos valores booleanos y devuelva el valor de verdad
correspondiente según la tabla. TIP: es más sencillo de lo que piensas, lo podés resolver en la misma línea del return y
quizá nuevamente tengas que hacer uso de la negación !.

function xor ( valor1, valor2){


return valor1 == valor2 || valor1 =! valor2||;
}

Ejercicio 13:  Volviendo al secundario


Quizá no lo recuerdes bien, pero cuando pasamos por la secundaría aprendimos que cuando una expresión
matemática tiene varios operadores, las multiplicaciones y divisiones se efectuarán antes que las sumas y las restas se
efectuarán después de las sumas, a esto se le llama precedencia. Veamos un ejemplo simple:

5 * 3 + 8 / 4 - 3 = 14

Para que quede bien claro, lo que acaba de ocurrir es lo siguiente:

((5 * 3) + (8 / 4)) - 3 = 14
Lo primero que sucede es la multiplicación y la división y a su vez la suma de estos dos resultados. Acto seguido la
resta y posterior resultado.

(15 + 2) - 3 = 14

Ahora bien, en JavaScript, al igual que en matemática, cuando usamos operadores lógicos, las expresiones se evalúan
en un orden determinado, nuevamente, la precedencia.

¿Cuál es ese orden? ¡Hagamos la prueba! Veamos la siguiente función:

function pagaConTarjeta(seCobraInteres, cuotasTarjeta, efectivoDisponible) {


return !seCobraInteres && cuotasTarjeta >= 3 || efectivoDisponible < 100;
}

Probá en la consola los siguientes ejemplos y analiza su resultado:

  pagaConTarjeta(true, 6, 320)
  pagaConTarjeta(false, 8, 80)

  pagaConTarjeta(true, 2, 215)

  pagaConTarjeta(true, 1, 32)

Ejercicio 14:  Un ejercicio sin precedentes


Como lo viste en el ejercicio anterior, la operación con mayor precedencia es la negación !, seguida de la
conjunción && y luego disyunción || pero ¿qué pasa si quiero alterar el orden en que se resuelven dichas operaciones?

Exacto, tal como lo dijimos al principio del ejercicio anterior, al igual que en matemática, podemos usar los paréntesis
para agrupar las operaciones que queremos que se realicen primero.

Es tu turno ahora:
Escribí la función puedeJubilarse que recibe por parámetro la edad, el sexo y además, los años de aportes jubilatorios que posee una
persona, ejemplo:

puedeJubilarse(62, "F", 34)


true

Tené en cuenta que el mínimo de edad para realizar el trámite para las mujeres es de 60 años, mientras que para los hombres es 65. En
ambos casos, se deben contar con al menos 30 años de aportes jubilatorios.
 ¡Dame una pista!
Los géneros que vamos a manejar en este ejercicio son los siguientes:

 "F" para femenino


 "M" para masculino

function puedeJubilarse (edad, sexo, aporte) {


return edad >= 60 && sexo=="F" && aporte >= 30 || edad >= 65 &&
sexo=="M" && aporte >= 30;
}

Ejercicio 15:  Vamos al parque de diversiones


Ya falta poco. Con cada ejercicio, vamos volviéndonos más expertos en condicionales. Vamos ahora a jugar un rato.
En el parque de diversiones de la ciudad instalaron una nueva montaña rusa y nos pidieron ayuda para que le
avisemos a las personas, si pueden subirse o no, antes de hacer la fila. Los requisitos para que una persona pueda
subir a la atracción son:

 Alcanzar la altura mínima de 1.5m (o 1.2m si está acompañada por un adulto)


 No tener ninguna afección cardíaca

Definí la función puedeSubirse , la cual, recibiendo 3 parámetros: alturaPersona (number), vieneConCompania (booleano),


tieneAfeccionCardiaca (booleano), retorne true o false según el caso. Tené en cuenta, las condiciones necesarias, mencionadas
anteriormente.

puedeSubirse(1.7, false, true)


false // no puede subirse
// porque aunque tiene mas de 1.5m,
// tiene una afección cardíaca

 ¡Dame una pista!


Tené presente que quizá tengas que usar la negación (!) para alguno de los tres parámetros.

function puedeSubirse (alturaPersona, vieneConCompania,


tieneAfeccionCardiaca){
return (alturaPersona >= 1.5 && vieneConCompania = true ||
vieneConCompania = false && tieneAfeccionCardiaca = false) ||
(alturaPersona = 1.2 && vieneConCompania = true &&
tieneAfeccionCardiaca = false);
}
puedeSubirse(1.7, false, true)

Ejercicio 16:  Ahora, te vamos a dar un premio


Ya has llegado al nivel necesario para ganarte un premio por tu excelente rendimiento. Ahora que ya sabés lo
suficiente de JavaScript, el jurado de un torneo de programación, nos pidió que desarrollemos la
función medallaSegunPuesto, la cual retorne la medalla que le corresponde a los primeros puestos, según la siguiente
lógica:

 primer puesto: le corresponde "oro"


 segundo puesto: le corresponde "plata"

 tercer puesto: le corresponde "bronce"

 otros puestos: le corresponde "Seguí participando"

Si ejecutáramos la función con los siguientes puestos, el resultado sería así:

medallaSegunPuesto(1)
"oro"
medallaSegunPuesto(5)
"Seguí participando"

Definí entonces, la función medallaSegunPuesto. TIP: en esta función podés hacer uso de varios if.

function medallaSegunPuesto(puesto){
if (puesto == 1) {

return ("oro");
}
if (puesto == 2) {

return ("plata");
}
if (puesto == 3) {

return ("bronce");
}
else {

return ("Seguí participando");


}
}

Ciclos
Como te contábamos cuando empezaste, programar nos da un gran poder: nos permite automatizar tareas
repetitivas y tediosas.

¿Y qué quiere decir eso de "repetitivas"? Pensemos, por ejemplo, cómo haríamos una función que imprima por pantalla
5 veces la palabra Azul:

function imprimirAzul{
console.log(Azul)
console.log(Azul)
console.log(Azul)
console.log(Azul)
console.log(Azul)
}

¿Notás qué es lo que se repite? Sí, estamos haciendo 5 veces lo mismo: imprimir la palabra Azul. Sin dudas, sería
mucho más interesante no tener que repetir esta instrucción 5 veces, sino que la computadora hiciera eso por
nosotros... ¡o si no te estaríamos mintiendo con lo de automatizar!

En esta guía vamos a aprender cómo decirle a la computadora que repita varias veces lo mismo, y también algunos
trucos más.

¡Continuá esta lección!

Contenido 
  1. ¿Ciclos?
  2. La computadora repite por nosotros

  3. Reforzando lo que vimos

  4. Pasito a pasito...

  5. One more rep

  6. Par o no par, esa es la cuestion

  7. Repetición Variable

  8. Solo 3 empanadas

  9. Muchas Empanadas

  10. Seguimos variando

  11. Sumatoria

  12. Usain Bolt te necesita

Ejercicio 2:  La computadora repite por


nosotros
Como te adelantamos en el ejercicio anterior, en Javascript existe una forma de decir "quiero que estos comandos se
repitan esta cantidad de veces".

Entonces, cuando es necesario repetir un comando (como console.log) un cierto número de veces, en lugar de copiar y
pegar como veníamos haciendo hasta ahora, podemos utilizar la sentencia for.

Por ejemplo, si queremos imprimir "Hola!" por pantalla 4 veces, podríamos escribir lo siguiente:

for(var i = 0; i < 4; i++) {


console.log("Hola!")
}
En el for tenés un contador de repeticiones, en el ejemplo anterior ese contador es la variable i. Tenés que indicar
donde comienza a contar, cuál es la condición en donde dejará de contar, en este caso i < 4 y cómo se modifica la i
en cada repetición (en este caso se incrementa uno).

Sabiendo esto, ¿Cómo podemos hacer para imprimir 4 veces por pantalla la palabra Azul?
Realizar una función llamada imprimirAzul4 que muestre por consola 4 veces la palabra Azul

function imprimirAzul4(){
for(var i = 0; i < 4; i++) {
console.log("Azul")
}
}

Ejercicio 3:  Reforzando lo que vimos


Hagamos un ejercicio más para incorporar mejor lo aprendido en el apartado anterior.
Realizar una función llamada imprimir5veces5 que muestre por consola 5 veces el numero 5

function imprimir5veces5 (){

for ( var i =0; i<5; i++){


console.log(5);
}
}

Ejercicio 4:  Pasito a pasito...


Antes de seguir avanzando con el for, tratemos de analizar bien qué es lo que sucede adentro del mismo. Ya sabemos
que ejecuta el código que nosotros le pedimos mientras se cumpla una determinada condición.

El for tiene una variable que va cambiando, y esta es i. Es importante entender el comportamiento de esta.
Recordemos del apartado anterior que el valor i se va incrementando a medida que va iterando.

for(var i = 0; i < 4; i++) {


console.log("Hola!")
}

Sabiendo esto, escribí una función pasitoAPasito, que imprime 5 veces el contenido de i. Por ejemplo:

pasitoAPasito()
0
1
2
3
4

Esto hizo un console.log(valor) por cada iteracion.

function pasitoAPasito(){

for (var i = 0; i < 5; i++){


console.log(i);
}
}

Ejercicio 5:  One more rep


Hagamos un ejercicio similar al anterior para despejar alguna que otra duda.
Realizar una función llamada pasandoPorI que muestre por consola "acá i tiene el valor de x" donde x va a ser el valor de la variable i
en cada iteración, por cada valor que va tomando i desde 0 hasta el numero 3.

function pasandoPorI (){

for ( var i = 0; i <= 3; i++){


console.log( "acá i tiene el valor de x " + i);
}
}

Ejercicio 6:  Par o no par, esa es la cuestion


Siguiendo las ejercitaciones anteriores, vamos a crear una función llamada pasandoPorLosPares que por cada
iteración de i, si el valor de i es par, imprima por pantalla “acá i tiene el valor de x”.
Realizar una función llamada pasandoPorLosPares() que muestre por consola acá i tiene el valor de x por cada valor PAR que va
tomando i desde 0 hasta 6 (inclusive).
 ¡Dame una pista!
Para saber si un número es par usamos el operador % (módulo) que me devuelve el resto de dividir un número por
otro. Por ejemplo: 11 % 5 --> me devuelve el resto de dividir 11 por 5. En este caso devuelve 1.

function pasandoPorLosPares (){

for ( var i =0; i<=6; i= i +2){


console.log("acá i tiene el valor de x " + i);
}
}
pasandoPorLosPares ();

Ejercicio 7:  Repetición Variable


En ejercicios anteriores logramos hacer que se imprima por pantalla varias veces la palabra "Azul" de una manera
mucho más eficiente y prolija gracias al for.

Ahora, muchas veces nos vamos a encontrar con que en vez de necesitar hacer algo una cantidad de veces constante,
va a ser necesario que esto pueda variar.

Por ejemplo, podríamos hacer una función que imprima 5 veces azul y que esta los imprima usando el for. ¿Que
pasaría si ahora tambien necesitamos que se imprima 4 veces? Para eso hoy en día necesitaríamos crear otra función.
Como ven esto no escala, sin embargo con algunas cosas que vimos podemos darle una vuelta de rosca y hacer una
función genérica que reciba cuantas veces queremos que se ejecute algo. Algo así como un imprimir varias veces
"Azul" genérico.

Para esto tenemos que modificar el for. Si queremos repetir una instrucción 4 veces, podríamos escribir lo siguiente:

for(var i = 0; i < 4; i++) {


//Acá adentro escribo las instrucciones que quiero repetir
}

Para que el for sea dinámico y en vez de repetirse solo 4 veces pueda hacerlo x cantidad de veces solo hay que
modificar el 4.

var x = 4;
for(var i = 0; i < x; i++) {
//Acá adentro escribo las instrucciones que quiero repetir
}

Acá x es una variable numérica que en el caso de valer 4 sería el equivalente al anterior. El chiste es que ahora
podemos asignarle distintos valores a la variable x. Una manera de obtener este valor sería si nos lo pasan como
parametro de una función y adentro de la misma, usarla.

function repetirXVecesAlgo(cantidadDeVeces) {
for(var i = 0; i < cantidadDeVeces; i++) {
//Acá adentro escribo las instrucciones que quiero repetir
}
}

Sabiendo esto escribí una función imprimirAzul, que toma como parámetro un valor numérico X e imprima "Azul" X cantidad de veces.
Por ejemplo:

imprimirAzul(3)
"AzulAzulAzul"

function imprimirAzul(cantidadDeVeces) {
for(var i = 0; i < cantidadDeVeces; i++) {
console.log("Azul");
}
}

Ejercicio 8:  Solo 3 empanadas


Hasta ahora nos enfocamos en comprender que el for nos sirve para repetir una acción X cantidad de veces. En este
ejercicio nos vamos a enforcar en la acción. Hasta este momento solo imprimíamos por pantalla la palabra "Azul",
ahora vamos a hacer algo más avanzado y la idea sería utilizar el for para obtener el resultado de una operación
realizada una cantidad de veces.

Si quisiéramos contar cuantas calorias tienen 3 empanadas y cada empanada tiene 300 calorias, podríamos hacer dos
cosas, una sería multiplicar, y otra sería sumar 3 veces 300 calorias.

Para hacer esto en código primero necesitamos hacer un for que se ejecute 3 veces:

for(var i = 0; i < 3; i++) {


//Hacer la sumatoria
}

Para hacer la suma, uno podría llega a sacar la siguiente conclusión:

for(var i = 0; i < 3; i++) {


var totalCalorias = totalCalorias + 300;
}

Donde por cada iteración estamos diciendo que el "totalCalorias" es igual al valor que había en "totalCalorias" más 300,
de esta manera podríamos obtener el total de los valores.

Este código si bien parece que funcionaría si lo ejecutamos, no nos va a dar el valor que esperamos, por qué?

Esto se debe a que la variable "totalCalorias" está declarada dentro del for y esto trae dos consecuencias:

 La variable no existe / no puede ser llamada por fuera del for

for(var i = 0; i < 3; i++) {


var totalCalorias = totalCalorias + 300; //la variable totalCalorias esta
declarada dentro del for y sólo puede ser usada ahí dentro
}

console.log(totalCalorias) //la variable totalCalorias acá ya no existe y no


puede ser consultada

 La variable es inicializada cada vez que se ejecuta una iteracion del for

Dentro del for esta el código que queremos que se ejecute en CADA ITERACION, por lo cual en CADA ITERACION se
vuelve a ejecutar el mismo código. Por consecuencia, la primera vez que se ejecute el for

var totalCalorias = totalCalorias + 300; //totalCalorias podría terminar


valiendo 300
}

Y la segunda vez que se ejecuta dentro del for

var totalCalorias = totalCalorias + 300; //Estamos volviendo a declarar la


variable totalCalorias, por lo cual no logramos almacenar el valor anterior.
}

Cómo solucionamos esto?

Esto esta relacionado con la existencia de las variables, la variable totalCalorias es local al for, y por ende sólo la
podemos usar ahí y se resetea por cada iteración. Si queremos mantener el valor por fuera de cada iteración, debemos
hacer que esta varible sea global al for. Esto lo logramos de manera sencilla declarando la variable totalCalorias por
fuera del for.

var totalCalorias = 0; //Acá aprovecho e inicializo en 0 la variable


totalCalorias.

for(var i = 0; i < 5; i++) {


totalCalorias = totalCalorias + 0.25; //acá la variable, como ya esta
declarada por fuera del for, puede ser modificada durante las iteraciones y
no se "reinicia"
}

console.log(totalCalorias) //la variable totalCalorias acá ya existe y nos


devuelve el valor total que buscábamos.

Sabiendo esto, escribí una función sumar5MonedasDe25Centavos, que sume el valor de 5 monedas de 0.25 centavos y retorne el
resultado.
Por ejemplo:

sumar5MonedasDe25Centavos()
1.25

Esto hizo 0.25+0.25+0.25+0.25+0.25

function sumar5MonedasDe25Centavos (){

var totalmonedas = 0;

for(var i = 0; i < 5; i++) {


totalmonedas = totalmonedas + 0.25;
}
return totalmonedas;
}
Ejercicio 9:  Muchas Empanadas
Con las ejercitaciones previas vimos cómo usar el for para ejecutar una acción una cantidad de veces fija y variable y
cómo hacer algún procesamiento dentro del mismo.

En el ejercicio anterior supimos como calcular la sumatoria de 5 monedas de 25 centavos. La idea sería que logremos
hacer una función que calcule la sumatoria de cualquier cantidad de monedas.

Para esto vamos a expandir el ejemplo de las empanadas anterior en el cual calculabamos las calorías de 3
empanadas.

var totalCalorias = 0;

for(var i = 0; i < 3; i++) {


totalCalorias = totalCalorias + 300;
}

console.log(totalCalorias)

Para lograr esto, lo que tenemos que modificar es algo similar al ejercicio 2 de Variables Repetidas.

Primero tenemos que sacar el numero 3 y hacer que este sea variable, por ejemplo "x" o "cantidadDeEmpanadas"

var cantidadEmpanadas = 3;
var totalCalorias = 0;

for(var i = 0; i < cantidadDeEmpanadas; i++) {


totalCalorias = totalCalorias + 300;
}

console.log(totalCalorias)

Luego de hacer esta modificación, la variable cantidadEmpanadas podría ser un argumento de una función.

function caloriasDeEmpanadas(cantidadDeEmpanadas){
var totalCalorias = 0;

for(var i = 0; i < cantidadDeEmpanadas; i++) {


totalCalorias = totalCalorias + 300;
}

console.log(totalCalorias)
}

Y de esta manera logramos hacer nuestra función, que al pasarle la cantidad de empanadas, esta imprime por pantalla
la cantidad de calorías totales.

Te proponemos una última modificación. En vez de hacer que la función imprima, vamos a hacer que esta
función devuelva un valor, para eso vamos a utilizar el return.

function caloriasDeEmpanadas(cantidadDeEmpanadas){
var totalCalorias = 0;

for(var i = 0; i < cantidadDeEmpanadas; i++) {


totalCalorias = totalCalorias + 300;
}

return totalCalorias;
}

Sabiendo esto, escribí una función sumarMonedasDe25(cantidadDeMonedas), que tome como parámetro un valor numérico y devuelva la
sumatoria de las monedas de 25 centavos. Por ejemplo:

sumarMonedasDe25(7)
1.75

Esto hizo 0.25+0.25+0.25+0.25+0.25+0.25+0.25

function sumarMonedasDe25(cantidadDeMonedas){
var totalmonedas = 0;

for(var i = 0; i < cantidadDeMonedas; i++) {


totalmonedas = totalmonedas + 0.25;
}

return totalmonedas;
}

sumarMonedasDe25(7);

function sumaDeLosParesDel0Al(){
var sumapar= 0;
for(var i = 0; i <= 6; i+2) {
sumapar = sumapar ;
}
if(i%2 == 0){
return sumapar;
}
}

Ejercicio 10:  Seguimos variando


Hagamos un ejercicio más para incorporar mejor lo aprendido en el apartado anterior.
Defini ahora la función sumaDeLosParesDel0Al(x) tome como parametro un numero X y que devuelva el total de la suma de todos los
números que son pares del 0 al X.
Esto hace 0+2+4+6+8+10+.....X.

function sumaDeLosParesDel0Al(){

var sumapar= 0;
for(var i = 0; i <= 6; i+2) {
sumapar = sumapar ;
}
if(i%2 == 0){
return sumapar;
}
}

Ejercicio 11:  Sumatoria
Visto lo aprendido hasta este momento, estamos en condiciones de hacer la siguiente ejercitación.

Para esto vamos a tener que utilizar todos los conceptos vistos del for hasta ahora:

 repeticiones variables
 procesar algo utilizando el for
 el valor de la variable i

Sabiendo esto, escribí una función sumatoriaHasta, que tome como parámetro X (un valor numérico) y devuelva (no imprima) la
sumatoria de los numeros anteriores a el. Por ejemplo:

sumatoriaHasta(4)
6

Esto hizo 0+1+2+3

Ejercicio 12:  Usain Bolt te necesita


Para las próximas olimpiadas, Usain Bolt, para calcular su dieta necesita un simulador, que dado un entrenamiento le
diga cuantas calorías necesita consumir, para poder realizar un ejercicio de trote.

Para esto tenemos que crear la funcion caloriasDeTrote() que recibe por parámetro las vueltas que tiene que recorrer.
Las calorías se calculan de la siguiente manera: 5 calorías (que consume cada vuelta) * el número de vuelta que se da,
ya que cada vez las vueltas consumen más y más calorías.
Sabiendo esto, escribí una función caloriasDeTrote(), que tome como parámetro X, un valor numérico que representa la cantidad de
vueltas a correr y devuelve (no imprime) la cantidad de calorías que consumiría.

Por ejemplo:

caloriasDeTrote(2)

Deveria devolver 15 donde 5 calorias son de la primera vuelta (5 * 1) y 10 calorias de la segunda (5 * 2).

function caloriasDeTrote(){

var totalvueltas= 0;
for (i = 0; i<=3; i++){
totalvueltas = totalvueltas + 5;
}
return totalvueltas;
}

Arrays
La programación no sería tan divertida y poderosa si sólo pudieramos tabajar con una cosa por vez: muchas veces no
vamos a querer simplemente operar un string, un booleano, un número, sino varios a la vez.

¡Llegó entonces el momento de aprender a tratar conjuntos de cosas! Conozcamos a los vectores, también
llamados arrays

¡Continuá esta lección!

Contenido 
  1. ¿Arrays?
  2. Series favoritas

  3. Y esto, es un array

  4. Juegos de azar


  5. Arrays vacíos

  6. ¿Cuántos elementos tenés?

  7. Agregando sabor

  8. Trasladar

  9. ¿Y dónde está?

  10. Contiene

  11. Enésimo elemento

  12. Más premios

  13. Sumatorias, primera parte

  14. Sumatorias, segunda parte

  15. Sumatorias, tercera parte

  16. Sumatorias, cuarta parte

  17. Ciclos con Arrays

  18. Conteos

  19. Más conteos

  20. Filtrados

  21. Palo de truco

Ejercicio 1:  ¿Arrays?
var arrayGenerico = [
"perros",
"gatos",
true,
23,
24
];
console.log (arrayGenerico [1]);

Ejercicio 2:  Series favoritas


Supongamos que queremos representar al conjunto de nuestras series favoritas. ¿Cómo podríamos hacerlo?

var seriesFavoritasDeAna = ["Game of Thrones", "Breaking Bad", "House of


Cards"];
var seriesFavoritasDeHector = ["En Terapia", "Recordando el Show de Alejandro
Molina"]
Como ves, para representar a un conjunto de strings, colocamos todos esos strings que nos interesan, entre corchetes
([ y ]) separados por comas. Fácil, ¿no?
Probá en la consola las siguientes consultas:

 seriesFavoritasDeAna
 seriesFavoritasDeHector

 ["hola","mundo!"]

 ["hola","hola"]

Ejercicio 3:  Y esto, es un array


Lo que acabamos de ver es que podemos fácilmente modelar conjuntos de cosas. Y eso se debe a que en JavaScript,
contamos con el tipo de dato array, también conocido como vector, que acabamos de conocer.

Los arrays pueden tener múltiples elementos, ¡no hay límite!

Y no sólo eso, sino que además, el orden es importante. Por ejemplo, no es lo mismo ["hola", "mundo"] que ["mundo",
"hola"]: ambos tienen los mismos elementos, pero en posiciones diferentes.

Probá en la consola las siguientes consultas:

 arraysIguales(["hola", "mundo"], ["mundo", "hola"])


 arraysIguales(["hola", "mundo"], ["hola", "mundo"])

 arraysIguales(["hola", "mundo"], ["hola", "todo", "el", "mundo"])

 arraysIguales(["hola"], ["hola", "mundo"])

 ["hola", "mundo"] === ["mundo", "hola"]

 personas

 ["mara", "julian"] === personas

 personas === personas

¿Qué conclusiones podés sacar?

Ejercicio 4:  Juegos de azar


Pero, pero, ¿sólo podemos crear arrays de strings? ¿Y si quiero, por ejemplo, representar los números de la lotería que
salieron la semana pasada? ¿O las tiradas sucesivas de un dado? ¿O si salió cara o seca en tiradas sucesivas de una
moneda?

var numerosDeLoteria = [2, 11, 17, 32, 36, 39];


var tiradasDelDado = [1, 6, 6, 2, 2, 4];
var salioCara = [false, false, true, false];

Como ves, también podemos representar conjuntos de números o booleanos, de igual forma: escribiéndolos entre
corchetes y separados por comas. Podemos tener arrays de números, de strings, de booleanos, etc. ¡Incluso
podríamos tener arrays de arrays!
Veamos si queda claro: probá en la consola las siguientes consultas:

 numerosDeLoteria
 salioCara

 [[1, 2, 3], [4, 5, 6]]

 Consola
  Biblioteca

Ejercicio 5:  Arrays vacíos


Genial, ¡parece que un array puede contener cualquier tipo de elementos! Podemos tener arrays de booleanos, de
números, de strings, de arrays...

Y no sólo eso, sino que además pueden contener cualquier cantidad de elementos: uno, dos, quince, cientos.

¿Podremos entonces tener arrays vacíos, es decir, que no tengan elementos? ¡Por supuesto!

var unArrayVacio = []

Probá escribir en la consola un array vacío

Ejercicio 6:  ¿Cuántos elementos tenés?


Bueno, ya sabemos qué cosas podemos representar con arrays, y cómo hacerlo. Pero, ¿qué podemos hacer con
ellos?

Empecemos por lo fácil: saber cuántos elementos hay en el array. Esto lo podemos hacer utilizando
la propiedad length, de forma similar a lo que hacíamos con los strings. Para preguntarle a un array cuantos elementos
tiene debemos indicar el array en cuestion seguido de un '.' y la propiedad que queremos acceder ("length").
Realizá las siguientes consultas en la consola:

 [].length
 numerosDeLoteria.length

 [4, 3].length

 Consola

  Biblioteca

Ejercicio 7:  Agregando sabor


Los arrays son muy útiles para contener múltiples elementos y nos sirve mucho poder consultar cuantos elementos
contienen. Pero hay algo más: también podemos agregarle elementos en cualquier momento, lo cual lo resolvemos
mediante el método push. Nuevamente, para poder agregar un elemento a un array, debemos indicar el array seguido
de un '.' y el metodo push con el elemento que queremos agregar como parametro. Por ejemplo:

var pertenencias = ["espada", "escudo", "antorcha"];


//pertenencias.length acá vale 3;

pertenencias.push("amuleto mágico");
//ahora pertenencias.length vale 4

Como vemos, push agrega un elemento a la lista, lo cual hace que su tamaño aumente. ¿Pero en qué parte de la lista
lo agrega? ¿Al principio? ¿Al final? ¿En el medio?
Averigualo vos mismo: inspeccioná en la consola que elementos contiene pertenencias, agregale una "ballesta" y volvé a
inspeccionar pertenencias.

Ah y, además, existe un método pop, que no tiene parámetros. Investigá en la consola qué hace.

Ejercicio 8:  Trasladar
Bueno, ya hablamos bastante; ¡es hora de la acción !
Declará una función trasladar, que tome dos arrays, saque el último elemento del primero y lo agregue al segundo.

Ejemplo:
var unArray = [1, 2, 3];
var otroArray = [4, 5];

trasladar(unArray, otroArray);

unArray //debería ser [1, 2]


otroArray //debería ser [4, 5, 3]

 ¡Dame una pista!


¿Tenés dudas sobre cómo quitar y agregar elementos? Repasemos:

 push: método de arrays que agrega el elemento parametro al final del array
 pop: método de arrays que saca el último elemento

var unArray = [1, 2, 3];


var otroArray = [ 4, 5];

function trasladar(unArray, otroArray){


unArray.push[3]
otroArray.pop[4,[3],5]
}

Ejercicio 9:  ¿Y dónde está?


Otro método útil de los arrays es indexOf, que nos dice en que posición está un elemento dentro del array:

var miArray = ["a", "la", "grande", "le", "puse", "cuca"]


var posicion = miArray.indexOf("grande"); //devuelve 2

var diasLaborales = ["lunes", "martes", "miercoles", "jueves", "viernes"]


var unDia = diasLaborales.indexOf("lunes"); //devuelve 0

Como ves, lo "raro" del método indexOf es que pareciera devolver siempre 1 menos de lo esperado. ¿Es que los
creadores de JavaScript se equivocaron? 

No, se trata de que en JavaScript, al igual que en muchos lenguajes, las posiciones de los arrays arrancan en 0: el
primer elemento es la posición 0, el segundo, 1, el tercero, 2, y así.
¿Y qué sucede si le pasás por parámetro a indexOf un elemento que no tiene? ¡Averigualo vos mismo!

Probá lo siguiente:

diasLaborales.indexOf("osvaldo")

Ejercicio 10:  Contiene
¡Ahora te toca a vos!
Escribí la función contiene que nos diga si un array contiene a un cierto elemento.

contiene([1, 6, 7, 6], 7)
true
contiene([1, 6, 7, 6], 6)
true
contiene([], 7)
false
contiene([8, 5], 7)
false

 ¡Dame una pista!


Recorda que la funcion indexOf indica la posicion de un elemento en el array, y ademas indica un valor particular para
los elementos que NO se encuentran dentro del array.

var elementos = ([1, 6, 7, 6], 7);

function contiene(elementos){

var contenido = contiene.indexOF(1);


}

Ejercicio 11:  Enésimo elemento


Al reves que con indexOf (que nos dice la posicion de un elemento particular) existe un operador para averiguar qué
elemento hay en una posición dada:

mesesDelAnio[0]
"Enero"
["ese", "perro", "tiene", "la", "cola", "peluda"][1]
"perro"

¡Ojo! El índice que le pasás debe ser menor a la longitud del array, o cosas malas pueden suceder.
Probalo vos mismo en la consola: ¿qué sucede si le pedís el elemento 0 a una lista vacía? ¿O si le pedís el elemento 48 a una lista de 2
elementos?

Ejercicio 12:  Más premios


Si le pedís un elemento en una posición que iguala o excede al tamaño del array, vas a obtener undefined. No parece
algo terrible, pero el problema es que con undefined no podés hacer nada realmente útil.

Así que estás advertido: ¡no te pases de índice!


Teniendo esto en cuenta, va un desafío: escribí nuevamente la función medallaSegunPuesto, pero esta vez usando como máximo un
sólo if. Quizás los arrays te pueden ser útiles acá .
Ah, te recordamos la función: tiene que devolver la medalla que le corresponde a los primeros puestos de una competencia:

medallaSegunPuesto(1)
"oro"
medallaSegunPuesto(2)
"plata"
medallaSegunPuesto(3)
"bronce"
medallaSegunPuesto(4)
"nada"
medallaSegunPuesto(5)
"nada"

Ejercicio 13:  Sumatorias, primera parte


Ana, contadora de una conocida empresa, guarda las ganancias de cada mes en un array. Por ejemplo, para el último
semestre del año pasado registró las siguientes:

//En Julio ganó $50, en Agosto perdió $12, etc


var gananciasUltimoSemestre = [50, -12, 1000, 300, 200, 0];

Y nos acaba de preguntar: "¿puedo saber la ganancia de todo un semestre?"

"Obvio", dijimos, y escribimos el siguiente código:

function sumatoriaGananciasSemestre(unSemestre) {
return unSemestre[0] + unSemestre[1] +
unSemestre[2] + unSemestre[3] +
unSemestre[4] + unSemestre[5];
}

"Gracias", nos dijo Ana, y se fue calcular las ganancias usando la función que le pasamos. Pero un rato mas tarde,
volvió contandonos que también había registrado las ganancias del primer trimestre de este año:

//En Enero la empresa ganó $80, en Febrero, $453, en Marzo $1000


var gananciasPrimerTrimestre = [80, 453, 1000];

Y nos preguntó: "¿Podría usar esta función que me dieron para calcular las ganancias del primer trimestre?"

Y nos quedamos pensando .


¿Tiene algún problema la función sumatoriaGananciasSemestre que escribimos anteriormente? ¿Funcionará con trimestres? ¿Y con
cuatrimestres?

¡Probala en la consola!

Ejercicio 14:  Sumatorias, segunda parte


¿Lo pensaste?

La función sumatoriaGananciasSemestre anterior tiene dos problemas:

1. Es muy repetitiva y tediosa de escribir. ¡Tenemos que hacer muchas sumas a mano!
2. Y no es genérica, sólo sirve para arrays de 6 elementos:
 si tiene más de seis elementos, sólo suma los primeros

 si tiene menos, devuelve cosas bizarras (¿te acordás cuando te dijimos que si te ibas de índice cosas malas
podían ocurrir  ?)

Lo que nos gustaría es poder sumar de forma genérica a todos los elementos del array, sin importar cuántos haya
realmente: queremos una función gananciaTotal, que pueda sumar periodos de cualquier tamaño: semetres,
cuatrimestres, trimestres, etc. ¡Qué difícil!
¿Qué? ¿No nos creés que eso se pueda hacer? ¡Qué poca confianza, che!

Nosotros ya hicimos nuestra versión; probala con las siguientes consultas:

gananciaTotal([2, 3])
gananciaTotal([2, 3, 1, 8, 8, -1])
gananciaTotal([])

Después seguinos para contarte cómo la hicimos 

Ejercicio 15:  Sumatorias, tercera parte


Ahora que ya sabemos qué es lo que queremos (gananciaTotal), razonemos cómo hacerlo....

Vamos de a poquito: si el array no tuviera elementos, ¿cuanto debería ser la sumatoria? ¡0!

function gananciaTotal0(unPeriodo) {
var sumatoria = 0;
return sumatoria;
}

¿Y si tuviera exactamente 1 elemento? Estem... 0.... ¿más ese elemento? ¡Exacto!

function gananciaTotal1(unPeriodo) {
var sumatoria = 0;
sumatoria = sumatoria + unPeriodo[0];
return sumatoria;
}

¿Y si tuviera 2 elementos?

function gananciaTotal2(unPeriodo) {
var sumatoria = 0;
sumatoria = sumatoria + unPeriodo[0];
sumatoria = sumatoria + unPeriodo[1];
return sumatoria;
}

¿Y si tuviera 3 elementos?

function gananciaTotal3(unPeriodo) {
var sumatoria = 0;
sumatoria = sumatoria + unPeriodo[0];
sumatoria = sumatoria + unPeriodo[1];
sumatoria = sumatoria + unPeriodo[2];
return sumatoria;
}

¿Empezas a ver un patrón? Tratá de escribir gananciaTotal4 que funcione para 4 elementos.

  Solución
 Consola

Ejercicio 16:  Sumatorias, cuarta parte


Entonces tenemos que repetir la operación de acumular varias veces, una por cada elemento del array. Esto no solo
nos esta quedando desprolijo, sino que también es muy repetitivo!!!.

¿No habia una estructura que vimos previamente que nos permitiía repetir una acción una cantidad de veces?.

¡Si el for!

¿Y puedo hacer que repita esa acción por todos los elementos?

¡Si pidiendole el length al array!

Ejemplo:

function gananciaTotal(unPeriodo) {
var sumatoria = 0;
for (var i=0; i<unPeriodo.length; i++) {
var mes = unPeriodo[i];
sumatoria = sumatoria + mes;
}
return sumatoria;
}

¿Aún no te convenciste? Nuevamente, probá las siguientes expresiones en la consola:

 gananciaTotal([])
 gananciaTotal([100])

 gananciaTotal([100, 2])

 gananciaTotal([2, 10, -20])

 gananciaTotal([2, 10, -20, 0, 0, 10, 10])

 Consola

  Biblioteca

 Ejercicio 18:  Conteos
 "Ah, pero esto no termina acá" - dijo Ana - "Quiero saber en cuántos meses hubo ganancia, es decir, que el
saldo fue mayor a cero".
 Completá la función cantidadDeMesesConGanancia. Si prestás atención notarás que tiene una estructura similar al problema
anterior 

  ¡Dame una pista!


 A una lista le podiamos pedir el tamaño con ellength. Ejemplo:

 var lista = ["Juan","Pepe"];


 var cantidadElementosLista = lista.length;
 console.log(cantidadElementosLista) //devuelve 2

function cantidadDeMesesConGanancia(unPeriodo) {
var cantidad = ????;
for (var i = 0; i < unPeriodo.???;i++) {
????
}
return cantidad;
}

Ejercicio 19:  Más conteos


Ana, viendo que somos tan productivos, nos pidió algo más: ahora quiere saber en cuántos meses de un período hubo
pérdida.

Decimos que hay pérdida en un período cuando el saldo es menor a cero.


Escribí la función cantidadDeMesesConPerdida. La estructura de la función es parecida a las que venimos haciendo, ¡animate!

Ejercicio 20:  Filtrados
Ya sobre la hora , Ana nos dejó con un problema más interesante: quiere saber los saldos de los meses que hubo
ganancia .

saldosDeMesesConGanancia([100, 20, 0, -10, 10])


[100, 20, 10]

Completá la función saldosDeMesesConGanancia. Nuevamente tiene una estructura similar a los problemas anteriores, pero, ¡no tan
rápido!: esta función tiene que devolver un array.

Ejercicio 21:  Palo de truco


¡Cerremos esta lección con un desafío! 

Queremos escribir una función paloDeTruco, que dado un palo, devuelva una lista de strings, una por cada carta de ese
palo según las cartas del truco:

paloDeTruco("espadas")
["1 de espadas", "2 de espadas", "3 de espadas" ..., "12 de espadas"]

Tomá en cuenta que las cartas de truco incluyen todas las numeradas del 1 al 12, excepto por los 8s y los 9s.
Escribí la función paloDeTruco
Ejercicio 4:  Siempre falta un punto para la
coma?
Puede ser que hayas viso en algún otro lado que en JavaScript algunos comandos, instrucciones terminan en ";". Esto
a veces puede marear 

En algunos casos sirve para decirle a la maquina que interpreta nuestro código "hace lo que dije hasta este punto y
coma". ¿En qué casos? no te preocupes, vamos a ir viendolos a medida que vamos avanzando .

Para comenzar, en el ejercicio anterior vimos:

var meses = 12
var cantidadDeAlumnos = 30

También podría haber sido escrito de la siguiente manera:

var meses = 12;


var cantidadDeAlumnos = 30;

function elMayor(Numero1,Numero2) {
if (Numero1 > Numero2) {
return Numero1 ;
} else {
return Numero2;
}
}

Ejercicio 5:  Variables y Operaciones


Vimos como declarar una variable y asignarle un valor, y probablemente ahora te preguntes ¿Y para qué sirve
almacenar datos en variables?.

Las variables nos permiten reutilizar el dato asignado en la misma con solo invocar su nombre.

var unNumero = 124;


console.log(unNumero);
// Podemos usar console.log para imprimir el valor que tiene asignado
unNumero. Su resultado será 124.

También algo muy importante, así como podemos hacer operaciones matemáticas como sumar (+) o restar (-) números
podemos hacer lo mismo con las variables que las referencien.
Por ejemplo:

var unNumero = 124;


var siguienteNumero = unNumero + 1;
console.log(siguienteNumero);
// Se imprimirá por pantalla el valor que tiene asignado siguienteNumero que
será 125.

Veamos si se entiende: Declará y asigná dos variables, numeroA y numeroB, y luego en las


variables resultadoSuma, resultadoResta, resultadoMultiplicacion y resultadoDivision almacená el resultado que corresponda
utilizando variables. Luego puedes mostrar los resultados imprimiendo cada uno de ellos, utilizando console.log().
var numeroA= 5

var numeroB= 7

var resultadoSuma= numeroA + numeroB;

console.log(resultadoSuma);

var resultadoResta= numeroA - numeroB;

console.log(resultadoResta);

var resultadoMultiplicacion= numeroA * numeroB;

console.log(resultadoMultiplicacion);

var resultadoDivision= numeroA / numeroB;

console.log(resultadoDivision);

Ejercicio 6:  Otro tipo de dato


Ademas de los números, hay un tipo de dato más en JavaScript. Este tipo de dato es:

 String

A los datos de tipo String se los conoce como Cadenas de Texto, y nos van a permitir representar cualquier
combinación de letras, números y/o símbolos.
Para definir un String es necesario que el texto en cuestión esté entre comillas:

 "Juan"
 "Mi nombre es Juan."

 "125 + 125 = 250!"

Para generar un String, simplemente le puedo asignar el texto a una variable; por ejemplo:

var miPlaneta = "Tierra";


console.log(miPlaneta) // Esto imprimirá por pantalla "Tierra"

Para pasar al próximo ejercicio, declará la variable saludo y asignale el texto "Hola Mundo". Finalmente imprimí el valor de la variable
por pantalla usando console.log.
var saludo= "Hola Mundo";
console.log(saludo)

Ejercicio 7:  Más operaciones


¿Y que pasa si quiero sumar textos?  En éste caso el símbolo + nos va a ayudar a concatenar, es decir, juntar nuestras
cadenas de texto.

¡OJO, NO TE OLVIDES DE LOS ESPACIOS!

Probemos:

var nombre = "Messi";


var nacionalidad = "Argentino";
console.log(nombre + " es " + nacionalidad)
// El resultado sería: "Messi es Argentino"

Veamos si se entiende: Declará y asigná dos variables, una con tu nombrey la otra con tu apellido, y luego en la
variable nombreCompletoguardá todo junto. Ej.: “Elon Musk”. PD: No te olvides del espacio!
var nombre= "cristian";

var apellido= "ortiz";

var nombreCompleto= nombre + " " + apellido;

console.log(nombreCompleto)

Ejercicio 8:  Otras operaciones


¿Y que pasa si sumo números con textos?

var calle = "Monroe";


var numero = 860;
console.log(calle + " " + numero)
// El resultado sería: "Monroe 860"

Como habrás visto, si sumo un número y un texto, éste se convierte en parte del string.
Veamos si se entiende, vamos a adelantar el tiempo dos años (agregar 2 a la edad): Declará y asigná tres variables, una con tu nombre,
otra con tu apellido y otra con tu edad. Luego en la variable resultado forma la siguiente oración usando variables: “Pasado el tiempo,
Juana Manso va a tener XX”. Respetá los espacios!

var nombre= "cristian";

var apellido= "ortiz";

var edad= 18;

var edad= edad + 2;

var resultado= “Pasado el tiempo, ” + nombre + “ ” + apellido + " va a tener ” + (edad +2) ;
console.log(resultado);

Ejercicio 9:  Intercambiando valores


Las variables ademas de almacenar información, y como bien dice su
nombre, pueden variar el valor que almacenan. Por ejemplo:

var ganador = "Coria";

ganador = "Del Potro";

console.log(ganador);

// El resultado sería: "Del Potro"

Como habrás notado, llamando a la variable y reasignandole un valor


puedo cambiar su contenido.
Veamos si se entiende: Definí la variable numeroA con un valor de 30, y definí la
variable numeroB con un valor de 45. A continuación, hacé que la
variable numeroA almacene el valor de la variable numeroB y viceversa.
var numeroA = 30;

numeroA= 45;

var numeroB = 45;

numeroB=30;

Ejercicio 10:  Mas tipos de datos


Ya vimos los valores numéricos y las cadenas de texto, pero en JavaScript hay un tipo de dato más:

 Boolean

A los tipo de datos Boolean se los conoce como booleanos, y nos van a permitir representar dos valores lógicos, estos
son:

 true
o Representa el valor de que algo es verdadero

 false

o Representa el valor de que algo es falso

Para generar un Boolean, simplemente le puedo asignar el valor true o false a una variable.

Por ejemplo:

var valorDeVerdad = true;


console.log(valor) // Esto imprimirá por pantalla "true"
Para continuar, definí una variable meGustaElHelado y asignale un valor de verdad. Luego imprimí por pantalla el valor de la variable.

var meGustaElHelado= true;

console.log(meGustaElHelado)

Ejercicio 11:  Más sobre los Booleanos


El verdadero poder de los Boolean es que pueden surgir al hacer comparaciones de distintos valores con algunos
operadores matemáticos.

Por ejemplo sabemos que si le preguntamos a alguien "¿2 es mayor a 1?" la persona nos va a decir "Si, es verdadero,
2 es mayor a 1", lo mismo pasa en JavaScript cuando escribimos lo siguiente:

console.log(2 > 1) // Esto imprimirá por pantalla "true"

Esto quiere decir que "2 > 1" tiene un valor de verdadero. También podríamos haber escrito el mismo código de la
siguiente manera:

var valorDeVerdad = 2 > 1; //Como vimos 2 > 1 retorna un valor de verdad y se


lo asignamos a una variable
console.log(valorDeVerdad) // Esto imprimirá por pantalla "true"

Y si le preguntamos a alguien "¿2 es menor a 1?" la persona nos va a decir "Eso es falso, 2 no es menor a 1", lo mismo
pasa en JavaScript cuando escribimos lo siguiente:

console.log(2 < 1) // Esto imprimirá por pantalla "false"

Para continuar, defini dos variables: unNumeroChico y unNumeroGrande, y asignales valores numéricos diferentes de acuerdo a sus
nombres.
Luego definí la variable esMenor y asignale el resultado de comparar si unNumeroChico es menor que unNumeroGrande; y definí la
variable esMayor, con el resultado de comparar si unNumeroChico es mayor que unNumeroGrande.
.

var unNumeroChico= 5

var unNumeroGrande= 10

var esMenor= unNumeroChico < unNumeroGrande;

console.log(esMenor)

var esMayor= unNumeroChico > unNumeroGrande;

console.log(esMayor)

Das könnte Ihnen auch gefallen