Simples: estructura de datos Son todos aquellos que abarcan una sola casilla de memoria como los boleanos, enteros, flotantes, etc. Estructurales



Descargar 100,64 Kb.
Fecha de conversión14.05.2017
Tamaño100,64 Kb.
Unidad 1 Tipos de datos

1.1 Tipos de Datos



Simples:

estructura de datos Son todos aquellos que abarcan una sola casilla de memoria como los boleanos, enteros, flotantes, etc.

Estructurales:

Arreglos de cadenas, pilas o estructuras, abarcan mas de una casilla de memoria.



TABLA COMUN DE TIPOS DE DATOS




 




TIPO

RANGO

BYTES

 

 

 

 

E N T E R O S

 

Entero

−32,768 a 32,767

2

Entero sin signo

0 a 65,535

2

Corto

−32,768 a 32,767

2

Corto sin signo

0 a 65,535

2

Largo entero

−2,147,483,648 a 2,147,483,295

4

Largo sin signo

0 a 4,294,967,295

4

 

 

 

 

C A R A C T E R

 

Caracter

−128 a 127

1

Caracter sin signo

0 a 255

1

 

 

 

 

DE PUNTO FLOTANTE

 

Flotante

3.4−38 a 3.438

4

Doble

1.7−308 a 1.7308

8

Largo doble

3.4−4932 a 3.44932

10

Primitivos:

No tienen “descomposición”, están predefinidos en el lenguaje.



Tipos compuestos:

Aparte de los anteriores, C++ soporta tipos compuestos (también denominados tipos-clase). Son compuestos o agregados de tipos básicos, por esta razón se les denomina también tipos agregados o abstractos ADTs (“Abstract data types”). El “material” de que están compuestos son los tipos básicos, bien en estado “puro” o en sus diversas “adaptaciones”. El proceso es recursivo, de forma que un tipo complejo puede contener miembros que son a su vez tipos complejos y así sucesivamente.

Desde el punto de vista semántico la gramática C++ establece como tipos compuestos (“Compound types”) los siguientes:


  • Arreglos.

  • Matrices de objetos de cualquier tipo.

  • Funciones, que aceptan parámetros de ciertos tipos y devuelven void u objetos (o referencias a objetos) de cierto tipo.

  • Punteros a-void; punteros a-objetos, o punteros a-función (incluyendo miembros estáticos de clases) de un tipo determinado.

  • Punteros a miembros no-estáticos de clases (que señalan miembros de un tipo determinado dentro de objetos de una clase determinada).

  • Referencias a objetos o funciones de un tipo determinado.

  • Clases.

  • Uniones.

Tambien existen tipos de datos definidos por el usuario que varian sus sintaxis segun el lenguaje de programación.
1.1.1 Tipos de Datos Simples

Tipos de datos simples

Es uno de los conceptos fundamentales de cualquier lenguaje de programación. Estos definen los métodos de almacenamiento disponibles para representar información, junto con la manera en que dicha información ha de ser interpretada.

Para crear una variable (de un tipo simple) en memoria debe declararse indicando su tipo de variable y su identificador que la identificará de forma única. La sintaxis de declaración de variables es la siguiente:



Tipo Simple Identificador1, Identificador2;

Esta sentencia indica al compilador que reserve memoria para dos variables del tipo simple Tipo Simple con nombres Identificador1 e Identificador2.

Los tipos de datos en Java pueden dividirse en dos categorías: simples y compuestos. Los simples son tipos nucleares que no se derivan de otros tipos, como los enteros, de coma flotante, booleanos y de carácter. Los tipos compuestos se basan en los tipos simples, e incluyen las cadenas, las matrices y tanto las clases como las interfaces, en general.

Cada tipo de datos simple soporta un conjunto de literales que le pueden ser asignados, para darles valor. En este apartado se explican los tipos de datos simples (o primitivos) que presenta Java, así como los literales que soporta (sintaxis de los valores que se les puede asignar).

a.) Tipos de datos enteros

Se usan para representar números enteros con signo. Hay cuatro tipos: byte, short, int y long.

Tipo

Tamaño


byte

1Byte (8 bits)

short

2 Bytes (16 bits)



int

4 Bytes (32 bits)

long

8 Bytes (64 bits)



