Aller au contenu principal

Aide-mémoire Organigrammes

Les formes de Flowgorithm et les règles qui bloquent. Les schémas ne sont pas des images : ils se déroulent au clic, forme après forme.

Les sept formes, et ce que chacune impose

FormeCe qu'elle faitCe qu'elle exige
Main / EndPilules de début et de fin.Une seule paire par programme. Une fonction a les siennes, à son nom.
DeclareCrée une variable et fixe son type.Avant toute utilisation. Types : Integer, Real, String, Boolean.
AssignRange le résultat d'un calcul dans une variable.La variable doit exister, et le type doit convenir.
InputLit une saisie.La variable qui reçoit doit être déclarée.
OutputAffiche une expression.Rien de particulier.
IfUn losange, une condition.Deux branches : False à gauche, True à droite. Elles se rejoignent.
While / For / DoRépéter.La condition doit pouvoir devenir fausse.
CallAppelle une fonction qui ne rend rien.La fonction doit être définie.

Le plus petit programme qui fasse quelque chose

Organigramme, tel que l'affiche Flowgorithm
Exécuter comme dans Flowgorithm, en continu ou forme par forme.
MainString messagemessage = "Contrôle démarré"Output messageEnd

Déclarer, affecter, afficher. Dérouler la figure pas à pas et suivre la valeur de message dans la console.

Lire, calculer, afficher

C'est la charpente de presque tout premier programme : ce qui entre, ce qu'on en fait, ce qui sort.

Organigramme, tel que l'affiche Flowgorithm
Exécuter comme dans Flowgorithm, en continu ou forme par forme.
MainInteger palettesInteger parPaletteInteger totalInput palettesInput parPalettetotal = palettes * parPaletteOutput "Colis à expédier : " & totalEnd

Trois déclarations, deux saisies, un calcul, une sortie. Dérouler et observer que rien ne s'affiche avant la dernière forme.

Décider

Le losange a deux sorties, et elles se rejoignent toujours avant la suite.

Organigramme, tel que l'affiche Flowgorithm
Exécuter comme dans Flowgorithm, en continu ou forme par forme.
FalseTrueMainInteger nInput nn % 2 = 0Output "Impair"Output "Pair"Output "Vérification terminée"End

Un test à deux branches. La dernière forme est commune aux deux chemins : c'est ce que veut dire « les branches se rejoignent ».

Répéter

Organigramme, tel que l'affiche Flowgorithm
Exécuter comme dans Flowgorithm, en continu ou forme par forme.
TrueFalseMainInteger iInteger sommesomme = 0i = 1i <= 5somme = somme + ii = i + 1Output "Somme de 1 à 5 : " & sommeEnd

Une boucle qui compte jusqu'à cinq. Dérouler et regarder i et somme changer à chaque tour : c'est la ligne « i ← i + 1 » qui permet à la boucle de s'arrêter.

Les trois pièces d'une boucle
Une initialisation avant d'entrer, une condition qui décide de continuer, et une modification à l'intérieur qui rapproche de la sortie. Une boucle qui tourne indéfiniment a presque toujours perdu la troisième : la condition porte sur une variable que le corps ne change jamais.

Les règles qui bloquent l'exécution

La règleCe qui arrive si on l'oublie
Déclarer avant d'utiliserLe programme s'arrête sur la forme fautive.
& colle du texte, + additionne"Total : " + n échoue ; "Total : " & n fonctionne.
/ rend toujours un réel7 / 2 vaut 3.5. Rangé dans un Integer, il perd sa partie décimale.
= compare dans un If, affecte dans un AssignLes deux ne s'échangent pas.
Une boucle doit pouvoir s'arrêterSinon elle tourne jusqu'à l'interruption.
De haut en bas, en suivant les flèchesIl n'y a pas d'autre ordre d'exécution.

Ce qui se trompe le plus souvent

Le piègeCe qu'il faut faire
Un Integer pour une moyennedéclarer Real dès qu'une division intervient
= au lieu de , ou l'inverse= compare dans un If, affecte dans un Assign
+ pour coller du texte&, le + n'additionne que des nombres
Une condition de boucle écrite à l'enversdérouler la figure d'un pas pour le voir
Une variable utilisée avant d'être déclaréetoute variable passe par un Declare
Le cas limite oubliévérifier pour zéro, pour un, et pour un négatif

Un Integer pour une moyenne. Le calcul est juste, le rangement le tronque. Déclarer Real dès qu'une division intervient.

Le test d'égalité sur un Real. Deux calculs qui devraient donner le même nombre à virgule ne le donnent presque jamais exactement. Comparer un écart à un petit seuil.

La condition de boucle écrite à l'envers. tantque i > 5 avec i valant 1 n'entre jamais dans la boucle, et le programme paraît ne rien faire. Dérouler la figure d'un pas suffit à le voir.

L'oubli du cas limite. Une boucle « de 1 à n » avec n valant 0 ne doit pas tourner. Vérifier le comportement pour zéro, pour un, et pour une valeur négative.

Du dessin au code

Chaque forme a sa traduction, presque mot pour mot. C'est ce qui rend l'exercice utile : le schéma n'est pas une étape scolaire, c'est le brouillon du programme.

OrganigrammePython
Declare Integer nrien à écrire, le type vient de la valeur
Input nn = int(input())
Assign total ← a * btotal = a * b
Output "x : " & nprint("x :", n)
If cond avec deux branchesif cond:else:
While condwhile cond:
For i de 1 à nfor i in range(1, n + 1)

Pour aller plus loin

Le parcours Flowgorithm déroule tout cela chapitre par chapitre, du premier organigramme jusqu'à concevoir, tester, traduire. Pour les mêmes notions écrites en pseudo-code plutôt que dessinées, voir Algorithmique.

Version imprimable : les tables de syntaxe seules, sur une feuille.

Les autres aide-mémoire sont sur cette page, et les exercices dans Pratiquer.