Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
DUDAS
- Random: Cruzar patrones de repeticin Lotera Cmo puede un ordenador elegir un nmero al
azar sin utilizar un patrn de repeticin?
- Ejercicio Cola de Liblula: hacer un programa con genere la cola de una liblula, en
proporcin phi y con un nmero determinado de secciones.
- La idea de una funcin que calcula un valor y lo devuelve se explorar completamente en el
Captulo 7
4 Variables
5 Condicionales
6 bucles
4 Variables
"Todos los libros en el mundo no contienen ms informacin de la que se transmite como
video en una sola gran ciudad americana en un solo ao. No todos los bits tienen el mismo
valor".-Carl Sagan
"Creer ser perfecto es a menudo un signo de una mente delirante. "- Teniente Comandante
Data
En este captulo:
- Variables: Qu son?
- Variables que se obtienen "de forma gratuita" en Processing (AKA, variables "incorporadas").
- Utilizacin de valores aleatorios (random) en variables.
Podra seguir adelante. Pero no lo har. Creo que ya habrs pillado la idea. Y no estoy
completamente seguro de que realmente necesitamos una analoga. Ya que el concepto
en s es bastante simple. Aqu est el trato.
Tcnicamente hablando, una variable es un indicador con un nombre que seala a una
ubicacin en la memoria del ordenador donde se almacenan los datos ("Direccin de
memoria"). Puesto que las computadoras procesan la informacin, de instruccin en
instruccin, solo una instruccin a la vez, una variable permite a un programador guardar
la informacin de un punto del programa y volver a consultarla en un momento posterior.
Para un programador de Processing, esto es increblemente til; Las variables pueden
hacer un seguimiento de la informacin relacionado con las formas: color, tamao,
ubicacin. Las variables son exactamente lo que usted necesita para hacer un cambio de
color en un tringulo del azul al prpura, hacer que un crculo cruce a travs de la pantalla
y que un rectngulo se reduzca hasta desaparecer.
De todas las analogas disponibles, tienden a preferir el mtodo de trozo de papel: el papel
cuadriculado.
Imagine que la memoria de la computadora es una hoja de papel cuadriculado y cada
celda en el papel cuadriculado tiene una direccin. Con pxeles, aprendimos a referirnos a
esas celdas con nmeros organizados en columnas y filas. No sera interesante si
pudiramos poner nombre a esas celdas? Con variables podemos.
Vamos a nombrar una celda "La puntuacin de Billy" y a darle el valor 100 (veremos por
qu lo llamamos as en la siguiente seccin). De forma que cuando queremos utilizar la
puntuacin de Billy en un programa, no tengamos que recordar el valor 100, ya que est
all en la memoria y podemos solicitarlo por su nombre. Vase la figura 4.2.
La puntuacin de Billy.
Considere un juego de Scrabble entre Billy y Jane. Para hacer un seguimiento de la partida,
Jane se saca papel y lpiz y se garabatean dos nombres, cada uno en una columna:
"Puntuacin de Billy" y "Puntuacin de Jane". Mientras dura el juego, se van anotando los
puntos de cada jugador debajo de sus nombres. Si nos imaginamos este juego de Scrabble
programado virtualmente en un ordenador, de repente vemos como emerge el concepto
de una variable, la variable vara. La hoja de papel es la memoria del ordenador y en ese
papel se escribe la informacin. "La puntuacin de Billy" y "La puntuacin de Jane" son
variables, lugares en la memoria donde se almacenan los puntos totales de cada jugador y
que cambian, se actualizan, a medida que avanza el juego. Vea la Figura 4.3.
En nuestro ejemplo del Scrabble, la variable tiene dos elementos: un nombre (por
ejemplo, "Puntuacin de Jane") y un valor (por ejemplo, 101). En Processing, las variables
pueden contener diferentes tipos de valores y se nos requiere definir explcitamente el
tipo de valor antes de poder usar una variable dada.
Variables
Las variables se declaran primero indicando el tipo, seguido del nombre. Los nombres de
la variable deben ser una palabra (sin espacios) y deben comenzar con una letra (pueden
incluir nmeros, pero no pueden comenzar con un nmero). No puede incluir ningn
signo de puntuacin o caracteres especiales, con la excepcin del carcter de guin bajo:
"_".
Primero se especifica el Tipo y despus el Nombre: letras y nmeros, slo pueden empezar
por letras, palabras compuestas se unen con guin bajo, no se permiten otros caracteres
especiales.
TIPOS DE DATOS
Un tipo es la clase de datos almacenados en esa variable. Este podra ser un nmero
entero, un nmero decimal o un carcter. Estos son los tipos de datos que usan ms
comnmente:
Caracteres, como las letras 'a', 'b', 'c', etc., se almacenan en variables de tipo "char"
(character) y se declaran como una letra entre comillas simples, es decir, 'a'. Los
caracteres son tiles para determinar qu letra se ha pulsado en el teclado y para otros
usos que impliquen cadenas de texto (consulte el captulo 17).
En la figura 4.4, tenemos una variable llamada "count" de tipo "int", que significa nmero
entero. Otros tipos de datos posibles se enumeran a continuacin.
No olvides
Las variables deben tener un tipo. Por qu? Esta es la forma en que la computadora
sabe exactamente cunta memoria debe asignar para almacenar los datos de esa
variable.
Double: un nmero decimal con mucho ms decimales (slo necesario para programas
avanzados que requieren precisin matemtica).
Una vez que se declara una variable, podemos asignarle un valor definindolo igual a algo.
En la mayora de los casos, si olvidamos inicializar una variable, Processing le dar un valor
predeterminado, como 0 para enteros, 0.0 para nmeros de coma flotante, etc. Sin
embargo, es bueno adquirir el hbito de inicializar siempre las variables con el fin de
evitar confusiones.
Declarar e inicializar una variable en dos lneas de cdigo.
Evite utilizar palabras que ya se usen en otra parte del lenguaje de Processing. En otras
palabras, no llame a su variable mouseX, ya hay una!
Utilice nombres que signifiquen algo. Esto puede parecer obvio, pero es un punto
importante. Por ejemplo, si va a usar una variable para realizar un seguimiento de la
puntuacin, llmela "puntuacin" y no, por ejemplo, "cat".
Inicie su variable con una letra minscula y una las palabras con maysculas. Las
palabras que comienzan con maysculas se reservan para las classes (Captulo 8). Por
ejemplo: "frogColor" es vlido, "Frogcolor" no lo es. Esto puede
tomarUnTiempoParaAcostunbrarse pero seAcostunbrar.
Puedes ver a donde nos lleva esto? mouseX y mouseY es como llamamos a la posicin
horizontal y vertical del ratn. Son variables! Sin embargo, debido a que estn
incorporados en el entorno de Processing (observe cmo se colorean de rojo cuando se
escriben en cdigo), pueden utilizarse sin ser declaradas. Las variables incorporadas
(variables AKA "System") se tratan ms adelante en la siguiente seccin.
Lo que vamos a hacer ahora es crear nuestras propias variables siguiendo la sintaxis
descrita anteriormente para declararlas e inicializarlas. Las variables las colocaremos en la
parte superior de nuestro cdigo. Puede declarar variables en otras partes del cdigo,
entraremos en esto ms adelante. Por ahora para evitar confusiones, todas las variables
deben estar en la parte superior.
Declare e inicialice dos variables enteras en la parte superior del cdigo. Utilice las variables para
especificar la ubicacin de una elipse.
Hasta ahora, cada lnea individual de cdigo que escribimos llamaba a una funcin: line (), ellipse
(), stroke (), etc. Las variables introducen operaciones de asignacin a la combinacin. Aqu est
como se ve (es lo mismo que cuando inicializamos una variable, solo que la variable no necesita
ser declarada).
Qu es lo que ocurre? Si ejecuta el Ejemplo 4-3 en Processing, notar que el crculo se mueve de
izquierda a derecha. Recuerde, draw () da vueltas (loops) todo el tiempo una y otra vez,
conservando el valor de circleX en la memoria. Vamos a fingir que somos la computadora por un
momento. (Esto puede parecer demasiado simple y obvio, pero es clave para nuestra comprensin
de los principios de la programacin del movimiento).
Repasar cmo funciona el cdigo en cada paso, le llevar a plantearse las preguntas que tendr
que hacerse antes de escribir sus propios sketches. Sea uno con la computadora.
Cmo utilizan esos datos usted y el ordenador para dibujar las formas en la pantalla?
Cmo alteran esos datos usted y la computadora para hacer su sketch sea interactivo y
animado?
Ejercicio 4-3: Cambie el Ejemplo 4-3 para que el crculo crezca de tamao, en vez de
moverse de izquierda a derecha, Qu cambiaras para que el crculo siguiera al ratn a
medida que crece? Cmo se puede variar la velocidad a la que el crculo crece?
Soluciones: 1-Creo la variable circleSize = 0; y luego dentro de la funcin draw pongo circleSize =
circleSize +1; 2- Sustituira circleX y circleX, por mouseX y mouseY.3- Modificando circleSize =
circleSize +1, poniendo un valor >1: 2, 3, 4, etc.
4.4 Muchas variables
Demos un paso ms en el ejemplo y utilicemos variables para todo. Tambin usaremos valores de
coma flotante para asignar valores a las variables con mayor precisin.
-El trazo pasa del blanco al negro y el relleno al contrario de negro al blanco.
Ejercicio 4-4
Paso 1: Escribir el cdigo que dibuja las siguientes capturas de pantalla con los valores codificados.
(Tiene libertad para usar colores en vez de escala de grises.)
Paso 2: Reemplace con variables todos los nmeros codificados.
Paso 3: Escriba operaciones de asignacin en draw () que cambien el valor de las variables.
Por ejemplo, "variable1=Variable1+ 2;". Intente expresiones diferentes y vea que es lo que pasa!
Este esquema es lo que ped aprender para estudiar el color y ahora ya se mucho ms Gracias
Nota: no lo ejecutaba porque para algunos nombres de variable utilice la y el acento y esto no se puede.
Ejemplo crculoTamao da error, he tenido que cambiarlo por ciculoTamano.
Como vimos con mouseX y mouseY, Processing tiene un conjunto de variables de sistema
disponibles libremente. Estas son herramientas de datos necesarias de uso comn y asociadas con
todos los sketches (como Width, el ancho de la ventana, key para teclas pulsadas en el teclado,
etc.). Para poner nombre a sus propias variables, es mejor evitar los nombres de las variables de
sistema, sin embargo, si alguna usa alguna de forma inadvertida, su variable se convertir en la
principal e invalidar a la del Sistema. Aqu hay una lista de las variables de sistema que ms se
utilizan (puede encontrar ms en la Referencia de Processing).
A continuacin se muestra un ejemplo donde se usan algunas de las variables anteriores; Sin
embargo an no estamos listos para utilizarlos todos ya que necesitaremos algunos conceptos ms
avanzados para hacer uso de muchas caractersticas.
FrameCount se utiliza para colorear un rectngulo. El rectngulo siempre estar en el centro de la ventana
si se encuentra en (width / 2, height / 2).
Al mover el ratn el rectngulo vara en anchura y en altura. Y adems cambia de color porque el
relleno est asociado a las variable frameCount/2 , llega un momento
en que desaparece y slo se ve el color de fondo.
Ejercicio 4-5: Utilizando la Anchura y la Altura (width y height, vuelva a crear la siguiente
captura de pantalla. Aqu est la captura: las formas deben cambiar el tamao en relacin
con el tamao de la ventana. (En otras palabras, no importa lo que especifique para size (),
el resultado debera ser idntico.)
Explicacin: En este ejercicio todos los argumentos de las lneas, los cuadrados y el crculo,
estn referidos a los argumentos de size (); anchura (width) y altura (height). Entonces
aunque yo cambie el tamao de la ventana, modificando la anchura y la altura
proporcionalmente, las figuras aparecern proporcionalmente iguales. Parecer que no ha
cambiado nada, slo el tamao proporcional del documento. Sin embargo si los valores de
los argumentos de las figuras fueran nmeros y no variables vinculadas a anchura y altura,
al modificar los valores de size (), las figuras se deformaran.
Las figuras se deforman con la ventana. La ventana de partida era un cuadrado, altura y
anchura iguales, aqu son desiguales formando una ventana rectangular, las figuras del
interior se deforman proporcionalmente.
4.6 Random (al azar): La variedad es la sal de la vida.
Por lo tanto, usted puede haber notado que los ejemplos en este libro hasta el momento son un
poco, digamos, montonos. Un crculo aqu. Una cuadrado all. Un color grisceo. Otro color
grisceo. Hay un mtodo para la locura (o la falta de locura en este caso). Todo se remonta al
principio impulsor de este libro: el desarrollo paso a paso. Es mucho ms fcil aprender los
fundamentos observando las partes individualmente, los programas que hacen una y slo una
cosa. A continuacin, podemos empezar a agregar funcionalidad a la parte superior, paso a paso.
Random () es un tipo especial de funcin, es una funcin que devuelve un valor. Hemos
encontrado esto antes. En el ejercicio 3-7 utilizamos la funcin abs () para calcular el valor
absoluto de un nmero. La idea de una funcin que calcula un valor y lo devuelve se explorar
completamente en el Captulo 7, pero vamos a tomar algn tiempo para introducir la idea ahora y
profundizar un poco en ella.
A diferencia de la mayora de las funciones con las que nos sentimos cmodos (por ejemplo, line (),
ellipse () y rect ()), random () no dibuja ni colorea una forma en la pantalla. En cambio, random ()
responde a una pregunta; Y nos devuelve esa respuesta. Aqu hay un poco de debate. Sintase
libre de discutirlo con su amigo:
Yo: Hola random, qu tal? Cmo te va? Escucha, me preguntaba si... podras darme un
nmero aleatorio entre 1 y 100?
Ahora, cmo se vera esta secuencia un poco ms formal, en nuestro entorno de Processing? El
cdigo debajo de la parte de "yo" est controlado por la variable "w".
La funcin random () requiere dos argumentos y devuelve un nmero de coma flotante aleatorio
que va desde el primer argumento hasta el segundo. El segundo argumento debe ser mayor que
el primero para que funcione correctamente. La funcin random () tambin trabaja con un
argumento asumiendo un rango entre cero y ese argumento.
Adems, random () slo devuelve nmeros de coma flotantes. Por eso hemos declarado "w"
arriba como una float. Sin embargo, si desea un entero aleatorio, puede convertir el resultado de
la funcin aleatoria en un int.
Observe el uso de parntesis anidados. Este es un buen concepto para acostumbrarse ya que ser
muy conveniente llamar a funciones dentro de funciones a medida que avanzamos. La funcin
random () devuelve un flotante, que se pasa a la funcin int () que lo convierte en un entero. Si
quisiramos anidar las funciones de anidacin (nesting functions), podramos incluso condensar el
cdigo anterior en una lnea:
De paso, el proceso de convertir un tipo de datos a otro se conoce como "casting". En Java (en el
que se basa el Processing), la conversin de un coma flotante en un entero tambin se puede
escribir de esta manera:
El resultado de random (1, 100) es un coma flotante. Se puede convertir en un entero por "casting".
OK, ahora estamos listos para experimentar con random (). El ejemplo 4-7 muestra lo que sucede
si tomamos todas las variables asociadas a dibujar la elipse (relleno, ubicacin, tamao) y las
asignamos un nmero aleatorio en cada ciclo., cada vez que pase a travs de draw (). La salida se
muestra en la Figura 4.8.
Ejemplo 4-7: rellenado variables con valores aleatorios.
Cada vez pasa a travs de draw (), se eligen nuevos nmeros aleatorios (random) para cada nueva
elipse.
FlipanteSe puede hacer esto mismo con colores
diametralmente opuestos que empaten en P.
Nueva caracterstica # 2 - Los ojos de Zoog se colorearn al azar a medida que Zoog se
mueve.
Declaracin de variables. ZoogX y zoogY son para la caracterstica #1, eyeR, eyeG, eyeB son para la
caracterstica #2.
Ejercicio 4-6: Revise el Ejemplo 4-8 para que Zoog se mueva (tiemble) a la izquierda y a
la derecha cuando Zoog se mueve hacia arriba. Sugerencia: esto requiere el uso de
random () en combinacin con zoogX.
SOLUCIN
Zoog parece que parpadea o tirita, esto es como las imgenes hologrficas de Star
Wars. Random de +- un valor en X.
--------------------------------------------------
Ejercicio 4-7: Utilizando variables y la funcin random (), revise el diseo de su proyecto Leccin
Uno para que se mueva por la pantalla cambiando el color, el tamao, la ubicacin, etc.