Tabla 5: Tipos de datos enteros

Literales enteros

Son básicos en la programación en Java y presentan tres formatos:

Decimal: Los literales decimales aparecen como números ordinarios sin ninguna notación especial.

Hexadecimal: Los hexadecimales (base 16) aparecen con un 0x ó 0X inicial, notación similar a la utilizada en C y C++.

Octal: Los octales aparecen con un 0 inicial delante de los dígitos.

Por ejemplo, un literal entero para el número decimal 12 se representa en Java como 12 en decimal, como 0xC en hexadecimal, y como 014 en octal.

Los literales enteros se almacenan por defecto en el tipo int, (4 bytes con signo), o si se trabaja con números muy grandes, con el tipo long, (8 bytes con signo), añadiendo una L ó l al final del número.

La declaración de variables enteras es muy sencilla. Un ejemplo de ello sería:

long numeroLargo = 0xC; // Por defecto vale 12

b.) Tipos de datos en coma flotante

Se usan para representar números con partes fraccionarias. Hay dos tipos de coma flotante: float y double. El primero reserva almacenamiento para un número de precisión simple de 4 bytes y el segundo lo hace para un numero de precisión doble de 8 bytes.

Tipo

Tamaño


float

4 Byte (32 bits)

double

8 Bytes (64 bits)



Tabla 6: Tipos de datos numéricos en coma flotante

Literales en coma flotante

Representan números decimales con partes fraccionarias. Pueden representarse con notación estándar (563,84) o científica (5.6384e2).

De forma predeterminada son del tipo double (8 bytes). Existe la opción de usar un tipo más corto (el tipo float de 4 bytes), especificándolo con una F ó f al final del número.

La declaración de variables de coma flotante es muy similar a la de las variables enteras. Por ejemplo:

double miPi = 314.16e-2 ; // Aproximadamente

float temperatura = (float)36.6; // Paciente sin fiebre

Se realiza un moldeado a temperatura, porque todos los literales con decimales por defecto se consideran double.

c.) Tipo de datos boolean

Se usa para almacenar variables que presenten dos estados, que serán representados por los valores true y false. Representan valores bi-estado, provenientes del denominado álgebra de Boole.

Literales Booleanos

Java utiliza dos palabras clave para los estados: true (para verdadero) y false (para falso). Este tipo de literales es nuevo respecto a C/C++, lenguajes en los que el valor de falso se representaba por un 0 numérico, y verdadero cualquier número que no fuese el 0.

Para declarar un dato del tipo booleano se utiliza la palabra reservada boolean:

boolean reciboPagado = false; // ¡¿Aun no nos han pagado?!

d.) Tipo de datos carácter

Se usa para almacenar caracteres Unicode simples. Debido a que el conjunto de caracteres Unicode se compone de valores de 16 bits, el tipo de datos char se almacena en un entero sin signo de 16 bits.

Java a diferencia de C/C++ distingue entre matrices de caracteres y cadenas.

Literales carácter

Representan un único carácter (de la tabla de caracteres Unicode 1.1) y aparecen dentro de un par de comillas simples. De forma similar que en C/C++. Los caracteres especiales (de control y no imprimibles) se representan con una barra invertida (‘\’) seguida del código carácter.

Descripción

Representación

Valor Unicode

Caracter Unicode

\udddd


Numero octal

\ddd


Barra invertida

\u005C


Continuación

Retroceso

\b

\u0008


Retorno de carro

\r

\u000D



Alimentación de formularios

\f

\u000C



Tabulación horizontal

\t

\u0009



Línea nueva

\n

\u000A



Comillas simples

\’

\u0027



Comillas dobles

\”

\u0022



Números arábigos ASCII

0–9


\u0030 a \u0039

Alfabeto ASCII en mayúsculas

A.-Z

\u0041 a \u005A



Alfabeto ASCII en minúsculas

a.-z


\u0061 a \u007A

Tabla 7: Caracteres especiales Java

Las variables de tipo char se declaran de la siguiente forma:

char letraMayuscula = ‘A’; // Observe la necesidad de las ‘ ‘

char letraV = ‘\u0056′; // Letra ‘V’

e.) Conversión de tipos de datos

