Está en la página 1de 17

Desarrollo de

Aplicaciones con
Manejo de Datos en
la Memoria – JAVA

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


2
J java
Tabla de Contenido

1. Introducción........................................................................................................... 3
2. Estructura de contenido........................................................................................ 4
3. Arreglos ................................................................................................................ 5
4. Tipos de arreglos .................................................................................................. 6
5. Definir un arreglo .................................................................................................. 6
5.1. Definición de Heap memory .............................................................................. 6
5.2. Los arreglos y la Heap memory ........................................................................ 7
6. Métodos nativos que permiten manejar y realizar operaciones con arreglos....... 7
7. Acceso a los datos en un arreglo ......................................................................... 8
8. Programa de ejemplo ........................................................................................... 8
8.1. Desarrollo .......................................................................................................... 9
9. Material de apoyo ............................................................................................... 14
10. Glosario ............................................................................................................ 15
11. Referencias bibliográficas ................................................................................. 16
Créditos................................................................................................................... 17
Creative Commons ................................................................................................. 17

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


3
J java
1. Introducción

Cuando se habla de arreglos en Java, estos


pueden asociarse con una bolsa llena de balones de
futbol marcados: el arreglo es la bolsa y los balones
marcados son los datos contenidos en la misma;
así, un arreglo es un contenedor de información, y
en este caso, un arreglo unidimensional se refiere
a un contenedor de información que almacena
todo en una única línea y capacidad definida.

El uso de los arreglos en la programación permite


una notoria mejora en el manejo y tratamiento
de grandes volúmenes de información haciendo
esta tarea más eficiente y efectiva. Java ofrece al
programador la posibilidad de manejar múltiples
datos de cualquier tipo en gran cantidad y las
herramientas necesarias para este propósito.

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


4
J java
2. Estructura de contenido

Tipos de Arreglos
tipos de
arreglos de clases
Arreglos
se pueden
crear con primitivos
Arreglos
unidimensionales

se almacena

Memoria
m r
e o ia HEAP
HEAP
lugares de Enfermería

HEAP Espacio
viejo

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


5
J java
3. Arreglos a cada elemento del conjunto (a cada variable)
a través del nombre común (nombre del array)
Pablo Sznajdleder en su publicacion del 2013 más un subíndice que especifica la posición
titulada Java a fondo : estudio del lenguaje y relativa del elemento al que se quiere acceder”.
desarrollo de aplicaciones afirma que: (Sznajdleder, 2013, pág. 14)

“Un array es un conjunto de variables del Retomando el ejemplo de la bolsa de balones


mismo tipo, cuyas direcciones de memoria de fútbol, si se quisiera tener acceso al balón 3,
son contiguas. Esto permite definir un nombre bastará con utilizar el nombre que se le asignó a la
para el array (conjunto de variables) y acceder bolsa y la posición en la que se encuentra el balón.

Figura 1. Ejemplo arreglos


Fuente: SENA

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


6
J java
4. Tipos de arreglos conoce como Heap memory (en español, memoria
de montón) ya que es allí donde se almacenan
En Java existen dos tipos de arreglos: arreglos temporalmente todos los datos de un programa que
de tipos de datos nativos o primitivos y arreglos se ejecuta en este lenguaje pues este espacio no
de objetos (también llamados arreglos de clases), es ilimitado, pero sí puede ser ampliado o reducido
para efectos de este Resultado de Aprendizaje, según la necesidad del usuario modificando la
se analizará y realizará un ejercicio con la primera cantidad establecida para la memoria de la Máquina
tipología de datos. Virtual de Java (JVM).

5. Definir un arreglo Todos los objetos y elementos que se crean para


