Practica-6 - Práctica 6 LPP PDF

Title Practica-6 - Práctica 6 LPP
Course Diseño De Bases De Datos
Institution Universidad de Alicante
Pages 3
File Size 122.2 KB
File Type PDF
Total Downloads 69
Total Views 166

Summary

Práctica 6 LPP...


Description

Práctica 6: Listas estructuradas y barrera de abstracción Ejercicio 1 a) Define en Scheme el procedimiento (aplana lista) que tome una lista estructurada como parámetro y devuelva una lista que contenga sus elementos. Ejemplo: (aplana '(1 (2 (3) (4 (5 (6) 7))))

b) Define en Scheme el procedimiento (suma-listas lista1 lista2) recursivo que tome como parámetro dos listas estructuradas de números con la misma estructura y devuelva una lista estructurada con la misma estructura, que contenga la suma de los elementos de ambas. Ejemplo: (suma-listas '(1 (2 (3) (4 (5 (6) 7)))) '(1 (3 (2) (1 (1 (1) 10)))))

Ejercicio 2 Define una función recursiva (reducir-lista lista) que reciba una lista estructurada y devuelva una nueva lista estructurada como resultado de eliminar las sub-listas planas contenidas. Puedes utilizar la función plana? definida en teoría. Ejemplo: (reducir-lista '(1 2 (3 4) 5 6) (reducir-lista '(1 2 (3 4) (5 6 (7 8) 9) 10)) (reducir-lista ‘(1 2 3))

Ejercicio 3 Define la función (es-valida-exp-arit? exp) que reciba una lista estructurada como argumento y compruebe si es una expresión aritmética válida de Scheme, es decir, una expresión donde el primer elemento es una función y el resto son números u otras expresiones aritméticas.

Una expresión aritmética válida se define como: expr-arit-valida(exp): number?(exp) expr-arit-valida(exp): operador?(primero(exp)) AND validas-resto(resto(exp)) validas-resto(exp): vacia?(exp) validas-resto(exp): expr-arit-valida(primero(exp)) AND validas-resto(resto(exp)) Puedes ayudarte de un procedimiento auxiliar operador? que compruebe si un determinado símbolo es +,-,*,/. Ejemplo: (es-valida-exp-arit? '(+ (2 3) 1)) (es-valida-exp-arit? '(* (- 2 (- 3 1) 4) 1 (+ (* 2 (+ 3 4)) 4)))

Ejercicio 4 Define la función recursiva (calcula-op lista) que reciba una lista estructurada como argumento que defina una operación aritmética y devuelva su resultado. (calcula-op '(+ (- 5 2) 3)) (calcula-op '(* (- 2 (+ 3 (* 4 (- 6 2) 3) 1)) 1))

Puedes ayudarte del siguiente procedimiento: (define (operator op) (cond ((equal? op '+) +) ((equal? op '-) -) ((equal? op '*) *) ((equal? op '/) /) (else (error "Operador desconocido: " op))))

Ejercicio 5 a) Diseña en Scheme la barrera de abstracción de los tipos de datos punto2D y circulo , definido a partir de un centro situado en un punto2D x,y y un radio r. Defínelos como objetos funcionales. Define constructores, selectores y los operadores intersectan? , engloba? y traslada para el círculo y al menos dos para el `punto2D. b) Implementa y prueba las funciones definidas en las barreras de abstracción diseñadas en el apartado anterior.

Ejercicio 6

a) Implementa en Scheme la función (bounding-box lista-cir) que reciba una lista de círculos y devuelva una pareja con los dos puntos2D (xmin,ymin),(xmax,ymax) que definen las esquinas del rectángulo que engloba a todos los círculos (bounding-box) como se muestra en la figura:

image b) Explica si tu solución genera un proceso recursivo o iterativo.

Lenguajes y Paradigmas de Programación, curso 2013–14 © Departamento Ciencia de la Computación e Inteligencia Artificial, Universidad de Alicante Cristina Pomares, Domingo Gallardo...


Similar Free PDFs