En Java es posible transformar el tipo de una variable u objeto en otro diferente al original con el que fue declarado. Este proceso se denomina “conversión”, “moldeado” o “tipado”. La conversión se lleva a cabo colocando el tipo destino entre paréntesis, a la izquierda del valor que queremos convertir de la forma siguiente:

char c = (char)System.in.read();

La función read devuelve un valor int, que se convierte en un char debido a la conversión (char), y el valor resultante se almacena en la variable de tipo carácter c.

El tamaño de los tipos que queremos convertir es muy importante. No todos los tipos se convertirán de forma segura. Por ejemplo, al convertir un long en un int, el compilador corta los 32 bits superiores del long (de 64 bits), de forma que encajen en los 32 bits del int, con lo que si contienen información útil, esta se perderá.

Por ello se establece la norma de que “en las conversiones el tipo destino siempre debe ser igual o mayor que el tipo fuente”:

Tipo Origen

Tipo Destino

byte


double, float, long, int, char, short

short


double, float, long, int

char


double, float, long, int

int


double, float, long

long


double, float

float


double

Tabla 8: Conversiones sin pérdidas de información

1.1.1.1 Definicion Bit Byte Caracter Palabra

1.1.1 DEFINICIÓN DE BIT, BYTE, CARÁCTER Y PALABRA

Bit: es una síntesis de dos términos en inglés: Binary digit, que en español significan dígito binario, o lo que es lo mismo, número (dígito) con dos posibles valores (binario). El término surge de usar las dos primeras letras de Binary con la última de digit.: bit. Es la unidad de información más sencilla posible en el sistema binario.

Byte: Unidad de información que consta de 8 bits equivalente a un único caracter, como una letra, número o signo de puntuación.

Caracter: Es un elemento tomado de un conjunto de símbolos. Un ejemplo de un conjunto de símbolos es {0,1,2,3,4,5,6,7,8,9,A,B,C….Y,z,¡,-,+,*} en el cual se incluyen dígitos, los caracteres del alfabeto y algunos caracteres especiales. Un compilador de lenguaje reconoce un conjunto particular de caracteres.

Palabra: Conjunto de bits que, como unidad elemental, puede manipular una computadora. La longitud en bits de una palabra en una computadora puede ser de 8, 16, 32, etc., y depende del microprocesador de su unidad central de proceso.


1.1.1.2 Manipulacion de Bits

Ahora el ser humano digitaliza su entorno. Pero, ¿qué significa digitalizar? Digitalizar es traducir información como textos, imágenes o sonidos, a un formato que puedan entender los microprocesadores, y éstos sólo están capacitados para manejar los valores unos y ceros. En efecto, para tu microprocesador todo lo que ves en estos momentos en la pantalla se maneja con unos o ceros. Esto es porque la computadora maneja un sistema binario, que se llama así porque sólo acepta dos valores (0 y 1).

Tal sencillez tiene su razón de ser: los microprocesadores son circuitos electrónicos plasmados en un material llamado silicio (algo parecido al vidrio) que procesan diminutos impulsos eléctricos, el más pequeño de los cuales es conocido por el nombre de bit . Como impulso eléctrico, el microprocesador sólo puede detectar cuando un bit tiene carga eléctrica --su valor sería, en este caso, 1-- o cuando no la tienen --su valor sería 0 - En este ejemplo manejamos los valores unos y ceros de manera un tanto arbitraria, ya que la presencia o ausencia de carga eléctrica en un bit puede ser interpretada como una gran diversidad de valores: cierto y falso, hombre o mujer, T o J, etc.

La eficacia de las computadoras no se basa en la complejidad de su fundamento lógico, que como vimos se reduce a manejar dos posibles valores, sino de la velocidad con la que se aplica dicha lógica: los microprocesadores actuales pueden procesar varios millones de bits en un sólo segundo.

Un bit puede representar solamente dos valores. Dos bits, cuatro posibles valores y ocho bits 256 posibles combinaciones de unos y ceros.

Una unidad de medida muy utilizada en la informática es el byte , que consiste en la agrupación de ocho bits.



Ejemplo de combinaciones posibles por número de bits

Posibles combinaciones de unos y ceros usando dos bits 4:

00, 01, 11, 10

Posibles combinaciones de unos y ceros usando ocho bits 256:

00000000, 00000001, 00000011, 00000111 […] 11111111

