           P?CURSO DE AMOSP8

Nota:  Este  curso  lo  he realizado
guiándome con el que apareció en  la
revista inglesa CU AMIGA. Espero que
este curso  sirva de algo a la gente
que empieza con  el Amiga  y no sabe
programar.

       P?INTRODUCCIÓN AL AMOSP8

  AMOS  fue  realizado   para  crear
juegos,  pero se puede utilizar para
cualquier cosa. Está orientado hacia
aquellas    personas    con    pocos
conocimientos de programación.

  AMOS   está    formado   por   dos
lenguages,  el AMOS BASIC y el  AMAL
(AMAL  es el lenguaje de animación),
aquí  solo  explicaré  los  comandos
básicos  de AMOS BASIC, para que los
que  empiecen  con  el Amiga, puedan
realizar programas sencillos, espero
que  alguien  se  anime,  y explique
algo sobre el AMAL.

             P?EMPECEMOSP8

  A  partir de ahora, se empezarán a
ver  instrucciones  de  AMOS,  estas
instrucciones,       para      poder
diferenciarlas,    aparecerán     en
mayúscula, y con un color diferente.

  También  aparecerán signos (=,<,>)
que significan lo siguiente:

   = ......... igual que ...
   < ......... menor que ...
   > ......... mayor que ...
   <> ........ diferente que ...
   <= ........ menor o igual que ...
   >= ........ mayor o igual que ...

  En el  caso de  las variables,  el
signo  =  se utiliza para asignar un
valor a una variable.

            P?VARIABLESP8

  Las    variables    sirven    para
almacenar  una  información  que  se
utilizará   durante   el   programa,
(p.e.:   para   guardar  la   máxima
puntuación  en un juego, o el nombre
de un jugador en un simulador, etc),
en las variables  se puede almacenar
caracteres,   strings   (cadenas  de
caracters),   numeros    enteros   y
reales...

  Las variables  pueden tener más de
una dimensión.

  La forma de poder asignar un valor
a una variable es:

  Para asignar un string:
     nombre$="Xavi Tolentino"
           ^
  Para asignar un valor entero:
     numero=128

  Para asignar un valor real:
     nreal#=0.12847
          ^
  Lo  que  está  marcado  con ^ debe
aparecer siempre al final.

   ejemplo:

    r$="FANZINE"
    P9PRINTP8 "La mejor revista es ";r$

aparecería lo siguiente:

La mejor revista es FANZINE

  Ahora  empezaremos ya en serio con
el AMOS.

             P?BUCLESP8

  Hay cuatro bucles  diferentes, los
voy  a  dividir  en  2  grupos  (con
condición, sin condición).

       P?BUCLES SIN CONDICIÓNP8

P9FORP8 .... P9NEXTP8

  Imaginemos  que  queremos escribir
10  veces "El Amiga es el mejor", si
no existiesen los bucles, deberíamos
poner  10 veces P9PRINTP8 "El amiga...",
y esto cansa, pero  gracias al bucle
FOR,  solo  tenemos  que  escribir 3
lineas:

    P9FORP8 variable=1 P9TOP8 10
     P9PRINTP8 "El Amiga es el mejor"
    P9NEXTP8 variable

  Analicemos   lo  que   haría  este
pequeño programa. Primero se le dice
al  ordenador que tomará un valor de
1  a  10,  en  la  segunda línea, se
escribe  por  pantalla  lo  que haya
entere "", y el P9NEXTP8, lo que hace es
que  variable   tome  el   siguiente
valor.

  Si quieres que la variable aumente
de 2 en  2, deberías añadir al final
de la primera linea, P9STEPP8 n, donde n
debe  ser el número que queremos que
aumente.  En  nuestro caso, para que
auemente  de  2  en   2,  pondríamos
P9STEPP8 2.

P9DOP8 .... P9LOOPP8

  Este  bucle  és un bucle infinito,
o  sea,  que  se repite siempre, por
ejemplo, si queremos  hacer una demo
y   que   cuando  termine  vuelva  a
empezar,  se  podría  utilizar  este
tipo de bucle. Se utiliza así:

    P9DOP8
     instrucciones.....
    P9LOOPP8

      P?BUCLES CON CONDICIÓNP8

  Este tipo de  bucles, solamente se
