maria reyes
TRANSCRIPT
REPÚBLICA BOLIVARIANA DE VENEZUELAINSTITUTO UNIVERSITARIO POLITECNICO
“SANTIAGO MARIÑO”EXTENSIÓN PORLAMAR
EXPRESIONES REGULARES
Autor: Br. María ReyesProgramación No Numérica II
Porlamar, Julio, 2016
INTRODUCCIÓN
Las expresiones son otro de los conceptos básicos que surgen en los primeros lenguajes de programación, Una expresión es una combinación de valores y operaciones que, al ser evaluados, entregan un valor.
Cabe destacar que su objetivo principal es poder expresar con facilidad cálculos complejos, con una sintaxis inspirada en las matemáticas. Es por ello que para poder ejecutar su objetivo principal con facilidad suele utilizarse el Método Divide y Vencerás el cual consiste en Descomponer el problema en ciertos números de sub-problemas más pequeños pero del mismo tipo, para así poder Resolver de forma sucesiva e independiente todos estos sub-problemas Combinando las soluciones obtenidas para obtener la solución del problema que se desea resolver.
EXPRESIONES Una expresión es un trozo del texto de un programa que
denota un proceso de cálculo que produce como resultado un valor. El proceso de cálculo es llevado a cabo durante la ejecución del programa. El proceso de llevar a cabo este cálculo se denomina evaluar la expresión.
Una expresión se puede evaluar un número arbitrario de veces durante la ejecución de un programa. Cada vez puede producir un valor distinto como resultado.
Formalmente, una expresión es una aplicación que asigna un valor a cada estado de ejecución posible. (Un estado de ejecución es un conjunto finito de variables distintas, cada una con al menos un nombre, un tipo, y un valor del tipo.)
EXPRESIONES REGULARES El objetivo de las expresiones regulares es representar
todos los posibles lenguajes definidos sobre un alfabeto Σ, en base a una serie de lenguajes primitivos, y unos operadores de composición.
Lenguajes primitivos: el lenguaje vacío, el lenguaje formado por la palabra vacía, y los lenguajes correspondientes a los distintos símbolos del alfabeto.
Operadores de composición: la unión, la concatenación y el cierre. Ejemplo: 1. Lenguaje formado por las cadenas que terminan en 01:
{0,1}*.{01}= ({0}∪{1})*.{01}
⇒ Expresión regular: (0+1)*01 Lenguaje formado por palabras de longitud par sobre a’s y b’s:
{aa,ab,ba,bb}*= ({aa}∪{ab}∪{ba}∪{bb})*
⇒Expresión: (aa+ab+ba+bb)*
EXPRESIONES ARITMÉTICASSon expresiones analíticas que no contiene más
funciones que aquellas que pueden calcularse con las operaciones del álgebra, a saber:
Suma Resta Multiplicación División
EXPRESIONES LÓGICAS Los operadores son lógicos o relacionales. Los
resultados sólo pueden ser dos valores:
CiertoFalsto
EVALUACION EXPRESIONES
Las expresiones pueden ser evaluadas de forma secuencial
EVALUACION EXPRESIONES Para evaluar una expresión utilizando esta técnica deben tenerse en cuenta las siguientes reglas:
La prioridad de lo operadores de mayor a menor es * / + - Las operaciones con igual prioridad se evalúan de izquierda a derecha Al final de la operación se efectúan el resto de las operaciones pendientes hasta que el contenedor de los operadores quede vacio Cuando un paréntesis que cierra aparece se ejecutan todas las operaciones hasta que aparece un paréntesis que abre
EXPRESIÓN HACIENDO USO DE LA ESTRUCTURA PILA.
Una pila representa una estructura lineal de datos en que se puede agregar o quitar elementos únicamente por uno de los dos extremos. En consecuencia, los elementos de una pila se eliminan en el orden inverso al que se insertaron. Debido a está característica, se le conoce como estructura LIFO (last input, first output).
Si deseamos representar las expresiones (2+(3*4)) = x y ((2+3)*4)= x en las tres notaciones mencionadas, el resultado sería:
(2+(3*4)) = x ((2+3)*4) = x
Notación prefija = + 2 * 3 4 x = * + 2 3 4 x
Notación infija 2+3*4 = x (2+3)*4 = x
Notación postfija 2 3 4 * + x = 2 3 + 4 * x =
EXPRESIÓN PREFIJALa Expresión o Notación PreFija nos indica que el operador va antes de los operandos sus características principales son:
Los operandos conservan el mismo orden que la notación infija equivalente.No requiere de paréntesis para indicar el orden de precedencia de operadores ya que el es una operación.Se evalúa de izquierda a derecha hasta que encontrémosle primer operador seguido inmediatamente de un par de operandos.Se evalúa la expresión binaria y el resultado se cambia como un nuevo operando. Se repite este hasta que nos quede un solo resultado.
Notación prefija: El orden es operador, primer operando, segundo operando
EXPRESIÓN INFIJA
La Expresión o Notación InFija es la forma mas común que utilizamos para escribir expresiones matemáticas, estas notaciones se refiere a que el operador esta entre los operandos. La notación infija puede estar completamente parentizada o puede basarse en un esquema de precedencia de operadores así como el uso de paréntesis para invalidar los arreglos al expresar el orden de evaluación de una expresión:
3*4=123*4+2=14
3*(4+2)=18
Notación infija: La notación habitual. El orden es primer operando, operador, segundo operando
EXPRESIÓN POSTFIJA
Como su nombre lo indica se refiere a que el operador ocupa la posición después de los operandos sus características principales son:
El orden de los operandos se conserva igual que la expresión infija equivalente no utiliza paréntesis ya que no es una operación ambigua.La operación posfija no es exactamente lo inverso a la operación prefija equivalente:
(A+B)*C AB+C*
Notación postfija: El orden es primer operando, segundo operando, operador.
EVALUACIÓN DE UNA NOTACIÓN POSTFIJA
Ejemplo: Expresión aritmética infija: A*B / (A+C) Expresión aritmética postfija: AB*AC+/ Valores A=4, B=5 y C=6: 45*46+/
Código:Precondición: La expresión postfija es correcta y consiste en un string donde cada carácter es o un operando o un operador. Utilizamos una pila que almacena valores reales
Utilizamos la función evalúa para realizar la operación indicada por el símbolo del operador
CONVERSIÓN DE INFIJA A POSTFIJA
NOTAS:La prioridad de la potencia es menor en la pila que en la expresión infija para evaluar varios operadores de potenciación de derecha a izquierda (se evalúa primero lo último encontrado)Esta variación no afecta a los otros operadores ya que la prioridad de la potencia siempre es mayorEl paréntesis izquierdo pasa a tener prioridad cero ya que sólo se extrae de la pila (para eliminarlo) cuando aparece un paréntesis derecho.La prioridad del paréntesis derecho no está definida porque nunca entre a formar parte de las comparaciones
EJEMPLO:Expresión aritmética infija: A*B / (A+C)Expresión aritmética postfija: AB*AC+/
CONVERSIÓN DE INFIJA A POSTFIJA
CONCLUSIÓN
Las expresiones son elementales en los distintos lenguajes de programación. Siendo utilizadas para llevar a cabo un objetivo principal como es resolver un problema de alta complejidad y así lograr el resultado requerido.
Suelen existir varios tipos de expresiones las cuales también son conocidas como notaciones, Estas son nombradas como prefija, infija y postfija. Cabe destacar que el ser humano por naturaleza utiliza la notación infija donde el operador va en medio de los operandos: "10/6*2" mientras que los procesadores utilizan la notación postfija donde primero van los operandos y luego el operador.