Mandatos Básicos Uso de Comandos Para Programar

29
MANDATOS BÁSICOS NOTA: se supone que el lector está familiarizado con el manejo de la CASIO y sabe dónde encontrar todos los símbolos y órdenes que aquí se mencionan. De lo contrario, un buen vistazo al manual sería recomendable antes de comenzar. Un programa CASIO es una secuencia de mandatos válidos, donde cada mandato puede ser: a) un cálculo normal (p.ej: 3+2+1) b) una instrucción especial de programación Cada mandato deberá estar separado por: -un salto de línea (EXE) (no aplicable en fx6300G). -dos puntos (:) -una instrucción de visualización (_). El programa sólo 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 operación). 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 línea por ":" de ahora en adelante): 3+2*10 Ans*3 Al ejecutar el programa anterior, el resultado obtenido es:

description

mandatos básicos para programar

Transcript of Mandatos Básicos Uso de Comandos Para Programar

Page 1: Mandatos Básicos Uso de Comandos Para Programar

MANDATOS BÁSICOS

    NOTA: se supone que el lector está familiarizado con el manejo de la CASIO y sabe dónde encontrar todos los símbolos y órdenes que aquí se mencionan. De lo contrario, un buen vistazo al manual sería recomendable antes de comenzar.

Un programa CASIO es una secuencia de mandatos válidos, donde cada mandato puede ser:

a) un cálculo normal (p.ej: 3+2+1)

b) una instrucción especial de programación

Cada mandato deberá estar separado por:

-un salto de línea (EXE) (no aplicable en fx6300G).

-dos puntos (:)

-una instrucción de visualización (_).

El programa sólo 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 operación). 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 línea 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 operación ejecutada).

    De momento, sabemos que en un programa podemos meter una secuencia de cálculos que también podríamos hacer manualmente. De igual forma que hemos puesto los sencillos cálculos anteriores, pueden escribirse instrucciones cualesquiera, a condición de que sean válidas en el modo que estamos escribiendo el programa.

Page 2: Mandatos Básicos Uso de Comandos Para Programar

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 tamaño 3x3 correspondiente. Esa orden sólo funcionará en modelos fx-7700GE y superiores, pues hasta entonces no era posible usar el modo MATRIX en programación.

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 además 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 más 2 en C)

5+6i->R (almacena el complejo 5+6i en C - sólo fx9700+)

Y luego es posible utilizar los valores en las variables en cálculos 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

Page 3: Mandatos Básicos Uso de Comandos Para Programar

...

A[28]=Z

A[29] -> ¡en principio provoca un "Mem Error"! (ver más adelante)

De igual modo B[0]=B,B[1]=C,etc... Y además B[-1]=A y B[-2] provoca "Mem

Error".

El índice puede ser cualquier expresión, p.ej:

A[3+2]

A[B] y si B=5, eso equivale a A[5]=F.

Con esto tenemos una potente herramienta de programación 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 añadir nuevas variables a costa de tomar espacio de memoria.

P.ej:

Defm0 -> sólo existen variables A~Z.

Defm3 -> creamos tres nuevas variables adicionales, direccionables con los nombres Z[1],Z[2] y Z[3].

Después de esta última instrucción, A[29] sí sería válido.

    El número máximo de variables depende del modelo de CASIO y de la memoria libre. Cada variable nueva consume 4 bytes de RAM.

 Por cierto, el operador ~ también puede usarse con estas variables indexadas:

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

Page 4: Mandatos Básicos Uso de Comandos Para Programar

Lectura por teclado de variables

Veamos el primer comando específico de programación. Se trata de "?" y permite leer un carácter o número desde el teclado.

Sintaxis: ?->nomvar

P.ej: ?->A lee un carácter del teclado y lo almacena en A.

En la pantalla de la CASIO aparece:

"?" y el cursor; deberemos teclear y pulsar <EXE>.

Si el carácter es una expresión, ésta se evalua y se almacena en A.

Si el carácter es un símbolo o una letra, se almacena su código 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 códigos también puede consultarse en "The CASIO programming encyclopedia", también de Tom Lynn.

Con este operador ya podemos hacer un nuevo programa interactivo. Este es muy sencillo y calcula el inverso de un número:

?->A

A=1/A

¿Cómo 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 NÚMERO:"

?->A

"SU INVERSO ES:"

A=1/A

Si omitimos el salto de línea entre las comillas y ?, la interrogación se muestra inmediatamente después del texto.

¿Qué sucede cuándo queremos mostrar un resultado sin finalizar el programa? Con esta utilidad existe el símbolo "∆" (triangulito). Su cometido es parar la

Page 5: Mandatos Básicos Uso de Comandos Para Programar

ejecución y mostrar el contenido de la memoria ANS, a continuación se visualiza el mensaje "-Disp-" y se espera a que el usuario pulse <EXE>.

P.ej:

1_

2_

3_

Visualiza los números 1,2 y 3, haciendo una pausa entre cada uno con el mensaje -Disp-. El resultado por pantalla será el siguiente:

1

-Disp-

2

-Disp-

3

-Disp-

3

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 expresión: B[3]_ ó cos5_ son instrucciones válidas.

Observaciones sobre la salida de texto:

-si la pantalla ya está llena, se realiza scroll de líneas hacia arriba con una ligera pausa predefinida entre línea y línea.

-si la CASIO estaba en modo gráfico, es coonmutada al modo texto antes de rea lizar la salida.

En los modelos clásicos, no se conoce ningún modo de borrar la pantalla de texto de la CASIO, ni de posicionar el cursor. En las calculadoras de nueva generación,

Page 6: Mandatos Básicos Uso de Comandos Para Programar

existen órdenes de formateo de texto y para limpiar la pantalla. También existen formas más elegantes de inputación.

LA INSTRUCCION CONDICIONAL =>

¿Qué sería un programa sin condiciones?

Sin duda un aburrimiento. Pero las Casio disponen de un operador condicional =>, cuya sintaxis es:

expresión booleana => mandato

El funcionamiento es muy sencillo: si la expresión booleana es cierta, se ejecuta el mandato; de lo contrario se salta a la instrucción siguiente almandato.

Es equivalente a la orden en BASIC: IF expresión booleana THEN mandato.

La expresión booleana puede componerse utilizando los operadores de relación accesibles a través del menú "PRGM": <=,=,>= y >.

P.ej:

A<=B => "A es menor que B"

Desgraciadamente las CASIO clásicas no disponen de operadores lógicos tales como AND u OR (esto se soluciona en las 9x50). Así que deberemos apañárnoslas para componer las expresiones.

La más sencilla es el AND:

un hipotético

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 expresión:

A>B OR A>C => "HOLA" es:

A>B => "HOLA"

Page 7: Mandatos Básicos Uso de Comandos Para Programar

A>C => "HOLA"

Aplicando estas dos normas con algo de cuidado podemos realizar cualquier expresión. 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 colofón de este epígrafe vamos a presentar un sencillo programa:

'EDADES

"Dime tus años"?->E

E<20 => Orange "Aún 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 línea hemos presentado un nuevo concepto, el de comentario. Cuando se introduce el símbolo "'", el intérprete CASIO ignora el resto de la línea. Esto es especialmente útil cuando se escribe en zonas de programa y no de edición, pues podemos usar la primera línea para "rotular" el programa. P.ej, si hubiésemos intrucido el anterior listado en el área 0 y el resto estuvieran vacías, veríamos en el listado de programas:

0 'EDADES

1 empty

2 empty

...

Veamos ahora un ejemplo de ejecución:

Dime tus años? 19

Page 8: Mandatos Básicos Uso de Comandos Para Programar

Aún 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 válidos son los números del 0 al 9, las letras de A a Z, y los símbolos 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 después del Goto). Al realizar el Goto, la ejecución del programa se dirige a la zona marcada.

Veamos un ejemplo sencillo:

Goto A

"Nunca me escribirán"

Lbl A

"Fin"

