Anterior

22. Tipos de datos definidos por el usuario

Por: Nacho Cabanes
Actualizado: 19-04-2019 22:49
Tiempo de lectura estimado: 4 min.

 

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).

5430 visitas desde el 19-04-2019

Anterior