ejecutan  si  se cumple la condición
que tienen asignada.

  Tenemos dos bucles con condición:

P9WHILEP8 .... P9WENDP8

  Los bucles P9WHILEP8, solo se ejecutan
si la condición  se cumple. En estos
bucles,  se  evalua la condición, al
principio,  si  la  condición  no se
cumple, se salta el bucle y continua
con lo que haya después del bucle.

    numero=0
    P9WHILEP8 numero<10
     P9PRINTP8 "HOLA"
     numero=numero+1
    P9WENDP8

  Primero  inicializamos el valor de
la  variable  'numero' a 0, después,
se pone  la condición, en este caso,
si el valor  de 'numero' es menor de
10  se  saca   por  pantalla   HOLA,
seguidamente,   se   añade  1  a  la
variable.  Lo  que  hay  dentro  del
bucle,  se  irá ejecutando hasta que
'numero' tome el valor 10.

P9REPEATP8 .... P9UNTILP8

  Lo  que  diferencia  a  los bucles
P9REPEATP8  de  los P9WHILEP8, es que en los
P9WHILEP8, examina la condición antes de
entrar en el bucle, y en los P9REPEAT,
se  evalua  la condición  después de
haber entrado una vez. Por lo tanto,
en los bucles P9WHILEP8, si no se cumple
la  condición,  no  se  ejecuta,  en
cambio,  en  los  P9REPEATP8, se ejecuta
como mínimo una vez.

    P9REPEAT
     PRINTP9 " FANZINE "
    P9UNTIL MOUSEKEYP8

  Este listado, escribirá la palabra
' FANZINE ',  hasta  que se pulse el
botón  del  ratón.  Lógicamente,  la
instrucción  P9MOUSEKEYP8, examina si se
pulsa el ratón.

  Ahora  que  hemos acabado la parte
de  los  bucles,  empezaremos a  ver
instrucciones.

P9IFP8 ... P9THENP8 ... P9ELSEP8

  Esta   instrucción   ejecuta   las
instrucciones  que  le siguen, si se
cumple  la  condición  que lleva. Se
entenderá mejor con un ejemplo:

 a=false
 va=P9RNDP8(9)+1
 P9REPEATP8
  P9CLS
  PRINTP8 "Pon un nº del 1 al 10"
  P9INPUTP8 nu
  P9IFP8 nu=va P9THEN PRINTP8 "Bien": a=true
  P9IFP8 nu<>va P9THEN PRINTP8 "MAL"
  P9WAITKEY
 UNTILP8 a

  Examinemos el listado. Asignamos a
la  variable  a  el  valor false (en
este   caso,  vemos  las   variables
booleanas,  que solo toman  el valor
true  o  false), la instrucción P9RNDP8,
coge  un valor al azar,  de 0 a 9 en
este caso, y le suma 1 (para obtener
un valor  entre 1 y 10). Se entra en
un bucle P9REPEATP8,  que ya hemos visto
como   funciona.   Lo   primero  que
encontramos   en  el   bucle  es  la
instrucción   P9CLSP8,  ésta  borra   la
pantalla,  después  viene  el P9PRINTP8,
que  saca lo que  tiene entre "" por
pantalla.  P9INPUTP8 sirve  para leer un
valor desde teclado, lo que escribas
se queda en nu. Ya por fin vemos dos
instrucciones P9IFP8, la primera compara
nu  con va, si son iguales, saca por
pantalla  Bien, y  asigna  el  valor
true a la  variable a. El segundo P9IFP8
mira si  son diferentes  nu y va, si
es así,  escribe  MAL y  no sale del
bucle.  P9WAITKEYP8 espera  la pulsación
de una tecla.  Y  finalmente está el
P9UNTILP8.

  Ahora os preguntaréis, ¿por qué no