Usando grupos de 8 bits (es decir, bytes) es posible representar a todos los caracteres que conforman el abecedario, incluyendo las mayúsculas y los signos especiales, como el de moneda o los acentos, de tal suerte que cuando se oprime la "e" en el teclado, el microprocesador recibe un paquete de 8 bits con la siguiente combinación de valores:

Valor de la letra "e" minúscula en bits:

 


0

1

1

0

0

1

0

1

Pero si en cambio se presiona la misma tecla en mayúsculas, el paquete de bits que se estará mandando al microprocesador sería el siguiente:

Valor de la letra "E" mayúscula en bits:

 

0

1

0

0

0

1

0

1

Mediante combinaciones de bits y bytes es posible representar una cantidad infinita de cosas: desde bibliotecas completas hasta juegos y películas, todo un universo de información que puede estar en diversas formas; textos, imágenes y sonidos.

Se dice que algunas computadoras tienen aritmética decimal en lugar de binaria. Cuatro bits proporcionan 16 combinaciones, utilizadas para los 10 dígitos de 0 a 9, con 6 combinaciones sin utilizar. El número 1944 se muestra abajo codificado en decimal y en binario, utilizando 16 bits en cada ejemplo:



Decimal: 0001 1001 0100 0100 binario: 0000011110011000
1.1.1.3 Representacion Datos Simples
MANEJO Y OPERACIONES CON CARACTER

Como es bien conocido cualquier tipo de información no siempre es interpretada numéricamente. Elementos tales como nombres, cargos y direcciones deben ser también representados en alguna forma en un computador. Este tipo de información es generalmente representado e forma de hileras (strings) de caracteres. Por ejemplo, en algunos computadores los 8 bits 00100110 son utilizados para representar el carácter `&'. Un patrón diferente de 8 bits se utiliza para representar el carácter `A',otro para establecer `B'.

Si se utilizan 8 bits para representar un carácter, se pueden representar hasta 256 caracteres diferentes, puesto que existen 256 patrones o combinaciones diferentes de 8 bits.

Al igual que en el caso de enteros, no existe nada intrínseco con respecto a alguna hilera de bits en particular que la haga apropiada para representar un carácter específico. La asignación de as hileras de bits o caracteres pueden ser enteramente arbitraria, pero debe ser consistente.

En efecto, los computadores difieren con respecto al número de bits utilizados para representar un carácter. Algunos computadores utilizan 7 bits (y por consiguiente solo es posible tener hasta 128 caracteres), algunos utilizan 8 (hasta 256 caracteres) y otros utilizan 10 (hasta 1 024 posibles caracteres). El número de bits necesarios para representar un carácter en un computador en particular es denominado el tamaño del byte y el grupo de bits correspondientes se denomina un byte.

Un ejemplo de una estructura de datos construida a partir de una estructura de datos primitiva es la cadena la cual es una secuencia finita de símbolos tomados de un conjunto de caracteres. El conjunto de caracteres que se emplea para generar cadenas se llama alfabeto. El conjunto de cadenas que se puede derivar del alfabeto A = {C,D,1} incluye los siguientes: `CD1', `CD', `1D111', y así sucesivamente, incluyendo la cadena nula o vacía. Por lo general, el inicio y final de una cadena lo delimitamos por comillas.

Las cadenas son un tipo importante de dato que se usan ampliamente. En primera instancia, las cadenas son el medio básico para escribir programas y transmitirlos a la computadora. Segundo, son el medio principal de intercambio de información con los usuarios. Tercero, las cadenas se usan para almacenar información en archivos. Cuarto, se usan lenguajes de programación para nombres de variables, etiquetas y procedimientos. Y en un contexto más general, son una vía de comunicación entre los seres humanos.

Al conjunto de todas las posibles cadenas que se pueden derivar de un alfabeto se le llama vocabulario V, el cual se deriva de un alfabeto A y se denota algunas veces como VA=A. Un alfabeto no sólo contiene letras del alfabeto {a,b,c.....x,y,z}; también contiene cualquier símbolo válido. Si el alfabeto es {0,1} entonces las cadenas que se obtienen se llaman comúnmente cadenas de bits .

Cada cadena tiene un atributo llamado longitud, el cual es el número de caracteres en la cadena.

