Manuel d'utilisation de MoniaPL

Sommaire

Introduction

La première version de MoniaPL (pl2exe, version ligne de commandes DOS écrite en C) est née en septembre 1997, au sein du Département Informatique Industrielle du Lycée Technique La Fayette (France, 77430). L'objectif initial était de disposer d'un outil permettant aux étudiants de mettre en application les cours d'algorithmique, sans connaissance particulière d'un langage de programmation, mais tout en pouvant observer autrement que sur le papier le résultat de leur réflexion... et ce dès la première séance de travaux pratiques !

Courant 2006, l'application a été entièrement ré-écrite en C++ pour Windows (Trolltech Qt4 OpenSource), afin de proposer une interface graphique plus conviviale. Le principe général reste cependant le même : le Pseudo-Langage source est traduit en langage Pascal avant d'être compilé au moyen du produit libre Borland Turbo Pascal 5.5 (en version ligne de commandes). Toutes les étapes de la chaîne de développement sont volontairement masquées, l'utilisateur débutant a ainsi réellement l'impression de passer directement du Pseudo-Langage à un exécutable…

Depuis la version 0.9, actualisée suite au développement par le même auteur du module MoniaOrg qui permet de travailler en amont à partir d'organigrammes, MoniaPL utilise en arrière-plan le compilateur GPL Free Pascal, ce qui a favorisé la portabilité de la chaîne complète (MoniaSuite = MoniaOrg + Monia-PL) sous d'autres environnements tels que Linux ou Mac OS X.

Les versions actuelles sont toujours basées sur Qt4 OpenSource (Nokia) et FPC.

[ Sommaire ]

Description générale

Fenêtre d'application

IHM de MoniaPL au lancement du programme (version Linux avec terminal intégré) :

moniaorgihm

MoniaPL propose une interface homme-machine traditionnelle avec une barre de titre indiquant le fichier en cours, un menu déroulant, une barre d'outils et une barre d'état. L'espace principal de la fenêtre d'application est partagé entre la zone d'édition des programmes et la zone relative à la chaîne de développement.

Pour un utilisateur donné, la géométrie de l'interface et le dernier répertoire de travail utilisé sont sauvegardés d'une session à l'autre.

La barre d'outils supérieure reprend sous forme graphique les commandes essentielles du menu déroulant. Elle est constituée de 4 zones : fichiers, édition, recherche dans le texte et chaîne de développement.