que un programa en Java funcione se almacenan
En Java los arreglos de cualquier tipo son definidos en un área llamada Heap, que a su vez es creada
de la siguiente forma: tipoDeDato[] nombreDelArreglo en la memoria del equipo de cómputo cuando inicia
= new tipoDeDato[numeroEspacios];, por lo que si se la máquina virtual, aunque dicho espacio está
quisiera crear un arreglo de enteros con un largo de delimitado por la cantidad asignada de memoria a la
5 espacios entonces bastará con escribir la variable máquina virtual, la Heap crece de manera dinámica
de la siguiente forma: int[] arreglo = new int[5]; donde a medida que el programa lo solicite. Cuando el
“int[]” indica el tipo de dato, “arreglo” es el nombre espacio que el programa está utilizando se llena,
de la variable y “new int[5];” crea una reserva en la se inicia un proceso de recolección de basura o
Heap memory con espacio para almacenar 5 valores “garbage collection” donde todos aquellos objetos
de tipo entero. en memoria que no se estén usando son eliminados
para que se pueda tener espacio disponible y suplir
5.1. Definición de Heap memory las necesidades del programa.

Cuando se usan arreglos de cualquier tipo, es La memoria Heap se divide en dos partes: la primera
importante conocer acerca de lo que en Java se es la enfermería o “nursery”, un lugar reservado

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


7
J java
para almacenar todos objetos que se crean y en 6. Métodos nativos que permiten manejar y
los cuales se trabaja cuando el programa está realizar operaciones con arreglos
en ejecución y es el espacio más pequeño de la
Heap; al llenarse este espacio, se inicia un proceso Los arreglos, por ser elementos que se consideran
llamado pequeña recolección (young collection primitivos del lenguaje no pueden tener métodos
en inglés) lo cual consiste en eliminar todos los personalizados para ser controlados y hacer
objetos que no se usan y mover al “espacio viejo” operaciones entre ellos, pero Java ofrece una
todos aquellos objetos que se puedan denominar serie de métodos heredados que ayudan a esta
como antiguos. labor. A continuación, se presentan algunos de los
más utilizados y sus generalidades.
El “espacio viejo” (old space en inglés), es un
espacio reservado de mayor tamaño donde se Método length: retorna el tamaño total del arreglo
almacenan los objetos más antiguos del programa; en tipo numérico Integer, este método es común
al igual que la enfermería, cuando se llena, se inicia para todos los tipos de arreglos.
un proceso de recolección de los viejos.
Todos los arreglos tienen diferentes métodos que
5.2. Los arreglos y la Heap memory se heredan de su tipo de dato primitivo, es decir,
si se declara un arreglo de tipo int[], este tendrá
Trabajar con arreglos implica saber que esto entonces los métodos que se pueden heredar
conlleva la responsabilidad del manejo indirecto de la clase Integer como: toByte(), compareTo(),
de la memoria Heap ya que a grandes rasgos equals(), hashCode(), isInfinite(), isNaN(),
un arreglo es un objeto más del programa que toShortValue() y toString(), entre muchos otros que
se ejecuta en Java, lo que puede significar que permiten realizar diferentes operaciones y obtener
manejar mal un arreglo de cualquier tipo, puede diferentes tipos de valores aplicables al programa
terminar en un llenado completo de la memoria y que se realice y la necesidad de programación.
en consecuencia un fallo general del programa.

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


8
J java
7. Acceso a los datos en un arreglo

Para acceder a los datos almacenados en un arreglo basta con hacer un llamado a la variable
por su nombre y la posición del dato deseado, teniendo en cuenta que las posiciones inician en
0 y terminan en un numero menos que el largo del arreglo; es decir si el largo total es de 10, las
posiciones serán de 0 a 9.

Figura 2. Arreglo de 10 posiciones


Fuente: SENA
8. Programa de ejemplo

El presente algoritmo expone al aprendiz el uso como cantidad de aprendices el número cero (0),
de arreglos unidimensionales y su aplicación a un el programa solicitará que se ingresen 10 datos,
problema de solución simple, el código consiste en este caso, estudiantes. Al finalizar se muestra
en un programa que permite al usuario ingresar el un listado en una ventana independiente con los
nombre de un grupo de aprendices y su respectiva estudiantes que aprobaron y luego otra con los
nota final del curso de programación en Java. que no.

