Estructuras de datos en java
()
Información de este libro electrónico
Lee más de Luis Felipe Wanumen Silva
Bases de datos en SQL Server Calificación: 0 de 5 estrellas0 calificaciones
Relacionado con Estructuras de datos en java
Títulos en esta serie (50)
Justicia y paz en la novela de crímenes Calificación: 0 de 5 estrellas0 calificacionesRepública, violencia y género en la novela de crímenes Calificación: 0 de 5 estrellas0 calificacionesBreve historia de la narrativa colombiana: Siglos XVI-XX Calificación: 5 de 5 estrellas5/5La novela de crímenes en América Latina: un espacio de anomia social Calificación: 5 de 5 estrellas5/5Memoria de crímenes: Literatura, medios audiovisuales y testimonios Calificación: 0 de 5 estrellas0 calificacionesEl cielo y otros infiernos Calificación: 0 de 5 estrellas0 calificacionesLa anomia en la novela de crímenes en Colombia Calificación: 0 de 5 estrellas0 calificacionesCapitalismo, crisis y anarquismo en la novela de crímenes del siglo XXI en España Calificación: 0 de 5 estrellas0 calificacionesLas hojas breves: Acerca de Fernando Pessoa Calificación: 0 de 5 estrellas0 calificacionesIngeniería de Costos: Un enfoque basado en la gestión de operaciones de manufactura y logística Calificación: 0 de 5 estrellas0 calificacionesCuando nada concuerda Calificación: 0 de 5 estrellas0 calificacionesAsedios a la palabra: (Para un arte poético) Calificación: 0 de 5 estrellas0 calificacionesMemorias de una cinefilia: (Andrés Caicedo, Carlos Mayolo, Luis Ospina) Calificación: 1 de 5 estrellas1/5Python a su alcance Calificación: 4 de 5 estrellas4/5Modelo de integración de servicios para el sistema de salud en Colombia Calificación: 0 de 5 estrellas0 calificacionesCargadores de baterías de mediana y baja capacidad para vehículos eléctricos: Consideraciones preliminares de diseño Calificación: 0 de 5 estrellas0 calificacionesMicrorredes eléctricas Calificación: 0 de 5 estrellas0 calificacionesElementos de estadística para ingeniería: Un curso básico Calificación: 0 de 5 estrellas0 calificacionesIntroducción a la ciencia de datos en R: Un enfoque práctico Calificación: 0 de 5 estrellas0 calificacionesEstática aplicada en ingeniería civil: Introducción al análisis de cerchas, marcos y vigas Calificación: 0 de 5 estrellas0 calificacionesIntroducción Al Psoc5Lp: Teoría y aplicaciones práctica Calificación: 0 de 5 estrellas0 calificacionesEstructuras de datos en java Calificación: 0 de 5 estrellas0 calificacionesEl Nuevo Reto: Los Datos Abiertos En Colombia Calificación: 0 de 5 estrellas0 calificacionesHerramientas de modelación de ingeniería de rránsito Calificación: 0 de 5 estrellas0 calificacionesGuía para el análisis y solución de problemas de resistencia de materiales Calificación: 0 de 5 estrellas0 calificacionesGeometría euclidiana Calificación: 0 de 5 estrellas0 calificacionesIncidencia de la lógica del cambio en la viabilidad organizacional: Conceptos de transmisión y distribución. Modelación de líneas y redes Calificación: 0 de 5 estrellas0 calificacionesAplicaciones Web con HTML, JavaScript y Php Calificación: 0 de 5 estrellas0 calificacionesMetodologías ágiles para el desarrollo de software Calificación: 0 de 5 estrellas0 calificacionesManual de civil 3D aplicado a proyectos viales Calificación: 0 de 5 estrellas0 calificaciones
Libros electrónicos relacionados
Programación en Objetive-C con Xcode y GCC Calificación: 0 de 5 estrellas0 calificacionesBackbone JS Calificación: 0 de 5 estrellas0 calificacionesDatos Informáticos Calificación: 0 de 5 estrellas0 calificacionesAprende a Desarrollar con Spring Framework Calificación: 3 de 5 estrellas3/5Estructuras de Datos en C/C++ Calificación: 0 de 5 estrellas0 calificacionesJavaScript Una Guía de Aprendizaje para el Lenguaje de Programación JavaScript Calificación: 3 de 5 estrellas3/5Estructuras de datos y algoritmos fundamentales Calificación: 0 de 5 estrellas0 calificacionesIniciar con Lazarus y Free Pascal Calificación: 5 de 5 estrellas5/5Estructuras de datos orientadas a objetos Calificación: 0 de 5 estrellas0 calificacionesCurso de Programación y Análisis de Software - 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesSQL para Principiantes Calificación: 4 de 5 estrellas4/5Estructuras de Datos Básicas: Programación orientada a objetos con Java Calificación: 5 de 5 estrellas5/5Backbone JS. JavaScript Framework. 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesAprende a Programar en C Calificación: 1 de 5 estrellas1/5El camino a las redes neuronales artificiales Calificación: 0 de 5 estrellas0 calificacionesProgramación en Pascal: Desde simples programas Pascal hasta aplicaciones de escritorio actuales con Base de Datos DEV-PASCAL, LAZARUS Y PASCAL N-IDE Calificación: 0 de 5 estrellas0 calificacionesFundamentos de Programación y Bases de Datos Calificación: 0 de 5 estrellas0 calificacionesCurso de Programación y Análisis de Software - Tercera Edición Calificación: 0 de 5 estrellas0 calificacionesDesarrollo Web en Java Calificación: 3 de 5 estrellas3/5Programación en C++ Calificación: 2 de 5 estrellas2/5Programación y Lógica Proposicional Calificación: 4 de 5 estrellas4/5Análisis y diseño de algoritmos: Un enfoque práctico Calificación: 0 de 5 estrellas0 calificacionesProgramación Orientada a Objetos en JAVA Calificación: 0 de 5 estrellas0 calificacionesCurso de Programación con Java Calificación: 4 de 5 estrellas4/5Fundamentos de Programación y Bases de Datos: 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesMetodología de la programación Calificación: 0 de 5 estrellas0 calificacionesAprendizaje automático y profundo en python: Una mirada hacia la inteligencia artificial Calificación: 0 de 5 estrellas0 calificacionesFundamentos de bases de datos: Notas de referencia Calificación: 0 de 5 estrellas0 calificacionesLa Guía Básica de Javascript Calificación: 5 de 5 estrellas5/5Aprender jQuery con 100 ejercicios prácticos Calificación: 0 de 5 estrellas0 calificaciones
Programación para usted
HTML para novatos Calificación: 5 de 5 estrellas5/5Python Paso a paso: PROGRAMACIÓN INFORMÁTICA/DESARROLLO DE SOFTWARE Calificación: 4 de 5 estrellas4/5Aprende a programar: Crea tu propio sitio web Calificación: 4 de 5 estrellas4/5GuíaBurros Microsoft Excel: Todo lo que necesitas saber sobre esta potente hoja de cálculo Calificación: 4 de 5 estrellas4/5Aprende a programar en C# Calificación: 5 de 5 estrellas5/5Python para principiantes Calificación: 5 de 5 estrellas5/5Lógica de programación: Solucionario en pseudocódigo – Ejercicios resueltos Calificación: 4 de 5 estrellas4/5VBA Excel Guía Esencial Calificación: 5 de 5 estrellas5/5Python Aplicaciones prácticas Calificación: 4 de 5 estrellas4/5El gran libro de Python Calificación: 5 de 5 estrellas5/5Arduino. Edición 2018 Curso práctico Calificación: 4 de 5 estrellas4/5Python a fondo Calificación: 5 de 5 estrellas5/5Aplicaciones web con Php Calificación: 5 de 5 estrellas5/5Ortografía para todos: La tabla periódica de la ortografía Calificación: 5 de 5 estrellas5/5Aprender a programar con Excel VBA con 100 ejercicios práctico Calificación: 5 de 5 estrellas5/5Arduino. Trucos y secretos.: 120 ideas para resolver cualquier problema Calificación: 5 de 5 estrellas5/5Curso básico de Python: La guía para principiantes para una introducción en la programación con Python Calificación: 0 de 5 estrellas0 calificacionesArduino para Principiantes Calificación: 4 de 5 estrellas4/5Aprende a Programar en C++ Calificación: 5 de 5 estrellas5/5Python 3. Curso Práctico: Ventas y marketing Calificación: 4 de 5 estrellas4/5Fundamentos De Programación Calificación: 5 de 5 estrellas5/5Curso de Programación y Análisis de Software Calificación: 4 de 5 estrellas4/5Programación en Visual Basic (VB): DEL ANÁLISIS del Problema al Programa Calificación: 4 de 5 estrellas4/5Aprende a Programar con Java Calificación: 4 de 5 estrellas4/5Fundamentos de programación: un enfoque práctico Calificación: 5 de 5 estrellas5/5Programación Orientada a Objetos Calificación: 3 de 5 estrellas3/5Linux Essentials: una guía para principiantes del sistema operativo Linux Calificación: 5 de 5 estrellas5/5Microsoft C#. Curso de Programación. 2ª Edición Calificación: 4 de 5 estrellas4/5
Comentarios para Estructuras de datos en java
0 clasificaciones0 comentarios
Vista previa del libro
Estructuras de datos en java - Luis Felipe Wanumen Silva
Tipos abstractos de datos
Concepto de TAD
En una aplicación de software podemos diferenciar claramente dos aspectos importantes: la interfaz de usuario y los procesos internos de la aplicación.
La interfaz de usuario en realidad es la parte más importante a corto tiempo para lograr que la aplicación sea atractiva al usuario. Pero a largo plazo lo único que garantiza que la aplicación perdure es la forma como se implementan sus procesos internos, ello requiere algunas operaciones y unas estructuras que serán las encargadas de almacenar la información sobre la cual se van a realizar las operaciones. Una muy buena alternativa para modelar software son los objetos abstractos que incluyan operaciones y estructuras en entes autónomos, autosuficientes y cerrados. Estos entes se conocen como tipos abstractos de datos (TAD).
Concepto de estructuras
En Java existen algunas formas simples de almacenar información. La primera es utilizando variables. Era en estas pequeñas áreas de memoria referenciadas por dichas variables en donde se almacenaban algunos datos. Por el tipo de datos tan primitivos que se pueden almacenar, se denominaban variables de tipos primitivos de datos
.
Con la llegada de lenguajes adelantados en programación orientados a objetos, se pensó en crear formas de almacenar y contener tipos primitivos de datos —que sirvieran como capa envolvente para encapsular también operaciones de conversión sobre estos datos—, y que se les denominó objetos de tipos de datos
.
Ahora bien, tanto para el caso de tipos primitivos de datos
como para el caso de objetos de tipos de datos
, se pueden construir estructuras más complejas que permitan crear arreglos de múltiples dimensiones basados en tipos primitivos o en objetos de tipos de datos. Recordemos por ejemplo que en Java una forma de crear una estructura compuesta de tres dimensiones asociada con la variable tabla
y donde la primera dimensión tiene un tamaño máximo de 4, la segunda de 6 y la tercera de 5 es la siguiente:
int tabla[][][] = new int[4][6][5];
A este tipo de implementaciones se les conoce con el nombre de estructuras compuestas, sin embargo a pesar de las ventajas que presenta trabajar con ellas, en algunos casos se necesita una representación más amplia de dicha estructura, en la cual sea posible añadir un elemento en medio de unos dos elementos específicos, y que la memoria utilizada por el mismo elemento sea liberada en tiempo de ejecución de la aplicación. Para lograr estas facilidades tenemos que recurrir a estructuras mucho más completas y dinámicas, es decir, que puedan adquirirse recursos de memoria cuando se necesiten y viceversa, que estos puedan eliminarse cuando no sean necesarios.
Tenemos una primera clasificación de las estructuras de datos en estructuras estáticas de datos
y en estructuras de datos dinámicas
.
Surge entonces el concepto de estructuras dinámicas, que no son más que la colección de varios elementos abstractos de datos autónomos en forma relacionada. A dichos elementos se les denomina por lo general nodos de la estructura
.
Veamos de forma gráfica todo lo expuesto anteriormente:
De acuerdo con el tipo de relaciones que tengan los nodos podremos especificar concretamente qué tipo de estructura dinámica es. En el siguiente gráfico se muestran algunas de las más conocidas subdivisiones de las estructuras dinámicas.
Estructuras estáticas de datos: arreglos, vectores o arrays
Introducción a los arreglos
A los arreglos comúnmente se les denomina arrays
, y también vectores
. Por experiencia podemos asegurar que son lo mismo. Se puso este item así con el fin de lograr que el usuario de este material pueda encontrar fácilmente los temas, dependiendo de cómo le llame a los arreglos.
Los arreglos en Java son siempre dinámicos por lo que no es necesario que el programador ponga la longitud. Es más, si lo hace se produce un error cuando se compile el programa.
Forma correcta de declarar un arreglo
int arreglo[]
Forma incorrecta de declarar un arreglo
int arreglo[3]
Otra forma correcta de declarar un arreglo
int[] arreglo
En esta última forma usamos los corchetes en el tipo de dato de la variable. Para comprender mejor esto veamos el ejemplo:
El programa anterior produce el siguiente resultado en el navegador:
Posición cero: 25
Posición uno: 14.
Observemos que si hubieramos reemplazado la línea de código:
por la línea de código
se habría producido un error en la aplicación, debido a que estábamos tratando de especificar con anterioridad la dimensión del arreglo, vector, array o como le llame el estudiante.
En Java se pueden declarar arrays de cualquier tipo:
Incluso se pueden construir arrays de arrays:
Los límites de los arrays se comprueban en tiempo de ejecución para evitar desbordamientos y la corrupción de la memoria.
En Java un array es realmente un objeto, porque tiene redefinido el operador []. Tiene una función miembro length. Se puede utilizar este método para conocer la longitud de cualquier array.
Para crear un array en Java hay dos métodos básicos; crear uno vacío,
O con sus valores iniciales:
Esto es equivalente a:
No se pueden crear arrays estáticos en tiempo de compilación:
Tampoco se puede rellenar un array sin declarar el tamaño con el operador new:
Es decir, todos los arrays en Java son estáticos. Para convertir un array en el equivalente dinámico en C/C++, se usa la clase vector, que permite en él operaciones de inserción, borrado, etc.
Impresión del contenido de un arreglo
Para lograr más claridad en los temas vistos, se plantea este programa:
El cual arroja el siguiente resultado:
Problemas con dimensiones de arreglos y utilización de length
Como se ha mencionado anteriormente en varias ocasiones, es posible definir un arreglo mediante la instrucción:
Pero hay que tener un gran cuidado con esto en el momento de asignarle valores a dicho arreglo, es decir, se le puede asignar valor a arreglo[0]
, arreglo[1]
, arreglo[2]
y arreglo[3]
, pero no es posible asignarle valores a arreglo[4]
, debido a que la longitud del arreglo es de 4. Para entenderlo mejor a continuación mostramos un programa que presenta un problema y por lo tanto no alcanza a imprimir los valores del arreglo. Veamos:
Para corregirlo es necesario saber el tamaño del arreglo que se ha declarado, con el fin de asignarle valores a posiciones del arreglo válidas. Esto se puede hacer mediante la función length
, que captura el tamaño del arreglo. A continuación se muestra la correción del ejercicio anterior:
Cómo llenar un vector posición por posición
En algunos casos es posible que se quiera hacer un programa que vaya capturando números o datos de forma cíclica, de tal suerte que al final del ciclo se haya llenado un vector. Este ejercicio, pese a lo sencillo, es escaso de encontrar en textos de Java, razón por la cual se expone a continuación con el fin de lograr que el lector tenga la mayor cantidad de material para lograr variado tipo de aplicaciones. Veamos:
El programa espera que el usuario digite un número, después de lo cual debe presionar el botón capturar
y repetir esta operación seis veces, luego se muestra en una caja de texto adicional los valores previamente insertados, se deshabilita la caja de texto inicial y se le cambia el texto al botón indicando que finalizó el programa¹.
Tablas de multiplicar
Arreglos con tamaño predeterminado
En secciones anteriores veíamos que era imposible escribir líneas como esta:
int arreglo[2] = {25,14};
Ello se debe básicamente a que en Java todas las variables son dinámicas, pero se puede hacer de la siguiente manera:
A continuación se muestra un programilla applet que utiliza esta forma de crear un arreglo con una longitud predeterminada y posteriormente le pone e imprime su contenido mediante un ciclo for. Veamos pues:
Cabe anotar que el manejo para los arreglos de tipo flota, doble, es similar al anterior, así que no creo que merezcan especial atención, no obstante a continuación se muestra un programa en el que se hacen arreglos de este tipo, con el fin de lograr claridad sobre ello.
Bueno, ahora usted, amigo lector, se preguntará, ¿qué pasa con los arreglos de string? Dado que los string son objetos y un string no es un dato primitivo, sino un tipo de objeto de dato, tenemos que tratarlo de forma diferente. Por ello más