Upload
shinigami-romero
View
232
Download
0
Embed Size (px)
Citation preview
8/18/2019 Estructuras Complejas
1/17
Estructuras Complejas
• Las tuplas son conjuntos o secuencias heterogéneaselementos, con una longitud (nº de elementos),predefnida que no puede variar.
• Las listas son secuencias de elementos del mismo tipcuya longitud puede variar e incluso, no especifcarslistas infnitas.
8/18/2019 Estructuras Complejas
2/17
!uplas " #inta$is
(t1, t2, ... , tn)
La tupla posee n elementos. &or tanto, si escri'imouncin que acepte como par*metro esta necesariamente la tupla actual que sirva de argum
una llamada a la uncin de'e contar con n eleme$actamente. La signatura de la tupla es
(tipo1, tipo2, ... , tipon)
8/18/2019 Estructuras Complejas
3/17
Ejemplo + tuplas
!uplassuma::(Int, Int)->Int
suma ($, y)$-y
cepta una tupla de dos elementos enteros
#in tuplassuma::Int->Int->Int
suma $ y$-y
cepta dos n/meros enteros independientes no agrup
estructura compleja alguna
8/18/2019 Estructuras Complejas
4/17
Ejercicios
0. 1ncrementa todos los elementos de una tupla de treenteros.
2. 3ada una cantidad de segundos, devuelve la cantidhoras, minutos y segundos.
8/18/2019 Estructuras Complejas
5/17
Listas en 4as5ell6na lista es una estructura de datos que
representa un conjunto de datos de un mismotipo
8/18/2019 Estructuras Complejas
6/17
3eclaracin
• 71nt8 9epresenta una lista de enteros 7:,;, 8
• 7Char8 9epresenta una lista de chars 7?l@,@i@,@n@,@u@,@$@8
• 7Aool8 9epresenta una lista de valores 'ooleanos 7!rue, Balse
• 7#tring8 9epresenta una lista de strings 7'uenasD,DnochesD8
•7Bloat8 9epresenta una lista de otantes 72.;,;.F,:.G,H.0 8
• 6na lista vacIa se representa 7 8 y algo importante para el malistas es separar el primer elemento (ca'eJa), del resto(cola) sgt manera($$s) . K representa la ca'eJa y $s la cola.
8/18/2019 Estructuras Complejas
7/17
3eclaracin Listas
• #inta$is para especifcar los datos de una lista
• 1:2:3:[] 6so del operador (asociativo por la derecha).
• [1,2,3] Borma m*s cmoda y adecuada.
• ‘a’:’b’:[] = [‘a’,’b’] = "ab" En el caso de las cadenas decaracteres.
8/18/2019 Estructuras Complejas
8/17
Listas
• &ara el manejo de listas 4as5ell utiliJa la recursividad, poque de'emos sa'er detener la recursividad y para estonecesitamos especifcar un caso 'ase. &or ejemplo
• 0.+ #umar los elementos de una lista. En este caso, el caso
es que la lista se encuentre vacIa y devuelve >, mientras tque siga sumando los elementos con la operacin recursiv
sumar71nt8+M1ntsumar 7 8 >sumar ($$s) $ - sumar($s)
8/18/2019 Estructuras Complejas
9/17
Conjunto de unciones predefni
para el manejo de listas• length xs N O/mero de elementos de xs.
• xs ++ ys N Concatena las listas argumentos.
• concat xss N concatena todas las listas del argumen
• ap ! xs N aplica la uncin ! so're los elementos de
8/18/2019 Estructuras Complejas
10/17
Listas de n/meros
• Ootacin especial para lista de n/meros, donde la dieentre elementos consecutivos es constante• [..n] P [, +1, +2, ... ,+n]
• [1..3] P[1,2,3]
•[1..] P[1,2,3,,#,...] P Lista infnita
• &ara lista donde la dierencia entre sus elementos no eutiliJa lo siguiente
• [m,k..n]
8/18/2019 Estructuras Complejas
11/17
Listas de Comprehensin
• La notacin $ist %op&ehension es similar a la utiliJada enmatem*ticas para construir conjuntos, y puede ser muy /til ahora de construir ciertos tipos de listas. La sinta$is es como
[exp&esion'calicao&,calicao&,...]
• Con esta e$presin se genera una lista donde los elementos sla orma de expresion y cumplen las condiciones e$presadalos califcadores.
8/18/2019 Estructuras Complejas
12/17
Listas de Comprehensin
La e$presin puede ser cualquier e$presin v*lida y los califcadores puedde G tipos generadores, fltros y defniciones locales.
• *ene&ao&es Qeneran un n/mero de elementos que se pueden usar en e$presin de la lista. #u sinta$is es patron
8/18/2019 Estructuras Complejas
13/17
Ejemplos
• 7nRnP+70..;88 M 70,2,G,:,;8
• 7nSnRnP+70..;88 M 70,:,
8/18/2019 Estructuras Complejas
14/17
Ejemplos
Función que determina si um número es primo o
divisores Int->[Int
divisores n7dRdP+70..n8, n ?mod@ d>8
primo Int->!ool
primo n(divisores n70,n8)
8/18/2019 Estructuras Complejas
15/17
Ejemplos
• Función que devuelve el n"simo elemento de unlista
enesimo Int->[Int->Int
enesimo 0 (ccola)c
enesimo n (ccola)enesimo(n+0) cola
8/18/2019 Estructuras Complejas
16/17
Ejemplo
• Buncin que invierte una listainvertir71nt8+M71nt8
invertir 7878invertir (ccola)invertir cola -- 7c8
8/18/2019 Estructuras Complejas
17/17
Ejercicios
0. 1ncrementa todos los elementos de una lista de ent