Expresiones regulares en lenguajes de programación
1. REPÚBLICA BOLIVARIANA DE VENEZUELA
INSTITUTO UNIVERSITARIO POLITECNICO
“SANTIAGO MARIÑO”
EXTENSIÓN PORLAMAR
EXPRESIONES REGULARES
Autor: Br. María Reyes
Programación No Numérica II
Porlamar, Julio, 2016
2. 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.
3. 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.)
4. 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)*
5. EXPRESIONES ARITMÉTICAS
Son 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
6. EXPRESIONES LÓGICAS
Los operadores son lógicos o relacionales. Los resultados sólo
pueden ser dos valores:
Cierto
Falsto
EVALUACION EXPRESIONES
Las expresiones pueden ser evaluadas de forma secuencial
7. 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
8. 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 =
9. EXPRESIÓN PREFIJA
La 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
10. 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=12
3*4+2=14
3*(4+2)=18
Notación infija: La notación habitual. El orden es primer operando, operador,
segundo operando
11. 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.
12. 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+/
13. 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
14. Utilizamos la función evalúa para realizar la operación indicada por el
símbolo del operador
CONVERSIÓN DE INFIJA A POSTFIJA
15. 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 mayor
El 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
19. 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.