Las operaciones definidas sobre las cadenas sondiferentes a las definidas para los enteros. Las tres operaciones principales sobre cadenas son:

· Longitud

· Concatenación

· Subcadena

Longitud de cadena:

El operador de longitud da el número de caracteres de una cadena. Esta tiene un operando de tipo cadena y su resultado es de tipo entero.



Concatenación de cadenas:

La operación de concatenación se efectúa sobre un par de cadenas, juntándolas de extremo a extremo en una nueva cadena. El operador de concatenación tiene dos operandos, ambos de tipo cadena y produce un resultado de tipo cadena.



Subcadenas:

La operación subcadena tiene como único operando una cadena de la cual genera una nueva cadena como resultado. Para especificar completamente la operación de subcadena, deben especificarse no sólo la cadena operando, sino también el punto de inicio y el número de caracteres que debe tomarse para formar una nueva cadena.



PRESENTACIÓN DE NÚMEROS ENTEROS Y REALES

Enteros binarios y decimales

El método más ampliamente utilizado para la interpretación de la asignación de bits como enteros no negativos es el sistema de números binarios. En este sistema cada posición del bit representa una potencia de 2. El bit que está en la posición más hacia la derecha representa 20,, lo cual es igual a 1; el de la siguiente posición a la izquierda representa 21, el cual es 2; el bit de la posición siguiente representa 22, el cual es 4; y así sucesivamente.

Un entero es representado como una suma de potencias de 2. una hilera de puros ceros representa el numero cero. Si un 1 aparece en alguna posición de un bit en particular, la potencia de 2 representada por la posición de este bit es incluida en la suma, pero si aparece un cero la potencia de 2 no es incluida en la suma. Por ejemplo, el grupo de bits 00100110 tiene unos en la posición 1,2 y 5 (contados de derecha a izquierda con la posición más hacia la derecha interpretada como la posición cero).

Existen dos métodos ampliamente utilizados para representar números binarios negativos. En el primer método, denominado de complemento unitario un número negativo es representado cambiando cada bit de su valor absoluto a la posición opuesta correspondiente. Por ejemplo, puesto que 00100110 representa el número 38, 11011001 es utilizado para representar a -38. Una hilera de bits que empiece con un 0 representa un número positivo, mientras que una hilera de bits que empiece con 1 representa un número negativo.

El segundo método de representar números binarios negativos es denominado método del complemento doble. En esta notación, se le agrega un 1 a la representación e complemento unitario de un número negativo. Por ejemplo, puesto que 11011001 representa -38 en la notación de complemento unitario 11011010 es utilizado para representar -38 e la notación de complemento doble.

El sistema de números binarios de ninguna manera es el método mediante el cual se pueden utilizar bits para representar enteros. Por ejemplo, una hilera de bits puede ser utilizada para representar enteros en el sistema de números decimales, en la siguiente forma: 4 bits se pueden utilizar para representar un dígito decimal entre 0 y 9 en la notación binaria descrita anteriormente. Una hilera de bits de longitudes arbitrarias puede ser dividida en grupos consecutivos de 4 bits, donde cada grupo representa un dígito decimal. La hilera entonces representa el número que está formado por estos dígitos decimales en una notación decimal convencional. Por ejemplo, en este sistema, la hilera de bits 00100110 se puede separar en 2 hileras de 4 bits cada uno: 0010 y 0110.el primero de estos grupos representa el dígito decimal 2 y el segundo representa el dígito decimal 6, de tal manera que la hilera completa representa el entero 26. esta representación es llamada decimal codificado en binario.



Números reales:

El método común y corriente utilizado por los computadores para representar números reales es la denotación de punto flotante. Existen muchas variedades de notación de punto flotante y cada una de ellas tiene sus características individuales. El concepto clave es de que un número real es representado por un número denominado mantisa multiplicada por una base elevada a una potencia entera, denominada exponente. La base generalmente es fija y la mantisa y el exponente varían de acuerdo a la representación de diferentes números reales.

En la notación de punto flotante un número real está representado por una hilera de 32 bits formada por una mantisa de 24 bits seguida de un exponente de 8 bits. La base se fija como 10. tanto la mantisa como el exponente son enteros binarios de complemento doble.

Algunos números reales y representaciones de puntos flotantes son:

