Les basesComment faire un algorithme ?

« Je n’ai pas besoin d’apprendre l’algorithmique, ce que je veux c’est coder ».

Beaucoup de développeurs qui débutent, veulent programmer directement avec un langage de programmation. En gros, ils apprennent le HTML / CSS et partent ensuite sur un langage de programmation.

Mais ils négligent une étape très importante : l’algorithmique.

En programmation, c’est vraiment la base. Une fois que l’on comprend et maîtrise l’écriture d’algorithmes, on peut se lancer dans n’importe quel projet et n’importe quel langage de programmation. En revanche, négliger cet apprentissage est vraiment une erreur et peut te faire perdre beaucoup de temps par la suite.

Dans cet article, je t’explique ce qu’est l’algorithmique, comment faire un algorithme, les comprendre et comment pratiquer pour y arriver. A la fin de l’article, tu trouveras quelques exercices à réaliser avec des difficultés variées.

Qu’est-ce qu’un algorithme ?

Que dit Wikipédia ?

Un algorithme est une suite finie et non ambiguë d’opérations ou d’instructions permettant de résoudre une classe de problèmes

https://fr.wikipedia.org/wiki/Algorithme

En gros, un algorithme représente une suite d’instructions qui vont être exécutés les unes après les autres dans le but de résoudre un problème précis.

Un algorithme doit pouvoir résoudre n’importe quel problème. C’est pour cela que l’on dit qu’il est possible de tout faire en programmation. Seules les caractéristiques techniques d’un langage limitent le développement.

Ok, mais concrètement, de quel problème on parle ?

Dans le cas de l’algorithmique, il faut voir les problèmes comme un but à atteindre ou un résultat à obtenir. C’est-à-dire que lorsque l’on souhaite arriver à un résultat précis, on va enchainer une suite d’instructions ou d’étapes pour arriver à ce résultat final.

Pour te montrer un exemple concret, nous pouvons prendre l’exemple de ton café le matin.

Le problème (ou plutôt résultat à obtenir) est de boire un café. Pour cela, tu vas réaliser plusieurs étapes :

  • Te lever de ton lit (c’est une des étapes les plus compliquées de cet algorithme 😉)
  • Mettre un filtre à café
  • Mettre du café
  • Si le réservoir d’eau est vide
    • Remplir le réservoir
  • Choisir le programme
  • Lancer le programme
  • Attendre 10 minutes
  • Servir le café

Voilà, nous avons créé l’algorithme pour boire un café. Tu vois, c’est plutôt facile !

Les algorithmes dans la vie de tous les jours

Avec cet exemple de café, tu peux voir que les algorithmes sont partout autour de toi dans la vie de tous les jours.

Toutes les étapes d’une journée, peuvent être schématiser sous forme d’algorithme. Que ce soit, conduire ta voiture pour aller au travail, faire ton repas, t’habiller, faire du sport, etc. …

Ainsi, pour apprendre l’algorithmique, tu peux commencer à t’entrainer avec des problèmes de la vie de tous les jours.

Prends un problème que tu résous dans ta journée, et essayes de créer l’algorithme de ce problème. Dans un premier temps, tu peux simplement faire une simple liste ordonnée des actions que tu réalises. Ex :

  1. Action 1
  2. Action 2
  3. Action 3

Tu peux aussi faire des actions conditionnelles : S’il y a ça, alors faire ça, sinon faire ça.

Les conditions sont très utilisées dans les langages de programmation donc n’hésite pas à les utiliser quand tu écrire tes algorithmes.

Je te donne un exemple avec le problème suivant : s’habiller

  • S’il pleut dehors
    • Prendre un manteau imperméable
  • Sinon
    • Prendre un pull

C’est aussi simple que ça !

Résoudre un grand problème en plusieurs petits problèmes

L’algorithmique c’est aussi résoudre de grands problèmes.

Lorsqu’un problème est trop complexe à résoudre en une seule fois ou en un seul algorithme, il faut le découper en plusieurs petits problèmes.

Mis bout à bout, tous ces petits algorithmes résoudront un grand problème. Il faut que tes algorithmes soient simples et compréhensibles. Il est toujours possible de redécouper un algorithme. Si tu vois que ton algorithme devient trop complexe, essayes de le découper plus finement.

Prenons l’exemple du fonctionnement d’une voiture. Le problème à résoudre serait de faire avancer une voiture.

Mais faire avancer une voiture requiert plein d’étapes différentes et de différents niveaux : fonctionnement du moteur, freinage, direction de la voiture, passage de vitesse, …

Ainsi nous pouvons découper ce problème en plein de petits problèmes. Nous pouvons par exemple commencer par : faire démarrer la voiture

  • Mettre la clé dans le contact
  • Vérifier qu’il n’y a pas de vitesse enclencher
  • Tourner la clé d’un quart de tour
  • Vérifier qu’aucun voyant ne reste allumé
  • Finir de tourner la clé jusqu’à ce que le moteur se mette en marche
  • Relâcher la clé

