Sie sind auf Seite 1von 13

Instituto Tecnolgico de Acapulco. Unidad I - Tipos de datos definidos por el usuario.

Materia: Tpicos Selectos de Programacin.

Profesor: Bedolla Solano Silvestre. Hora: 15:00 a 17:00 P.M.

September 10, 2013 Autores: Ricardo Morales Romn Garcia Lorenzo Adilene Jesus Angel Godoy Hernandez

ndice. Contenido.
Introduccin.

Pg.
2

Unidad 1 Tipos de datos definidos por el usuario


1.1 Agregacin de datos (struct). 1.2 Uniones de datos (union) 1.3 Registros variantes. 1.4 Tipos de datos enumerados. 1.5 Manejo de bits. 1.6 Campos de bits. 1.7 Operaciones con Bits (AND, OR, NOT, XOR).

3 5
6 7 8

9
11 11

Introduccin
En esta unidad se dar a conocer los diferentes conceptos bsicos de los diferentes tipos de datos definidos por el usuario mediante los temas: Agregacin de datos (struct). Uniones de datos (union). Registros variantes. Tipos de datos enumerados. Manejo de bits. Campos de bits. Operaciones con Bits (AND, OR, NOT, XOR).

Se expondrn caractersticas ejemplos y conceptos de cada uno de los temas para as con ello ayudar al refortalecimiento y conocimiento de esta unida mediante su informacin para as obtener ptimos resultados al momento de manejarse el alumno dentro de la materia de tpicos selectos de programacin. Se expondrn caractersticas ejemplos y conceptos.

UNIDAD 1 - TIPOS DE DATOS DEFINIDOS POR EL USUARIO


Que es un tipo de dato definido por el usuario (DDU)? Es un atributo de una parte de los datos que indica al ordenador (y/o al programador) algo sobre la clase de datos sobre los que se va a procesar. Para que se pueden utilizar los DDU? Puede representar un conjunto de enteros de 32 bits cuyo rango va desde el 2.147.483.648 al 2.147.483.647, as como las operaciones que se pueden realizar con los enteros, como la suma, resta y multiplicacin. Como se conforma un DDU? Estos de componen de dos diferentes tipos: Tipo simple: Enumerado subrango Tipo estructurado: Conjunto Tipos simple. Enumerado

Son aquellos en los que el programador establece los valores que van a poder tomarlas variables al declarar el tipo mediante la especificacin de una lista de identificadores vlidos. Los identificadores han de comenzar en carcter, y no se pueden repetir en la enumeracin de tipos. Ejemplo: TypeEstaciones = (primavera, verano, otoo, invierno); Colores (rojo, amarillo, verde, azul, violeta); subrango.

Es un subconjunto de un tipo ordinal (enteros, boolean, carcter y enumerado) que se especifica indicando el primero y el ltimo elemento del conjunto.
3

Ejemplo: Type Identificador=primer elemento ltimo elemento; Tipo estructurado. Conjunto

Es un tipo de dato estructurado en el que las variables pueden almacenar varios valores de un tipo simple, al cual se le denomina tipo base. La declaracin de un tipo conjunto se hace: Type Conjunto = SET of tipobase ; Var c :conjunto ; Caractersticas: Permite la creacin de tipos de datos abstractos definidos por el usuario: Estructuras Uniones Listas Etc.

1.1 Agregacin de datos (struc)


La palabra clave struct es usada para definir una estructura, es una forma verstil de trabajar con fichas de informacin. Este tipo de dato se suele utilizar en la encapsulacin de pequeos grupos de variables relacionadas. En s mismo, es muy parecido a una clase en la programacin orientada a objetos, solo que los datos struct no almacenan mtodos, solo sirven como manera de agrupacin. Una declaracin de estructura define un tipo, y as, es posible tambin definir variables de este nuevo tipo.

Ejemplo: // Publid Struct Alumno { public String Nombre; public int Edad; public char Sexo; public DateTime Fecha; };// Una ves que hemos declarado el tipo de dato Struct, podemos crear variables de este nuevo tipo de dato. Alumno alumnos; alumnos.Nombre=Andres; alumnos.Edad=19; alumnos.Sexo=M; alumnos.Fecha=new DateTime(13/05/89);

1.2 Uniones de datos (union)


