Clase 7(1).pdf

download Clase 7(1).pdf

of 26

Transcript of Clase 7(1).pdf

  • 7/24/2019 Clase 7(1).pdf

    1/26

    750080M Fundamentosde Programacin

    [email protected]

  • 7/24/2019 Clase 7(1).pdf

    2/26

    Contenido de la clase

    1. Qu es una Lista?

    2. Cmo definir listas?

    3. Ejemplo

    4. Operadores de listas

    5. Ejemplo

    6. Funciones que toman como entradas listas

  • 7/24/2019 Clase 7(1).pdf

    3/26

    Qu es una lista?

    La lista es un tipo de dato recursivo porque se

    define en

    trminos de si misma.

    Una lista es:

    Una lista vaca: empty

    Una lista construda: (con s elemento lista)

  • 7/24/2019 Clase 7(1).pdf

    4/26

    Cmo definir listas?

    El operador cons permite construir listas, de la siguiente

    manera:

    (cons cabeza cola)

    Donde cabeza es un elemento a adicionar en la lista y

    cola es una lista.

    Todas las listas se componen de cabeza y cola, excepto

    la lista vaca.

  • 7/24/2019 Clase 7(1).pdf

    5/26

    Ejemplo

    Ejemplo

    Lista de nmeros del 20 al 25:

    Lista con las vocales:

  • 7/24/2019 Clase 7(1).pdf

    6/26

    Ejemplo

    Ejemplo

    Lista de nmeros del 20 al 25:

    Lista con las vocales:

  • 7/24/2019 Clase 7(1).pdf

    7/26

    Operadores de listas

    Anteriormente se habl de la cabeza y cola de una

    lista, existen operadores que nos permiten acceder a

    estos dos elementos:

    first : retorna el primer elemento de la lista

    rest : retorna la cola de una lista

  • 7/24/2019 Clase 7(1).pdf

    8/26

    Ejemplos

  • 7/24/2019 Clase 7(1).pdf

    9/26

    Ejercicio

  • 7/24/2019 Clase 7(1).pdf

    10/26

    Ejemplo

    Desarrolle la funcin saludos, la cual tiene como entrada un nmero

    natural n y produce una lista que tienen n veces el smbolo 'hola

    cuntas veces hay que repetir el smbolo?

    cmo resolvera usted el problema usando lpiz y papel?

    Contando!!

    Entonces debemos hacer en Dr. Racket un programa que repita una

    operacin, o que cuente hasta n.

  • 7/24/2019 Clase 7(1).pdf

    11/26

    Ejemplo

    ;;Contrato:

    ;; saludos: n -> lista

    ;; Propsito: generar una lista que tenga el

    ;;smbolo 'hola n veces

    ;;Anlisis de los datos:

    ;;- Cuando n es cero: el programa retorna una lista vaca

    ;;- De lo contrario:

  • 7/24/2019 Clase 7(1).pdf

    12/26

    Ejemplo

    ;;Ejemplos

    ;;Si n es 1, el programa debe retornar la lista con un

    ;;elemento: (cons 'hola empty)

    ;;Si n es 3, el programa debe retornar la lista con 3

    ;;elementos: (cons 'hola (cons 'hola (cons 'hola empty)))

  • 7/24/2019 Clase 7(1).pdf

    13/26

    Ejemplo

    Como no sabemos el valor de n, necesitamos un conjunto de

    instrucciones que se repitan hasta que se cumpla una

    condicin.

    La condicin es el criterio de parada, o el caso base.

    Las instrucciones que deben repetirse, deben dar solucin

    al problema.

    La forma de repetirlas es por medio de llamados recursivos

    a la funcin.

  • 7/24/2019 Clase 7(1).pdf

    14/26

    Ejemplo

    Qu retorna este programa cuando n = 0?

    cuando n=1?

    cuando n=3?

  • 7/24/2019 Clase 7(1).pdf

    15/26

    Funciones que toman como

    entradas listas

    La mayora de las funciones que tienen listas como entrada deben

    recorrer la lista. Ejemplos:

    sumar los elementos de una lista.

    buscar un elemento en la lista.

    contar los elementos de una lista.

    Y por cada elemento de la lista, se hace una operacin sumarlo,

    compararlo, o contarlo.

    Por eso debemos tener muy claro cul es la operacin y luego

    aplicarla a cada uno de los elementos de la lista

  • 7/24/2019 Clase 7(1).pdf

    16/26

    Funciones que toman como

    entradas listas

    Sea la lista:

    (cons 11 (cons 12 (cons 13 (cons 14 empty))))

    sumar todos los elementos:

    (+ 11 (+ 12 (+ 13 (+ 14 (0)))) porque empty no cuenta!!

    buscar si 16 est en la lista:

    11 es 16?, 12 es 16?....14 es 16?, vaco es 16? no est en la lista

  • 7/24/2019 Clase 7(1).pdf

    17/26

  • 7/24/2019 Clase 7(1).pdf

    18/26

    Funciones que toman como

    entradas listas

    Sea la lista:

    (cons 11 (cons 12 (cons 13 (cons 14 empty))))

    sumar todos los elementos:

    (+ 11 (+ 12 (+ 13 (+ 14 (0)))) porque empty no cuenta!!

    buscar si 16 est en la lista:

    11 es 16?, 12 es 16?....14 es 16?, vaco es 16? no est en la lista

    contar cuantos elementos tiene

    11 (1), 12 (2), 13 (3), 14 (4), empty (no cuenta)

    la lista tiene 4 elementos.

    OJO: empty es un elemento de la lista, pero un elemento que no cuenta.

  • 7/24/2019 Clase 7(1).pdf

    19/26

    Funciones que toman como

    entradas listas

    Para realizar funciones como las anteriores se debe recorrer la lista y

    aplicarle una operacin, ya sea first o rest.

    Con la operacin first, se toma el primer elemento. Con rest, se hace

    el llamado recursivo a la funcin con el resto de la lista.

    El caso recursivo tiene entonces:

    La aplicacin de la operacin entre (first la_lista) con el resultado

    que retorna el llamado a la misma funcin con el resto de la lista.

  • 7/24/2019 Clase 7(1).pdf

    20/26

    Funciones que toman como

    entradas listas

  • 7/24/2019 Clase 7(1).pdf

    21/26

    Funciones que toman como

    entradas listas

  • 7/24/2019 Clase 7(1).pdf

    22/26

    Funciones que toman como

    entradas listas

  • 7/24/2019 Clase 7(1).pdf

    23/26

    Funciones que toman como

    entradas listas

    Funciones que retornan listas

    Estas funciones tienen como operador

    principal cons.

    En el caso base retornan la lista vaca

    (empty)

  • 7/24/2019 Clase 7(1).pdf

    24/26

    Ejemplo

    Ejemplo

    Implemente una funcin que toma como entrada

    una lista de nmeros y retorna una lista con

    los cuadrados de dichos nmeros.

  • 7/24/2019 Clase 7(1).pdf

    25/26

    Ejemplo

  • 7/24/2019 Clase 7(1).pdf

    26/26

    Ejemplo