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 ]
IHM de MoniaPL au lancement du programme (version Linux avec terminal intégré) :
![]() |
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 ]
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 ]
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 ]
MoniaPL utilise un format texte ISO8859 pour l'enregistrement des programmes. Les fichiers manipulés ont obligatoirement l'extension .pl.
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.
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).
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.
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 ]
Le menu
Édition
propose les commandes classiques d'annulation et de restauration des dernières actions.
[ Sommaire ]
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…) :
Constante
,Type
,Variable
) doivent commencer en colonne 1 ;[ Sommaire ]
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.
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 ]
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 ]
Le menu Recherche
permet d'effectuer des recherches ou des remplacements de parties de texte
dans le fichier en cours d'édition.
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.
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é…
MoniaPL propose aussi une commande d'accès direct à une ligne donnée.
[ Sommaire ]
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 ]
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 ]
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 ]
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.
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…).
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.
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 ]
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 ]
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 ]
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.
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.
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.
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).
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.
|
édition 23/11/2012 - Copyright © 2006-2012 Alain Menu |