ZONA Estructuras de Datos - Foros DZ
Foros DZ
Bienvenido a Foros DZ.

Si es tu primera visita, quizás deberías visitar la Ayuda para aprender un poco sobre el uso de los foros. Es posible que tengas que registrarte antes de poder iniciar temas o dejar tu respuesta a los temas de otros usuarios: haz clic en el enlace 'registrarse' para crear tu cuenta. Para empezar a ver mensajes, selecciona el foro que quieres visitar de la lista de abajo.

Identificarse:

Avisos


Respuesta
hombre Antiguo 06-ago-2009
 
Avatar de "Zero"
NOVIEMBRE, mes la patria de mi alma, de mi corazón
ZONA Estructuras de Datos

Hola foreros!!!
=D

Aquí les traigo algo nuevo para PCHZ esperando que tenga más actividad. Ya había hablado con noob y le pareció buena idea. Espero que a los demás les sea buena idea esto y también espero la cooperación de todos.

Iniciamos una nueva faceta de aprendizaje 8D

En esta ocasión vamos a empezar un nuevo capítulo de aprendizaje. Vamos a abordar lo que son las


Estructuras de Datos

Conocimientos muy importantes como la programación en sí, para resolver problemas que tengan que ver con manipulación de datos.

Como referencia bibliográfica vamos a usar el libro “Estructuras de Datos, Tercera Edición. Osvaldo Cairó y Silvia Guardati, McGraw Hill”.




Espero dar lo relacionado a estructuras fundamentales de datos, pilas, colas, listas, recursión, árboles, gráficas o gráfos, métodos de ordenación y búsqueda. Prácticamente es todo el libro XD yo debo de ser profesor de estructuras de datos y quitarle el puesto a la profa que me dio la materia muajajajaja XD

Tengo que serles sincero, me encantan las estructuras de datos. Por eso me animo a realizar este esfuerzo además de que unos habían mencionado el tema en el tema de programación.

¡Manos a las estructuras!

Capítulo 1:


Estructuras fundamentales de datos.

Contenido:

1. Definición de Estructura de Datos
2. Clasificación de las Estructuras de Datos
3. Operaciones básicas
4. Arreglos
5. Registros
6. Combinaciones entre arreglos y registros.
7. Diferencia entre arreglos y registros.



1.
Definición de Estructura de Datos

Para empezara comprender esta rama de los sistemas computacionales, debemos de definir qué son las estructuras de datos.

¿Qué es Estructuras de Datos? Las estructuras de datos no son más que la forma en que se organiza, se guarda, se estructura la información o los datos que serán procesados mediante técnicas de estructuras de datos. Entiéndase como técnicas, a la forma de manejar estos datos en memoria. (Zero ® 2009).

Otras definiciones que tiene son: colección de datos que se caracterizan por su organización.

Entonces, a partir de esto, podemos comprender que las estructuras de datos es un tema muy amplio en su haber. Yo, personalmente desconozco si existen más temas sobre esto; de los que les mencioné pero si existen, tienen su propósito.

El estudio de las estructuras de datos constituye una de las principales actividades para desarrollar grandes sistemas de software. En este capítulo enseñaré las estructuras de datos básicos que son importantes para la mayoría de los lenguajes de programación.


2. Clasificación de las Estructuras de Datos

Existen varios tipos de clasificación dependiendo del tipo de dato.

Se clasifica en simples, estructurados y compuestos. Los simples se clasifican a su ves en enteros, boleanos, reales y carácter. Los estructurados en cadenas, arreglos y registros. Los compuestos en lineales y no lineales. A su ves, los lineales en pilas, colas y listas. Los no lineales se dividen en árboles y grafos o gráficos.

Los tipos de datos simples se caracterizan por que ocupan una casilla de memoria; por tanto una variable simple hace referencia a un único valor a la vez.

Los tipos de datos estructurados se caracterizan por el hecho de que con un nombre o identificador, se hace referencia a un grupo de casillas de memoria.

Un dato estructurado tiene varios componentes. Cada uno de ellos puede ser un tipo de datos simple o estructurado. Sin embargo, los componentes básicos, los de nivel más bajo, de cualquier dato estructurado son simples tipos de datos simples (a).

