Práctica 8. TIPOS DE DATOS ESTRUCTURADOS 2 Tuplas o Registros 2 sesiones OBJETIVOS: 9 Conocer la importancia que tienen los tipos de datos compuestos como las tuplas. 9 Declaras, definir y utilizar los tipos de datos compuestos. 9 Conocer las operaciones posibles a realizar sobre una tupla. El término registros es un concepto que se maneja continuamente en la vida diaria; y así estamos oyendo frecuentemente frase como: oficina de registros, registros de personal, registro de empresas, registro de estudiantes, etc. Bajo el punto de vista de la programación el concepto de registro es también de gran utilidad; y en principio lo definiremos (después daremos una definición más correcta) como una colección fija de información relativa a un solo objeto, donde unas veces nos referimos a la información como un todo, y otras veces nos referimos por un nombre, a una parte de esa información. Cada una de estas partes o items elementales del registro de denomina campo. Así por ejemplo una fecha compuesta de día, mes y año, se puede considerar como un registro (fecha) compuesto de tres componentes (campos): día, mes y año. Igualmente, la información siguiente relativa a una persona: 1) nombre 2) apellidos 3) fecha de nacimiento 4) sexo 5) estado 6) número de teléfono Se puede considerar como un registro de seis componentes o campos. Es muy importante distinguir muy bien entre los conceptos : tupla (registro) y tabla (array). 8-1 8-2 Fundamentos de la Programación I La primera diferencia que existe entre ellos es: los campos de un registro pueden tener diferentes tipos, mientras que los elementos de un vector deben ser todos del mismo tipo. La segunda diferencia también fundamental es que, los campos de un registros, deben seleccionarse por nombre, mientras que los elementos de un vector se seleccionan a través de subíndices y así por ejemplo tendrá sentido referirnos al j-ésimo elemento de un array, mientras que en el caso de un registro no podremos referirno al j-ésimo campo, por su orden o situación dentro del registro, sino por su nombre. Como definición más formal de registro tendríamos que es una estructura compuesta por un número fijo de componentes, llamados campos, donde cada campo viene definido por su tipo y su identificador: el identificador de campo. En pseducódigo lo definiremos de la siguiente manera: tupla identificador1 : Tipo1; identificador2 : Tipo2; identificador3 : Tipo3; ... identificadorN : TipoN; ftupla Definir las estructuras de datos necesarias para almacenar en memoria la información de 76 alumnos. De cada alumno se almacenarán los siguientes datos: Ejercicio Resuelto 1. nombre y apellidos domicilio 45 caracteres 45 caracteres asignatura1 nota1 asignatura2 nota2 . . . asignatura50 nota50 3 caracteres real 3 caracteres real . . . 3 caracteres real tipo TCodAsig = tabla [1..3] de caracter: TCadena = tabla [1..45] de caracter; TAsignatura = tupla asig : TCodAsig; nota : real f tupla Tficha = tupla nombre : Tcadena; domicilio : Tcadena; notas : tabla [1..50] de TAsignatura ftupla TAlumnos = tabla [1..76] de TFicha ftipo var alumnos: TAlumnos fvar Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas Tipos de datos Estructurados 2 8-3 Crea una estructura de datos para guardar los siguientes datos: Ejercicio Resuelto 2. - nombre - apellido1 - apellido2 - nombre_padre - apellido1_padre - apellido2_padre - nombre_madre - apellido1_madre - apellido2_madre - edad - - fecha_alta: - día - mes - año fecha_nacimiento: - día - mes - año tipo TCadena = tabla [1..18] de caracter; TDatosPerson = tupla nombre : TCadena; apellido1 : TCadena; apellido2 : TCadena; f tupla TFecha = tupla dia : entero; mes : TCadena; anyo : entero; ftupla TInforme = tupla persona :TDatosPerson; padre : TDatosPerson; madre : TDatosPerson; edad : entero; fechaAlta : TFecha; fechaNac : TFecha; ftupla ftipo var informe: TInforme; fvar Ejercicio Propuesto 1. Artículos Supuesta la siguiente tabla (artículos) : Nombre Código Precio balón de reglamento 4788695176 45,00 € pandereta 2789681325 7,95 € teatro de madera 8569723486 29,50 € piano animalitos 5316895824 34,00 € sendero musical 6486462625 19,95 € Definid la estructura adecuada para almacenar dichos datos. Departamento de Ciencia de la Computación e Inteligencia Artificial 8-4 Fundamentos de la Programación I Escribe un módulo (acción) en pseudocódigo que lea los datos anteriores y los guarde en la estructura creada en el ejercicio anterior. Posteriormente incorpora dicho módulo al siguiente algoritmo. Ejercicio Propuesto 2. algoritmo : ejercicio_estructura #definición de los tipos necesarios #declaración de las variables necesarias accion leerEstruc(...) ... faccion accion escrEstruct(...) ... faccion #petición de datos leerEstruc(...); #escritura de los datos escrEstruc(...); ... falgoritmo. Podemos definir un polígono definiendo las coordenadas de cada uno de sus lados. Diseñar la estructura de datos que permita definir un polígono de lado n –con un máximo de 30 lados- y crear un algoritmo que permita introducir las coordenadas cartesianas de cada uno de sus lados. Para construir el algoritmo ayúdate de todos los subalgoritmos que consideres necesarios. Ejercicio Propuesto 3. Escribir un algoritmo que construya una tabla de N fechas (N es un dato) con la ayuda de los siguientes módulos o subalgoritmos: Ejercicio Propuesto 4. - Módulo leer, que lee N y a continuación las N fechas, colocándolas cada una en una tabla de registros de fechas con tres campos cada uno - Módulo ordenar¸ que clasifica la tabla anterior tomando como campo más importante el año, luego el mes y finalmente el día. - Procedimiento listar, que imprime la tabla mencionada, una vez clasificada. Podríais validar la fecha con los módulos realizados en prácticas anteriores para tal fin. El Servicio Metereológico Nacional: recibe de cada observatorio un archivo con información acerca de las temperaturas máxima y mínimas diarias registradas en ellos. Con ellos crea una tabla de 100 elementos. Cada elemento está compuesto por los siguientes campos: código del observatorio, fecha del registro (día, mes y año) temperatura máxima y temperatura mínima. La tabla no está ordenada. A partir de estos datos se desea realizar un informe en el que aparezcan las temperaturas medias mensuales. Ejercicio Propuesto 5. Ingeniería Informática Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas