end

Anuncio
Tema 6. Estructuras de datos
6.1 Introducción
6.2 Vector
6.3 Cadena
6.4 Matriz
6.5 Registro
6.6 Aplicaciones
1
6.1 Introducción
Colección de datos que se caracterizan
por su organización y las
operaciones definidas sobre ella.
Datos
simples
entero, real,
carácter, booleano
Datos
estructurados
vector, cadena,
matriz, registro,
conjunto, lista,
árbol, grafo, ...
elementos
Un solo identificador permite representar múltiples datos individuales,
que también són accessibles independientemente.
2
1
6.2 Vector (array)
Colección finita y ordenada de elementos homogéneos
Cada elemento puede ser identificado
por su posición (índice) en el vector
del mismo
tipo
Ejemplo: vector v de 7 elementos enteros
23
9
-5
0 117
-1 -80
v(1) v(2) v(3) v(4) v(5) v(6) v(7)
Sólo el vector completo tiene nombre. Se accede a los
elementos por medio del índice (posición) de cada uno.
3
Sintaxis
Definición:
v = [23,9,-5,0, 117,-1,-80];
Acceso a los elementos:nombre(índice)
v(1) = v(2) - 30;
v(i) = v(i+3) / 1.2;
● En MATLAB se puede operar con el vector completo
● En muchos otros lenguajes, NO.
4
2
Ejemplo
%
%
%
%
Script Cuadrados
Calcula los cuadrados
de los 20 primeros naturales
y los guarda en un vector
for i = 1:20
q(i) = i * i;
end
5
Ejemplo de función
function s = suma(v)
% suma(v)
% Calcula la suma de los elementos de
% un vector de enteros v
n = length(v);
s = 0;
for i = 1:n
s = s + v(i);
end
6
3
6.3 Cadena (string)
Secuencia finita de caracteres
Vector de caracteres
cad = ‘valor inicial’;
13 caracteres
valor inicial
7
Ejemplo
function d = invertir (c)
% invertir(c)
% Invierte la cadena c.
n = length(c);
pos = n;
for i=1:n
d(i) = c(pos);
pos = pos – 1;
end
8
4
Versión alternativa
function d = invertir (c)
% invertir(c)
% Invierte la cadena c.
n = length(c);
for i=1:n
d(i) = c(n-i+1);
end
9
6.4 Matriz (matrix)
Vector
1 dimensión
1 índice
Matriz
2 dimensiones
2 índices
n dimensiones
n índices
Ejemplo: matriz m de 3x4 elementos enteros
1
2
3
1
34
8
41
2
-56
12
0
m(1,3)
3
45
74
-7
4
1
-3
90
m(3,4)
10
5
Sintaxis
Definición:
m = [34,-56,45,1; 8,12,74,-3; 41,0,-7,90];
Acceso a los elementos:
nombre(ind1,ind2)
m(1,3) = m(2,1) - 30;
m(i,j) = m(i+3,j-1) / 1.2;
11
Ejemplo
% Script Productos Cruzados
% Calcula en una matriz los productos cruzados
% [1,15] x [1,10]
for i = 1:15
for j = 1:10
M(i,j) = i * j;
end
end
12
6
Ejemplo de función
function s = suma(M)
% suma(m)
% Calcula la suma de los elementos
% de una matriz de enteros m
[f,c] = size(M);
s = 0;
for i = 1:f
for j = 1:c
s = s + M(i,j);
end
end
13
6.5 Registro
• Colección de elementos del mismo o diferente tipo
• Los elementos se denominan campos del registro
• Cada campo tiene un nombre para referenciarlo
Ejemplo: registro alumno con los campos siguientes
nombre
edad
nif
direccion
nota
14
7
Sintaxis
Definición:
» al = struct('nombre','Josep Pérez
Pérez', 'edad', 21,'nif','12345678X',
'direccion', 'Calle Mayor, 1','nota',7.5)
al =
nombre:
edad:
nif:
direccion:
nota:
'Josep Pérez Pérez'
21
'12345678X'
'Carrer Major, 1'
7.5
»
15
Acceso a los elementos
nombre.campo
Ejemplo:
al.edad = 21;
disp(al.nif);
● NO se puede operar con el registro completo
● Sí puede ser el parametro de una función
16
8
Aplicación: autómata celular 2D
function n = vida(m)
%
%
%
%
%
Juego de la Vida
Autómata de Conway: en un mundo 2D una
célula nace si tiene 3 vecinos (de 8),
sobrevive si tiene 2 o 3, o muere en
caso contrario.
[f,c] = size(m);
...
17
function n = vida(m)
[f,c] = size(m);
for i=1:f
for j=1:c
switch vecinos(m,i,j)
case 2
n(i,j) = m(i,j);
case 3
n(i,j) = 1;
otherwise
n(i,j) = 0;
end
end
end
18
9
function v = vecinos(m, i, j)
[f,c] = size(m);
v = 0;
fsup = mayor(1, i-1);
finf = menor(f, i+1);
cizq = mayor(1, j-1);
cdrc = menor(c, j+1);
for x = fsup:finf
for y = cizq:cdrc
if m(x,y) == 1
v = v + 1;
end
end
end
if m(i,j) == 1
v = v - 1;
end
19
Bibliografia
• L. Joyanes. Fundamentos de Programaciónn: Algoritmos y
Estructuras de Datos. McGraw-Hill, 1992. Capítulos 6 y 7.
• G. Clavel, J. Biondi. Introducciónn a la Programaciónn 2.
Masson, 1985. Capítulos 3 y 4.
• J. García de Jalón y otros. Aprenda Matlab 5.3 como si
estuviera en primero. Madrid, Febrero 2001.
20
10
Descargar