Tipo de datos simples y estructurados.
a) Dato simple.
b) Dato estructurado.



Agrego los tipos de datos estáticos y dinámicos. Como sus nombres indican, los estáticos no ocupan en memoria, más de lo asignado a ellos. Tampoco se puede modificar la asignación. En contraste, los dinámicos pueden variar la ocupación en el transcurso del programa.


3. Operaciones básicas

Existen operaciones básicas que podemos en las estructuras de datos:

*Alta: es insertar un valor.
*Baja: es eliminar un valor.
*Búsqueda: es encontrar un valor para realizar una operación.

Adicional, existen otras operaciones:

*Ordenamiento: organizar los elementos pertenecientes a la estructura.
*Apareo: consiste en general una nueva ordenada.


4. Arreglos

Para comentar algo sobre los arreglos, podemos decir que en la práctica, se nos presentan problemas que a veces son fáciles resolverlos con datos simples pero a la ves resultan ser imposibles. Entonces ahí es donde entran las estructuras arreglos.

Mire, un ejemplo sencillo para que vean la complejidad de lo que hablo: una facultad tiene 50 notas de 50 estudiantes y desean saber los estudiantes que están por encima del promedio.

Una solución sería leer las 50 notas y sacar el promedio y después volver a tener que leer las 50 notas para determinar los que están por encima del promedio. Lo que estamos haciendo es una doble lectura. Algo totalmente tedioso e ineficiente. Otra solución es usar 50 variables para cada nota y después preguntar si cada nota es mayor que el promedio. Una solución muy larga.

Entonces, ¿Qué pasa? Necesitamos una estructura que nos permita manejar estas 50 notas. Vemos que ninguna de las soluciones resulta práctica ni eficiente. Es necesario usar un tipo de dato que pueda como les dije, manejar las notas. ¿Cual es la mejor estructura? El tipo de dato estructurado arreglo.

Un arreglo se define como una colección finita de elementos en memoria, homogénea y ordenada.

*Finita por que tiene un principio y final. Es estática. Tenemos que saber cual será el número máximo de elementos que tendrá.

*Homogénea por que tiene que tener los mismo tipos de datos. Es decir, enteros, boleanos, caracteres, etc. Recuerden que les dije que los datos estructurados tienen inmersos en ellos, datos simples (a)

*Ordenada por que se puede determinar cual es el primer elemento, el segundo, el tercero y el enésimo elemento.

¿Cómo se representa? Como un dato estructurado (ver capítulo 2, datos estructurados).

Recuerden que esto lo vimos ya en programación y que existen otros conceptos de estos tipos de datos.

También tengo que añadir que existen distintas operaciones aplicadas a los arreglos. Se clasifican en:

*Lectura/Escritura
*Asignar
*Búsqueda
*Ordenación
*Inserción
*Modificación
*Eliminación.

Las tres últimas, son operaciones de actualización que se pueden hacer a una estructura tipo arreglo. Recordemos que ya estas operaciones ya se han explicado en el capítulo Estructuras de almacenamiento del tema de programación.


5. Registros

Son otro tipo de estructuras también llamadas estructuras. Como recuerdan, un dato registro o estructura, puede tener varios tipos de datos dentro de su estructura, ya que en la práctica se necesita manipular varios tipos de datos como un todo. Esto lo veremos en el tema de programación ya que ahora caigo en cuenta de que no he publicado nada con respecto a estructuras en C++.

Un registro o estructura está caracterizado por el nombre de la estructura y los campos que lleva esa estructura. Entiéndase como campos, a los datos que almacena la estructura.

Veamos un ejemplo. Una compañía tiene esta información por cada empleado:

*Nombre
*Dirección
*Edad
*Sexo
*Antigüedad.

Habíamos dicho que un registro, un tipo de dato estructurado; lleva consigo datos simples. Pero en la práctica, esto no es así repito. Se necesitan estructuras que almacenen distintos tipos de datos como vemos en el ejemplo.

¿Qué sucede? Aquí no tenemos datos homogéneos. El nombre es cadena de caracteres, igual que dirección. Sexo es tipo carácter y Edad y Antigüedad es entero.

