# Flowgorithm

Flowgorithm est un outil de création et modification graphiques de programmes informatiques sous forme d'algorigramme. Il permet ensuite aux programmeurs d'exécuter ces programmes tout en pouvant en suivre graphiquement le déroulement .
Cette approche vise à mettre en avant les algorithmes plutôt que la syntaxe d'un langage de programmation spécifique. L'algorigramme peut être traduit en différents langages de programmation.
Flowgorithm est un langage et un environnement de programmation conçu pour être uniquement un instrument d'apprentissage.

## Origine du nom, licence et internationalisation

Flowgorithm est un « mot-valise » constitué de « Flowchart » et « Algorithm ». C'est un logiciel propriétaire distribué gratuitement (freeware). L'environnement et le langage sont traduits en chinois, tchèque, anglais, français, galicien, allemand, hongrois, italien, portugais, espagnol et japonais.

## Le langage

Flowgorithm propose la plupart des notions courantes que l'on retrouve dans les langages de programmation, aussi bien au niveau des instructions sous forme graphique que des expressions évaluables :
* Types de données : les entiers, les réels, les chaînes et les booléens
* Structure de données : tableau monodimension et monotype
* Variables : déclaration et affectation d'une valeur obligatoires
* Constantes : true, false et pi
* Opérateurs : arithmétiques, logiques, concaténation et comparaisons
* Structures de contrôle :
** Alternative : Test si sinon
** Boucles : "Tant que" à précondition, "Tant que" à post-condition, Boucle for
* Commentaires : il est possible d'ajouter des blocs de commentaires à l'Algorigramme
* Fonctions :
** Peuvent être appelées :
*** lors de l'évaluation d'une expression
*** par une instruction spécifique d'appel (valeur de retour ignorée)
** Passage des arguments par copie (aussi appelé par valeur)
** Fonctions prédéfinies : mathématiques, chaînes de caractères, conversion de type, tirage aléatoire et taille d'un tableau
** Une fonction Principale (Point d'entrée)
** Fonctions définies
*** 0…n paramètre(s) typé(s)
*** 0…1 valeur de retour typée
* Interface utilisateur :
** Une fenêtre de dialogue permet :
*** la saisie de valeurs affectées à des variables
*** l'affichage du résultat de l'évaluation d'expression
*** sous forme d'un dialogue type SMS

## Exemple d'algorigramme

Voici un exemple qui reprend la chanson 99 Bottles of Beer. Le programme est constitué de la fonction principale Main et d'une fonction bottle (Integer number) qui retourne une chaîne avec ou sans "s" à bottle :

## L'environnement de développement et d'exécution

Flowgorithm comprend une fenêtre principale pour :
* la construction de l'Algorigramme de la fonction principale ou et des autres fonctions définies
* l'exécution du programme en mode débogage (pas à pas) ou en contrôlant la vitesse d'exécution du programme
L'utilisateur peut choisir un style de diagramme en sélectionnant un jeu de couleurs et un type de figures parmi l'ensemble de ceux proposés par le logiciel.
et des fenêtres annexes affichables à la demande :
* Une fenêtre d'inspection des variables
* Une fenêtre de dialogue utilisateur
* Une fenêtre de code source généré :
** Flowgorithm peut générer en temps réel le code source correspondant au programme dans de nombreux langages de programmation : C#, C++, Delphi/Pascal, Java, JavaScript, Lua, Perl, Python, QBasic, Ruby, Swift 2, Visual Basic. NET et Visual Basic for Applications (utilisé dans Microsoft Office)

## Format de fichier .fprg

Les programmes en Flowgorithm ne sont pas des programmes volumineux et complexes ; ils ne nécessitent pas l'utilisation d'un format compressé et/ou binaire. Les fichiers sont stockés dans un format XML simple afin de faciliter le portage sur d'autres systèmes et de pouvoir être facilement utilisé par des outils tiers.