APPLICATIONSDIVERS ★ EVALUADOR DE EXPRESIONES ★

Evaluador De Expresiones : Usando La Notacion Polaca Inversa (Amstrad Semanal)Applications Divers
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Todo el mundo está acostumbrado a utilizar una notación determinada, que llamamos algebráica y en la cual el operador está situado entre los operandos.

Pero existen otros tipos de notación, como la polaca inversa o postfija. En este artículo vamos a intentar exponer cómo funciona esta forma de operar, sin intentar averiguar si es mejor o peor que otras notaciones.

La notación polaca inversa

Esta notación es llamada polaca en honor al polaco Lukasievisz, que fue el inventor de este tipo de notación. Veamos unos ejemplos utilizando ambas notaciones:

ALGREBAICAPOLACA
2 + 42 4 +
(8 x 6)/28 6 x 2 /
(2x34)33 4 2 x3

Parece un poco complicado, pero con un poco de práctica nos resultará lo más natural del mundo. A primera vista se puede ver que esta notación «pasa de los paréntesis, no le hacen ninguna falta, ya que la RPN (Reverse Polish Notation, utilizamos las siglas inglesas, yo que las españolas no son utilizadas normalmente) emplea un método de evaluación que los hace innecesarios. Para esto utiliza un método algo peculiar, vea-moslo en forma de algoritmo:

— Seguir la expresión de izquierda a derecha.
— Si se encuentra un número, introducirlo en la pila.
— Si se encuentra un signo de operación:
— Extraer dos números de la pila.
— Realizar la operación correspondiente.
— Introducir el resultado en la pila.

El único número que tendremos en la pila al finalizar las operaciones será el resultado.

Veamos ahora el programa en forma de algoritmo, como ya es habitual en esta serie.

Introduccir número

En esta opción se comprobará que el carácter tecleado sea un número, la letra E o un punto, introduciéndolo el número tecleado en la pila.

— Mientras que no exista condición de salida.
— Coger carácter del teclado.
— Si el carácter es un número o E o un punto.
— Concatenarlo en la variable TEM$.
— Si es < ENTER + o un signo de operación.
— Situar el valor de TEM$ en la cima de la pila.
— Salir del bucle.
— Si el carácter es V.
— Vaciar la pila.
— Salir del bucle.
— Si el carácter es B.
— Borrar TEM$.
— Salir del bucle.
— Volver.

Se genera un error de código 151 si se llena la pila.
Menos
Esta subrutina se hace necesaria ya que no podemos saber de antemano si el símbolo «—» va a ser un signo de operación o forma parte de un número negativo.

— Mientras no haya condición de salida.
— Capturar dato del teclado.
— Si el dato es un número o E o un punto.
— Hacer TEM$ igual a «—».
— Ir a la subrutina de introducir número.
— Volver.
— Si el dato es ENTER o un signo de operación.
— Efectuar sustracción.
— Volver.

Extraer operador


Esta subrutina dirige la operación a la subrutina que corresponda de acuerdo con el signo de operación tecleado.

— Ir a la subrutina.
— Dependiendo del signo tecleado, efectuar operación correspondiente.
— Volver.

Coger operadores

Esta subrutina comprueba que haya los operadores necesarios para efectuar el cálculo, si no los hay genera el error número 50.

— Coger los dos operadores superiores de la pila.
— Almacenarlos en NI y N2 respectivamente.
— Volver.

Conclusiones

Hay bastantes más subrutinas de las explicadas pero éstas son para el manejo interno del programa.

Esta notación es utilizada por lenguajes de todos conocidos como Logo, recordad las instrucciones aritméticas de este lenguaje, en las que primero se introduce la operación a realizar. Esta notación es una variante de la RPN llamada notación prefija. Otro lenguaje que se sirve de la RPN es el Forth, lenguaje rápido donde los haya.

El programa se hizo con las operaciones básicas, no habiendo ningún tipo de dificultad en añadir otras operaciones, la única limitación es que se deben referenciar con una sola letra, esta letra se añadirá a la variable BUSCA$, creándose la subrutina para el tratamiento de esta nueva operación.

SA

★ PUBLISHERS: HOBBY PRESS, Amstrad Semanal
★ YEAR: 1986
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: AMSTRAD SEMANAL 1986
★ AUTHOR: Daniel Palomo Ortega
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
  » Evaluador  de  Expresiones-Usando  la  Notacion  Polaca  Inversa    (Amstrad  Semanal)    SPANISHDATE: 2024-05-16
DL: 5
TYPE: ZIP
SiZE: 5Ko
NOTE: 40 tracks
.DSK: √

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Urejevalnik Besedil v1
» Applications » CPC 464 Eval (Amstrad Action)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 623 millisecondes et consultée 44 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.