La ligne d'état est la zone horizontale en bas de la fenêtre d'application ; elle est utilisée pour afficher des messages fugitifs (compte-rendu d'exécution de commande,…). Sa partie droite montre les coordonnées courantes du curseur texte et un sélecteur de taille permettant de modifier la taille de police de l'éditeur.

[ Sommaire ]

Aide et assistants

La commande F1 du menu d'aide ouvre la documentation relative à la syntaxe du langage reconnu par MoniaPL.

La commande F10 du menu d'aide permet d'accéder à la liste des types de données standards reconnus par le Pseudo-Langage accepté par MoniaPL. Cette liste est complétée le cas échéant avec les types apportés par les modules additionnels installés.

La commande F11 du menu d'aide montre quant à elle l'ensemble des ressources et opérateurs reconnus par MoniaPL ; cette liste est aussi complétée par les modules additionnels présents.

Le texte de ces boites d'assistance peut être sélectionné (via la souris) puis copié (Ctrl-C) afin d'être collé (Ctrl-V) dans les éléments graphiques ou dans les cellules de définition de données.

La commande  Aide | Aide sur MoniaPL  donne accès au présent manuel d'utilisation.

[ Sommaire ]

Modules additionnels

La commande  Aide | Modules additionnels  donne accès aux pages de documentation spécifiques à chacun des modules additionnels installés (plugins). Cette commande est inactive si aucun module n'est détecté par MoniaPL.

Lorsqu'un module additionnel est correctement installé, toutes ses ressources sont automatiquement prise en compte par la colorisation syntaxique, les assistants et la compilation.

[ Sommaire ]

Gestion de fichiers

MoniaPL utilise un format texte ISO8859 pour l'enregistrement des programmes. Les fichiers manipulés ont obligatoirement l'extension .pl.

filenew La commande  Fichier | Nouveau  permet de démarrer un nouveau programme. Le cas échéant, celui en cours est fermé avec proposition préalable de sauvegarde si nécessaire.

fileopen La commande  Fichier | Ouvrir  provoque l'apparition de la boîte de dialogue standard permettant de sélectionner un fichier .pl. Le répertoire proposé par défaut est le dernier répertoire utilisé comme source par le logiciel (répertoire de travail courant).

filesave La commande  Fichier | Enregistrer  permet la sauvegarde du programme en cours. Si le programme est sans nom, le logiciel ouvre la boîte de dialogue standard permettant de choisir un chemin de destination. MoniaPL dispose aussi de la commande  Fichier | Enregistrer sous  permettant notamment de sauvegarder le projet en cours sous un autre chemin.

fileprint La commande d'impression ouvre la boîte de dialogue standard de sélection d'une imprimante puis injecte le source en cours d'édition vers le périphérique sélectionné. Les informations suivantes sont ajoutées en tête de la sortie papier : nom du fichier source, nom de l'utilisateur, nom de la machine, date et heure d'impression.

[ Sommaire ]

Édition

editundo  editredo  Le menu  Édition  propose les commandes classiques d'annulation et de restauration des dernières actions.

[ Sommaire ]

Colorisation syntaxique

MoniaPL met en place une colorisation syntaxique destinée à faciliter les auto-corrections lors de la rédaction de programmes. Les catégories suivantes sont distinguées : les marqueurs de blocs, les déclarations et types de données, les structures fondamentales, les commentaires, les chaînes de caractères, les constantes, l'opérateur d'affectation et les ressources de la bibliothèque.

Certaines contraintes doivent être respectées pour que la colorisation soit effective (à noter qu'un défaut de colorisation n'induit pas forcément une erreur de syntaxe…) :

[ Sommaire ]

Presse-papier

Le texte sélectionné dans l'éditeur est mis en évidence (généralement par un fond bleu). Une sélection peut être effectuée par le clavier ou la souris, ou encore par la commande  Édition | Sélectionner tout  du menu.

editcut  editcopy  editpaste  Les commandes traditionnelles Couper-Copier-Coller mettent en oeuvre le presse-papier au sein de l'éditeur ou pour des échanges de texte avec d'autres applications.

[ Sommaire ]

Indentation des programmes

Il est fortement conseillé d'indenter les programmes pour en faciliter la relecture. Les tabulations de MoniaPL sont réglées pour cela à 4 caractères. Une indentation correspond à un décalage d'une tabulation vers la droite lors d'un début de bloc programme, la désindentation élimine ce décalage à la fin du bloc.

Les règles d'indentation sont les suivantes :

    indenter après la ligne       --->    désindenter à la prochaine ligne 
    commençant par...                     commençant par...

    DEBUT                         --->    FIN | FINPROG
    SI ... ALORS                  --->    SINON | FINSI
    SINON                         --->    FINSI
    TANT QUE ... FAIRE            --->    FINTQ
    REPETER                       --->    JUSQU'A CE QUE ...
    POUR ... JUSQU'A ... FAIRE    --->    FINP
    CAS ... PARMI                 --->    DEFAUT | FINCAS
    DEFAUT                        --->    FINCAS
    ENREGISTREMENT                --->    FIN
   

Toujours pour les mêmes raisons de lisibilité des programmes, il est recommandé d'aligner verticalement les déclarations qui suivent les annonces de types, constantes et variables.

À partir de la version 0.9, l'éditeur intégré de MoniaPL indente et désindente automatiquement les programmes au fil de la saisie ; en respectant les règles ci-dessus. Il est également possible de modifier l'indentation d'un bloc de lignes en les sélectionnant puis en utilisant les touches Tab ou Ctrl-Tab…

[ Sommaire ]

Recherche de texte

Le menu  Recherche  permet d'effectuer des recherches ou des remplacements de parties de texte dans le fichier en cours d'édition.

search  replace  Les commandes Rechercher et Remplacer provoque l'affichage d'une boîte de dialogue dédiée permettant de définir les conditions de la recherche. Lorsque la boîte de dialogue est validée, la première occurrence est montrée en surbrillance (cas d'une recherche) ou remplacée.

next  previous  Les commandes de recherche du suivant ou du précédent permettent de parcourir l'ensemble du fichier ; lorsqu'une extrémité du document est atteinte, la recherche se poursuit dans le même sens en partant de l'autre extrémité…

searchline  MoniaPL propose aussi une commande d'accès direct à une ligne donnée.

[ Sommaire ]

Chaîne de développement

Le menu  Exécution  regroupe les commandes permettant de passer du source écrit en Pseudo-Langage à un programme exécutable en ligne de commandes.

La commande de nettoyage permet de supprimer les fichiers générés précédemment par l'application, en prenant comme base de recherche le nom sans extension du fichier en cours d'édition.

[ Sommaire ]

Modules additionnels

La commande Exécuter | Modules liés permet de sélectionner les modules additionnels à prendre en compte pour la fabrication des programmes et la traduction en Pascal. La sélection est sauvegardée d'une session à l'autre. Cette option est particulièrement intéressante lorsque beaucoup de plugins sont installés, elle permet d'optimiser le temps de fabrication du programme et sa taille si tous ne sont utilisés.

[ Sommaire ]

Compilation

compil  La commande de compilation (Ctrl-F9) enchaîne la traduction en Pascal du source et sa compilation, la progression est montrée dans le tableau des messages. En cas de détection d'une erreur, un message (texte en rouge) donne la ligne contenant l'erreur et une description sommaire de celle-ci ; l'utilisateur peut alors localiser directement l'erreur dans le source en double-cliquant sur le message.

Les notes et avertissements n'interdisant pas la génération d'un exécutable sont signalés en bleu.

En cas d'issue correcte, un message précise la taille de l'exécutable généré et sa localisation ; le résultat est placé dans le répertoire de travail courant.

[ Sommaire ]

Exécution des programmes

Suivant les environnements, MoniaPL peut intégrer ou non un terminal d'exécution dans un deuxième onglet à côté de celui qui permet de suivre les phases de fabrication du programme.

exec  La commande Exécuter (F9) provoque le lancement du programme dans une fenêtre indépendante de type « terminal de commandes », celle-ci se referme dès l'appui sur une touche quelconque après la fin du programme. Cette technique ne permet donc pas de passer des arguments sur la ligne de commandes du programme… La fenêtre reste active tant que le programme est en cours, mais elle est remplacée si une autre commande Exécuter (F9) est invoquée.

Sous Mac OS X, la commande Exécuter ouvre une nouvelle fenêtre Terminal si aucune n'est active, ou utilise le cas échéant la première fenêtre ouverte.

La commande envoyée au terminal est précédée d'un changement de répertoire vers le répertoire de travail courant utilisé par MoniaPL.

L'exécution par F9 est par contre réalisée directement dans le terminal intégré lorsqu'il est présent, le répertoire actif par défaut est le répertoire $HOME de l'utilisateur. la commande est dans ce cas transmise avec un chemin absolu, il n'y a pas de changement de répertoire. L'utilisateur conserve toute liberté d'usage des commandes shell disponibles (notamment pour relancer le programme avec des arguments…).

terminal  Une autre méthode consiste à ouvrir un terminal indépendant (Ctrl-T). L'utilisateur est automatiquement placé dans le répertoire de travail en cours, il peut alors lancer son programme (ou toute autre commande reconnue par le système...) en tapant simplement son nom. À noter que ce terminal se comporte comme un processus indépendant, il est malgré tout détruit automatiquement lors de la fermeture de MoniaPL.

Il est possible de lancer plusieurs instances du terminal. Lorsque le répertoire de travail a changé, l'utilisateur doit fermer le terminal en cours et en ouvrir un nouveau (il peut aussi plus simplement naviguer dans les répertoires à partir du terminal existant...).

Lorsque le terminal est intégré, la commande Ctrl-T est absente.

stop  Cette commande n'est implémentée à ce jour que dans la version Android de MoniaPL. Elle permet à l'utilisateur de forcer l'arrêt du programme lancé (par exemple quand celui-ci s'est fourvoyé dans une boucle infinie… pas facile de faire un Ctrl-C sur un écran tactile !).

[ Sommaire ]

Traduction en Pascal

La commande de traduction simple vers le langage Pascal permet si nécessaire de récupérer le source fabriqué par MoniaPL à destination du compilateur FPC… Les fichiers d'extension .pas sont placés dans le répertoire de travail courant.

Cette fonctionnalité est particulièrement destinée aux développeur de modules additionnels…

[ Sommaire ]

Exemples de programmes

Le sous-répertoire exemples de MoniaSuite propose un certain nombre de programmes destinés à illustrer les possibilités du logiciel. Les programmes nommés demo_xx.pl sont des exemples généraux montrant les caractéristiques des différents types de données, ils sont repris dans le document nommé « Syntaxe du Pseudo-Langage » accessible par la rubrique d'aide de MoniaPL.

Les autres exemples sont de véritables petites applications...

[ Sommaire ]

Recherche des nombres premiers

nbprem.pl : Le programme assure la recherche puis l'affichage des nombres premiers jusqu'à N, en mettant en oeuvre la méthode du crible d'Érathostène. N est fixé sous forme de constante.

Principe : À partir de l'ensemble des entiers jusqu'à N, chaque fois qu'un nombre premier est détecté, on supprime de l'ensemble tous les multiples de ce nombre ; d'où le nom de crible ! Le programme met en oeuvre une boucle et les 2 types d'itération.

Exemples - [ Sommaire ]

Calculatrice complexe

nbcplex.pl : Un nombre complexe est exprimé sous la forme : <partie_réelle> + i.<partie_imaginaire>

Soit deux nombres complexes  C1 = a + i.b  et  C2 = c + i.d , les formules de calcul pour les opérations de base sont les suivantes :

    addition       C1 + C2 = ( a + c ) + i.( b + d )
    soustraction   C1 - C2 = ( a - c ) + i.( b - d )
    produit        C1 . C2 = ( ac - bd ) + i.( ad + bc )
    division       C1 * C2 = (( ac + bd )/( c2 + d2 )) + i.(( bc - ad )/( c2 + d2 ))

Le programme permet la saisie d'un premier nombre complexe, puis la saisie d'un opérateur (parmi +,-,*,/), et enfin la saisie d'un deuxième nombre complexe ; il affiche ensuite le résultat de l'opération… Le type Complexe est défini sous forme d'un enregistrement, la sélection de l'opération est assurée par une structure de choix multiple.

Exemples - [ Sommaire ]

Nombres en toutes lettres

nblettr.pl : Ce programme permet la saisie d'une valeur numérique entière et affiche celle-ci en toutes lettres. Le produit boucle jusqu'à ce que l'utilisateur entre la valeur zéro, il accepte toutes les valeurs entières dans l'intervalle d'un entier signé codé sur 32 bits. Comme par exemple :

    3400    --> trois mille quatre cents
    582     --> cinq cent quatre-vingt deux
    1024    --> mille vingt-quatre
    2700221 --> deux millions sept cent mille deux cent vingt et un
   

Les règles d'écriture sont les suivantes :

Le programme utilise un tableau de constantes pour définir les mots entre un et dix-neuf, la résolution est faite de propre en proche au moyen de procédures spécialisées par tranches de calcul.

Exemples - [ Sommaire ]

Numération romaine

romain.pl : Le système de numération Romain utilise les symboles M, D, C, L, X, V, et I. Chacun de ces symboles correspond à une valeur en base dix : 1000, 500, 100, 50, 10, 5 et 1. Un nombre exprimé dans ce système se lit de gauche à droite, sa valeur est égale à la somme des valeurs associées à chaque symbole.

En Romain Moderne, les symboles C, X, et I peuvent précéder un symbole de plus forte valeur ; dans ce cas, ils doivent lui être retranchés. Les cas possibles sont les suivants : C peut être placé devant M, X peut être placé devant L et C, I peut être placé devant V et X. Comme par exemple :

        décimal        Ancien Romain        Romain Moderne
        --------------------------------------------------
           4               IIII                   IV
           9               VIIII                  IX
          91               LXXXXI                 XCI
        1990               MDCCCCLXXXX            MCMXC
	

Le programme reçoit le nombre entier à convertir sur la ligne de commandes. Par défaut, le résultat est produit en Ancien Romain, l'écriture en Romain Moderne est obtenue en plaçant l'option -m sur la ligne de commandes (après ou avant le nombre à convertir).

Exemples - [ Sommaire ]

Le jeu de la vie

jeuvie.pl : Le mathématicien Conway a imaginé un jeu, dit « jeu de la vie », considérant des cellules susceptibles de se reproduire, de disparaître ou de survivre lorsqu'elles obéissent à certaines règles génétiques.

On considère un damier de taille arbitraire où chaque emplacement peut contenir une cellule ; chaque emplacement est donc entouré de huit autres emplacements susceptibles de recevoir une cellule. Les règles génétiques sont les suivantes :

Pour une génération donnée, toutes les morts et les naissances sont considérées simultanées.

Le programme reçoit en ligne de commandes le nombre de générations à simuler. Le damier est rempli aléatoirement (une cellule vivante est matérialisée par le code ASCII 79), puis les générations s'enchaînent en montrant alternativement le calcul de la nouvelle génération ( les cellules qui vont mourir en rouge et celles qui vont naître en vert...) puis l'état stable de cette génération (cellules vivantes en gris). Les figures géométriques obtenues sont parfois surprenantes...

Ce programme est un exemple d'utilisation des ressources liées à la gestion du terminal texte.

Exemples - [ Sommaire ]


 version 0.38.97

édition 23/11/2012 - Copyright © 2006-2012 Alain Menu