El programa debe permitir registrar cualquier Se debe tener en cuenta que en el presente ejemplo
cantidad de aprendices; si en determinado caso sólo se deben usar arreglos nativos o primitivos
el valor ingresado es cero (0), entonces se tendrá unidimensionales, y usar la librería JOptionPane
como valor por defecto o valor estándar la cantidad para el ingreso y salida de datos en pantalla.
igual a 10, esto quiere decir que si se ingresa

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


9
J java
8.1. Desarrollo

La siguiente porción de código muestra la estructura pueda ser automáticamente 10.


del proyecto, en este caso la unidad uno, por ejemplo,
estudiantes y la importación de la librería necesaria //ZONA DE DECLARACION DE VARIABLES
para la el ingreso y salida de datos. String[] nombres = null; //Arreglo que permite almacenar las
cadenas de nombres
Double[] notas = null; //Arreglo que permite almacenar las
package UnidadUno.EjemploEstudiantes;
notas de los estudiantes
/**
String listaAprobados = null; //Cadena con el listado de los
* Importando la librería.
estudiantes que aprobaron
*/
String listaNoAprobados = null; //Cadena con el listado de
import javax.swing.JOptionPane;
los estudiantes que no aprobaron
public class ArreglosUnidimensionales {
int cantidad = 0; //Cantidad de estudiantes que se van a
/**
* El método main es utilizado para iniciar el programa en general. registrar.
*/
public static void main(String[] args) { Luego se inicia la lógica del programa (o lógica
de negocio) solicitando al usuario la cantidad de
Luego, en el método main se inicia declarando aprendices que se ingresarán; observará que en
los objetos y elementos necesarios para el este caso se está usando el método parseInt() de la
funcionamiento, para este caso se inicia declarando clase estática Integer que se encarga de convertir los
un arreglo de tipo String con nombre “nombres”, y datos que se capturaron a través de JOptionPane.
otro con nombre “notas” ambos iniciados en vacío showInputDialog(), con esto se asegura que la cantidad
ya que no se conoce la cantidad de aprendices a tendrá un valor numérico. Se debe tener en cuenta
registrar, dos cadenas que harán las veces de listas que al realizarse la conversión, si se ingresa una letra
de aprobados y no aprobados y un entero cantidad o carácter especial, se lanzará una excepción de tipo
que se inicia en 0 para asegurar que en cualquier NumberFormatException y el programa terminará
momento si ocurriera algún error entonces la cantidad inesperadamente.

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


10
J java
//ZONA DE DECLARACION DE LA LÓGICA DE NEGOCIO caso se usa for por ser uno de los más básicos en
cantidad = Integer.parseInt(JOptionPane.showInputDialog( la estructura de Java.
null, “¿Cuantos estudiantes desea registrar?”,
“Cantidad de estudiantes”, JOptionPane.QUESTION_
MESSAGE)); for (int iteracion = 0; iteracion < cantidad; iteracion++) {

Luego de solicitar la cantidad, se procede a Se asigna la entrada en la posición del arreglo de


verificar la condición en la que se solicita que nombres y posteriormente al arreglo de notas de
si el valor de la variable cantidad es menor a 0 acuerdo con el número de la iteración en la que se
entonces la cantidad se convierte en 10; se puede encuentra el ciclo.
observar que la estructura de control “if” no tiene
una sentencia “else” puesto que en este caso si nombres[iteracion] = JOptionPane.showInputDialog(
null, “Ingrese el nombre del estudiante número
la evaluación es negativa no se toca el valor ya “ + (iteracion + 1),
asignado en la variable. “Ingreso de estudiantes.”, JOptionPane.
INFORMATION_MESSAGE);
if (cantidad < 1) { notas[iteracion] = Double.parseDouble(JOptionPane.
cantidad = 10; showInputDialog(
} null, “¿Nota del estudiante “ + nombres[iteracion]
+ “?”,
“Ingreso de nota para el estudiante.”, JOptionPane.
Una vez se ha verificado la cantidad de aprendices QUESTION_MESSAGE));
que se van a registrar, se procede a crear el arreglo. }
nombres = new String[cantidad];
notas = new Double[cantidad]; Luego se crean las dos cadenas que se mostrarán
Para recorrer el arreglo y poder ir guardando los como listas de los estudiantes que aprobaron y
datos dentro del mismo, se hace necesario el uso los que no, teniendo en cuenta que los criterios
de estructuras de control iterativas como el ciclo para esto son: si nota es mayor a 3.0 entonces el
for, for each, while, do while, entre otros; en este estudiante aprueba, de lo contrario, no aprueba.

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


11
J java
listaAprobados = “”; salto de línea en dicho texto, lo que permite a la
listaNoAprobados = “”; cadena tener apariencia de lista cuando en realidad
es un texto plano. Java cuenta con cientos de
Luego se debe recorrer el arreglo de notas, “caracteres especiales” que permiten dar formato
nuevamente mediante un ciclo “para”, comprobando a textos simples o agregar datos dinámicos en las
la nota que ha tenido cada aprendiz en el curso de cadenas haciendo más rico y fácil el tratamiento
programación, y a medida que se van obteniendo de las mismas.
se verifica el valor y se asigna el nombre del
estudiante a la variable que corresponde a la Al finalizar, se muestra al usuario el resultado de
lista de aprobados o no aprobados según sea el la operación después de haberse terminado la
caso; se debe notar que en este ciclo no se usó la recolección y tratamiento de todos los datos que se
variable cantidad como límite de las iteraciones, obtuvieron a lo largo de la ejecución del programa.
por el contrario se usó notas.lenght que retorna JOptionPane.showMessageDialog(
al ciclo la cantidad de valores que componen el null,
arreglo. “Los estudiantes que aprobaron el curso de
programación fueron:\n” + listaAprobados,
for (int iteracion = 0; iteracion < notas.length; iteracion++)
“Lista de aprobados”,
{
JOptionPane.INFORMATION_MESSAGE);
if (notas[iteracion] < 3.0) {
JOptionPane.showMessageDialog(
listaNoAprobados += nombres[iteracion] + “\n”;
null,
} else {
“Los estudiantes que NO aprobaron el curso de
listaAprobados += nombres[iteracion] + “\n”;
programación fueron:\n” + listaNoAprobados,
}
“Lista de no aprobados”,
}
JOptionPane.ERROR_MESSAGE);
/**
En la porción anterior se puede ver que cada vez * Se ha terminado el programa.
que se ingresa un aprendiz a la lista se finaliza el */
texto con los caracteres “\n”, esto sirve para que }
Java tenga en cuenta dónde se ha de insertar un }

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


