Sunteți pe pagina 1din 17

FUNDAMENTOS DE

INFORMTICA
Tema 3
Estructuras de datos

Departamento de Ingeniera de Sistemas y Automtica


Universidad de Vigo

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Estructuras de datos

Estructuras de datos
Dos estructuras de datos fundamentales son las conocidas
como: matriz (o array) y registro (o estructura).
Son de uso frecuente, por lo que son elementos
imprescindibles en la programacin de muchos problemas.
Por ejemplo, las notas correspondientes a las distintas
evaluaciones realizadas a cada uno de los alumnos de un
determinado curso forman una matriz, y la ficha que contiene
los datos personales de cada uno de estos alumnos es un
ejemplo de registro (o estructura).

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Estructuras de datos

Matrices
Una matriz (array en ingls) es un conjunto de elementos
contiguos, todos del mismo tipo, que comparten un nombre
comn y a los que es posible acceder mediante la posicin
(ndice) que ocupa cada uno de ellos en la matriz, como un
vector o una matriz en lgebra.
Esta disposicin permitir escribir cdigo ms simple, ya que
ser posible establecer bucles en los que se recorra los
elementos de una matriz mediante el nmero de ndice.
A las matrices de una dimensin se les suele llamar tambin
vectores o listas, y a las matrices de dos dimensiones, tablas.
elemento

Matriz
Matrizaa

...

a(i) a(i+1) a(i+2) a(i+3) ...

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Estructuras de datos

Matrices
Es posible definir matrices de hasta 60 dimensiones en Visual
Basic y de cualquier tipo de datos (tipos fundamentales y
estructuras definidas por el usuario).
La representacin de las matrices se hace mediante variables
con subndices. Los subndices son nmeros enteros
consecutivos y, por defecto, el primer ndice valdr 0. Una
matriz de dos dimensiones se representa con una variable con
dos subndices (filas, columnas). Una de tres con tres, etctera.
Para formar el nombre de una matriz y definir su tipo, se siguen
las mismas reglas que para las variables:
Dim a(24) As Integer matriz de enteros, 1 dimensiones.
Dim c(12,5) As String matriz de cadenas, 2 dimensiones.
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Estructuras de datos

Declaracin de matrices
La declaracin de una matriz especifica el nombre de la matriz, el
nmero de elementos de la misma y el tipo de stos:
Dim variable[(dimension)][As tipo]

donde:
variable es el nombre de la matriz.
dimension es una lista de expresiones numricas, separadas

por comas y que definen las dimensiones de la matriz. Esta


