Departamento de Informática Departamento de Informática Universidad Técnica Federico Santa María Universidad Técnica Federico Santa María Lenguajes de Programación Lenguajes de Programación Introducción • Cómo calzan los tipos de datos con problemas del mundo real? • Evolución de los tipos: 2.3 Tipos de Datos Simples • • • • • Primitivos, cadenas de caracteres, definidos por el usuario 1 RMA/2000 Departamento de Informática Universidad Técnica Federico Santa María Números enteros y reales Arreglos y Registros Cadenas de Caracteres Definidos por el usuario Tipo de dato abstracto RMA/2000 II- 2 Departamento de Informática Lenguajes de Programación Tipos de Datos Primitivos Universidad Técnica Federico Santa María Lenguajes de Programación Cadena de Caracteres (String) • Principalmente para la comunicación de la máquina con el usuario y manipulación de textos • Mejora la facilidad de escritura • ¿Es una cadena un tipo primitivo? • Numérico – Entero (e.g. C permite diferentes tipos de enteros: signed, unsigned, short, long) – Punto flotante (e.g C permite float y double) – Decimal (típicamente 4 bits por dígito decimal) • Booleano (típicamente ocupa un byte) • Carácter (típicamente un byte y código ASCII; – Algunos lenguajes lo proveen como tipo (ADA, Java y Perl ) – Otros sólo como un arreglo de caracteres (C, C++ y Pascal) • ¿Puede el largo de la cadena variar dinámicamente? Java usa Unicode con 2 bytes) RMA/2000 II- 3 Departamento de Informática Universidad Técnica Federico Santa María RMA/2000 Departamento de Informática Lenguajes de Programación Universidad Técnica Federico Santa María Strings: Operaciones Básicas • • • • II- 4 Lenguajes de Programación Ejemplo de String en C Asignación Comparación Concatenación Largo RMA/2000 II- 5 RMA/2000 II- 6 Departamento de Informática Departamento de Informática Universidad Técnica Federico Santa María Lenguajes de Programación Strings: Calce de Patrones (Pattern matching) Universidad Técnica Federico Santa María Lenguajes de Programación Ejemplo de Calce de Patrones en Perl • Lenguajes que incorporan facilidades: Snobol4 y Perl. • Perl hace uso de expresiones regulares – Ejemplo : /[A-Za-z][A-Za-z\d]+/ permite calzar un identificador RMA/2000 II- 7 Departamento de Informática RMA/2000 II- 8 Departamento de Informática Universidad Técnica Federico Santa María Lenguajes de Programación Universidad Técnica Federico Santa María Diseño de String Lenguajes de Programación Tipos Ordinales • Diseño de string considera: • Un tipo ordinal es aquel que puede ser asociado a un número natural (ordenados) • Tipos ordinales primitivos: – Largo estático (Fortran77, Pascal y ADA) – Largo dinámico limitado (e.g. C y C++) – Largo dinámico (e.g. Snobol y Perl) – entero, caracter y booleano • Último es el más flexible, pero es más costoso de implementar y ejecutar • Tipos ordinales definidos por el usuario: – 1) Enumerados – 2) Subrangos RMA/2000 II- 9 Departamento de Informática RMA/2000 Departamento de Informática Universidad Técnica Federico Santa María Lenguajes de Programación Universidad Técnica Federico Santa María Tipo Enumerado Lenguajes de Programación Ejemplo : C y C++ • Se enumeran todos los posibles valores a través de constantes literales. • Relación de orden permite definir operadores relacionales y predecesor y sucesor. • Mejoran facilidad de lectura y fiabilidad <enum-type> ::= enum [<identifier>] { <enum-list> } <enum-list> ::= <enumerador> | <enum-list> , <enumerador> <enumerador> ::= <identificador> | <identificador> = <constant-exp> enum color {rojo, amarillo, verde=20, azul}; color col = rojo; color* cp = &col; • Normalmente no se usan en E/S • Algunos lenguajes como ADA permiten sobrecarga de constantes literales RMA/2000 II- 10 if (*cp == azul) // ... II- 11 RMA/2000 II- 12 Departamento de Informática Lenguajes de Programación Universidad Técnica Federico Santa María Tipo Subrango • Subsecuencia contigua de un tipo ordinal • Introducido por Pascal y usadas en Modula2 y ADA • Mejora lectura y fiabilidad • Ejemplo: Pascal type mayuscula indice RMA/2000 = ´A´..´Z´; = LUNES .. VIERNES; II- 13