Indice1. Introducción3. Ejercicios De Programacion4. El programa dueño y una pincelada a la programacion de juegos o aplicaciones interactivas5. "Cadenas avanzadas, la encripción"
Aquí estoy de nuevo con la segunda parte de este manual para todos los fanáticos de la hp48. Quiero dejar en claro que esta no será la última parte, seguramente la última parte será la tercera o a todo reventar la cuarta. La cosa es que aquí veremos cosas más avanzadas, y los comandos los enseñaré en forma más compacta que en el capítulo anterior, para no perder tiempo leyendo cosas casi textuales del manual de usuario y darle primordialidad a la programacion y las ideas para crear buenos programas.
2. "Comandos avanzados para listas y cadenas y otras cosillas como una nueva forma de tomar el manual de aquí en adelante, jajajajajajajajajajaja"
Aquí veremos como dice el título cosas interesantes que se pueden hacer con las listas y cadenas mediante las instrucciones que nos proporciona el USER-RPL.
Bien, si a una lista se le aplica un comando matemático que requiere un solo valor de entrada y da un valor de salida(raíz log, etc) la lista se transforma en el resultado de aplicar el comando a cada uno de sus terminos.
Ejemplo :
1: { 1 4 9 16 25 36 }
Al aplicar por ejemplo raiz cuadrada nos queda :
1: { 1 2 3 4 5 6 }
Espero que se haya entendido. Esto funciona solo si la lista contiene números o nombres de variables que representen números.
Comando : SUB
Este comando es otro de los tantos que funcionan sobre listas y cadenas de caracteres. Lo que hace es, dada una lista en el nivel 3: , y dos números en los niveles 2: y 1: , el primero menor o igual que el segundo y los dos menores o iguales que el número de elementos que tiene la lista, Extrae de la lista el intervalo que se le pasa.
Un poco complejo ?
Ejemplo :
4:
3: { primero segundo tercero cuarto quinto sexto }
2: 3
1: 4
Esa es la sintaxis necesaria, entonces al aplicar SUB nos quedaria :
3:
2:
1: { tercero cuarto }
¿se entendio ahora?
Lo mismo ocurre con las cadenas de caracteres.
4:
3: "terra internet más cara que nunca"
2: 7
1: 14
Al aplicar SUB quedaría :
3:
2:
1: "internet"
Comando : REPL
Lo que hace es : dado una cadena, un numero natural "n", y un caracter, reemplaza el caracter en la cadena en el lugar "n".
Ejemplo :
4:
3: "THE DARK SIDE OF THE MOON"
2: 13
1: "A"
Al aplicar REPL nos queda :
2:
1: "THE DARK SIDA OF THE MOON"
Exactamente lo mismo ocurre con las listas……
4:
3: { BORKNAGAR TIAMAT NIGHTWISH MOONSPELL }
2: 2
1: { CRADLE_OF_FILTH }
Si aplicamos el REPL queda :
2:
1: { BORKNAGAR CRADLE_OF_FILTH NIGHWISH MOONSPELL }
Es imbecil darse cuenta que en el caso de las cadenas el caracter a insertar deve ir entre "esto" y en el caso de las listas, deve ir entre { esto }.
En la primera parte vimos un comando que se llamaba ->LIST , el cual transformaba "n" elementos de la pila, dado "n" en 1:, en una lista que contenía los n elementos. El siguiente es el contrario de
->LIST
Comando : OBJ->
Recuerdas que en las cadenas le quitaba las "comillas" ?, bueno, en las listas, suelta todos los elementos en la pila, y en último lugar queda el número de objetos que contenía la lista.
Ejemplo :
2:
1: { black doom gothic romantic speed }
Al aplicar el OBJ-> nos da :
4: gothic
3: romantic
2: speed
1: 5
Ves, te da el número de elementos y todos los elementos desplegados hacia arriba. Ahora, si no sabes adonde estan las palabras black y doom, entonces andate a la misma mierda, usa un par de dias la calculadora y despues trata de entrar en programacion, si no sabes esto, estas mas perdido que …….
Tarea : haga un programa que invierta el orden de los objetos de una lista, o sea, dado por ejemplo { 1 2 3 4 5 } que nos entregue
{ 5 4 3 2 1 }
Saben, ? tomé una decision. Me estoy dando cuenta de que este manual ya no está para que siga describiendo cada comando por separado, si alguien esta leyendo esto, deve ser por que cuando aparezca un comando que no he descrito, o bien se lo sabe, o bien toma el manual de usuario y vé para lo que sirve. Lo siento, se acabaron los comandos, ahora vamos a ir con pura pura programacion, Lo que pasa es que me estoy aburriendo mucho. Para los que estaban aprendiendose los comandos aquí les pido disculpas, tendran que ir al manual de usuario. En todo caso, al final hay 2 apendices bien buenos, que describen todos los comandos de la hp48. Disculpas, pero debe comenzar la acción…….¡'¡'¡'¿¿?¿?¿?¿¿'¡'¡¡'¿¿?¿¿??¿
Antes de seguir recomiendo mucho aprender el uso de las listas, y sobre todo el manejo de los gráficos. El comando ANIMATE y todo lo que se pueda leer del manual de usuario.
También aprenda las flags o banderas. SF y CF.
Bien, espero que se haya estudiado los comandos para manipular gráficos y todo eso, que es muy importante para hacer programas interactivos.
Recuerdan el programa ese que nos decía la hora pero en un formato más "decente", el código era :
<< "Son las …… " TIME -> A << A IP + ":" + A
FP 100 * IP + ":" + A 100 * FP 100 * IP + MSGBOX >> >>
Ese código nos hacia aparecer en un cuadro MSGBOX la hora en
horas:minutos:segundos. Pero si es que lo ejecutaron un par de veces se darán cuenta de que con el tiempo se va haciendo una verdadera paja tener que apretar luego de haber visto la hora la tecla que indica OK o CANCEL. Ahora por medio de gráficos solucionaremos el problema. Haremos un programa que nos muestre la hora por 1 segundo y luego desaparezca.
Mi código es :
<< "Son las " TIME -> A << A IP + ":" + A
FP 100 * IP + ":" + A 100 * FP 100 * IP + 3 ERASE
->GROB { 1 { #11h #18h } 1 1 } ANIMATE DROP DROP ERASE >> >>
Entonces el programa se hace múcho mejor.
Para los que se quedaron pegados en la lista
{ 1 { #11h #18h } 1 1 } les digo que la única forma de producir animaciones no es la que ustedes conocen. La otra es esta.
1: Graphic xxx * xxx
2: { a { b c } d f }
a: Numero de gráficos a animar
b: Coordenada "x" de donde se quiere hacer la animacion
c: Coordenada "y" de donde se quiere hacer la animacion
d: Segundos que se muestra cada gráfico
f: Numero de veces que se quiere repetir la animacion
Luego el comando ANIMATE
Lo último(DROP DROP ERASE) podría cambiarse por un simple CLEAR pero lo que pasa es que pensé, si se está trabajando en la calculadora y de repente se quiere saber la hora, y despues de ejecutar nuestro programa reloj los datos se le van a la cresta al tío, este pensará "puta la wea de programa penca", entonces por eso lo hice así, para que no moleste a nadie.
Pero ¿que pasaría si nuestro tío esta haciendo un proyecto de dibujo en la hp48, o digamoslo en chileno, el weon está dibujando y en un entretiempo, prende la calculadora y ve la hora. Luego se va a PICTURE y quiere seguir trabajando con su dibujo y …. este ya no está. Entonces el código se debe mejorar aún más, para que cada vez que se véa la hora no se pierda la pantalla de gráficos.
<< PICT RCL "Son las " TIME -> A << A IP + ":" + A
FP 100 * IP + ":" + A 100 * FP 100 * IP + 3 ERASE
->GROB { 1 { #11h #18h } 1 1 } ANIMATE ROT PICT
STO CLEAR >> >>
Si te parece muy lento quéjate con la hp-corp y no conmigo.
Bien, ahora analicemos esta cosa. No me refiero al código sino al hecho de que siempre en nuestros trabajos como desarrolladores de software user-rpl debemos preocuparnos por el producto final, o sea, pensar que el 95% de los usuarios de la hp48 son más ignorantes que la cresta. Devido a esto es muy importante que el programa sea intuitivo y fácil de usar(onda windows). Por eso es que son muy importantes las estructuras de detección de errores. Estúdialas ya que sirven múcho. También sería muy bueno tener a mano el manual de usuario y el cable de interfase entre el computador y la hp. Si no lo tienes ni se te ocurra comprar el original que vende la hewlett packard ya que cuesta como $70 o 36 lucas. En cada universidad puedes preguntar por alguien que "haga" cables para la hp48, no te cobraran más de 5 lucas($10). Bien, luego de ese reseso vamonos a la programación amada.
Página siguiente |