12
J java
El resultado, visto gráficamente muestra en la
primera pantalla un cuadro de diálogo que solicita
la cantidad de estudiantes:

Figura 4. Ingreso de aprendices


Fuente: SENA

Cuando se ha ingresado el nombre del aprendiz se


Figura 3. Cantidad de aprendices despliega una pantalla que solicita su nota final en
Fuente: SENA valor numérico.

Una vez se ha ingresado un valor numérico y


se da clic en aceptar, se despliega la siguiente
pantalla que solicita el nombre de un aprendiz,
esto sucederá cada vez que se ingrese el nombre
y la nota hasta completar la cantidad de veces
establecidas.

Figura 5. Ingreso de nota para el aprendiz


Fuente: SENA

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


13
J java
Al finalizar todas las iteraciones, se muestra una Luego de esto, el programa es terminado, todos los
pantalla indicando en una lista los nombres de los datos del mismo borrados y se libera la memoria
estudiantes que aprobaron el curso… Heap que se usó en este programa.

Todos los ejemplos los puede descargar en la


sección de material complementario de la unidad.
Encontrará un archivo comprimido .ZIP con las
clases de Java y los archivos de imagen y sonido
usados.

Figura 6. Lista de aprobados


Fuente: SENA

…y luego una con los nombres de los que no


