17
undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 1 Tema 3 Estructuras de datos FUNDAMENTOS DE INFORMÁTICA Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo

Tema 3 Estructuras de datos.pdf

Embed Size (px)

Citation preview

Page 1: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 1/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 1

Tema 3

Estructuras de datos

FUNDAMENTOS DE

INFORMÁTICA

Departamento de Ingeniería de Sistemas y AutomáticaUniversidad de Vigo

Page 2: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 2/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 2

Estructuras de datos

Estructuras de datosEstructuras de datos

Dos estructuras de datos fundamentales son las conocidascomo: matriz (o array) y registro (o estructura).

Son de uso frecuente, por lo que son elementos

imprescindibles en la programación de muchos problemas. Por ejemplo, las notas correspondientes a las distintas

evaluaciones realizadas a cada uno de los alumnos de undeterminado curso forman una matriz, y la ficha que contienelos datos personales de cada uno de estos alumnos es unejemplo de registro (o estructura).

Page 3: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 3/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 3

MatricesMatrices Una matriz (array  en inglés) es un conjunto de elementos

contiguos, todos del mismo tipo, que comparten un nombre

común y a los que es posible acceder mediante la posición(índice) que ocupa cada uno de ellos en la matriz, como unvector o una matriz en Álgebra.

Esta disposición permitirá escribir código más simple, ya queserá posible establecer bucles en los que se recorra loselementos de una matriz mediante el número de índice.

 A las matrices de una dimensión se les suele llamar tambiénvectores o listas, y a las matrices de dos dimensiones, tablas.

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

Matriz a

elemento

Estructuras de datos

Page 4: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 4/17undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 4

MatricesMatrices 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 representación de las matrices se hace mediante variables

con subíndices. Los subíndices son números enteros

consecutivos y, por defecto, el primer índice valdrá 0. Unamatriz de dos dimensiones se representa con una variable condos subíndices (filas, columnas). Una de tres con tres, etcétera.

Para formar el nombre de una matriz y definir su tipo, se siguenlas 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.

Estructuras de datos

Page 5: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 5/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 5

Declaración de matricesDeclaración de matrices

La declaración de una matriz especifica el nombre de la matriz, elnúmero 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 numéricas, separadas

 por comas y que definen las dimensiones de la matriz. Estalista puede ser de la forma:

