Sunteți pe pagina 1din 0

ESTRUCTURA DE DATOS (ING.) UNIDAD 1. INTRODUCCION A LAS ESTRUCTURAS DE DATOS DRA.

ROSA MARIA MICHEL NAVA



1

UNIDAD 1.
INTRODUCCION A LAS ESTRUCTURAS DE DATOS


COMPETENCIA ESPECIFICA DE LA UNIDAD. Representar y aplicar los tipos de datos
abstractos por medio de un lenguaje de
programacin.

1.1 TIPOS DE DATOS ABSTRACTOS (TDA)

Tipos de datos

Un tipo de dato es un conjunto de valores y operaciones asociadas a esos valores.

Tipos de datos primitivos

Los tipos de datos ms simples son los tipos de datos primitivos, tambin denominados datos atmicos
porque no se construyen a partir de otros tipos y son entidades nicas no descomponibles en otros.

Los tipos de datos primitivos son: enteros (int), coma flotante (float), carcter (char) y lgico (boolean).

Tipos de datos compuestos

Son el tipo opuesto a los tipos de datos atmicos. Los datos compuestos se pueden romper en subcampos
que tengan significado. En algunas ocasiones los datos compuestos se conocen tambin como datos o tipos
agregados. Los tipos agregados son tipos de datos cuyos valores constan de colecciones de elementos de
datos.

Existen tres tipos agregados bsicos: arrays (arreglos), secuencias y registros.

Tipos abstractos de datos

Un tipo de dato definido por el programador se denomina tipo abstracto de datos (TAD) para diferenciarlo
del tipo fundamental (predefinido) de datos.

Un TAD se compone de estructuras de datos y los procedimientos o funciones que manipulan esas
estructuras de datos.

Los tipos abstractos de datos describen un conjunto de objetos con la misma representacin y
comportamiento.

1.2 MODULARIDAD

La modularidad es la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas
mdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de
las partes restantes.


ESTRUCTURA DE DATOS (ING.) UNIDAD 1. INTRODUCCION A LAS ESTRUCTURAS DE DATOS DRA. ROSA MARIA MICHEL NAVA

2

La modularizacin consiste en dividir un programa en mdulos que se puedan compilar por separado, pero
que tienen conexiones con otros mdulos.

1.3 USO DE TDA

La implementacin de un TAD en Java se realiza de forma natural con una clase. Dentro de la clase va a
residir la representacin de los datos junto a las operaciones (mtodos de la clase). La interfaz del tipo
abstracto queda perfectamente determinada con la etiqueta public, que se aplicar a los mtodos de la clase
que representen operaciones.

La implementacin de un TAD se realiza segn la especificacin realizada del tipo.

1.4 MANEJO DE MEMORIA ESTATICA

Organizacin interna de la memoria

Pila

Segmento de pila o stack.

Montn


Segmento de montculo, montn o heap: Sirve para funciones de
asignacin dinmica de memoria, listas enlazadas y rboles.
Variables
Memoria esttica.
Cdigo del
Programa


En Java el manejo de la memoria puede considerarse desde dos puntos de vista:

El mbito (alcance) de la clase, de mtodo y de bloque.
El uso de las estructuras de datos.

AMBITO (ALCANCE)

El mbito o alcance de una variable determina cules son los mtodos que reconocen ciertas variables. Si
un mtodo reconoce una variable, la variable es visible en ese mtodo. El mbito es la zona de un
programa en el que es visible una variable.

Ambito de la clase

Las variables instancia declaradas en una clase tienen mbito de todos los mtodos de la clase. Pueden ser
referenciadas por cualquier mtodo en la clase completa (pero se declaran fuera de los mtodos); tales
variables se pueden considerar variables globales a la clase. Las variables instancia de una clase se
inicializan por defecto.



ESTRUCTURA DE DATOS (ING.) UNIDAD 1. INTRODUCCION A LAS ESTRUCTURAS DE DATOS DRA. ROSA MARIA MICHEL NAVA

3
A una variable declarada en una clase se le asigna memoria cuando se crea un objeto de la clase; la
memoria asignada permanece a travs de la ejecucin del programa, hasta que el objeto es liberado
automticamente, o bien liberado por terminar la ejecucin del programa.

Acceso a variables de clase fuera de la clase

A las variables de clase tambin se puede acceder fuera del mbito de la clase en que se declara,
dependiendo del modificador con que se declara. Son tres los modificadores establecidos: private,
protected y public.

