Category:Amazing Hopper: Difference between revisions
Content added Content deleted
Line 2,458: | Line 2,458: | ||
No obstante, se puede acceder a una sintaxis más estándar, para algunas de las operaciones, dentro de #HIGH-LEVEL. |
No obstante, se puede acceder a una sintaxis más estándar, para algunas de las operaciones, dentro de #HIGH-LEVEL. |
||
HOPPER DESCRIPCION ALTO NIVEL |
|||
----------------------------------------------------------------------------------- |
----------------------------------------------------------------------------------- |
||
[a,b,c] Establece un intervalo a operar en |
[a,b,c] Establece un intervalo a operar en |
||
las matrices y vectores. Acepta |
las matrices y vectores. Acepta |
||
hasta 3 dimensiones, y se pueden |
hasta 3 dimensiones, y se pueden |
||
definir, de izquierda a derecha, |
definir, de izquierda a derecha, |
||
filas, columnas y páginas. |
filas, columnas y páginas. |
||
Las instrucciones que usan estos |
Las instrucciones que usan estos |
||
intervalos son: |
intervalos son: |
||
GET, PUT, = (asignación). |
GET, PUT, = (asignación). |
||
Para acceder a una porción de |
Para acceder a una porción de |
||
un array, por ejemplo, de 2D, |
un array, por ejemplo, de 2D, |
||
se suele hacer esto: |
se suele hacer esto: |
||
[2:3,4:end]get(array),plus'10', |
[2:3,4:end]get(array),plus'10', |
||
put(array) |
put(array) |
||
lo que obtiene una sub-matriz de |
lo que obtiene una sub-matriz de |
||
"array", de 2 filas y 7 columnas, |
"array", de 2 filas y 7 columnas, |
||
suponiendo que array tiene 10; |
suponiendo que array tiene 10; |
||
luego, suma 10 a sus elementos, |
luego, suma 10 a sus elementos, |
||
y vuelve a ponerlo en el array |
y vuelve a ponerlo en el array |
||
original. |
original. |
||
En #HIGH-LEVEL, esto se humaniza: |
En #HIGH-LEVEL, esto se humaniza: |
||
#hl{ |
#hl{ |
||
array[2:3,4:end] = array[2:3,4:end]+10 |
array[2:3,4:end] = array[2:3,4:end]+10 |
||
} |
} |
||
o bien: |
o bien: |
||
#hl{ |
#hl{ |
||
array[2:3,4:end] += 10 |
array[2:3,4:end] += 10 |
||
} |
} |
||
aunque #HIGH-LEVEL es más sencillo |
aunque #HIGH-LEVEL es más sencillo |
||
de usar, es más costoso que la |
de usar, es más costoso que la |
||
versión ensamblada de HOPPER. |
versión ensamblada de HOPPER. |
||
Ejemplos de intervalos: |
Ejemplos de intervalos: |
||
[10] fija la posición 10 |
[10] fija la posición 10 |
||
de un vector cualquiera; |
de un vector cualquiera; |
||
también, fija la coor- |
también, fija la coor- |
||
denada 10 de una |
denada 10 de una |
||
matriz 3D. |
matriz 3D. |
||
[10:15] fija un intervalo que va |
[10:15] fija un intervalo que va |
||
desde la posición 10 |
desde la posición 10 |
||
hasta la 15, dentro |
hasta la 15, dentro |
||
de cualquier vector |
de cualquier vector |
||
que la use. |
que la use. |
||
[2,4:10] fija coordenadas para |
[2,4:10] fija coordenadas para |
||
cualquier matriz 2D, |
cualquier matriz 2D, |
||
fila 2, columnas 4 a |
fila 2, columnas 4 a |
||
la 10. |
la 10. |
||
[5:end,5] fija coordenadas para |
[5:end,5] fija coordenadas para |
||
cualquier matriz 2D, |
cualquier matriz 2D, |
||
filas 5 hasta el final, |
filas 5 hasta el final, |
||
columna 5. |
columna 5. |
||
[3:4,2,2:5] fija coordenadas para |
[3:4,2,2:5] fija coordenadas para |
||
una matriz 3D, filas |
una matriz 3D, filas |
||
3 y 4, columna 2, |
3 y 4, columna 2, |
||
páginas 2 a la 5. |
páginas 2 a la 5. |
||
++i,--j,[1:i,j] |
++i,--j,[1:i,j] |
||
fija coordenadas para |
fija coordenadas para |
||
una matriz 2D, con uso |
una matriz 2D, con uso |
||
de variables que deben |
de variables que deben |
||
ser modificadas fuera de |
ser modificadas fuera de |
||
[]. |
[]. |
||
Nota: SE ACEPTAN variables dentro de |
Nota: SE ACEPTAN variables dentro de |
||
los []. |
los []. |
||
⚫ | |||
⚫ | |||
⚫ | |||
[1:2:end] trabaja sobre las posiciones |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
desde la 2 hasta el final, a |
|||
intervalos (f+1). |
|||
Nota: una operación aritmética dentro de |
|||
un intervalo, debe escribirse con |
|||
paréntesis. |
|||
ACEPTA operaciones aritméticas |
|||
[ |
dentro de []; sin embargo, no |
||
acepta el uso de funciones o |
|||
macro-funciones. |
|||
⚫ | |||
⚫ | |||
⚫ | |||
cualquiera. Ejemplo: |
|||
{10}loc1, get(array) |
|||
loc1(10), get(array) |
|||
hacen lo mismo. La diferencia, es que |
|||
con el primero se pueden realizar |
|||
operaciones aritméticas: |
|||
{10}plus'i',loc1. |
|||
o bien |
|||
#hl( 10+i ), loc1 |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
hacen lo mismo. La diferencia, es que |
|||
con el primero se pueden realizar |
|||
operaciones aritméticas: |
|||
⚫ | |||
⚫ | |||
⚫ | |||
pero, con LOC1(N), no puede hacerse. |
pero, con LOC1(N), no puede hacerse. |
||
N, en este caso, es un numero o una |
N, en este caso, es un numero o una |
||
variable. |
variable. |
||
Por otro lado, |
Por otro lado, |
||
loc1(10) |
loc1(10) |
||
es similar a: |
es similar a: |
||
[10] |
[10] |
||
Nota: También se establece el número |
Nota: También se establece el número |
||
de página, en una matriz 3D. |
de página, en una matriz 3D. |
||
{F,C}loc2 Establece coordenadas para un elemento |
|||
de una matriz 2D cualquiera, en fila F |
de una matriz 2D cualquiera, en fila F |
||
columna C. |
columna C. |
||
{N}offset1 Establece la posición final de un |
|||
intervalo para un vector, iniciado |
intervalo para un vector, iniciado |
||
con LOC1. |
con LOC1. |
||
Ejemplo: |
Ejemplo: |
||
{3}loc1,{6}offset1 |
{3}loc1,{6}offset1 |
||
es similar a: |
es similar a: |
||
[3:6] |
[3:6] |
||
y |
y |
||
{3}loc1,{0}offset1 |
{3}loc1,{0}offset1 |
||
es igual a: |
es igual a: |
||
[3] |
[3] |
||
{F,C}offset2 Establece el desplazamiento en filas F |
|||
y columnas C, para un intervalo usado en |
y columnas C, para un intervalo usado en |
||
una matriz 2D cualesquiera. |
una matriz 2D cualesquiera. |
||
Si no se quiere desplazar alguna |
Si no se quiere desplazar alguna |
||
coordenada, use 0. |
coordenada, use 0. |
||
Ejemplo: |
Ejemplo: |
||
{3,2}loc2,{end,4}offset2 |
{3,2}loc2,{end,4}offset2 |
||
es similar a: |
es similar a: |
||
[3:end,2:4] |
[3:end,2:4] |
||
{N}interval1, |
|||
{F,C}interval2 |
|||
{F,C,P}interval3 Establecen intervalos para las marcas |
|||
definidos por LOC1,LOC2, y OFFSET1 y |
definidos por LOC1,LOC2, y OFFSET1 y |
||
OFFSET2. |
OFFSET2. |
||
Se pueden usar junto a la forma simple: |
Se pueden usar junto a la forma simple: |
||
[1:10],{2}interval1 |
[1:10],{2}interval1 |
||
declara el siguiente rango de posiciones, |
declara el siguiente rango de posiciones, |
||
internamente: |
internamente: |
||
1,3,5,7,9 |
1,3,5,7,9 |
||
El caso es el mismo para INTERVAL2 e |
El caso es el mismo para INTERVAL2 e |
||
INTERVAL3. |
INTERVAL3. |
||
clearmark Elimina las marcas definidas por LOC1, LOC2, |
|||
OFFSET1 y OFFSET2. |
OFFSET1 y OFFSET2. |
||
Esto es útil, cuando se desea asignar un |
Esto es útil, cuando se desea asignar un |
||
valor constante a una matriz. |
valor constante a una matriz. |
||
La asignación "=", por ejemplo, a=0 |
La asignación "=", por ejemplo, a=0 |
||
Asignará "0" a la matriz "a"; pero, si |
Asignará "0" a la matriz "a"; pero, si |
||
existen marcas, asignará "0" a las |
existen marcas, asignará "0" a las |
||
posiciones definidas por las funciones |
posiciones definidas por las funciones |
||
anteriores. |
anteriores. |
||
clearinterval Esto es necesario para borrar los intervalos |
|||
definidos con INTERVAL1, INTERVAL2 e |
definidos con INTERVAL1, INTERVAL2 e |
||
INTERVAL3. |
INTERVAL3. |
||
clrmarksall Activa/desactiva la ejecución de CLEARMARK y |
|||
CLEARINTERVAL internamente, luego de la |
CLEARINTERVAL internamente, luego de la |
||
ejecución de un GET o un PUT. |
ejecución de un GET o un PUT. |
||
{M}cartesian Genera una matriz o vector con las posiciones |
|||
cuyo valor es TRUE (o equivalente), de un |
cuyo valor es TRUE (o equivalente), de un |
||
vector o matriz. |
vector o matriz. |
||
Las funciones lógicas vistas en OPERADORES |
Las funciones lógicas vistas en OPERADORES |
||
MATEMATICOS Y LOGICOS, segmento OPERACIONES |
MATEMATICOS Y LOGICOS, segmento OPERACIONES |
||
LOGICAS MATRICIALES, devuelven vectores o |
LOGICAS MATRICIALES, devuelven vectores o |
||
matrices booleanas, cuando se comparan |
matrices booleanas, cuando se comparan |
||
esta clase de datos, y pueden ser usadas |
esta clase de datos, y pueden ser usadas |
||
junto con CARTESIAN. No obstante, cualquier |
junto con CARTESIAN. No obstante, cualquier |
||
valor distinto de vacío (matrices de cadena), |
valor distinto de vacío (matrices de cadena), |
||
distinto de cero (matrices numéricas), o |
distinto de cero (matrices numéricas), o |
||
con 1's lógicos (matrices booleanas), será |
con 1's lógicos (matrices booleanas), será |
||
tomado por CARTESIAN para obtener una |
tomado por CARTESIAN para obtener una |
||
posición. |
posición. |
||
Ejemplo: |
Ejemplo: |
||
Sea "t" una matriz: |
Sea "t" una matriz: |
||
{t}gthan(5), ==> devuelve una matriz |
{t}gthan(5), ==> devuelve una matriz |
||
del tamaño de "t", |
del tamaño de "t", |
||
Line 2,666: | Line 2,666: | ||
2,4 |
2,4 |
||
2,5... |
2,5... |
||
range(R) Toma la matriz cartesiana R obtenida de la |
|||
instrucción CARTESIAN, y establece rangos |
instrucción CARTESIAN, y establece rangos |
||
de operación sobre matrices. No deja nada |
de operación sobre matrices. No deja nada |
||
en el stack. |
en el stack. |
||
Estos rangos se denominan: |
Estos rangos se denominan: |
||
RANGOS CARTESIANOS |
RANGOS CARTESIANOS |
||
GET, PUT, y asignación "=" son afectadas |
GET, PUT, y asignación "=" son afectadas |
||
por estos rangos especiales. |
por estos rangos especiales. |
||
Sirve para modificar elementos determinados |
Sirve para modificar elementos determinados |
||
dentro de una matriz, que no obedecen a los |
dentro de una matriz, que no obedecen a los |
||
rangos vistos con las funciones anteriores. |
rangos vistos con las funciones anteriores. |
||
Ejemplo: |
Ejemplo: |
||
{t}gthan(5), cartesian,mov(r) |
{t}gthan(5), cartesian,mov(r) |
||
range(r),get(t),mulby(100), put(t), |
range(r),get(t),mulby(100), put(t), |
||
{t} println |
{t} println |
||
Elabora un rango cartesiano con las posiciones |
Elabora un rango cartesiano con las posiciones |
||
mayores que 5, obtiene esos elementos de la |
mayores que 5, obtiene esos elementos de la |
||
forma de un vector (GET), los multiplica por 100, |
forma de un vector (GET), los multiplica por 100, |
||
y luego, los colocan nuevamente dentro de la |
y luego, los colocan nuevamente dentro de la |
||
matriz original, con PUT. |
matriz original, con PUT. |
||
Después, imprime la matriz modificada. |
Después, imprime la matriz modificada. |
||
clearrange Elimina el rango cartesiano. |
|||
== ESTADISTICA == |
== ESTADISTICA == |