0 00000000000000000000000000000000

.5 00000000000000000000010111111111

-387. 53 11111111011010001001111111111110

La ventaja de la notación de punto flotante es que esta puede ser utilizada para representar números con valores absolutos extremadamente grandes o extremadamente pequeños. El número positivo más pequeño que puede ser representado es 10-128 el cual es verdaderamente pequeño. No necesariamente cada número comprendido entre el mas grande y el más pequeño puede ser representado. Nuestra representación permite solamente 23 bits significativos. Es decir un número tal como 10 millones uno, el cual requiere 24 dígitos binarios significativos en la mantisa, tendría que ser aproximado a 10 millones (1 x 107 ), el cual requiere solamente un dígito significativo.



1.1.2 Tipos Datos Abstractos
Concepto

Cuando se escribe un programa para resolver un problema, con el enfoque tradicional se pasa directamente de la realidad a una implementación en el lenguaje de programación. Con los TAD se establece un nivel intermedio, donde se quiere moderar lo esencial de la realidad sin comprometerse con detalles de implementación. De hecho, es posible consideras diferentes implentaciones.

Un TAD es una estructura algebraica, o sea, un conjunto de objetos con ciertas operaciones definidas sobre ellos. Piense, por ejemplo, en la calculadora: los elementos que maneja son cantidades numéricas y las operaciones que tiene definidas sobre éstas son las operaciones aritméticas. Otro ejemplo posible es el TAD matriz; los elementos que maneja son las matrices y las operaciones son aquellas que nos permiten crearlas, sumarlas, invertirlas, etc.

Es posible observar que las operaciones de un

Tipo Abstracto son de diferentes clases: algunas de ellas nos deben permitir crear objetos nuevos, otras determinar su estado, unas construir otros objetos a partir de algunos ya existentes, etc.

La implementación tradicional frente a los TAD

Según la clásica ecuación de Wirth:

Programa = Datos + Algoritmo

El enfoque tradicional se ciñe bastante bien a esta concepción

Con los TAD se identifican ciertas operaciones o partes del algoritmo que manipulan los datos. En la ecución de Wirth la parte Algoritmo la podemos expresar como:

Algoritmo = Algoritmo de datos + Algoritmo de control

Se entirnde como Algoritmo de datos a la parte del algoritmo encargada de manipular las estructuras de datos del problema, y Algoritmo de control a la parte restante ( la que representa en sí el método de solución del problema, independiente hasta cierto punto de las estructuras de datos seleccionadas ).

Entonces podemos reescribir:

Programa = Datos + Algoritmo de Datos + Algoritmos de Control

Colocando Datos + Algoritmo de Datos como Implementación de TAD se establece la siguiente ecución:

Programa = Implementación del TAD + Algoritmo de Control

que describe el enfoque de desarrollo con Tipos Abstractos de Datos.

Clasificación

Hay operaciones que nos sirven para crear nuevos objetos abstractos, otras para obtener información acerca de ellos, y algunas para construir nuevos elementos a partir de ptros ya existentes. De esta forma las operaciones las podemos clasificar de esta manera:

Operaciones para crear objetos

Iniciales: Se utilizan para crear onjetos del TAD, en cuya creación no se requieren ningunos objetos abstractos del mismo tipo.

Constructores: Utilizadas para crear objetos del TAD cuya creación depende de objetos del mismo tipo.

Operaciones para transformar objetos de TAD

Simplificadoras: Son operaciones cuyo codominio es el TAD que se define, pero que dan como resultado objetos que pueden ser descritos utilizando unicamente operaciones iniciales y constructoras.

Operaciones para analizar los elementos del TAD

Analizadoras: Son operaciones cuyo codominio no es el TAD que se define, sino otro ya conocido. El proposito de este tipo de operaciones es obtener información concerniente a cualquiera de los objetos abstractos de tipo.

Las operaciones simplificadoras y analizadoras inducen una noción de equivalencia entre los elementos de TAD que se define; si dos objetos abstractos son indistinguibles mediante operaciones simplificadoras y analizadoras, el observador deberia concluir que se trata del mismo objeto.

Implementacion

