Sie sind auf Seite 1von 30

GUA JABA DE PROGRAMACIN PARA LAS

CALCULADORAS
CASIO FX
Escrita por JABA, versin 1.30, mayo de 2003
Un pequeo preludio a la versin 1.30
Mucho tiempo ha pasado desde que hice pblico lo que no era ms que un documento
personal que escrib una tarde para volcar mis propios conocimientos a modo de copia de
seguridad. Os agradezco la aceptacin que ha tenido esta sencilla gua, hasta el punto de
haberse convertido en uno de los ms importantes recursos de Casio en espaol en todo el
mundo (el nico en el momento de su publicacin), y confo en que os fuera una ayuda
para introduciros a este interesante mundo de las calculadoras.
Ahora, cinco aos despus, he reorganizado mi pgina web y he presentado un poco mejor
este documento. No obstante, est obsoleto en lo referente a las nuevas calculadoras Casio
lgebra.
Me gustara encontrar gente dispuesta a ayudarme a realizar una versin 2.00 de este
documento, mejor escrita, ms organizada, ampliada y corregida. As pues, lanzo este
llamamiento a los canales de la RED por si alguien est dispuesto a recoger la botella y a
echarme una mano.
Puedes contactar conmigo en mi correo pero te ruego que no me escribas preguntando
cmo se usa cierta funcin de la calculadora que no entiendes (para eso est el
manual!) y, sobre todo, que no me pidis manuales porque no los tengo.
Notacin
La notacin usada es la estndar del formato CTF (CASIO TEXT FORMAT). Resumiendo
los principales tokens:
_ representa el triangulito de visualizacin accesible por el men PRGM
> =,<=,=,<>(distinto) son accesibles por PRGM-REL
FICHEROS INCLUIDOS
El pack de apoyo completo de la Gua de Programacin Casio incluye:
-este fichero de texto que es la gua en ss

-el juego de ejemplo VOLDAR versin cfx-98800, en formato CTF.


-los programas PL2CTF y CTF2PL (al final dde la gua hablaremos de ellos)
Introduccin
La primera calculadora CASIO programable que tuve fue la fx-6300g, aunque tard algn
tiempo en apreciar su verdadero potencial. Precisamente cuando empec a hacerlo dicha
calculadora tuvo un terrible accidente :-), gracias a lo cual adquir la calculadora que
despertara mi inters por el mundo de las calculadoras CASIO: la fx-7700GE. Despus
tuve la mayor de la familia clsica: una CFX-9800G. Finalmente, poseo una cfx-9850G.Por
cierto; volv a comprarme una 6300: es muy til porque tras la apariencia de una
calculadora ms o menos normal se esconde una potencia enorme (realmente slo limitada
por su escasa memoria de 1kb). Las calculadoras CASIO son algo ms que eso: realmente
estn en el umbral entre calculadora y ordenador. Constan de un lenguaje de programacin
sencillo pero muy verstil que abre la puerta no slo a la "automatizacin de clculos"
como sugiere el incompleto manual, sino a todo un mundo de aplicaciones cientficas,
juegos... e incluso la creacin de imgenes fractales. Sin embargo el manual de las CASIO
FX es muy incompleto en el sentido de la programacin y alguien que lo lea no se hace a la
idea de lo que realmente puede conseguirse. Es por eso por lo que decid escribir esta GUIA
en la que podrs encontrar descripciones sobre programacin, una serie de ejemplos
selectos, informacin adicional, as como una lista de las mejores direcciones CASIO de
Internet. Muchos programas e informaciones han sido extraidas de stas. Se supone que
ests familiarizado con el uso normal de la calculadora CASIO, y que tienes alguna
experiencia en programacin.
Soy aficcionado a la programacin desde edad muy temprana (pues s, empec con el
famoso Spectrum). Actualmente soporto un bombardeo diario de tcnicas de programacin
estructurada, medidas de la complejidad de algoritmo y dems zarandajas que pueden
llegara hacerte odiar algo que te apasionaba. Gracias a las CASIO, he vuelto a sentir el
verdadero espritu de la programacin artesanal.
ACERCA DE LAS CALCULADORAS CASIO
Hay dos estilos de calculadoras programables CASIO desde el punto de vista de su
programacin.
- Nueva generacin: fx-7400,fx-9750,cfx-98850,cfx-9950 y cfx-9970.
- Clsicas: el resto de modelos.
Las calculadoras de nueva generacin incluyen un nuevo lenguaje de programa cin que
mejora los puntos flacos del anterior; realmente esto se nota desde el punto de vista de la
programacin de videojuegos pues se ha potenciado la presentacin de texto y,
especialmente, la interactividad. Se han incluido sentencias IF-THEN,WHILE,FOR,LOOP
y BREAK. Sin embargo, a pesar de que hacen ms cmoda la programacin, las antiguas