De nuevo. Si se quiere almacenar estos datos no sería posible usar un arreglo por que recuerden la característica de un arreglo: solo almacena datos de mismo tipo. ¡Aquí ninguno es el mismo tipo! Entonces la estructura que nos puede almacenar estos datos se llama registro o estructura.

Entonces definimos un registro como un dato estructurado que consta de una colección finita y heterogénea de datos llamados campos. Los campos de una estructura pueden ser tanto arreglos como estructuras en sí. Recuerden que se identifica con un nombre, cada campo.

Para declarar un arreglo se hace de la siguiente forma:


Código:
[nombre del registro]=REGISTRO
           Campo1
           Campo2
           Campo3
           …
           Campon
[fin de la declaración del registro]
Como estamos trabajando con C++, sería así:

Código:
struct
{
           [tipo de dato1][nombre]
           [tipo de dato2][nombre]
           [tipo de dato3][nombre]
           …
           [tipo de dato1][nombre]
}[nombre del registro]
Ejemplo:

Sea FECHA un registro formado por tres campos numéricos, su representación sería:


Código:
FECHA=REGISTRO
           Día: entero
           Mes: entero
           Año: entero
[Fin de la declaración de registro FECHA]
Aquí vemos que los campos son homogéneos. No todo el tiempo será así.

Sea CLIENTE un registro formado por cuatro campos, su representación sería.


Código:
CLIENTE=REGISTRO
           Nombre: cadena de caracteres
           Teléfono: cadena de caracteres o numérico.
           Saldo: real o flotante
           Moroso: boleano
           Edad: entero
[Fin de la declaración de registro CLIENTE]
En este caso vemos que los datos son heterogéneos. Aquí se demuestra que en la práctica, sí se da esta situación, en la cual los registros o estructuras no ayudan a manipular la información de una mejor forma.

Entonces, para acceder a un campo de la estructura, se hace así: [nombre del registro].[nombre del campo].

Si yo quiero acceder al campo Teléfono del registro cliente sería: CLIENTE.Teléfono. Si yo quiero acceder al campo Mes del registro FECHA sería: FECHA.Mes.


6. Combinaciones entre arreglos y registros

Los registros tienen varios campos. Cada uno de ellos puede ser un tipo de dato, simple o estructurado. Sin embargo, los componentes del nivel más bajo de un tipo estructurado siempre deben ser tipos simples de datos.

De acuerdo con esta condición, se infiere que un campo de un registro puede ser otro registro también o bien un arreglos. Por otro lado, los componentes de un arreglo también pueden ser registros. Estos casos que menciono, además se pueden presentar en forma anidada.

Entonces las combinaciones posibles que caben según lo dicho son:

*Arreglos de registros
*Registros anidados
*Registros con arreglos

Arreglos de registros: cada componente del arreglo, es un registro.
Registros anidados: al menos, un campo del registro, es un registro.
Registros con arreglos: al menos un campo del registro, es un arreglo.

Ejemplos:

Arreglos de registro:


Código:
CLIENTE[n]=Registro
           Nombre
           Teléfono
           Saldo
           Moroso
[fin de declaración]
Registros anidados:

Código:
ACREEDORES=Registro
           Nombre
           Dirección (es otro registro)
                    Calle
                    Número
                    Ciudad
                     País
           Saldo
[fin de la declaración]
Registros con arreglos:

Código:
CLIENTE=Registro
           Nombre
           Teléfono
           Saldo mensual del último año=ARREGLO[1..12] (nuestro arreglo)
           Moroso
[fin de declaración]
7. Diferencias entre arreglos y registros

Las diferencias que podemos mencionar son:

1. Un arreglo almacena elementos del mismo tipo.
2. Un registro almacena n elementos de diferentes tipos.
3. Un arreglo se accede por un índice
4. Un registro se accede con un nombre y una variable tipo nombre.



Bueno, espero que todo se halla entendido. Espero que les guste esta iniciativa. Sientance en confianza en comentar y corregirme si me he equivocado. Nadie es perfecto y a uno también se le puede olvidar las cosas n_n

