9 abr. 2010

Programación en RPL

“RPL” vuelve a dirigir aquí. Para otras aplicaciones, vea RPL (desambiguación).

Lenguaje de programación de RPL (Significado de RPL ROM- lengua procesal basada o, alternativomente, Pulimento reverso Lisp) es a calculadora handheld sistema y uso lenguaje de programación utilizado encendido Hewlett-Packard'representación gráfica gráficamente de la ingeniería de s RPN calculadoras del HP-28, HP-48, y HP-49 serie.

RPL es a programación estructurada lengua basada en RPN pero igualmente capaz del proceso algebraico expresiones y fórmulas. RPL tiene muchas semejanzas a Adelante, ambas idiomas que son apilado- basado, y por supuesto el lisp lista-basado. El contrario a las calculadoras anteriores de los CABALLOS DE FUERZA RPN, que tenían un apilado fijo del cuatro-nivel, el apilado usado por RPL es limitado solamente por la calculadora disponible ESPOLÓN.

RPL originó del CABALLO DE FUERZA Corvallis, Oregon facilidad del desarrollo adentro 1984 como reemplazo para la práctica anterior de poner en ejecución sistemas operativos de calculadoras adentro lenguaje ensamblador. [1] Según una cotización del Dr. Guillermo Wickes, uno de los reveladores originales de RPL, “el equipo del desarrollo nunca lo llama todo menos (las iniciales) RPL.” [2]
Contenido

    * 1 Variantes
    * 2 Bloques de control
          o 2.1 Declaraciones condicionales
                + 2.1.1 IF/THEN/ELSE/END
                + 2.1.2 IFT/IFTE
                + 2.1.3 CASE/THEN/END
          o 2.2 Declaraciones de colocación
                + 2.2.1 FOR/NEXT
                + 2.2.2 START/NEXT
                + 2.2.3 FOR/STEP y START/STEP
                + 2.2.4 WHILE/REPEAT/END
                + 2.2.5 DO/UNTIL/END
    * 3 Acoplamientos externos

Variantes

La variante interna del medio-nivel del punto bajo de RPL, llamada Sistema RPL (o SysRPL) se utiliza en algunas calculadoras anteriores de los CABALLOS DE FUERZA así como las ya mencionadas, como parte de su sistema operativo lengua de puesta en práctica. Esta variante de RPL no es accesible al usuario de la calculadora sin el uso de herramientas externas. Es posible causar un desplome serio mientras que la codificación en SysRPL, así que la precaución se deben utilizar mientras que lo usa. El de alto nivel Usuario RPL (o UserRPL) la versión de la lengua está disponible en las calculadoras de representación gráfico gráficamente dichas para convertirse textual así como programas de uso gráficos. Todos los programas de UserRPL internamente se representan como programas de SysRPL, pero utilizan solamente un subconjunto seguro de los comandos disponibles de SysRPL. El repaso de las faltas que es una parte de UserRPL ordena, sin embargo, los programas perceptiblemente más lentamente que equivalentes de SysRPL de los programas de UserRPL de las marcas. El comando SYSEVAL de UserRPL dice la calculadora procesar partes señaladas de un programa de UserRPL como código de SysRPL.

Bloques de control

Los bloques de control de RPL no son terminantemente posfijo. Aunque hay algunas excepciones notables, las estructuras de bloque de control aparecen como en una lengua estándar del infix. La calculadora maneja esto permitiendo que la puesta en práctica de estos bloques salte a continuación en la corriente del programa cuanto sea necesario.

Declaraciones condicionales

IF/THEN/ELSE/END

RPL apoya la prueba condicional básica a través de la estructura de IF/THEN/ELSE. El sintaxis básico de este bloque es:

SI EXTREMO si-verdadero de la condición ENTONCES [si-falso OTRO]

El ejemplo siguiente prueba para considerar si el número en el fondo del apilado es “1” y, si es así lo substituye por el “igual a uno”:

“SI 1 == ENTONCES “igual a un” EXTREMO”

SI la construcción evalúa la condición entonces prueba el fondo del apilado para el resultado. Consecuentemente RPL puede apoyar opcionalmente Adelante-estilo SI los bloques, permitiendo que la condición sea determinada antes del bloque. Dejando la condición vacía, SI la declaración no realiza ninguna cambios al apilado durante la ejecución de la condición y utiliza el resultado existente en el fondo del apilado para la prueba:

“1 == SI ENTONCES “igual a un” EXTREMO”

IFT/IFTE

La prueba del condicional del posfijo puede ser lograda usando las funciones de IFT (“si-entonces”) y de IFTE (“si-entonces-otro”).

IFT e IFTE hacen estallar dos o tres comandos del apilado, respectivamente. El valor topmost se evalúa como boleano y, si es verdad, el segundo valor topmost se echa atrás en el apilado. IFTE permite un tercer valor “otro” que sea echado atrás en el apilado si el boleano es falso.

El ejemplo siguiente utiliza la función de IFT para hacer estallar un objeto del fondo del apilado y, si es igual a 1, la substituye por “uno”:

“1 == “un” IFT”

El ejemplo siguiente utiliza la función de IFTE para hacer estallar un objeto del fondo del apilado y, si es igual a 1, la substituye por “uno”. Si no iguala 1, lo substituye por la secuencia “no una”:

“1 == “un” “no un” IFTE”

IFT e IFTE evaluarán un bloque del programa dado como una de sus discusiones, permitiendo una forma más compacta de lógica condicional que una estructura de IF/THEN/ELSE/END. El ejemplo siguiente hace estallar un objeto del fondo del apilado, y lo substituye por “uno”, “menos”, o “más”, dependiendo de a si es igual, menos que, o 1 mayor que.


GOTA “del ==
 de la duplicación 1 “un””
 “1  < “Menos” “más” IFTE”
 IFTE


CASE/THEN/END

Para apoyar una lógica condicional más compleja, RPL proporciona la estructura de CASE/THEN/END para manejar pruebas exclusivas múltiples. Solamente uno de los ramas dentro de la declaración del CASO será ejecutado. El sintaxis básico de este bloque es:

EXTREMO
 if-condition_1 del CASO condition_1 ENTONCES

el EXTREMO del if-condition_n del condition_n ENTONCES
 si-ningunos
 TERMINA

El código siguiente ilustra el uso de un bloque de CASE/THEN/END. Dado una letra en el fondo del apilado, lo substituye por su secuencia equivalente o la “letra desconocida”:


La letra
 desconocida gamma “beta de la”” GOTA del” EXTREMO “
del” == duplicación “G del EXTREMO del” == de B duplicación
 “del EXTREMO de la alfa de la” del” == de A de la duplicación “del CASO
 ENTONCES “ENTONCES ENTONCES
 “
del INTERCAMBIO del FINAL @ consigue librada de la letra original


Este código es idéntico al equivalente jerarquizado siguiente del bloque de IF/THEN/ELSE/END:


SI alfa” del” == de A
 “
de la duplicación “ENTONCES

SI duplicación “B” == ENTONCES
 “beta”

SI la letra desconocida OTRA “gamma”
” la GOTA del”
 ==
 de la duplicación “G ENTONCES
 “
del INTERCAMBIO
 del FINAL
 del EXTREMO del EXTREMO @ consigue librada de la letra original


Declaraciones de colocación

FOR/NEXT

RPL proporciona una declaración de FOR/NEXT para colocar a partir de un índice a otro. El índice para el lazo se almacena en una variable local temporal que se pueda alcanzar en el lazo. El sintaxis del bloque de FOR/NEXT es:

index_to del index_from PARA el loop_statement del variable_name DESPUÉS

El ejemplo siguiente utiliza PARA el lazo sumar los números a partir de la 1 a 10. La variable del índice del PARA el lazo es “I”:


0       @ comienzo con cero en el apilado
 1 10    @ lazo a partir de la 1 a 10
 PARA I   @ “I” es la variable local
 I + @ agrega “I” al total corriente
 SIGUIENTE    @ repetición…


START/NEXT

El bloque de START/NEXT se utiliza para un bloque simple que funcione de un índice del comienzo a un índice del final. Desemejante del lazo de FOR/NEXT, la variable de colocación no está disponible. El sintaxis del bloque de START/NEXT es:

loop_statement del COMIENZO del index_to del index_from DESPUÉS

FOR/STEP y START/STEP

FOR/NEXT y START/NEXT apoyan un incremento definido por el usario del paso. Substituyendo la palabra clave SIGUIENTE que termina por un incremento y la palabra clave del PASO, la variable del lazo será incrementada o decremented por un diverso valor que el defecto de +1. Por ejemplo, el lazo siguiente camina detrás a partir el 10 a 2 decrementing el índice del lazo por 2:

“10 PASO DE 2 COMIENZOS -2”

WHILE/REPEAT/END

El bloque de WHILE/REPEAT/END en RPL apoya un lazo indefinido con la prueba de la condición al principio del lazo. El sintaxis del bloque de WHILE/REPEAT/END es:

MIENTRAS QUE EXTREMO del loop_statement de la REPETICIÓN de la condición

DO/UNTIL/END

El bloque de DO/UNTIL/END en RPL apoya un lazo indefinido con la prueba de la condición en el extremo del lazo. El sintaxis del bloque de DO/UNTIL/END es:

HAGA el loop_statement HASTA EXTREMO de la condición

Acoplamientos externos

    * Manual de referencia del usuario experimentado, referencia del comando y guía de RPL - De CABALLOS DE FUERZA
    * Artículos de programación de RPL - De hpcalc.org
    * Artículo sobre RPL, con ejemplos del código - De El museo de las calculadoras de los CABALLOS DE FUERZA (MoHPC)

Puedes encontrar material muy interesante en http://www.hpcalc.org/hp49/docs/programming/

 

0 comentarios:

Publicar un comentario

Participa,has que tu opinión valga, da a conocer al mundo tu opinión.