instrucciones pueden lograr los mismos efectos. Adems, algunas caractersticas del
lenguaje clsico han desaparecido. Especialmente dura e incomprensible es la eliminacin
de los arrays (A[0]..etc), aunque esto puede suplirse utilizando matrices, pero siempre con
cierta incomodidad. Esta gua no hablar de momento de estas nuevas calculadoras (puede
que se haga en futuras versiones). En cuanto a los programas de ejemplo, la mayora
funcionarn en ellas mientras no usen arrays.
Esta es la historia de las distintas calculadoras CASIO:
HISTORIA DE LAS CALCULADORAS PROGRAMABLES CASIO CLSICAS
Los modelos superiores siempre pueden ejecutar programas diseados para modelos
inferiores o en la misma columna.
Entre parntesis se indica el nmero de bytes que se dejan disponibles para programacin.
La memoria de la calculadora es mayor.
Originales Icon Menu Power Graphic Icon Menu Modelos 32K
(GRAPHICS) Power Graphic
_________________________________________________________________________
__
fx-6300G fx-7300G fx-7700G fx-7700GE fx-9700GE
(400) (500) fx-7700GB fx-7700GH (24000)
fx-7700Gbus (4000)
fx-7000G fx-7400 (4000) cfx-9800G
fx-7000GA (500) (24000)
fx-7000GB fx-8700G
(422) (15000)
fx-7500G fx-8700GB
(4006) (16000)
fx-8500G
(11555)

La serie POWER GRAPHICS aadi: puerto de comunicaciones, grficas polares,


paramtricas y de inecuaciones; zoom de factor y de caja, scroll de grficos mltiples,
inicializacin de rango, integracin, modo de matriz, fracciones, permutaciones,
combinaciones, probabilidades normales, unidades del sistema internacional.
La serie Icon Menu Power Graphics aadi: diferenciales, uso de matrices en programas,
resolvedor de ecuaciones... y por supuestos, men de iconos. Los modelos de 32K
aadieron: nmeros complejos, modo de tabla, grficos dinmicos, resolvedor de
ecuaciones mejorado, mayor tamao de matrices (255x255), sumatorios, resolvedor grfico
(races, cruces, mximos,mnimos),y una CPU acelerada que permite clculos ms rpidos.
La cfx-9800G aade adems una pantalla tricolor (azul,verde y naranja); aunque la
velocidad de salida de texto es muy reducida. La serie 9x50 aade: lenguaje de
programacin mejorado, combinacin de todos los modos de funcionamiento en uno RUN,
resolvedor de ecuaciones por Newton, grficos de red para recurrencias (convergencias y
divergencias), modo de estadstica muy mejorado, listas, cnicas, modo de transmisin de
datos mejorado, memoria para volcados de pantalla, memoria para rangos, pantalla de alta
resolucin y mejor aprovechamiento de la memoria. Por ltimo, hay un modelo de gama
baja, 7400, con el lenguaje de programacin de las series de nueva generacin.
CONEXION DE LA CALCULADORA Y EL PC
A partir de la FX-7700G, la CASIO dispone de un interfaz que nos permite comunicarnos
con otras calculadoras y el ordenador (PC o MAC). Esto es especialmente til al
programador, pues no slo nos permite tener una extensa biblioteca de programas y datos
en el ordenador, sino que hace realmente cmoda la escritura de programas. CASIO vende
el pack programa-cable para conexin con el ordenador, del cual hay varios modelos:
-CASIO FA-121 v 1.0: A pesar de que el programa de trabajo es en principio bastante
bueno, desgraciadamente est lleno de bugs, aunque con un poco de control puede sacrsele
bastante partido. Incluye una fuente TRUE-TYPE con los smbolos y funciones de CASIO.
Est traducido a distintos idiomas. Dispone de funciones de edicin de todas las zonas de
programa y FILE EDITOR, pero no pueden editarse ni enviarse las zonas de variables,
funciones,etc... tan slo recibirse. Tambin es capaz de almacenar "snapshots" de la pantalla
de la calculadora en varios formatos grficos. El editor es aceptable, con funciones de
bsqueda y sustitucin. Soporta la norma MDI con lo que pueden editarse varias zonas a la
vez. No soporta las CASIO 9x50.
- CASIO FA-121 v 2.0: creo que corrige loss numerosos bugs de la primera versin.
- CASIO FA-122: esta nueva versin soportaa las nuevas calculadoras fx-9x50, y usa un
nuevo formato de fichero comprimido. Ahora CASIO proporciona gratuitamente este
programa en su pgina de Internet.
- FX-INTERACE : es un programa de una terccera empresa, Yellow Computing, con un
magnfico entorno y sin duda el mejor producto para la comunicacin con la calculadora.

Sin embargo el conjunto cable-programa es bastante caro, y en Internet pueden encontrarse


