1.18k likes | 1.94k Views
Tema 4. Tipos de Datos y Objetos Alumnos: Mónica Patricia Padilla Ibarra. Honorato Saavedra Hernández. Carlos Eugenio Ojeda Nava. Objetivos. Propiedades Tipos de datos elementales Tipos de datos estructurados. Tipos y Objetos: Propiedades. Propiedades:
E N D
Tema 4 Tipos de Datos y Objetos Alumnos:Mónica Patricia Padilla Ibarra. Honorato Saavedra Hernández. Carlos Eugenio Ojeda Nava.
Objetivos • Propiedades • Tipos de datos elementales • Tipos de datos estructurados
Tipos y Objetos: Propiedades • Propiedades: • Almacenamiento de datos en la computadora actual: • Memoria, registros y almacenamientos externos, tienen una estructura sencilla agrupados en palabras o bytes. • Almacenamiento en una computadora virtual: • Organización más compleja, con arreglos, stacks, números, caracteres, cadenas, y otras estructuras de datos que existen durante la ejecución del programa. • Por tal razón es necesario emplear el término objeto de datos para referirnos a la corrida en tiempo de ejecucíon de un grupo o más estructuras de datos en una computadora virtual.
Tipos y Objetos: Propiedades • Un objeto de datos representa a un contenedor de valores de datos. Uno objeto de datos se caracteriza por un set (o conjunto) de atributos. El más importante de ellos es el tipo de dato. • El tipo de datos es una clase de objeto de datos, junto con un set de operaciones para su creación y manipulación. Los elementos básicos para especificar de un tipo de dato son: 1.- Los atributos que distingue al tipo del objeto de datos 2.- El valor que puede tener el objeto de datos, y 3.- Las operaciones que define la posible manipulación del objeto de datos.
Tipos y Objetos: Propiedades Un objeto de datos de variable simple con el valor de 17.
Tipos y Objetos: Propiedades • En los siguientes subtemas se analizarán con más detalles estos aspectos. A continuación mostramos un par de ejemplos para mostrar lo antes expuesto: #include <stdio.h> int radio, area; main() { printf(“Teclea el radio :”); scan(“%d”,&radio); area=3.1416*radio*radio; printf(“\n\nArea = %d, area); return 0; } End Sub
Tipos y Objetos: Propiedades • Cabe señalar que Java, por ser descendiente de las premisas de C y C++ en lo referente a estos temas de exposición. Decidimos mostrar un ejemplo pequeño en Visual Basic: Private Sub Command1_Click() Dim Primero, Segundo ´Declaración de variables Primero=Text1.Text Segundo=Text2.Text EndSub
Tipos Elementales De Datos • Tipos de datos numéricos • Enumeraciones • Booleanos • Caracteres • Internacionalización
Tipos De Datos Numéricos • Enteros • Subintervalo • Números reales de punto flotante • Números reales de punto fijo • Otros tipos de datos numéricos
Enteros • Especificación • Operaciones aritméticas BinOp : entero x entero —> entero UnaryOp : entero —> entero • Operaciones relacionales RelOp : entero x entero —> booleano • Asignación entero x entero —> vacío entero x entero —> entero
Enteros • Implementación
Ejemplos • Ada Next : Integer; One, Two : Integer :=1; Two := One + 1; • ALGOL integer x,y,z; x := 1; • FORTRAN INTEGER H, I, J H = 1
Ejemplos • COBOL 77 X PIC 99999. 77 Y PIC S999. ADD 1 TO X. ADD 1,X GIVING Y. SUBTRACT 1 FROM Y. MULTIPLY 3 BY H GIVING Y. • PL/1 DECLARE X FIXED BINARY;
Ejemplos • C int x,y; X = 0; y = -1;
Subintervalo • Especificación • Serie de valores enteros dentro de cierto intervalo restringido • Se puede designar como un subtipo del tipo base entero • Implementación • Requerimientos de almacenamiento más reducidos • Mejor verificación de tipos
Ejemplos • Ada Amount : Integer RANGE 0 .. 100; Type Year_type IS RANGE 1901 .. 2099; Current_Year, Year_Of_Birth : Year_Type;
Números Reales de Punto Flotante • Especificación • Misma aritmética relacional y operadores de asignación que los enteros • Algunas veces las operaciones booleanas están restringidas
Números Reales de Punto Flotante • Implementación
Números Reales de Punto Flotante • Ejemplo de formato de IEEE • La norma 754 de IEEE especifica tanto una norma de 32 bits como una de 64 bits para números de punto flotante. • Los números se componen de tres campos • S : un campo de signo de un bit. 0 es positivo • E : un exponente en notación exceso 127 • M : una mantisa de 23 bits
Números Reales de Punto Flotante +1 = 2^0 x 1 = 2^(127-127) x (1).0 (binario) 0 01111111 000000 ... +1.5 = 2^0 x 1.5 = 2^(127-127) x (1).1 (binario) 0 01111111 100000 ... -5 = -2^2 x 1.25 = 2^(129-127) x (1).01 (binario) 1 10000001 010000 ...
Ejemplos • Ada TYPE Distance_Type IS DIGITS 6 RANGE 0.0 .. 10.0; x,y : Distance_Type; • ALGOL real x,y,z; x := 0.5; y := -1; z := -0.255510-2
Ejemplos • FORTRAN REAL H, I, J DOUBLE PRECISION K, L, M H = -.551E-2 L = 22.33D4 • PL/1 DECLARE X REAL FLOAT DECIMAL (6); • C float x,y; x = 5.43; y = -435435e34;
Números Reales de Punto Fijo • Especificación • Implementación
Ejemplos • Ada TYPE Average_Type IS DELTA 0.001 RANGE 0.0 .. 1.0; Category : Average_Type DELTA 0.100; • COBOL 77 X PIC 9999V99. 77 Y PIC S999V9. • PL/1 DECLARE X REAL FIXED DECIMAL (7,2);
Otros Tipos De Datos Numéricos • Números Complejos Un número complejo se compone de un par de números que representan las partes real e imaginaria del número • Números Racionales Un número racional es el cociente de dos enteros
Ejemplos • FORTRAN COMPLEX H, I, J H = (3.2,1.5E3) • PL/1 DECLARE X COMPLEX;
Enumeraciones • Especificación Una enumeración es una lista de valores distintos • Implementación
Ejemplos • Ada TYPE Suit_Type IS (Clubs,Diamonds,Hearts,Spades); Longest_Suit : Suit_Type := Diamonds; TYPE Animales IS (Perro,Gato,Raton); TYPE Herramientas IS (Llave,Gato,Martillo); Variable1 : Animales; Variable1 := Animales’(Gato); type Day is (Mon, Tue, Wed, Thu, Fri, Sat, Sun); type Gender is (M, F); type Level is (Low, Medium, Urgent); type Color is (White, Red, Yellow, Green, Blue, Brown, Black); type Light is (Red, Amber, Green); -- Red and Green are overloaded
Ejemplos type Hexa is ('A', 'B', 'C', 'D', 'E', 'F'); type Mixed is ('A', 'B', '*', B, None, '?', '%'); subtype Weekday is Day range Mon .. Fri; subtype Rainbow is Color range Red .. Blue; -- the Color Red, not the Light • C enum Color {rojo, verde, azul, negro}; enum Poligono {triangulo = 3, cuadrado = 4, pentagono =5}; Color c=verde;
Booleanos • Especificación El tipo booleano de datos consiste en objetos de datos que tienen uno de dos valores, cierto o falso • Operaciones y : booleano x booleano —> booleano o : booleano x booleano —> booleano no : booleano —> booleano • Implementación
Ejemplos • Fortran LOGICAL K, L, M M = .TRUE. PAGEND = .FALSE. PRNTOK = LINE .LE. 132 .AND. .NOT. PAGEND ABIG = A.GT.B .AND. A.GT.C .AND. A.GT.D • Ada TYPE Boolean IS (False, True); --predefinida x : Boolean; • ALGOL Boolean x,y; x := true; y := false;
Ejemplos • C #define TRUE 0 int x; x = TRUE; • Scheme (not #t) => #f (not 3) => #f (not (list 3)) => #f (not #f) => #t
Caracteres • Especificación Un tipo de datos de caracter proporciona objetos de datos que tienen un solo caracter como su valor • Implementación
Ejemplos • Ada TYPE Character_Type IS (‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’); micaracter : Character_Type; type Roman_Digit is ('I', 'V', 'X', 'L', 'C', 'D', 'M'); • COBOL 77 X PIC AAAAAAAAAA. 77 Y PIC A(15). 77 Z PIC XXXXXXXX. • PL/1 DECLARE X CHARACTER; • C char x,y[20];
Internacionalización • Órdenes de clasificación • Formatos de fecha específicos del país • Formatos de hora específicos del país • Husos horarios • Sistemas ideográficos • Moneda
Otros Ejemplos • Complejos en C++ class Complejo{ intreal; int imaginaria; public: void set(int x, int y){ real = x; imaginaria = y; } Complejo operator+(Complejo a); }; Complejo operator+(Complejo a){ Complejo temp; temp.real = real + a.real; temp.imaginaria = imaginaria + a.imaginaria; return temp; }
Otros Ejemplos main(){ Complejoi,j,k; i.set(2, 4, 5); j.set(5, 6, 8); k = i + j; }
Tipos Estructurados • Son objetos de datos construido como un agregado de otros objetos de datos, llamados Componentes. • Sus componentes pueden ser: • Elementales. • Estructuras de datos.
Implicaciones de Tipos de Estructuras de Datos • Especificación de tipos. • Implantación de tipos. • Declaración y verificación de tipos. • Especificación e implantación de información estructural. • Gestiones de almacenamiento.
Atributos para la Especificación de Tipos de Estructuras de Datos Los atributos principales son: • Número de componentes. • Estructuras de tamaño fijo. • Estructuras de tamaño variable. • Tipo de cada componente. • Estructuras homogéneas. • Estructuras heterogéneas. • Nombres que se deben usar para seleccionar componentes. • Número máximo de componentes. • Organización de los componentes.
Operaciones sobre Estructuras de Datos • Operaciones de selección de componentes. • Selección directa. • Selección secuencial. • Operaciones con estructuras de datos completas. • Inserción y eliminación de componentes. • Creación y destrucción de estructuras de datos. Nota: La operación de selección de (o el acceso a) un componente requiere de dos operaciones: • Refinamiento. • Selección.
Implantación de Tipos de Estructuras de Datos • Consideraciones de los tipos elementales. • Representación de almacenamiento: • Secuencial. • Vinculada. • Implantación de operaciones sobre estructuras de datos: • Representación secuencial. • Representación vinculada. • Gestiones de almacenamiento: • Basura. • Referencias desactivadas.
Declaración y Verificación de Tipos de Estructuras de Datos • Tomar en cuenta las consideraciones de los tipos elementales. • Para la verificación de tipos se deben considerar las operaciones de selección de componentes. • Existen dos problemas principales: • Existencia de un componente seleccionado. • Tipo de un componente seleccionado.
Vectores y Arreglos • Vector • Es una estructura de datos integrada por un número fijo de componentes del mismo tipo organizados como una serie lineal simple. • Es un arreglo unidimensional o arreglo lineal. • Arreglo • Un arreglo bidimensional es una matriz compuesta de filas y columnas. • Un arreglo tridimensional se compone de planos de filas y columnas. • Un arreglo multidimensional, se construye a partir de arreglos de dimensiones menores.
Atributos de un Vector • Número de componentes. • Implícito en un rango de intervalos de subíndices. • Se determina para cada dimensión. • Tipo de datos de cada componente. • Un solo tipo de dato para todos los componentes. • Subíndice de selección de cada componente. • Generalmente se especifica como un intervalo de enteros, o una enumeración. • Identifican la posición de cada componente.
Operaciones Sobre Vectores • Operaciones permitidas: • Seleccionar un componente. • Crear y destruir vectores. • Asignación de componentes a un vector. • Operaciones aritméticas sobre parejas de vectores. • Suma y Resta de vectores. • Operaciones no permitidas: • Inserción y eliminación de componentes.
Implantación de Vectores • Representación de almacenamiento secuencial. • Representación de almacenamiento empacado. • Representación de almacenamiento no empacado. • Operaciones con vectores completos. Dirección base del vector Descriptor (vector de arreglos) Representación de almacenamiento para componentes.
Representación de Almacenamiento Secuencial de Vectores • Representación de almacenamiento secuencial. • Forma más apropiada. • Los componentes se guardan en forma secuencial. • Se incluye un descriptor para guardar los atributos necesarios.
Fórmula de Acceso a Componentes de Vectores • Para acceder a los componentes se utiliza la siguiente fórmula: Valor_i ( A [ i ] ) = + ( i – Li) * E = ( - Li * E ) + ( i * E ) = k + ( i * E ) Donde: A es el nombre del arreglo. i es el subíndice del componente a acceder. es la dirección base del arreglo. E es el tamaño de cada componente. Li es el límite inferior del intervalo de subíndices.