Category:Amazing Hopper: Difference between revisions
Content added Content deleted
Line 218: | Line 218: | ||
El stack almacena datos que serán los argumentos de las instrucciones HOPPER. |
El stack almacena datos que serán los argumentos de las instrucciones HOPPER. |
||
{DATO} ==> mete DATO al stack. |
{DATO} ==> mete DATO al stack. |
||
donde DATO puede ser: |
donde DATO puede ser: |
||
1) Una constante numérica, de cadena, un parámetro. |
1) Una constante numérica, de cadena, un parámetro. |
||
⚫ | |||
⚫ | |||
OBSERVACION. Pueden apilarse muchos datos en el stack, aunque el número de posiciones del stack es limitado (10), este puede ser cambiado con la cláusula .STACK. Ejemplo: |
OBSERVACION. Pueden apilarse muchos datos en el stack, aunque el número de posiciones del stack es limitado (10), este puede ser cambiado con la cláusula .STACK. Ejemplo: |
||
Line 320: | Line 319: | ||
Un control "!" mantiene un solo dato en el stack, partiendo desde el HEAD. Dos controles, "!!", mantienen los datos en la posición HEAD y HEAD+1 del stack. En general, El control "!(n)", mantiene "n" datos en el stack. Ejemplo: |
Un control "!" mantiene un solo dato en el stack, partiendo desde el HEAD. Dos controles, "!!", mantienen los datos en la posición HEAD y HEAD+1 del stack. En general, El control "!(n)", mantiene "n" datos en el stack. Ejemplo: |
||
// imprime todo el stack, pero lo mantiene gracias a "!!!" |
// imprime todo el stack, pero lo mantiene gracias a "!!!" |
||
{"Mensaje de Hopper: ",2000.9,"\n"}!!!print |
{"Mensaje de Hopper: ",2000.9,"\n"}!!!print |
||
// imprime otra vez el stack, pero esta vez lo consume. |
// imprime otra vez el stack, pero esta vez lo consume. |
||
{"\n"}print |
{"\n"}print |
||
Line 341: | Line 340: | ||
(Sobre el uso de variables, ver las secciones que hablan de ellas, a continuación) |
(Sobre el uso de variables, ver las secciones que hablan de ellas, a continuación) |
||
** MOVER un dato del stack a una variable: |
** MOVER un dato del stack a una variable: |
||
{100},mov(v) |
{100},mov(v) |
||
==> ahora, el stack está vacío, y v=100 |
==> ahora, el stack está vacío, y v=100 |
||
** COPIAR un dato del stack a una variable: |
** COPIAR un dato del stack a una variable: |
||
{"mensaje"},cpy(s) |
{"mensaje"},cpy(s) |
||
==> ahora, el stack continúa con "mensaje", pero s="mensaje" |
==> ahora, el stack continúa con "mensaje", pero s="mensaje" |
||
Line 364: | Line 363: | ||
genera la siguiente línea preprocesada: |
genera la siguiente línea preprocesada: |
||
postfix,{"mensaje"},len,{100},mul,postfix,n=0,mov(n) |
postfix,{"mensaje"},len,{100},mul,postfix,n=0,mov(n) |
||
Line 370: | Line 369: | ||
#compute{ |
#compute{ |
||
n:=( len("mensaje")*100 ) |
n:=( len("mensaje")*100 ) |
||
} |
|||
genera la siguiente línea: |
genera la siguiente línea: |
||
{"mensaje"},len,{100},mul,r=0,cpy(r) |
{"mensaje"},len,{100},mul,r=0,cpy(r) |
||
NOTA: si va a usar ":=", la expresión a asignar debe ser colocada entre paréntesis. |
NOTA: si va a usar ":=", la expresión a asignar debe ser colocada entre paréntesis. |
||
Line 381: | Line 380: | ||
HOPPER puede apilar una matriz o vector (un array), de dos maneras: |
HOPPER puede apilar una matriz o vector (un array), de dos maneras: |
||
1) copiando el puntero a la matriz (forma usual). |
1) copiando el puntero a la matriz (forma usual). |
||
⚫ | |||
⚫ | |||
Para copiar la matriz completa, se debe usar el control "@" antes de la variable. |
Para copiar la matriz completa, se debe usar el control "@" antes de la variable. |
||
Line 396: | Line 394: | ||
1.61907 1.90591 |
1.61907 1.90591 |
||
1.3727 1.84048 |
1.3727 1.84048 |
||
94.807 17.5982 ==> esto es "n" original, por 100 = t. |
94.807 17.5982 ==> esto es "n" original, por 100 = t. |
||
61.9072 90.5911 |
61.9072 90.5911 |
||
37.2703 84.048 |
37.2703 84.048 |
||
En cambio, si no se usa el control "@", solo copia el puntero. |
En cambio, si no se usa el control "@", solo copia el puntero. |
||
n=0, {2,3}rand array(n) // crea un array aleatorio de 3 filas y 2 columnas en "n" |
n=0, {2,3}rand array(n) // crea un array aleatorio de 3 filas y 2 columnas en "n" |
||
Line 411: | Line 409: | ||
1.8034 1.84302 |
1.8034 1.84302 |
||
1.93367 1.23961 |
1.93367 1.23961 |
||
157.044 147.523 ==> esto es "n" incrementado, por 100 = t. |
157.044 147.523 ==> esto es "n" incrementado, por 100 = t. |
||
180.34 184.302 |
180.34 184.302 |
||
Line 424: | Line 422: | ||
OBSERVACION 3. No se permiten instrucciones combinadas dentro de "{}". Observe que "++n" está fuera de "{}". |
OBSERVACION 3. No se permiten instrucciones combinadas dentro de "{}". Observe que "++n" está fuera de "{}". |
||
== CUESTIONES SINTACTICAS TRIVIALES == |
== CUESTIONES SINTACTICAS TRIVIALES == |