tanto programas freeware (el ms famoso es CAS) como esquemas del cable de
comunicacin.
El formato estndar para escribir en el PC programas de CASIO es el CTF, en el que se usa
un convenio de smbolos para representar el juego de caracteres de CASIO. Este libro y los
ejemplos incluidos usan la notacin CTF, de la que podrs encontrar abundante informacin
el la web de CAS, aunque te introducir al uso de esta notacin.
CONCEPTOS BSICOS
Las CASIO tienen distintos modos de funcionamiento (p.ej, en la 7700GE son
COMP,MATRIX,SD,REG y BASE-N). En cada modo, se admiten unas operaciones de
terminadas; p.ej, no es posible calcular determinantes en modo BASE-N (referirse al
manual CASIO para informacin sobre cada modo). Igualmente, cada programa que
escribamos en la CASIO estar diseado para un modo especfico de trabajo (aunque ms
adelante veremos que hay formas de combinar mandatos de distintos modos en un nico
programa). Desgraciadamente no est permitido el uso del modo BASE-N en
programacin, ni siquiera usando el truco mencionado puede hacerse (esto cambia en las
calculadoras de nueva generacin).
En los modelos de menos de 32kb, hay varias zonas de programas identificadas con un
nmero o letra; cada una puede contener un programa distinto. P.ej, en la fx6300g son las
zonas Prog0 a Prog9, y en la fx7700GE son adems ProgA a ProgZ, prog(theta) y
prog(zeta).
No es tarea de este manual explicarte cmo introducir programas, para ello puedes
consultar el libro de la calculadora. Lo que s te recuerdo es que el modo en que se escribe
el programa es por defecto el modo en el que estabas trabajando antes de meterte en el
modo de programacin. En los modelos de 32kb, tambin puedes cambiarlo accediendo al
men SETUP del modo de programacin. Estos potentes modelos,cfx9800 y fx9700,
disponen adems de una funcin de edicin de ficheros (FILE EDITOR). Adems de las
zonas de programa habituales, pueden crearse ficheros de texto con un nombre especfico
(p.ej "MI PROGRAMA"). Estos ficheros pueden editarse, borrarse, renombrarse o
ejecutarse. Adems, funcionando en modo FILE el editor dispone de caractersticas
mejoradas como bsqueda de cadenas. Sin embargo, puede ser algo incmodo de teclear en
la calculadora pues por defecto la pone en modo alfabtico. Este ltimo modo tiene una
ventaja adicional: se permite proteger el acceso a los ficheros mediante una contrasea.
En las nuevas calculadoras 9x50, el modo de programa normal no existe y slo queda el
modo de edicin de ficheros.
LA PANTALLA
La CASIO dispone de dos modos de pantalla: el modo de texto (16 columnas y 8 filas) y el
modo grfico (96x64 puntos). Ambos modos son monocromticos excepto en la CFX9800G, donde cada punto puede ser azul, naranja o verde. Tambin es importante sealar la

independencia de los modos: podemos trabajar en la pantalla de texto o grfica sin alterar el
contenido de la otra; en cualquier momento podemos cambiar la pantalla activa pulsando la
tecla G<->T. P.ej, si dibujamos un monigote en modo grfico, y pasamos al modo texto
para escribir un mensaje, al volver al modo grfico seguir estando el monigote.
OBSERVACIN: la CASIO FX-9700GE y las CASIO de nueva generacin disponen de
una pantalla de mayor resolucin (127x64). Todas las CASIO de nueva generacin excepto
la fx-9750G disponen de una pantalla tricolor similar a la de la 9800.
La excepcin a todo esto es la fx-6300g,donde ambas pantallas van mezcladas, y slo se
dispone de una lnea de texto (no recuerdo las medidas exactas), aunque se aplica la misma
ley de conservacin de imgenes.
MANDATOS BSICOS
NOTA: se supone que el lector est familiarizado con el manejo de la CASIO y sabe dnde
encontrar todos los smbolos y rdenes que aqu se mencionan. De lo contrario, un buen
vistazo al manual sera recomendable antes de comenzar.
Un programa CASIO es una secuencia de mandatos vlidos, donde cada mandato puede
ser:
a) un clculo normal (p.ej: 3+2+1)
b) una instruccin especial de programacin
Cada mandato deber estar separado por:
-un salto de lnea (EXE) (no aplicable en fx6300G).
-dos puntos (:)
-una instruccin de visualizacin (_).
El programa slo se detiene si ocurre un error o se ejecuta el ltimo mandato.
Cuando esto sucede, se muestra por la pantalla de texto el contenido de la memoria ANS
(es decir, el resultado de la ltima operacin). En caso de estar en modo MATTRIX, lo que
se muestra es la matriz ANS.
Veamos un primer ejemplo (los usuarios de la fx6300G deben sustituir los saltos de lnea
por ":" de ahora en adelante):
3+2*10
Ans*3

Al ejecutar el programa anterior, el resultado obtenido es:


69
(recordamos que Ans contiene el valor de la ltima operacin ejecutada).
De momento, sabemos que en un programa podemos meter una secuencia de clculos que
tambin podramos hacer manualmente. De igual forma que hemos puesto los sencillos
clculos anteriores, pueden escribirse instrucciones cualesquiera, a condicin de que sean
vlidas en el modo que estamos escribiendo el programa.
As, por ejemplo:
Det [[1,2,3][4,5,6][2,4,4]] (el el modo MATRIX)
Eso muestra el determinante de la matriz de tamao 3x3 correspondiente. Esa orden slo
funcionar en modelos fx-7700GE y superiores, pues hasta entonces no era posible usar el
modo MATRIX en programacin.
d/dx(x^2+5,1) muestra f'(1) donde f=x^2+5 (modo COMP).
Mat A[3,2] muestra la componente de ndice (3,2) de la matriz A, en modo
MATRIX.
Variables
En las CASIO, se utilizan las memorias en lugar de variables. Todas las CASIO tienen 28
memorias, de la A a la Z, y adems a partir de la fx-7000 hay dos memorias adicionales:
theta y zeta.
Para almacenar un valor en una variable se utiliza el operador (->):
5->A (almacena 5 en A)
B+2->C (almacena el contenido de B ms 2 en C)
5+6i->R (almacena el complejo 5+6i en C - slo fx9700+)
Y luego es posible utilizar los valores en las variables en clculos posteriores:
B*3+Ans/(3+1)
El operador ~ permite asignar un mismo valor a un rango de variables:
4->B~E almacena 4 en B,C,D y E.