lista puede ser de la forma:
[inferior To] superior [, ...
tipo define el tipo de la variable (Integer, Long, String, etc.)
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Estructuras de datos

Ejemplos de declaracin de matrices


Lista o vector de 60 enteros, indexados del 0 al 59:
Dim temp(59) As Integer

Lista o vector de 60 enteros, indexados del 1 al 60:


Dim temp(1 To 60) As Integer

Lista o vector de 60 cadenas de caracteres de longitud fija 40:


Dim temp(1 To 60) As String * 40

Tabla de 10 * 10 elementos de tipo Double:


Dim a(9,9) As Double
Dim a(1 To 10, 1 To 10) As Double
Dim a(-5 To 4, 2001 To 2010) As Double
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Estructuras de datos

Ejemplo de manipulacin de matrices


Const n = 12
Dim A(1 to n) As Double
Dim i As Integer

matriz de n elementos

Bucle For para Rellenar la matriz a con datos.


For i = 1 To n
A(i) = InputBox(Introduce el elemento & i & de A)
Next i
Bucle For para Visualizar la matriz con Print
For i = 1 To n
MsgBox A(i)
Next i

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Estructuras de datos

Matrices dinmicas
Una matriz dinmica, a diferencia de las anteriores, puede ser
redimensionada en cualquier momento de la ejecucin del programa.
Para crear una matriz dinmica, primero hay que declararla como si
fuera una matriz esttica (con Dim), pero sin darle dimensin.
Para reasignar dinmicamente el nmero de elementos se utiliza la
sentencia ReDim. No es posible cambiar el nmero de dimensiones
de la misma, slo los tamaos de cada dimensin.
Cada vez que se ejecuta ReDim, todos los valores previamente
almacenados se pierden.
Para cambiar el tamao conservando los valores hay que utilizar la
palabra clave Preserve, en cuyo caso no es posible cambiar el/los
ndice/s inferior/es, slo el superior.
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Estructuras de datos

Ejemplo de manipulacin de matrices dinmicas


Dim m() As Double
'declaracion de matriz dinamica
Dim filas As Integer, columnas As Integer
Dim i As Integer, j As Integer
'consulto al usuario el tamao de la matriz
filas = InputBox("N filas de la matriz:")
columnas = InputBox("N columnas de la matriz:")
ReDim m(1 To filas, 1 To columnas) 'redimensiono la matriz
'Leo los datos
For i = 1 To filas
For j = 1 To columnas
m(i, j) = InputBox("m(" & i & ", " & j & ") = ")
Next j
Next i
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Estructuras de datos

Otras cuestiones sobre matrices


Erase vuelve a inicializar los elementos de matrices de tamao fijo y

libera el espacio de almacenamiento asignado a matrices dinmicas.


Tipo de matriz

Efecto de Erase sobre elementos de una matriz fija

Matriz numrica fija

Establece cada elemento a cero.

Matriz de cadena fija


(longitud variable)

Establece cada elemento a una cadena de longitud cero


("").

Matriz de cadena fija


(longitud fija)

Establece cada elemento a cero.

Matriz de tipos definidos


por el usuario

Establece cada elemento como si se tratara de una


variable separada.

Para copiar una matriz en otra es necesario asignar uno a uno los
valores de la primera en las variables de la segunda.
La funcin Ubound(variable, dimension) devuelve el valor ms
alto de la dimensin de la variable de tipo matriz indicada.
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

10

Estructuras de datos

Estructuras: Type
Una estructura o registro es un nuevo tipo de datos, especificado
por el usuario, que puede definirse como una coleccin de datos de
diferentes tipos.
Para declarar una estructura, hay que utilizar la instruccin de
Visual Basic Type ... End Type. Esta instruccin slo puede
aparecer en la seccin Declaraciones de los mdulos.
Type Ficha
Nombre As String * 60
Direccion As String * 40
Telefono As String *12
Edad As Integer
End Type

En este ejemplo se declara un tipo de datos Ficha que consta de


cuatro campos, denominados Nombre, Direccion, Telefono y Edad.
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

11

Estructuras de datos

Estructuras: Type
Una vez declarado el tipo de datos, ya es posible declarar variables
de este tipo. Por ejemplo, la siguiente sentencia declara la variable
Alumno de tipo Ficha:
Dim Alumno As Ficha

Para referirse a un determinado campo de una estructura, se utiliza


la notacin variable.miembro. Por ejemplo:
Alumno.Nombre = InputBox("Introduce tu nombre")
Alumno.Telefono = InputBox("Introduce tu telfono")
MsgBox "El telfono introducido ha sido " & Alumno.Telefono

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

12

Estructuras de datos

Estructuras. Sentencia Type


Un miembro de una estructura puede ser, a su vez, otra estructura:
Type Fecha
Dia As Integer
Mes As Integer
Ano As Integer
End Type
Type Ficha
Nombre As String * 60
Direccion As String * 40
Telefono As String *12
Edad As Integer
FechaMatricula As Fecha
End Type

Para acceder al da de matrcula de la variable Alumno definida


anteriormente:
Alumno.FechaMatricula.Dia

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

13

Estructuras de datos

Estructuras. Sentencia Type


En el caso de estructuras, s que es posible la asignacin entre
variables del mismo tipo:
Dim Alumno1 As Ficha, Alumno2 As Ficha
Alumno2 = Alumno1

Un tipo definido por el usuario tambin puede contener miembros


que sean matrices estticas y dinmicas:
Type Ficha
...
Asignaturas() As String matriz dinmica
Optativas(3) As String matriz esttica
...
End Type
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

14

Estructuras de datos

Estructuras. Sentencia Type


Se accede a un elemento de un miembro que es una matriz de la
siguiente forma:
Alumno.Optativas(0) = Robtica Industrial

Tambin es posible definir matrices de estructuras de la siguiente


forma:
Public GrupoA (1 To 100) As Ficha

Se accede a los miembros de un elemento de la matriz del modo


siguiente:
GrupoA(1).Nombre = Armando Bronca Constante
GrupoA(100).Optativas(1) = Informtica Avanzada
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

15

Estructuras de datos

Sentencia with ... end with


La sentencia With permite manipular, de forma ms sencilla, el
acceso a los miembros de una estructura. As, el conjunto de
sentencias que manipulan atributos de la variable Alumno de tipo
Ficha es:
Alumno.Nombre = Armando Bronca Constante
Alumno.Direccion = C/La Calle s/n
Alumno.Telefono = 555252525

podran escribirse, utilizando esta sentencia, de este otro modo:


With Alumno
.Nombre = Armando Bronca Constante
.Direccion = C/La Calle s/n
.Telefono = 555252525
End With
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

16

FUNDAMENTOS DE
INFORMTICA
Tema 3
Estructuras de datos

Departamento de Ingeniera de Sistemas y Automtica


Universidad de Vigo

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

17

S-ar putea să vă placă și