7. Estructuras de datos
  • Variable-> único valor, con un tipo determinado.
  • Estructura de datos –> multiples valores de casi cualquier tipo, en multiples celdas.

Hay varias:

  • Arrays
  • Objetos
  • Diccionarios

7.1. Arrays (Mas info en el libro en la lección siguiente…)

Un array es una estructura de datos que permite almacenar una lista de datos o valores de forma ordenada.

Para definir un Array, usamos el constructor del mismo:

var almacenador: Array() = new Array();

Podemos inicializarlos de dos formas:

var almacenador: Array() = new Array(5,”1d”,32,12,”a”,”da”);

var almacenador: Array() = [ 5,”1d”,32,12,”a”,”da” ];

Para acceder a los valores del array lo haremos:

nombre_del_array[posicion]

para cambiar el valor de alguno de los elementos:

nombre_del_array[posicion]= nuevo_valor;

7.2. Objetos

Un objeto es una estrucutra de datos que permite almacenar de forma jerárquica y agrupada los distintos elementos.

NOTA: A diferencia de los objetos, instanciados de clases, estos objetos son dinámicos, y los podemos definir sobre la marcha, sin necesidad de instanciarlos (darles un nombre…) de una clase predefinida como los anteriores.

El uso de estos objetos es muy cómodo, pero hay que usarlos cuando sea realmente necesario.

var obj_claseas3:Object = new Object();
obj_claseas3.nombrecurso = “Programación en ActionScript 3”;
obj_claseas3.lugar = “C/ Fundicion, 9. Logroño”;
obj_claseas3.numhoras = “30 horas”;

trace(obj_claseas3.nombrecurso); //Nos mostraria en salida: Programación en ActionScript 3
trace(“es lo mismo si lo llamamos asi: “+obj_claseas3[“nombrecurso”])

NOTA: Los objetos son anidables, por lo que un objeto puede ser propiedad de un objeto, un array o cualquier estructura de datos que no tenga un tipo de datos simple.

Estos objetos se suelen usar como hasmap o tablas de indexación.

Ejercicio 7_2

7.3. Diccionarios (leer primero el texto del libro pág. 106)

Los objetos que acabamos de ver, permiten indexar (ordenar) valores String, pero si las claves fueran de otro tipo (numérico por ejemplo..) en tiempo de ejecución, los pasaría a texto.

Como el ejemplo del libro creo que os puede dar lugar a dudas, os he preparado un sencillo gráfico, que creo que lo ilustra mejor, y hace que lo entendais a la primera … ;-).

dictionary_peq

7.4. Manejo de variables por referencia o por valor…

Para los tipos (String, Boolean, Number, Int, Uint):

var variable:cualquieradelostipos= valor;

——————————————————-
var numero1:int =1;
var numero2:int=2;
var numero3:int=numero1+5;

trace(numero3); // Muestra: 6
trace(numero1);

Para el resto de los tipos, no se hace una copia de valor, singo que se almacena una referencia al mismo.

La mejor forma de entenderlo, es con las carpetas de windows. Si creamos un acceso directo, hace lo mismo cuando hacemos doble clic, pero si modificamos alguno de sus archivos cambia tanto para la carpeta como para su acceso directo.

var nombres:Array = [“Mario”, “Ana”,”Roberto”,”Aroa”];
var nombres1:Array = nombres;

//si cambiamos un valor de nombres

nombres[2]=”Martin”;

trace(nombres);
trace(nombres1);

En el capítulo siguiente veremos todas las posibilidades de trabajar con Arrays. Pero ya que estamos, con lo que acabamos de ver ahora, si en lugar de decirle a nombres1 que es igual, usamos slice():

var nombres:Array = [“Mario”, “Ana”,”Roberto”,”Aroa”];
var nombres1:Array = nombres.slice();

nombres[2]=”Martin”;

trace(nombres); Mario,Ana,Martin,Aroa
trace(nombres1); Mario,Ana,Roberto,Aroa

veremos que el nuevo array ha guardado los valores reales en lugar de referenciarlos…

——————————

Ejercicio repaso