Unidad 1 Tipos de Datos - BIENVENIDO Estructura De Datos

Anuncio
Unidad 1 Tipos de Datos
Simples:
Estructura de datos
Son todos aquellos que abarcan una sola casilla de memoria como los
, enteros, flotantes, etc.
Estructurales:
Arreglos de cadenas, pilas o estructuras, abarcan más de una casilla de memoria.
TABLA COMUN DE TIPOS DE DATOS
TIPO
RANGO
BYTES
ENTEROS
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 4
2,147,483,295
Largo sin signo
0 a 4,294,967,295
4
CARACTER
Carácter
−128 a 127
1
Carácter 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
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.
También existen tipos de datos definidos por el usuario que varían sus sintaxis
según 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)
Literales enteros
Son básicos en la programación 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 recibo Pagado = 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.
Literales carácter
Representan un único carácter 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
Carácter 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
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
1.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 digito.: 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 Manipulación de bits
Esta puede almacenar de acuerdo a la forma en que se estén especificando a
continuación daré algunos ejemplos donde se aplican:
& conjuncion
| DISYUNCIONDISYUNCION EXCLUSIVA
¬ NEGACION (COMPLEMENTO A 1)
>> DESPLAZAMIENTO DE BITS A LA DERECHA
<< DESPLAZAMIENTO DE BITS A LA IZQUIERDA
ROR ROTACION A LA DERECHA
ROL ROTACION A LA IZQUIERDA
C-2 COMPLEMENTO A 2
NOTA: ESTOS SE APLICAN A TIPOS DE DATOS ENTEROS EN EL LENGUAJE
1.1.1.3 Representación de datos simples
Los principales utilizados en la computadora son: texto, números imágenes y
audio. Texto: Una pieza de texto en cualquier idioma, es una secuencia de
símbolos usados para representar una idea en ese idioma.
Por Ejemplo:
Una computadora ocupa una secuencia de bits para ejecutar las instrucciones de
un programa. Para representar cualquier símbolo se puede utilizar un patrón de
bits. Dicho de otra forma la palabra byte esta formada por 4 símbolos en los que
cada patrón define un solo símbolo. Carácter B Y T E
Código ASCII 100010 1011001 1010100 1000101
Decimal 66 89 84 69
7bits carácter 1 bit=0.1
2bit =4 (00, 01, 10, 11)
4 bit =8
5 bit=16
6 bit=32
7 bit=128
Código ASCII
El Instituto Nacional Norteamericano de Estándares, desarrollo un código llamado
―código norteamericano de estándares para intercambios de información‖
(ASCII), este código utiliza 7 bits para cada símbolo lo que significa 128 caracteres
distintos son los que corresponden a este código.
Números
Los números se representan utilizando el sistema binario, los números se pueden
representar dentro de la computadora clasificándolos de acuerdo a sus
características como por ejemplo si son positivos, negativos o si utilizan
decimales. En la actualidad la representación de uso más común es el
complemento a dos porque permite manejar la memoria de una computadora de
manera más eficiente.
En la actualidad la representaron del uso mas común es el complemento a dos
porque permite manejar la memoria de una computadora de manera más eficiente.
Imágenes
Se representa mediante dos métodos gráficos de mapa de bits y grafico vertical.
Mapa de bits: En este método una imagen se divide en una matriz de pixeles
(elemento de imagen) en donde cada píxel es un pequeño punto, el tamaño del
píxel depende de la resolución.
P/E
00011000
00011000
01111110
01111110
00011000
00011000
0 blanco
1 negro
Para representar imágenes a color cada píxel se descompone en tres colores
primarios (RGB) Red, Green, Blue, luego se mide la intensidad de cada color y se
le suma un patrón de bits. En otras palabras cada píxel tiene tres patrones de bits:
• Uno para la intensidad de rojo
• Uno para el verde y el azul.
COLOR R G B
Rojo 11111111 00000000 00000000
Verde 00000000 11111111 00000000
Azul 00000000 00000000 11111111
Convertidores de código binario en línea:
http://www.eztigma.tk/juegos/binary.php
http://nickciske.com/tools/binary.php
Imágenes grafico vertical
El problema de grafico de mapa de bits es que los patrones de bits exactos para
representar una imagen deben guardarse en la computadora, posteriormente si
desea cambiar el tamaño de la imagen debe debes cambiar el tamaño de los
pixeles los cuales crean una apariencia difusa y granulada.
No obstante el grafico vertical no guarda patrones de bits, una imagen se
descompone en una combinación de curvas y líneas.
Audio
Aunque no hay un estándar para descargar un contenido de música la idea es
convertir el audio a datos digitales y usar patrones de bits.
El audio por naturaleza es información análoga (continua).
DIGITAL ANALOGOS
VIDEO
Es una representación de imágenes cuadros o frames y sonido en el tiempo; una
película es una serie de cuadros desplegados unos tras otros para crear la ilusión
de movimiento.
Así que almacena de igual manera que una imagen y un sonido en la
computadora.
Pixeles:
123
1.1.2 Tipos de datos abstractos
En la historia de la ciencia de la computación los programadores han tenido que
lidiar durante mucho tiempo con el problema de la complejidad , y a fin de
entender lo que son las técnicas orientadas a objetos encontramos diferentes
mecanismos para controlarla y a la cabeza de ellos encontramos a la abstracción
esto es, la capacidad para encapsular y aislar la información de diseño y
ejecución, esto es las técnicas orientadas a objetos son el producto de una
progresión que va desde los procedimientos, a los módulos, los tipos de datos
abstractos y los objetos.
Un tipo de datos abstracto es aquel definido por el programador que puede ser
manipulado de una manera similar a los definidos por el sistema.
Al igual que estos últimos, un tipo de dato abstracto corresponde a un conjunto (tal
vez tamaño infinito) ..00.. HECTORINN..00.. De valores lícitos y de un numero de
operaciones primitivas que pueden ejecutarse sobre ellos. El usuario puede crear
variables con valores que fluctúen dentro del conjunto aceptado y actuar sobre
dichos valores por medio de las operaciones definidas. Por ejemplo si tomamos
como ejemplo una pila y la definimos como n tipo de dato abstracto y las
operaciones como las únicas validas para ejecutar con ejemplares de la pila.
Para construir un tipo de dato abstracto, debemos ser capaces de:
• Exportar una definición de tipo
• Proporcionar un conjunto de operaciones que pueden usarse para manipular los
ejemplares del tipo.
• Proteger los datos asociados con el tipo de tal manera que se pueda operar con
ellos solo mediante la operación provista.
• Crear múltiples ejemplares del tipo.
La abstracción es la acción de separar mentalmente o bien la Representación de
las características esenciales de algo sin incluir antecedentes o detalles
irrelevantes, se le llama así por que la abstracción debe de encapsular todas las
propiedades esenciales de algo, en términos de programación esto quiere decir
que los objetos deben abstraer tanto los datos como los procesos. L a idea básica
es que un objeto esta definido por una lista de atributos abstractos (con
frecuencia, divididos en variables de instancia y variables de clase, tales como
tamaño, posición el color, los procedimientos.
Un tipo abstracto de datos es una abstracción, que describe un conjunto de
objetos en términos de una estructura de datos encapsulada u oculta y las
operaciones sobre esta estructura. Lo tipos de datos abstractos, al contrario de los
tipos de datos primitivos, pueden ser definidos por el usuario al construir una
aplicación, en lugar de ser construidos por el diseñador del lenguaje subyacente.
En las clases de programación los ADT incluyen métodos por ejemplo un ADT que
represente longitudes expresadas en unidades inglesas incluirá métodos para
sumar pies y pulgadas.
El encapsulamiento, o su equivalente, el ocultamiento de información, se refiere a
la practica de incluir dentro de un objeto todo lo que necesita, y de hacerlo,
además, de tal manera que ningún objeto necesite conocer nunca su estructura
interna.
1.2 Estructura de datos
1.2.1 Definición
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 interrelaciona miento 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 CLASIFICACIÓN DE ESTRUCTURAS DE DATOS:
Una estructura de datos es una clase de datos que se puede caracterizar por su
organización y operaciones definidas sobre ella. Algunas veces a estas
estructuras se les llama tipos de datos. Y en ellas encontramos las siguientes:
ESTRUCTURAS LÓGICAS DE DATOS:
En un programa, cada variable pertenece a alguna estructura de datos explícita o
implícitamente definida, la cual determina el conjunto de operaciones validas para
ella. Las estructuras de datos que se discuten aquí son estructuras de datos
lógicas. Cada estructura de datos lógica puede tener varias representaciones
físicas diferentes para sus almacenamientos posibles.
ESTRUCTURAS PRIMITIVAS Y SIMPLES:
Son primitivas aquellas que no están compuestas por otras estructuras de datos
por ejemplo, enteros, booleanos y caracteres. Otras estructuras de datos se
pueden construir de una o mas primitivas. Las estructuras de datos simples que
consideramos se construyen a partir de estructuras primitivas y son: cadenas,
arreglos y registros. A estas estructuras de datos las respaldan muchos lenguajes
de programación.
ESTRUCTURAS LINEALES Y NO LINEALES:
Las estructuras de datos simples se pueden combinar de varias maneras para
formar estructuras mas complejas. Las dos cases principales de estructuras de
datos son las lineales y las no lineales, dependiendo de la complejidad de las
relaciones lógicas que representan. Las estructuras de datos lineales incluyen
pilas, colas y listas ligadas lineales. Las estructuras de datos no lineales incluyen
grafos y árboles.
arreglos1
1.2.2.1 Lineales y no Lineales
Estructura de datos lineales: arreglos, listas enlazadas, pilas y colas.
Comprender, definir y utilizar os conceptos de las estructuras lineales – arreglos
unidimensionales, bidimensionales y arreglos paralelos. Conocer y utilizar las
operaciones mas usuales con arreglos unidimensionales y bidimensionales.
Manejar los términos punteros y arreglos de punteros. Definir una lista enlazada y
conocer y hacer uso de las operaciones mas comunes Definir y diferenciar las
estructuras de datos TAD pilas y colas. Utilizar cada una de estas estructuras en la
codificación de un algoritmo, utilizando el lenguaje de programación C++.
Arreglos: 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.
Listas enlazadas.
Simples.
Dobles.
Circulares
Multilistas
Clases para la implementación de Listas
Pilas.
Una pila (stack en inglés) es una lista
ordinal o estructura de datos en la que el
modo de acceso a sus elementos es de
tipo LIFO (del inglés Last In First Out,
último en entrar, primero en salir) que
permite almacenar y recuperar datos. Se
aplica en multitud de ocasiones en
informática debido a su simplicidad y
ordenación implícita en la propia estructura.
Colas.
Una cola es una estructura de datos, caracterizada por ser una secuencia de
elementos en la que la operación de inserción push se realiza por un extremo y la
operación de extracción pop por el otro.
También se le llama estructura FIFO (del inglés First In First Out), debido a que el
primer elemento en entrar será también el primero en salir.
Estructura de datos no lineales: árboles y grafos.
Diferenciar entre las estructuras árboles y grafos. Conocer la representación en
memoria de un árbol y de un grafo. Árboles.
• Árboles binarios. • Árboles de expresión. • Construcción de árbol binario. •
Recorrido de un árbol. • Aplicación de árboles binarios. • Árbol binario y de
búsqueda. • Opresiones con árboles binarios de búsqueda.
Grafos.
Un grafo (específicamente, grafo simple no dirigido) es un par G D .V; E/ D .V .G/;
V .E//, donde V es un conjunto finito no vacío de elementos llamados vértices y E
es un conjunto de pares desordenados de elementos distintos de V llamados
aristas. Es decir, una arista e 2 E tiene la forma fu; vg, donde u; v 2 V y u 6D v.
La terminología en teoría de grafos varía muchísimo: prácticamente no hay dos
textos que adopten la misma. En particular, los vértices de un grafo también
reciben a veces el nombre de nodos, y las aristas arcos, ejes o líneas.
1.2.2.2 Dinámicas y Estáticas
Datos estáticos: su tamaño y forma es constante durante la ejecución de un
programa y por tanto se determinan en tiempo de compilación. El ejemplo típico
son los arrays. Tienen el problema de que hay que dimensionar la estructura de
antemano, lo que puede conllevar desperdicio o falta de memoria. Datos
dinámicos: su tamaño y forma es variable (o puede serlo) a lo largo de un
programa, por lo que se crean y destruyen en tiempo de ejecución. Esto permite
dimensionar la estructura de datos de una forma precisa: se va asignando
memoria en tiempo de ejecución según se va necesitando.
Descargar