�Qu� es un tipo definido por usuario? Vamos a responder a esta pregunta poniendo un ejemplo. Imaginemos que queremos realizar un programa que trabaje con fichas de alumnos. Debemos empezar plante�ndonos qu� datos son los que queremos almacenar del alumno. Por ejemplo, podemos querer su nombre, apellidos, edad, curso y nota media.
Perfectamente podemos, simplemente, hacer la siguiente declaraci�n de variables:
Nombre, Apellidos: Cadena[255]; Edad, Curso: Entero; NotaMedia: Real;
e ir us�ndolas en el programa. Esta declaraci�n nos sirve para una �nica ficha de alumnos. Si queremos trabajar con dos alumnos, entonces tendr�amos que hacer:
Nombre1, Nombre2, Apellidos1, Apellidos2: Cadena[255]; Edad1, Edad2, Curso1, Curso2: Entero; NotaMedia1, NotaMedia2: Real;
Si queremos trabajar con tres, la cosa empieza a enrevesarse. Tenemos cada vez m�s variables. �Podr�a definir un tipo "Alumno" que contuviera la informaci�n que quiero y usarlo como si fuera una �nica variable?
La respuesta es s�. Este tipo "Alumno" ser�a lo que se conoce como "tipo definido por el usuario". Ahora bien, �c�mo lo definir�amos? Usaremos la notaci�n:
Tipo TAlumno Nombre, Apellidos: Cadena[255]; Edad, Curso: Entero; NotaMedia: Real; Fin Tipo;
es decir:
Tipo NombreTipo Variable1: Tipo1; ... VariableN: TipoN; Fin Tipo;
Ahora, para declarar variables de tipo TAlumno, simplemente escribiremos:
Alumno: TAlumno;
O, si queremos m�s de una variable de tipo TAlumno:
Alumno1, Alumno2, Alumno3: TAlumno;
Para acceder a las variables contenidas en el tipo, usaremos la notaci�n punto (.). Por ejemplo, para acceder a los apellidos del segundo alumno declarado, escribiremos:
Alumno2.Apellidos
Podemos usar esta notaci�n tanto para recuperar el valor almacenado como para establecer uno nuevo:
NombreAlumno := Alumno3.Nombre; Alumno2.Edad := 17;
La definici�n de tipos es muy poderosa: dentro de la definici�n de un tipo, podemos usar como tipo para una variable otro tipo definido por nosotros previamente declarado. Por ejemplo, una vez definido el tipo TAlumno, podemos definir un tipo TClase que contenga, a su vez, tipos TAlumno:
Tipo TClase Alumnos: Vector[1..30] de TAlumno; NumeroClase: Entero; LetraClase: Car�cter; ProfesorTutor: Cadena[255]; Fin Tipo;
Hemos visto, adem�s, que tipos definidos por el usuario y vectores se pueden combinar de igual manera: dentro de un tipo definido por el usuario, puedo declarar una variable de tipo vector. Si declaramos la variable:
Clase: TClase;
acceder a la edad del alumno n�mero 23 de dicha clase ser� tan sencillo como hacer:
Clase.Alumnos[23].Edad
Ahora podemos empezar a pensar en resolver problemas complejos. Por ejemplo, tengo una clase de 30 alumnos y quiero ordenar ese vector de alumnos por orden alfab�tico.
�Ejemplos
- Definir una estructura que represente una ficha de un empleado con los datos siguientes: Nombre, apellidos, a�o de entrada en la empresa, sueldo mensual bruto, sueldo mensual neto. Declarar dos variables de este tipo.
Tipo TEmpleado Nombre, Apellidos: Cadena[100]; AnyoEntrada, SueldoBruto, SueldoNeto: Entero; Fin Tipo; Empleado1, Empleado2: TEmpleado;
Tambi�n puede definirse:
Empleados: Vector[1..2] de TEmpleado;
- Definir una estructura que represente una ficha de un paciente con los datos siguientes: Nombre, apellidos, fecha de entrada en el hospital, clase de dolencia. Declarar cincuenta variables de este tipo.
Tipo TPaciente Nombre, Apellidos: Cadena[100]; DiaEntrada, MesEntrada, AnyoEntrada: Entero: Dolencia: Cadena[255]; Fin Tipo; Pacientes: Vector[1..50] de TPaciente;
�Ejercicios
- Definir una estructura que represente una ficha de un empleado con los datos siguientes: Nombre, apellidos, direccion, n�mero de tel�fono, fecha de entrada en la empresa, sueldo bruto al mes, sueldo neto al mes, cargo, departamento al que pertenece. Declarar 20 variables de este tipo.
- Definir una estructura que represente una ficha de alumno con los datos siguientes: Nombre, apellidos, direccion, n�mero de tel�fono, fecha de nacimiento, curso, notas de las cinco asignaturas, nota media. Declarar 30 variables de este tipo.
- Definir una estructura que represente una ficha de un libro con los datos siguientes: Nombre del libro, autor, fecha de la edici�n, ISBN. Declarar 50 variables de este tipo.