Forth Valid XHTML 1.1Cette page est conforme à la norme CSS!Mise à jour 04-2002
SOMMAIRE

Présentation
    Principe
    Syntaxe rapide
Les exemples détaillés
Les outils et liens
Télécharger les exemples
PRESENTATIONRetour en haut de page

Les principes

Forth est un langage interprété déjà ancien, qui fonctionne aujourd'hui sous Windows aussi bien que Linux, pour les plus connus. Il y a eu au cours du temps des versions pour de multiples systèmes.

Son fonctionnement repose sur la pile et l'auto-définition du vocabulaire.

La pile

Le principe de la pile est celui-ci :
Pour calculer 1 + 2     On écrit 1 2 +

Toutes les instructions sont conçues de la même manière : on prend les opérandes sur la pile, qui disparaissent, et le calcul retourne le résultat au sommet de la pile.

Par rapport à d'autres langages ce mode de fonctionnement est inhabituel et exige un effort de compréhension et une gymnastique intellectuelle car il faut prévoir d'empiler au bon moment des données qu'il faudra récupérer plus tard.

Grâce à ce mécanisme très simple dans son principe, quoiqu'un peu difficile à maîtriser, on obtient des programmes compacts et rapides.

L'auto-définition

Il existe un vocabulaire de base. Ecrire un programme revient à étendre le vocabulaire en créant des mots à partir des existants.
Les mots créés peuvent à leur tour être intégrés dans le vocabulaire de base et viennent ainsi augmenter le langage.
C'est aussi le moyen de créer des fonctions portables entre différents environnements, soit en les renommant, soit en les redéfinissant.
Description sommaire de la syntaxe

Les mots-clés exposés ci-dessous correspondent à l'interpréteur tf83. Pour certains mots, d'autres interpréteurs peuvent avoir des appellations différentes.

Manipulation de la pile

La pile étant l'élément essentiel du forth, un certain nombre de fonctions existent pour la traiter.
dup     duplique le sommet de la pile
drop   efface le sommet de la pile
swap   échange les deux nombres au sommet de la pile
over   recopie le 2ème élément au sommet de la pile
rot   déplace le 3ème élement au sommet de la pile
n roll   effectue une rotation des n+1 éléments situés en haut de la pile (2 roll est équivalent à rot)
Affichage

.   affiche à l'écran le sommet de la pile
."   affiche à l'écran le texte qui suit
emit   affiche à l'écran le caractère dont le code ascii est au sommet de la pile. Peut servir à envoyer directement les séquences escape ascii pour contrôler l'écran (effacement, position, couleur, ...)
spaces   affiche à l'écran un nombre d'espaces
cr   envoie un retour à la ligne
Structure

Forth fournit aussi des mots pour créer des boucles (do, begin), réaliser des tests (if, case) ...

Variables

Outre la pile, on peut bien entendu stocker des données sous forme de variables.
Lorsqu'on invoque une variable, Forth retourne sur la pile son adresse en mémoire; celle-ci permet ensuite d'accéder aux octets stockés.

Un premier programme

Le programme demande deux nombres et affiche leur produit. On l'appelle par 2 4 produit

Commande Action Etat de la pile
2 4 les 2 valeurs sont empilées à l'inverse de la saisie 4 2
produit appelle la fonction produit définie ci-après 4 2
: produit définit le nouveau mot. ; termine la définition  
swap échange des deux éléments 2 4
dup duplique le 1er élément avant de l'afficher 2 2 4
. affiche 2 2 4
." fois " affiche le mot fois 2 4
swap dup . échange, duplique et affiche 4 4 2
." = " affiche = 4 2
swap remet dans l'ordre la pile (facultatif dans le cas de multiplication) 2 4
* calcule le produit 8
. affiche le résultat 8  
L'interpréteur

Un programme Forth s'exécute par le biais d'un interpréteur. Celui-ci peut travailler de deux manières :
  • interactivement
    L'interpréteur demande les instructions au clavier et les exécute immédiatement
  • en mode différé
    Un programme est un fichier texte, édité par notepad par exemple, avec l'extension fth. Pour le charger en mémoire, utiliser la commande include fichier.fth.
    Lancer alors l'exécution en appelant les mots chargés.
Quelques mots permettent de gérer le vocabulaire des mots chargés.
Mot Action
words Liste les mot existants
see xxxx Affiche la définition du mot xxxx
include charge de nouveaux mots à partir d'un fichier
forget xxxx efface le mot xxxx et tous ceux qui ont été définis ensuite

LES EXEMPLES DETAILLESRetour en haut de page

Les quelques exemples ci-dessous permettent d'appliquer les fonctionnalités de Forth. Quatre sont très simples, le dernier est un jeu un peu plus complexe.

Exemples simples

Tests de boucles (boucles.fth)
Test de boucles do/loop et begin/until.

Calcul du carré d'un nombre (carre.fth)
Boucles et manipulation de la pile.

Tapez les commandes
include carre.fth
3 carre1
5 carre2


Division euclidienne de 2 nombres (division.fth)
Appel de fonction.

Tapez les commandes
include division.fth
7 3 division


Différentes solutions (variante.fth)
Présente plusieurs manières de résoudre différents problèmes de gestion de la pile. Déroulement expliqué point par point.

Tapez les commandes
include variante.fth
variante



Jeu des cases (cases.fth)

Le jeu affiche un panneau de 3x3 cases. Certaines sont vertes, d'autres rouges. Le but est d'obtenir toutes les cases vertes, sauf celle du centre. Pour ceci, en indiquant le n° d'une case, on inverse sa couleur ainsi que celle de ses voisines.

Les fonctions mises en oeuvre dans ce programme :
  • utilisation de variables,
  • utilisation de constantes,
  • utilisation de tableaux,
  • affichage de couleurs,
  • tests, boucles, choix multiples
Exécuter par
include cases.fth
jeucases


LES OUTILS ET LIENSRetour en haut de page

Interpréteurs

Turbo_forth 83. Console DOS. Ficher tf83.exe.
Disponible gratuitement en téléchargement.

Kforth. Console DOS

Il existe aussi des interpréteurs sous environnement graphique Windows.