Leçons de niveau 12

Initiation à la programmation/L'algorithme

Une page de Wikiversité.
Sauter à la navigation Sauter à la recherche
Début de la boite de navigation du chapitre
L'algorithme
Icône de la faculté
Chapitre no 2
Leçon : Initiation à la programmation
Chap. préc. :Généralités
Chap. suiv. :Les variables en programmation
fin de la boite de navigation du chapitre
Icon falscher Titel.svg
En raison de limitations techniques, la typographie souhaitable du titre, « Initiation à la programmation : L'algorithme
Initiation à la programmation/L'algorithme
 », n'a pu être restituée correctement ci-dessus.

C'est l'outil que nous utiliserons pour décrire le comportement d'un programme.

Un algorithme est la description du comportement à l'aide de blocs fonctionnel élémentaire sur des valeurs (objets) connues.

L'algorithme est indépendant du langage de programmation.

Une fois l’algorithme écrit, il suffit au programmateur de le traduire dans le langage de programmation adéquat.

Règles d'écritures des algorithmes[modifier | modifier le wikicode]

Les algorithmes sont écrits en langage courant compréhensible par toute personne.

C'est un processus systématique, de résolution, par le calcul, d'un problème permettant de décrire les étapes vers le résultat.

Il se compose comme une suite finie et non ambiguë d'opérations permettant de donner la réponse au problème.

Les commentaires[modifier | modifier le wikicode]

Dans ce cours, ils encadrés par des accolades, {ceci est un commentaire}, ce n'est pas une règle générale.

Ils sont là uniquement pour renseigner le lecteur lorsqu'il prend connaissance de l’algorithme. Ils n'apportent rien au niveau du fonctionnement, mais sont très utiles lors de la maintenance par exemple. Ils spécifient à quoi correspondent les variables utilisées. Ils peuvent former une notice explicative.

Les blocs graphiques[modifier | modifier le wikicode]

On peut se servir de blocs graphiques pour décrire les différentes actions qui doivent avoir lieu. C'est un langage graphique pour débuter, mais ce type d'écriture devient rapidement lourde à manipuler. On préférera par la suite utiliser les structures de contrôles (ou de composition).

Start-end-flowchart-element.svg

Marque le début et la fin d'un bloc fonctionnel

General-input-output.svg

Description d'une opération d'entrée ou de sortie avec des modules de dialogue H/M.

Operation-flowchart-element.svg

Décrit une instruction.

Condition-flowchart-element.svg

Test, selon le résultat du test (exemple : A est bien égal à 2, test vrai, on continuera la série d'instructions qui part de la branche vrai ; inversement si A est différent de 2, test faux, alors on continuera la série d'instructions qui part de la branche faux) le bloc fonctionnel poursuit vers un chemin ou l'autre.

Les structures de contrôles (ou compositions séquentielles)[modifier | modifier le wikicode]

L'écriture d'un algorithme consiste à décrire de façon statique (du texte) le comportement dynamique d'un système. Pour ce faire nous disposons de trois possibilités :

  • enchainer les actions (exécution séquentielle) ;
  • choisir entre plusieurs solutions en faisant des tests ;
  • répéter les actions avec des boucles.

À savoir que de manière la plus générale, possible, le système se contente d'exécuter les instructions qu'il rencontre l'algorithme les unes à la suite des autres et ceux quelques soient la nature de ces instructions (boucle, test, etc.). On appelle cet chainement, la séquentialité.

La séquentialité (l'enchainement ou composition séquentielle)[modifier | modifier le wikicode]

Exécution inconditionnelle d'une suite d'instructions[modifier | modifier le wikicode]

Lorsque plusieurs instructions doivent être exécutées successivement, on donnera la suite de ces instructions dans l’ordre où elles doivent être exécutées.

Les actions seront portées sur des lignes successvies, (ou sur une même ligne) et seront séparés par le caractère « ; » qui a deux rôles :

  • indiquer la fin d'une instruction (on parle aussi de séparateur).
  • indiquer que le processus n’est pas fini.
L'algorigramme de l'algorithme exemple.
Début
    instruction 1 ;
    instruction 2 ;
Fin

Les instructions sont exécutées les unes à la suite des autres.

Les test SI (sélection)[modifier | modifier le wikicode]

Composition conditionnelle : exécution conditionnelle d'une action[modifier | modifier le wikicode]

On provoque certain événement que si la condition est remplie SI condition ALORS instruction(s). La condition est une proposition booléenne dont on vérifie la valeur « vrai » ou « faux », si « vrai », on exécute l'instruction suivante.

Symbole conditionnelle
SI condition (…)
    ALORS instruction 1 ;
… { fin de SIALORS … }

Si la condition est « vrai », alors l'instruction est exécutée. Sinon elle l'est pas.

Composition alternative : exécution conditionnelle de l’une des deux instructions[modifier | modifier le wikicode]

On provoque une instruction si la condition est vérifiée et une autre si elle ne l’est pas : SI condition ALORS instruction 1 SINON instruction 2.

Symbole alternative
SI condition (…)
    ALORS instruction 1 ;
    SINON instruction 2 ;
… { fin de SIALORSSINON … }

Si la condition est « vrai », alors l'instruction est exécutée. Sinon c’est l’instruction 2 qui sera exécutée.

Composition sélective : exécution conditionnelle de l’une parmi plusieurs instructions[modifier | modifier le wikicode]

Idem aux deux précédentes en un peu plus compliquée. Il faut respecter le fait que toutes les conditions s'excluent mutellement.

suivant indicateur faire
    valeur 1 : instruction 1 ;
    valeur 2 : instruction 2 ;
    …
    valeur n : instruction n ;
… { fin de suivant indicateur faire }

Il est nécessaire que le champ des valeurs recouvre tous les choix possibles, sinon il y aura une erreur (effet de bord). Une façon de palier à cela est d'ajouter :

valeur n : instruction n ;
    autre : instruction n + 1 ;
… { fin de suivant indicateur faire }

Les boucles (itération)[modifier | modifier le wikicode]

Composition itérative : exécution multiple d'une même instruction[modifier | modifier le wikicode]

On exécute l’instruction tant que la condition est vraie tant que condition (…) faire instruction.

Symbole tant que faire
tant que condition (…)
    faire instruction 1 ;
… { fin de tant quefaire … }

Tant que la condition est « vraie », alors l'instruction 1 est exécutée. Sinon elle finie.

Une boucle tant que n'est pas exécutée si la condition est fausse au départ, ainsi l’instruction ne sera pas faite.

Composition itérative : exécution multiple d'une même instruction ; autre forme[modifier | modifier le wikicode]

On provoque toujours la même instruction tant que la condition n'est pas remplie répéter instruction(s) tant que condition (…).

Symbole répéter jusqu'à
répéter instruction 1 tant que condition (…)
… { fin de répétertant que … }

On trouve aussi l'écriture

répéter instruction 1 jusqu'à condition (…)
… { fin de répétertant que … }

Tant que la condition est « vraie », alors l'instruction 1 est exécutée. Sinon elle finie.

L'instruction 1 est exécutée au moins une fois, à la différence de la boucle précédente, ce qui peut provoquer des erreurs, on préférea donc utiliser la première forme de boucle tant quefaire et non fairetant que.

Avec ces quelques structures de contrôle on peut faire déjà pas mal de chose en algorithme (puis en programmation). Mais rappelez-vous de la règle d'or : vos algorithme doivent être clair.