Este tipo de dato (unin) es similar a la estructura, pero no idntico; una de sus diferencias ms remarcables es que la unin almacena las variables en un solo campo solapndose unos a otros, mientras que en la estructura, cada variable cuenta con su campo almacenndose unos detrs de otros. As pues, las uniones sirven para ahorrar espacio en memoria, ya que el espacio que utilizan es igual al del dato ms largo. Como todos los miembros son almacenados en el mismo espacio de memoria, existe el riesgo de la perdida de informacin, o el cambio de valor indeseado de algunas variables.

Ejemplo: { public char chval; public int intval; } Ejemplo: valores=new ejemplo(); valores.intval=65; console.writeline(chval:{0},valores.chval); Al darle valor al entero de 65, como el valor del carcter est en la misma localidad de memoria, a la hora de imprimir el valor del carcter se imprime el carcter correspondiente al nmero segn el cdigo ASCII que en este caso sera una A.

1.3 Registros variantes


Los registros variantes son una especie de sentencia case dentro de un registro y son muy tiles cuando tenemos ciertos atributos que sabemos de antemano que slo usaremos en ciertas situaciones. Por tanto, los registros variantes son muy eficientes y seguros, porque slo permiten al programador realizar operaciones que tengan algn significado dentro del contexto dado y que sean permisibles dentro del registro. Principales caractersticas: Mezcla de Uniones, productos y enumerado Permite expresar distintas formas par valores de un mismo tipo. Cada forma puede tener un nmero distinto de componentes.

Ejemplo: Tipo para representar cuatro clases de figuras. type Radio = Float type Lado = Float type Base = Float type Altura = Float data Figura = Circulo Radio Cuadrado Lado Rectngulo Base Altura Punto deriving Show un Circulo : : Figura un Circulo = Circulo 25 un Rectngulo : : Figura un Rectngulo = Rectngulo 10 15 lista Figuras : : [Figura] lista Figuras = [Circulo 15; Cuadrado 3; Rectngulo 5 6] rea : : Figura ! Float rea (circulo r) = pi r ^ 2 rea (Cuadrado l) = l ^ 2 area (Rectangulo b h) = b h rea Punto = 0
7

1.4 Tipos de datos enumerados.


Se componen de una lista de identificadores encerrados entre parntesis y separados por comas. Son ordinales ya que llevan asociado un nmero entero, empezando por el primero, al que se le asigna el O, al segundo un 1, y as sucesivamente, por lo que no es independiente el orden de declaracin. Un dato enumerado puede ser la direccin en la que se mueve un auto. Los valores son: {norte, sur, este, oeste} En este caso: norte valdria 1, sur valdria 2, este valdria 3 y oeste valdria 4

Declaracin: Type Enumerado = (norte1,sur2,este3,oeste4); Como podemos apreciar, es simplemente un tipo de dato entero que bien puede tomar cualquier valor distinto de 1, 2,3 o 4 y que si no es correctamente validado dentro de las rutinas del mtodo de asignacin, puede derivar en problemas con la consistencia de los datos. Caractersticas: Los tipos enumerados se utilizan para una mayor legibilidad y para limitar el nmero de valores que va a poder tomar una determinada variable. No es posible leer directamente valores de tipo enumerado ni desde teclado, ni desde un archivo de texto. Tampoco se pueden escribir en pantalla ni en archivos de texto (secuenciales) variables de este tipo. Solamente se pueden utilizar para manipulacin interna de datos.

Operaciones que admite:


De relacin (>,<,<>,>=,<=,=...) De asignacin Ord (e) ; Pred (e) ; Succ (e) ;

Las variables de tipo enumerado se emplean en Registros Variantes, que se utilizan para ahorrar espacio tanto en la memoria del ordenador (arrays) como en disco (ficheros).
8

1.5 Manejo de Bits


