clase 7(1).pdf
TRANSCRIPT
-
7/24/2019 Clase 7(1).pdf
1/26
750080M Fundamentosde Programacin
-
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