lunes, 30 de noviembre de 2015

DEBER # 2 PILAS

Clase UsoPilas

Método main

Descripción
El programa principal se encarga de que dada una expresión in-fix ingresada por el usuario:
          1. Verifica que la expresión tenga los paréntesis correcta.
          2. Si esta correcta entonces la transforma en post-fix
          3. Luego le pide al usuario ingresar una expresion post-fix
          4. Pide los valores de las variables para evaluarlas

Método main

Clase Expresion

Método verificarParentesis

Descripción
Retorna un boolean dependiendo si la expresión tiene un correcto uso de paréntesis

Algoritmo

  1.  Crea una pila vacía donde se van a guardar los paréntesis
  2. Recorre la cadena de caracteres y si es un ( lo añade en la pila
  3. Si es un  )  pregunta si la pila esta vacía devuelve falso
  4. Si la pila está llena entonces elimina el primer paréntesis izquierdo
  5. Una vez recorrida la cadena de caracteres devuelve falso si la pila todavía contiene (
  6. Caso contrario devuelve verdadero


Método verificarParentesis


 Método InFixToPostFix

Descripción
Dada una expresión en Infix la transforma en una expresión Postfix

Algoritmo

  1. Se crea una lista la cuál va a contener la expresión en PostFix
  2. Se crea un pila la cual va a almacenar los operadores   
  3. Se sigue el algoritmo para convertir de Infix a PostFix, el cual consta de los siguientes pasos:
    1. Si el elemento es un operando se ingresa a la lista PostFix
    2. Si el elemento es un paréntesis izquierdo se ingresa en la pila
    3. Si el elemento es un paréntesis derecho entonces se extrae de la pila y se coloca los operadores en la lista PostFix hasta encontrar un paréntesis izquierdo y se elimina el paréntesis
    4. Si el elemento es un operador entonces se verifica si la pila esta vacía, en tal caso se agrega a la pila
    5. Caso contrario se evalúa su prioridad con el que esta en la cima de la pila
      1. Si es de mayor prioridad entonces se agrega a la pila
      2. Si es de menor o igual prioridad entonces se extrae el último  de la pila, se lo agrega a la lista y luego se agrega a la pila el operador



      4.  Una vez recorrida toda la cadena se procede a vaciar la pila en la lista PostFix
      5. Se crea una cadena con la expresión formada en la lista



Método evaluar

Descripción
Con el valor de las variables se procede a realizar el calculo de la expresión en PostFix

Algoritmo
      1. Se crea una pila que va a guardar las variables y se van a realizar las operaciones
      2. Se recorre la expresión y si el elemento es un operando se agrega a la pila
      3. Si el elemento es un operador entonces retirar los 2 primeros elementos de la pila
      4. Realiza la operación indicada y guarda el resultado en la pila
      5. Se repite estas acciones hasta que solo queda un elemento en la pila
      6. Finalmente se extrae el resultado final de la pila y esa es la respuesta
   



Método buscarVariables

Descripción
Devuelve una lista con todas las variables que se encuentran en una expresión

Algoritmo

  1. Recorre la expresión y chequea si es un operador u operando
  2. Si es un operando entonces revisa si esta en la lista sino está lo agrega en caso contrario no realiza ninguna acción





Clase PostFix


Método establecerPrioridad

Descripción
Dado dos operadores devuelve si entre ellos tienen una prioridad mayor menor o igual
Con valores (-1) menor (0) Igual (1) Mayor

Algoritmo

  1. Se tiene un arreglo de los operadores en  orden ascendente de prioridades
  2. Luego se pregunta si los operadores diferentes pero que tienen igual prioridad Eje, suma y resta
  3. Si no lo son entonces se extrae la posición en la que se encuentra y se compara devolviendo el valor si es menor mayor o igual





Método esOperador

Descripción
Dado un elemento entonces se verifica si es un operador o no.

Algoritmo
      1. Se tiene el arreglo con todos los operadores
      2. Se busca el elemento en el arreglo si lo encuentra devuelve verdadero caso contrario falso



Clase Variable

Descripción
TDA que va a almacenar simultánea mente una variable y un valor



Clase Proceso

Método pedirIngreso

Descripción
Genera una cuadro de dialogo para que el usuario ingrese una expresión

Algoritmo
       1. Se crea el cuadro de dialogo donde el usuario va ingresar la expresión
       2. Se muestra la expresión para que el usuario verifique que se  encuentre correcta
       3. Guarda la expresión


Método añadirVariables

Descripción
Pide al usuario el valor para las variables encontradas en la expresión para guardarlas en una lista de Variables

Algoritmo
      1. Tenemos las variables que se encontraron en la expresión como caracteres
      2. Se pide al usuario que ingrese el valor de la variable
      3. Se envían tanto el nombre de la variable y el valor al constructor de Variable
      4. La nueva Variable se agrega a la lista variables
      5. Se devuelve la lista de Variables


Método buscarValor

Descripción
Va a encontrar el valor de una variable dentro de una lista de Variables

Algoritmo
       1. Se crea un iterador de la lista de Variables
       2. Se busca en la lista de Variables aquella que tenga el nombre buscado
       3. Se devuelve el valor de esa variable



No hay comentarios:

Publicar un comentario