Las variables private tienen acceso privado, slo se pueden usar en los mtodos de la clase. Las variables
protected tienen acceso restringido, adems de ser visible en la clase tambin lo es en las clases derivadas
de sta y en cualquier clase que est dentro del mismo paquete, o dentro del mismo archivo fuente. Las
variables que no tienen modificador de accesibilidad, tienen visibilidad por defecto en cualquier clase del
archivo o paquete en que se encuentra.

Los miembros de una clase, tanto mtodos como variables declarados public, se pueden acceder desde
cualquier otra clase o clase derivada, ya sea que estn en el mismo paquete o en otro distinto.

Orden de visibilidad de las variables de una clase

1. private, slo accesible dentro de la clase.
2. default (sin modificador), accesible por cualquier clase del paquete.
3. protected, accesible en todo el paquete y en clases derivadas de otros paquetes.
4. public, accesible desde cualquier clase.

Nota: Violar las normas de acceso da un error al compilar el programa.

ESTRUCTURAS DE DATOS

Estructura de datos

Una estructura de datos es una agregacin de tipos de datos compuestos y atmicos en un conjunto con
relaciones bien definidas. Una estructura significa un conjunto de reglas que contienen los datos juntos.

Arreglos

Los arreglos son estructuras de datos que consisten en elementos de informacin del mismo tipo
relacionados entre s. Los arreglos son entidades estticas en cuanto a que su tamao no cambia una vez
que han sido creadas.

Arreglos de una dimensin

Un arreglo es un grupo de posiciones de memoria contiguas, todas las cuales tienen el mismo nombre y el
mismo tipo.



ESTRUCTURA DE DATOS (ING.) UNIDAD 1. INTRODUCCION A LAS ESTRUCTURAS DE DATOS DRA. ROSA MARIA MICHEL NAVA

4
Para hacer referencia a una posicin o elemento en particular del arreglo, se especifica el nombre del
arreglo y el nmero de posicin de ese elemento en el arreglo. El primer elemento de cualquier arreglo es
el elemento nmero cero. A continuacin se muestra el ejemplo de un arreglo de 12 elementos:


6 3 8 10 7 2 22 45 9 1 18 15
c[0] c[1] c[2] c[3] c[4] c[11]


El nmero de posicin se escribe entre corchetes y recibe el nombre de subndice. Un subndice debe ser
un entero o una expresin entera, por ejemplo:

c[4] // hace referencia al quinto elemento del arreglo c

La longitud del arreglo se determina con la siguiente expresin:

c.length

Declaracin y asignacin de almacenamiento a arreglos

Los arreglos ocupan espacio en la memoria. El programador especifica el tipo de los elementos y se usa el
operador new para asignar espacio de almacenamiento al nmero de elementos requerido por cada arreglo,
por ejemplo:

int c[]; // se declara el arreglo
c = new int [12]; // se asigna memoria al arreglo para 12 elementos

Cuando se asigna espacio de almacenamiento a un arreglo, los elementos se inicializan automticamente a
cero en el caso de variables de tipos de datos primitivos numricos, a false en el caso de variables bolean o
a null en el caso de referencias.

Cabe sealar que, a diferencia de C o C++, el nmero de elementos del arreglo nunca se especifica entre
los corchetes que siguen al nombre del arreglo.

Se puede reservar memoria para varios arreglos con una sola declaracin, por ejemplo:

int b[] = new int [100], x[] = new int [27];

Inicializacin de arreglos

Los elementos de un arreglo se pueden inicializar en la declaracin del arreglo continuando la declaracin
con un signo de igual y una lista separada por comas (y encerrada en llaves) de inicializadores. En este
caso el tamao del arreglo queda determinado por el nmero de elementos de la lista de inicializadores.
Por ejemplo:

int n[] = {1, 2, 3, 4, 5}; //se crea un arreglo de cinco elementos



ESTRUCTURA DE DATOS (ING.) UNIDAD 1. INTRODUCCION A LAS ESTRUCTURAS DE DATOS DRA. ROSA MARIA MICHEL NAVA