Saellvertu!!
__________________
PUENTE DEL MUNDO, CORAZÓN DEL UNIVERSO: PANA



VIVA MI PATRIA CARAJO!


Última edición por "Zero"; 06-ago-2009 a las 12:45.
"Zero" no ha iniciado sesión   Responder Citando
hombre Antiguo 06-ago-2009
 
Avatar de sui90
empty mind
Hola, buen tuto, sigas así, (más más).
Según tengo entendido la definición de arreglo [para asegurarme]:
arreglo = array ¿verdad? [no utilizamos la misma legua, XD]

A ser posible, podrías incluir "los punteros" a algún capítulo de aprendizaje? (con un poquito profundizado)
THX
__________________
Por favor no me juzgues antes de conocerme.
Be water...
sui90 no ha iniciado sesión   Responder Citando
hombre Antiguo 06-ago-2009
 
Avatar de Lionheart-009
Sin estado
Esto es una de las partes de programación que separa a los niños de los hombres jaja xD

Muy buen tutorial, bastante entendible me parece q visitaré seguido este tema xD

Saludos!

pd: sé q la pregunta no es conmigo, pero efectivamente arreglo = array.
__________________
Bravery can only be found in a knight's heart...
Lionheart-009 no ha iniciado sesión   Responder Citando
Hay 1 mensajes borrados. Ver los mensajes borrados.
hombre Antiguo 13-ago-2009
 
Avatar de "Zero"
NOVIEMBRE, mes la patria de mi alma, de mi corazón
Escrito por Lionheart-009
Esto es una de las partes de programación que separa a los niños de los hombres jaja xD
Jajajajajaaaaaa

Que va, cuando uno es bueno, uno-es-bueno jajajaja

Pero sí, como dije es bueno conocer sobre estructuras de datos para que nos ayuden a resolver problemas.

Ehhh sí, arrays es arreglos. Personalmente no me gusta usar ese término anglisista. Prefiero usar arreglos.

Con respecto a los punteros, pues creo que esto no va en estructuras sino en el tema de programación.

Tengo que decirte que los punteros no son mi fuerte pero haré mi mejor esfuerzo por explicar bien ese tema.

El problema mío es el tiempo. No sé cuando lo pueda hacer. Si lo esperas sentado, de que llega llega jajajja

Gracias por comentar. Recuerden, cualquiera cosa comenten por favor =D

Saellvertu!!












"Z"
__________________
PUENTE DEL MUNDO, CORAZÓN DEL UNIVERSO: PANA



VIVA MI PATRIA CARAJO!

"Zero" no ha iniciado sesión   Responder Citando
hombre Antiguo 08-sep-2009
Sin estado
http://www.dcc.uchile.cl/~ecerda/apunte.cc30a.pdf

Este es un apunte en pdf sobre estructuras de datos (fijas y recursivas) asi como implementacion de estas en tipos de datos abstractos. Esta orientado para java, no obstante esta mas escrito en pseudocodigo y es practico para entender. Ademas, explica de manera practica bases para entender como programar como iteracion, recursividad, dividir para reinar, etc.

Por si necesitan complementar lo aprendido
pwn3d3r no ha iniciado sesión   Responder Citando
mujer Antiguo Hace 4 Semanas
 
Avatar de Kula Diamond
Where is my prize?
Ese libro de McGraw Hill es buenisimo!! ami medieron clsescon el y con ese le entendi masclarito que el agua!!!
Waa ami se me da mejor arreglos y estructuras... ahora punteros psssile entiendo pero no soy buena explicandolo xD kalula fracasa explicando LOL
__________________
IS THAT WHAT YOU WANTED?


Kula Diamond no ha iniciado sesión   Responder Citando

Respuesta



« Tema Anterior | Próximo Tema »

(0 miembros y 1 visitantes)
 
Herramientas

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Desactivado
Pingbacks are Desactivado
Refbacks are Desactivado


Desarrollado por: vBulletin® Versión 3.8.1
Derechos de Autor ©2000 - 2009, Jelsoft Enterprises Ltd.

La franja horaria es GMT -6. Ahora son las 01:43.
Página generada en 0,19844 segundos, con 10 consultas