Beruflich Dokumente
Kultur Dokumente
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
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)
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
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:
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
-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
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:
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.