La première version de MoniaOrg est née en décembre 2008, au sein du Département Informatique et Réseaux du Lycée Technique La Fayette (France, 77430). Son développement vient en complément de l'outil MoniaPL, du même auteur, permettant l'apprentissage de la programmation structurée sous forme de Pseudo-Langage compilable et exécutable.
MoniaOrg permet la construction graphique d'organigrammes avec contraintes : seules les structures fondamentales sont autorisées.
L'outil est donc capable d'illustrer l'aspect fonctionnel d'une application logicielle simple, mais propose aussi d'en assumer l'aspect informationnel en permettant de définir l'ensemble des données requises par l'application (la définition des données est en effet difficilement représentable graphiquement).
L'application ainsi créée peut être exportée sous forme de programme source Pseudo-Langage exploitable par l'outil MoniaPL.
L'ensemble des deux outils constitue donc une sorte d'AGL (Atelier de Génie Logiciel) trivial permettant d'appréhender la chaîne complète allant de l'analyse initiale jusqu'à l'exécution effective d'un programme...
MoniaOrg peut aussi être utilisé comme simple éditeur graphique d'organigrammes, avec cependant un avantage par rapport aux outils de dessins vectoriels traditionnels : le respect obligatoire des fondements de la programmation structurée !
[ Sommaire ]
IHM de MoniaOrg au lancement du programme :
MoniaOrg 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 de construction graphique des organigrammes et la zone de gestion des données associées.
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 zone de dessin permet la construction graphique de l'organigramme. Elle présente par défaut les étiquettes de Début
et de Fin
du programme principal ; le nom d'onglet de ce bloc programme, visible en bas de fenêtre, n'est pas modifiable.
Chaque sous-programme créé ensuite par l'utilisateur donne lieu à l'ajout d'une nouvelle page graphique accessible par un nouvel onglet.
Chaque feuille graphique possède sa propre pile de mémorisation alimentée au fur et à mesure de la construction de l'organigramme.
L'utilisateur a la possibilité de revenir en arrière grâce à la commande Édition | Annuler
.
La partie droite de la fenêtre d'application est relative à la gestion des données du programme en cours. Elle peut être
masquée par la commande Outils | Mode fonctionnel seul
.
Cette zone comporte deux onglets en partie haute : le premier donne accès à la page des informations générales du projet, le second concerne le bloc fonction visible dans la partie graphique, que ce soit le programme principal ou un de ses sous-programmes.
Chaque page est elle-même divisée en plusieurs zones repliables ; il suffit de cliquer sur un des titres pour accéder aux données correspondantes.
La barre d'outils supérieure reprend sous forme graphique les commandes essentielles du menu déroulant. Elle est constituée de 3 zones : fichiers, édition et éléments graphiques.
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 regroupe la commande et la valeur courante de zoom, une palette de couleurs, et un sélecteur de taille de texte.
Le zoom peut aussi être commandé le cas échéant au moyen de la molette de la souris combinée avec l'appui sur la toucle Ctrl
du clavier.
La valeur de zoom affichée concerne la fenêtre graphique active, elle peut varier entre 50 et 300%.
La palette de couleurs permet de modifier la couleur de fond de l'élément sélectionné. Le sélecteur de taille concerne la taille du texte de ce même élément. En cas de sélection multiple, c'est le dernier élément de la sélection, et uniquement lui, qui est affecté.
Dans le cas d'une boucle, la colorisation s'applique automatiquement aux 3 étapes Initialisation - Condition de poursuite - Évolution.
La commande F1
donne accès au présent manuel d'utilisation de MoniaOrg.
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.
[ Sommaire ]
Les étiquettes Début
et Fin
sont mises en place par le logiciel. Les ancres, représentées par des petits ronds
pleins entre les éléments graphiques, indiquent les emplacements où il est possible d'étendre l'organigramme.
Une ancre peut être sélectionnée par un clic gauche, ou par un clic droit qui fait surgir un menu contextuel approprié. L'ancre sélectionnée apparaît cerclée de rouge.
Une fois sélectionnée, une ancre peut être remplacée par un élément à choisir parmi :
étape de traitement (symbole par défaut) |
étape de sortie (affichage/écriture fichier) |
étape d'entrée (saisie clavier / lecture fichier) |
|||
alternative |
itération à condition initiale |
itération à condition finale |
|||
boucle |
choix multiple |
appel de sous-programme |
L'étape d'appel de sous-programme ne doit concerner que ceux effectivement présents sous forme d'organigrammes annexes et pas les appels aux ressources de la bibliothèque de base...
Le contenu texte des éléments est modifiable par simple clic gauche sur la zone qu'il occupe (le texte apparaît alors encadré par un trait pointillé).
Le texte des éléments est libre (sauf pour les boucles et les sélecteurs de choix multiples qui bénéficient de leur propre commande de paramétrage) ; il convient cependant de respecter une syntaxe particulière si l'organigramme réalisé doit donner lieu à une traduction en langage évolué pour compilation et exécution... Pour une traduction à destination de MoniaPL, il convient donc de respecter la syntaxe du Pseudo-Langage reconnue par celui-ci. (e texte entre accolades par défaut des éléments est un commentaire dans ce langage…).
La sélection d'un unique élément se fait par simple clic gauche sur le cadre de celui-ci ; l'élément sélectionné est alors mis en évidence par un fond bleuté.
Les structures fondamentales comportent toutes une étape test (losange) destinée à contenir une condition booléenne. La sélection de cette étape test (par un clic gauche sur le cadre du losange) met en évidence par un fond bleuté l'ensemble de la structure concernée. Pour un choix multiple, cette règle s'applique uniquement lors de la sélection de la condition du premier cas.
Si la sélection unique est réalisée par un clic droit, le menu contextuel des actions possibles liées à l'élément est affiché.
Le mécanisme de sélection multiple est sensiblement différent : il n'est possible qu'en balayant une zone avec la souris tout en maintenant le bouton gauche appuyé.
Attention : MoniaOrg n'accepte de sélectionner ensemble que des éléments appartenant au même enchaînement.
Les éléments sélectionnés sont là encore mis en valeur par un fond bleuté.
Chaque ancre ou élément sélectionné seul peut se voir attribuer un commentaire attaché graphiquement par une ligne pointillée. Le contenu texte des commentaires est modifiable par simple clic gauche sur la zone qu'il occupe (le texte apparaît alors encadré par un trait pointillé).
Les commentaires peuvent être masqués ou affichés par la bascule Outils | Afficher les commentaires
.
Un commentaire attaché à une ancre est assimilable à un commentaire pleine ligne dans un programme source, tandis qu'un commentaire relatif à un élément représente un commentaire de fin de ligne.
Les commentaires sont par défaut alignés à droite du graphe, tout en laissant à l'utilisateur la possibilité
de les déplacer verticalement en cas de chevauchement. Cette justification à droite peut être désactivée par la bascule
Outils | Aligner les commentaires
.
Les éléments sélectionnés peuvent être supprimés de l'organigramme par Édition | Supprimer
.
MoniaOrg gère une page graphique non visible destinée à jouer le rôle de presse-papier, cette page est commune à toutes les feuilles graphiques du projet en cours et permet de déplacer une sélection d'éléments d'un endroit à un autre. La sélection peut ainsi être coupée et placée dans le presse-papier, elle est détachée de l'organigramme en cours.
Ces opérations peuvent être annulées par Édition | Annuler
, sans affecter le contenu du presse-papier.
La commande Édition | Copier
place une copie de la sélection dans le presse-papier. L'organigramme
courant reste inchangé.
Si une ancre est sélectionnée, la commande Édition | Attacher
attache une copie du contenu
du presse-papier en lieu et place de cette ancre ; le contenu du presse-papier reste inchangé, il peut donc être à nouveau attaché
à un autre endroit.
[ Sommaire ]
Sur un organigramme, une boucle est représentée par une étape interne d'initialisation suivie d'une itération à
condition initiale dont le dernier élément de l'enchaînement représente l'étape d'évolution. Par défaut, la variable de boucle
est nommée index
, et le nombre de passages est défini par l'intervalle 0..N
inclus.
L'accès à la configuration d'une boucle est réalisé par un clic droit sur le cadre de la condition de poursuite puis par sélection de la
commande Configurer la boucle
. La boite de dialogue spécialisée permet de modifier le nom de la variable de boucle, la
valeur initiale, la valeur finale et l'évolution. Le diagramme est automatiquement mis à jour avec les nouvelles valeurs.
Attention : La déclaration de la variable de boucle entière, que son nom soit modifié ou non, est à la
charge de l'utilisateur. De même, lorsque les valeurs initiale et finale ou l'évolution sont indiquées sous forme de mnémoniques,
ceux-ci doivent être définis par l'utilisateur dans la zone des constantes de l'application (c'est notamment le cas de N
utilisé
par défaut comme valeur finale).
Sur un organigramme, un choix multiple est représenté par une cascade d'alternatives dont la dernière branche
à droite représente le traitement par défaut. L'insertion d'une telle structure est matérialisée par une unique condition de test
représentant le premier cas traité par le choix multiple. Le sélecteur est nommé par défaut select
et la valeur de
comparaison est représentée par le mnémonique CAS1
.
L'ajout d'un cas dans la structure est possible grâce à la commande Édition | Ajouter un cas
ou directement via le menu contextuel lorsque la condition du premier cas est sélectionnée.
Les nouveaux cas reprennent le nom du sélecteur en cours et une valeur de comparaison du style CASx
.
La suppression d'un cas ne peut se faire qu'en sélectionnant l'élément test du cas concerné, grâce à la commande
Édition | Supprimer le cas
ou directement via le menu contextuel.
L'accès à la configuration de la structure est réalisé par un clic droit sur la condition du premier cas puis par sélection de la
commande Configurer le choix multiple
. La boite de dialogue spécialisée permet de modifier le nom de la variable
sélecteur et les valeurs de comparaison des cas disponibles. Le diagramme est automatiquement mis à jour avec les nouveaux choix.
Attention : La déclaration de la variable sélecteur, que son nom soit modifié ou non, est à la charge de
l'utilisateur. De même, lorsque les valeurs de comparaison sont indiquées sous forme de mnémoniques, ceux-ci doivent être définis
par l'utilisateur dans la zone des constantes de l'application (c'est notamment le cas des CASx
utilisés par défaut).
Les quatre éléments simples Traitement
, Sortie
, Entrée
et Appel de sous-programme
peuvent être échangés entre eux. Lorsqu'un de ces éléments est sélectionné, la commande Édition | Convertir en
devient disponible et permet de changer le type de l'élément. Le texte de l'élément n'est pas modifié par cette action.
Le menu Édition
propose une commande d'ajout d'un sous-programme qui provoque la création d'un nouveau diagramme dans
un nouvel onglet de la zone graphique. Le sous-programme créé est nommé par défaut Fonction..
et son élément terminal porte le
label non modifiable Retour
.
La suppression d'un sous-programme concerne toujours le sous-programme actif (celui dont l'édition est en cours). Cette commande est inhibée lorsque l'utilisateur travaille sur le programme principal, celui-ci ne devant en aucun cas être supprimé… Le logiciel demande une confirmation avant de supprimer effectivement la page.
Attention : Il n'est pas possible d'annuler une création ou une suppression de sous-programme.
Lorsqu'un sous-programme est construit, il doit logiquement faire l'objet d'un appel à partir d'une autre fonction de l'application (pour des applications simples, il s'agit souvent de la fonction principale). Cet appel doit être matérialisé par la mise en place du symbole dédié à cela (rectangle à doubles barres verticales).
[ Sommaire ]
Les données globales (constantes, types utilisateur, variables) et les données propres à une fonction
(sous-programme) telles qu'arguments et variables locales sont définissables grâce à la boite de dialogue située en partie
droite. Un assistant, invoqué par F10
, permet d'obtenir la liste des types disponibles.
Les différentes pages des zones de définition des données Programme
et Fonction
sont commutables en cliquant
sur leur nom.
L'onglet Programme
permet de définir l'ensemble des données globales à l'application. La première ligne de saisie
concerne le nom du programme : celui-ci est totalement indépendant du nom du fichier XML de sauvegarde du projet MoniaOrg,
il s'agit du nom utilisé en entête dans le cas d'une exportation en Pseudo-Langage.
Les données globales sont ensuite organisées en cinq rubriques :
Ajouter
et Supprimer
. Cette page donne aussi accès, via
le bouton Types utilisateur
, à la fenêtre de définition des types non standards…Variables globales
: page de définition des variables globales. Une variable globale est une
variable visible et utilisable aussi bien par le programme principal que par les autres sous-programmes de l'application ; en
programmation, elle est définie au début du programme, en dehors de tout bloc de code. Chaque définition est constituée au minimum
d'un identificateur et d'un type (qui doit exister), elle peut aussi comporter une valeur d'initialisation et un commentaire particulier.
La liste des définitions est gérée par les deux boutons Ajouter
et Supprimer
.[ Sommaire ]
La fenêtre de gestion des types non standards est accessible à partir du bouton Types utilisateur
de la rubrique
Définitions globales
. Chaque définition de type est constituée d'un identificateur qui représente un alias, un tableau,
un enregistrement ou une énumération ; et peut se voir associer un commentaire particulier. La liste des définitions est gérée par
les deux boutons Ajouter
et Supprimer
.
L'ajout d'une nouvelle déclaration crée une ligne supplémentaire dans la liste située à gauche, avec comme nom
par défaut nouveau
. Charge reste à l'utilisateur de remplacer ce nom par l'identificateur de son choix et de sélectionner la forme
correspondante ; la boite à onglet de droite permet alors de définir les caractéristiques du type :
Chaque dimension est indiquée par un nombre entier (qui peut être représenté par un mnémonique) ou éventuellement par une borne inférieure et une borne supérieure. Dans ce dernier cas et pour des raisons de compatibilité, la taille réelle du tableau est cependant toujours égale à la borne supérieure + 1, quelle que soit la valeur de la borne inférieure…
Une taille fixée à N est donc équivalente à borne inférieure = 0 et borne supérieure = N-1.
À noter que le type d'un champ peut être n'importe quel type existant sauf le type enregistrement en cours de définition. Il est par contre tout à fait possible de définir un champ de type pointeur sur son propre type enregistrement…
À noter qu'il faut absolument que le sous-ensemble soit au final ordonné dans l'ordre des valeurs croissantes.
[ Sommaire ]
L'onglet Fonction
permet de définir l'ensemble des données relatives à la fonction en cours d'édition, que ce soit
le programme principal ou un sous-programme mis en place par l'utilisateur. La première ligne de saisie concerne le nom de la
fonction
, sa modification entraîne automatiquement la mise à jour de l'étiquette graphique de début et de l'onglet de la zone de
dessin. Le nom du programme principal, tout comme son étiquette de début, ne sont cependant pas modifiables.
Si la fonction retourne une valeur (c'est donc bien une fonction et non une procédure selon les termes utilisés
par le Pseudo-Langage), l'utilisateur doit spécifier le type de retour, appelé aussi type de la
fonction ; ce type doit exister. Dans le cas contraire, la zone de saisie peut être laissée vide
ou contenir la chaîne "<aucun>"
.
Les données sont ensuite organisées en trois rubriques :
Ajouter
et Supprimer
.Ajouter
et Supprimer
.[ Sommaire ]
La commande Outils | Vérifier les données
déclenche un audit permettant à l'utilisateur de vérifier la validité des
déclarations effectuées. Cet audit contrôle les déclarations globales de constantes et de variables, les types définis par
l'utilisateur, et les déclarations inhérentes à la fonction en cours d'édition ; il est notamment capable de signaler les erreurs
suivantes :
Le bilan de la vérification est présenté dans une fenêtre modale indépendante.
[ Sommaire ]
MoniaOrg utilise un format natif XML pour l'enregistrement des projets. Les fichiers manipulés ont obligatoirement l'extension .xmo.
Note importante : À partir de la version 0.38, le codage XML des fichiers .xmo a évolué pour prendre en charge les nouvelles fonctionnalités du logiciel. MoniaOrg est néanmoins capable de charger les projets créés avec une version plus ancienne.
La commande Fichier | Nouveau
permet de démarrer un nouveau projet. Le cas échéant, le projet 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 .xmo. 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 projet en cours. Si le projet est sans nom,
le logiciel ouvre la boîte de dialogue standard permettant de choisir un chemin de destination. MoniaOrg 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 diagramme courant (en cours d'édition) vers le périphérique sélectionné. L'organigramme produit est nettoyé de toutes les ancres servant à la construction, sa taille globale est adaptée de manière à apparaître totalement sur une feuille du format de papier sélectionné via le pilote d'impression. Les informations suivantes sont ajoutées en tête de la sortie papier : nom du programme et de la fonction, nom de l'utilisateur, nom de la machine, date et heure d'impression.
[ Sommaire ]
La commande Fichier | Exporter au format PNG
permet à l'utilisateur de fabriquer une image du diagramme
en cours d'édition. L'organigramme produit est nettoyé de toutes les ancres servant à la construction.
La boite de dialogue standard de sauvegarde de fichiers est utilisée sur le répertoire par défaut, avec un filtre sur les fichiers d'extension .png. Cette extension est automatiquement ajoutée au nom de fichier choisi le cas échéant.
[ Sommaire ]
La commande Fichier | Exporter au format ODG
permet à l'utilisateur de générer un rapport ODF
(Open Document Format) du projet courant. Le rapport est présenté sous forme d'un document LibreOffice Draw avec une page
pour chaque diagramme et une page supplémentaire reprenant les données de la vue informationnelle.
La boite de dialogue standard de sauvegarde de fichiers est utilisée sur le répertoire par défaut, avec un filtre sur les fichiers d'extension .odg. Cette extension est automatiquement ajoutée au nom de fichier choisi le cas échéant.
Remarque : Sous LibreOffice Draw, les connecteurs ne suivent pas obligatoirement le chemin qu'ils occupent sur le diagramme MoniaOrg ; l'utilisateur peut donc être amené à les reprendre " manuellement "… Pour conserver ensuite leur tracé, il est aussi préférable de convertir ces mêmes connecteurs en Polygones avant de Copier-Coller un organigramme vers un autre outil tel que le module Writer de LibreOffice…
[ Sommaire ]
La commande Outils | Traduire en Pseudo-Langage
permet à l'utilisateur de générer le source
PL correspondant à la construction d'organigrammes en cours.
La boite de dialogue standard de sauvegarde de fichiers est utilisée sur le répertoire par défaut, avec un filtre sur les fichiers d'extension .pl. Cette extension est automatiquement ajoutée au nom de fichier choisi le cas échéant.
Si le projet en cours respecte les conventions d'écriture du Pseudo-Langage, le fichier généré peut être ouvert avec l'outil connexe MoniaPL afin d'être compilé puis exécuté…
[ Sommaire ]
MoniaOrg dispose d'un système de sauvegarde automatique périodique du projet en cours. Si l'application est fermée anormalement en cours d'utilisation, elle doit(1) proposer lors de son relancement de récupérer le projet précédent. Le cas échéant, le projet ainsi récupéré est considéré sans nom ; charge à l'utilisateur de l'enregistrer sous le nom désiré.
Note(1) : MoniaOrg utilise le sous-répertoire tmp de son chemin d'installation pour stocker les informations de sauvegarde automatique ; le bon fonctionnement du système est donc lié à l'intégrité de cet emplacement.
[ Sommaire ]
Le sous-répertoire exemples de MoniaSuite propose quelques démonstrations des possibilités du logiciel…
Ces exemples peuvent être des résultats d'analyse de niveau 1 décrits sous forme textuelle, ou directement correspondre à de véritables programmes exportables vers MoniaPL pour être compilés et devenir exécutables.
La suie, issue du ramonage des cheminées à bois, est un engrais azoté. Elle peut être utilisée en agriculture à raison de 1/6 de m3 par are, mélangée avec 2 à 3 fois le même volume de terre. Sachant que la suie coûte 2,50 € l'hectolitre, que le mètre cube de suie pèse 1205 kg et que les frais de transport s'élèvent à 3,90 € la tonne plus un forfait de 15 € à chaque rotation du camion (équipé d'une benne de 12 m3), quelle est la dépense à faire pour amender N hectares de champs ?
Cet exemple montre une résolution basée essentiellement sur un enchaînement de calculs, sans structure itérative particulière. Une attention particulière doit cependant être portée sur le choix du type et de l'unité de chaque variable utilisée…
amendement_2.xmo : Cet organigramme est directement exprimé sous forme d'instructions compatibles avec la syntaxe du Pseudo-Langage. Toutes les données du problème sont reprises sous forme de constantes. Toutes les déclarations sont accompagnées d'un commentaire. Le diagramme peut être traduit en Pseudo-Langage à partir de MoniaOrg, puis compilé et exécuté au moyen de l'outil connexe MoniaPL.
Connaissant l'âge d'un père et celui de son fils, déterminer si le fils aura un jour un âge égal exactement à la moitié de celui de son père avant que celui-ci ne dépasse 90 ans ; et si oui, quel âge aura alors le père ?
perefils_1.xmo : Cette première version est le résultat de l'analyse du problème exprimée de manière littérale. Elle ne peut donner lieu directement à la génération d'un programme source mais permet de formaliser précisément l'algorithme à développer.
perefils_2.xmo : Cette deuxième version est cette fois exprimée sous forme d'instructions compatibles avec
la syntaxe du Pseudo-Langage ; les âges respectifs du père et du fils sont récupérés sur la ligne de commande, et la vue
informationnelle est complétée par les déclarations nécessaires : variables agep
, agef
entières,
et continuer
booléenne ; constante AMAX
initialisée à 90. Le diagramme peut donc être traduit en
Pseudo-Langage à partir de MoniaOrg, puis compilé et exécuté au moyen de l'outil connexe MoniaPL.
Cette application assure la résolution d'une équation du second degré de la forme f(x) = ax2 + bx + c, à partir des valeurs réelles des coefficients a,b et c. Elle effectue tous les tests nécessaires dans l'espace réel afin de produire un résultat explicite, notamment dans le cas d'une équation dégénérée avec solution impossible ou indéterminée...
equation2deg_1.xmo : Cette première version est le résultat de l'analyse du problème exprimée de manière littérale. Elle ne peut donner lieu directement à la génération d'un programme source mais permet de formaliser précisément l'algorithme à développer.
equation2deg_2.xmo : Cette deuxième version est cette fois exprimée sous forme d'instructions
compatibles avec la syntaxe du Pseudo-Langage ; la vue informationnelle est complétée par la déclaration des variables
requises (a
, b
, c
, delta
, x1
et x2
). Le diagramme peut donc
être traduit en Pseudo-Langage à partir de MoniaOrg, puis compilé et exécuté au moyen de l'outil connexe MoniaPL.
Dans une entreprise, le calcul des congés payés annuels respecte les règles suivantes : Si une personne est entrée dans l'entreprise depuis moins d'un an, elle a droit à deux jours de congés payés par mois de présence, sinon elle a droit à 28 jours au minimum. Un cadre d'au moins 35 ans avec une ancienneté supérieure à 3 ans bénéficie de 2 journées supplémentaires. Tout employé se voit accorder 4 jours de congés supplémentaires s'il est âgé d'au moins 45 ans et si son ancienneté est supérieure à 5 ans.
Connaissant l'âge, l'ancienneté et le statut (cadre ou non) d'une personne, déterminer le nombre de jours de congés payés auquel elle peut prétendre.
conges payes_2.xmo : Cette version est directement exprimée sous forme d'instructions compatibles avec la syntaxe du Pseudo-Langage. Le diagramme peut donc être traduit en Pseudo-Langage à partir de MoniaOrg, puis compilé et exécuté au moyen de l'outil connexe MoniaPL.
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...
jeuvie_2.xmo : Cet exemple reprend, sous forme d'organigramme, celui livré sous forme de source PL avec MoniaPL… Il montre les possibilités de MoniaOrg en terme de gestion des sous-programmes et de déclaration de types non standards. L'organigramme est directement exprimé sous forme d'instructions compatibles avec la syntaxe du Pseudo-Langage.
Attention : Le programme utilisant les ressources liées à la gestion du terminal texte, l'utilisateur doit
prendre soin de remplacer, avant compilation, le mot clé DébutProg
du programme principal par Début
afin d'obtenir un résultat satisfaisant lors de l'exécution.
dumpd'un fichier
Tout fichier, quel que soit son type (texte, code exécutable, image, son, vidéo, …) est constitué d'une suite linéaire d'octets. Ces octets peuvent correspondre à des caractères affichables ou non. Il peut être intéressant de disposer d'un outil permettant de visualiser le contenu d'un fichier, indépendamment de son format (par exemple pour rechercher un tag ID3 à l'intérieur d'un fichier mp3, ou les éléments cachés par un format de fichier propriétaire,…).
dump.xmo : Ce projet montre, sous forme d'analyse compatible avec le Pseudo-Langage, un programme acceptant en argument de la ligne de commande un nom de fichier et assurant le "vidage" sur la sortie standard (l'écran) de son contenu. Les octets sont montrés sous leur forme hexadécimale et ASCCI lorsque cela est possible… Ils sont regroupés par lignes de 16 octets et par pages de 16 lignes. Le projet peut être traduit en Pseudo-Langage à partir de MoniaOrg, puis compilé et exécuté au moyen de l'outil connexe MoniaPL.
version 0.38.97 |
édition 23/11/2012 - Copyright © 2006-2012 Alain Menu |