Cuando ya se tiene bien diseñado un Tipo Abstracto, el siguiente paso es decidir una implementación para el mismo. Esto implica escoger unas estructuras de datos para representar cada uno de los objetos abstractos y escribir una rutina(Procedimiento o función) en un lenguaje de programación, que simule el funcionamiento de cada una de las operaciones de acuerdo con su especificación. La selección de las estructuras de datos determina, en muchos casos, la complegidad del algoritmo que implementa una operación y es, por esta razón, de gran importancia su escogencia. Existen estructuras de datos muy dependientes de un lenguaje de programación y debido a esto deben trata de evitarse cuando el TAD se quiere hacer portable.

1.2 Estructuras de Datos Definicion


Estructura de datos

En programación, una estructura de datos es una forma de organizar un conjunto de datos elementales (un dato elemental es la mínima información que se tiene en el sistema) con el objetivo de facilitar la manipulación de estos datos como un todo o individualmente.

Una estructura de datos define la organización e interrelacionamiento de estos, y un conjunto de operaciones que se pueden realizar sobre él. Las operaciones básicas son:

Alta, adicionar un nuevo valor a la estructura. Baja, borrar un valor de la estructura. Búsqueda, encontrar un determinado valor en la estructura para realizar una operación con este valor, en forma SECUENCIAL o BINARIO (siempre y cuando los datos estén ordenados)…

Otras operaciones que se pueden realizar son:

Ordenamiento, de los elementos pertenecientes a la estructura.

Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las apareadas.

Cada estructura ofrece ventajas y desventajas en relación a la simplicidad y eficiencia para la realización de cada operación. De esta forma, la elección de la estructura de datos apropiada para cada problema depende de factores como la frecuencia y el orden en que se realiza cada operación sobre los datos.


1.2.2 Clasificacion Estructuras de Datos

Las estructuras de datos constituyen un aspecto muy importante en la computación, estas son:



Arreglos,

Registros

Conjuntos.

1.2.2.1 Estructuras de Datos Lineales y no Lineales



ESTRUCTURAS DE DATOS LINEALES
ARREGLOS
CONCEPTO :

Es un conjunto de datos o una estructura de datos homogéneos que se encuentran ubicados en forma consecutiva en la memoria RAM (sirve para almacenar datos en forma temporal).

Un arreglo puede definirse como un grupo o una colección finita, homogénea y ordenada de elementos. Los arreglos pueden ser de los siguientes tipos:

•  De una dimensión.

•  De dos dimensiones.

•  De tres o más dimensiones


PILAS
Una pila es un tipo de lista lineal en la que la inserción y borrado de nuevos elementos solo se pueden realizar por un extremo que se denomina tope o cima.

La pila es una estructura con numerosas analogías en la vida real, una pila de platos, una pila de documentos, una pila de monedas. Dado que la operación de insertar y eliminar se realizan por un solo extremo (superior) los elementos solo pueden eliminarse en un orden inverso al que se insertan en la pila.


COLAS

En las colas el elemento que entro en primer lugar también es el primero en salir por ello se conocen como listas FIFO (First in - First out).

Así pues la diferencia con las pilas recibe en el modo de entrada y salida de datos. En las colas las inserciones se realizan al final de la lista no al principio por ello las colas se usan para almacenar datos que necesiten ser procesados según el orden de llegada.

ESTRUCTURA DE DATOS NO LINEALES


Árboles.
Los arboles representan la estructura no lineales y dinámica de datos. Dinámica puesto que la estructura de árbol puede cambiar durante la ejecución de un programa. No lineales puesto que a cada elemento del árbol puede seguirle varios elementos.

Arboles generales
Arbol se define como una estructura jerárquica de forma descendente que se utiliza para almacenar información para su posterior procesamiento.

Representación de los arboles binarios
Gráficamente pueden representarse una estructura de árbol de diferentes formas y todas ellas son equivalentes, entre ellas tenemos:

•  Diagrama de Venn

•  Anidación de paréntesis

•  Notación decimal de Dewey

•  Notación identada

•  Gráficas (grafos)Arboles generales y binarios Otra definición de árbol general sería, estructura de datos representada con nodos y diferentes cantidades sucesiones.



 

GRAFO


 

  • Un grafo es un diagrama que consiste de puntos (llamados nodos ) unidos por líneas (llamadas arcos ). Cada arco en un grafo se especifica por medio de un par de nodos.



 

 


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal