Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Expresiones aritméticas

31/40
Recursos

Los árboles también nos sirven para representar expresiones aritméticas, para ello debe cumplir con las siguientes condiciones:

• Los vértices terminales son operandos.
• Los vértices internos son operadores.
• La raíz siempre debe ser un operador.

Así como vimos las diferentes formas para recorrer un árbol, las expresiones aritméticas tienen también sus propias formas:

• Pre fijo: raíz-izquierda-derecha
• In fijo: izquierda-raíz-derecha
• Pos fijo: izquierda-derecha-raíz

Aportes 40

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

para los que esten interesados en entender correctamente el forward y el backward pass al entrenar una red neuronal, esto es clave.

Les comparto un recurso mnemotécnico que vi en otro curso de Platzi para aplicar la jerarquía de operadores: PEMDAS (Paréntesis, Exponentes, Multiplicaciones, Divisiones, Adiciones o sumas, y Sustracciones o restas).

Esto ayuda a aclarar porqué en distintos lenguajes de programación las expresiones aritméticas se escriben distinto.

Mientras que en python y javascript lo hacemos escribiendo:

3 + 4

y nos sale 7

en Racket lo hacemos escribiendo:

+ 3 4

y obtenemos el mismo resultado

Interesante x3

Esto està igualito a un Xpath, ¿No creen?

**Expresiones aritméticas con árboles: **

  • Los vértices hijos serán los operandos.
  • Los vértices internos serán los operadores.
  • La raíz siempre debe ser un operador.
  • Debe aplicarse las propiedades de precedencia de operadores: ()[], raíces y potencias, */, ±
  • pre-fijo: se inicia desde el vértice padre, sigue el hijo izquierdo y por último el hijo derecho.
  • in-fijo: inicia leyendo el hijo izquierdo, después el padre y por último el hijo derecho
  • pos-fijo: la lectura se inicia con el hijo izquierdo, después el hijo derecho y por último el padre.

Vaya vaya. Super interesante la clase. No pude evitar recordar sobre la Notación Polaca. La había leido antes como una curiosidad matemática y lógica, pero nunca había entendido su porqué y su uso. Pero gracias a este video ya me quedó super claro.
Dejo link por si alguien le interesa profundizar sobre la notación Prefija o Polaca
https://es.wikipedia.org/wiki/Notación_polaca

Transformación de la expresión aritmética a Notación Pos - Fija

Notas de clase

Los árboles sirven para representar expresiones aritméticas
El árbol usado debe cumplir con las siguientes condiciones:
• Los vértices terminales son operandos.
• Los vértices internos son operadores.
• La raíz siempre debe ser un operador.
• El orden de resolución de las operaciones aritmética siempre es: paréntesis, raíces, potencias, multiplicación, división, suma y resta
La expresión aritmética, al ser representada por un árbol, posee los tipos de recorrido pre fijo, in fijo y post orden (equivalentes de pre orden, in orden y post orden).
Utilidad de las notaciones
Las notaciones fijas, infijas y posfijas son formas en las que los lenguajes de programación pueden entender nuestras expresiones aritméticas. Dependiendo del lenguaje de programación entenderá una o la otra.
Ejemplo:
Notación infija (a+b): es entendida por la mayoría de lenguajes, como PHP y JS.
Notacion prefija (+ab): el lenguaje funcional Haskell entiende la entiende

Para resolver un árbol con operaciones aritméticas, solo tenemos que hacer lo mismo que resolverlas, empezar por el paréntesis más anidado.

Las expresiones que generamos en nuestros árboles, las podemos recorrer, de la misma forma en la que están hechas las notaciones: Prefijas, en la que primero va el operador (En este caso operador es raíz, podemos ver similitud con la enterior forma de recorrer los árboles) luego vienen las Infijas, osea que ponen el operador en el medio: a + b, y las Posfijas, osea las que llevan el operador en el final: ab+

Representar àrboles aritméticamente es posible, pero hay ciertas reglas: Los vèrtices terminales son los que nos representan los operando (números), mientras que los vértices internos, o todo vèrtice que cumpla como raìz o padre, serán los operadores. La raíz siempre debe ser un operador y es el operador con más relevancia. Tambièn tenemos que aplicar la prioridad de operadores algebráica.