se  pone   P9UNTILP8  a=true?,  pues  la
respuesta  es muy fácil,  al ser  un
valor booleano, solo puede tomar los
valores  true o  false  (verdadero o
falso),  y  al  poner  P9UNTILP8  a,  el
ordenador   entiende    que   a   es
verdadero  (es  lo  mismo  que decir
hasta que sea cierto).

  Para parar  la ejecución del bucle
en  caso de ser  a=false, solo haría
falta poner P9UNTILP8 NOT a.

  Pero el listado  anterior, también
se podría haber puesto así:

 a=false
 va=P9RNDP8(9)+1
 P9REPEAT
  CLS
  PRINTP8 "Pon un nº del 1 al 10"
  P9INPUTP8 nu
  P9IFP8 nu=va P9THENP8 a=true P9ELSE PRINTP8
"MAL" <<<< a continuación del P9PRINTP8
  P9WAITKEY
 UNTILP8 a
 P9PRINTP8 "Bien"
 P9WAITKEYP8

  P9ELSEP8  solo  se  ejecuta  si no  se
cumple la condición nu=va.

P9PRINTP8

  Esta instrucción ya la hemos visto
antes, pero la voy a explicar por si
hay alguien despistado.

  P9PRINTP8  saca por pantalla un valor,
ya  sea  un  string o un número. Hay
dos  formas de sacar un número, como
caracter   o   como   entero.   Como
caracter se haría así:

    P9PRINTP8 "1242875"

  Pero como entero...

    P9PRINTP8 12

y saldría por pantalla 12.

  Un  programa  para  ver un ejemplo
de lo que sirve  sacar un entero con
P9PRINTP8:

   P9DO
    CLSP8 0
    P9PRINTP8 "Pon un valor"
    P9INPUTP8 num1
    P9PRINTP8 "Pon otro valor"
    P9INPUTP8 num2
    P9CLSP8 0
    res=num1*num2
    P9PRINTP8 num1;"*";num2;"=";res
    P9WAITKEY
   LOOPP8

  Es  un  programa  un  poco chorra,
pero  nos  sirve  de ejemplo. P9CLSP8 0,
borra  la  pantalla y la pone con el
color  correspondiente a la posición
0  de la paleta por defecto del AMOS
o  la que hayamos definido. La forma
de  definir  una  paleta  la veremos
más adelante.

P9LOCATEP8 x,y

  Coloca  el  contenido  de P9PRINTP8 en
una  zona  de la pantalla, esta zona
será la que definimos nosotros.

   P9LOCATEP8 10,10 : P9PRINTP8 "HOLA"

  Nos  escribiría  la palabra HOLA a
partir de la posición 10,10.

P9CENTREP8

  Esta instrucción es para facilitar
el centrado de un texto en pantalla.

  Si  lo  quisieras   hacer  con  un
P9LOCATEP8,  tendrías  que  ir  probando
hasta que quedase centrado, pero con
la instrucción P9CENTREP8 la cosa es más
fácil:

   P9LOCATEP8 1,10:P9CENTREP8 "FANZINE"

  Primero   especificamos   con   el
P9LCOATEP8,  la  fila  en donde queremos
que  aparezca  la  palabra  FANZINE,
después  con   P9CENTREP8  centramos  la
palabra.

  Bien, con las instrucciones que se
han  visto  hasta  ahora,  deberíais
intentar  hacer un  programa  que os
pregunte  sumas   al  azar,   si  se
acierta,    una    variable   deberá
aumentar en 1 el núemro de aciertos,
pero si no se acierta, a la variable
se  le  restará  1. En todo momento,
deberá  aparecer  la  puntuación  en
pantalla. Quizá este programa sea un
poco estúpido, pero si no lo quereis
intentar,  no   vale  la   pena  que
aprendáis a programar.

  Bueno,  hasta el próximo número de
B>P9FANZINEB0P8.  Si  tenéis  algún problema
con  el programa de sumas, no dudéis
en preguntármelo. Podéis escribir a:











P?  B;                         B0
  B;      XAVI TOLENTINO     B0
  B;  Plaça Cirera Voltà, 5  B0
  B;   08120 - LA LLAGOSTA   B0
  B;       (BARCELONA)       B0
  B;                         B0P8

