Académique Documents
Professionnel Documents
Culture Documents
Vas a probarlo en el
siguiente desafo!
Google ClassroomFacebookTwitterCorreo electrnico
Realiza una pregunta
En la gua paso a paso pasada, exploramos cmo usar el
selector de color para, fcilmente, encontrar un color. Como no
puedes ver el selector de color en accin en nuestras guas
paso a paso, aqu hay un GIF que muestra cmo se usa:
Preguntas
Sugerencias y agradecimientos
Los mejores Recientes
21 votos
varx=10;
vara=x+5;//suma5,elresultadoes15
varb=x5;//resta5,elresultadoes5
varc=x*2;//multiplicapor2,elresultadoes
20
vard=x/4;//divideentre4,elresultadoes2.5
vare=x%4;//divideentre4®resael
residuo,elresultadoes2
Cuando usas varios operadores matemticos en una sola
expresin, la computadora sigue un "orden de operaciones"
para asegurarse de que calcule el resultado de la misma
manera cada vez. Es el mismo orden de operaciones que
probablemente aprendiste en tus clases de matemticas y
comnmente puede recordarse como "PEMDSR": parntesis,
Animacin hecha en lpiz y papel de un carro que va por la
exponentes, multiplicacin, divisin, suma y resta. Puedes
calle
aprender ms acerca del orden de las operaciones en Khan
Sin embargo, probablemente tomara un rato hacer esa Academy.
animacin, y bueno, no es tan buena. Se mueve bastante y no
Por ejemplo, en el siguiente cdigo, primero se evaluaran las
tiene nada de color.
dos expresiones entre parntesis, luego multiplicara esos
Pero ahora vivimos en el futuro! Podemos hacer una mejor resultados y, por ltimo, le sumara 100 a ese resultado.
animacin de manera programtica en pocos minutos con solo
varx=10;
una docena de lneas de cdigo, como esta:
vara=(x+10)*(x/2)+100;
Al igual que en las expresiones matemticas, solo necesitas
parntesis si quieres que tu expresin sea evaluada de manera
Animacin programada de un carro rojo que va por la calle diferente a como se hara de acuerdo al orden de las
operaciones. De otra manera, puedes omitirlos.
Quieres aprender a programar eso? Sigue adelante!
A continuacin, haremos un ejemplo que usa expresiones ms
Usar expresiones matemticas en JS complicadas con variables y operadores matemticos. Si
quieres, primero juega con algunas de estas expresiones varmiSaludo="Hola";
matemticas, para asegurarte de que entiendas bien cmo las varmiNombre="Winston";
evala la computadora. vardiHola=""+miSaludo+","+miNombre+"!";//
Hola,Winston!
Repaso: texto y cadenas Cuando combinamos cadenas en JS, lo
llamamos concatenar cadenas. Tambin podemos combinar
Google ClassroomFacebookTwitterCorreo electrnico cadenas con valores numricos:
varxPos=10;
Aqu est un repaso de lo que cubrimos en esta leccin sobre varyPos=20;
texto: varetiqueta="Lascoordenadasson"+xPos+","+
Antes de esta leccin, estbamos usando valores numricos yPos;
para la mayora de las cosas: pasarle nmeros a las funciones, En este tutorial tambin vimos que podemos usar diferentes
almacenar nmeros en variables, etc. Como ya viste, tambin comandos para cambiar el tamao y el color del texto cuando
podemos usar valores de texto. En JavaScript, a estos valores desplegamos cadenas al usar el comando text()text()t, e, x, t,
de texto los llamamos cadenas; piensa acerca de ellos como left parenthesis, right parenthesis. Puedes leer ms acerca de
una cadena de letras. esos comandos en la seccin de texto de nuestra
documentacin (haz clic en la pestaa de
Para crear una cadena, rodeamos el texto entre comillas: "documentacin"para acceder a ella).
varaddNumbers=function(num1,num2){ varaddNumbers=function(num1,num2){
varresult=num1+num2; varlocalResult=num1+num2;
returnresult; println("Thelocalresultis:"+localResult);
}; returnlocalResult;
};
varsum=addNumbers(5,2); addNumbers(5,7);
text(sum,200,200);//Displays"7" println(localResult);//ohnoes!
La declaracin return hace dos cosas: le regresa un valor a Cuando ejecutemos ese cdigo, obtendremos un error en la
quien la haya llamado (razn por la cual podemos guardarla ltima lnea: "localResult is not defined". La variable solo est
en la variable sum) e inmediatamente sale de la funcin. Eso definida dentro de la funcin, porque es donde la declaramos
significa que sera tonto tener algo as, porque la ltima lnea con la lnea varlocalResult= y no est definida fuera de
nunca se ejecutara: ella.
varx=5;
Desigualdad
!== estricta myAge!==29
if(x>0){
text('xisapositivenumber!',200,200);
28!==29 | | > | Mayor que | myAge>25
}
28>25 | | >= | Mayor o igual que | myAge>=28
Como x es 5, que es mayor que 0, veramos el mensaje en la
28>=28 | | < | Menor que | myAge<30
pantalla. Si cambiramos x a -1, no veramos el mensaje, ya
que x no sera mayor que 0.
28<30 | | <= | Menor o igual que | myAge<=28 };
28<=28 | Si solo nos preocupa que al menos una condicin sea
verdadera, entonces podemos usar el operador || ("o"):
Es un error muy comn confundir el operador de asignacin (=)
con el operador de igualdad (===), porque los dos usan signos vardegreesOutside=70;
de igual, pero son muy diferentes. El operador de asignacin varnumberOfClouds=50;
en realidad va a cambiar el valor de la variable, mientras que if(degreesOutside<70||numberOfClouds<5){
el operador de igualdad solo leer el valor de la variable y ver text("Pontebloqueadorsolar,aunquenohaga
si es igual a algo. Por ejemplo: calor!",200,200);
}
varx=2+2;//Setsitequalto4 Podemos usar && y || en la misma expresin, si tenemos que
verificar una condicin muy complicada. Solo usa parntesis
if(x===4){//Asksthequestion,"doesthisequal para agrupar expresiones, de manera que el programa no se
4?" confunda acerca del orden para evaluarlas:
text("yep,2+2=4!",200,200);
} varmyAge=28;
A veces queremos combinar varias comparaciones en una if((myAge>=0&&myAge<3)||myAge>90){
misma expresin condicional, y por eso tenemos operadores println('Annoestsentumejormomento.');
lgicos. Estos operadores nos permiten decir cosas como "si X }
y Y son verdaderos" o "si X o Y son verdaderos" en nuestros Ahora regresemos a las declaraciones if. Muchas veces
programas. queremos ejecutar un bloque de cdigo en el caso en el que la
condicin if no sea cierta. En ese caso, agregamos
Si queremos exigir que dos condiciones sean verdaderas, una declaracin else.
podemos usar el operador && ("y"):
varage=28;
vardegreesOutside=70; if(age>16){
varnumberOfClouds=50; println('Yupi,puedesmanejar!');
if(degreesOutside>70&&numberOfClouds<5){ }else{
text("Pontebloqueadorsolar!",200,200); println('Losiento,perodebestener'+(16age)
} +'aosparapodermanejar.');
A menudo usamos eso en nuestros programas para verificar si }
la posicin del ratn de un usuario est dentro de un A veces queremos revisar varias condiciones y hacer
rectngulo (para imitar un botn), en cuyo caso necesitamos diferentes cosas dependiendo de cada una, en cuyo caso
varios operadores &&: podemos usar elseif:
rect(100,50,100,100); varage=20;
if(age>=35){
mousePressed=function(){ println('PuedesvotarYocuparcualquierpuestoen
if(mouseX>100&&mouseX<200&&mouseY>50 elgobierno!');
&&mouseY<150){ }elseif(age>=30){
text("Youpressedit!",80,75); println('PuedesvotarYpostulartepara
} senador!');
}elseif(age>=18){ qu est mal. Tambin puedes pedirle a un amigo o a un
println('Puedesvotar!'); maestro que sea tu pato de goma, que se sienten y te
}else{ escuchen mientras les explicas. Algunas veces incluso pueden
println('Notienesvozenelgobierno!'); pensar en una solucin para ti, pero independientemente de
} eso, te estn haciendo un favor por solo escuchar la
Puedes seguir revisando condiciones tanto como quieras. Solo explicacin.
asegrate de que cada una de tus condiciones sea realmente
alcanzable. Prueba tu cdigo al cambiar las variables hasta Esto es lo ms cercano que tenemos a un pato de goma en la
llegar hasta adentro de cada uno de los bloques de cdigo, de oficina de Khan Academy:
modo que sepas que todo funciona. Foto de un Muchacho Ay Caray de peluche junto a una
Como ojal podrs ver, los condicionales son una parte computadora porttil
importante de programar y nos permiten crear programas Exagera tu salida
mucho ms poderosos y flexibles.
Como ests haciendo programas en ProcessingJS, ests
Ms consejos para depurar tratando con muchos colores de relleno y trazado. Cuando no
veo la slida visual que espero, algunas veces es til usar
Google ClassroomFacebookTwitterCorreo electrnico valores muy grandes o extremos para el relleno y el trazado,
como $\text{strokeWeight(30)}$. Como nuestro
Hay muchas maneras de depurar tus programas! Aqu hay ambiente es en tiempo real e incluye los arrastra-nmeros, es
una lista para que puedas empezar: muy fcil cambiar los nmeros en tu programas para ver qu
efecto tiene el cambio en la salida. Por ejemplo, puede
Depuracin con impresin ayudarte a averiguar a dnde se fue una figura que falta.
Como acabamos de mostrar, puedes insertar $ Captura de pantalla de un programa con strokeWeight()
\text{print()}$s o $\text{println()}$s en tu exagerado
cdigo para ayudarte a averiguar cul cdigo se est llamando
y con qu valores. Ambas de estas funciones escriben valores Es una buena idea sentirse cmodo con todas las opciones
en una consola que aparece sobre el lienzo. Tambin puedes para depurar programas de modo que puedas usar la que
usar $\text{debug()}$ para enviar la salida a la consola de funcione mejor en una situacin particular.
JavaScript de tu navegador, si sabes cmo usar eso.
Repaso: hacer bucles
Captura de pantalla usando la consola de impresin en un
programa Google ClassroomFacebookTwitterCorreo electrnico
varlizzieTheCat={ varaboutWinston={
age:18, hometown:"MountainView,CA",
furColor:"grey", hair:"no"
likes:["catnip","milk"], };
birthday:{"month":7,"day":17,year:1994}
}; text("Winstonisfrom"+aboutWinston.hometown,100,
Observa como cada propiedad guarda un tipo de dato 100);
distinto: age guarda un nmero, furColor guarda una cadena text("Winstonhas"+aboutWinston.hair+"hair",
de caracteres, likes guarda un arreglo y birthday guarda 100,150);
otro objeto. Eso es la cosa genial de los objetos (bueno, una de Tambin podemos usar "notacin de corchetes", que es
las cosas geniales). Pueden guardar otros objetos dentro de parecida a cmo accedemos a los elementos de un arreglo, en
ellos! As que puedes tener objetos muy anidados para donde escribimos el nombre de la variable, luego corchetes
describir datos complejos. con el nombre de la propiedad entre comillas:
Ahora que conoces tanto los arreglos como los objetos, puedes Repaso: diseo orientado a objetos
combinarlos para crear arreglos de objetos, que de hecho son
formas muy tiles de almacenar datos en programas. Por Google ClassroomFacebookTwitterCorreo electrnico
ejemplo, un arreglo de gatos:
2. Qu tecnologa usars?
1. Qu quieres hacer?
En este paso, necesitas considerar con qu tecnologas
Cuando empec a programar, me encontr constantemente
(lenguajes/bibliotecas/ambientes) ests familiarizado o cules
pensando en nuevos programas por hacer y escribindolos en
puedes aprender fcilmente, y cules de ellas son las ms
una lista. Era adicto al poder de la creacin, y haba tanto que
adecuadas para el trabajo. Para muchos de ustedes, esa lista
mi cerebro quera hacer. Si tu eres as, entonces
puede ser de un solo elemento, "1. JS+ProcessingJS", y eso
probablemente ya tienes una idea de lo que quieres hacer, y
hace que tu decisin sea fcil.
tal vez ya tienes tu propia lista.
Nuestro ambiente JS+ProcessingJS funciona muy bien para necesito en mi programa para cambiar entre estados del
hacer animaciones, juegos, visualizaciones y simulaciones. programa.
Solo revisa los programas de la comunidad para ver el amplio
rango de programas que la gente hace aqu. Maquetas esbozadas de un clon de Breakout
Nuestro ambiente no funciona para otras cosas como juegos Ahora puedes usar esas maquetas para ayudarte a hacer una
multi-jugador, aplicaciones mviles o aplicaciones de lista de caractersticas, en donde pienses acerca de cada una
procesamiento de datos. Si sabes otros lenguajes/ambientes de las caractersticas de tu programa, y convertirla en una
(como JS+HTML, Python, SCRATCH, Swift, etc.) y ests lista.
pensando en construir algo que no tiene mucho sentido hacer
Para mi clon de Breakout, esta podra ser mi lista de
con ProcessingJS, entonces considera cul de esas tecnologas
caractersticas, separadas por escena:
sera mas adecuada para tu programa. Si quieres construir
esas cosas pero no sabes otras tecnologas, tal vez quieras Escena del juego
replantearte una nueva idea para tu programa.
Tu puedes aprender una nueva tecnologa para un nuevo Paleta controlada por el usuario
proyecto, pero en especial si ests empezando a programar, Bloques de varios colores
es una buena idea primero volverte muy bueno en tu Movimiento angulado de la pelota
primer lenguaje. Deteccin de choques
Desplegar vida
Si yo decidiera hacer un juego como Breakout, escogera Desplegar puntuacin
JS+ProcessingJS, dado que ya s esa tecnologa y tambin Efectos de sonido
funciona muy bien para juegos en 2D como ese. Escena principal
Botn de jugar
Botn de ayuda
3. Qu caractersticas incluir? Escena de ayuda
Aqu es donde realmente nos metemos a planear de verdad, y Texto
en donde (creo) se pone divertido. Tu objetivo en este paso es Botn para regresar
averiguar qu es lo que ests haciendo en realidad: cmo se Escena de ganar
ver, qu caractersticas incluir, qu
caractersticas no incluir. Encabezado
Animacin de fuegos artificiales
Lo primero que puedes hacer son "maquetas": bocetos que se Escena de perder
parezcan a lo que ests haciendo, pero sin los detalles como
colores o tamaos exactos. Puedes hacer maquetas en papel o Texto
con con programas en lnea: Botn para reiniciar
4. Pero qu caractersticas debe incluir?
Para darte una idea de cmo se ven las maquetas, a
continuacin incluyo maquetas de mi clon de Breakout. Hice Si todos tuviramos un tiempo infinito para hacer todos los
bocetos para cada escena de manera separada y dibuj programas en nuestras cabezas, entonces incluiran todas las
flechas entre ellas para mostrar cmo una escena conduce a caractersticas en nuestra lista. Pero no lo tenemos, as que en
otra. Esas flechas me ayudarn a entender la lgica que este paso tienes que decidir cules caractersticas son las ms
importantes, y cules caractersticas hars solo si tenemos (P3) Botn para regresar
tiempo. Esto tambin te ayudar a averiguar en qu orden (P2) Escena de ganar
implementar las caractersticas, de las ms a las menos
importantes. (P2) Encabezado
(P3) Animacin de fuegos artificiales
Para ayudarte a averiguar la importancia de cada (P2) Escena de perder
caracterstica, hazte estas preguntas:
(P2) Texto
Si compartiera esto con un amigo, cules (P3) Botn para reiniciar
caractersticas me gustara estar seguro que funcionaran? Como un consejo general para aquellos de ustedes haciendo
Cules caractersticas me emocionan ms construir? juegos, aqu estn las caractersticas que recomiendo no
Cules caractersticas son las ms nicas de mi priorizar: mens, niveles mltiples, grficos 3D. Enfcate en lo
programa? que es nico y divertido acerca de tu juego, despus agrega
De cules caractersticas aprender ms al esas cosas adicionales.
implementarlas?
Hay algunas caractersticas que parecen demasiado Tambin puedes convertir tu lista priorizada en versiones del
complicadas para mi nivel actual de habilidades? proyecto, de modo que puedas ver fcilmente lo que necesitas
Despus, revisa tu lista del paso anterior y ordena la lista o implementar en cada versin, y siempre puedes detenerte
agrgale un rango de importancia a cada caracterstica. despus de una versin particular y estar contento con lo que
has hecho.
Para mi lista de caractersticas del clon de Breakout, puse "P1",
"P2" y "P3" junto a las caractersticas, que significan prioridad Aqu est como se veran las versiones para mi clon de
alta (P1), prioridad media (P2) y prioridad baja (P3). Decid Breakout:
priorizar los mecanismos nicos del juego por encima de las
V1
caractersticas generales del juego como las escenas, porque
eso se me hace ms emocionante de este proyecto: Paleta controlada por el usuario
Bloques de varios colores
(P1) Escena del juego
Movimiento angulado de la pelota
(P1) Paleta controlada por el usuario Deteccin de choques
(P1) Bloques de varios colores V2
(P1) Movimiento angulado de la pelota
Desplegar vida
(P1) Deteccin de choques
Desplegar puntuacin
(P2) Desplegar vida
Escena de jugar con botn de jugar
(P2) Desplegar puntuacin
Escena de ganar con encabezado
(P3) Efectos de sonido
V3
(P2) Escena principal
Efectos de sonido
(P2) Botn de jugar
Botn de ayuda
(P3) Botn de ayuda
Fuegos artificiales
(P3) Escena de ayuda
Escena de perder con botn para reiniciar
(P3) Texto
5. Cmo lo vas a implementar? Una vez que ya hayas pensado acerca de la arquitectura de
alto nivel, debe ser ms claro qu puedes empezar a codificar
Ya tienes una idea de qu caractersticas vas a construir primero.
primero en tu programa. Pero si empiezas ahora, estars
viendo un programa completamente en blanco sin nada de Puedes decidir escribir todo tu programa en pseudocdigo
cdigo escrito, y eso puede ser intimidante. Cules variables primero, del cual hablamos ms adelante en esta leccin.
debes escribir primero? Cules funciones? Bsicamente, significara escribir todo el programa en espaol
dentro de un comentario, y despus poco a poco convertir eso
Una manera en la que puedes averiguar eso es pensar acerca en cdigo.
de la "arquitectura de alto nivel" de tu programa (separarlo en
categoras como "objetos", "lgica", "interaccin del usuario",
"datos del usuario" y "escenas") y despus pensar acerca de
cmo puedes implementarlas, como tipos de objeto orientados 6. Cul es tu cronograma?
a objetos, funciones o variables.
Cunto tiempo tienes para hacer este programa? Cuntas
Por ejemplo, aqu est una arquitectura para mi clon de semanas y cunto tiempo cada da? Qu caractersticas vas a
Breakout: escribir cada semana? Tu objetivo en este paso es averiguar
un cronograma para tu proyecto, el cual es particularmente
Objetos importante si tienes una fecha lmite, pero tambin es til para
que puedas empezar a entender cunto tiempo te toma
Brick (.isHit())
escribir un programa.
Paddle (.move())
Ball (.move()) Aqu est un cronograma para mi clon de Breakout,
Escenas suponiendo 2-4 horas de trabajo cada semana:
Inicio Semana 1: diseo y pseudocdigo
Juego Semana 2: visualizaciones preliminares
Fin Semana 3: mecnica del movimiento/choque de la
Lgica pelota
Semana 4: mecnica de la puntuacin
Choque pelota-bloque (function, usar bounding box) Semana 5: escenas (inicio/ganar/perder)
ngulo de la paleta con la pelota (function, invertir Semana 6: pulir, pruebas manuales (revisin de
ngulo) calidad), preparacin para demostracin
Interaccin del usuario Averiguar los cronogramas para proyectos de programacin es
difcil. Algunas cosas que parecen fciles toman mucho ms
Movimiento de la paleta con el teclado (keyPressed)
tiempo del esperado (como algn error extrao con el cual te
Botones para cambiar escenas (mouseClicked) pasas horas depurando), algunas cosas que parecen difciles
Datos del usuario toman menos tiempo del esperado. Como una regla general,
Muertes de la pelota (array) supn que te vas a tardar ms de lo que piensas, y ajusta a
medida que vayas avanzando.
Golpes de la pelota (array)
Ests listo!?