Beruflich Dokumente
Kultur Dokumente
¿Nunca programaste antes? Aprendé los fundamentos de la programación a través de videos y ejercicios prácticos.
Contenido
Lección 1: Fundamentos
3. El Tablero
4. El Cabezal
5. Movimientos
6. Movimientos 2
7. Movimientos 3
10. Bolitas
11. Bolitas 2
12. Bolitas 3
20. Portugal
1. ¿Variables?
2. Declaración de variables
Lección 4: Funciones
1. ¿Funciones?
2. Declaración
5. Funciónception
8. Cartelitos
Lección 5: Condicionales
1. ¿Condicionales?
2. ¿Que tal si?
Lección 6: Ciclos
1. ¿Ciclos?
2. La computadora repite por nosotros
11. Sumatoria
Lección 7: Arrays
1. ¿Arrays?
2. Series favoritas
8. Trasladar
10. Contiene
18. Conteos
20. Filtrados
------------------------------------------------------------
nombre parametro
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
10. Bolitas
11. Bolitas 2
12. Bolitas 3
20. Portugal
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 ).
A través de un idioma que tanto ella como las personas podamos entender: los lenguajes de programación.
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
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
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.
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.
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
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á
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)
}
Y además, el orden, a veces, no es tan importante. Avanzá al siguiente ejercicio para entender mejor esto.
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:
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.
2 2
1 1
0 0
0 1 2
Tablero final
0 1 2
2 2
1 1
0 0
0 1 2
¡Perfecto!
2 2
1 1
0 0
0 1 2
program {
Mover(Norte)
Mover(Norte)
Mover(Norte)
¡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)
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.
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)
}
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)
}
2 2
1 1
0 0
0 1 2
program {
Poner(Rojo)
Poner(Rojo)
Poner(Rojo)
Poner(Rojo)
Poner(Negro)
Poner(Negro)
Poner(Negro)
2 2
1 1
0 0
0 1 2
Tablero final
0 1 2
2 2
1 1
0 0
4
0 1 2
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)
1 1 1
0 0
1
0 1
Tablero final
0 1
1 1
0 0
0 1
¿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)
¡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.
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!
1 1
1 1
0 0
1 1
0 1
program {
Sacar(Azul)
Sacar(Negro)
Sacar(Rojo)
Sacar(Verde)
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!
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.
program {
Poner(Rojo)
Mover(Este)
Poner(Negro)
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.
program {
Poner(Rojo)
Mover(Este)
Poner(Negro)
}
Secuencialmente:
Es decir: pone una bolita roja en la posicion inicial, y una bolita negra al este
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
El primer programa
program {
Mover(Este)
Poner(Rojo)
Poner(Negro)
}
secuencialmente:
1. se mueve al este
2. luego pone una bolita roja
program {
Poner(Negro)
Mover(Este)
Poner(Rojo)
}
secuencialmente:
Es decir: pone una bolita negra en la posición inicial y una bolita roja al este de la bolita negra.
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
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
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.
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)
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
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
Aunque como en Gobstones no hay amarillo, nos vamos a tomar el atrevimiento de cambiarlo por negro
(perdón Belgrano, no nos queda otra ).
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.
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)
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 .
4+4
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.
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)
console.log("Hola, mundo!");
Lección 3: Variables y Tipos de datos
1. ¿Variables?
2. Declaración de variables
Contenido
1. ¿Variables?
2. Declaración de variables
¡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.
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.
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.
var meses = 12
var cantidadDeAlumnos = 30
Veamos si se va entendiendo: escribí ahora una función mitad, que tome un número y devuelva su mitad.
function mitad(num1){
return num1 / 2;
}
mitad (6);
Ahora podemos usar las funciones para hacer las cuentas mas fáciles.
function sumar(numero1,numero2){
return numero1 + numero2 ;
}
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".
function dobleDelSiguiente(numero) {
return 2 * numero + 2;
}
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;
π = 3.14;
function perimetro(radio){
}
perimetro(10);
function area(radio){
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:
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
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:
Math.abs(4) //devuelve 4
Math.abs(0) //devuelve 0
Math.abs(-123) //devuelve 123
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.
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!
Contenido
1. ¿Condicionales?
2. ¿Que tal si?
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:
if (numero > 0) {
console.log('El número es positivo');
}
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?
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;
}
}
function hoySeJuega(undia){
if (undia == "domingo") {
} else {
function elMayor(Numero1,Numero2) {
if (Numero1 > Numero2) {
return Numero1 ;
} else {
return Numero2;
}
}
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
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 ;
}
¿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;
}
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:
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:
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';
}
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.
function esNumeroDeLaSuerte(numero) {
return numero == 1 && numero % 2 || numero % 3 && numero == 3 != 15;
}
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;
}
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.
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.
Ejemplo:
filosofoHipster('Músico', 'Argentina', 5) // true
filosofoHipster('Futbolista', 'Brasil', 12) // false
filosofoHipster('Músico', 'Argentina', 1) // false
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:
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:
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
return madreDe;
}
function tienenLaMismaPadre(nombre1 , nombre2) {
return padreDe;
}
function sonMedioHermanos(nombre1 , nombre2) {
return padreDe;
}
sonMediosHermanos(arcadio, aurelianoJose)
sonMediosHermanos(aurelianoSegundo, remedios)
sonMediosHermanos(aurelianoJose, remedios)
¡Dame una pista!
Recordá que en la familia Buendía:
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 !.
5 * 3 + 8 / 4 - 3 = 14
((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.
pagaConTarjeta(true, 6, 320)
pagaConTarjeta(false, 8, 80)
pagaConTarjeta(true, 2, 215)
pagaConTarjeta(true, 1, 32)
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:
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:
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 {
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.
Contenido
1. ¿Ciclos?
2. La computadora repite por nosotros
11. Sumatoria
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:
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")
}
}
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.
Sabiendo esto, escribí una función pasitoAPasito, que imprime 5 veces el contenido de i. Por ejemplo:
pasitoAPasito()
0
1
2
3
4
function pasitoAPasito(){
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:
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");
}
}
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:
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 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
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.
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
var totalmonedas = 0;
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;
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;
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;
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;
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
function sumarMonedasDe25(cantidadDeMonedas){
var totalmonedas = 0;
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;
}
}
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
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
Contenido
1. ¿Arrays?
2. Series favoritas
8. Trasladar
10. Contiene
18. Conteos
20. Filtrados
Ejercicio 1: ¿Arrays?
var arrayGenerico = [
"perros",
"gatos",
true,
23,
24
];
console.log (arrayGenerico [1]);
seriesFavoritasDeAna
seriesFavoritasDeHector
["hola","mundo!"]
["hola","hola"]
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.
personas
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
Consola
Biblioteca
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 = []
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
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);
push: método de arrays que agrega el elemento parametro al final del array
pop: método de arrays que saca el último elemento
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
function contiene(elementos){
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?
medallaSegunPuesto(1)
"oro"
medallaSegunPuesto(2)
"plata"
medallaSegunPuesto(3)
"bronce"
medallaSegunPuesto(4)
"nada"
medallaSegunPuesto(5)
"nada"
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:
Y nos preguntó: "¿Podría usar esta función que me dieron para calcular las ganancias del primer trimestre?"
¡Probala en la consola!
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!
gananciaTotal([2, 3])
gananciaTotal([2, 3, 1, 8, 8, -1])
gananciaTotal([])
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;
}
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;
}
Solución
Consola
¿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?
Ejemplo:
function gananciaTotal(unPeriodo) {
var sumatoria = 0;
for (var i=0; i<unPeriodo.length; i++) {
var mes = unPeriodo[i];
sumatoria = sumatoria + mes;
}
return sumatoria;
}
gananciaTotal([])
gananciaTotal([100])
gananciaTotal([100, 2])
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
function cantidadDeMesesConGanancia(unPeriodo) {
var cantidad = ????;
for (var i = 0; i < unPeriodo.???;i++) {
????
}
return cantidad;
}
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 .
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.
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 .
var meses = 12
var cantidadDeAlumnos = 30
function elMayor(Numero1,Numero2) {
if (Numero1 > Numero2) {
return Numero1 ;
} else {
return Numero2;
}
}
Las variables nos permiten reutilizar el dato asignado en la misma con solo invocar su nombre.
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 numeroB= 7
console.log(resultadoSuma);
console.log(resultadoResta);
console.log(resultadoMultiplicacion);
console.log(resultadoDivision);
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."
Para generar un String, simplemente le puedo asignar el texto a una variable; por ejemplo:
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)
Probemos:
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";
console.log(nombreCompleto)
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 resultado= “Pasado el tiempo, ” + nombre + “ ” + apellido + " va a tener ” + (edad +2) ;
console.log(resultado);
console.log(ganador);
numeroA= 45;
numeroB=30;
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
Por ejemplo:
console.log(meGustaElHelado)
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:
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:
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:
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
console.log(esMenor)
console.log(esMayor)