aprobaron el curso de programación.

Figura 7. Lista de no aprobados


Fuente: SENA

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


14
J java

o
ea poy
ial d los
ter r
9. Ma e
t a
men dquirido
s
p l
com eptos a ado de
t
Pa r a
t e s conc Resul nda a
en te ie
difer l presen e recom tar los
e s l
en d i z aje, s consu :
n e s
Apre prendic umento nales.
a oc sio
los
i e n tes d nidimen
sigu glos u de
re
• Ar ructuras ento. a
E s t a m i i e n t ada
• ce n n or
alma amació s Java.
ogr glo
• Pr tos arre
obje

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


15
J java

10. Glosario
ABCD Arreglo o vector: estructura de datos que coloca
un tipo de datos en celdas continuas.

Dimensión del vector: número de celdas continuas


que tiene el arreglo vector para almacenar datos.

Índice: es el valor que señala la posición dentro


del vector que se accede.

Unidimensional: referente a una sola dirección


de celdas continuas, un solo índice de búsqueda.

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


16
J java

11. Referencias bibliográficas

Oracle. (2015). Oracle Java Documentation. Recuperado el 14 de septiembre de 2017 Arrays


(The Java Tutorials > Learning the Java language > Language basics) https://docs.oracle.
com/javase/tutorial/java/nutsandbolts/arrays.html

Oracle. (s.f.). Understanding Memory Management. Recuperado el 14 de septiembre de 2017http


s://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/garbage_collect.html

Prieto Saez, N., & Casanova Faus, A. (2016). Empezar a programar usando Java (3a. ed.).
Valencia, España: Editorial de la Universidad Politécnica de Valencia. Recuperado el
14 de septiembre de 2017 https://riunet.upv.es/bitstream/handle/10251/70965/IPP-
Llorens%3BG%C3%B3mez%3BGaliano%20-%20EMPEZAR%20A%20PROGRAMAR%20
USANDO%20JAVA.pdf?sequence=2

Sznajdleder, P. A. (2013). Java a fondo: estudio del lenguaje y desarrollo de aplicaciones. Buenos
Aires, Argentina: Alfaomega. Recuperado el 14 de septiembre de 2017 https://es.slideshare.
net/chikoaguilar/java-a-fondo-2da-edicin-pablo-augusto

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje


17
J java Créditos Senior Equipo de Adecuación
Equipo de Adecuación Gráfica Claudia Rocio Varón Buitrago
Centro de Comercio y servicios
SENA Regional Tolima Asesor Pedagógico
Línea de Producción Ricardo Palacio Peña

Guionistas
Director Regional
Genny Carolina Mora Rojas
Félix Ramón Triana Gaitán
Jesús Bernardo Novoa Ortiz

Subdirector de Centro
Diseño y Diagramación
Álvaro Fredy Bermúdez Salazar Diana Katherine Osorio Useche
Ismael Enrique Cocomá Aldana
Coordinadora de Formación Profesional
Gloria Ines Urueña Montes Programadores
Davison Gaitán Escobar
Experto temático Héctor Horacio Morales García
Mauricio Eduardo Campuzano Méndez Oscar Daniel Espitia Marín

Creatives commons
Atribución, no comercial, compartir igual.
Este material puede ser distribuido, copiado y exhibido por terceros
si se muestra en los créditos. No se puede obtener ningún beneficio
comercial y las obras derivadas tienen que estar bajo los mismo
términos de licencia que el trabajo comercial.

FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje

También podría gustarte