Entrar
¿Nuevo usuario? Inscribirme
DesarrolloClipper · Desarrollo de Software en CA-Clipper
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés añadir enlaces a sitios relacionados de tu grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Array Tridimensional   Lista de mensajes  
Responder | Reenviar Mensaje #1051 de 3606 |
Array Tridimensional

Para el que no está acostumbrado a manejar arrays es un concepto complejo, ya
que no tiene límite de dimensiones, y muchos veces de
compara con vectores como lo visto en la universidad...

Yo para ello, cuando alguien me pregunta le trato de explicar con un concepto
muy sencillo diciendo "No piensen en arrays, No
piensen en Vectores"

"Piensen en un contenedor de objetos"

¿Como es eso?

Es tan simple, que el pensar en cambiar cuesta...

vamos a la explicación:

Imaginemos que tenemos una caja la cual podemos guardar dentro de ella una sola
cosa por ejemplo una lampara. Ahora bien pensemos
que guardamos dentro de esa caja 2 cajas. Y si dentro de cada una de esas 2
cajas guardamos otras 2 cajas más, y así hasta que nos
cansemos... que sería esto? un array, un vector...? Yo por ello lo trato de
pensar como si fuera un "contenedor de objetos". Pero
como hago para expresar esto en clipper ?

Supongamos que tenemos una variable (una caja)

aVar:={} /// estas llaves indican la caja

supongamos que dentro de aVar ponemos 2 cajas más...

aAdd(aVar,{}) ///Agregué 1 elemento (cajita)
aAdd(aVar,{}) ///Agregué 1 elemento (cajita)

esto sería igual que de un solo paso hacer esto

aVar:={{},{}} ///una caja con dos cajitas...

Y si queremos adentro de cada cajita 2 cajitas mas ?

podemos hacer esto:

aVar:={{{{},{}}},{{{},{}}}} ///una caja con dos cajitas... y cada cajita tiene
otras dos cajitas adentro...

¿que despelote no? solo piensen en cajas !!!

ahora si lo hacemos agregando elementos usando AADD...

aVar:={} ///creo la caja
aAdd(aVar,{}) ///agrego una caja dentro de la caja - caja chica 1
aAdd(aVar,{}) ///agrego una caja dentro de la caja - caja chica 2
aAdd(aVar[1],{}) ///agrego una caja dentro de la caja chica 1
aAdd(aVar[1],{}) ///agrego una caja dentro de la caja chica 1
aAdd(aVar[2],{}) ///agrego una caja dentro de la caja chica 2
aAdd(aVar[2],{}) ///agrego una caja dentro de la caja chica 2

///traten de dibujar esto en un papel asi lo entienden mejor !!!

Ahora guardemos algo dentro de la cajita 1 de la cajita 1 que esta en la caja
!!!!

aAdd(aVar[1,1,1],"pelota")
aAdd(aVar[1,1,2],"termo")
aAdd(aVar[1,2,1],"tacho")
aAdd(aVar[1,2,2],"caramelo")

¿Para que complicarnos tanto?

Si esto lo aplicamos a algo complejo nos será muy sencillo.

Podriamos tener en aVar tantas cajas grandes como queramos, y duplicar esa
estructura muy sencillamente por ejemplo así...

aAdd(aVar,aclone(aVar[1]))

Esto la verdad parece chino, pero no lo es... aVar tiene 1 caja, pero podría
tener tantas cajas como queramos (en clipper el limite
es 4096), ahora podemos copiar las dos cajas que tienen 2 cajas en la caja 1, y
agregarle otra gran caja a aVar utilizando aclone.
Aclone es necesario, por que los arrays si se utilizan directamente tendriamos
que copiar 1 elemento por elemento, y asi es
instántaneo... ahora aVar tiene 2 cajas !!!

Yo no se si lo he hecho muy largo, pero lo importante que piensen en
"contenedores de objetos"... y las ubicaciones van de izquierda
a derecha a si de simple pudiendo definir arrays directamente asi...

aVar:={{1,"Cacho"},{1,5,4,9,2},{"Hola",{3,5,2}}}

si colocamos

?aVar[1,1] ///----> Veremos 1
?aVar[1,2] ///----> Veremos "Cacho"
?aVar[2,4] ///----> Veremos 9
?aVar[3,2,2] ///----> Veremos 5

Piensen en esto mirando la linea de datos aVar:={....

parece tan complicado ?

Cuando agarren la mano a esto veran lo sencillo y potente que es...

recuerden que el maximo de elementos de una caja es de 4096, pero dentro de una
caja pueden colocar hasta 4096 mas y asi
sucesivamente... si utilizan harbour esto casi no tiene limite creo que pueden
poner mas de 16 millones de elementos...

tambien hay otras funciones que nos permiten utilizar al maximo los arrays...

ASIZE ... cambia la cantidad de elementos de un array, si ponen de mas agrega
elementos varios NIL, si ponen de menos elimina los
elemntos.
AINS ... inserta nuevos elementos al array en una posicion indicada, eliminando
el ultimo elemento
ADEL ... elimina un elemento del array dejando el ultimo elemento en NIL.
ASORT ... nos permite ordenar un array, inclusive si tiene varias dimensiones o
cajas, usando bloques de codigo, esto es un tema que
da para mucho, pero copiando ejemplos se puede aprender a usarlo y realmente
potencia mucho el uso de arrays.
Array() es un funcion que nos devuelve un array con la cantidad de elementos
que le indiquemos aVar:=array(10)
AFILL ... es una funcion que nos permite llenar de datos un array, por ejemplo
el que creamos anteriormente con ARRAY....
AFILL(aVar,0)... todos los elementos tendran cargado un cero...

Ahora en cada elemento podemos guardar cualquier tipo de dato, número,
caracteres, fechas, logicos y arrays !!!

Espero que esto sirva para desasnar a los que tengan dudas con los arrays,
cualquier pregunta por favor ponganla aqui !!!

DARIO DE NEUQUEN



Dom, 14 de Mar, 2004 9:30 pm

dirigaray
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #1051 de 3606 |
Desplegar mensajes Autor Ordenar por fecha

Que seria un array tridimensional ??, como lo puedo imaginar?? en que caso se aplicaria, (ejemplo practico muy sencillo para que pueda entender un principiante...
pibemaster
Sin conexión Enviar correo
14 de Mar, 2004
3:35 am

Para el que no está acostumbrado a manejar arrays es un concepto complejo, ya que no tiene límite de dimensiones, y muchos veces de compara con vectores como...
Darío Hernán Ir...
dirigaray
Sin conexión Enviar correo
14 de Mar, 2004
9:32 pm
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda