La programmation procédurale
et quelques autres petites choses sympas...
Une addition quelconque...
Vous parlez ou écrivez sans être constamment en train de vous référer mentalement aux concepts que sont les mots, les phrases, la ponctuation, la grammaire, la syntaxe, la prosodie et la sémantique. Évidemment, vous avez acquis ces briques du langage par la pratique et vous les utilisez pour être compris sans vous en soucier à chaque instant.

En informatique, ce sont des concepts similaires qui vont rendre les programmes plus facilement compréhensibles. Ces concepts peuvent rebuter les néophytes s'ils sont exposés de façon uniquement technique. En faire un parallèle avec la façon dont nous nous exprimons va rendre les choses plus simples. Partons du texte suivant, il nous servira de repère :

Bob, le programmeur.
Bob (vous vous souvenez certainement de lui) a fait de grands progrès dans sa discipline. Recruté par Alice comme "programmeur apprenti stagiaire", il a su rapidement écrire des programmes entièrement bugués pour la compagnie Inedis(1). Ensuite, ayant eu connaissance de l'application ExoCode, il a pu faire d'immenses progrès. Cela est relaté dans la page "Les algorithmes".
(1) Célèbre fabricant de compteurs électriques.


Dico
En gros, on y retrouve des éléments comme un texte, un titre, des paragraphes, des phrases construites sur la base sujet-verbe-compléments, des mots, mais aussi des espaces, des virgules, des points, des passages à la ligne, des parenthèses, des guillemets, des renvois et des références à d'autres textes non présents sur cette page. Pour faire simple, il y aura donc des contenus (une phrase par exemple) et des contenants (à part la première, une phrase est en général comprise entre deux points par exemple).

Les programmes informatiques vont également utiliser des éléments comparables. Mais selon leurs propres besoins, ils vont être différents du langage écrit et même différents entre eux. Il faudra donc assimiler pour chaque langage la façon dont contenants et contenus vont se présenter.

