Instrucciones básicas

Estas son las instrucciones necesarias para hacer un pograma de poca monta; todas están en el menú Prgm
En cuanto a input, la más sencilla es INPUT; si ponemos en nuestro pograma
:Input A (el espacio se pone solo)
al ejecutarlo nos aparece un signo de interrogación, y debemos meter el valor de A y apretar el ENTER.
Pero si ponemos, por ejemplo,
:Input “la W mola”,A
nos aparece el texto entre comillas (la W mola) en vez de la interrogación.

Para las de output, hay dos que conviene conocer:
Si en un pograma ponemos
:Disp A
al ejecutarlo, el valor de A aparece en la parte derecha de la pantalla.
Si en el mismo pograma ponemos, por ejemplo
:Disp “soy genial”
ese texto aparece en la parte izquierda de la pantalla, pero una línea más abajo.
Se pueden combinar las dos cosas si se pone, por ejemplo
:Disp “El valor de A es”,A
Entonces, debería aparecer en el lado izquierdo de la pantalla: El valor de A; y en el lado derecho, una línea más abajo, el valor de A
En cambio, si se quiere colocar un texto o un valor de una variable en un lugar concreto de la pantalla, hay que usar OUTPUT;
Si en un pograma escribimos
:Output (1,1,A
nos pone el valor de A en la primera fila pero por la derecha, y si ponemos
:Output (1,2,A
nos aparece el valor de A precedido de un espacio, porque el segundo número es 2; lo que escribimos nos aparece en la columna 2.
Por otro lado, si ponemos
:Output (2,1,A
el valor de A aparece en la segunda línea, porque el primer número es un 2.
Con la instrucción OUTPUT, a diferencia de con DISP, no hablo de la primera fila que no se ha escrito, sino de la primera fila de la pantalla.
Esto nos permite hacer cosas que con DISP no se pueden hacer; por ejemplo, si ponemos
:Disp “B VALE
:Output (1,8,B
el valor de B aparece justo un espscio detrás de “VALE”
Si ya hay algo escrito, OUTPUT escribe encima; por ejemplo, si en un pograma ponemos
:Disp “HOLA, MAJO
:Output (1,3,”ADIOS
nos aparece escrito HOADIOSAJO
Para borrar todo lo que hay escrito, simplemente ponemos
:ClrHome
y la pantalla adquiere un maravilloso color blanco.

Las instrucciones de Flujo son las que más complicadas se vuelven, pero también las más importantes.
La primera, If/Then/Else/End, sirve para que a veces una parte del pograma se ejecute y otras no se ejecute, o se ejecute otra parte.
Por ejemplo, en el pograma
:Input A
:If A=2:Then
:Disp “2, TE ELIJO A TI
:End
primero nos pide el valor de A, y si le metemos el número 2 a A, escribe “2, TE ELIJO A TI”, pero si no, no hace nada más.
Si entre el DISP y el END escribimos
:Else
:Disp “QUIERO QUE EJECUTES EL
:Disp “POGRAMA OTRA VEZ,
:Disp “Y ESTA VEZ DALE AL 2
y al ejecutarlo no le damos al 2, aparece eso que he escrito.
En general, detras del If hay que poner una condición matemática, como se explicará más adelante; después del Then poner lo que se hará si se cumple la condición; después del Else, si es necesario, lo que se hará si no se cumple, y acabar con un End.
La instrucción PAUSE sirve para que el pograma deje de hacer instrucciones hastaa que aprietes ENTER.
Por ejemplo, si hacemos un pograma que ponga
:Prompt A,B
:Disp A
:Pause
:Disp B
el pograma te pregunta A y B y te saca A por pantalla, pero no te escribe el valor de B hasta que le apretas el ENTER.
El pograma se puede mejorar poniendo
:Prompt A,B
:Pause A
:Disp B
porque tiene una linea menos.
Como PAUSE puede llevar texto detrás no se puede escribir en la misma línea dos puntos y otra instrucción.
Conviene conocer las instrucciones LABEL y GOTO, que sirven para “saltar” de una parte del pograma a otra; si queremos hacer un pograma que nos pregunte un número y escriba los seis siguientes, podemos escribir
:Input N
:Disp N+1
:Disp N+2
:Disp N+3
:Disp N+4
:Disp N+5
:Disp N+6
pero es mejor escribir
:Input K
:K→N
:Lbl A
:N+1→N
:Disp N
:If N<K+6:Then
:Goto A
:End
Lo que hace el segundo pograma es preguntarte un número y guardarlo en K y en N.
Cuando pasa por Lbl A no hace nada, y le suma 1 a N (no a K) y saca N (K+1) por pantalla.
Entonces, como N es menor que K+6, pasa por la instrucción Goto A, que le hace saltar a Lbl A, y vuelve a empezar desde allí.
Después de hacer 6 veces las instrucciones, N=K+6, y entonces el pograma no hace lo que está dentro del IF y acaba.
Ahora que sabemos un poco más, podríamos rematar el pograma con
:Pause
:ClrHome
Aunque el pograma parezca más largo a primera vista, es más práctico, porque si nos pidieran los 9 números siguientes en vez de los 6, en el primero tendríamos que añadir tres líneas de código, y en el segundo, cambiar el 6 por un 9.
Otra instrucción interesante es FOR; por ejemplo, con esta instrucción el pograma de antes se puede hacer sólo con
:Input N
:For (H,1,6)
:Disp N+H
:End
:Pause
:ClrHome
porque el FOR hace esto:
-El pograma, al llegar al FOR, crea una variable llamada H y le da el valor que va después de la coma: 1
-El pograma hace todo lo que hay entre el FOR y el END
-El pograma le suma 1 al valor de H (H vale ahora 2)
-El pograma vuelve a hacer todo lo que le hemos puesto entre el FOR y el END
-El pograma vuelve a sumar 1 a H y a hacer las instrucciones entre FOR y END hasta que H vale el segundo número de la instrucción FOR: 6
-El pograma hace lo propio con H=6 y pasa a lo que hay después del END

Las instrucciones de memoria son las que guardan datos en las unidades de memoria. También transfieren datos de una memoria a otra.
La más sencilla y la más usada es STORE, que guarda datos en variables.
Para usarla, simplemente escribimos un valor o un dato, apretamos STO→ (aparecerá una flecha) y luego escribimos la variable.
:3.45→G
guarda el número 3.45 en G;
:{23,24,21,17}→L3
guarda 23, 24, 21 y 17 como los cuatro primeros elementos de L3, y
:4→dim(L3)
guarda 4 como el número de elementos de L3, etc, etc.
Aunque esta es la más usada, también hay otras que transfieren variables a la memoria ARC (archive) y a la RAM (unarchive), y suelen estar en el menú MEM [2ND ~ +].
La única que conviene saber ademas de STORE es DELVAR, que borra una variable de la memoria y se halla en PRGM

Los operadores matemáticos se pueden considerar una instrucción o no, pero de todas formas conviene aprenderlos. Básicamente son operaciones aritméticas, que se pueden usar como números. Las más sencillas son las que aparecen como teclas normales de la calculadora (+ , – , * , ^ , / , etc…), pero ha otras muchas en los menús de MATH, TEST, LIST y MATRIX.
Empecemos con las de TEST. Ya las hemos usado al usar el IF, que necesitaba una condición para saber si ejecutar las instrucciones.
En realidad las condiciones pueden tener dos valores; 1 si se cumplen y 0 si no. Podéis comprobar esto poniendo en un pograma
:If 1
en lugar de otra condición, y se cumplirá siempre.
También se puede probar a escribir en la pantalla de inicio de la calculadora condiciones como 2=2, 3=4, 45; si se cumplen, la calculadora devuelve 1, y si no, devuelve 0.
Esto se probará útil más tarde, pero primero explicaremos el significado de cada uno: =, ≠, <, >, ≤, ≥, and, or, xor y not.
La condición M=3 sólo se cumple si M vale 3, exactamente 3.
En cambio, M≠3 se cumple si M no vale 3.
La condición M>3, que es cierto si M es mayor que 3 y no 3.
Lo mismo pasa con M<3, que vale 1 cuando M es menor de 3, y 0 si es tres o más.
En cambio, con ≤ y ≥ M puede valer 3 (debe ser menor/mayor o igual que 3).

Los otros cuatro sirven para operar con los ceros y unos que salen de las condiciones, es decir, con las condiciones mismas.
Se puede comprobar cómo funcionan fuera de un pograma, en la pantalla que sirve para hacer cuentas; simplemente se escribe, por ejemplo, “1 and 0”, “1 or 1” o “not(0)”, se aprieta el ENTER y se observa el resultado.
“M and N” vale 1 si M y N valen 1, pero si alguno de los dos vale 0 (o los dos), “M and N” vale 0.
En cambio, con “M or N” pasa al revés, porque sólo vale 0 si los dos valen 0; si M o N valen 1, “M or N” vale 1 también.
“not(0)” vale 1 y “not(1)” vale 0; not sirve para cambiar el valor.
Por último, “M xor N” vale 1 si M y N son distintos, pero si M y N valen lo mismo, vale 0.
Para no quedarnos en la teoría, vamos a poner un ejemplo de sus aplicaciones.
Si por ejemlo en un pograma queremos poner
:If H≥3
pero no nos acordamos de dónde está el ≥, unos hackers rusos lo han borrado de la calculadora o algo así, podemos poner
:If H>3 or H=3
:If not(H<3)
o cualquier otra ingeniosa solución que podéis añadir como comentario.

Otros operadores interesantes son REMAINDER y INT
REMAINDER(A,B) toma el valor del resto de A/B (A entre B , A sobre B). A y B deben ser números enteros.
INT(T) toma el valor de la parte entera de T.

Ahora veamos algo que resulta útil al hacer simulaciones juegos: cómo dejar las cosas en manos del azar.
Simplemente hay que conocer unos operadores que están en MATH~PROB y que empiezan por rand (random): rand, randInt y randBin.
Al ponerlos en el pograma nos piden una serie de datos, pero esos datos se pueden cambiar sin poner el operador otra vez.
El funcionamiento es parecido; rand simplemente toma el valor de un número real entre el 0 y el 1. No requiere argumentos.
Se puede utilizar fácilmente para generar números aleatorios entre dos cualquiera:
Imagina que quieres un número entre 30 y 70 sólo tienes que poner 30 + 40rand en vez de rand.
RandInt genera una lista de números enteros entre dos valores.
Los argumentos, que aparecen al ir a escribirlo, son lower (el número más pequeño que puede salir), upper (el número más grande) y n (el número de números que debe tener la lista).
Si en lugar de la lista se quiere un número, no se debe rellenar n. Dandole a Paste se escribe la instrucción en el pograma.
Entonces debe aparecer algo así:
:randInt(lower,upper,n)
Es útil para obtener números enteros sin recurrir a INT

Las instrucciones de ajustes son las que cambian alguna característica de la calculadora, como cuántos decimales saca por pantalla, si puede operar con complejos, o si mide los ángulos en grados o en radianes.
Todas se ponen apretando el botón MODE.

Para acabar, las llamadas a pogramas permiten ejecutar un pograma desde otro, lo cual facilita las cosas cuando un pograma debe hacer varias operaciones en distintos momentos del pograma.
Debemos ir para ello a PRGM ~ EXEC y decidir a qué pograma llamar.

Un ejemplo surge cuando queremos hacer un pograma que nos pida un número y a continuación:
– Si es par, lo divida por 2
– Si es impar, lo triplique y sume 1
– Saque el nuevo número por pantalla
– Pare cuando el número sea 4 (porque en ese caso pasa a ser 2, luego 1 y luego 4)
Podrías probar a hacer este pograma tú mismo, pero usando las llamadas a pogramas esta es nuestra solución:
(selecciona el cuadrado con el ratón)

_________________________
Programa A                                         
:Input “Numero”,N                           
:Lbl 1                                                    
:PrgmB              (esta es la llamada)
:Disp N                                                
:If N≠4:Then                                      
:Goto 1:End                                        
                                                              
Pograma B                                          
:If remainder(N,2)=1                       
:Then                                                   
:3N+1→N                                           
:Else                                                     
:N/2→N                                              
:End                                                   
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s