Ensuite nous pouvons faire l’algorithme pour passer une vitesse. Cet algorithme pourra être réutilisé à chaque passage de vitesse :

  • Si l’accélérateur est enfoncé
    • Le relâcher
  • Enfoncer la pédale d’embrayage
  • Passer la vitesse supérieure
  • Relâcher la pédale d’embrayage et accélérer en même temps

Ainsi, nous découpons notre problème majeur (faire avancer une voiture) en pleins de petits problèmes pour que cela soit plus facile à résoudre.

petits problèmes algorithmes

A ton tour ! Prends un problème plus complexe à résoudre et créé les différents algorithmes. Tu peux commencer par le découper en sous problème. Pour cela, tu peux te demander : Quelles sont les différentes étapes ?

Ensuite, rédige un algorithme pour chaque étape.

Comment faire un algorithme et où l’écrire ?

Comment faire un algorithme ?

Pour écrire l’algorithmie, il n’y a pas de méthode précise. L’algorithme est simplement un enchaînement d’instructions et de conditions (si, sinon, tant que, …).

Tu peux ainsi les écrire les unes sous les autres comme on vient de le faire précédemment.

2 méthodes sont tout de même reconnues pour la rédaction d’algorithme :

  • Le diagramme
  • Le pseudo code

Le diagramme

Un algorithme représenté sous forme de diagramme

Le pseudo code

Si la lampe est branchée
      Si l’ampoule est défectueuse
            Alors remplacer l’ampoule
      Sinon
            Remplacer la lampe
Sinon
      Alors brancher la lampe

Où écrire tes algorithmes ?

Tu peux écrire tes algorithmes sur une simple feuille de papier. Je trouve que le papier, te coupe de toute distraction et te permets de focaliser pleinement ton attention sur l’exercice.

Si tu fais l’exercice sur papier, une fois que tu as fini d’écrire ton algorithme, penses à l’essayer et le faire tourner plusieurs fois, et dans plusieurs cas, pour voir si tu palie à tous les cas de figures. Tu peux ainsi t’assurer qu’il ne te manque pas une étape ou une condition.

Tu peux aussi les écrire sur ton ordinateur, avec un bloc-notes, ou sous un logiciel de traitement de texte, ou tout autre logiciel sur lequel tu peux écrire du texte.

Si tu préfère le système de diagramme, tu peux utiliser le site : https://app.diagrams.net/. Ils proposent des modèles de diagrammes, si tu ne sais pas comment commencer.

Si tu veux vraiment tester tes algorithmes, tu peux commencer avec Python. C’est un langage assez facile à prendre en main et à installer. Ainsi tu peux coder tes premiers algorithmes avec Python, en utilisant n’importe quel éditeur de code (Notepad++, sublime text, Bracket, …)

Une fois que tu maitrise, l’algorithmique, tu peux essayer sous n’importe quel langage de programmation. Ils ont tous un point commun : la logique. L’avantage de bien maitriser l’algorithmique est que peu importe le langage que tu utiliseras, si tu maitrises cette logique, tu pourras arriver à coder. Ainsi tu pourras t’adapter à n’importe quel langage.

De plus, essayer de faire tourner tes algorithmes avec un langage de programmation, te permettra de garder ta motivation dans ton apprentissage. C’est un peu la carotte finale.

Les types de données, procédures et fonctions

Quand tu vas commencer à complexifier tes algorithmes, tu vas devoir gérer des types de données.

Les types de données

Les types de données sont les entiers, les nombres à virgule, les chaines de caractères, les tableaux, etc. Ils servent à définir le type d’une variable. Une variable est un espace de stockage dans l’ordinateur réservé à un type de donnée précis.

Ainsi les variables ont besoin d’être initialisées pour informer l’ordinateur que dans telle variable il y aura tel type de données. De plus une variable à un nom qui est choisi arbitrairement par le développeur.

Ex : nombre maVariableNombre = 1 ;

Dans ce cas, j’indique à l’ordinateur que je vais utiliser une variable qui s’appelle « maVariableNombre », qui sera du type nombre et que j’initialise à 1.

Certains langages sont fortement typés. C’est-à-dire qu’une variable n’accepte qu’un seul type. Alors que d’autre langage est faiblement typé. Une variable peut accepter plusieurs types.

Il faut que tu connaisses les principaux types de variables :

  • Entier (souvent appelé integer dans les langages de programmation ou encore int). Ex : 34
  • Nombre à virgule (float). Ex : 1,345
  • Booléen (boolean, ou bool). Ex : vrai ou faux (true / false)
  • Chaine de caractère (string, char). Ex : « Ceci est du texte » 
  • Tableaux (array). Ex : [1,2,3]