Arrays
Puede usarse una variable, p.ej, A, como un array, y acceder a sus elementos de forma
indexada. P.ej A[0],A[1],A[2]... teniendo en cuenta lo siguiente:
A[0]=A
A[1]=B
A[2]=C
...
A[28]=Z
A[29] -> en principio provoca un "Mem Error"! (ver ms adelante)
De igual modo B[0]=B,B[1]=C,etc... Y adems B[-1]=A y B[-2] provoca "Mem
Error".
El ndice puede ser cualquier expresin, p.ej:
A[3+2]
A[B] y si B=5, eso equivale a A[5]=F.
Con esto tenemos una potente herramienta de programacin pero ... puede que 28
elementos de memoria sean muy pocos!. Pero esto no es problema, en todas las CASIO
existe un comando Defm que nos permite aadir nuevas variables a costa de tomar espacio
de memoria.
P.ej:
Defm0 -> slo existen variables A~Z.
Defm3 -> creamos tres nuevas variables adicionales, direccionables con los nombres
Z[1],Z[2] y Z[3].
Despus de esta ltima instruccin, A[29] s sera vlido.
El nmero mximo de variables depende del modelo de CASIO y de la memoria libre.
Cada variable nueva consume 4 bytes de RAM.
Por cierto, el operador ~ tambin puede usarse con estas variables indexadas:

0->A[0]~A[28] es igual que 0->A~Z


Lectura por teclado de variables
Veamos el primer comando especfico de programacin. Se trata de "?" y permite leer un
carcter o nmero desde el teclado.
Sintaxis: ?->nomvar
P.ej: ?->A lee un carcter del teclado y lo almacena en A.
En la pantalla de la CASIO aparece:
"?" y el cursor; deberemos teclear y pulsar <EXE>.
Si el carcter es una expresin, sta se evalua y se almacena en A.
Si el carcter es un smbolo o una letra, se almacena su cdigo en A. Esto permite
reconocer las distintas letras del alfabeto, y se usa por ejemplo en el HANGMAN
(ahorcado) de Tom Lynn. La tabla completa de cdigos tambin puede consultarse en "The
CASIO programming encyclopedia", tambin de Tom Lynn.
Con este operador ya podemos hacer un nuevo programa interactivo. Este es muy sencillo y
calcula el inverso de un nmero:
?->A
A=1/A
Cmo podemos escribir en la pantalla de texto para comunicarnos con el usuario? Para
este cometido, usamos las comillas ". Encerrando un texto entre comillas,ste se muestra en
la pantalla de la CASIO. Mejoremos pues el ejemplo anterior:
"INTRODUZCA NMERO:"
?->A
"SU INVERSO ES:"
A=1/A
Si omitimos el salto de lnea entre las comillas y ?, la interrogacin se muestra
inmediatamente despus del texto.
Qu sucede cundo queremos mostrar un resultado sin finalizar el programa? Con esta
utilidad existe el smbolo "_" (triangulito). Su cometido es parar la ejecucin y mostrar el

contenido de la memoria ANS, a continuacin se visualiza el mensaje "-Disp-" y se espera a


que el usuario pulse <EXE>.
P.ej:
1_
2_
3_
Visualiza los nmeros 1,2 y 3, haciendo una pausa entre cada uno con el mensaje -Disp-. El
resultado por pantalla ser el siguiente:
1
-Disp2
-Disp3
-Disp3
El ltimo 3 aparece porque el programa ha terminado de ejecutarse (ver apartado anterior).
De igual modo puede mostrarse el contenido de alguna variable o el resultado de una
expresin: B[3]_ cos5_ son instrucciones vlidas.
Observaciones sobre la salida de texto:
-si la pantalla ya est llena, se realiza scroll de lneas hacia arriba con una ligera pausa
predefinida entre lnea y lnea.
-si la CASIO estaba en modo grfico, es coonmutada al modo texto antes de rea lizar la
salida.
-en la fx-6300g, Disp es en realidad un inndicador de la pantalla LED.
En los modelos clsicos, no se conoce ningn modo de borrar la pantalla de texto de la
CASIO, ni de posicionar el cursor. En las calculadoras de nueva generacin, existen
rdenes de formateo de texto y para limpiar la pantalla. Tambin existen formas ms

elegantes de inputacin. En las CASIO cfx-9800,cfx-9850 y cfx-9950 existe la posibilidad


de cambiar el color de la lnea a imprimir, utilizando las rdenes Green o Orange accesibles
por el men COLOR (no existe rden Blue porque es el color por defecto).
As:
Green "SOY VERDE"
muestra SOY VERDE en color verde (evidentemente).
Observacin: la salida de texto es MUY lenta en las CFX! (sin embargo los
grficos parecen ser ms rpidos (?) ).
LA INSTRUCCION CONDICIONAL =>
Qu sera un programa sin condiciones? Sin duda un aburrimiento. Pero las Casio
disponen de un operador condicional =>, cuya sintaxis es:
expresin booleana => mandato
El funcionamiento es muy sencillo: si la expresin booleana es cierta, se ejecuta el
mandato; de lo contrario se salta a la instruccin siguiente al
mandato.
Es equivalente a la orden en BASIC: IF expresin booleana THEN mandato.
La expresin booleana puede componerse utilizando los operadores de relacin accesibles a
travs del men "PRGM": <=,=,>= y >.
P.ej:
A<=B => "A es menor que B"
Desgraciadamente las CASIO clsicas no disponen de operadores lgicos tales como AND
u OR (esto se soluciona en las 9x50). As que deberemos aparnoslas para componer las
expresiones.
La ms sencilla es el AND:
un hipottico
A>B AND A>C => C->A
deber escribirse:

A>B => A>C => C->A


