La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación Gráfica 9. Collecciones en C++.NET. 9.1 Arreglos.

Presentaciones similares


Presentación del tema: "Programación Gráfica 9. Collecciones en C++.NET. 9.1 Arreglos."— Transcripción de la presentación:

1 Programación Gráfica 9. Collecciones en C++.NET

2 9.1 Arreglos

3 Arreglos Colección ordenada de elementos de un mismo tipo. Ordenada significa que cada elemento tiene una ubicación determinada dentro del arreglo y debemos conocerla para accederlo

4 Arreglos 1 Dimensión Declaración – * nombre_variable; Inicialización –nombre_variable = new [ ]; Ejemplo –int* vector; –vector = new int[3];

5 Arreglos 2 Dimensiones Declaración – ** nombre_variable; Inicialización –*nombre_variable = new [ ]; –for(int i= 0; i ; i++) nombre_variable[i] = new [ ];

6 Arreglos 2 Dimensiones Declaración –char** tablero; Inicialización –*tablero = new char[3]; –for(int i= 0; i<3; i++) tablero[i] = new char[3];

7 9.1 Collecciones

8 Colecciones Las colecciones son estructuras de datos que nos permiten almacenar y administrar diversos tipos de datos y objetos. Para esto usamos el namespace System::Collections;

9 Colecciones Las más utilizadas son: –ArrayList –HashTable –Queue –Stack –SortedList

10 Funcionalidades Adherir un nuevo elemento. Determinar si existe un elemento. Acceder a un elemento. Remover un elemento. Limpiar la estructura. Obtener el número de elementos insertados.

11 ArrayList Representa una lista de datos, la cual es dinámica; es decir, puede aumentar o disminuir en su tamaño. Declaración: –ArrayList^ list; Inicialización: –list = gcnew ArrayList();

12 ArrayList

13 Adherir un nuevo elemento. –int Add(System::Object^ value); –void Insert(int index, System::Object^ value); Determinar si existe un elemento. –bool Contains(System::Object^ value); Acceder a un elemento. – [ ];

14 ArrayList Remover un elemento. –void Remove(System::Object^ value); Limpiar la estructura. –void Clear(); Obtener el número de elementos insertados. –int Count;

15 ArrayList – Ejemplo Ej: Insertamos datos te tipo double y queremos acceder a ellos. list->Add(4.5); list->Add(5.4); list->Add(3.2); double dato = list[0]; PROBLEMA! –En collections, todos los datos que manejan las estructuras de datos son de tipo Object^. Se debe hacer alguna conversión.

16 Casting Estático Para realizar un casting entre tipos de datos básicos, utilizamos static_cast. Se utiliza de la siguiente manera: –static_cast ( dato_a_convertir ); double dato = static_cast ( list[0] );

17 Casting Dinámico Para realizar un casting entre objetos, utilizamos dynamic_cast. Se utiliza de la siguiente manera: –dynamic_cast ( objeto_a_convertir ); Sprite^ sp = dynamic_cast ( list[0] );

18 Recorrer elementos Para recorrer elementos de una estructura podemos utilizar for. for(int i=0; i Count; i++) { suma += static_cast ( list[i] ); }

19 Recorrer elementos Usando un enumerador, el cual no es más que una clase especializada que recorre todos los elementos, optimizando recursos. IEnumerator^ e = list->GetEnumerator(); while(e->MoveNext()) { suma += static_cast (e->Current)); }

20 Remover elementos Se desea remover un elemento, al recorrer una estructura. while(e->MoveNext()) { double dato = static_cast (e->Current)); if(dato < 4.0) list->Remove(e->Current); } PROBLEMA !!!

21 Remover elementos Solución –Terminar el for una vez que se cumple una condición. while(e->MoveNext()) { double dato = static_cast (e->Current)); if(dato < 4.0) { list->Remove(e->Current); break; }

22 9.1 Collecciones Genéricas

23 Colecciones Genéricas Son colecciones con la misma funcionalidad que las colecciones no genéricas, con la diferencia que éstas están orientadas a trabajar con datos específicos. Pertenecen al namespace System::Collections::Generics; La clase ArrayList idéntica en gererics es List.

24 List List ^ listaNumeros = gcnew List (); List enemigos = gcnew List (); Para los siguientes ejemplos utilizaremos una lista de balas y una de globos: List ^ listaBalas = gcnew List (); List ^ listaGlobos = gcnew List ();

25 List List ^ listaNumeros = gcnew List (); List enemigos = gcnew List ();

26 List Para los siguientes ejemplos utilizaremos una lista de balas y otra de globos: List listaGlobos = gcnew List (); List listaBalas = gcnew List ();

27 Recorrer listas Para recorrer una lista utilizamos nuevamente la clase IEnumerator. En el ejemplo se muestra cómo se mueven todas los globos de una lista a la vez.

28 Recorrer listas

29 Eliminar elementos Para eliminar elementos, podemos iterar nuevamente y hacer un break una vez se cumpla una condición. En el siguiente ejemplo se muestra cómo se elimina del SceneManager y de la lista de globos una vez éste haya atravesado la pantalla (de arriba abajo).

30 Eliminar elementos

31 Recorrer y eliminar elementos La idea no es recorrer la lista primero para mover globos y luego para eliminar los globos si atravesaron la pantalla, ya que estamos recorriendo 2 veces la lista. Veamos cómo podemos recorrer la lista y eliminar al mismo momento.

32 Recorrer y eliminar elementos Opción 1: Utilizando una lista temporal. Ejemplo: tenemos una lista de balas y una de globos y queremos ver si una bala a impactado un globo. Para esto el globo lo eliminamos normalmente, pero la bala la adherimos a una lista de balas.

33 Recorrer y eliminar elementos

34

35 Opción 2: Inicializando el iterador cada vez que se desee remover un elemento.

36 Colecciones 08/23/colecciones-de-datos-en-cnet-parte- ii-arraylist/http://developmania.wordpress.com/2008/ 08/23/colecciones-de-datos-en-cnet-parte- ii-arraylist/

37


Descargar ppt "Programación Gráfica 9. Collecciones en C++.NET. 9.1 Arreglos."

Presentaciones similares


Anuncios Google