El manejo de bits hace referencia al manejo de algunos datos o variables, pero a un nivel de bit, es decir, si se est hablando de una variable de tipo char o de tipo int, a la hora de manejarla no se les har referencia como char o como int, sino como una serie de 0s y 1s para modificarlos numero por nmero, siendo el resultado algo que no se esperara de manejar los datos como lo que aparentemente son. El manejo de bits es muy til para diversas tareas, como la codificacin de archivos, o en materia de seguridad y consistencia de los datos. El manejo de bits es posible gracias a una serie de operadores muy parecidos a los de la lgica, de los cuales se har mencin: Existen seis operadores para manejo de bits: 1. & AND de bits 2. | OR inclusivo de bits 3. ^ OR exclusivo de bits 4. << corrimiento a la izquierda 5. >> corrimiento a la derecha 6. ~ complemento a uno (unario) AND (&) La funcin AND activa los bits resultantes cuando los bits de los dos operandos son 1, de otra forma el resultado es =. Entonces si se coloca en lnea los dos operandos y se realiza la funcin AND, se puede ver que los dos bits de mayor peso (los bits situados ms a la izquierda de cada nmero) son 1, as los bits resultantes de cada uno es 1. Los dos bits de menor peso se evalan a 0 porque al menos uno de los dos operandos es 0: Ejemplo:
1101 &1100 1100

OR La operacin OR inclusiva (|) significa que si uno de los dos operandos es 1 el resultado es 1. Ejemplo: 100 011 111 El OR exclusivo significa que si los dos operandos son diferentes el resultado es 1, de otra forma es resultado es 0. Ejemplo: 011 101 110 Corrimiento de bits Tanto el operador de corrimiento a la izquierda () como el operador de corrimiento a la derecha (), solo desplazan los bits del operando de la izquierda el nmero de posiciones indicadas por el operador de la derecha. Los desplazamientos ocurren en la direccin indicada por el propio operador. Complemento a uno El operador unario ~ da el complemento a uno de un entero; esto es, convierte cada bit 1 en un bit 0 y viceversa. Por ejemplo Operador Resultado 10 01

10

1.6 Campos de Bits.


Los campos de bits, o simplemente campos, son grupos de un nmero determinado de bits, que pueden o no tener un identificador asociado. Representan un artificio que permite utilizar miembros de tamao arbitrario en estructuras, uniones y clases; independiente de la posibilidad que proporcionan los tipos bsicos (carcter, char, enteros, int. booleanos bool enumeraciones enum cuyo tamao est predeterminado por el lenguaje. Por ejemplo, en ocasiones es necesario almacenar semforos (flags) con determinados estados del programa, para los que en realidad solo hace falta un bit, pero incluso una variable bool ocupa un octeto. Los campos de bits permiten utilizar cada bit de un octeto independientemente, aumentando as su capacidad de representacin

1.7 Operaciones de Bits.


La lgica booleana es importante en el diseo de circuitos y tiene un paralelo en la lgica de programacin. Las instrucciones para lgica booleana son AND, OR, XOR y NOT, que pueden usarse para poner bits en 0 o en 1 y para manejar datos ASCII con propsitos aritmticos. El formato general para las operaciones booleanas es: [etiqueta :] | operacin | {registro/memoria}, {registro/memoria/inmediato}| El primer operando se refiere a un byte o palabra en un registro o memoria y es el nico valor que es cambiado. El segundo operando hace referencia a un registro o a un valor inmediato. La operacin compara los bits de los dos operandos referenciados y de acuerdo con esto establece las banderas CF, OF, PF, SF y ZF. AND. Si ambos bits comparados son 1, establece el resultado en 1. Las dems condiciones dan como resultado 0. OR. Si cualquiera (o ambos) de los bits comparados es 1, el resultado es 1. Si ambos bits estn en 0, el resultado es 0. XOR. Si uno de los bits comparados es 0 y el otro 1, el resultado es 1. Si ambos bits comparados son iguales (ambos 0 o ambos 1), el resultado es 0.

11

Las operaciones siguientes AND, OR y XOR ilustran los mismos valores de bits como operandos: AND 0101 0011 Resultado: 0001 OR XOR

0101 0101 0011 0011 0111 0110

Es til recordar la siguiente regla: el empleo de AND con bits 0 es 0 y el de OR con bits 1 es 1. Ejemplos de operaciones booleanas. Para los siguientes ejemplos independientes, suponga que AL contiene 11000101 y el BH contiene 01011100: 1.- AND AL,BH ; Establece AL a 0100 0100 11000101 01011100 01000100 2.- OR BH,AL ; Establece BH a 1101 1101 01011100 11000101 11011101 3.- XOR AL,AL ; Establece AL a 0000 0000 01011100 01011100 00000000
12

Das könnte Ihnen auch gefallen