- Es una colección de variables, la cual puede poseer distintos tipos de datos.
- Es un tipo de dato definido por el usuario.
Las estructuras funcionan como clases (estás las veremos en más adelante), que solo tienen propiedades y el método NEW para crear nuevas instancias de ella.
La declaración de estructuras :
PUBLIC STRUCT Identifier
Field 1 [ Embedded array declaration ] AS [ Datatype ]
Field 1 [ Embedded array declaration ] AS [ Datatype ]
Field 2 [ Embedded array declaration ] AS [ Datatype ]
.
.
.
Field n [ Embedded array declaration ] AS [ Datatype ]
END STRUCT
END STRUCT
En la definición del tipo de estructura, se especifican los elementos que la componen así como sus tipos. Cada elemento es llamado miembro
Por ejemplo:
Public
Struct alumno '
ejemplo de estructura
id As
Integer
' id:
identificador del alumno
nombre As
String
' nombre:
variable donde guardaremos el nombre del alumno
apellidos As
String'
apellidos: variable donde guardaremos los apellidos del alumno
curso As
Integer
' curso:
variable tipo numero integer que guarda en que curso esta (1,2,3,..)
promedio_notas As
Float 'variable
que guarda el promedio de las notas que tenga el alumno
End
Struct
En este caso, el tipo de estructura es alumno
Y los miembros: id,nombre,apellidos,curso,promedio_notas
Para definir una variable que sea de tipo estructura alumno:
Dim
alum As
New
Alumno
El acceso a los miembros de la estructura es por medio del operador Punto de la siguiente manera:
alum.id
=
12
alum.nombre
=
"Julio"
alum.apellidos
=
"Sanchez
Berro"
alum.curso
=
1
alum.promedio_notas
=
5.5
Si tenemos que volver a usar la variable, en este caso alum, reiniciarla con otros datos debemos usar la orden NEW
alum =
New
Alumno
Y ya podremos darle nuevos valores:
alum.id
=
13
alum.nombre
=
"Fernando"
alum.apellidos
=
"Bonzalez"
alum.curso
=
3
alum.promedio_notas
=
8
Y esta linea nos imprimiría la información que guarda la estructura:
Print
alum.id, alum.nombre, alum.apellidos, alum.curso, alum.nombre
Un ejemplo completo de uso:
Dim
nota As
Float 'variable
donde guarda la nota que pide
Dim
i As
Integer
'variable
para el bucle For... Next
Dim
acumulada As
Float 'va
acumulando las notas del alumno
Dim
numero_asignaturas As
Integer
=
5
'suponemos
que tiene 5 asignaturas
Dim
r1 As
New
Alumno
r1.nombre
=
"Julio"
r1.apellidos
=
"Perez"
r1.id
=
32
r1.curso
=
1
'pido
las notas del alumno..
For
i =
1
To
numero_asignaturas
Print
"Introduce
lan nota de la asignatura "; i; ":
"
Input
nota
acumulada +=
nota
Next
' calculo el promedio:
r1.promedio_notas
=
acumulada /
numero_asignaturas
'Escribo
datos del alumno:
Print
"Id
del alumno:"; r1.id
Print
"Nombre
Completo:"; r1.nombre;" ";
r1.apellidos
Print
"Cursa
en: "; r1.curso
Print
"Nota
promedio: ";
r1.promedio_notas
Ahora otro ejemplo, esta vez usamos una estructura para que una función nos devuelva varios datos:
Es un programa que pide 5 artículos y su coste, va sumando el valor de los artículos, mostrando los valores, y al final muestra el total de la compra
1º definimos el tipo estructura
Public
Struct dato
cadena
As
String
valor
As
Float
End
Struct
2º Definimos el programa principal, que es el encargado de sumar los datos, y hacer las llamadas a la función:
Dim
lista As
New
Dato
Dim
a As
Integer
Dim
suma As
Float
Print
"----------------------------------------"
Print
"
Lista de la Compra"
Print
"----------------------------------------"
For
a =
1
To
5
lista
=
PeticionDatos("Lista de la Compra")
suma
+=
lista.valor
Print
lista.cadena,
lista.valor
Next
Print
"----------------------------------------"
Print
"La
suma total es: ",
suma
3º Definimos una función que nos piden los datos, y nos devuelve la estructura:
Public
Function
PeticionDatos(nombre As
String)
As
Dato
Dim
dat As
New
Dato
Print
"*******
"
&
nombre &
"
**********"
Print
"Introduce
el nombre del articulo:"
Input
dat.cadena
Print
"Introduce
el valor del articulo:"
Input
dat.valor
Return
dat
End
Fíjate que la variable que devuelve Return, es del tipo estructura Dato (llamada dat), que es la que se le asigna, en el programa principal a otra variable estructura Dato, llamada Lista.
Enlace de descarga de los ejemplo: enlace
Para más información:
http://gambaswiki.org/wiki/lang/structdecl
http://gambaswiki.org/wiki/lang/new
Me parece una definición muy útil para trabajar con variables de distinto formato.
ResponderEliminar