LO QUE PUEDO OBSERVAR ES QUE LA EXPRESION " IN FIJA " ES LA MAS PARECIDA AL ENUNCIADO ORIGINAL , CLARO MATEMATICAMENTE HABLANDO

En el minuto 2:23 dice que las operadores se resuelven en ese orden en la matemáticas, y en parte es verdad. Por ejemplo, es verdad para la operación aritméticas, ya que empiezas resolviendo los paréntesis y terminas con las sumas. Pero por ejemplo, en el despeje que ecuaciones algebraicas se realiza al revés se inicia por las sumas y se termina por los paréntesis.

Otra de forma de llegar a la notacion Pos Fija es ir anotando los operandos (en este caso las letras) en nuestro resultado, y en una stack aparte ir apilando los los parentesis de abre y los operadores, y cuando en la expresion original nos encontremos con un parentesis de cierre, debemos limpiar la pila y sacar los operadores para agregarlos a nuestro resultado:

.
Si suena un poco confuso, dejo un ejemplo:

/* Hagamoslo con el ejemplo de la clase: */
[(a + b) / (c * (d - e))]

.
Lo que hacemos entonces es que siempre encerramos toda la expresion en llaves, (o en parentesis como quieras).
.
Reccoremos la expresion y vemos que tenemos una llave y un parentesis que abre, por lo tanto los agregamos a la pila

[(

Continuamos avanzando y vemos que hay una letra, la anotamos en nuestro resultado:
a
Ahora hay un operador +. Los operadores van a la pila:

[(+

Continuamos avanzando y vemos que hay una letra, la unimos a nuestro resultado:

ab
Ahora nos encontramos con un parentesis de cierre, aqui es cuando limpiamos la pila para agregar los operadores a nuestro resultado.
ab+
.
La primera llave no se saca hasta no llegar a la llave de cierre en la expresion. Por lo tanto, nuestra pila esta solo con la llave de abre.
[
Ya recorrimos la primera parte de la expresion: [(a + b) / (c * (d - e))]
Vamos con la que queda: --> / (c * (d - e))]
.
De primera nos encontramos un operando, lo apilamos en nuestra pila:
[/
.
Luego tenemos un parentesis de abre, lo agregamos:
[/(
.
Lugo hay un operando, este lo unimos a nuestro resultado:
ab+c
.
Y asi sucesivamente hasta llegar a un parentesis de cierre para sacar los operadores de la pila y agregarlos en orden de salida a nuestro resultado:
ab+cde-*/

Excelente para complementar mi clase de compiladores

DIFICIL, pero esta interesante…QUIERO ENTENDER…

Transformación de la expresión aritmética a Notación In - Fija

Sinceramente para mi es más facil construir el árbol desde el operador con mayor prioridad, es decir iniciar con la raíz, cuestión de gustos.

Transformación de la expresión aritmética a Notación Pre - Fija

Las expresiones aritméticas las podemos recorrer de la misma forma que los árboles

Ejemplo práctico

Excelente explicación

Excelente

Tip: El simbolo que no menciona en 1:53 representa la función valor absoluto

Muy bien, me agrada cómo explicas.

Amé esta clase 💚

Jerarquía de operadores

Las expresiones aritméticas tiene reglas similares a las expresiones regulares

2:15 ¿Dentro de esta jerarquía, donde van las funciones trigonometricas?

Excelente clase

Este tema me ha recordado el lenguaje de programacion LISP (no se hoy en dia si se sigue usando pero yo lo usé dentro de autocad para crear nuevas heramientas.

Expresiones Aritméticas
Podemos representar las operaciones aritméticas a través del uso de árboles teniendo en cuenta:

  • Los vertices terminales con operandos (números)
  • Los vertices internos son operadores
  • La raíz siempre es un operador (operador principal)

Expresión del recorrido

  • Pre fija → similar a la expresión en preorden
  • In fija → similar a la expresión en in orden
  • Pos fija → similar a la expresión en pos orden

eso es completamente nuevo para mí.
excelente

excelente clase, muy bien explicado por el maestro

Buena clase.