Práctica 2: Archivos requeridos


Descarga aquí

practica2.rkt

Archivo con los tipos de datos y funciones a completar.

#lang plai

#| Práctica 2: Tipos de datos abstractos |#

;; TDA para representar funciones.
;; Se tienen constructores para la variable independiente, constantes, suma de funciones, 
;; multiplicación de funciones, división de funciones y potencia.
(define-type funcion
   [tipo-funcion-no-implementado])

;; Función que regresa una cadena de caracteres, representando a la función que recibe como parámetro.
;; funcion->string: funcion -> string
(define (funcion->string f)
   (error 'funcion->string "Función no implementada."))

;; Función que devuelve el resultado de evaluar la función pasada como parámetro con el valor v, es
;; decir, regresa f(v).
(define (evalua f v)
   (error 'evalua "Función no implementada"))

;; Función que regresa la derivada de una función.
;; deriva: funcion -> funcion
(define (deriva f)
   (error 'deriva "Función no implementada"))

; ------------------------------------------------------------------------------------------------ ;

;; TDA para representar autómatas finitos deterministas.
;; Se tiene un único constructor para representar autómatas finitos deterministas como la quintúpla
;; correspondiente.
(define-type automata
   [tipo-automata-no-implementado])

;; Función que verifica que un afd está bien construido. Verifica que el símbolo inicial y el conjunto
;; de símbolos finales pertenecen al conjunto de estados.
;; verifica: automata -> boolean
(define (verifica atm)
   (error 'verifica "Función no implementada"))

;; Predicado que dado un afd y una lista de símbolos que representan una expresión, deterimina si es
;; aceptada por el autómata.
(define (acepta? atm lst)
   (error 'acepta? "Función no implementada"))

; ------------------------------------------------------------------------------------------------ ;

;; TDA para representar una gramática de arreglos.
;; Se tienen constructores que permiten definir un arreglo, para especificar la operación de agregar 
;; un elemento y un tercero para obtener elemento.
(define-type arreglo
   [tipo-arreglo-no-implementado])

;; Función que evalúa expresiones de tipo arreglo.
;; calc-a: arreglo -> arreglo
(define (calc-a arr)
   (error 'calc-a "Función no implementada"))

; ------------------------------------------------------------------------------------------------ ;

;; TDA para representar una gramática de conjuntos.
;; Se tienen constructores que permiten definir un conjunto, determinar si el conjunto es vacío, 
;; determinar si un elemento está contenido en el conjunto, agregar un elemento, unir conjunto, 
;; intersectar conjunto y calcular la diferencia.
(define-type conjunto
   [tipo-conjunto-no-implementado])

;; Función que evalúa expresiones de tipo conjunto.
;; calc-c: conjunto -> conjunto
(define (calc-c cto)
   (error 'calc-c "Función no implementada"))



test-practica2.rkt

Archivo con las pruebas unitarias de la práctica.

#lang plai

(require "practica2.rkt")

(print-only-errors)

#| Módulo para pruebas unitarias de la práctica 2 |#

;; Pruebas para funcion->string

#| ... Aquí van las pruebas (Borrar este comentario) ... |#

;; Pruebas para evalua

#| ... Aquí van las pruebas (Borrar este comentario) ... |#

;; Pruebas para deriva

#| ... Aquí van las pruebas (Borrar este comentario) ... |#

;; Pruebas para verifica

#| ... Aquí van las pruebas (Borrar este comentario) ... |#

;; Pruebas para acepta?

#| ... Aquí van las pruebas (Borrar este comentario) ... |#

;; Pruebas para calc-a

#| ... Aquí van las pruebas (Borrar este comentario) ... |#

;; Pruebas para calc-c
#| ... Aquí van las pruebas (Borrar este comentario) ... |#