Está en la página 1de 26

750080M Fundamentos

de Programacin
paula.figueroa@correounivalle.edu.co

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

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)

Cmo definir listas?


El operador cons permite construir listas, de la siguiente
manera:

(cons cabeza cola)


Donde

cabeza

es

un

elemento

adicionar

en

la

lista

cola es una lista.


Todas

las

listas se

la lista vaca.

componen de

cabeza y

cola, excepto

Ejemplo
Ejemplo

Lista de nmeros del 20 al 25:

Lista con las vocales:

Ejemplo
Ejemplo

Lista de nmeros del 20 al 25:

Lista con las vocales:

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

Ejemplos

Ejercicio

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.

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:

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)))

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.

Ejemplo

Qu retorna este programa cuando n = 0?


cuando n=1?

cuando n=3?

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

aplicarla a cada uno de los elementos de la lista

operacin

luego

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

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.

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.

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.

Funciones que toman como


entradas listas

Funciones que toman como


entradas listas

Funciones que toman como


entradas listas

Funciones que toman como


entradas listas
Funciones que retornan listas
Estas

funciones

tienen

como

operador

principal cons.
En

el

(empty)

caso

base

retornan

la

lista

vaca

Ejemplo
Ejemplo
Implemente una funcin que toma como entrada
una lista de nmeros y retorna una lista con

los cuadrados de dichos nmeros.

Ejemplo

Ejemplo

También podría gustarte