Está en la página 1de 16

Estructura de Datos (Java)

Objetivo: Aprenderá las principales estructuras de datos desde un punto de vista


abstracto y las operaciones que se pueden realizar sobre ellas, aplicando en forma
práctica los conceptos adquiridos mediante resolución de problemas.

I. Tipos de datos.
I.1. Tipos de datos.
I.1.1. Tipos de datos simples.
I.1.1.1. Definición de bit, byte, carácter y palabra.
I.1.1.2. Manipulación de bits.
I.1.1.3. Representación de datos simples.
I.1.2. Tipos de datos Abstractos.

I.2. Estructura de datos.


I.2.1. Definición.
I.2.2. Clasificación.
I.2.2.1. Lineales y no lineales.
I.2.2.2. Dinámicas y estáticas.

II. Estructuras lineales.


II.1. Arreglos.
II.1.1. Definición.
II.1.2. Unidimensionales.
II.1.3. Bidimensionales.
II.1.4. Multidimensionales.
II.1.5. Resolución de problemas con arreglos.
II.1.6. Clases para la implementación de arreglos.

II.2. Pilas.
II.2.1. Definición.
II.2.2. Operaciones.
II.2.3. Clases para la implementación de pilas.

II.3. Colas.
II.3.1. Definición.
II.3.2. Tipos.
II.3.2.1. Colas simples.
II.3.2.2. Colas circulares.
II.3.2.3. Colas dobles.
II.3.3. Operaciones.
II.3.4. Clases para la implementación de colas.
III. Listas enlazadas.
III.1. Listas enlazadas.
III.1.1. Simples.
III.1.2. Dobles.
III.1.3. Circulares.
III.1.4. Multilistas.
III.1.5. Clases para la implementación de listas.

IV. Estructura no lineales


IV.1. Árboles.
IV.1.1. Definición.
IV.1.2. Representación en memoria de árboles.
IV.1.2.1. Árboles generales.
IV.1.2.2. Árboles binarios.
IV.1.3. Recorrido de árboles binarios.
IV.1.3.1. Preorden.
IV.1.3.2. Inorden.
IV.1.3.3. Postorden.
IV.1.4. Balanceo de árboles binarios.
IV.1.5. Clases para la implementación de árboles.

IV.2. Grafos
IV.2.1. Definición.
IV.2.2. Tipos de grafos.
IV.2.3. Representación de grafos en memoria.
IV.2.4. Clases para la implementación de grafos.

Bibliografía:

• Estructura de datos, 2ª. Edición • Harvey M. Deitel/ Paul J.


Cairo Deitel
Mc Graw Hill, 2001 Cómo programar en Java, 5ª.
Edición, 2004
• Estructura de datos en Java Pearson, Prentice Hall
Mark Allen Weiss Mark
Personal Educación

• Estructura de datos, algoritmos y • Luis Joyanes Aguilar /


programación orientada a objetos Ignacio Zahonero Martínez
Heileman Programación en Java 2
Mc Graw Hill, 2001 Algoritmos, Estructuras de
Datos y Programación
• Fundamentos de algoritmia Orientada a Objetos, 2002
Brassard y Bratley Mc Graw Hill
Prentice Hall
• C++ guía de autoenseñanza.
Schildt
Mc Graw Hill, 2001

• C# Manual de referencia
Schildt
Mc Graw Hill, 2003

Fechas de Exámenes

Examen Fecha Unidades


1er
2º.
3er
4º.
Regularización
Extraordinario I
Calificación Final

Otras Observaciones:

• Personificador
• Hora de entrada
• Asistencia a clase
Regularización
• Derecho a examen Extraordinario I
• Revisión equitativa
Java

import Importación de paquetes con clases predefinidas.

