Está en la página 1de 6

Gua didctica

2. Introduccin a la programacin orientada a objetos y las estructuras de datos

2.2. Refuerzo, entrenamiento y profundizacin

2.2.1. (P) Arrays en Java


Objetivos
1. Estudiar y comprender la dinmica elemental de los arrays en Java.
1. Aplicar arrays para almacenar distintos tipos de datos y comprender cmo se realizan
las distintas operaciones sobre ellos.
1. Aplicar algoritmos, organizados en mtodos, para el tratamiento de datos almacenados
en arrays de Java.

Arrays
Estudia:
Cmo almacena Java los arrays?

Busca y explica por qu los arrays son objetos en Java.

Explica cmo se almacena un array en la memoria del sistema.

En java todos los arrays tienen las mismas caractersticas?

Busca y explica la diferencia entre arrays de distintas dimensiones y formas.

Ejercicios
1.

Escribe un programa simple que cree un array (vector) de 10 elementos de nmeros


enteros e inicialice cada elemento con el valor 7 en cada elemento. Los elementos del
vector se pueden mostrar en la pantalla.
utilizar un vector int[] y un bucle for.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

2.

Escribe un programa simple que cree un array (vector) de 20 elementos de nmeros


enteros e inicialice cada elemento con un valor igual al ndice correspondiente del
elemento, multiplicado por 5. Los elementos del vector se pueden mostrar en la pantalla.
utilizar un vector int[] y un bucle for.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

3.

Escribe un mtodo que se llame frecuenciaNum() que recibe un vector de enteros y un


nmero. Devuelve la frecuencia entre los elementos del vector del nmero recibido.

Prueba el mtodo pedido desde main().


Documenta el cdigo fuente con comentarios aclaratorios adicionales.

4.

Escribe un mtodo que se llame vectoresIntIguales() que recibe dos vectores de


enteros. Devuelve true si son iguales.

Dos vectores son iguales si tienen la misma longitud y los valores, elemento a elemento,
son iguales. La segunda condicin se puede comprobar con un bucle.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame comparaVectorChar() que recibe dos vectores de


caracteres. Devuelve 0 si son iguales, 1 si el primero es mayor y -1 si el primero es
menos.

5.

Prueba el mtodo pedido desde main().


El orden alfabtico de vectores de caracteres requiere la comparacin uno a uno de sus
caracteres, comenzando desde el extremo izquierdo. El orden alfabtico corresponde al
orden numrico creciente del cdigo del carcter.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame maximoIntConsecutivos() que recibe un vector de


enteros. Devuelve cuantos valores son consecutivos entre sus elementos. Si devuelve 1
todos los elementos son diferentes.
Por ejemplo: {3, 2, 3, 4 , 2, 2, 4} devolvera 3

6.

Prueba el mtodo pedido desde main().


Recorriendo los datos de izquierda a derecha, empezando por el segundo elemento hay
que comprobar si es secuencia del anterior. Se puede utilizar un contador iniciado en 1
que se incrementa al comprobarse que un elemento es consecutivo del anterior. Cada vez
que se inicia nueva secuencia hay que guardar el valor del contador en una variable
auxiliar con el mximo alcanzado.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame buscaInt() que recibe un vector de enteros y un valor a
buscar dentro del vector. Devuelve el ndice de la primera ocurrencia dentro del vector
proporcionado.

7.

Por ejemplo: {3,2,3,4 ,7,2,4} si se busca 4 devolvera 3


Prueba el mtodo pedido desde main().
Hay que recorrer el vector secuencialmente y si se encuentra hay que terminar sin llegar
al final del recorrido.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame ordenadoInt() que recibe un vector de enteros.


Devuelve true si est ordenado.
Por ejemplo: {3,2,3,4 ,7,2,4} devolvera false

8.

Prueba el mtodo pedido desde main().


Hay que recorrer el vector secuencialmente comprobando por parejas y si se encuentra
un par de elementos desordenados hay que terminar sin llegar al final del recorrido.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame masFrecuenteInt()que recibe un vector de enteros.


Devuelve el valor del elemento ms frecuente, si hay coincidencia devolvera el primero
de ellos.
Por ejemplo: {4,1,1,4,2,3,4,4,1,2,4,9,3} devolvera 4

9.

Prueba el mtodo pedido desde main().


Una forma sera recorrer el vector anidar un bucle que averige la frecuencia del valor de
cada elemento, utilizando un par de variables auxiliares para retener la frecuencia
mxima y el valor asociado.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame buscaSecuenciaInt() que recibe dos vectores de


enteros, el segundo es una secuencia de valores a buscar en el primer vector. Devuelve
el ndice donde empieza la primera ocurrencia de la secuencia buscada.
Por ejemplo: {4, 3, 1, 4, 2, 5 , 8} y { 4, 2, 5} devolvera 3

10

Prueba el mtodo pedido desde main().


Hay que recorrer el vector secuencialmente comprobando coincidencia con el primer
elemento de la secuencia buscada. Despus hay que comprobarla completamente con
otro bucle. Si hay coincidencia completa termina sin llegar al final del recorrido.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe cuatro mtodos que se llamen secuenciaNaturalIntA(),


secuenciaNaturalIntB(), secuenciaNaturalIntC() y secuenciaNaturalIntD() que
reciben respectivamente un valor que representa el lado de una matriz cuadrada de
tamao N que deben generar segn los patrones del grafico adjunto. Devuelven
respectivamente la matriz generada. Para un tamao de 4x4 seran:

11

a)

1
2
3
4

5 9 13
6 10 14
7 11 15
8 12 16

c)

7 11 14 16
4 8 12 15
2 5 9 13
1 3 6 10

b)

1
2
3
4

8 9 16
7 10 15
6 11 14
5 12 13

1 12 11
2 13 16
d)*
3 14 15
4 5 6

10
9
8
7

Prueba los mtodos pedido desde main().


Hay que utilizar dos bucles anidados y manipular los ndices de manera que las
secuencias de ejecucin produzcan los patrones de distribucin indicados. Para el caso
d) se puede aplicar la siguiente estrategia: a partir de la posicin (0,0) hay que bajar N
veces. A continuacin, se pasa a la derecha N-1 veces, luego sube N-1 veces, luego a la
izquierda N-2 veces, luego hacia abajo N-2 veces, etc. Cada vez que se mueve un paso
se produce un nmero de la secuencia natural 1, 2, 3, ..., NxN.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

12

Escribe un mtodo que se llame maxima3()que recibe una matriz rectangular de


tamao (n,m) con datos. Devuelve una una submatriz de tamao (3,3), cuyos valores
sumen el valor mximo dentro de la matriz recibida.
Modifica el ejemplo de tamao mximo que aparece en los apuntes del Manual de Java.
Cap.6
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame indiceAfabetico() que recibe una palabra como texto.
Devuelve un array (vector) de nmeros conteniendo la posicin que le corresponde a
cada letra de la palabra recibida segn el alfabeto espaol.
Prueba el mtodo pedido desde main().

13

Se puede resolver con un vector de char que contenga todos las letras ordenadas del
alfabeto espaol y dos bucles for anidados (uno para las letras de la palabra y otro para
el array del alfabeto). Tambien se pueden utilizar las propiedades de los sistemas de
codificacin ASCII o unicode.
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame ordenado() que recibe un vector de enteros . Devuelve
true o false indicando si los datos estn ordenados o no.

14

Prueba el mtodo pedido desde main().


Consulta los apuntes: Estructuras de datos y metodologa bsicas. Cap. 6
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame buscaNum() que recibe un vector ordenado de enteros y
un valor. Devuelve el ndice de la posicin de ese valor dentro del array recibido
utilizando una bsqueda binaria.

15

Prueba el mtodo pedido desde main().


Consulta los apuntes: Estructuras de datos y metodologa bsicas. Cap. 6
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame burbuja()que recibe un vector de enteros para


ordenarlos por el mtodo de la burbuja . Devuelve 1 si ha ordenado, 0 si ya estaba
ordenado y un valor negativo si no se ha podido ordenar.

16

Prueba el mtodo pedido desde main().


Consulta los apuntes: Estructuras de datos y metodologa bsicas. Cap. 6
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame baraja()que recibe un vector de enteros para


ordenarlos por el mtodo de la baraja . Devuelve 1 si ha ordenado, 0 si ya estaba
ordenado y un valor negativo si no se ha podido ordenar.

17

Prueba el mtodo pedido desde main().


Consulta los apuntes: Estructuras de datos y metodologa bsicas. Cap. 6
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame buscaBinRec() que recibe un vector ordenado de


enteros y un valor. Devuelve el ndice de la posicin de ese valor dentro del array recibido
utilizando una bsqueda binaria recursiva.

18

Prueba el mtodo pedido desde main().


Consulta los apuntes: Estructuras de datos y metodologa bsicas. Cap. 6
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame mergeSoft() que recibe un vector de enteros para
ordenarlos por el mtodo Merge Soft . Devuelve 1 si ha ordenado, 0 si ya estaba
ordenado y un valor negativo si no se ha podido ordenar.

19

Prueba el mtodo pedido desde main().


Consulta los apuntes: Estructuras de datos y metodologa bsicas. Cap. 6
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame quickSort() que recibe un vector de enteros para
ordenarlos por el mtodo QuickSort . Devuelve 1 si ha ordenado, 0 si ya estaba ordenado
y un valor negativo si no se ha podido ordenar.

20

Prueba el mtodo pedido desde main().


Consulta los apuntes: Estructuras de datos y metodologa bsicas. Cap. 6
Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un programa que busque todos los nmeros primos en el rango [1 .. 10000000]

21

Buscar informacin en Internet para "Criba de Eratstenes" .


Documenta el cdigo fuente con comentarios aclaratorios adicionales.

Escribe un mtodo que se llame mayorArea()que recibe una matriz rectangular de


tamao (n,m) con datos. Devuelve la mayor cantidad de celdas contiguas encontradas
con el mismo valor y que comparte al menos un lado. Aqu se muestra un ejemplo en el
que hay un rea formada por 13 elementos con el mismo valor 3:

22

1
3
4
4
4

3
3
3
3
3

2
3
1
1
3

2
2
2
3
3

2
4
3
3
1

4
4
3
1
1

13

Este ejercicio puede ser bastante complicado. Se pueden utilizar algoritmos DFS o BFS
de bsqueda e profundidad y anchura sobre grafos . Se puede buscar informacin y
ejemplos de ellos en Internet
Documenta el cdigo fuente con comentarios aclaratorios adicionales.