La ejecución del programa anterior visualiza el mensaje "Fin". Esto es porque el Goto redirige la ejecución del programa a la etiqueta A, y el mensaje entre medias nunca llega a ejecutarse.

Visto así el Goto parece un poco inútil. Su verdadera potencia no se descubre hasta que lo combinamos con la operación 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 más interesante:

'ELEFANTES

1 -> A

Lbl 1

A_

"Elefantes se balanceaban sobre la tela de una araña"

Page 9: Mandatos Básicos Uso de Comandos Para Programar

A+1->A

A<=10 => Goto 1

La ejecución produce:

1

-disp-

Elefantes se balanceaban sobre la tela de una araña

2

-disp-

Elefantes ...

-disp-

10

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 también acaba la ejecución del programa).

    Para que no rabien los amantes de la programación estructurada, veamos el modo de convertir las estructuras de control más populares a formas Goto:

WHILE condicion DO

BEGIN

instrucción 1

..

instrucción i

END

se traduce:

Lbl z 'z es una etiqueta no usada

Page 10: Mandatos Básicos Uso de Comandos Para Programar

instrucción 1

...

instrucción 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

Page 11: Mandatos Básicos Uso de Comandos Para Programar

Goto z

Lbl w

...

Para concluir, vamos a ver un pequeño juego de adivinanzas. Vamos a utilizar la función Ran# que genera un número aleatorio entre 0 y 1.

