Artículo publicado en el número 2 de RetroWiki Magazine
Entrada/Salida. Variables. Primer programa: Calculadora
NOTA DE SINTAXIS:
Lo que sea propio de la programación estará en negrita, y las palabras propias
del BASIC estarán siempre en mayúsculas y negrita. Todo lo que esté en
azul
dentro del texto hay que escribirlo literalmente (en el Spectrum gomas ya sabéis
que no se escribe así, en otro artículo hablaré del por qué). Los listados de
los programas estarán en recuadros. La respuesta del ordenador dentro del texto
estará en verde, a no ser que sean imágenes
de la pantalla que aparecerán en cuadros. Las pulsaciones de teclas aparecerán en
rojo.
En el primer artículo puse una
referencia del lenguaje, y un pequeño ejemplo para abrir boca, en los
cursos ahora se empieza con teoría, seudocódigo, y cosas más académicas como el
lenguaje de definición de la sintaxis, pero como la única forma de aprender a
programar es programando, vamos a aprender a programar programando, y para
nuestro primer programa elegiré hacer una calculadora, lo que nos ayudará con
los conceptos básicos sobre variables y el control del programa, e iré poco a
poco ampliando la funcionalidad.
El BASIC es interpretado, eso
significa que cuando escribimos algo, el sistema responde a todo lo que se
escribe. Si es una sentencia la ejecuta inmediatamente, si comienza por un
número añade esa línea al programa, si es un comando lo ejecuta. Usaremos esto
para nuestras primeras operaciones, por ejemplo si escribimos
PRINT 25*3 y pulsamos el
INTRO o
ENTER, se ejecuta, y vemos en la
pantalla el resultado 75 mientras que
si escribimos PRINT 25/3 aparece
8,3333333 (el número de ceros puede
variar dependiendo de la máquina).
Así podemos jugar un poco con
nuestra primera instrucción PRINT, que lo único que hace es mostrar en la
pantalla los resultados de lo que le digamos. Vemos que el sistema puede
trabajar con los 4 operadores matemáticos básicos (+ suma, -
resta, * multiplica, / divide), luego añadiremos alguno.
Si vamos a empezar un programa,
primero pensemos lo que queremos, vamos a hacer que el sistema nos solicite dos
números, una operación, y nos muestre el resultado en la pantalla. Los números
que introducimos los debemos guardar en un sitio, pues si no los tenemos
almacenados no podemos usarlos. Los almacenes de valores se denominan
variables. Una variable tiene un nombre propio, y este nombre estará
compuesto por hasta 8 caracteres, números o letras, pero siempre debe empezar
por una letra. A ese nombre se le puede añadir el carácter $ para indicar
que su contenido será alfabético, si no será un valor numérico. RESTRICCION: En
el BASIC del Spectrum las variables de tipo cadenas solo pueden tener en su
nombre una letra, o una letra seguida de un número, mientras que si alguno es el
afortunado poseedor de una máquina mucho más antigua, todas las variables serán
solo de una letra, o una letra seguida de un número.
Para introducir valores en el
sistema por el teclado usaremos la instrucción INPUT, que es un poco lo
contrario del PRINT, cuya sintaxis es INPUT nombre_variable.
El sistema se para, pone un indicador en la pantalla (generalmente un
interrogante aunque en el Spectrum no saca nada), y se queda esperando que
introduzcamos un valor. Así si escribimos INPUT
prueba y pulsamos ENTER,
aparece un interrogante, si escribimos 3.5
le estamos introduciendo el valor tres coma cinco (recordar que el sistema
inglés usa el punto como nosotros la coma decimal, y usa la coma como separador
de millares como usamos nosotros el punto). No veremos nada en pantalla, o
recibimos un mensaje de OK, pero ya ha guardado ese valor en una variable, que
se llama nro. Si ahora escribimos PRINT
prueba aparece en pantalla el valor de la variable, por tanto aparece
en pantalla 3.5
Punto importante, los valores de
las variables no se pierden hasta que les demos otro valor, o reseteemos el
aparato, lo apaguemos, o si escribimos el comando
NEW y damos
ENTER (hacerlo), que limpia la memoria y elimina el programa que
tengamos en ese momento. Si tras esta limpieza escribimos
PRINT prueba aparece un mensaje de error,
indicando que no hay ninguna variable que se denomine prueba en el
sistema, o cero en algunos sistemas como el Amstrad.
Ahora ya podemos poner la
sintaxis completa de la instrucción de impresión que es PRINT valores en
donde valores puede ser:
- Una variable (se presenta tu contenido)
- Una contante, que a su vez puede ser o bien un número que escribimos tal cual, o una cadena de caracteres alfabética, cuyas letras deben ponerse entre las comillas dobles, para que el sistema sepa lo que es, por ejemplo “hola”
- El resultado de una expresión, como hemos usado antes al poner 25/3, se presenta su evaluación.
- O una combinación de varios valores, que debemos separar o bien por un punto y coma, o bien por una coma simple. Si usamos el punto y coma se imprimen uno tras otro, si usamos la coma, el resultado se presenta en la próxima parada de tabulación (una tabulación cada 8 caracteres de la pantalla generalmente, pero depende del sistema en que programemos).
Veremos esto, si escribimos
PRINT 1,2;3
aparece en la pantalla 1
23 vemos que presenta el valor 1, una serie de espacios, el valor 2,
y unido el valor 3.
Si escribimos PRINT
“hola”,”hola”;”hola” aparece en la pantalla
hola
holahola
Vamos con el primer programa, pediremos dos números, y presentamos el resultado de su
suma, resta, producto y división. Si lo tecleamos, veremos que con esto tan
sencillo hemos empezado a recibir datos, y cada vez que pulsamos
RUN nos pide los dos números y presenta
el resultado. Solo que es un poco lio lo que se presenta en la pantalla, por tanto lo
mejoraremos un poco.
10 INPUT valor1
20 INPUT valor2
30 PRINT valor1+valor2
40 PRINT valor1-valor2
50 PRINT valor1*valor2
60 PRINT valor1/valor2
20 INPUT valor2
30 PRINT valor1+valor2
40 PRINT valor1-valor2
50 PRINT valor1*valor2
60 PRINT valor1/valor2
Lo primero es comentar que vamos
a hacer, para lo que usaremos la sentencia REM, que lo que hace es
introducir un comentario en el listado del programa. Luego lo que haremos es
presentar cosas en pantalla, solicitar dos números, dando mensajes que le
permitan saber al usuario qué hacer, y luego pondremos el resultado de las
cuatro operaciones con ambos números. No es mucho mejor, pero creo que si es
mucho más claro para el usuario, y los programas los ejecutan usuarios, no
siempre los propios programadores.
100 REM --------------------------------
110 REM - Calculadora. J.A. Vaque 2011 -
120 REM --------------------------------
130 PRINT "Calculadora simple. Versión 1.0"
140 PRINT "*******************************"
150 PRINT
160 PRINT "Introduzca el primer valor: ";
170 INPUT valor1
180 PRINT
190 PRINT "Introduzca el segundo valor: ";
200 INPUT valor2
210 PRINT
220 PRINT
230 PRINT "Suma....: "; valor1+valor2
240 PRINT "Resta...: "; valor1-valor2
250 PRINT "Producto: "; valor1*valor2
260 PRINT "cociente: "; valor1/valor2
110 REM - Calculadora. J.A. Vaque 2011 -
120 REM --------------------------------
130 PRINT "Calculadora simple. Versión 1.0"
140 PRINT "*******************************"
150 PRINT
160 PRINT "Introduzca el primer valor: ";
170 INPUT valor1
180 PRINT
190 PRINT "Introduzca el segundo valor: ";
200 INPUT valor2
210 PRINT
220 PRINT
230 PRINT "Suma....: "; valor1+valor2
240 PRINT "Resta...: "; valor1-valor2
250 PRINT "Producto: "; valor1*valor2
260 PRINT "cociente: "; valor1/valor2
Las líneas 100 a 120 son comentarios, las 130 a 150 ponen lo
que hace el programa. De la 160 a la 200 introducimos valores, ojo que la 160 y
la 190 deben acabar en punto y coma, para que el input salga en la misma línea
(salvo en el Spectrum que los input van en la última línea siempre). La 210
separa el input de los resultados, y la 220 separa un poco más, dejando una
línea en blanco. Y por último las 230 a 260 presentan el resultado. Cada vez que
la ejecutamos vemos cómo se va ejecutando, pero no queda una pantalla muy elegante,
añadiremos la línea
125 CLS y vemos que se limpia la pantalla
antes de cada ejecución, por lo que queda un poco mejor.
Animaros a ir probando
cosas, meter más
INPUTS y
PRINT,
poner y quitar comas y puntos y coma, jugar un poco con los valores. Por
ejemplo, os propongo algo sencillo, podéis poner también los resultados
inversos, en lugar de primero mas segundo, segundo más primero, y ver que
operaciones son conmutativas y cuáles no.
Saliendo del BASIC estándar, hay
una forma de alterar la posición donde imprime o lee en la pantalla, con la
sintaxis
PRINT TAB (columna, línea); valores esto posiciona el cursor en el
punto indicado mediante columna y línea, y luego imprime en la pantalla a partir
de ese punto. Hay una variante que es usar la sentencia
AT columna, línea lo que
posiciona el cursor, y luego podemos ya usar el
PRINT normalmente.
En la entrada muchas versiones
del BASIC permiten añadir en el
INPUT una cadena de caracteres, que se
imprime como si hubiésemos usado un
PRINT previo, y nos permiten ahorrar
instrucciones, por ejemplo podemos poner
INPUT “Introduce un número”; n
En el próximo capítulo veremos las sentencias de control, y
seguiremos ampliando esta sencilla calculadora en el próximo número, pero es
importante ir poco a poco y asentar conceptos. Si tenéis cualquier duda, en los
foros de RetroWiki o en mi mail os las solucionaré.
Jose Antonio Vaqué Urbaneja,
podéis contactar conmigo en
javu61@gmail.com o ver más cosas en old8bits.blogspot.com
javu61@gmail.com o ver más cosas en old8bits.blogspot.com
No hay comentarios:
Publicar un comentario