Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 14-O Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 1 / 14
El modelo de programación 1 El modelo de programación Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 2 / 14
Tipos de datos concretos I Tipos de datos concretos Un tipo de dato es un conjunto de valores y un conjunto de operaciones sobre esos valores. Los principales tipos de datos en los lenguajes más populares son: Booleanos. Para almacenar los valores true y false. Caracteres. Para almacenar los caracteres del código ASCII o UNICODE. Enteros. Para almacenar sólo valores enteros comúnmente en 4 (int) y 8 bytes (long long). Reales. Para almacenar números con decimales. Comúnmente de 64 bits según el estándar IEEE 754. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 3 / 14
Tipos de datos concretos II Tipos de datos concretos Un valor real generalmente se compone de un bit para el signo, algunos bits para el exponente y el resto para la mantisa. Por ejemplo el tipo de dato float de C utiliza 1 bit para el signo, 8 para el exponente y 23 para el valor significante. Las expresiones generalmente se escriben con notación infija. Si una expresión contiene más de un operador la precedencia del operador indica el orden en que son aplicados. La conversión de tipo ocurre cuando en una expresión existen valores de diferentes tipos, de manera que el resultado es llevado al tipo más inclusivo. Por ejemplo 1+2.5 es llevado a 3.5. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 4 / 14
Tipos de datos concretos Tipos de datos concretos III Las comparaciones comúnmente devuelven un valor true (1) o falso (0). igual == diferente! = menor que < menor o igual <= mayor que > mayor o igual >= Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 5 / 14
Sentencias I El modelo de programación Sentencias Una sentencia o instrucción permite crear o manipular variables y controlar el flujo de ejecución de tales operaciones. Las sentencias más comunes son: Declaraciones. Permiten crear variables de un cierto tipo mediante identificadores. int variable; double flotante; Asignaciones. Asocian un valor a una variable. uno = dos + 10; Declaraciones con asignación. Crean e inicializan una variable con algún valor. int uno = 1; Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 6 / 14
Sentencias Sentencias II Asignaciones implícitas. Son las formas abreviadas de ciertas operaciones. uno += 2; Condiciones. Permite ejecutar un cambio sobre el flujo de un programa. if(uno > dos) mayor = uno; else mayor = dos; También es común hacer una condición en una sola línea: mayor = uno > dos? uno : dos; Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 7 / 14
Sentencias III El modelo de programación Sentencias Ciclos. Permiten un cambio más profundo en el flujo de ejecución de un programa creando pasos repetitivos. while(condicion = true){ hacer algo; } for(inicializacion; condicion = true; incremento){ hacer algo; } do{ hacer algo; }while(condicion = true) El while y el for pueden nunca ejecutarse mientras que el do-while siempre se ejecuta al menos una vez. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 8 / 14
Sentencias IV El modelo de programación Sentencias Cortar (break). Permite cortar un ciclo (for, while, do-while). while(condicion = true){ hacer primeros pasos; if(condicion = true) break; //terminar ciclo hacer ultimos pasos; } Continuar (continue). Avanza a la siguiente iteración de un ciclo (for, while, do-while). while(condicion = true){ hacer primeros pasos; if(condicion = true) continue; //continuar ciclos hacer ultimos pasos; } Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 9 / 14
Sentencias V El modelo de programación Sentencias Llamadas a métodos o funciones. resultado1 = suma(a, b); ClaseOperaciones oper; resultado2 = oper.suma(a, b); Regresar. Ocasiona el regreso desde algún método. int suma(int a, int b){ return a+b; } int mayor(int a, int b){ if(a > b) return a; return b; } Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 10 / 14
Sentencias VI El modelo de programación Sentencias Macros. En C/C++ el uso de macros es muy común. Una macro es un fragmento de código al que se le da un nombre. Cuando dicho nombre es utilizado, éste es reemplazado con su código. #define MAXTAM 1000 #define MAXIMO(a, b) ((a) (b)? (a) : (b)) #define IMPRIME(a) printf( %s, #a); El tema de macros es muy amplio y puede ser revisado a detalle en https://gcc.gnu.org/onlinedocs/cpp/macros.html Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 11 / 14
Tipos de datos abstractos I Tipos de datos abstractos Una estructura es un conjunto de elementos agrupados mediante el mismo nombre. Dichos elementos se conocen como miembros. struct point { int x, y; }; point uno, dos; Un tipo de dato abstracto es aquel tipo de dato cuya representación interna esta oculta para el cliente. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 12 / 14
Tipos de datos abstractos II Tipos de datos abstractos Un objeto es una entidad que puede tomar un valor de tipo de dato. Las tres principales características de un objeto son: estado, identidad y comportamiento. El cliente es un programa que usa un tipo de dato. Un cliente no necesita saber como esta implementado un tipo abstracto de dato para poder utilizarlo. Cada tipo de dato es almacenado como un objeto. Generalmente para crear una instancia de un objeto se usa la palabra reservada new, auunque en el caso de C++ no es necesario. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 13 / 14
Tipos de datos abstractos III Tipos de datos abstractos Persona p = new Persona( Sergio ); (Java, C#) Persona p( Sergio ); (C++) Generalmente los objetos poseen métodos asociados cuyo propósito es operar sobre los datos. De forma general, el uso de objetos es similar al de los tipos concretos, pues pueden ser utilizados como argumentos de funciones, especificados como valores de retorno, arreglos, etc. Un objeto de uso común en C++ es la clase string. En el curso de Programación Orientada a Objetos se toca más a fondo este tema. Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura de Datos 14 / 14