viernes, 6 de junio de 2008

Arreglos en Java

Arreglos (Arrays)

Los arreglos son colecciones ,de tamaño fijo, de datos que ser organizan en una estrucutra lineal, podemos imaginar a un arreglo como varios contenedores alineados a los cuales se les asigna un entero cuyo conteo comienza de cero.. es decir un arrglo seria algo como loo siguiente..

[ ] [ ] [ ] [ ]
0 1 2 3

cada numero se denomina "Índice del arreglo" y nos proporciona un acceso directo a la posición en al que se encuentra el dato. Un arreglo debe declarar su tamaño en tiempo de compilación por lo que su funcionamiento es en memoria estática. El conteo de índices de un arreglo comienza desde cero, por lo que para acceder el n-esimo elemento debemos usar el índice (n-1). Es un error muy común el intentar acceder al elemento n a través del índice n, y escribir fuera de los limites del arreglo, en muchos lenguajes esto produce un error en tiempo de ejecución y el programa se cae, este es el caso de Java.. en otros como C++ el programa escribe en la locación de memoria continua al (n-1)-esimo elemento. Esto es

[ ] [ ] [ 0 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ]... [ n-2 ] [ n-1 ] [ ] [ ]

Las posiciones en negrita son las posiciones contiguas en memoria, a la izquierda del primer elemento y la derecha del ultimo... c++ escribiría el dato en la primer locación en negrita a la derecha de n-1, mientras que Java nos avisaría que estamos escribiendo fuera con un ArrayOutOfBoundsException ...
Inserción:
La inserción en un arreglo se hace de forma directa, accediendo a través del índice..

Eliminación:
La eliminación resulta muy ineficiente pues debemos mover todos los datos de la estructura hacia la izquierda, de la siguiente manera,

Suponga que quiere eliminar el 3° elemento de un arreglo de dimensión 5 que contiene los siguientes valores {1,2,3,4,5}
la operación se realizaría de la siguiente manera

[1][2][3][4][5] --> [1][2][ ][4][5] ----> [1][2][4][ ][5] ---> [1][2][3][4][5][

Teniendo en cuenta que lo que se busca en la eliminación es sacar el elemento deseado, y que el siguiente ocupe su lugar..


Arreglos Bidimensionales (Matrices)

Un arreglo bidimensional es un arreglo de dos dimensiones, una especie de tabla que almacena datos cada posición esta identificada por un par (i,j) donde i es el numero de de fila y j el numero de columna.. un arreglo bidimensional se vería de la siguiente manera..

1 2 3 4 5
1 [1,1][1,2][1,3][1,4][1,5]
2 [2,1][2,2][2,3][2,4][2,5]
3 [3,1][3,2][3,3][3,4][3,5]
4 [4,1][4,2][4,3][4,4][4,5]

usaremos los arreglos bidimensionales mas adelante como una posible implementación de Grafos.


Bueno no hay mucho mas que decir de los arreglos.. pero sale a la vista la gran limitación de estos.. su imposibilidad de crecer en tiempo de ejecución.. la solución mas simple para una estructura lineal que necesita crecer en tiempo de ejecución es una Lista ligada.. que vernos a continuación.

Ayuda terminada..

Hola, comentarles que ayer termine de ayudar a un amigo español que tenia ujn problema con Java.. tenia que entregar un trabajo final sobre Listas para aprovar la materia.. y solo sabia programar en Pascal... asiq trtamos de sacar algo en claro y ayer lo entrgo.. espero le vaya bine xq sino me mata!.. jaja...