Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

7.FP-2015 (cons-List)

No description
by

Víctor Andres Bucheli

on 19 May 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of 7.FP-2015 (cons-List)

Fundamentos de programación
Ejercicios recursividad sobre listas
atoms-cons-lists
Atoms
empty-Cons : tuplas
Las tuplas son utilizadas para representar datos compuestos.
Se utilizan para representar varios datos combinados.
Este es el primer paso para definir una lista las cuales tiene un tamaño no definido pero determinado.
cons - DAtos de primera clase
First rest
List
cons
En Scheme el tipo de dato compuesto más simple es la pareja: una entidad formada por dos elementos. Se utiliza la función cons para construirla.
cons en resumen
List
la interacción en un dibujo
¿y si los programas son interactivos?
receta para diseñar programas interactivos
¿cómo se programa la interacción?
Listas definición recursiva
Qué tipo de datos utilizar
Nueva receta
Limitaciones
de los datos de longitud fija
Cómo saber cuántas veces jugó
Definición inductiva de conjuntos
atoms-Cons-list DrRacket
El teachpack universe apoya la construcción de programas interactivos que
recrean mundos.
A partir de un
mundo inicial
, el usuario interactúa con el mismo haciéndolo evolucionar. La interacción termina cuando se llega a un
mundo final
.
La
interacción
se da por medio del
reloj
(tictac), del
ratón
(clic), o del
teclado
(teclas) los cuales disparan
eventos
gestionados por medio de
funciones manejadoras de eventos
(funciones que dado un estado del mundo y un evento, calculan un nuevo estado del mundo).
La
interacción
se refleja gráficamente por medio de una función graficadora que se encarga de dibujar el mundo después de cada interacción.
w0 es el mundo inicial
cth maneja eventos del reloj
keh maneja eventos del teclado
meh maneja eventos del ratón
deh gráfica el mundo
seh decide cuando parar
1.
Definición de datos para representar los
estados
del mundo.
Definición de constantes físicas y gráficas.
Definición de datos que representa el
estado
.
2.
Definir qué tipo de interacciones (
eventos
) se programarán (
manejarán
). Ponerlas en la lista de deseos.
3.
Definir la función
principal
, que no es más que una función que recibe el
estado inicial
y lanza el mundo aplicando
big-bang.
4.
Diseñar con la receta para programas unidireccionales las funciones en la lista de deseos.

1. Realice la suma de tres números
2. Consultar un nombre en un teléfono
3. Calcular los grados centígrados en una habitación
4. Calcular qué medalla entregar de acuerdo a un puntaje en otro caso false
5. Calcular el promedio de notas
6. Indicar si es par o no
7. Almacenar cédula, nombre y apellidos
8. La probabilidad se mide entre 0 y 1
Numbers
Strings
Symbols
Booleans
Characters
Operaciones con datos simples
Operaciones lógicas
Enumeraciones
Intervalos
Cons-Lists
Define constantes
Define funciones
Composición de funciones
if
Cond
Atom
Procesamiento de datos atom
Duplas
Procesamiento de duplas
Listas
Procesamiento de listas
Tener en cuenta
DrRacket
Qué temas vemos hoy?
Desarrolle un programa que devuelva true en el caso de que el parámetro sea un valor par o false en el caso contrario (impar).

Tip recuerde que el residuo de la división en DrRacket se puede utilizar como la función modulo.
Una expresión es una lista o un átomo.
Un átomo es un símbolo o un número. Un número se puede escribir en cualquiera de las notaciones habituales (punto decimal, exponencial, ...).
Un símbolo se representa por un nombre, que está formado por caracteres alfanuméricos.


empty-Cons : tuplas
empty-Cons : tuplas
>empty
> (cons 1 2)
’(1 . 2)
> (car (cons 1 2))
1
> (cdr (cons 1 2))
2

Funciones de acceso car y cdr
Una vez definida una pareja, podemos obtener el elemento correspondiente a su parte izquierda con la función car y su parte derecha con la función cdr:
(define c (cons 1 2))
(car c) ; ->
(cdr c) ; ->
Desarrolle la suma de 3 números en una lista: crearla con cons y sumar los valores. Tip utilice CAR CDR
En un lenguaje de programación un elemento es de primera clase cuando puede:
Asignarse a variables
Pasarse como argumento
Devolverse por una función
Guardarse en una estructura de datos mayor