Para simular un OR debemos crear varias instrucciones condicionales, una por cada
expresin:
A>B OR A>C => "HOLA" es:
A>B => "HOLA"
A>C => "HOLA"
Aplicando estas dos normas con algo de cuidado podemos realizar cualquier expresin. Por
ejemplo:
(A>1 AND A<10) OR (B=C AND C=D) => "VALE"
es:
A>1 => A<10 => "VALE"
B=C => C=D => "VALE"
Como colofn de este epgrafe vamos a presentar un sencillo programa:
'EDADES
"Dime tus aos"?->E
E<20 => Orange "An eres joven"
E>20 => E<45 => Green "Eres de mediana edad"
E>20 => E>45 => "Eres un viejecito"
(los usuarios de calculadoras no cfx deben eliminar los comandos Orange y Green, a partir
de ahora omitir este comentario).
En la primera lnea hemos presentado un nuevo concepto, el de comentario. Cuando se
introduce el smbolo "'", el intrprete CASIO ignora el resto de la lnea. Esto es
especialmente til cuando se escribe en zonas de programa y no de edicin, pues podemos
usar la primera lnea para "rotular" el programa. P.ej, si hubisemos intrucido el anterior
listado en el rea 0 y el resto estuvieran vacas, veramos en el listado de programas:
0 'EDADES
1 empty

2 empty
...
Veamos ahora un ejemplo de ejecucin:
Dime tus aos? 19
An eres joven
SALTOS Y BUCLES
La orden "Lbl" (de "Label"=etiqueta) permite "marcar" ciertos puntos del programa con
nombres para luego poder saltar hacia ellos. Los nombres vlidos son los nmeros del 0 al
9, las letras de A a Z, y los smbolos theta y zeta.
Una vez que hemos marcado una zona del programa con una Lbl, podemos "saltar" a ella
con el mandato Goto. Su sintaxis es "Goto etiqueta", donde etiqueta es el nombre de una
etiqueta que est en el mismo programa (puede estar antes o despus del Goto). Al realizar
el Goto, la ejecucin del programa se dirige a la zona marcada.
Veamos un ejemplo sencillo:
Goto A
"Nunca me escribirn"
Lbl A
"Fin"
La ejecucin del programa anterior visualiza el mensaje "Fin". Esto es porque el Goto
redirige la ejecucin del programa a la etiqueta A, y el mensaje entre medias nunca llega a
ejecutarse.
Visto as el Goto parece un poco intil. Su verdadera potencia no se descubre hasta que lo
combinamos con la operacin condicional =>, con lo que se nos permite crear bucles
(repeticiones sucesivas de una grupo de instrucciones) y otras estructuras de control.
Veamos este ejemplo, algo ms interesante:
'ELEFANTES
1 -> A
Lbl 1

A_
"Elefantes se balanceaban sobre la tela de una araa"
A+1->A
A<=10 => Goto 1
La ejecucin produce:
1
-dispElefantes se balanceaban sobre la tela de una araa
2
-dispElefantes ...
-disp10
Elefantes ...
La clave del bucle est en la ltima sentencia. Mientras el valor de A (que se incrementa en
cada paso del bucle con A+1->A) sea menor que 11, el bucle se repite. Al alcanzar A el
valor 11, se sale del bucle (en este caso tambin acaba la ejecucin del programa).
Para que no rabien los amantes de la programacin estructurada, veamos el modo de
convertir las estructuras de control ms populares a formas Goto:
WHILE condicion DO
BEGIN
instruccin 1
..
instruccin i
END

se traduce:
Lbl z 'z es una etiqueta no usada
instruccin 1
...
instruccin i
condicion => Goto z
FOR i:=A TO B DO
BEGIN
blablabla
END
lo podemos escribir:
A -> i
Lbl z
A>B => Goto w
blablabla
A+1 -> A
Goto z
Lbl w
Y, finalmente:
REPEAT
blablabla
UNTIL condicion
lo pondremos:

Lbl z
blablabla
condicion => Goto w
Goto z
Lbl w
...
Para concluir, vamos a ver un pequeo juego de adivinanzas. Vamos a utilizar la funcin
Ran# que genera un nmero aleatorio entre 0 y 1.
Ntese que para obtener un nmero aleatorio natural entre 0 y N la frmula es:
Int(NRan#)
donde Int es la funcin numrica que devuelve la parte entera de un nmero. Ambas
funciones se alcanzan por el men MATH.
Vamos all con el juego:
'ADIVINAR NUMERO, POR JABA
Int(100Ran#) -> N ' Piensa el nmero secreto entre 0 y 100
"ADIVINA EL NUMERO!"
Lbl 1
? -> I ' Intento del jugador
I<N => "ES MAS GRANDE"
I>N => "ES MAS PEQUEO"
I<>N => Goto 1
'Se sale del "While", el nmero fue acertado
"FELICIDADES"
"ENCONTRASTE EL NUMERO SECRETO"_

El entendimiento del programa creo que es muy sencillo, y lo dejo como ejercicio para el
lector. Tan slo sealar que se usan las siguientes variables:
I, almacena el nmero "pensado" por la calculadora.
N, almacena el nmero que introduce el jugador.
LAS INSTRUCCIONES DE INCREMENTO Y DECREMENTO
Las instrucciones de incremento y decremento (Isz y Dsz respectivamente) no nos
propocionan ninguna funcionalidad nueva que no puediramos conseguir con los mandatos
ya conocidos, pero ahorran espacio y aumentan la legibilidad del programa.
Su sintaxis es:
Isz/Dsz NOMVAR
Instruc1
Instruc2
... resto de programa ...
Su efecto es:
-Isz incrementa en uno la variable NOMVAR,, y Dsz la decrementa en 1.
-Si NOMVAR<>0, se sigue por Instruc11
-Si NOMVAR=0, se sigue por Instruc2.
Es equivalente a:
a:=a+1 (o -1 si es Dsz)
IF a<>0 THEN instruc1
instruc2
...
Como ejemplo ilustrativo de Isz, veamos una versin mejorada del programa anterior (la
definitiva):
'ADIVINAR NUMERO PLUS, POR JABA

'COMPATIBILIDAD: fx-6300G y superiores


Lbl 0
"Dificultad (1-10)"
? -> D
D>10 => Goto 0
D<1 => Goto 0
Int((D*10)Ran#) -> N ' Piensa el nmero secreto entre 0 y la dificultad*10
0 -> K ' Pon a cero el nmero de intentos
"ADIVINA EL NUMERO!"
Lbl 1
Isz K ' Usada nueva oportunidad
? -> I ' Intento del jugador
I<N => "ES MAS GRANDE"
I>N => "ES MAS PEQUEO"
I<>N => Goto 1
'Se sale del "While", el nmero fue acertado
"FELICIDADES"
"ENCONTRASTE EL NUMERO SECRETO"
"INTENTOS USADOS:"
K_
En esta nueva versin hemos hecho dos cambios:
-hemos aadido el nivel de dificultad. El jugador introduce un nivel del 1 al 10 (observar la
comprobacin de nivel no vlido). El nmero pensado se encontrar entre 0 y 10 por el
nivel de dificultad.

-hemos aadido un contador del nmero de iintentos, en la variable K. Para ello usamos la
instruccin de incremento Isz. Obsrvese que como K nunca tendr el valor 0, no nos
preocupamos por el carcter condicional de dicha instruccin (de hecho podra sustituirse
por K+1->K).
INTRODUCCION AL MODO GRFICO
Despus de conocer las principales rdenes CASIO, vamos a hacer una tmida introduccin
al potente modo grfico. Al contrario del modo texto, en el que el formato de salida es muy
limitado reducindose a una simple terminal, el modo grfico es mucho ms potente y
verstil (Tom Lynn ha creado unas rutinas que permiten realizar salida de texto en modo
grfico en cualquier posicin deseada; esto puede ser muy til si deseas cuidar la
presentacin de tus programas).
NOTA PARA LOS USUARIOS DE fx-6300G,cfx-9850 y cfx-9950: las medidas usadas de
aqu en adelante posiblemente no sean vlidas en tu mquina; consulta el manual para
buscar los valores correctos.
Lo primero que debe hacerse antes de comenzar a tratar con el modo grfico es ajustar el
rango, es decir, la escala de la imagen y los puntos visibles. Para ello usamos la orden
RANGE:
RANGE xmin,xmx,escalax,ymin,ymx,escalay
xmin es el punto ms pequeo de x visualizable.
xmx es el punto ms grande de x visualizable.
escalax es el incremento entre punto y punto.
Anlogamente para y.
As, por ejemplo:
RANGE 1,20,1,1,20,1
nos da una ventana grfica con coordenadas X e Y vlidas de (1,1) a (20,20)
y con incremento de una unidad entre cada pixel.
Es natural alejar el rango de los ejes de coordenadas que se dibujan en x=0 e y=0, pues la
CASIO siempre los dibuja y puede hacer un mal efecto en nuestros programas.
El rango estndar recomendado que suele utilizarse en los programas es:
Range 1,95,0,1,63,0

Como puedes ver, este rango evita que se vean los ejes:
|
|***************** y=63
|* *
|* VENTANA *
|* *
|* *
|*****************
--------------------- eje x
| x=95
|
eje y
En las calculadoras de ms resolucin (9x50) un rango mejor es:
ViewWindow 1,127,0,1,63,0
(en las calculadoras 9x50 la instruccin RANGE se ha renombrado a VIEWWINDOW)
Sin embargo, los programas escritos con ambos rangos funcionarn en todas las
calculadoras, aunque con peor calidad si no es el rango ptimo. En realidad podemos usar
cualquier rango que deseemos, la calculadora ajustar automticamente la imagen.
La orden para limpiar la pantalla grfica es Cls.
Para dibujar un punto, usamos la orden PLOT.
PLOT a,b dibuja un punto en (a,b) (columna y fila)
P.ej: (a partir de ahora supondremos la calculadora en rango estndar)
Cls
Plot 10,10

Plot 20,20_
Dibuja dos puntos en pantalla. El smbolo de visualizacin _ es necesario pues sino la
calculadora volvera inmediatamente a modo texto, de este modo se permite observar la
imagen.
La orden PLOT tambin puede usarse sin rdenes:
Plot_
En este caso, el usuario puede mover el cursor grfico con los cursores de la calculadora y
marcar un punto con EXE. Desde el programa podremos saber el punto marcado por el
usuario leyendo las variables X e Y.
La orden Line tambin es muy til. Su funcin es una lnea uniendo los dos ltimos puntos
marcados con Plot.
P.ej, esto dibuja un rectngulo:
Cls
Plot 1,1
Plot 10,1
Line
Plot 10,10
Line
Plot 10,1
Line_
Y con un poco ms de astucia, podemos averiguar si el usario es miope o no:
"Intente acertar dentro del rectngulo!"_
Cls
Plot 1,1
Plot 10,1
Line

Plot 10,10
Line
Plot 10,1
Line
Plot_ ' esperar entrada del posible miope
X<=10 => Y<=10 => Goto 1 ' Marc dentro del tringulo
"Miope!"_
Goto 2
Lbl 1
"Enhorabuena!"
Lbl 2
Como puede verse, la comprobacin consiste en ver si el punto marcado est dentro del
tringulo. Ntese que las coordenadas del punto no pueden ser negativa por estar supuesto
el rango estndar.
Quin sabe! Tal vez algn da este programa sea usado como test de alcoholemia para
conductores.
COLORES EN LOS GRFICOS
En los modelos cfx es posible utilizar los tres colores (azul,naranja y verde) en la pantalla
grfica, de modo similar a cmo se usaban en el texto.
Por defecto, los puntos y lneas se escriben en color azul. Podemos forzar el uso de otro
color anteponiendo los comandos Green u Orange, p.ej:
Green Plot_
Orange Line_
Orange Plot 1,2
El color del cursor grfico es azul por defecto, y esto slo puede cambiarse en el men de
configuracin de la calculadora.

SUBRUTINAS
Las subrutinas en realidad consisten en ejecutar un programa dentro de otro. Es decir,
podemos llamar a cualquier programa en memoria desde el programa principal. Cuando el
programa llamado finalice, se retorna la ejecucin al punto de llamada del programa
principal. Se permiten hasta 10 niveles de inclusin en las llamadas. Una inclusin ms
provocar un "NeError"
Por ejemplo (se indica en que zona de programa debes almacenar cada uno):
PROGRAMA 0
Prog 1
"Y YO EL PROGRAMA 0"_
PROGRAMA 1
"SOY EL PROGRAMA 1"_
El resultado de ejecutar el programa 0 es:
SOY EL PROGRAMA 1
-DispSOY EL PROGRAMA 0
-DispEl programa 1 es una subrutina del programa 0.
En los modelos de 32kbytes tambin pueden llamarse a programadas almacenados
como archivos, estos se identifican escribiendo su nombre entre comillas. P.ej:
Prog "SUBRUTINA"
Como colofn de todo lo aprendido hasta ahora, veamos un interesante juego!
EL JUEGO TRIYURSEL
Este juego lo he diseado especialmente para este manual, y creo he procurado
que muestre todas las caractersticas que hemos visto hasta ahora. Para l

me he basado en la idea del programa del test de miopa visto anteriormente.


El juego consiste en lo siguiente: el usuario ve una figura (un rectngulo)
movindose aleatoriamente por la pantalla un nmero determinado de veces.
Despus, la pantalla se borra y el jugador debe intentar acertar la posicin
de la ltima figura dibujada utilizando el cursor grfico.
Adems, el nivel de dificultad va aumentando en cada ocasin. Esto quiere
decir que la figura se mover ms veces y, especialmente, que el tamao de la
figura disiminuir.
Sin ms prembulo, he aqu el programa. Ocupa dos zonas de memoria, y los
usuarios de calculadoras anteriores a la fx-9700G debern cambiar las referencias a "TRIYURSEL" por 0 y a "TRIDIBU" por 1 (u otras zonas de programa),
debido a que no disponen de facilidad de editor de ficheros.
PROGRAMA TRYYURSEL
'TRIYURSEL BY JABA
10 -> M[0]:' Lmite x
7 -> M[1]:' Lmite y
1 -> H:'Nmero de movimientos
Lbl 0
M[0]+5 -> M[0]:'Incrementar tamao de pantalla x
M[1]+3 -> M[1]:'Incrementar tamao de pantalla y
Range 1,M[0],0,1,M[1],0
"ABRE LOS OJOS!"_
Prog "TRIDIBU"

Isz h
'En A y en B se ha devuelto la posicin inferior izquierda del ltimo dibujo
Plot_:'Entrada del usuario
X<=A+6 => Y<=B+6 => X>=A => Y>=B => Goto 2
"HAS FALLADO"_
Goto 3
Lbl 2
"BRAVO!"
Lbl 3
Goto 0
/PROGRAMA "TRIDIBU"/
H->O:'Copiar el nmero de movimientos a otra variable para no perderlo
Lbl 0
Cls
Int( (M[0]-6)Ran#)+1 -> A:'Restar 6 y sumar 1 para evitar alcanzar los bordes
de la pantalla al dibujar el rectngulo
Int( (M[1]-6)Ran#)+1 -> B
'Dibujar el rectngulo
Plot A,B
Plot A+5,B
Line
Plot A+5,B+5
Line

Plot A,B+5
Line
Plot A,B
Line
Dsz O
Goto 0
Cls
Como puede observase, "TRIDIBU" es una subrutina del programa principal que
se encarga de dibujar la figura. Su "interfaz" es el siguiente:
Entrada: M[0] y M[1], lmites x e y. H, nmero de repeticiones.
Salida : A y B, posicin inferior izquierda x e y de la ltima figura.
Efectos laterales : La variable O es afectada.
Creo que el programa est suficientemente bien comentado como para que puedas
entenderlo sin problemas. Prubalo!
Observacin: si usas una 9x50, debers cambiar M[0] y M[1] por M y N, respectivamente (en este caso el cambio es sencillo).
UN PROGRAMA MS SERIO
Cualquiera podra decir que slo utilizamos la calculadora para jugar!
Por ello te presento el siguiente programa que da un enfoque algo ms serio a la
programacin.
Desde la fx-7700, es posible el clculo de derivadas en un punto de terminado. Pero esto es
algo limitado, ya que lo realmente interesante sera obtener el polinomio de la funcin
derivada.
El siguiente programa no lo logra, pero se acerca bastante. Lo que hace es dibujar la grfica
de la derivada de una funcin dada. Puede ser excepcionalmente til si deseas comprobar la

correcin de una derivada dada, pues slo hay que usar mi programa y luego superponer la
grfica de la funcin que has obtenido, y ver si coinciden.
El programa pide tres datos: el valor mnimo de x, el valor mximo, y el incremento entre
punto y punto. A mayor incremento, mayor velocidad pero menor exactitud. La funcin a
derivar debe estar almacenada en la memoria de grficos Y1.
Adems, el programa realiza un ajuste automtico del rango de pantalla para mostrar la
mejor imagen posible.
Vemoslo:
'DIBUJAR DERIVADA
"MIN"?->M
"MAX"?->N
"PASO"?->P
"POR FAVOR,ESPERE!"
0->A:' Minimo
0->B:' Maximo
' Aqu ponemos a 0 el valor mnimo y el mximo, as logramos que el ajuste
vertical de rango sea el ms cerrado posible a la grfica.
M->Z
' Z almacena el punto actual de clculo
' Primera pasada: buscamos mximo y mnimo para ajustar el rango
Lbl 0
d/dx (Y1,Z)->T
' Almacenar en T la derivada en el punto de Z de Y1
' Veamos si cambian el mximo y/o el mnimo
T<A=>T->A

T>B=>T->B
' Cerrar el bucle
Z+P->Z
Z<=N=>Goto 0
' Con el mximo y el mnimo, ajustar el rango
Range M,N,1,A,B,1
' Dibujar la derivada
M->Z
Cls
Lbl 1
d/dx (Y1,Z)->T
Plot Z,T
Line:' Esto hace que la grfica dibujada sea continua.
Z+P->Z
Z<=N=>Goto 1
Plot _
EL JUEGO VOLDAR
VOLDAR es un autntico juego de ROL para las CASIO FX, y posiblemente el programa
ms adictivo jams creado para funcionar en una CASIO (ejem). VOLDAR es demasiado
extenso para explicarlo aqu, pero est bien estructurado y deberas entenderlo con tus
nuevos conocimientos. Puedes descargar versiones para CFX9850 y para CFX9800 en mi
pgina de descarga.
Los diversos ficheros que componen VOLDAR estn en el subdirectorio VOLDAR. Se
incluyen dos versiones, una para el interface PL-121 y otra en ASCII puro. La versin de
ASCII se obtuvo directamente de la de PL-121 gracias a mi programa PL2CTF.
Posibles adaptaciones a otros modelos:

-CASIO fx6300: no hay manera de hacer funccionar VOLDAR en esta calculadora


sin "castrarlo".
-CASIO fx7700GE: con un poco de trabajo puuede hacerse funcionar VOLDAR. Lo que
hay que hacer es cambiar todos los nombres de programa (como GENPER o VERPER) a
nombres de reas de programa para que puedan ser almacenados en la 7700. Tambin hay
que eliminar todas las referencias a colores. El programa ocupa unos 3200 bytes, con lo que
dejar muy poca memoria libre. Adems, debemos eliminar las dos rutinas de guardar y
recuperar situaciones (programas G y L) pues usan un tamao de matriz demasiado grande
para la 7700.
-CASIO fx9700G: slo hay que eliminar los comandos de colores.
Como curiosidad, los programas G y C de VOLDAR. Estos programas permiten guardar y
recuperar el estado de la calculadora en cualquier momento en una matriz, almacenando en
ella todas las memorias. Desgraciadamente estos programas no funcionarn en modelos
ms bajos que la 9700 porque usa una matriz de 1x31 que no admiten esas calculadoras.
UN TRUCO PARA COMBINAR MODOS DE TRABAJO
Es posible combinar distintos modos de trabajo en un mismo programa, p.ej,
MATRIX y BASE-N. Esto puede hacerse usando la memoria de funcin para copiar
instrucciones escritas en un modo distinto al del programa en el propio programa.
Ejemplo:
Entramos en el modo MATRIX y tecleamos:
DET Mat A
y esto lo almacenamos en la memoria de funcin f1 (sino sabes cmo, mira el manual de la
CASIO).
Ahora escribimos un programa en el modo COMP, y cuando queramos podemos recuperar
las rdenes de f1, de tal modo que podemos escribir cosas como:
cos DET Mat A que de otra forma no seran posibles.
Nota: la memoria de funcin tambin es muy til para copiar programas entre distintas
reas.
Desgraciadamente la memoria de funcin no puede emplearse en el modo de edicin de
fichero de las fx-9700 y cfx-9800, lo cual es una limitacin seria e incomprensible.

EL PROGRAMA PL2CTF
Este programa creado por m es muy sencillo pero puede ahorrar mucho trabajo; su
cometido es convertir un fichero en formato del interfaz PL121 al formato estndar CTF.
EL PROGRAMA CTF2PL
Realiza el trabajo inverso. Y ste s que es especialmente til para los que tengan el interfaz
PL-121 y no deseen construir el cable de CAS.
LOS PROGRAMAS DE EJEMPLO
En el directorio PROGRAMAS puedes encontrar algunos programas seleccionados por m
en formato CTF; muchos no han sido escritos por m sino por grandes expertos en
programacin de calculadoras cuyas direcciones de e-mail podrs encontrar en los propios
programas.
Es especialmente interesante el generador de fractales tipo Julia-Mandelbrot,
desgraciadamente reservado slo a aquellos cuyos modelos de calculadora admitan
nmeros complejos.

(c) 1998-2003 Javier Basilio

Das könnte Ihnen auch gefallen