[inferior To] superior [, ...

• tipo define el tipo de la variable (Integer, Long, String, etc.)

Estructuras de datos

Page 6: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 6/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 6

Ejemplos de declaración de matricesEjemplos de declaración 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

Estructuras de datos

Page 7: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 7/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 7

Ejemplo de manipulación de matricesEjemplo de manipulación de matrices

Const n = 12

Dim A(1 to n) As Double ´matriz de n elementos

Dim i As Integer

´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

Estructuras de datos

Page 8: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 8/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 8

Matrices dinámicasMatrices dinámicas Una matriz dinámica, a diferencia de las anteriores, puede ser

redimensionada en cualquier momento de la ejecución del programa.

Para crear una matriz dinámica, primero hay que declararla como sifuera una matriz estática (con Dim ), pero sin darle dimensión.

Para reasignar dinámicamente el número de elementos se utiliza la

sentencia ReDim. No es posible cambiar el número de dimensionesde la misma, sólo los tamaños de cada dimensión.

Cada vez que se ejecuta ReDim , todos los valores previamente

almacenados se pierden. Para cambiar el tamaño conservando los valores hay que utilizar la

palabra clave Preserve, en cuyo caso no es posible cambiar el/losíndice/s inferior/es, sólo el superior.

Estructuras de datos

Page 9: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 9/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 9

Ejemplo de manipulación de matrices dinámicasEjemplo de manipulación de matrices dinámicas

Dim m() As Double 'declaracion de matriz dinamica

Dim filas As Integer, columnas As IntegerDim i As Integer, j As Integer

'consulto al usuario el tamaño 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

Estructuras de datos

Page 10: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 10/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 10

Otras cuestiones sobre matricesOtras cuestiones sobre matrices

 Erase vuelve a inicializar los elementos de matrices de tamaño fijo y

libera el espacio de almacenamiento asignado a matrices dinámicas.

Estructuras de datos

Tipo de matriz  Efecto de Erase sobre elementos de una matriz fija 

Matriz numérica 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 unavariable separada. 

Para copiar una matriz en otra es necesario asignar uno a uno losvalores de la primera en las variables de la segunda.

La función Ubound(variable, dimension) devuelve el valor másalto de la dimensión de la variable de tipo matriz indicada.

Page 11: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 11/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 11

Estructuras: “Estructuras: “TypeType”” Una estructura o registro es un nuevo tipo de datos, especificado

por el usuario, que puede definirse como una colección de datos dediferentes tipos.

Para declarar una estructura, hay que utilizar la instrucción deVisual Basic Type ... End Type. Esta instrucción sólo puedeaparecer en la sección Declaraciones de los módulos.

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

cuatro campos, denominados Nombre, Direccion, Telefono y Edad .

Type Ficha

Nombre As String * 60

Direccion As String * 40

Telefono As String *12

Edad As IntegerEnd Type

Estructuras de datos

Page 12: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 12/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 12

Estructuras: “Estructuras: “TypeType”” 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:

Para referirse a un determinado campo de una estructura, se utilizala notación variable. miembro. Por ejemplo:

Dim Alumno As Ficha

Alumno.Nombre = InputBox("Introduce tu nombre")

Alumno.Telefono = InputBox("Introduce tu teléfono")MsgBox "El teléfono introducido ha sido " & Alumno.Telefono

Estructuras de datos

Page 13: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 13/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 13

Estructuras. Sentencia “Estructuras. Sentencia “TypeType”” Un miembro de una estructura puede ser, a su vez, otra estructura:

Para acceder al día de matrícula de la variable Alumno definidaanteriormente:

Type Fecha

Dia As Integer

Mes As IntegerAno As Integer

End Type

Type Ficha

Nombre As String * 60Direccion As String * 40

Telefono As String *12

Edad As Integer

FechaMatricula As FechaEnd Type

Alumno.FechaMatricula.Dia

Estructuras de datos

Page 14: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 14/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 14

Estructuras. Sentencia “Estructuras. Sentencia “TypeType”” En el caso de estructuras, sí que es posible la asignación entre

variables del mismo tipo:

Un tipo definido por el usuario también puede contener miembrosque sean matrices estáticas y dinámicas:

Dim Alumno1 As Ficha, Alumno2 As Ficha

Alumno2 = Alumno1

Type Ficha

...

Asignaturas() As String ´matriz dinámica

Optativas(3) As String ´matriz estática

...

End Type

Estructuras de datos

Page 15: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 15/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 15

Estructuras. Sentencia “Estructuras. Sentencia “TypeType”” Se accede a un elemento de un miembro que es una matriz de la

siguiente forma:

También es posible definir matrices de estructuras de la siguiente

forma:

Alumno.Optativas(0) = “Robótica Industrial”

Public GrupoA (1 To 100) As Ficha

Se accede a los miembros de un elemento de la matriz del modosiguiente:

GrupoA(1).Nombre = “Armando Bronca Constante”

GrupoA(100).Optativas(1) = “Informática Avanzada”

Estructuras de datos

Page 16: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 16/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 16

Sentencia “Sentencia “withwith ...... end withend with”” La sentencia With permite manipular, de forma más sencilla, el

acceso a los miembros de una estructura. Así, el conjunto de

sentencias que manipulan atributos de la variable  Alumno de tipoFicha es:

Alumno.Nombre = “Armando Bronca Constante”

Alumno.Direccion = “C/La Calle s/n”Alumno.Telefono = 555252525

podrían escribirse, utilizando esta sentencia, de este otro modo:

 With Alumno

.Nombre = “Armando Bronca Constante”

.Direccion = “C/La Calle s/n”

.Telefono = 555252525

End With

Estructuras de datos

Page 17: Tema 3 Estructuras de datos.pdf

7/25/2019 Tema 3 Estructuras de datos.pdf

http://slidepdf.com/reader/full/tema-3-estructuras-de-datospdf 17/17

undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 17

Tema 3

Estructuras de datos

FUNDAMENTOS DE

INFORMÁTICA

Departamento de Ingeniería de Sistemas y AutomáticaUniversidad de Vigo