Tema05-Tipos de Datos Estructurados.pptx

  • Upload
    jose

  • View
    221

  • Download
    0

Embed Size (px)

Citation preview

  • 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

    [email protected]

    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