En programación es muy frecuente tener que trabajar con listas de datos. Todos los lenguajes de programación incluyen estructuras para manejar grandes listas de datos: los arrays.
Un array se parece a una tabla con datos. Podemos almacenar cualquier tipo de datos en ellos: int, char, boolean, float, etc. Sin embargo, a diferencia de las tablas, pueden tener más de dos dimensiones. De hecho, no existe límite práctico al número de dimensiones posibles.
En la declaración del array debe indicarse el tipo de datos que se van a almacenar en ellos, así como su dimensión, por ejemplo:
char teclas[] = new char[12];
De esta forma creamos un array en el que almacenar 12 datos de tipo char y que llamamos teclas.
Posteriormente debemos indicar qué debe almacenar en cada posición del array, por ejemplo así:
teclas[0] = 'a';
Para acceder a una de las posiciones de un array es necesario designar la posición que se desea leer dentro de los corchetes. Recordemos que los datos en un array se numeran desde 0 (primera posición) hasta n-1 (última posición), donde n es la dimensión del array. De esta forma, el array teclas del que hablamos antes, tendría elementos desde teclas[0] a teclas[11].
EJEMPLO DE USO DE ARRAYS
Creemos un programa capaz de mostrar dos imágenes almacenadas en un array:
1 PImage im[] = new PImage[2]; //declaración de un array de dos imágenes
2 void setup() {
3 size(800,400);
4 im[0] = loadImage("foto.jpg"); //la primera imagen va a la primera posición del array
5 im[1] = loadImage("foto2.jpg");//la segunda imagen va a la segunda posición del array
6 }
7
8 void draw() {
9 image(im[0],0,0); //muestra la primera imagen
10 image(im[1],400,0);
11 }
Para simplificar la asignación de las variables imagen, el truco es almacenar los nombres de todas las imágenes en un array de strings o cadenas de texto:
1 PImage im[] = new PImage[4]; // array para 4 imágenes
2 String imFile[] = {"foto.jpg", "foto2.jpg", "foto3.jpg", "foto4.jpg"}; //Array de nombres de fichero
3
3 void setup() {
4 size(400,95); //ejemplo para 4 imágenes de 100 px de ancho y 95 de alto
5 for (int i=0; i<4; i=i+1){
6 im[i]=loadImage(imFile[i]); Carga la imagen según el valor de 'i'
7 }
8 }
9
9 void draw() {
10 for(int i=0; i<4; i=i+1){
10 image(im[i],100*i,0); //Muestra la imágenes una junto a la otra, en secuencia
12 }
13 }
Como vemos, esta vez declaramos el array imFile sin especificar su dimensión, sino indicando directamente el contenido, de la forma:
tipo_de_dato[] nombre_del_array = {valor1, valor2,...};
TAREA (procedente del libro "Clase de Tecnologías Creativas" de Arduino Verskstad Education)
Práctica 27.-
Paso 1. Crea un programa que cargue 10 imágenes de 70x95 píxeles (que puedes descargarte AQUÍ) una a continuación de la otra, de esta forma:
Paso 2. Modifica el código que has creado en la práctica anterior e incluye dentro del la función draw el siguiente código:
void draw() {
int h=hour(); // Toma la hora del reloj del ordenador y lo almacena en una variable
int h_dec=int(h/10); // Extrae el dígito de mayor peso de la hora (decenas)
int h_uni=h - h_dec*10; // Extrae el dígito de menor peso de la hora (unidades)
image(im[h_dec],0,0); // Muestra el dígito de las decenas
image(im[h_uni],70,0); // Muestra el dígito de las unidades
}
El comando int(data) convierte data a un entero; por ejemplo, int(2.545) devuelve 2.
De esta forma, deben aparecer en pantalla, al ejecutar el programa, únicamente los dígitos que marquen la hora del sistema (por ejemplo, los dígitos '1' y '9' si son las siete y algo de la tarde):
Como ves, has de cambiar el tamaño del lienzo también, para que tenga las dimensiones adecuadas para esas dos imágenes solo.
Paso 3. Intenta ahora añadir los minutos y los segundos a nuestro reloj, utilizando el mismo método que en el paso anterior con las horas, pero ahora con minute() y second(). El resultado debe ser similar a este:
Práctica 28 (Voluntaria).- Crea un temporizador para la cocina, por ejemplo un reloj que cuente hacia atrás con imágenes creadas por ti. Puede ser similar a este: