informe automatas uach

download informe automatas uach

of 14

  • date post

    06-Jul-2018
  • Category

    Documents

  • view

    213
  • download

    0

Embed Size (px)

Transcript of informe automatas uach

  • 8/18/2019 informe automatas uach

    1/14

     

    Universidad Austral de Chile  Facultad de Ciencias de la Ingeniería

    Valdivia

    Simulación de Autómata Finito

    Determinista 

    Informe Final

    Integrantes:  Marco Álvarez, Fabián Catalán, Jorge Obando

    Profesor del curso:  María Eliana de la Maza W.

    Fecha de entrega: 

    Jueves 14 de Abril, 2016

  • 8/18/2019 informe automatas uach

    2/14

    Simulación Autómata Finito Determinista Página 1

    [0] Índice

    Contenido

    [0] Índice………………………………………………………….. ............................página 1

    [1] Introducción……….…………………………………………..............................página 2

    [2] Desarrollo

    [2.1] Estructuras de Datos utilizadas…………………….................................página 3

    [2.2] Especificación de Métodos y algoritmos……………..............................página 3

    [2.3] Creación de una transición…………………………................................página 4

    [3] Especificación de Programa y Manual de Uso…….…..................................página 5

    [4] Conclusión......................................................................................................página 12

    [5] Bibliografía………………………………………………… ................................página 13

  • 8/18/2019 informe automatas uach

    3/14

    Simulación Autómata Finito Determinista Página 2

    Introducción

    Un autómata finito determinista  (abreviado AFD) es un autómata finito que

    además es un sistema determinista; es decir, para cada estado en que se encuentre el autómata, y con cualquier símbolo del alfabeto leído, existe siempre a lo más una transición posible desde ese estado y con ese símbolo.

    Está formado por:

    1. Un conjunto finito de estados, a menudo designado como Q. 2. Un conjunto finito de símbolos de entrada, a menudo designado como ∑ (sigma).  3. Una función de transición que toma como argumentos un estado y un símbolo de

    entrada y devuelve un estado como salida. La función de transición se designa

    habitualmente como Δ (delta). Los argumentos de entrada NO deben repetirse para conservar el determinismo del autómata.

    4. Un estado inicial es uno de los estados de Q. 5. Un conjunto de estados finales o de aceptación F. El conjunto F es un subconjunto

    de Q.

    En este informe se especificará el funcionamiento de un software que simule un AFD, usando una interfaz visual grata para el cliente, junto con los métodos principales que hacen poner en marcha la simulación de nuestro autómata finito determinista.

  • 8/18/2019 informe automatas uach

    4/14

    Simulación Autómata Finito Determinista Página 3

    [2] Desarrollo

    [2.1] Estructuras de datos utilizados 

    El estado de Entrada  se registrará en la clase principal como una variable global QString y el conjunto de estados Finales se registraran en un objeto de tipo lista dinámica (QListWidget) propio de la interfaz del programa. Las transiciones de nuestro autómata finito determinista se procesarán como cadenas de texto que se guardarán en una lista dinámica visual (QListWidget). La estructura de esta cadena de texto será de la forma:

    “d(estado_entrada,simbolo_entrada)=estado_salida” 

    Lo anterior, es un string con los parámetros subrayados extraídos desde la interfaz de

    usuario, y forma parte del objeto dinámico mencionado. Al almacenar cada transición validada, se va capturando los símbolos ingresados. Estos símbolos se registran en una variable global string llamada alfabeto que contiene todos los símbolos permitidos.

    Nuestro programa posee una variable string global llamada es_actual  que tiene como finalidad el registrar el estado que retorna las transiciones registradas, mientras se recorren los símbolos de la palabra ingresada. Como también tenemos otra variable booleana llamada ready, que da la señal si se pueden agregar transiciones. Para que se puedan agregar las transiciones, el usuario debe agregar primeramente el estado inicial y estados finales.

    Para una mejor comprensión de la lista visual usada, citaremos la definición extraída y traducida desde  http://doc.qt.io/qt-4.8/qlistwidget.html#details 

    "La clase QListWidget ofrece un widget de lista basada en elementos. QListWidget es una clase de conveniencia que ofrece una vista de lista, pero con una interfaz clásica basada en elemento para añadir y eliminar elementos. QListWidget utiliza un modelo in terno d inámic o  para la gestión de cada artículo QListWidget en la lista.”   

    [2.2] Especificación de Métodos y algoritmos: 

    Nuestro Software contará con 6 prototipos de métodos para el funcionamiento de nuestra simulación del autómata. Cabe mencionar que en nuestro código tienen otros nombres.

      void Agregar_Transición(QString est_Entrada, QString símbEntrada, QString est_Salida)  Crea un QString con los parámetros extraídos de los campos pertinentes registrándolo de la forma que determinamos en la sección 2.1. Esta cadena se pasa

    a la lista gráfica, guardándose como un ítem dinámico de ella. Evento Asociado: void MainWindow::on_btnAgregarTransicion_pressed ()

    http://doc.qt.io/qt-4.8/qlistwidget.html#details http://doc.qt.io/qt-4.8/qlistwidget.html#details http://doc.qt.io/qt-4.8/qlistwidget.html#details

  • 8/18/2019 informe automatas uach

    5/14

    Simulación Autómata Finito Determinista Página 4

      void Editar_Transición(QString est_Entrada, QString símboloEntrada, QString est_Salida): Edita una transición seleccionada de la lista dinámica de transiciones agregadas. Evento Asociado: void MainWindow::on_btnEditarTrans_pressed()

      void Eliminar_Transición(QString est_Entrada, QString símb_Entr, QString est_Salida):Elimina una transición seleccionada de la lista dinámica de transiciones agregadas. Evento Asociado: void MainWindow::on_btnEliminarTrans_pressed() 

      QString Estado_de_Salida(QString est_Entrada, QString símbolo_Entrada): Dado un estado de entrada y un símbolo de entrada, el método deberá recorrer la lista de transiciones hasta hallar una transición con los parámetros ingresados. Si encuentra una transición con estos valores, retorna el estado de salida adjunto a esta transición, sino retorna una palabra vacía. NOTA DE LOS CREADORES: este método se usará dentro del AgregarTransición.

      bool ValidarPalabra(QString palabra):

    Recorre una palabra ingresada  por usuario, verificando que cada letra de ella pertenezca al alfabeto(almacenado como QString) y que además, retorne un estado de salida por cada una de ellas. Si se llega a la palabra final con un estado resultante y además sea un estado final, entonces acepta la palabra, retornando verdadero. Si una de las condiciones subrayadas no se cumple, entonces la palabra no es aceptada y el algoritmo finaliza retornando un booleano ‘falso’.  Evento Asociado: void MainWindow::on_btnValidarPalabra_pressed () 

      bool esEstadoFinal(QString estado): Recorre la lista de estados finales, comparando los ítems de la lista con el estado

    ingresado. Si el estado es un estado final, retorna true, false sino.Eventos Asociados: void MainWindow::on_btnValidarPalabra_pressed ()  void MainWindow::on_btnAgregarTransicion_pressed() 

    Cabe mencionar que los métodos declarados acá, son llamados desde eventos de botones, eventos de cambio de ítem de listas, de comboboxs e incluso del campo de símbolos. Cada evento tiene sus propias sentencias que, no son de relevancia en el funcionamiento del algoritmo, más bien, son para mejorar la visualización gráfica del programa, por lo tanto, no fueron incluidas en este apartado.

    [2.3] Creación de una transición: Esto es parte del código del método agregarTransición()

      QString est_entrada = ui->c3->currentText(); //extraido de un combobox    QString sÍmbolo = ui->simb->text(); //extraido de un lineEdit (campo texto)    QString est_entrada = ui->c4->currentText(); //extraido de un combobox   QString transicion = “d(“ + est_entrada+ “,” + sÍmbolo + “)=” + est_salida;    listWidget.addItem( transicion ); //se guarda el string dinámicamente en la lista 

    Cabe mencionar que se hacen validaciones internas como, verificar que el usuario haya seleccionado un estado en los comboboxs y si ingresó algún simbolo válido en el campo de símbolos, como también verificar que la transición no esté repetida.

  • 8/18/2019 informe automatas uach

    6/14

    Simulación Autómata Finito Determinista Página 5

    [3] Especificación del programa y Manual de Uso

      Nombre del programa: Automatótes ©    Lenguaje de implementación: C++, Qt 5+    Sistema Operativo: Windows , versiones: Vista, 7, 8, 8.1, 10 

    El programa posee un archivo ejecutable al cual se le debe hacer doble click para que el programa comience. 

    Una vez ejecutado el programa aparecerá en pantalla un mensaje de bienvenida al usuario, antes de iniciar la pantalla principal del programa. 

    Una vez iniciado el programa se debe seleccionar el estado inicial el cual puede ser desde q0 hasta q99.

  • 8/18/2019 informe automatas uach

    7/14

    Simulación Autómata Finito Determ