Sie sind auf Seite 1von 8

UNLP. Facultad de Informtica.

Algoritmos y Estructuras de Datos


Cursada 2016

Prctica 1

Abstraccin y encapsulamiento
Herencia. Polimorfismo. Tipos Genricos
Nota: Tenga presente que dispone de un Tutorial sobre JDK y Eclipse si lo necesita.
1.

Investigue como es el pasaje de parmetros en java.


a. Existen parmetros al estilo de referencia de Pascal?
b. Si existen, como se usan? Si no existen, como se pueden simular?
c. Que opciones existen para que los mtodos devuelvan valores?

2.

Considere la siguiente especificacin de operaciones de una lista de enteros:

comenzar(): Se prepara para iterar los elementos de


la lista.
proximo(): Devuelve el elemento actual y avanza al
prximo elemento de la lista.
fin(): Determina si lleg o no al final de la
lista.
elemento(int pos): Retorna el elemento de la
posicin indicada
agregarEn(Integer elem, int pos): Agrega el
elemento en la posicin indicada y retorna true si
pudo agregar y false; si no pudo agregar.
agregarInicio(Integer elem): Agrega al inicio de la
lista.
agregarFinal(Integer elem): Agrega al final de la
lista.
eliminar(Integer elem): Elimina elem de la lista y
retorna true si lo pudo hacer y false si no lo
encuentra.
eliminarEn(int pos): Elimina el elemento de la
posicin indicada y retorna true si lo pudo
eliminar y false en caso contrario.
incluye(Integer elem): Retorna true si elem est
contenido en la lista, false en caso contrario.
esVacia():Retorna true si la lista est vaca,
false en caso contrario.
tamanio():Retorna la longitud de la lista.

UNLP. Facultad de Informtica.


Algoritmos y Estructuras de Datos
Cursada 2016

a. Importe en Eclipse el proyecto dado por la Ctedra. Analice la clase ListaDeEnteros y sus
subclases. Podra ponerle comportamiento a algn mtodo de la superclase ListaDeEnteros?
Por qu la clase se define como abstracta? Note que una subclase implementa la lista
usando un arreglo de tamao fijo y la otra usando nodos enlazados.
b. Cul es el motivo por el cual las subclases no compilan? Haga lo necesario para que las dos
subclases compilen.

UNLP. Facultad de Informtica.


Algoritmos y Estructuras de Datos
Cursada 2016
c. Escriba una clase llamada TestListaDeEnterosConArreglos que reciba en su mtodo main
una secuencia de nmeros, los agregue a un objeto de tipo ListaDeEnterosConArreglos y
luego imprima los elementos de dicha lista.
d. Escriba una clase llamada TestListaDeEnterosEnlazada que reciba en su mtodo main
una secuencia de nmeros, los agregue a un objeto de tipo ListaDeEnterosEnlazada y
luego imprima los elementos de dicha lista.
3. Sea la siguiente especificacin de una pila de enteros:

apilar(int elem): Agrega elem a la


desapilar(): Elimina y devuelve el
la pila.
tope(): Devuelve el elemento en el
eliminarlo.
esVacia(): Retorna true si la pila
caso contrario.

pila.
elemento en el tope de
tope de la pila sin
est vaca, false en

a. Implemente en JAVA (pase por mquina) la clase PilaDeEnteros, ubquela en el paquete


tp01.ejercicio2, de acuerdo a la especificacin dada en el diagrama de clases. Utilice
alguna subclase de la clase ListaDeEnteros.
b. Escriba una clase llamada TestPilaDeEnteros para ejecutar el siguiente cdigo:
PilaDeEnteros p1, p2;
int valor2=0;
p1=new PilaDeEnteros();
p1.apilar(1);
p1.apilar(2);
p2=p1;
valor2 = p2.desapilar();
System.out.println(El valor del tope de la pila p1 es:

+ p1.desapilar());

c. Qu valor imprime? Qu conclusin saca?


4. Sea la siguiente especificacin de una cola de enteros:

UNLP. Facultad de Informtica.


Algoritmos y Estructuras de Datos
Cursada 2016

encolar(int elem): Agrega elem a la cola.


desencolar(): Elimina y devuelve el primer elemento de la
cola.
tope(): Devuelve el elemento en el tope de la cola sin
eliminarlo.
esVacia(): Retorna true si la cola est vaca y false en
caso contrario.

a. Implemente en JAVA (pase por mquina) la clase ColaDeEnteros


de acuerdo a la
especificacin dada en el diagrama de clases. Defina esta clase adentro del paquete
tp01.ejercicio3 y use alguna de las subclases de ListaDeEnteros.
5. El algoritmo conocido como Criba de Eratstenes permite la obtencin de todos los nmeros
primos menores que un nmero dado. Y para conseguir esto se procede del modo siguiente:

Haga una lista de todos los naturales desde 1 hasta un nmero n dado:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... n

Marque el 2 como primer primo y tache de ah en adelante todos sus mltiplos:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... n

De los no tachados que siguen a 2, el primero es el siguiente primo. Marque el 3 y tache


todos los mltiplos de ste que no haya tachado en el paso anterior:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... n

Contine de esta manera hasta haber marcado un nmero mayor que la raz cuadrada de n y
entonces marque todos los nmeros mayores que 1 que hasta ese momento hayan
permanecido sin ser tachados:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... n
Los nmeros marcados son todos los primos entre 1 y n.

