LARP

Le langage pseudo-code LARP

La syntaxe du langage pseudo-code de LARP est souple et intuitive, comme vous pourrez le constater dans la suite de ce document.

Pour illustrer cette syntaxe, voici un premier algorithme qui ne fait qu'afficher la chaîne de caractères Bonjour le monde! à l'écran :

\\ Pseudo-code tout bête!
DÉBUT
    ÉCRIRE "Bonjour le monde!"
FIN

Un algorithme LARP doit débuter par l'instruction DÉBUT. Cette instruction indique le point de départ de l'exécution de l'algorithme. L'instruction suivant DÉBUT (dans l'exemple précédent, ÉCRIRE "Salut le monde!") est la première instruction exécutée. Réciproquement, l'instruction FIN indique le point où l'algorithme se termine. C'est à ce point que l'exécution de l'algorithme cesse.

Syntaxe des instructions

Comme langage de programmation, LARP offre un ensemble d'instructions permettant de formuler du pseudo-code d'algorithmes. Ces instructions acceptent optionnellement un ou plusieurs arguments et leur syntaxe correspond à l'un des deux formats suivants :

instruction arg1, arg2, ...

ou

instruction (arg1, arg2, ...)

L'exemple ci-dessous utilise l'instruction ÉCRIRE afin d'afficher un résultat dans la console d'exécution. Une même instruction ÉCRIRE peut afficher plus d'un résultat :

\\ Pseudo-code moins bête
DÉBUT
    Résultat = MAXIMUM(12, 2, 9)
    ÉCRIRE "Maximum = ", Résultat
FIN

Comme on le constate dans l'exemple ci-dessus, l'instruction ÉCRIRE adopte la première forme de syntaxe alors que l'instruction MAXIMUM adopte la deuxième forme de syntaxe.

Langage polymorphe contextuel

Contrairement à la plupart des langages de programmation traditionnels (tels C++ et Java), le langage LARP est polymorphe contextuel. Ce terme signifie qu'un algorithme LARP n'a pas à définir au préalable ses variables en spécifiant explicitement leur type. Cette philosophie de programmation est couramment exploitée dans les langages de scriptage, tels Perl et Lisp. Ainsi, le type d'une variable dépend de son contenu, et de ce fait son type peut varier durant l'exécution de l'algorithme.

LARP supporte les valeurs entières et flottantes, les chaînes de caractères et les conteneurs (permettent de regrouper des valeurs de types variés) :

\\ Pseudo-code moins bête
DÉBUT
    Données = [12, 2, 9]
    ÉCRIRE "Maximum = ", MAXIMUM(Données)
FIN

Entrées/sorties

LARP dispose d'instructions pour la lecture de données (LIRE) et pour l'écriture de résultats (ÉCRIRE). Ces deux instructions permettent à un algorithme en exécution de lire des données via le clavier et d'afficher des résultats à l'écran :

\\ Pseudo-code additionnant deux valeurs lues
DÉBUT
    ÉCRIRE "Entrez deux nombres : "
    LIRE N1, N2
    ÉCRIRE "La somme de", N1, "et", N2, "est", N1 + N2
FIN

Une instruction (REQUÊTE) permet même d'écrire un libellé et de lire des valeurs simultanément.

Structures conditionnelles et répétitives

LARP supporte les principales structures conditionnelles (SI, SI-SINON, SI-SINON-SI) et les structures répétitives (TANTQUE, RÉPÉTER-JUSQU'À et POUR) généralement retrouvés dans les langages de programmation traditionnels :

\\ Pseudo-code affichant la moyenne de valeurs lues
DÉBUT
    \\ Lire le nombre de valeurs à traiter
    RÉPÉTER
        REQUÊTE "Combien de valeurs à traiter?", Nb
    JUSQU'À Nb >= 0

    \\ Y a-t-il un traitement à faire?
    SI Nb > 0 ALORS
        \\ Lire les valeurs et en calculer la somme
        Somme = 0
        POUR I = 1 JUSQU'À Nb FAIRE
            REQUÊTE "Entrez une valeur? ", Valeur
            Somme = Somme + Valeur
        FINPOUR

        \\ Afficher la moyenne des valeurs lues
        ÉCRIRE "Moyenne =", Somme / Nb
    SINON
        ÉCRIRE "Aucune valeur à traiter"
    FINSI
FIN

Programmation modulaire

Un algorithme LARP peut être divisé en modules, où chaque module est un pseudo-code ou un organigramme distinct. Dans un tel contexte, un seul de ces modules, le module principal, doit contenir les instructions DÉBUT et FIN. Les autres modules constituant l'algorithme sont appelés modules auxiliaires. Ceux-ci débutent par l'instruction ENTRER et se terminent par RETOURNER. Les modules auxiliaires peuvent accepter des paramètres et retourner un résultat :

\\ Module principal
DÉBUT
    LIRE Valeur
    ÉCRIRE 'La factorielle de', Valeur, 'est', Factorielle(Valeur)
FIN
\\ Module récursif FACTORIELLE
ENTRER X
    SI X = 1 ALORS
        Res = 1
    SINON
        Res = X * Factorielle(X-1)
    FINSI
RETOURNER Res

Fichiers et tampons d'entrées/sorties

Par défaut, les données sont lues via le clavier par un algorithme et sont affichées à l'écran. Dans certains cas cependant, un algorithme doit exploiter des données provenant d'autres sources que le clavier, ces données étant généralement stockées dans un document externe. Un algorithme peut aussi avoir à conserver les résultats produits dans un document externe.

LARP supporte deux types de documents externes permettant de stoker l'information :

  • Les tampons d'entrées/sorties sont des documents de données intégrés à un projet LARP. Ces documents permettent de lire et/ou écrire dans un document intégré au projet LARP sans avoir à se préoccuper des particularités du système de fichiers de l'ordinateurs (tels les noms et chemins de répertoire).
  • Les fichiers sont des documents de données généralement stocké sur le disque rigide de l'ordinateur (ou sur un autre ordinateur accessible via réseau).
\\ Module principal
DÉBUT
    \\ Ouvrir un tampon en mode lecture sur un canal (3)
    OUVRIR TAMPON "DONNEES" SUR 3 EN LECTURE
    \\ Ouvrir un fichier en mode écriture sur un canal (5)
    OUVRIR FICHIER "C:\\RESULTATS.TXT" SUR 5 EN ÉCRITURE

    \\ Transcrire les données du tampon au fichier
    TANTQUE NON FINDECONTENU(3) FAIRE
        LIRE Valeur DE 3
        ÉCRIRE Valeur DANS 5
    FINTANTQUE

    \\ Fermer les documents ouverts
    FERMER 3, 5
FIN

Les pseudo-codes ci-dessus brossent un bref aperçu des caractéristiques du langage LARP. Pour une description détaillée du langage, consultez l'aide en ligne de LARP, aussi disponible via le Web. Notez que les algorithmes présentés ici peuvent aussi être implantés sous forme d'organigrammes.