El Primer Programa

Esta primera sección del seminario le ayudará a programar un ordenador. Si ya ha programado un ordenador antes, entonces puede preferir volver a la introducción.

Los ordenadores son capaces de realizar las tareas más sorprendentes, pero sólo si se les da instrucciones detalladas y totalmente precisas. Creemos que Forth es un medio simple y natural de hacer esto.

Hemos añadido algunas palabras básicas necesarias para construir las distintas luces de un semáforo -
RED RED-&-YELLOW GREEN YELLOW ( rojo, rojo y ambar, verde, ambar ) - las cuatro fases de la secuencia (como se utilizan en el Reino Unido).

Teclee una de estas palabras y pulse la tecla Enter para ver lo que dicha palabra hace. El ordenador añade un OK final, para indicar que la palabra ha terminado sin problemas. (Pulse siempre la tecla Enter para terminar una línea - esto no volverá a mencionarse).

Observe que escribimos RED-&-YELLOW y no RED & YELLOW, para que forme una única palabra. Igual que en español, los espacios separan las palabras.

Ahora construya esta secuencia en una palabra "paraguas": PHASES (fases). Esto lo hacemos usando : (dos puntos) antes y ; (punto y coma) después, como en

   : PHASES  RED RED-&-YELLOW GREEN YELLOW ; 

(El ordenador responderá a las instrucciones que no comprenda con ? en vez de OK, generalmente porque la instrucción no fue completamente exacta. Simplemente pulse Enter y tecléela correctamente.)

Ahora que ha construido la palabra PHASES, puede utilizarla igual que hizo antes con las palabras RED y GREEN. Pruébelo ahora introduciendo

   PHASES

y verá que ejecuta la secuencia esperada.

Para completar nuestro semáforo, la secuencia debe repetirse hasta que se apague. Consiga esto construyendo TRAFFIC-LIGHT (semáforo) como una palabra que repite PHASES una y otra vez utilizando

   : TRAFFIC-LIGHT  LAMP-POST BEGIN PHASES AGAIN ; 

BEGIN (comienzo) y AGAIN (otra vez) son palabras estandar en Forth. Pruébelo ahora introduciendo

   TRAFFIC-LIGHT

Vea como se repite indefinidamente y termínela pulsando la tecla Esc.

¡Enhorabuena!
- ¡Acaba Vd. de programar un ordenador por primera vez!

Moviendo la información

Si desea ver como RED, GREEN y las otras palabras fueron construidas, eche un vistazo a sus definiciones. Mantenemos éstas en "bloques" de texto, en este caso: Para ver el bloque 2, pulse 2 LIST (listar). (Explicaremos los detalles más tarde.)

Fíjese que LIST 2 causará ?.(Pruébelo.)

Con unas pocas excepciones (como :), todas las palabras son independientes, comunicándose con el resto a base de dejar números en la Pila. La Pila es un simple contenedor para mantener números y funciona como una bandeja de entrada, en el sentido de que el número más reciente está siempre arriba.

Cuando introduce 2 LIST, Vd. da instrucciones al ordenador para

Como todas las palabras Forth, LIST toma los números que necesita de la Pila. Si no hay ningún número esperando, obtenemos la respuesta ?.

Utilice la palabra INDEX (índice) para ver la primera línea de varios bloque de texto. Liste ahora la primera línea de los bloques del 2 al 5 mediante 2 5 INDEX ...

Observemos ahora más aténtamente la Pila. La palabra .S significa imprimir la pila y muestra todos los números en la Pila desde abajo hasta arriba.

Introduzca 2 5 .S para comprobarlo.

Ahora introduzca INDEX para repetir el comando anterior.

Tomando el control

Este semáforo funciona a una velocidad fijada por el valor contenido en una ubicación llamada %WAIT (% de espera). Introduzca 2 LIST para ver como %WAIT fue creada con la palabra VARIABLE e inicializada a 100 con la palabra de almacenamiento !.

Confírmelo leyendo el valor con ? introduciendo

%WAIT ?

La palabra de almacenamiento ! simplemente almacena un número en una ubicación. Ahora cambie la espera a un 50 % para conseguir que el semáforo funcione el doble de rápido. Haga esto introduciendo

50 %WAIT !  y  TRAFFIC-LIGHT

! toma tanto el número como la ubicación de la Pila. Para recordar la secuencia, los documentos Forth describen ! como
! ( N L -- ).
Este "comentario de pila" ( N L -- ) recuerda que "! toma la ubicación L de la Pila y después el número N".

Para INDEX, un comentario de pila apropiado podría ser
INDEX ( BloqueInicial BloqueFinal -- )

Esto termina la primera sección del Kit de Arranque - para la segunda sección, pulse aquí .