UNLP. Facultad de Informtica.


Algoritmos y Estructuras de Datos
Cursada 2016
a. Escriba una clase llamada tp01.ejercicio4.CribaDeEratostenes como un mtodo llamado
obtenerPrimos() que tome como parmetro un objeto de tipo ListaDeEnteros que
contenga los primeros 1000 nmeros naturales y retorne la lista de los primos
correspondientes siguiendo el procedimiento antes descrito.
6.

Defina la siguiente jerarqua de clases en JAVA.

a. Sobrescriba en las clases Tablet y SmartPhone el mtodo public boolean equals(Object)


de la clase Object de manera que las implementaciones sirvan para comparar dos instancias
de estos tipos.
b. Sobrescriba tambin en ambas clases el mtodo public String toString() de la clase
Object de manera que imprima los datos de esos objetos de manera legible.
c. Escriba una clase tp01.ejercicio5.TestSobrescritura y pruebe los mtodos sobrescritos
(por ejemplo defina dos objetos de tipo SmartPhone, configrele el mismo nmero y pruebe
el mtodo equals, imprima ambos objetos usando el toString()).

UNLP. Facultad de Informtica.


Algoritmos y Estructuras de Datos
Cursada 2016
7. Analice el siguiente Diagrama de Clases
comenzar(): Se prepara para iterar los elementos de
la lista.
proximo(): Devuelve el elemento actual y avanza al
prximo elemento de la lista.
fin(): Determina si lleg o no al final de la
lista.
elemento(int pos): Retorna el elemento de la
posicin indicada
agregarEn(T elem, int pos): Agrega el elemento en
la posicin indicada y retorna true si pudo agregar
y false; si no pudo agregar.
agregarInicio(T elem): Agrega al inicio de la
lista.
agregarFinal(T elem): Agrega al final de la lista.
eliminar(T elem): Elimina elem de la lista y
retorna true si lo pudo hacer y false si no lo
encuentra.
eliminarEn(int pos): Elimina el elemento de la
posicin indicada y retorna true si lo pudo
eliminar y false en caso contrario.
incluye(T elem): Retorna true si elem est
contenido en la lista, false en caso contrario.
esVacia():Retorna true si la lista est vaca,
false en caso contrario.
tamanio():Retorna la longitud de la lista.
reemplazarEn(int pos, T elem): Reemplazar el valor
de la posicin indicada y retorna true si lo pudo
reemplazar.
agregarTodos(ListaGenerica<T> elems):Agrega todos
los elementos de la lista genrica que recibe como
parmetro y retorna true si todos ellos fueron
agregados.
clonar(): Crea una copia de la lista genrica y la
retorna.
limpiar(): Vaca el contenido de la lista.

UNLP. Facultad de Informtica.


Algoritmos y Estructuras de Datos
Cursada 2016
a) Implemente en JAVA (pase por mquina) una clase abstracta llamada ListaGenerica<T> de
acuerdo a la especificacin dada, ubquela en el paquete tp01.ejercicio6.
b) Escriba
una
clase
llamada
ListaEnlazadaGenerica<T>
como
subclase
de
ListaGenerica<T> dentro del mismo paquete anterior, de manera que implemente todos los
mtodos definidos en la superclase pero haciendo uso de una estructura recursiva.
c) Escriba una clase llamada TestListaEnlazadaGenerica que cree 4 objetos de tipo Mobile
(2 objetos SmartPhone y 2 objetos Tablet) los agregue a un objeto de tipo
ListaEnlazadaGenerica usando los diferentes mtodos de la lista y luego, imprima los
elementos de dicha lista usando el mtodo toString().

8. Sea las siguientes especificaciones de cola y pila genrica:

encolar(T elem): Agrega elem a la cola.


desencolar(): Elimina y devuelve el
primer elemento de la cola.
tope(): Devuelve el elemento en el tope
de la cola sin eliminarlo.
esVacia(): Retorna true si la cola est
vaca, false en caso contrario.

apilar(T elem): Agrega elem a la pila.


desapilar(): Elimina y devuelve el
elemento en el tope de la pila.
tope(): Devuelve el elemento en el tope
de la pila sin eliminarlo.
esVacia(): Retorna true si la pila est
vaca, false en caso contrario.

a. Implemente en JAVA (pase por mquina) las clases ColaGenerica y PilaGenerica de


acuerdo a la especificacin dada en el diagrama de clases. Defina estas clases adentro del
paquete tp01.ejercicio7.

UNLP. Facultad de Informtica.


Algoritmos y Estructuras de Datos
Cursada 2016
9. Considere un string de caracteres S, el cual comprende nicamente los caracteres:
(,),[,],{,}. Decimos que S est balanceado si tiene alguna de las siguientes formas:
S = S es el string de longitud cero.
S = "(T)"
S = "[T]"
S = "{T}"
S = "TU"
Donde ambos T y U son strings balanceados. Por ejemplo, "{( ) [ ( ) ] }" est balanceado, pero
"( [ ) ]" no lo est.
a. Implemente una clase llamada tp01.ejercicio8.TestBalanceo (pase por mquina), cuyo
objetivo es determinar si un String dado est balanceado. El String a verificar es un
parmetro de entrada (no es un dato predefinido).
Nota: En caso de ser necesario implemente las estructuras de datos
que necesite para resolver el ejercicio.

Das könnte Ihnen auch gefallen