Dans tes premiers algorithmes lorsque tu as besoin d’une variable, prends l’habitude de la typer. Si tu as besoin d’une variable, de type chiffre, écris-le de cette manière : variable chiffre maVariable = 0

Prendre cette habitude, tu permettras, dans le cas où tu utilise des langages fortement typés d’être à l’aise dès le début.

Procédure et fonction

Fonctions et procédures

Précédemment, je t’ai parlé de découper un gros problème à résoudre en plein de petits. Les fonctions et procédures servent à ça.

Les fonctions et les procédures ont pour but de réaliser un bout du problème en réalisant simplement quelques instructions et en renvoyant un résultat (fonction) ou non (procédure).

Il faut les voir comme une sorte de boite dans laquelle on lui met un certain nombre de paramètres et qui fournissent un résultat ou réalise un travail.

Par exemple, dans l’exemple précédant, avec la voiture, nous avions réalisé l’algorithme pour « démarrer la voiture » et l’algorithme pour « passer les vitesses ». Ces 2 algorithmes pourraient être des procédures : procédure demarrerLaVoiture() et procédure passerLaVitesse(1).

Les parenthèses () à la fin de la fonction sont la façon d’écrire les fonctions et procédures. Dans ces parenthèses, tu peux passer des paramètres. Une fonction ou une procédure peux avoir besoin (ou non) de certains paramètres. Dans notre cas, nous indiquons à la fonction « passerLaVitesse », que nous voulons passer la vitesse 1. Nous pourrons lui passer 2,3,4, par la suite.

Ainsi lorsque j’écrirais l’algorithme général « faire avancer la voiture », je pourrais appeler les procédures les unes après les autres :

  • demarrerLaVoiture()
  • passerLaVitesse(1)
  • accélérer()
  • passerLaVitesse(2)
  • freiner()

Les procédures exécutent simplement une suite d’instructions sans retourner de résultats. Dans certains cas tu auras peut-être besoin d’un résultat. Par exemple, lorsque tu vas créer une fonction de calcul, tu auras besoin de son résultat. Dans ces cas-là il faudra utiliser des fonctions.

Faisons un exemple d’une fonction d’addition de deux chiffres.

Fonction additionnerDeuxChiffres(chiffre1, chiffre2)
      Variable nombre resultat
      resultat = chiffre1 + chiffre2
      Retourner resultat

Tu pourras utiliser ta fonction ainsi dans tes algorithmes :

Variable nombre resultat = additionnerDeuxChiffres(3,4)

La variable resultat vaudra donc 7.

Les fonctions et procédures sont très utilisées dans les langages de programmations. Il faut donc que tu passes du temps à comprendre comment elles fonctionnent et surtout à les utiliser. Ainsi, tu n’auras aucun mal à utiliser un langage de programmation par la suite.

Quelques exercices

Pour t’entrainer et si tu manques d’idées, je t’ai fait une liste de quelques exercices que tu peux faire.

Je les ai triés par ordre de difficulté

  • Faire un plat de pates
  • Afficher tous les chiffres de 0 à 100
  • Afficher tous les chiffres pairs de 0 à 100
  • Calculer la somme entre 2 chiffres rentrés par l’utilisateur
  • Acheter un produit sur un site de e-commerce (découper ce problème en plusieurs petits : recherche d’un produit sur le site, inscription de l’utilisateur, paiement avec demande d’autorisation à la banque, affichage de la confirmation ou de l’échec. En cas d’échec, réitérer le paiement)
  • Réalisation d’un jeu de morpion avec 2 joueurs. Chaque joueur renseigne la case qu’il souhaite jouer dans l’ordinateur. Créer un plateau de jeu sous dorme de grille (A1, A2, A3, B1, B2, B3, C1, C2, C3). Chaque joueur rentre à tour de rôle une case. Une croix « X » sera affichée dans la case après que l’utilisateur ait rentré son choix. Si la case est déjà prise, informer l’utilisateur et lui laisser la possibilité de rechoisir.
  • Réaliser un jeu de morpion avec un pseudo intelligence artificielle qui joue contre toi

N’hésite pas à trouver toi-même des idées d’algorithmes à réaliser. N’oublie pas que TOUT peut être transformé en algorithme. Tu peux prendre n’importe quelle scène de la vie quotidienne et l’écrire sous forme d’algorithme.

J’espère que cette introduction à l’algorithmique t’aura aidée à y voir plus clair et te permettras de commencer avec des bases solides.

Tu peux me dire dans les commentaires si tu as d’autres idées de mini-projets à réaliser en algorithmiques. Cela donnera des idées aux autres lecteurs 😊

Partager l'article
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée Champs requis marqués avec *

Poster commentaire