You are on page 1of 9

PRCTICA 1:

Diseo e implementacin de Autmatas Finitos Deterministas. Aplicacin en validacin/anlisis de cadenas y secuencias de tokens.
Competencias: 1. Ser capaz de disear autmatas finitos deterministas (AFDs) con la herramienta JFLAP. 2. Implementar en lenguaje Java mtodos para simular el funcionamiento de un AFD con objeto de resolver problemas de validacin y anlisis de cadenas simples o estructuradas en tokens. Material necesario o que sea conveniente consultar en este mdulo: 1. En la carpeta de Ayuda y Ejemplos: el documento Tutorial-metodosJavaBasicos.pdf y los ejemplos de cdigo que se incluyen en Ejemplos-CodigoJava->basicosJava . Nota: se ruega leer la documentacin a fondo antes de preguntar dudas por tutora. 2. Algn tutorial de Java y entorno Eclipse como los que se recomiendan en el tutorial mencionado. 3. Se recuerda que no es competencia de esta asignatura aprender a programa en Java, es un objetivo que ya se cubre en la asignatura de POO.

Contenido
Ejercicio 1: Implentacin y prueba de mtodos de validacin para AFDs. ............................................................ 1 Ejercicio 2: Simulacin de un juego modelado mediante un AFD. .......................................................................... 4 Ejercicio 3: Deteccin de anomalas en secuencias de ECG mediante un AFD. ................................................. 7 Puntuacin e instrucciones de entrega......................................................................................................................... 9

Ejercicio 1: Implentacin y prueba de mtodos de validacin para AFDs


En la carpeta librerias proporcionamos dos clases necesarias para esta prctica:

Afd.java: permite crear un AFD a partir de un fichero de jflap, guardando los componentes (conjunto de
estados, estado inicial, funcin de transicin, etc.) en estructuras de datos adecuadas. Proporciona mtodos varios necesarios para simular la ejecucin del autmata, por ejemplo, para resetear el autmata, recuperar/establecer el estado o smbolo actual y para obtener el estado siguiente para cierta combinacin de estado y smbolo segn indica la funcin de transicin representada el diagrama de un fichero jflap (ver cdigo comentado). Hay dos mtodos que estn vacos y que hay que implementar en este ejercicio, segn indicamos luego.

LectorAFD_JFLAP.java: es una clase que contiene el mtodo leeFichero que se encarga de leer un
fichero jflap y extraer los componentes del AFD. El mtodo es invocado por el constructor de la clase Afd.java. Esta clase no debe modificarse y no es necesario comprender cmo funciona. Creacin de un objeto Afd. El mtodo constructor de la clase Afd.java permite construir un AFD a partir de un fichero de jflap y lgicamente puede usarse en otra case para crear cualquier autmata que sea de tipo determinista. Prerrequisito: se supone que el fichero corresponde a un AFD, no a un AFND ni a otro tipo de fichero, si no el funcionamiento de los mtodos de esta clase no ser correcto. Por ejemplo, en la carpeta Ficheros de prueba tenemos un fichero jflap correspondiente al siguiente AFD:

que usaremos para construir un objeto de la clase Afd: Afd afdEjem= new Afd("ejem-aa-determinista.jff); Al no poner ruta, se supone que este fichero estar en la carpeta del proyecto eclipse que se crear para esta prctica (donde est el .project), que en principio contendr las clases Afd.java y LectorAFD_JFLAP. Si no se encuentra ah se producir una excepcin de E/S. PRCTICA 1-AFD (convocatoria de febrero) Autmatas y Lenguajes Formales 2011-2012

Pgina 1

Una vez creado el objeto afdEjem, pueden invocarse los mtodos proporcionados. Por ejemplo: afdEjem.getEstadoActual(): si es la primera vez que se invoca devolver el nombre del estado inicial, que en este caso es el string Q0. En sucesivas llamadas devuelve el ltimo estado alcanzado por el autmata. afdEjem.setEstadoActual(Qaa): hace que el estado actual pase a ser el que le pasamos como argumento, en este caso el estado identificado por el string Qaa. De forma anloga, podemos obtener el smbolo actual con afdEjem.getSimboloActual() y podemos hacer que cierto smbolo sea el actual con afdEjem.setSimboloActual(simbolo). El tipo del smbolo devuelto o el que se pasa en el argumento puede ser un char (caso de smbolo tipo carcter) o un string (caso de smbolo tipo token). El uso de distintos tipos de smbolos se explica ms adelante. afdEjem.esFinal(estado): devuelve true si estado (un string con el nombre de un estado) es un estado final del autmata afdEjem. afdEjem.transicion(Q0,`a): devuelve el estado Qa, porque consulta la tabla de transicin obtenida a partir del diagrama de transicin del AFD del fichero jflap ledo y el diagrama indica que desde el estado Q0 leyendo el smbolo a se pasa al estado Qa. Si no hubiera transicin definida para el par de (estado, smbolo) que se le pasa como argumento entonces el mtodo transicin devolvera null. afdEjem.reset(): hace que el atributo estadoActual tome como valor el string con el nombre del estado inicial de afdEjem y el atributo simboloActual tome valor null (indicando que an no se ha ledo ningn smbolo). De esa forma se prepara el autmata para que comience una nueva ejecucin con una cadena.

IMPLEMENTACIN DE MTODOS DE VALIDACIN EN LA CLASE Afd.java (para entregar) 1. Mtodo de validacin (caso de cadenas de smbolos tipo carcter): public boolean esValida(String cadena) Es el mtodo principal de la clase y simula el funcionamiento de un AFD, procesando la cadena del parmetro carcter-a-carcter, de izda. a derecha, sin acceder dos veces al mismo smbolo y devolviendo true si la cadena es aceptada por el AFD y false si la cadena es rechazada. Debe seguir la estructura del algoritmo general de simulacin de AFD del tema 2 o similar, siempre respetando el modo de funcionamiento de un AFD y usando los mtodos listados anteriormente. El mtodo no debe contener instrucciones que no estn relacionadas con el proceso de validacin comn a cualquier AFD. Se usarn los mtodos de la clase String adecuados para acceder a cada carcter de la cadena de entrada y para controlar que se ha terminado de recorrer la cadena (ver tutorial proporcionado). Este mtodo retorna anticipadamente en el momento en que se detecta una transicin no definida.

2. Mtodo pblico de validacin (caso secuencias de smbolos tipo token): public boolean esValida(Scanner secuencia) En ocasiones, los smbolos de un alfabeto representan eventos o etiquetas que se procesan en secuencia y conviene darle al smbolo un nombre significativo (un string), en lugar de usar caracteres para representar los smbolos. A estos smbolos que se representan mediante un string los llamaremos tokens. El parmetro de este mtodo es un objeto Scanner, que se supone contiene la cadena a validar y en este caso es una secuencia de tokens separados por uno o ms espacios (incluidos newlines). Estos espacios sern ignorados en el proceso de validacin. Ejemplo: supongamos que renombramos los smbolos de AFD "ejem-aa-determinista.jff y al smbolo a le llamamos alfa y al smbolo b le llamamos beta . Entonces el autmata as modificado acepta la secuencia betaalfaalfa (comprubese). Aplicando este nuevo mtodo de validacin y considerando ese nuevo autmata entonces el mtodo debera devolver true cuando se le pasa esa misma secuencia, pero separando los smbolos-token con espacios, como en la secuencia beta alfa alfa. Por lo dems la estructura es anloga a la del mtodo de validacin para el caso de smbolos tipo carcter, slo que ahora debern usarse los mtodos de la clase Scanner para extraer tokens de la secuencia uno a uno (ver tutorial) y procesar la secuencia token- a- token en lugar de carcter-a-carcter como en el otro mtodo. Nota: podemos observar que se usan dos mtodos con el mismo nombre y distinto tipo de parmetro (sobrecarga).

PRCTICA 1-AFD (convocatoria de febrero)

Autmatas y Lenguajes Formales 2011-2012

Pgina 2

IMPLEMENTACIN DE MTODO DE PRUEBA EN LA CLASE Afd.java (para entregar) Incluir el mtodo main al final de la clase. Este mtodo slo tiene por objeto probar los mtodos de la clase Afd.java con un autmata concreto, antes de pasar a usar los mtodos de esta clase con autmatas ms complejos como los de los ejercicios siguientes. En main se har lo siguiente: Prueba de mtodo de validacin con cadenas de smbolos tipo carcter: 1. Crear un Afd a partir del fichero jflap "ejem-aa-determinista.jff. 2. Invocar al mtodo de validacin pasndole una cadena vlida y una incorrecta . Para cada cadena de prueba se imprimir por consola un mensaje con la cadena procesada y el resultado de la validacin (si acepta o rechaza). Prueba de mtodo de validacin con secuencias de tokens: 1. Modificar el fichero jflap renombrando los smbolos como alfa y beta, como se ha dicho antes.

2. Crear un Afd a partir del fichero jflap modificado. 3. Crear strings de prueba como antes. Ahora los strings contendrn secuencias de tokens separadas
por espacios. Por ejemplo, uno de ellos puede contener la secuencia vlida beta alfa alfa.

4. Crear un objeto Scanner a partir de cada string de prueba (ver cmo se hace en el tutorial
proporcionado). 5. Invocar al mtodo de validacin pasndole al menos un Scanner con una secuencia vlida y otro con la secuencia incorrecta . Para cada secuencia de prueba se imprimir por consola un mensaje con la secuencia procesada y el resultado de la validacin (si acepta o rechaza).

PRCTICA 1-AFD (convocatoria de febrero)

Autmatas y Lenguajes Formales 2011-2012

Pgina 3

Ejercicio 2: Simulacin de un juego modelado mediante un AFD


Se trata de disear un AFD para modelar el mecanismo de control de un juego de canicas en una especie mquina tragaperras, que ser simulado en el programa java que habr que implementar en este ejercicio. Cada jugada consiste en el lanzamiento de una secuencia de canicas por dos zonas de entrada a un laberinto sencillo y cada canica tiene la posiblidad de caer por dos zonas de salida (GANA y PIERDE), como se muestra la siguiente figura:

Descripcin del juego:


Hay 3 palancas en el laberinto (P1, P2 y P3). Al inicio de una jugada las palancas estn inclinadas hacia la izquierda y se supone que la ltima canica que cay por el laberinto perdi (en realidad al inicio no ha cado todava ninguna canica, pero por defecto se supone eso). Si una canica entra por la entrada A entonces siempre choca con la palanca P1 y eso hace que la palanca cambie y se incline hacia el lado contrario. Si entra por B la palanca P3 se inclina hacia el lado contrario. La palanca P2 no siempre cambia cuando entra una canica, depende de hacia dnde estn inclinadas las palancas P1 y P3. Si entra por A y P1 est inclinada hacia la izquierda entonces P2 no se mueve porque la canica no choca con esa palanca; sin embargo, si entra por A y P1 est inclinada hacia la derecha entonces la canica choca con P1 y tambin con P2 (tanto si P2 est inclinada hacia la izda. como si est hacia la derecha) y por tanto estas dos palancas cambian. De forma anloga, cuando la canica entra por B y P3 est inclinada hacia la derecha entonces P2 no se mueve, pero si entra por B y P3 est inclinada hacia la izquierda entonces la canica choca con P3 y tambin con P2 y ambas cambian su inclinacin. Cada jugada se representa mediante una cadena de As/ Bs. Por ejemplo: la cadena BBAA es una jugada que indica que se lanzan 4 canicas: la primera entra por la entrada B, la segunda por la entrada B, la tercera por la A y la cuarta por la A. De esta forma el smbolo A representa el evento que se produce cuando una canica entra por la entrada A y el smbolo B representa el evento de entrada por B. Para cierta jugada, unas canicas caern por la salida GANA y otras por PIERDE. En cierto instante de la jugada, el hecho de que la canica actual caiga por una de las dos salidas depende de cmo estn situadas las palancas . Por tanto hay que tener en cuenta la situacin dada por la inclinacin de cada una de las palancas y cmo se altera esa situacin cuando entra una canica al laberinto. Tambin se requiere recordar en cierta situacin si la canica que acaba de caer dejando las palancas en la situacin actual perdi (cay por PIERDE) o gan (cay por GANA), porque hay que llevar la cuenta de las canicas que ganan en cierta jugada. En el siguiente esquema se muestra una simulacin del juego con la jugada representada por la cadena BBAA: se indica cmo van cambiando las palancas a medida que van entrando las canicas (segn se lee cada smbolo de la cadena BBAA) y se indica para cada canica si pierde o gana.

PRCTICA 1-AFD (convocatoria de febrero)

Autmatas y Lenguajes Formales 2011-2012

Pgina 4

Objetivo del juego:


Se procesarn una serie de jugadas de lanzamiento de canicas (cada una es una cadena de As/Bs en la simulacin). Consideramos dos modalidades de juego: 1. Juego a ``gana la ltima: una jugada obtiene premio si la ltima canica cae por GANA (el autmata acepta la cadena que representa la jugada). En ese caso decimos que la jugada es ganadora en modo gana la ltima. 2. Juego a ``gana la mayora : una jugada obtiene premio si el nmero de canicas que caen por GANA es mayor que el que caen por PIERDE. MODELADO DE LA DINMICA DEL JUEGO CON UN AFD (para entregar) Disea en Jflap un AFD que sirva para comprobar si una jugada del juego de canicas, representada mediante una cadena de As/ Bs, es o no una jugada ganadora en modo gana la ltima. Pista: se necesitan ms de 10 estados. Da nombres cortos aunque significativos a los estados (con set name en jflap) para que el diseo sea ms fcil, dado que hay un buen nmero de estados y en este autmata es inevitable que se corten los arcos, por lo que resulta poco legible a simple vista y difcil de modificar si los estados no tienen nombre adecuado. El estado inicial representa la situacin de ``inicio de jugada indicada en la figura de ms arriba. Los estados finales representan la situacin en que la canica que acaba de pasar por el laberinto, dejando las palancas en cierta posicin, cay por GANA.

PRCTICA 1-AFD (convocatoria de febrero)

Autmatas y Lenguajes Formales 2011-2012

Pgina 5

IMPLEMENTACIN DEL JUEGO (para entregar) Implementa una clase ejecutable que haga lo siguiente: Crea un objeto de la clase Afd a partir del fichero jflap con el AFD del juego de las canicas que se pide en el apartado anterior (se supone que el fichero jflap est en el directorio del proyecto eclipse de esta prctica, no poner ruta). Imprime un mensaje para que el usuario introduzca su jugada. Puede ser slo una, o bien varias jugadas separadas unas de otras por una coma (sin espacios). Aplica el mtodo split (ver tutorial) a la lnea introducida por consola para obtener un array de cadenas donde cada una representa una jugada. Se usar una coma como delimitador. Llama a los mtodos que simulan el juego en el modo gana la ltima y en el modo gana la mayora, como se indica a continuacin: Mtodo para simular varias jugadas en la modalidad gana la ltima. o Recorre el array de jugadas y para cada una: - Invoca al mtodo de validacin del objeto Afd creado e imprime un mensaje con la jugada procesada y que diga si con esa jugada se gana o se pierde. - No debe resolverse este ejercicio de otra forma, debe ser mediante el mtodo de validacin del autmata. Ejemplo: si tenemos en el array de jugadas los strings: AB y ABA entonces se procesa la cadena AB y el autmata detecta que gana, porque la ltima canica entr por B y cay por GANA, segn la descripcin del juego y luego se simula la jugada ABA y segn el autmata con esa jugada se pierde. Mtodo para simular varias jugadas en la modalidad gana la mayora. o Recorre el array de jugadas y para cada una: o Simula la ejecucin del autmata con la cadena correspondiente a la jugada, de forma parecida a como se hace en el mtodo de validacin pero aadiendo instrucciones adicionales para incrementar contadores o lo que sea necesario. No hay que modificar el autmata diseado en este modo de juego. Deben usarse los mtodos pblicos definidos en la clase Afd para ir cambiando de estado a mediada que se leen los caracteres de la cadena (entran las canicas al laberinto) y ahora interesa contar las canicas que caen por GANA (se alcanza un estado final). o Al terminar de recorrer la cadena, se imprimir un mensaje indicando la jugada procesada y para cada canica se indicar si pierde o gana y luego imprimir el resultado final: si el nmero de canicas que caen por GANA es mayor que el que caen por PIERDE entonces gana, en otro caso pierde.

Ejemplo: si tenemos en el array dos cadenas: BAAA y ABA entonces se procesa la cadena BAAA y ganan todas las canicas excepto la penltima y la jugada es ganadora porque ganan ms que pierden. Luego se procesa la jugada ABA y en este modo tambin es una jugada ganadora porque ganan las dos primeras y pierde la ltima. Ejemplo de salida del programa: al introducir las jugadas AB,BAAA,ABA,BAB,BABA,AAABBBABABAB la salida que debera ser algo as como: (puede variar la presentacin, pero conteniendo la informacin que se pide)
Modo gana la ltima... Jugada AB: GANA Jugada BAAA: GANA Jugada ABA: PIERDE Jugada BAB: PIERDE Jugada BABA: PIERDE Jugada AAABBBABABAB: PIERDE Modo gana la mayora... Jugada AB: A(G) B(G) GANA Jugada BAAA: B(G) A(G) A(P) A(G) GANA Jugada ABA: A(G) B(G) A(P) GANA Jugada BAB: B(G) A(G) B(P) GANA Jugada BABA: B(G) A(G) B(P) A(P) PIERDE Jugada AAABBBABABAB: A(G) A(G) A(G) B(P) B(P) B(G) A(P) B(P) A(G) B(G) A(P) B(P) PIERDE Jugada ABw3: A(G) B(G) *** jugada no permitida*** PIERDE

PRCTICA 1-AFD (convocatoria de febrero)

Autmatas y Lenguajes Formales 2011-2012

Pgina 6

Ejercicio 3: Deteccin de anomalas en secuencias de ECG con AFD


Plantemos ahora un problema que trata sobre la evolucin en el tiempo de la seal de un electrocardiograma (ECG) que, a alto nivel, puede interpretarse como un problema de anlisis de secuencias de eventos representados con smbolos tipo token y puede resolverse tomando como modelo un autmata finito determinista.

Figura 1: Ejemplo de registro de seal de ECG El ECG es el procedimiento de diagnstico cardaco por excelencia. En realidad, es un registro grfico de la actividad elctrica del corazn (Fig. 1). El ECG permite estudiar la duracin, magnitud y direccin de las fuerzas elctricas responsables del funcionamiento del corazn.

Figura 2: trazado de seal de ECG diferenciando componentes Existen diferentes componentes del trazado tpico de seal de un ECG (Fig.2), entre otros los siguientes: Ondas: pueden ser P, Q, R, S y T. Segmentos: se distinguen los segmentos ST y PQ. Complejo QRS. Intervalos: PQ y QT. La seal continua de ECG se somete a un proceso para convertirla en una secuencia de etiquetas, que llamamos eventos de ECG. Cada evento se corresponde con un componente del trazado de seal del electrocardiograma. Llamaremos secuencia de ECG a una secuencia de eventos que describe la actividad cardiaca durante un determinado intervalo de tiempo. En esta secuencia aparecen de forma cclica ciertas subsecuencias, que llamamos periodos de ECG. Los periodos vlidos del ECG se indican en la figura 3. Una secuencia de ECG normal est formada por uno o ms periodos vlidos de ECG, en otro caso se trata de una secuencia anmala.

PRCTICA 1-AFD (convocatoria de febrero)

Autmatas y Lenguajes Formales 2011-2012

Pgina 7

oP oP oP

sPQ sPQ sPQ iPQ

oQ

oR cQRS

oS

sST sST

oT oT

Tipo1

Tipo 2 Tipo 3

iQT oQ oR oS sST oT

Tipo 4

NOTA: los segmentos sST para cada tipo de periodo donde aparecen de manera explcita son opcionales. Es decir, si no aparece alguno para ese periodo, la secuencia resultante se considera un periodo vlido tambin. Figura 3: Tipos de periodos normales de ECG Planteamos en este ejercicio esencialmente el problema de comprobar si una secuencia de ECG es normal o anmala. Nota: este problema es una simplificacin y no refleja la complejidad real del proceso de diagnstico mdico a travs de un ECG. DISEO DE UN AFD QUE ACEPTA SECUENCIAS NORMALES DE ECG (a entregar) Disea en Jflap un AFD que acepte el lenguaje formado por las secuencias normales de ECG. Los nombres de eventos que aparecen en la figura 3 forman el vocabulario del autmata. Es un autmata con smbolos de tipo token, por tanto cada arco se etiqueta con uno de estos smbolos, no con caracteres individuales. No hay que olvidar que algunos segmentos son opcionales.

Hacer una prueba de ejecucin en Jflap, por ejemplo la secuencia oPsPQiQToPcQRSoT. Debe aceptarla. Considera otros casos de secuencias vlidas y anmalas para comprobar la correccin del diseo.

PROGRAMA PARA DETECCIN DE SECUENCIAS DE ECG ANMALAS (a entregar) Implementa una clase ejecutable que haga lo siguiente: Crea un objeto Afd a partir del fichero jflap con el AFD del ECG que acepta secuencias normales. Repite los siguientes pasos hasta que el usuario pulsa enter al pedir el nombre del fichero (el nombre es vaco). 1. Solicita por consola el nombre del fichero con la secuencia de ECG de un paciente (en la carpeta comprimida Ficheros de prueba hay ficheros de ejemplo con secuencias de ECG normales y anmalas). No cubren todos los casos, se recomienda disear un test de prueba ms completo. 2. Crea un objeto File a partir del nombre de fichero y crea un Scanner a partir del File para extraer los tokens (eventos de ECG) del fichero uno a uno (ver tutorial). Se supone que el fichero contiene la secuencia de eventos de ECG separados por espacios. Por ejemplo: si contiene oP sPQ iQT esa secuencia es normal, por lo que el mtodo de validacin devolver true. 3. Aplica el mtodo de validacin del objeto Afd creado para comprobar si la secuencia de ECG que se le pasa es normal o anmala e imprime un mensaje indicando el diagnstico: normal o anmala (no hay imprimir la secuencia leda porque el fichero puede ser largo). Si la secuencia es anmala entonces debe imprimir adems un mensaje informativo de anomala con los siguientes datos: estado en que ha parado el autmata al finalizar la ejecucin (ltimo estado alcanzado) y ltimo evento de ECG ledo. Por ejemplo, si tras leer oP estando el autmata en el estado q1, se lee oR entonces se detecta que secuencia es anmala e imprime mensaje de secuencia anmala junto con el estado q1 y el evento oR. De esa forma nos hacemos una idea de en que tramo de la secuencia de ECG se ha detectado la anomala. Nota: la ejecucin no debe finalizar si se introduce un nombre de fichero inexistente. Slo debe acabar cuando el usuario pulsa enter.

PRCTICA 1-AFD (convocatoria de febrero)

Autmatas y Lenguajes Formales 2011-2012

Pgina 8

Puntuacin e instrucciones de entrega


1. Crea una carpeta que se llame Apellidos1-Apellidos2, donde Apellidos1 son los dos apellidos del primer alumno de la pareja de prcticas (todo junto) y Apellidos2 son los dos apellidos del segundo alumno (si es que lo hay). Los que tengan apellido muy largo pueden abreviar. El caso es que quede claro quienes son los autores de la prctica por el nombre de la carpeta. Dentro de esta carpeta: Incluye las clase LectorAFD_JFLAP.java (original) y Afd.java (modificada) correspondiente al ejercicio 1. Incluye el fichero Jflap del autmata del ejercicio 2 y la clase con el simulador del juego. Incluye el fichero Jflap del autmata del ejercicio 3 y la clase con el programa que detecta anomalas en secuencias de ECG. En cada clase debe aparecer el autor/autores de la prctica al principio, en los comentarios de la clase. Si alguna clase da errores de compilacin o no hace prcticamente nada que no se incluya, porque no contar nada. Es mejor as que entregar cualquier cosa. No debe aparecer la sentencia package en ninguna de las clases, ni deben incluirse subcarpetas ni .class. Los fuentes (.java) tienen que leerse correctamente en eclipse de Windows. Si se hacen en Linux convierte el formato para que no se vean caracteres extraos. Selecciona la carpeta creada Apellidos1-Apellidos2 (la carpeta, no el contenido de la carpeta) y Enviar a Carpeta comprimida (en zip). No debe entregarse un .rar. En SAKAI sube el .zip para la tarea PRCTICA: Autmatas Finitos Deterministas: Cada compaero deben subir el mismo fichero para que quede constancia en el sistema. En SAKAI enva un mensaje privado por grupo (no correo electrnico) a tu profesor con el asunto Entregada Prctica 1. nicamente un alumno (si son dos) debe enviar el mensaje. En el contenido del mensaje indica quines son los 2 miembros del grupo (si procede).

2.

3. 4.

Fecha de entrega: la fecha de entrega son las siguientes:


Grupo 1 y 2 (Lunes y Martes): 25 de Noviembre 23:59h. Profesor: Jos M. Jurez Grupo 3 (Mircoles): 2 de Diciembre 23:59h. Profesor: Antonio Morales.

Puntuacin y criterio de evaluacin:


Esta prctica vale 1.5 del total de 3.5 que se puede conseguir en prcticas. Se recuerda que esta nota ya esta ponderada y suma directamente a la nota de examen (6.5 nota mxima). Se exige una nota mnima de 0.5 en esta prctica. Aquellos que no lleguen a esa nota tendrn que presentar las prcticas en otra convocatoria. Los ejercicios 1 y 3 valen 0.4 puntos cada uno y el ejercicio 2 vale 0.7 puntos Se restarn puntos por las siguientes deficiencias, segn gravedad: El cdigo contiene fallos de correccin o mal funcionamiento. Como es lgico se requiere que la solucin aportada para cada ejercicio sea correcta en general y no que valga para unos casos y falle con otros. La falta de correccin puede suponer restar el total de puntos de un ejercicio. El cdigo no se ajusta a la especificacin establecida en cada ejercicio. Especialmente grave es resolver un ejercicio sin basarse en el funcionamiento del AFD que modela el problema planteado. Esto supone un cero. El cdigo no tiene comentarios o pocos. Al no pedir que se entregue una documentacin, es importante que se comente el cdigo: comentario general de la clase, comentario que aclare lo que hace cada mtodo (al estilo javadoc) y aparte comentar las lneas principales. La ausencia de comentarios puede suponer restar la mitad de lo que vale cada ejercicio, aunque sea correcto. El cdigo es poco legible. Por ejemplo, con mal sangrado, abuso del scroll horizontal en lugar de partir lneas muy largas, variables sin nombre significativo, etc. No sigue las instrucciones de entrega. Las instrucciones no son un capricho, tienen por objeto facilitar el trabajo de correccin. As que se penalizarn los despistes, con objeto de reforzar la atencin. En caso de plagio: la copia parcial o total de cualquier ejercicio supone SUSPENSO en prcticas para todas las personas implicadas (los que se copian y los que se dejan copiar).

PRCTICA 1-AFD (convocatoria de febrero)

Autmatas y Lenguajes Formales 2011-2012

Pgina 9

You might also like