From 3526ecf92b39c789c82c079283707e6a04493a64 Mon Sep 17 00:00:00 2001 From: sejo Date: Thu, 27 May 2021 16:18:05 -0500 Subject: notas de postfix --- src/postfix.gmo | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/postfix.gmo (limited to 'src/postfix.gmo') diff --git a/src/postfix.gmo b/src/postfix.gmo new file mode 100644 index 0000000..5ab589f --- /dev/null +++ b/src/postfix.gmo @@ -0,0 +1,98 @@ +# notación postfix (o rpn: reverse polish notation) + +los operadores van después de los operandos, y todo funciona con una pila (stack) + +por ejemplo, para sumar dos números: + +``` +3 4 + +``` + +leyendo de izquierda a derecha: + +* primero se hace "push" al 3 +* luego se hace "push" al 4 +* el operador + hace "pop" dos veces, suma los valores, y hace "push" al resultado + +tres números: + +``` +3 4 2 + + +``` + +nota: el primer operador + realiza la suma entre 4 y 2, y el segundo operador + realiza la suma entre ese resultado y 3. + +otra posibilidad: + +``` +3 4 + 2 + +``` + +# operadores de stack + +* pop: saca (y descarta) el elemento de arriba de la pila +* swp: intercambia los dos elementos superiores en la pila +* dup: duplica el elemento superior en la pila +* ovr: copia el segundo elemento de la pila, y colócalo hasta arriba +* rot: quita el tercer elemento de la pila, y colócalo hasta arriba + +# rutinas con firth + +firth es una calculadora rpn con fracciones: + +=> https://git.sr.ht/~rabbits/firth firth + +el operador . imprime el estado de la pila + +## tiempos + +convierte (minutos, segundos) a una cantidad de segundos. en el ejemplo, son 8 minutos, 49 segundos: + +``` +8 49 +swp 60 * + . + +resultado: 529 +``` + +convierte (minutos, segundos) correspondientes a un "paso" min/km, a una velocidad km/hr: + +``` +4 30 +swp 60 * + 3600 swp / . + +resultado en modo dec: 13.3333 (km/hr) +``` + +convierte una velocidad km/hr, a un "paso" min/km + +``` +14 +3600 swp / 60 / . + +resultado en modo dec: 4.285714 min/km +``` + +o para obtener minutos y segundos: + +``` +14 +3600 swp / dup 60 / swp 60 % . + +resultado en modo mix: 4&2/7 17&1/7 ( 4'17" min/km) +``` +¿se nota que me gusta el {running}? + + +# herramientas + +firth, una calculadora rpn con fracciones: +=> https://git.sr.ht/~rabbits/firth firth + +uxn, una máquina virtual basada en pilas +=> https://wiki.xxiivv.com/site/uxn.html uxn + + + +## llega(n) aquí: +=> ./apuntes.gmi {apuntes} -- cgit v1.2.3