Qu’est-ce qu’un algorithme : la programmation par les bases

Quand on commence à s’intéresser à la programmation, on entend parler d’algorithme à tout bout de champ. Des phrases du genre « arrêtez de vouloir choisir un langage à tout prix, la base c’est l’algorithmique ». Cette assertion est parfaitement juste. Pourtant, on a toujours envie de passer directement à la pratique. En fait, un algorithme n’est autre que l’étape préliminaire à l’écriture du code. En musique, ce serait le solfège. Et toi ce que tu veux, c’est taper un solo de guitare. Ou du moins mettre la disto de ton Marshall sur 11 pour t’auto-persuader que ce riff sonne exactement comme sur le CD.

Bref, tu as compris, l’algorithmique n’est peut-être pas la partie du code la plus excitante, mais si tu ne l’apprends pas, tu n’iras pas bien loin. Aujourd’hui, on te dit ce qu’est un algorithme, à quoi il ressemble et pas mal d’autres petites infos utiles pour en comprendre les enjeux.

Qu’est-ce qu’un algorithme, définition simple

Pour rester simple, la définition d’un algorithme pourrait être :

Suite d’instructions ordonnées utilisant des données connues pour trouver un résultat.

On vous avait prévenu, ce n’est pas si compliqué. L’algorithme est donc une espèce de protocole, de marche à suivre qui permet d’utiliser l’informatique pour appliquer des formules mathématiques. Le tout produit des résultats non plus aussi abstraits que les formules à rallonge apprises par cœur à l’école, mais parfaitement concrets et utilisables dans le monde réel.

En gros, c’est la recette de cuisine qui va permettre à l’ordinateur de faire sa tambouille interne, puis de retourner des résultats adaptés.

  • Ingrédients = données connues (tu as une casserole, de l’eau et sais ce que c’est)
  • Recette à suivre = instructions ordonnées (tu ne peux pas dire à la machine d’égoutter les pâtes avant de les avoir jetées dans l’eau bouillante)
  • Bon petit plat = résultats retournés par ton programme (ton assiette de penne carbonara)

À quoi ressemble un algorithme ?

Tu l’as compris, un algorithme c’est une espèce de procédure permettant de calculer ce que l’on veut. Il faut donc, pour que l’ordinateur y comprenne quelque chose, la décomposer en une suite d’étapes simples.

Admettons que l’on cherche à écrire un algorithme dont le but est de calculer l’aire d’un cercle. Oui, tu as raison, c’est trivial et pas le truc le plus utile au monde, mais le but est de comprendre comment ça marche. Quand tu auras compris les bases, tu pourras programmer la prochaine fusée Ariane… Mais on n’en est pas encore là.