5
Java cuenta con mecanismos para evitar el acceso a elementos fuera de los lmites del arreglo. Si hay una
referencia no vlida, el compilador genera un error. Adems, si se hace una referencia no vlida a un
elemento de un arreglo en el momento de la ejecucin, Java genera una excepcin. Las excepciones sirven
para indicar que ocurri un error en el programa; permiten al programador recuperarse de un error y
continuar la ejecucin en lugar de terminar anormalmente el programa. Cuando se hace una referencia no
vlida a un arreglo, se genera una excepcin ArrayIndexOutOfBoundsException (ndice de arreglo fuera
de lmites).

Arreglos de mltiples dimensiones

Se usan arreglos con dos subndices para representar tablas de valores, que consisten en informacin
dispuesta en filas y columnas, como se muestra en la siguiente figura:

Columna 0 Columna 1 Columna 2 Columna 3
Fila 0 a[0][0] a[0][1] a[0][2] a[0][3]
Fila 1 a[1][0] a[1][1] a[1][2] a[1][3]
Fila 2 a[2][0] a[2][1] a[2][2] a[2][3]

Para identificar un elemento en particular de la tabla, se deben especificar los dos subndices: el primero
identifica la fila y el segundo identifica la columna del elemento; por ejemplo:

a[i][j] = 0;

Java no maneja directamente arreglos de mltiples subndices, pero s permite especificar arreglos de un
solo subndice cuyos elementos tambin son de un solo subndice, con los que se logra el mismo efecto.

Inicializacin

Los arreglos con mltiples subndices se pueden inicializar con declaraciones similares a las que
inicializan arreglos de un solo subndice, por ejemplo:

int b[][] = {{1,2},{3,4}};

Los valores se agrupan por fila encerrados en llaves. As, 1 y 2 inicializan b[0][0] y b[0][1], y 3 y 4
inicializan b[1][0] y b[1][1].

Los arreglos con mltiples subndices se mantienen como arreglos de arreglos. La declaracin:

int b[][] = {{1,2},{3,4,5}};

crea un arreglo de enteros b en el que la fila 0 contiene dos elementos (1 y 2) y la fila 1 contiene tres
elementos (3,4 y 5).

Manejo de cadenas

Una cadena (string) es una serie de caracteres que se trata como una unidad. Una cadena puede incluir
letras, dgitos y diversos caracteres especiales como +, -, *, /, $ y otros. Una cadena en Java es un objeto de


ESTRUCTURA DE DATOS (ING.) UNIDAD 1. INTRODUCCION A LAS ESTRUCTURAS DE DATOS DRA. ROSA MARIA MICHEL NAVA

6
la clase String. Las literales de cadena o constantes de cadena (tambin llamadas objetos String annimos)
en Java se escriben como una secuencia de caracteres encerrada entre comillas, por ejemplo:

Juana
Industria # 300

Java trata todos los objetos String annimos con el mismo contenido como un solo objeto String annimo
que tiene muchas referencias.

Un String se puede asignar a una referencia String en una declaracin. La declaracin:

String color = azul;

inicializa la referencia String color de modo que se refiera el objeto String annimo azul.

Longitud de una cadena

Se emplea el mtodo length de String para determinar el nmero de caracteres contenidos en la cadena:

s1.length( );

Comparacin de cadenas

Java cuenta con varios mtodos para comparar objetos Strings, adems del operador = =, se tienen:

equals (es igual a)
equalsIgnoreCase (es igual sin tener en cuenta maysculas y minsculas)
compareTo (comparar con)

Ejemplos:

s1.equals( hola )
s1 = = hola
s3.equalsIgnoreCase( s4 );
s1.compareTo( s2 );

Concatenacin de cadenas

El mtodo concat de String concatena dos objetos String y devuelve un nuevo objeto String que contiene
los caracteres de los dos String originales. Si el String que es el argumento no contiene caracteres, se
devuelve el String original. La expresin:

s1.concat( s2 );

aade los caracteres del String s2 al final del String s1. Los String originales, s1 y s2, no se modifican.




ESTRUCTURA DE DATOS (ING.) UNIDAD 1. INTRODUCCION A LAS ESTRUCTURAS DE DATOS DRA. ROSA MARIA MICHEL NAVA

7
Arreglos de cadenas

Las cadenas, al igual que los tipos de datos primitivos y al igual que otros objetos, pueden agruparse para
formar arreglos de cadenas. La declaracin de un arreglo de cadenas se hace de igual forma que cualquier
arreglo, as:

String ar[] = new String[3];
ar [0] = new String(La);
ar [1] = new String(Pasin);
ar [2] = new String(cultivada);


1.5 MANEJO DE MEMORIA DINAMICA

