22. Tipos de datos definidos por el usuario
BASIC
22. Tipos de datos definidos por el usuario
En las versiones más modernas de BASIC podemos crear datos "a nuestra medida".
Como primer acercamiento, podemos usar la orden DIM también para declarar una única variable de un tipo "normal", por ejemplo:
DIM i AS INTEGER
DIM n AS LONG
DIM numero2 AS SINGLE
DIM resultado AS DOUBLE
DIM mensaje AS STRING
i = 5
n = 123456789
numero2 = 5.3
resultado = 9.765432
mensaje = "Hola"
PRINT i, n, numero2, resultado, mensaje
(Fuente "2201.bas". Probado en QBasic 1.1)
También podemos declarar a la vez varias variables del mismo tipo::
DIM x, y AS INTEGER
Y se puede limitar el máximo número de letras de una cadena de texto, así:
DIM mensaje AS STRING * 20
En cualquier caso, podemos obligar a que sea necesario declarar variables, y que el intérprete nos avise cuando encuentre alguna variable que no hemos declarado antes, con lo que evitamos los problemas de variables mal tecleadas, a las que el ordenador asignaría el valor 0 automáticamente, dando lugar a errores muy difíciles de detectar. Esto lo conseguimos con la orden
OPTION EXPLICIT
Con una construcción bastante parecida a DIM, podemos crear nuestros propios tipos de datos, formados por varios datos distintos de tipos "básicos". Para eso, emplearemos la orden TYPE. Luego declararíamos las variables con DIM::
TYPE TipoAlumnos
nombre AS STRING * 30
edad AS INTEGER
nota AS SINGLE
END TYPE
DIM alumno AS TipoAlumnos
alumno.nombre = "Juan Perez"
alumno.edad = 16
alumno.nota = 8.2
PRINT "Nombre: "; alumno.nombre
PRINT "Edad: "; alumno.edad
PRINT "Nota: "; alumno.nota
(Fuente "2202.bas". Probado en QBasic 1.1)
Podríamos incluso crear un "array" para guardar varios datos de ese nuevo tipo:
TYPE TipoAlumnos
nombre AS STRING * 30
edad AS INTEGER
nota AS SINGLE
END TYPE
DIM alumno(1 TO 20) AS TipoAlumnos
alumno(1).nombre = "Juan Perez"
alumno(1).edad = 16
alumno(1).nota = 8.2
PRINT "Nombre del primer alumno: "; alumno(1).nombre
PRINT "Edad del primer alumno: "; alumno(1).edad
PRINT "Nota del primer alumno: "; alumno(1).nota
(Fuente "2203.bas". Probado en QBasic 1.1)
También podemos dar valores a varios de esos datos repetitivos con una orden FOR. Por ejemplo, si todos nuestros alumnos tienen 15 años de edad, podríamos hacer
FOR i = 1 TO 20
Alumno(i).edad = 15
NEXT i
En Visual Basic existe otra posibilidad a la hora de crear nuestros tipos de datos, para tener que teclear menos cuando sean estructuras repetitivas: en vez de escribir
Alumno(1).nombre = "Juan Perez"
Alumno(1).edad = 16
Alumno(1).nota = 8.2
podemos utilizar la orden **WITH** y así eliminar la parte repetitiva:
WITH Alumno(1)
.nombre = "Juan Perez"
.edad = 16
.nota = 8.2
END WITH
Ejercicio propuesto 22.1: Crea un tipo de datos que permita guardar el nombre, la edad, el teléfono y el correo electrónico de una persona. Pide datos al usuario para un variable de ese tipo y luego muéstralos en pantalla.
Ejercicio propuesto 22.2: Amplía el ejercicio 22.1, para poder manejar los datos de 30 personas, usando un array. El usuario deberá poder añadir una nueva o ver los datos de todas ellas.
Ejercicio propuesto 22.3: Amplía el ejercicio 22.2, para que se pueda buscar una persona a partir de su nombre (completo o parte de él: puedes usar INSTR para ver si el nombre contiene el texto introducido).