Si tu as tout bien suivi de tes cours de maths de ta petite enfance, tu te souviens que l’aire d’un cercle correspond à Pi, multiplié par le rayon au carré (A= π x r2). Par conséquent l’algorithme ressemble à quelque chose du genre :

  1. Que vaut r ? (valeur à entrer dans le programme9
  2. Calculer r2 (r x r)
  3. Multiplier le résultat par  π (3,14159)
  4. Retourner le résultat

Cette suite d’instructions, possible à dérouler à partir de la donnée connue « r », est précisément un algorithme. Dans ce cas précis, il retourne un résultat qui est la surface du cercle de rayon r.

Alors oui, c’est basique, très basique même. Mais imagine le pouvoir d’une suite d’instructions plus complexes ? Ou de ce même algorithme de calcul d’aire, mais appliqué au calcul de surfaces d’un très grand nombre de cercles. Un truc que tu n’aurais définitivement pas envie de calculer à la main comme, disons, la surface qu’il te faut au garage pour entreposer cette belle pile de bois :

Empilement de rondins - un algorithme serait bien utile au calcul de la surface utile à son rangement

Car c’est exactement à cela que te sert un programme informatique qui, rappelons-le, repose systématiquement sur un algorithme : automatiser des tâches et permettre des calculs qui seraient trop longs à effectuer à la main.

Comment écrire un algo digne de ce nom ?

Tu t’en doutes, notre petit exemple trivial du dessus ne va pas te permettre d’aller bien loin une fois face à ton écran. En fait, un algorithme est composé d’éléments qui sont toujours les mêmes. Eh oui, la programmation est pleine de normes et de conventions.

Du coup, pour écrire un algo digne de ce nom, il te faut connaître ces différents éléments et leur fonctionnement.

Variable

Comme son nom l’indique, la variable peut changer dans un algorithme. Dans notre exemple, notre variable est « r », le rayon. Pour chaque cercle dont on veut calculer l’aire, il nous faut d’abord indiquer à la machine la valeur de r. Dans une équation classique, la variable serait typiquement x ou y.

Une variable est donc représentée par une lettre, qui va prendre différentes valeurs au cours de l’utilisation du futur programme. Lorsque cette variable prend une valeur précise (calcul de l’aire d’un cercle d’un rayon de 3cm par exemple), elle stocke l’information relative (r = 3). Au fur et à mesure du déroulement de l’algorithme, une variable peut donc prendre différentes valeurs successives, stockées à tour de rôle afin de pouvoir être affichées au moment voulu.

Paramètre

Au contraire de la variable, le paramètre est fixé au départ. Il est donc constant et ne peut pas changer. Dans notre exemple, π est donc un paramètre, dont la valeur est fixée à 3,14159. Quel que soit le déroulement de l’algorithme et quelle que soit l’évolution des variables, notre paramètre ne change pas.

Alors oui, π peut comporter un nombre variable de décimales (3,14 Vs. 3,14159 Vs. 3,141592653589793238). Il faut cependant décider de la valeur que l’on décide d’utiliser, puis la fixer comme paramètre. Elle restera ensuite la même pour l’ensemble du programme. L’utilisateur ne peut la changer.

Valeur

Une valeur ou, plus précisément l’affectation de valeur, consiste à stocker une valeur dans une variable. Dans notre exemple, on stocke la valeur du rayon dans la variable r. Par exemple 3. Si on écrit ça proprement, ça donne quelque chose comme :

r <– 3

Facile, non ?

Avec ce jeu de variables, paramètres et la possibilité d’affecter des valeurs aux variables, un nouveau champ de possibles s’offre à toi ! Et comme on n’a pas envie de s’arrêter aux bases de la base de l’algorithmique, on te parle aussi de deux « outils » hyper puissants pour aller plus loin.

Un algo de pro grâce aux boucles et conditions

Dans la vie, tout n’est pas linéaire. Par conséquent, en algorithmique non plus. Parfois, différentes instructions sont à dérouler selon la situation (la valeur de la variable notamment). En algorithmique, c’est ce qu’on appelle (comme dans la vraie vie d’ailleurs) une condition.

Ça se traduit par quelque chose du genre :

Si condition = vrai

              Alors fais ceci

Sinon

              Fais cela

Exemple :

Si âge >= 18

              Voter = OK

Sinon

              Voter = Non

Si tu as tout suivi, l’âge est ici… une variable. Bien !

Voilà pour la condition. Au contraire, les boucles sont nécessaires lorsqu’une même instruction, ou suite d’instructions, doit être répétée.

Si on ne sait pas à l’avance combien de fois le programme doit répéter ses actions, le cas suivant se présente :

Tant que condition

              Instructions

Exemple :

Tant que nombre d’articles <6

              Entrer dans la cabine d’essayage = ok

Afficher : « Merci de ne pas entrer avec plus de 5 articles dans nos cabines »

Il se peut également que l’on souhaite répéter une ou plusieurs instructions un nombre de fois connu. Dans ce cas, on annonce au programme le nombre d’itérations :

Pour i compris entre x et x+10

              Instructions

Le programme va alors réaliser les mêmes instructions pour i=x, i=x+1, etc. jusqu’à i=x+10. Après avoir réalisé son dernier calcul, le programme sort de la boucle et affiche le résultat.

Pour conclure : l’algorithme est la base de la programmation

Tu l’auras compris, sans un algorithme digne de ce nom, il sera très difficile de passer à la rédaction du code. Apprendre l’algorithmique est donc la wild card du programmeur. Grâce à ces bases, tu apprends la logique derrière un programme. Tu peux à partir de là décomposer n’importe quel problème en suite d’instructions simples qu’il suffit de dérouler pour voir la magie opérer et les résultats tomber.

Le super pouvoir de l’algorithme ? Il te sert de base unique quel que soit le langage de programmation à utiliser pour la phase pratique d’écriture du code. Alors oui, il faut connaître le fonctionnement d’un langage pour l’utiliser. Pour autant, si tu sais écrire un algo digne de ce nom, du pourras beaucoup plus facilement le mettre en pratique dans un nouveau langage. Et même si tu te spécialises dans un seul et unique langage, il te permettra d’aller plus vite dans ton développement et de repérer plus facilement les sources d’erreur.

On risque donc de te reparler algorithmique dans de prochains articles !