Nótese que para obtener un número aleatorio natural entre 0 y N la fórmula es:

 Int(NRan#)

donde Int es la función numérica que devuelve la parte entera de un número. Ambas funciones se alcanzan por el menú MATH.

Vamos allá con el juego:

'ADIVINAR NUMERO, POR JABA

Int(100Ran#) -> N ' Piensa el número secreto entre 0 y 100

"¡ADIVINA EL NUMERO!"

Lbl 1

? -> I ' Intento del jugador

I<N => "ES MAS GRANDE"

I>N => "ES MAS PEQUEÑO"

I<>N => Goto 1

'Se sale del "While", el número 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 sólo señalar que se usan las siguientes variables:

I, almacena el número "pensado" por la calculadora.

N, almacena el número que introduce el jugador.

Page 12: Mandatos Básicos Uso de Comandos Para Programar

LAS INSTRUCCIONES DE INCREMENTO Y DECREMENTO

Las instrucciones de incremento y decremento (Isz y Dsz respectivamente) no nos propocionan ninguna funcionalidad nueva que no puediéramos 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 versión mejorada del programa anterior (la definitiva):

'ADIVINAR NUMERO PLUS, POR JABA

'COMPATIBILIDAD: fx-6300G y superiores

Page 13: Mandatos Básicos Uso de Comandos Para Programar

Lbl 0

"Dificultad (1-10)"

? -> D

D>10 => Goto 0

D<1 => Goto 0

Int((D*10)Ran#) -> N ' Piensa el número secreto entre 0 y la dificultad*10

0 -> K ' Pon a cero el número 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 PEQUEÑO"

I<>N => Goto 1

'Se sale del "While", el número fue acertado

"FELICIDADES"

"ENCONTRASTE EL NUMERO SECRETO"

"INTENTOS USADOS:"

K_

En esta nueva versión hemos hecho dos cambios:

-hemos añadido el nivel de dificultad. El jugador introduce un nivel del 1 al 10 (observar la comprobación de nivel no válido). El número pensado se encontrará entre 0 y 10 por el nivel de dificultad.

-hemos añadido un contador del número de iintentos, en la variable K. Para ello usamos la instrucción de incremento Isz. Obsérvese que como K nunca tendrá el

Page 14: Mandatos Básicos Uso de Comandos Para Programar

valor 0, no nos preocupamos por el carácter condicional de dicha instrucción (de hecho podría sustituirse por K+1->K).

INTRODUCCION AL MODO GRÁFICO

Después de conocer las principales órdenes CASIO, vamos a hacer una tímida introducción al potente modo gráfico. Al contrario del modo texto, en el que el formato de salida es muy limitado reduciéndose a una simple terminal, el modo gráfico es mucho más potente y versátil (Tom Lynn ha creado unas rutinas que permiten realizar salida de texto en modo gráfico en cualquier posición deseada; esto puede ser muy útil si deseas cuidar la presentación 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 válidas en tu máquina; consulta el manual para buscar los valores correctos.

Lo primero que debe hacerse antes de comenzar a tratar con el modo gráfico es ajustar el rango, es decir, la escala de la imagen y los puntos visibles. Para ello usamos la orden RANGE:

RANGE xmin,xmáx,escalax,ymin,ymáx,escalay

xmin es el punto más pequeño de x visualizable.

xmáx es el punto más grande de x visualizable.

escalax es el incremento entre punto y punto.

Análogamente para y.

Así, por ejemplo:

RANGE 1,20,1,1,20,1

nos da una ventana gráfica con coordenadas X e Y válidas 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 estándar recomendado que suele utilizarse en los programas es:

Range 1,95,0,1,63,0

Page 15: Mandatos Básicos Uso de Comandos Para Programar

Como puedes ver, este rango evita que se vean los ejes:

|

|***************** y=63

|* *

|* VENTANA *

|* *

|* *

|*****************

--------------------- eje x

| x=95

|

eje y

En las calculadoras de más resolución (9x50) un rango mejor es:

ViewWindow 1,127,0,1,63,0

(en las calculadoras 9x50 la instrucción RANGE se ha renombrado a VIEWWINDOW)

Sin embargo, los programas escritos con ambos rangos funcionarán 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á automáticamente la imagen.

La orden para limpiar la pantalla gráfica 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 estándar)

Cls

Plot 10,10

Page 16: Mandatos Básicos Uso de Comandos Para Programar

Plot 20,20_

Dibuja dos puntos en pantalla. El símbolo de visualización _ es necesario pues sino la calculadora volvería inmediatamente a modo texto, de este modo se permite observar la imagen.

La orden PLOT también puede usarse sin órdenes:

Plot_

En este caso, el usuario puede mover el cursor gráfico 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 también es muy útil. Su función es una línea uniendo los dos últimos puntos marcados con Plot.

P.ej, esto dibuja un rectángulo:

Cls

Plot 1,1

Plot 10,1

Line

Plot 10,10

Line

Plot 10,1

Line_

Y con un poco más de astucia, podemos averiguar si el usario es miope o no:

"¡Intente acertar dentro del rectángulo!"_

Cls

Plot 1,1

Plot 10,1

Line

Page 17: Mandatos Básicos Uso de Comandos Para Programar

Plot 10,10

Line

Plot 10,1

Line

Plot_ ' esperar entrada del posible miope

X<=10 => Y<=10 => Goto 1 ' Marcó dentro del triángulo

"¡Miope!"_

Goto 2

Lbl 1

"¡Enhorabuena!"

Lbl 2

Como puede verse, la comprobación consiste en ver si el punto marcado está dentro del triángulo. Nótese que las coordenadas del punto no pueden ser negativa por estar supuesto el rango estándar.

    ¡Quién sabe! Tal vez algún día este programa sea usado como test de alcoholemia para conductores.

COLORES EN LOS GRÁFICOS

    En los modelos cfx es posible utilizar los tres colores (azul,naranja y verde) en la pantalla gráfica, de modo similar a cómo se usaban en el texto.

     Por defecto, los puntos y líneas 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 gráfico es azul por defecto, y esto sólo puede cambiarse en el menú de configuración de la calculadora.

SUBRUTINAS

Page 18: Mandatos Básicos Uso de Comandos Para Programar

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 ejecución al punto de llamada del programa principal. Se permiten hasta 10 niveles de inclusión en las llamadas. Una inclusión más 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

-Disp-

SOY EL PROGRAMA 0

-Disp-

El programa 1 es una subrutina del programa 0.

En los modelos de 32kbytes también pueden llamarse a programadas almacenados

como archivos, estos se identifican escribiendo su nombre entre comillas. P.ej:

Prog "SUBRUTINA"

Como colofón de todo lo aprendido hasta ahora, ¡veamos un interesante juego!

EL JUEGO TRIYURSEL

Este juego lo he diseñado especialmente para este manual, y creo he procurado

que muestre todas las características que hemos visto hasta ahora. Para él

me he basado en la idea del programa del test de miopía visto anteriormente.

El juego consiste en lo siguiente: el usuario ve una figura (un rectángulo)

Page 19: Mandatos Básicos Uso de Comandos Para Programar

moviéndose aleatoriamente por la pantalla un número determinado de veces.

Después, la pantalla se borra y el jugador debe intentar acertar la posición

de la última figura dibujada utilizando el cursor gráfico.

Además, el nivel de dificultad va aumentando en cada ocasión. Esto quiere

decir que la figura se moverá más veces y, especialmente, que el tamaño de la

figura disiminuirá.

Sin más preámbulo, he aquí el programa. Ocupa dos zonas de memoria, y los

usuarios de calculadoras anteriores a la fx-9700G deberán cambiar las refe-

rencias 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]:' Límite x

7 -> M[1]:' Límite y

1 -> H:'Número de movimientos

Lbl 0

M[0]+5 -> M[0]:'Incrementar tamaño de pantalla x

M[1]+3 -> M[1]:'Incrementar tamaño 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 posición inferior izquierda del último dibujo

Plot_:'Entrada del usuario

Page 20: Mandatos Básicos Uso de Comandos Para Programar

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 número 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 rectángulo

Int( (M[1]-6)Ran#)+1 -> B

'Dibujar el rectángulo

Plot A,B

Plot A+5,B

Line

Plot A+5,B+5

Line

Plot A,B+5

Line

Plot A,B

Line

Page 21: Mandatos Básicos Uso de Comandos Para Programar

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], límites x e y. H, número de repeticiones.

Salida : A y B, posición 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. ¡Pruébalo!

Observación: si usas una 9x50, deberás cambiar M[0] y M[1] por M y N, respec-

tivamente (en este caso el cambio es sencillo).

UN PROGRAMA MÁS SERIO

    ¡Cualquiera podría decir que sólo utilizamos la calculadora para jugar!

    Por ello te presento el siguiente programa que da un enfoque algo más serio a la programación.

    Desde la fx-7700, es posible el cálculo de derivadas en un punto de terminado. Pero esto es algo limitado, ya que lo realmente interesante sería obtener el polinomio de la función derivada.

    El siguiente programa no lo logra, pero se acerca bastante. Lo que hace es dibujar la gráfica de la derivada de una función dada. Puede ser excepcionalmente útil si deseas comprobar la correción de una derivada dada, pues sólo hay que usar mi programa y luego superponer la gráfica de la función que has obtenido, y ver si coinciden.

El programa pide tres datos: el valor mínimo de x, el valor máximo, y el incremento entre punto y punto. A mayor incremento, mayor velocidad pero menor exactitud. La función a derivar debe estar almacenada en la memoria de gráficos Y1.

Page 22: Mandatos Básicos Uso de Comandos Para Programar

Además, el programa realiza un ajuste automático del rango de pantalla para mostrar la mejor imagen posible.

Veámoslo:

'DIBUJAR DERIVADA

"MIN"?->M

"MAX"?->N

"PASO"?->P

"¡POR FAVOR,ESPERE!"

0->A:' Minimo

0->B:' Maximo

' Aquí ponemos a 0 el valor mínimo y el máximo, así logramos que el ajuste

vertical de rango sea el más cerrado posible a la gráfica.

M->Z

' Z almacena el punto actual de cálculo

' Primera pasada: buscamos máximo y mínimo 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 máximo y/o el mínimo

T<A=>T->A

T>B=>T->B

' Cerrar el bucle

Z+P->Z

Z<=N=>Goto 0

Page 23: Mandatos Básicos Uso de Comandos Para Programar

' Con el máximo y el mínimo, 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 gráfica dibujada sea continua.

Z+P->Z

Z<=N=>Goto 1

Plot _