Algoriz, outil graphique de conception d'algorithmes Sur une idée originale de Eric Tourbeaux, artiste peintre
Algoriz, éditeur d'algorithme rythmé par des boucles !
Algor est un éditeur original d'algorithmes originaux basé sur la boucle de traitement répétée ou pas.
Il se veut complet aux niveau des fonctionnalités : possibilité de définir un algorithme puis de la tester. Mais pas exhaustif : une variable non déclarée ne sera signalée que par une erreur d'exécution. Les saisies seront peu vérifiées : au concepteur de bien réfléchir et de porter attention : il s'agit de responsabiliser le développeur. Il se veut intuitif.
conception d'algorithmes (programmation impérative, procédurale) : déclaration de variables, calcul et affectation, entrées-sorties, structures de contrôles de test et de répétition, instructions graphiques
exécution d'algorithmes : trace d'exécution, évolution des valeurs des variables
exportation vers différents langages de programmation : c/c++/etc.
exportation vers une représentation graphique Autocad DXF
Réalisation
Langage Java
Diagramme de classe partiel
Lancement de l'application
Pré-requis
disposer sur son ordinateur du JRE (Java Run-Time Environment) version 1.8 ou +. Le JRE est généralement installé
Lancer l'exécution du fichier téléchargé : une fenêtre de sécurité Java est affichée : accepter l'exécution...(auto certification gratuit - outils proposé par l'environnement Java)
*** MAJ 2021/01/05 ***Télécharger le fichier les codes sources : codes sources .algor (extraire les fichiers dans un dossier...)
Utilisation
Principes généraux
Trois actions d'interface sont disponibles :
simple clic pour sélectionner un composant de l'algorithme
double clic pour accéder aux informations spécifiques du composant
clic-droit pour avoir accès à plus d'options
Les boutons de la barre d'outils sont accessibles d'un clic ou d'une combinaison de touches Alt+une lettre.
l'algorithme comme un sac de noeuds...
L'algorithme peut être représenté sous forme d'un arbre, avec un noeud racine (mère ou père) et des noeuds fils, qui peuvent être à leur tour noeuds mère ou père. L'algorithme sera représenté sous forme d'un sac de noeuds ! Le terme 'noeud' sera utilisé pour désigner un composant de l'algorithme :
le noeud principal, c'est le sac qui contient tous les autres noeuds
d'autres noeuds qui peuvent être noeuds mère ou père : itération déterminée (pour) ou indéterminée (tantque), la condition (si alors sinon)
des noeuds terminaux (feuilles) qui représentent les opérations élémentaires : lire (saisir), ecrire (afficher), affecter, et un noeuds pour jouer avec le morpion dessinateur.
Les données
Chaque donnée est identifiée par un nom et un type de données lui est asocié :
types
On y trouve les types suivants :
entier : naturels ou relatifs
réel : nombres avec décimales (séparateur décimal : le point)
caractere : nombre représentant un valeur de caractère
booleen : valeur logique, vrai/faux
(chaine : suite de caractères)
Les données peuvent être soient élémentaires ou organisées en tableau ayant de 1 à 3 dimensions.
L'accès aux tableaux utilise la notation C/C++/Java : tab1[i], tab[i][j], etc.,
le premier indice commence à 0 et s'arrête à (nombre d'éléments - 1)
accessibilité
Une donnée définie dans un noeud est accessible à l'intérieur du noeud et aux noeuds fils.
Une variable définie dans le corps d'une boucle ne sera pas accessible au test d'entrée de boucle et devra être définie au niveau supérieur pour servir de variable de boucle.
Par défaut, seul le noeud principal peut déclarer des données.
Les primitives ou noeuds
opérations élémentaires ou simples boucles unitaires non répétées, non conteneur
le AFFECTER une valeur à une variable
variable <-- valeur,
où :
variable est le nom d'une variable accessible complétée éventuellement par des valeurs d'indices, ces dernières pouvant être des valeurs littérales, des variables ou des expressions calculées
valeur est la valeur qui sera rangée dans la variable (et qui remplacera la valeur précédente) : pouvant être une valeur littérale, une variable ou une expression calculée
Expression de calcul numérique
Les opérateurs classiques :
+ : addition
- : soustraction
* : multiplication
/ : division
% : modulo (reste de la division entière)
des fonctions intégrées : Math.sqrt(v), Math.sin(a),Math.cos(a)
La constante numérique :
Math.PI
Expression de calcul logique
Les opérateurs relationnels (ou de comparaison) : chaque expression doit être encadrée par des parenthèses
= : égalité
!= : différence
< : inférieur
<= : inférieur ou égal
> : supérieur
>= : supérieur ou égal
Les opérateurs logiques: chaque opérateur logique doit être entouré d'espaces
et
ou
non
Un soin devra être apporté la l'écriture des expressions logiques : un espace devra entourer les opérateurs logiques et,ou et non. Ainsi on écrira :
((tab[i]<0) et (j<15)) ou (x = 0)
le LIRE et stocker une valeur saisie à partir du clavier
LIRE variable1, variable2, ..., variable10
pour lire successivement de 1 à 10 valeurs qui seront affectées respectivement aux variables variable1, variable2, ..., variable10
le ECRIRE pour afficher une valeur à l'écran
AFFICHER valeur1, valeur2, ..., valeur10
pour afficher successivement de 1 à 10 valeurs, chacune pouvant être une valeur littérale, une variable accessible ou un expression calculée
le RETOURNER pour quitter l'exécution et renvoyer éventuellement une valeur (dans le cas d'une fonction)
RETOURNER valeur1
pour DESSINER, un certain nombre d'actions d'accès à la surface de dessin
effacer : nettoyer la surface de dessin
lever : lever le crayon pour se déplacer sans écrire
baisser : baisser le crayon pour écrire en se déplacant
avancer d : avancer d'une distance d, d étant une valeur littérale, une variable ou une expression calculée(*)
tourner a : tourner d'un angle a (exprimé en degré) dans le sens trigo (antihoraire), a étant une valeur littérale, une variable ou une expression calculée(*)
cercle r : cercle de rayon r, r étant une valeur littérale, une variable ou une expression calculée
ellipse rh rv : ellipse de rayon horizontal rh et de rayon vertical rv, rv et rh étant des valeurs littérales, des variables ou des expressions calculées(*)
(*)Attention : les expressions calculées pour dessiner ne doivent pas contenir d'espaces (l'espace est un séparateur de paramètres)
Structures de contrôles, noeuds conteneurs
itérations ou boucles répétées, conteneur
POUR
POUR variable DE debut A fin PAS DE pas
où
variable est la variable de boucle, c'est une variable qui doit être définie dans un noeud ancêtre
debut est la valeur initiale de la variable de boucle, c'est une valeur littérale, une variable accessible ou un expression calculée
fin est la valeur terminale de la variable de boucle, c'est une valeur littérale, une variable accessible ou un expression calculée
pas est la valeur du pas d'incrémentation de la variable de boucle, c'est une valeur littérale, une variable accessible ou un expression calculée
Le corps de la boucle est répétée si et tant que la variable de boucle est inférieure ou égale à fin.
TANTQUE / TQ
TQ (condition)
où
condition est la condition de poursuite de l'exécution du corps de la boucle. Elle est testée une première fois AVANT d'entrer dans la répétition et elle est testée ensuite après chaque répétition.
Le corps de la boucle est répétée si et tant que la condition de poursuite de la boucle est vraie.
REPETER ... TANTQUE / RTQ
RTQ (condition)
où
condition est la condition de poursuite de l'exécution du corps de la boucle. Elle est testée APRES chaque répétition.
Le corps de la boucle est exécuté une fois, puis répété tant que la condition de poursuite de la boucle est vraie.
conditions ou couples de boucles alternatives non répétées, conteneur
le couple SI /SINON
SI (condition) (bloc si vrai) (bloc si faux)
où
condition est la condition qui détermine l'exécution unitaire soit du bloc si vrai soit soit du bloc si faux, c'est une valeur littérale (true ou false), une variable booléenne accessible ou un expression logique