carlos.andres.delgado@correounivalle.edu.co
Carlos Andr´es Delgado S. Facultad de Ingenier´ıa. Universidad del Valle
Fundamentos de programaci´on
Carlos Andr´es
Delgado S. Definici´on
En algunas ocasiones tenemos muchas piezas de informaci´on del mismo tipo y se tiene problemas en como procesarlas. Para esto se tiene un tipo de dato llamado lista que permite tener un n´umero indefinido de piezas de informaci´on. Por ejemplo la lista de regalos de navidad de un ni˜no:
" i p h o n e 7 " " p l a s t i l i n a " " s e d a n t e " " b a n d e r a p i r a t a " " ojo de v i d r i o "
Delgado S.
1 Para una lista vac´ıa (sin elementos)
empty
2 Para una lista de un elemento:
(c o n s " i p h o n e 7 " empty )
3 Para una lista de dos elementos:
(c o n s " s e d a n t e " (c o n s " ojo de v i d r i o " empty ) )
¿C´omo construir´ıa la lista de nuestro ni˜no?:
" i p h o n e 7 " " p l a s t i l i n a " " s e d a n t e " " b a n d e r a p i r a t a " " ojo de v i d r i o "
Fundamentos de programaci´on Carlos Andr´es Delgado S. Definici´on
La lista de nuestro ni˜no es as´ı:
(c o n s " i p h o n e 7 " (c o n s " p l a s t i l i n a " (c o n s " s e d a n t e " (c o n s " b a n d e r a p i r a t a " (c o n s " ojo de v i d r i o " empty ) ) ) ) )
Delgado S.
Ejercicios en clase
En Dr Racket:
1 Construya una lista con los planetas del sistema solar 2 Construya una lista con sus 4 comidas favoritas 3 Construya una lista con cuatro colores
Fundamentos de programaci´on Carlos Andr´es Delgado S. Contrato
En nuestros contratos, ahora vamos a agregar el tipo de dato lista-de-X donde X son el tipo de dato de los elementos de la lista. Ejemplo ; ; A u t o r : C a r l o s A n d r ´e s Delgado , c o d i g o : 1 3 0 1 6 6 2 ; ; F e c h a de c r e a c i ´o n : 10- S e p t i e m b r e - 2 0 1 6 ; ; C o n t r a t o : l i s t a 3 n u m e r o s : numero , numero , n u m e r o - > l i s t a - d e - n u m e r o s ; ; P r o p ´o s i t o : E s t e p r o g r a m a r e c i b e 3 n ´u m e r o s y r e t o r n a una l i s t a ; ; E j e m p l o : ( l i s t a 3 n u m e r o s 1 2 3) r e t o r n a ( c o n s 1 ( c o n s 2 ( c o n s 3 e m p t y ) ) ) ; ; F u n c i ´o n ( d e f i n e ( l i s t a 3 n u m e r o s x y z ) (c o n s x (c o n s y (c o n s z empty ) ) ) ) ; ; E j e m p l o ( l i s t a 3 n u m e r o s 1 2 3 )
Delgado S.
Contrato
Los m´as comunes que vamos a usar
1 lista-de-numeros 2 lista-de-simbolos
3 lista-de-<estructura>, donde estructura es una estructura
Fundamentos de programaci´on
Carlos Andr´es
Delgado S. Ejercicios en clase
En Dr Racket:
1 Construya una funci´on que reciba 3 colores y retorne una
lista con ellos.
2 Construya una funci´on que reciba 3 n´umeros (a,b y c): 1 Si a > c entonces retorna una lista en este orden (a b c) 2 Si a < c y a < b entonces retorna una lista en este orden
(b c a)
3 En otro caso retorna (c a b)
Delgado S.
Acceder a una lista
Para acceder a una lista se cuentan con las siguiente funciones:
1 first Accede al primer elemento de la lista 2 rest Accede al resto de la lista
Fundamentos de programaci´on
Carlos Andr´es Delgado S.
Acceder a una lista
Pruebe: ( d e f i n e l i s t a − n u m e r o s (c o n s 1 (c o n s 4 (c o n s 7 (c o n s 8 empty ) ) ) ) ) (f i r s t l i s t a − n u m e r o s ) (r e s t l i s t a − n u m e r o s ) (f i r s t (r e s t l i s t a − n u m e r o s ) ) ¿Que observa?
Delgado S.
Acceder a una lista
Si observa detenidamente, first retorna elementos de la lista y rest listas, ya que la composici´on de una lista es un elemento seguido de una lista
(c o n s x y )
; ; x es e l e m e n t o
Fundamentos de programaci´on
Carlos Andr´es Delgado S.
Acceder a una lista
Pruebe:
( d e f i n e l i s t a − n u m e r o s (c o n s 1 (c o n s 4 (c o n s 7 (c o n s 8 empty ) ) ) ) )
(l e n g t h l i s t a − n u m e r o s ) ¿Que observa?
Delgado S.
Dado el caso anterior:
( d e f i n e l i s t a − n u m e r o s (c o n s 1 (c o n s 4 (c o n s 7 (c o n s 8 empty ) ) ) ) )
1 Acceda al tercer elemento de la lista: debe retornar 7 2 Acceda al cuarto elemento de la lista: debe retornar 8 3 Acceda al ´ultimo elemento de la lista: debe retornar empty
o ’()
Tenga cuidado, si ejecuta (first empty) o (rest empty) dar´a error ya que la lista vac´ıa no tiene elementos.
Fundamentos de programaci´on Carlos Andr´es Delgado S. Ejercicios en clase
1 Construya una funci´on que reciba una lista de 3 elementos
(numeros) y retorne su suma
2 Construya una funci´on que reciba dos listas de 4
elementos cada una, la primera lista tiene n´umeros y la segunda tiene cadenas de texto, la funci´on ubica el mayor elemento de la primera lista devolviendo el elemento de la segunda lista que le corresponde, ejemplo:
( d e f i n e l i s t a − n u m e r o s (c o n s 1 (c o n s 3 (c o n s 8 (c o n s 2 empty ) ) ) ) ) ( d e f i n e l i s t a − c o s a s (c o n s " g a t o " (c o n s " p e r r o " (c o n s " l o b o " (c o n s " m u l a " empty ) ) ) ) ) ; ; La f u n c i ´o n d e b e r e t o r n a r " l o b o "
Delgado S. 1 Construya una funci´on, que reciba dos simbolos (a y b) y
una lista. Esta funci´on busca en el lista el simbolo a en la lista y la reemplaza por el simbolo b.
( d e f i n e l i s t a − s i m b o l o s (c o n s ’ d i a (c o n s ’ n o c h e (c o n s
’ p e r r o (c o n s ’ p e r r o ) ) ) ) )
( r e e m p l a z a r ’ p e r r o ’ l o b o l i s t a − s i m b o l o s )
; ; R e t o r n a ( c o n s ’ dia ( c o n s ’ n o c h e ( c o n s ’ l o b o ( c o n s ’ l o b o ) ) ) )
2 Construya una funci´on que recibe un n´umero y una lista
de n´umeros. Si se ingresa el n´umero 1, se retorna la suma de la lista, si se ingresa 2, se retorna la multiplicaci´on de los elementos, en otro caso se retorna 0.
Fundamentos de programaci´on
Carlos Andr´es Delgado S.