Una pareja puede asignarse a una variable:
(define p1 (cons 1 empty))
(define p2 (cons 5 empty))
Una pareja puede pasarse como argumento y devolverse en una función:
(define (suma-parejas p1 p2)(+ (car p1) (car p2)))
(suma-parejas p1 p2)
(suma-parejas '(1 5) '(4 12))

Si quieres enlazar dos piezas de datos en tu programa en Racket, independientemente del tipo, una forma común de hacerlo es con la función cons. Cuando llamas a la función cons, Racket asigna un pequeño trozo de memoria para mantener las referencias a los objetos que se están ligando.

Ejercicio: defina la función (pair-add1 p) que recibe un par de números y retorna un nuevo par dónde los dos elementos fueron incrementados en "1".
Toda estructura se puede codificar con pares. En particular, las listas pueden ser construidas encadenando pares (con cons), usando empty (o null, o ’()) como último elemento
DrRacket permite manejar listas como un tipo de datos básico. Funciones para crear, añadir y recorrer listas.
(define k (list 1 2 3 4))
Escriba de las tres formas una lista de 4 números pares
>(First
)
>
>(rest
)
>
(first '((peas carrots tomatoes) (pork beef chicken)))
>?
Funciones sobre listas
cons?
list?
(length a)
(length '())
(cons 1 '(1 2 3 4))
(append '(1) '(2 3 4) '(5 6 7) '())
(map add1 '(3 -4.01 2/5))
Proponga una función que identifique los valores numéricos de la lista '(2 1 a b)
> (list 1 2 (+ 1 2))
’(1 2 3)
> ’(1 2 (+ 1 2))
’(1 2 (+ 1 2))
(cons 'trian. (cons 'trian. cons ('trian. empty)))
(define lista (list 'trian. 'trian. 'trian.))
Empty
first
Rest
Empty
rest
número
lista
número
lista
desgloce
intervalo
boleano
struct
A un jugador de guess my number le dan puntos por cada vez que juega. El juego almacena el puntaje obtenido por cada jugada de acuerdo con el tiempo de juego (entre menos tiempo mayor puntaje). Al final del día se quiere saber cuantas veces jugó. Realice una función que permita saber cuántas veces jugo. Una lista de ejemplo es: (define PuntajeJuego (list 20 23 30 12 32 34))
Encuentre la definición recursiva
Definición inductiva de conjuntos
;Lista de puntajes de juego LPJ
;– empty
;– (cons number LPJ)
Más ejemplos
Gráfica de cajas - listas
ejercicio con listas
Un estudiante de FP está trabajando para Motorola y el nuevo celular se lanzará la próxima semana. El trabaja en las aplicaciones de usuario. Una de ella es la de administración de contactos, en ésta la lista de contactos se puede actualizar (añadir o borrar nombres) y consultarla (buscar un nombre específico) cuando lo desee. Se le ha asignado la tarea de diseñar una función que, dada la lista de contactos, determine si el nombre "Walli" está incluido allí.
Buscando a Walli!
Una Nueva receta!
Nueva receta recursividad
Bienvenido a DrRacket, versión 5.3.1 [3m].
Lenguaje: Estudiante Principiante; memory limit: 128 MB.
true
All 5 tests passed!
definición de datos, encabezado y ejemplos
Cuando el problema maneja
información de tamaño variable
se necesitan
datos recursivos
.
Una definición de datos recursivos es
válida
si:
Contiene al menos
dos cláusulas.
Al menos una de las cláusulas
no hace referencia
al mismo tipo.
Al menos una de las cláusulas
hace referencia
al mismo tipo.
Se pueden crear datos de
tamaño variable.
La firma, el propósito y el encabezado
igual que antes.
Diseñe pruebas con datos que se construyan
usando las cláusulas recursivas varias veces.
plantilla de la función
Al igual que con datos de desglose y estructuras, se usa una
expresión

cond
por cada cláusula en la definición de datos.
empty-cons? condición parada.
En los casos de
cláusulas recursivas
, formule invocaciones recursivas a la función que está diseñando -> )
Recursión Natural. Firts y rest.
Por ejemplo reverse de una lista.
código completo de la función y pruebas
Primero complete las cláusulas
cond
que no contienen recursión natural ->
Casos de base.
Para los
casos de recursión
:
Asegúrese de saber lo que calcula cada expresión dentro de la plantilla.
El propósito de la función que está diseñando, le permitirá inferir lo que calcula la invocación recursiva.
Combine
todos los valores calculados, para construir la respuesta.
Por último, las
pruebas
que cubran todos los casos base y de recursión.

Ejemplos:
Calcular el promedio de una lista de números.
Promedio de una lista
Full transcript