7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
1/48
Tema 5: Tipos de datos estructurados
Mara de la Paz Guerrero Lebrero
Curso 2015 / 2016
Grado en Matemticas
Dr. Pedro Galindo Riao
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
2/48
Tema 5: Tipos de datos estructurados
Estructuras de datos
! En anteriores lecciones, hemos visto cmo escribir instrucciones
complejasa partir de instrucciones simples
!
Hasta ahora hemos visto datossimples, que ocupan una posicinde memoria
enteros caracteres
reales lgicos
!
De igual forma que podemos componer instrucciones, vamos apoder componer datos complejos a partirde datos simples
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
3/48
Tema 5: Tipos de datos estructurados
Estructuras de datos
! Las E.D. ms importantes son:
! Estructuras Matriciales
!Vectores (1xN)
! Matrices (MxN)
! Matrices multidimensionales (MxNxPxQx...)
! Cadenas de caracteres
! Registros (tema siguiente)
! Ficheros (tema siguiente)
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
4/48
Tema 5: Tipos de datos estructurados
Estructuras de datos
!
Las E.D. ms importantes son:
! Registros (tambin llamados estructuras)
! Estructuras Matriciales
!
Vectores (1xN)
! Matrices (MxN)
!
Matrices multidimensionales (MxNxPxQx...)
!
Cadenas de caracteres
! Ficheros (tema siguiente)
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
5/48
Tema 5: Tipos de datos estructurados
Vectores
! Es una E.D. constituida por varios datos del mismo tipo,agrupados bajo un nombre comn
! Lo declararemos de la siguiente forma:
[]
! Ejemplos:
int A[10];char dni[8];
char nombre[40];complejo V[10];
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
6/48
Tema 5: Tipos de datos estructurados
Vectores : representacin
! Sea la declaracin
int A[4]
! En algunos lenguajes, el primer elementos es A[0], y el limo esA[3]. (Esto ser lo que usaremos nosotros)
!
En otros lenguajes, el primer elementos es A[1], y el limo es A[4]
! En algunos lenguajes es incluso posible indicar al declarar lavariable vector cul es el primer y ltimo ndice permitidos
A[0] A[1] A[2] A[3]
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
7/48
Tema 5: Tipos de datos estructurados
Vectores: almacenamiento interno
!
Los elementos de un vector ocupan
posiciones consecutivas de
memoria
! Indices negativos o mayores que 3
(en este caso) hacen que se
acceda a otras posiciones de
memoria
A[0]
A[1]
A[2]
A[3]
int A[4];
A
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
8/48
Tema 5: Tipos de datos estructurados
Vectores: acceso a un elemento
! El acceso a un elemento de un vector se realiza por su posicinrelativa al comienzo del mismo
!
Para acceder a un elemento de un vector, tanto para leer sucontenido, como para asignarle un nuevo valor, se escribe elnombre de la variable, y la posicin entre corchetes de la siguienteforma:
[]
! Ejemplo:
int a[3],b[30];a[0] = 3.5;
a[1] = a[0];
a[2] = a[0];
for (i=0;i
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
9/48
Tema 5: Tipos de datos estructurados
Error habitual - fuera de rango
! Consiste en acceder a posiciones del vector incorrectas,debido a :
!
Indices menores que el menor ndice permitido (V[-3])!
Indices mayores que el mayor ndice permitido (V[28])
! Un acceso fuera de rango produce efectos inesperados, talescomo :
! Cuelgue del ordenador
!
Bucles sin fin
! Modificacin de los valores de otras variables
! comportamientos extraos del programa
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
10/48
Tema 5: Tipos de datos estructurados
Operaciones con vectores
! Las operaciones con vectores permitidas dependen dellenguaje
! Normalmente, no se permite ninguna operacin, y de existiralguna, sta es la asignacin de un vector a otro del mismotipo
! En C no se permite ninguna operacin sobre vectorescompletos
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
11/48
Tema 5: Tipos de datos estructurados
Recorrido de un vector
! Dado que el accesoa los elementos de un vector se hace elemento
a elemento, y que se conoce a priori su tamao, es muy frecuente
acceder a sus elementos con un bucleDESDE
!
Ejemplo : Asignar 0 a todos los elems. de un vector de tamao N
for (i=0;i
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
12/48
Tema 5: Tipos de datos estructurados
Recorridos habituales de un vector
! Asignar a un vector de tamao N los valores 1,2,...
for (i=0;i
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
13/48
Tema 5: Tipos de datos estructurados
Problemas propuestos
! Criba de Eratstenes para el clculo de los nmeros primos
! Convertir nmeros romanos a decimal
! Bsqueda
! Secuencial
! Binaria
! Ordenacin! seleccin
! burbuja
!
insercion! qsort
! Calcular la mediana de un vector de datos
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
14/48
Tema 5: Tipos de datos estructurados
Estructuras de datos
! Las E.D. ms importantes son:
! Estructuras Matriciales
!Vectores (1xN)
! Matrices (MxN)
! Matrices multidimensionales (MxNxPxQx...)
! Cadenas de caracteres
!
Registros (tema siguiente)
! Ficheros (tema siguiente)
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
15/48
Tema 5: Tipos de datos estructurados
Matrices
! Es una E.D. similar al vector, es decir, constituida por variosdatos del mismo tipo, agrupados bajo un nombre comn,pero donde el acceso se realiza por 2 ndices
!
El acceso a cada uno de los elementos se realiza por variosndices , que indican su posicin relativa en la fila y en lacolumna
! Lo declararemos de la siguiente forma: [][];
!
Ejemplos:int A[10][20];
complejo V[10][5];
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
16/48
Tema 5: Tipos de datos estructurados
Matrices: acceso a un elemento
!El acceso a un elemento de un vector se realizapor su posicion, indicndose la fila y la columna
donde se encuentra
!Para acceder a un elemento de un vector, tantopara leer su contenido, como para asignarle unnuevo valor, se escribe el nombre de la variable,la fila entre corchetes, y la columna entre
corchetes de la siguiente forma:
[] []
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
17/48
Tema 5: Tipos de datos estructurados
Matrices : representacin
! Sea la declaracin
int A[2][3];
!
La primera dimensin es la fila, y la segunda la columna
!Al igual que en los vectores, los rangos permitidosdependen del lenguaje. En C empezaremos en 0.
A[0][0]A[0][1]A[0][2]
A[1][0]A[1][1]A[1][2]
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
18/48
Matrices: almacenamiento interno (por filas)
int A[2][3];
Tema 5: Tipos de datos estructurados
AA[0] [0]
A[0] [1]
A[0] [2]
A[1] [0]
A[1] [1]
A[1] [2]
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
19/48
Tema 5: Tipos de datos estructurados
Recorrido de una matriz
! Dado que el accesoa los elementos de una matriz se hace elemento
a elemento, y que se conoce a priori su tamao, es muy frecuente
acceder a sus elementos con un doblebucleDESDE
! Ejemplo : Asignar 0 a todos los elems. de una matriz de tamao MxN
for(i=0;i
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
20/48
Tema 5: Tipos de datos estructurados
Asignacin de valores a una matriz
!Analizar cmo asignar los siguientes valores a una matriz:
0 1 2 3 41 2 3 4 5
2 3 4 5 63 4 5 6 7
0 1 2 3 41 0 1 2 3
2 1 0 1 23 2 1 0 1
0 1 2 3 41 1 2 3 4
2 2 2 3 43 3 3 3 4
6 6 6 6 84 4 4 6 8
1 1 4 6 80 1 4 6 8
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
21/48
Tema 5: Tipos de datos estructurados
Otros recorridos de una matriz
!Asignar valores aleatorios
for(i=0;i
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
22/48
Tema 5: Tipos de datos estructurados
Transponer una matriz
! Solucin errnea
for (i=0;i
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
23/48
Tema 5: Tipos de datos estructurados
Multiplicar dos matrices
! Sean las matrices AMxNy BNxP, calcular CMxPcomo el producto de la
matriz A por la matriz B
for (i=0;i
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
24/48
Tema 5: Tipos de datos estructurados
Operaciones con matrices
! Las operaciones con matrices permitidas dependen dellenguaje
! Normalmente, no se permite ninguna operacin , y de existiralguna permitida, sta es la asignacin de una matriz a otradel mismo tipo
! En C no se permite ninguna operacin sobre matricescompletas
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
25/48
Tema 5: Tipos de datos estructurados
Problemas propuestos!
Calcular la inversade una matriz ANxNutilizando eliminacin gaussiana de formaanloga al determinante
! Resolucin de sistemas de ecuaciones lineales
!
Juego de la vida (John Conway). Cuatro reglas:! Un organismo nace en una celda vaca si est rodeada por 3 vecinos vivos!
Un organismo sobrevive con 2 3 vecinos vivos
! Un organismo con 4 ms vecinos vivos muere por superpoblacin.!
Un organismo con 0 1 vecino vivo muere de soledad
! Encontrar submatriz en una matriz
!
Encontrar nmero de submatrices simtricas en una matriz
! Escribir un cuadrado mgico de orden N (N impar). Comenzar con 1 en elcuadrado central superior. Moverse hacia arriba y a la derecha. Si lacasilla est ocupada, continuar en la que est debajo.
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
26/48
Tema 5: Tipos de datos estructurados
Estructuras de datos
!
Las E.D. ms importantes son:
! Registros (tambin llamados estructuras)
!
Estructuras Matriciales
!
Vectores (1xN)
! Matrices (MxN)
!
Matrices multidimensionales (MxNxPxQx...)
!
Cadenas de caracteres
! Ficheros (tema siguiente)
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
27/48
Tema 5: Tipos de datos estructurados
Matrices multidimensionales
!Es una E.D. similar a las matrices, pero con ms de 2dimensiones
!
El acceso a cada uno de los elementos se realiza por
tantos ndices como dimensiones , que indican suposicin relativa en cada dimensin
!
Lo declararemos de la siguiente forma:
[][]... >][]
!Ejemplo:int cubo_rubik[3][3][3]
!Se suelen emplear tantos bucles como dimensionestenga la matriz multidimensional
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
28/48
Tema 5: Tipos de datos estructurados
Estructuras de datos
!
Las E.D. ms importantes son:
! Registros (tambin llamados estructuras)
!
Estructuras Matriciales
!
Vectores (1xN)
! Matrices (MxN)
!
Matrices multidimensionales (MxNxPxQx...)
!
Cadenas de caracteres
! Ficheros (tema siguiente)
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
29/48
Tema 5: Tipos de datos estructurados
Cadenas de caracteres
! No son ms que vectores de caracteres
! Nos permitirn almacenar en un vector de N elementos, cadenas
de caracteres de longitud N-1
! Los caracteres vlidos del vector son todos aquellos desde el
comienzo hasta que hay un elemento cuyo cdigo ASCII es el 0
L a p e z a r
76 97 32 112 101 122 97 1140
Caracteres
Codio ASCII
Cadena vlida
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
30/48
Tema 5: Tipos de datos estructurados
Cadenas de caracteres
!
En C, una cadena de caracteres se declara como un
vector de chars
char cadena[80];
!
El carcter "fin de cadena" es aquel cuyo cdigo ascii
es 0
!
Las funciones de manejo de cadenas se encuentranen la librera
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
31/48
Tema 5: Tipos de datos estructurados
Cadenas de caracteres : operaciones
! Las funciones ms usuales son:
! Lectura desde el teclado (gets)
! Escritura en pantalla (puts)
!
Copiar en una cadena un valor (strcpy)
!
Extraer una subcadena (strstr)
!
Concatenar dos cadenas en una tercera (strcat)
! Obtener la longitud de una cadena (strlen)
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
32/48
Tema 5: Tipos de datos estructurados
Cadenas de caracteres : operaciones
! La mayora de los lenguajes incorporan una librera defunciones para el manejo de cadenas
!
Las funciones incluidas suelen ser :
!
Lectura desde el teclado
! Escritura en pantalla
! Copiar en una cadena un valor
!
Extraer una subcadena
!
Asignar a una subcadena un valor
!
Concatenar dos cadenas en una tercera
!
Obtener la longitud de una cadena
!
etc., etc.
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
33/48
Tema 5: Tipos de datos estructurados
Problemas propuestos
! Reescribir todas las funciones de manejo de cadenasvistas
!
Realizar la funcininsertar(cadena,subcadena,posicion)
! Realizar la funcin encontrar(cadena,subcadena):int
! Invertir una cadena sin usar ninguna cadena auxiliar
! Determinar si una cadena es palndroma
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
34/48
Tema 5: Tipos de datos estructurados
Paso de E.D. como parmetros
!
Datos simples y estructuras
! Directamente, slo se pueden pasar por valor
!
Si se quiere pasar un dato simple o una estructura porreferencia es preciso la utilizacin de punteros
!Vectores y matrices
! Slo se pueden pasar por referencia
! No es posible de ninguna forma, directa o indirecta, pasar un
vector o matriz por valor
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
35/48
Tema 5: Tipos de datos estructurados
Paso de vectores como parmetros
float A[10];
void inicializa1(float A[],int N){int i;
for (i=0;i
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
36/48
Tema 5: Tipos de datos estructurados
Paso de matrices como parmetros
float A[10][5];
void inicializa1(float A[][5],int M, int N);
void inicializa2(float A[10][5],int M, int N);
inicializa1(M,10,5);
Opcin A
Opcin B
Llamada
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
37/48
Tema 5: Tipos de datos estructurados
E.D. como parmetros de salida
!
C permite que una funcin devuelva datos simples y/o
estructuras
! C no permite que una funcin devuelva vectores o matrices
!
Para devolver una matriz se puede utilizar el truco de
"encajar" la matriz en una estructura
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
38/48
Tema 5: Tipos de datos estructurados
Problemas propuestos
!
Reescribir todas las funciones de manejo de cadenas vistas
!Realizar la funcin insertar(cadena,subcadena,posicion)
! Realizar la funcin encontrar(cadena,subcadena):int
!
Invertir una cadena sin usar ninguna cadena auxiliar
! Determinar si una cadena es palndroma
! Leer una cadena, y escribir cuntas veces aparece cada una
de sus letras
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
39/48
Bsqueda y ordenacin
Tema 5: Tipos de datos estructurados
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
40/48
Tema 5: Tipos de datos estructurados
Mtodos de Bsqueda
!
Se trata de resolver el problema de encontrar un elemento
dado en una E.D.
! Reduciremos el problema a buscar un elemento en un vector
!
Es fcil extender los principios explicados a otras E.D.
! Los mtodos bsicos de bsqueda sobre vectores son:
! Bsqueda lineal
!
Bsqueda binaria
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
41/48
Tema 5: Tipos de datos estructurados
Bsqueda lineal! Consiste en recorrer de forma secuencial todos los elementos del vector. El pseudocdigo es:
FUNC busqlineal(int x[], int N, int datobuscado):int{
int i, posicion
posicion !-1
DESDE i !0 HASTA N-1 {
SI (x[i] = datobuscado) posicion !i;
}
devolver(posicion);
}
NOTA : En los sucesivos programas supondremos que la funcin devuelve la posicin del dato buscado, o -1 si no est
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
42/48
Tema 5: Tipos de datos estructurados
Bsqueda lineal mejorada (I)! Deberamos interrumpir el bucle cuando hayamos encontrado el dato. El pseudocdigo es :
FUNC busqlineal(int x[], int N, int datobuscado):int{
int i
logico encontrado
i !0
encontrado !FALSO
MIENTRAS (i < N) AND (NOT encontrado) {
SI (x[i] = datobuscado){
i !posicion
}
devolver(posicion)
}
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
43/48
Tema 5: Tipos de datos estructurados
Bsqueda lineal mejorada (II)
! Si sabemos que el vector est ordenado, deberamos interrumpir
el bucle cuando hayamos encontrado el dato o bien cuando el
dato actual sea menor que el buscado.
! Se propone como ejercicio realiza el pseudocdigo
correspondiente
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
44/48
Tema 5: Tipos de datos estructurados
Bsqueda binaria
!
Slo es aplicable a vectores ordenados
!
Es preciso que:! Archivo ordenado por clave
!
Registros de longitud fija
!
Bsqueda, partir el archivo a la mitad y comparar la clave.
! Si N es el n de registros, el nmero medio de bsquedas
ser del orden de log2(N)
!
Se mejora la bsqueda secuencial (orden N)
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
45/48
Pseudocodigo bsqueda binariainicio = 0;
final = n-1;
while(inicio v[medio])
inicio = medio+1;
else
final = medio-1;
}
}
return -1;
Tema 5: Tipos de datos estructurados
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
46/48
Mtodos de ordenacin
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
47/48
Tema 5: Tipos de datos estructurados
Ordenacin por burbuja
for(j = 1; j < n ; j++){
for(i = 0; i < n - j; i++){
if(pvector[i] > pvector[i+1]){
aux = pvector[i]
pvector[i] = pvector[i+1];
pvector[i+1] = aux;
}
}
}
7/24/2019 Tema05-Tipos de Datos Estructurados.pptx
48/48
Tema 5: Tipos de datos estructurados
Ordenacin por seleccin
for(i=0; i
Top Related