Voyons ça de plus près avec un programme écrit pas à pas dans un langage imaginaire (mais proche de beaucoup d'entre eux). Ce programme devra additionner des oranges et des bananes et présenter le résultat de la façon suivante :

Comme on va utiliser quelques mots d'anglais, un petit dico vous est proposé ci-dessus au cas où.

Figure 1
La figure 1 présente une première ligne de code. Ici, oranges est un nom de variable à laquelle on va donner la valeur 3 (on suppose ici que le rôle de l'opérateur := est d'affecter des valeurs à des variables). Notez au passage la correspondance avec un simple texte de quelques mots : oranges (sujet) prend (verbe) la valeur 2 (complément). Si on veut continuer en affectant une valeur à une variable nommée bananes, cela pourrait donner la figure 2.

Figure 2
On voit tout de suite qu'il y a un problème. Quelle valeur est affectée à oranges ? 3 ? 3bananes ? 3bananes:=2 ?. Pour clarifier l'affaire, on va faire en quelque sorte des phrases. Mais on va utiliser le point virgule plutôt que le point. Cela évitera la confusion avec le point qui sert dans certains pays à séparer la partie entière de la partie décimale d'un nombre décimal. Cela a aussi l'avantage de rendre le code plus lisible, surtout si on rajoute des espaces et des passages à la ligne. Cela va donner la figure 3.

Figure 3
Jusqu'ici, on a affecté des valeurs numériques à des variables. Ce serait bien de traiter aussi des morceaux de texte. Si on veut afficher le nombre total de fruits de façon explicite, on va calculer ce total en le mettant dans la variable fruits et construire une phrase en vue de l'afficher (figure 4).

Figure 4
Notez qu'on aurait pu créer la variable texte avec une seule ligne, mais pour des raisons de rendu à l'écran, on s'est amusé à la construire en trois fois, l'opérateur += ajoutant à chaque fois un morceau de phrase à la variable texte.

Notez également la différence entre la variable oranges et le mot oranges qui va figurer dans la phrase finale. Pour différencier le mot de la variable, l'astuce va consister tout simplement à utiliser des guillemets pour représenter du texte, appelé aussi chaîne de caractères (string), et aucun guillemet pour représenter ce qui n'est pas du texte (variables, valeurs, instructions, etc.). Dans notre phrase on avait utilisé les guillemets pour une citation, ici, c'est un peu la même idée.

Figure 5
Pour l'instant, nous n'avons fait qu'affecter des valeurs numériques ou sous forme de chaîne de caractères alphanumériques à des variables, il serait temps d'afficher le résultat. Pour cela, notre pseudolangage va nous offrir deux solutions. La première affiche le résultat sans autre forme de procès (figure 5). Ici, echo est une instruction qui est censée afficher la valeur de la variable texte à l'écran.

Une autre, plus sophistiquée va faire appel à une procédure externe (figure 6).

Figure 6
Notez que si la procédure est au début, elle ne s'exécutera que si elle est appelée. Le programme va bien commencer à la ligne oranges := 3;. Remarquez également l'usage des parenthèses pour passer des valeurs à la procédure et inversement pour récupérer des valeurs dans la procédure. Cela ressemble beaucoup à notre renvoi en bas de page pour la compagnie Inedis dans notre phrase initiale. Notez enfin la présence des délimiteurs begin et end (début et fin) pour notre procédure.

Nous sommes maintenant entrés dans ce qu'on appelle la programmation procédurale. Cette façon de présenter le code en plusieurs morceaux (ou blocs) s'apparente un peu aux paragraphes dans les textes. Ils apportent de la facilité de lecture. Mais l'intérêt est ici bien plus grand : Notre procédure pourra être appelée de plusieurs endroits du programme et comporter autant d'instructions que nécessaire. Cela pourra alléger considérablement l'écriture des programmes.

Figure 7
Beaucoup de langages utilisent plutôt les accolades { } comme délimiteurs à la place de begin et end , c'est ce que nous ferons à partir de maintenant.

Figure 8
Supposons que la phrase à afficher ne doive pas dépasser 45 caractères, sinon l'affichage ne peut pas se faire. Ce serait bien d'en être informé.

Il va falloir que la procédure Affiche nous réponde. Comme elle ne peut pas le faire, on va la remplacer par une fonction.

Une fonction, comme en mathématique, c'est quelque chose qui peut renvoyer un résultat. Le code de la figure 7 va permettre à la fonction Affiche de renvoyer true (vrai) ou false (faux) en retour. Et dans ce dernier cas, notre programme nous informera du problème.

Enfin, il peut arriver que notre langage utilise des bibliothèques externes soit en propre, soit en faisant appel aux ressources du système de l'ordinateur sur lequel il va fonctionner. Ce seront des sortes de boîtes noires que le programmeur ne modifiera pas mais dont il utilisera les ressources.

Bon appétit (on a rajouté quelques variables)
Ici, dans la figure 8, le programme fera appel à la bibliothèque print qui pourra permettre d'utiliser la procédure echo par exemple

Souvenez-vous, dans notre phrase du début, on faisait référence à une autre page "Les algorithmes". C'est un peu la même chose ici avec l'inclusion de la bibliothèque (library en anglais, attention au faux ami !)

En résumé, l'appel à des procédures, à des fonctions et à des bibliothèques forme ce qu'on nomme la programmation procédurale (représentée modestement par les figures 6, 7 et 8 ) par opposition à la programmation séquentielle qui s'exécute de façon quasi linéaire (représentée encore plus modestement par les figures 1 à 5).

Notez enfin que les procédures sont parfois appelées routines, sous-routines ou sous-programmes dans certains langages et que les fonctions sont appelées "méthodes" en programmation orientée objet, ce que nous verrons un peu plus loin.

Sommaire - En savoir plus