12.07.2015 Views

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

VIII Jornadas de Enseñanza Universitaria de la Informática Cáceres ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Depuración <strong>de</strong> Programas Haskell a partir <strong>de</strong>Especificaciones PRE/POST en HaskellJ. M. Burgos, J. Galve, J. García, M. SutilDept. Lenguajes y Sistemas Informáticos (LSIIS)Universidad Politécnica <strong>de</strong> Madrid28660 Boadil<strong>la</strong> <strong>de</strong>l Monte - Madri<strong>de</strong>-mail: {jmburgos, jgalve, juliog, msutil}@fi.upm.esResumen 1En <strong>la</strong> siguiente propuesta 2 se presenta una versióninicial <strong>de</strong> <strong>la</strong> herramienta <strong>de</strong> <strong>de</strong>puración <strong>de</strong>c<strong>la</strong>ratival<strong>la</strong>mada H4D2 3 , <strong>la</strong> cual forma parte <strong>de</strong> unproyecto <strong>de</strong> investigación aplicado a <strong>la</strong> innovacióneducativa [8].El objetivo principal <strong>de</strong> este trabajo es ofrecerherramientas metodológicas e instrumentales quefaciliten el uso <strong>de</strong> metodos formales en un primercurso <strong>de</strong> programación en Haskell [5].1. Un <strong>de</strong>purador <strong>de</strong> programas a partir<strong>de</strong> <strong>la</strong>s Especificaciones PRE/POST1.1. Estructura <strong>de</strong>l Depurador H4D2La herramienta H4D2 <strong>de</strong>be permitir al operar enlos modos <strong>de</strong>puración / no_<strong>de</strong>puración. Parahacer esto posible, <strong>la</strong> implementación incluye unaconstante <strong>de</strong>bug que actúa a modo <strong>de</strong> f<strong>la</strong>g para<strong>de</strong>purar o no. Para pasar <strong>de</strong> un modo a otro, se<strong>de</strong>be cambiar el valor <strong>de</strong> esta constante(True/False).-- F<strong>la</strong>g <strong>de</strong> <strong>de</strong>puracion<strong>de</strong>bug :: Bool<strong>de</strong>bug = True1Una versión completa <strong>de</strong> este trabajo pue<strong>de</strong>encontrarse en [9].2 Este trabajo ha sido parcialmente financiado por elproyecto español TIC 01-2798.3 Haskell for Dec<strong>la</strong>rative Debugging-- Mensaje <strong>de</strong> error en PRECONDICIONerror_pre :: String -> Stringerror_pre nombreFuncion ="ERROR EN PRECONDICION: " ++ nombreFuncion-- Mensaje <strong>de</strong> error en POSTCONDICIONerror_post :: String -> Stringerror_post nombreFuncion ="ERROR EN POSTCONDICION: " ++ nombreFuncionEl modo en que opera el <strong>de</strong>purador <strong>de</strong>c<strong>la</strong>rativoH4D2 sigue <strong>la</strong> secuencia lógica <strong>de</strong>finida por <strong>la</strong>estructura <strong>de</strong> <strong>la</strong>s especificaciones PRE/POST. Así,dada una función Haskell con <strong>la</strong> estructura<strong>de</strong>scrita en <strong>la</strong> sección 3.1, <strong>la</strong> ejecución <strong>de</strong> <strong>la</strong><strong>de</strong>puración seguirá <strong>la</strong> siguiente secuencia <strong>de</strong>evaluaciones:DEPURADOR (pre, funcion, post) (x) =Paso 1) EVALUAR pre (x)Paso 2) resultado = EVALUAR funcion (x)Paso 3) EVALUAR post (x, resultado)Para <strong>la</strong> implementación, se ha optado por <strong>la</strong><strong>de</strong>finición <strong>de</strong> una función <strong>de</strong> or<strong>de</strong>n superior<strong>de</strong>purar que actúa sobre <strong>la</strong>s funciones pre, post yfuncion. Se ha añadido, así mismo, un parámetro<strong>de</strong> tipo ca<strong>de</strong>na <strong>de</strong> texto que representa el nombre<strong>de</strong> <strong>la</strong> función que se quiere <strong>de</strong>purar. Este últimoparámetro lo utilizaremos más a<strong>de</strong><strong>la</strong>nte paraasociar los mensajes <strong>de</strong> <strong>de</strong>puración a <strong>la</strong> funciónque se evalúa.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!