public class NombreDeLaClase { // Este nombre debe de coincidir con el


nombre físico del archivo fuente y debe
tener extensión .java

Declaración de variables miembro de la clase

public static tipo main (String[] args) { // También (String args[]) puede
especificarse así.

Declaración de variables locales

Sentencias de la función main()

[return tipo;]

Definición de métodos de la clase

acceso static tipo NombreDelMétodo1 (Lista de Argumentos) {

Declaración de variables del método 1

Sentencias del método 1

[return tipo;]

acceso static tipo NombreDelMétodo2 (Lista de Argumentos) {

Declaración de variables del método 2

Sentencias del método 2

[return tipo;]

1
En Java existen dos formas de definir comentarios, estos son:

Cometarios por Línea: Se utilizan dos barras verticales // y después el


comentario.

Ejemplo:

Comentario por línea:


// Mi primer programa en Java
// Elaborado el 20 de Agosto de 2009
// En la materia de programación

Comentarios por Bloque: Se utiliza una barra vertical y un asterisco,


posteriormente se ponen los comentarios, los cuales
pueden utilizar varias líneas y para terminar el
comentario se emplea un asterisco y una barra
vertical. /* comentario */.

Ejemplo:

Cometario por Bloque:


/*
Mi primer programa en Java
Elaborado el 20 de Agosto de 2005
En la materia de programación
*/

Tipo de datos en Java

Tipo Tamaño en bits Rango de valores

true o false Nota: El No. de bits puede variar


boolean 1
según la plataforma
char 16 ‘\u0000’ hasta ‘\uFFFF' Conjunto Unicode de ISO
-128 a +127
byte 8
-27 a 27 – 1
-32,768 a +32,767
short 16
-215 a 215 – 1
-2,147,483,648 a +2,147,483,647
int 32
-231 a 231 – 1
-9,223,372,036,854,775,808 a
long 64 +9,223,372,036,854,775,807
-263 a 263 – 1

2
Tipo Tamaño en bits Rango de valores

Rango negativo:
-3.4028234663852886E+38 hasta
-1.40129846432481707E-45
float 32
Rango positivo:
1.40129846432481707E-45 hasta
3.4028234663852886E+38
Rango negativo:
-1.797693134862157E308 hasta
-4.94065645841246544E324
double 64
Rango positivo:
4.94065645841246544E324 hasta
1.797693134862157E308

Tokens elementos léxico de los programas

Existen 5 clase de tokens: identificadores, palabras reservadas, literales,


operadores y otros.

Identificadores

Los identificadores pueden representar variables, constantes, métodos, nombres


de archivos, etc.

Diagrama de contexto de los identificadores:

Regla para formar un identificador:

1. Debe comenzar por una letra


2. Después de la 1er. Letra puede contener letras, dígitos o guión de piso
3. No están permitidos los espacios en blanco
4. No deben formar palabras reservadas
5. Java es sensibles a las mayúsculas y minúsculas
6. En Java la longitud de los identificadores no tiene límite.

3
Variables

tipo identificador ;

tipo identificador = Expresión ;

Constantes

En Java puede distinguirse dos tipos de constantes:

o Constantes Literales
o Constantes Declaradas

Constantes Declaradas

Por medio del cualificador final permite dar nombres simbólicos a constantes.

final tipo identificador = Valor ;

Operadores Aritméticos

Operador Significado Ejemplo


+ Suma nEsto + nAquello
- Resta nEsto – nAquello
* Multiplicación nEsto * nAquello
/ División nEsto / nAquello
% Modulo nEsto % nAquello

Nota: El lenguaje Java extiende la definición del operador + para incluir la


concatenación de cadenas.

4
Los operadores + y - tienen versiones unarias que seleccionan el signo del
operando.

Operador Uso Descripción


+ + op Indica que el valor es positivo
- - op Indica que el valor es negativo

Además, existen dos operadores de atajos aritméticos, ++ y --

Sentencia Sentencia no
Símbolo Descripción
abreviada abreviada
Primero se utiliza el valor de la
-- a-- a=a-1 variable a y después se
decrementa en uno
Primero se decrementa en uno el
--a a=a-1 valor de a y después se utiliza la
variable a
Primero se utiliza el valor de la
++ a++ a=a+1 variable a y después se
incrementa en uno
Primero se incrementa en uno el
++a a=a+1 valor de a y después se utiliza la
variable a

Operadores relacionales

Operador Uso Devuelve true si

> op1 > op2 op1 es mayor que op2

>= op1 >= op2 op1 es mayor o igual que op2

< op1 < op2 op1 es menor que op2

<= op1 <= op2 op1 es menor o igual que op2

== op1 == op2 op1 y op2 son iguales

!= op1 != op2 op1 y op2 son distintos

5
Operadores Lógicas

Operador Descripción Corto Circuito


&& And condicional
Si
|| Or condicional
& And lógico
No
| Or lógico
^ Or exclusivo
! Negación

Operadores de Asignación

Java proporciona varios operadores de asignación que permiten realizar


operaciones aritméticas y lógicas.

Sentencia Sentencia no
Símbolo Descripción
abreviada abreviada

El valor de b se asigna a la
= a=b a=b
variable a

El valor de a se multiplica por b y


*= a*=b a=a*b
se asigna a la variable a

El valor de a se divide por b y se


/= a/=b a=a/b
asigna a la variable a
El valor de a se divide por b y el
%= a%=b a=a%b resto (o residuo) se asigna a la
variable a
El valor de a se suma a valor de b
+= a+=b a=a+b
y se asigna a la variable a

El valor de a se le resta el valor


-= a-=b a=a-b
de b y se asigna a la variable a

6
Reglas de prioridad
Prioridad Operadores Asociatividad
1 new (objeto)
2 . [] () Agrupación I-D
3 ++ -- prefijo D-I
4 ++ -- postfijo I-D
5 ~ ! - + Unarios D-I
6 (tipo) Cast D-I
7 * / % I-D
8 +- I-D
9 << >> >>> I-D
10 < <= > >= instanceof I-D
11 == != I-D
12 & I-D
13 ^ I-D
14 | I-D
15 && I-D
16 || I-D
17 ? : condicional D-I
18 = *= /= %= += -= D-I
19 , I-D

Selección
Simple Doble
if (Expresión) Acción; if (Expresión)
acción 1;
o else
acción 2;
if (Expresión)
Acción; if (Expresión) {
acción1;
acción 2;
if (Expresión) {acción1; .
acción2,…,acción n} ; .
acción n;
o }
else {
if (Expresión) { acción1;
acción1; acción 2;
acción 2; .
. .
. acción n;
acción n; }
}

7
Selección múltiple:

switch (selector) {
case constante 1: Acción 1;
break;
case constante 2: Acción 2;
break;

default: Acción n;
}

Ciclos

for

1. for (Inicialización; Condición; Incremento)


sentencia;

2. for (Inicialización; Condición; Incremento) {


sentencia 1;
sentencia 2;

sentencia n;
}

while do while

1. while (condición) 1. do
sentencia; sentencia;
while (condición);
2. while (condición) {
sentencia 1; 2.- do {
sentencia 1; sentencia 1;
… sentencia 2;
sentencia n; …
} sentencia n;
} while (condición);

8
Estructura de un Método

acceso static tipo NombreDelMétodo (Lista de Argumentos) {

Declaración de variables del método

Sentencias del método

[return tipo;]

Donde:

acceso Cada método tiene asociado un tipo que se utiliza para controlar el
acceso al método. Entre estos se encuentran:

public Este método público se puede llamar de cualquier


código que tenga acceso a la clase.

private Este método privado solo puede ser llamada desde otro
método de la clase en que se definió el método privado.

protected Este método protegido se puede llamar desde otros


métodos de la clase en que el método esta definido y
por cualquier otro método de las clases que heredan de
la clase en que está definido el método. También está
disponible en cualquier objeto de las clases
pertenecientes al mismo paquete que la clase en que
está definido el método.

defecto Si no especifica ningún tipo de acceso, se utiliza el


acceso por defecto, esto significa que el método es
accesible a todas las clases contenidas en le mismo
paquete, pero no esta accesible fuera de ese paquete.

static Declara el método como método de la clase y no como método del


objeto (no hereda el método).

Nota: Un método declarado como static solo puede ser llamado por otro método
static y hacer referencia a variables static.

9
Declaración de arreglos unidimensionales

Al igual que con cualquier variable en Java, los arreglos se deben declarar antes
de ser utilizados.
Tipo [ ] identificador ;

Tipo identificador [ ] ;

Declaración de arreglos bidimensionales (matriz)

Tipo [ ] [ ] identificador ;

Tipo identificador [ ] [ ] ;

Arreglos multidimencionales

int cubo [ ][ ][ ] = new int [4][5][3];

y
4

z
x
5

10
Declaración de clases.

[public] class NombreDeLaClase {

Declaración de variables miembro de la clase

[acceso] [static] tipo identificador ;

[acceso] [static] tipo NombreDelMétodo1 (Lista de Argumentos) {

Declaración de variables del método 1

Sentencias del método 1

[return tipo;]

[acceso] [static] tipo NombreDelMétodo2 (Lista de Argumentos) {

Declaración de variables del método 2

Sentencias del método 2

[return tipo;]

Creación de objetos.

Una vez que una clase ha sido definida, un programa puede crear una instancia
de la clase denominado objeto. Un objeto se crea por medio del operador new
aplicado a un constructor de clase.

Formato para definir una referencia de un objeto:

NombreDeClase identificadorObjeto;

Formato para crear un Objeto:

identificadorObjeto = new NombreDeClase(Lista de Argumentos);

11
Constructores

Constructores por defecto

Un constructor que no tiene parámetros se le llama constructor por defecto. Un


constructor por defecto normalmente inicializa las variables con un valor por
defecto

class Punto {
private int x;
private int y;

Punto () { //constructor por defecto


x = 0;
y = 0;
}

Punto (int x, int y) {


this.x = x;
this.y = y;
}

Regla: Java crea automáticamente un constructor por defecto cuando no existe


otro constructor. Tal constructor inicializa las variables tipo int, float,
double, long con cerro, las booleanas con false y las referencias con null.

Precaución: Tenga cuidado con la declaración de una clase que sólo tenga un
constructor con argumentos. En ese caso si se omite un
constructor sin parámetros no será posible utilizar el constructor por
defecto.

class Punto {
private int x;
private int y;

Punto (int x, int y) {


this.x = x;
this.y = y;
}
….
}
….
Punto primerPunto = new Punto(); // no es posible utilizar este
constructor

12
Constructores alternativos

A un constructor con parámetros se le denomina constructor alternativo

class Punto {
private int x;
private int y;

Punto () { // constructor por defecto


x = 0;
y = 0;
}

Punto (int x, int y) { // constructor alternativo


this.x = x;
this.y = y;
}

Constructores sobre cargados

Al igual que la sobrecarga de métodos, se pueden sobrecargar los constructores.


Esta técnica es muy utilizada porque proporciona medios alternativos para
inicializar objetos nuevos de una clase.

public class EquipoSonido {


private int potencia;
private int voltios;
private int numCd;
private String marca;

EquipoSonido() {
marca = “Sin Marca”;
}

EquipoSonido(String m) {
marca = m;
}

EquipoSonido(String m, int p, int v) {


marca = m;
potencia = p;
voltios = v; Otros temas:
} Herencia.
…….. Polimorfismo.
…….. Archivos.

13

También podría gustarte