AMBITO (ALCANCE)

Ambito de mtodo

Una variable que tiene mbito de mtodo se puede referenciar desde cualquier parte del mtodo. Las
variables declaradas dentro del cuerpo del mtodo se dice que son locales al mtodo. Las variables locales
no se pueden utilizar fuera del mbito del mtodo en que estn definidas. Tambin los identificadores de
los parmetros formales tienen como mbito el mtodo en su totalidad.

Las variables definidas dentro de un mtodo no son inicializadas por el compilador de Java. Es un error de
compilacin acceder al valor de una variable de un mtodo sin haber sido inicializada.

Ambito de bloque

Un bloque es una agrupacin de sentencias delimitadas por una llave de apertura y otra de cierre ({,});
dentro de un bloque se puede declarar cualquier tipo de variable, el mbito de dicha variable queda
limitado al bloque y puede ser referenciada en cualquier parte del bloque, desde el punto en que est
declarada hasta el final del bloque.

Una variable declarada dentro de un bloque slo puede ser referenciada dentro del bloque, fuera no es
reconocida y el compilador genera un error del tipo identificador no declarado. Para evitar errores que se
generan al definir variables con el mismo nombre, Java no permite que un identificador definido en un
bloque pueda volverse a definir dentro de un bloque anidado.

Variables locales

Las variables definidas en un mtodo o en un bloque son variables locales al mtodo o al bloque. Adems
de tener un mbito restringido, las variables locales son especiales por otra razn: existen en memoria slo
cuando el mtodo est activo (es decir, mientras se ejecutan las sentencias del mtodo). Cuando el mtodo
no se est ejecutando, sus variables locales no ocupan espacio en memoria, ya que no existen. Algunas
reglas que siguen las variables locales son:



ESTRUCTURA DE DATOS (ING.) UNIDAD 1. INTRODUCCION A LAS ESTRUCTURAS DE DATOS DRA. ROSA MARIA MICHEL NAVA

8
En el interior de un mtodo, a menos que explcitamente cambie un valor de una variable, no se puede
cambiar esa variable por ninguna sentencia externa al mtodo.
Los nombres de las variables locales no son nicos. Dos o ms mtodos pueden definir la misma
variable. Cada variable es distinta y pertenece a su mtodo especfico.
Las variables locales de los mtodos no existen en memoria hasta que se ejecute el mtodo. Por esta
razn, mltiples mtodos pueden compartir la misma memoria para sus variables locales (pero no al
mismo tiempo).
Las variables que se declaran dentro de un mtodo se dice que son automticas, significando que se
les asigna espacio de memoria automticamente a la entrada del mtodo y se les libera el espacio tan
pronto se sale de dicho mtodo.

ESTRUCTURAS DE DATOS

La creacin y el mantenimiento de estructuras de datos dinmicas requiere asignacin dinmica de
memoria: la capacidad de un programa para obtener ms espacio de memoria en el momento de la
ejecucin a fin de contener nuevos nodos, y liberar espacio que ya no se necesita. Los programas en Java
no liberan explcitamente la memoria asignada dinmicamente. Ms bien, Java realiza una recoleccin de
basura automtica. El lmite para la asignacin dinmica de memoria puede ser tan grande como la
cantidad de memoria fsica disponible en la computadora o la cantidad de memoria virtual disponible en
un sistema de memoria virtual. Con frecuencia, los lmites son mucho ms pequeos porque la memoria
disponible en la computadora se debe compartir entre muchos usuarios.

El operador new es fundamental para la asignacin dinmica de memoria. Este operador tiene como
argumento el tipo del objeto al que se asignar memoria dinmicamente y devuelve una referencia a un
objeto de ese tipo. Por ejemplo, el enunciado:

Node nodoPorAgregar = new nodo( 10 );

asigna el nmero apropiado de bytes para almacenar un Nodo y almacena una referencia a esta memoria en
nodoPorAgregar. Si no hay memoria disponible, new lanza una excepcin de memoria agotada
(OutOfMemoryException). El 10 es el dato del objeto Nodo.

Java tiene un colector automtico de basura. El manejo de memoria en Java est basado en objetos y
referencias a objetos. No hay apuntadores en Java (apuntadores como en C).

El manejador de memoria de Java lleva un registro de las referencias a un objeto. Cuando un objeto no
tiene referencias entonces se convierte en un candidato para ser considerado basura.

S-ar putea să vă placă și