Introduction à l'algorithmique
Les algorithmes permettent de résoudre des problèmes et c'est à travers que les mathématiciens décrivent les méthodologies de résolution. L'algorithmique s'est invité dans le dévélopemmenent et un bon développeur doit en maîtriser les bases. Dans cette formation, vous apprendrez les notions de bases de l'algorithmique, comment construire des algorithmes et choisir les structures de données appropriées.
Afin de bien planter le décor, je vous propose de partir en immersion avec deux vidéos.
Pourquoi tu cherches ?
Première immersion avec ce court métrage «Pourquoi tu cherches ?» narré par Berry Gérard, Professeur au Collège de France et qui parle de l'informatique et notamment de l'algorithmique. Un court métrage «docu-fiction» pour découvrir les grands personnages de l’Informatique et des Sciences du Numérique et partager quelques unes de leurs grandes idées.
Gérard Berry
Deuxième immersion avec cette conférence de Gérard Berry, Professeur du Collège de France (oui encore lui) intitulée Enseigner les algorithmes en mode « débranché » pour mieux les comprendre. Il nous parle d'algorithmique et d'informatique.
Dans la vie réelle, lorsque nous faisons face à un problème dans la vie, nous l'analysons afin de mieux le comprendre. Ensuite nous rassemblons les élements nécessaires
Motivations
Selon moi, l'algorithmique est le point de départ de toute chose, c'est le commencement. Nul ne saurait se lancer dans le code sans en maîtriser les notions de base.
Algorithme est un mot que vous avez déjà entendu. Les algorithmes de Facebook ou de Linkedin qui
L'algorithmique est une discipline à part entière, elle est enseignée à partir du lycée dans les pays occidentaux. Malheureusement, elle n'est enseignée qu'à partir de l'université en Afrique et seulement dans quelques filières telles que l'informatique, les mathématiques ou encore la physique. C'est l'une des défaillances de nos systèmes éducatifs dépassés.
Algorithmes et Structures de données
L'algorithmique couvre deux sujets à savoir les algorithmes et les structures de données. Les algorithmes décrivents les méthodes de résolution de problèmes tandis que les structures de données définssent la représentation des données.
Qu'est-ce que l'algorithmique ? Pourquoi est-elle si importante ? Comment construit t-on un algorihtme ? Si cela vous intéresse alors allons-y, je vous explique tout 🚀.
Des origines mathématiques
L'algorithmique a des origines mathématiques. En effet, le mot «algorithme» vient du nom du mathématicien arabe d'Al-Khwârizmî du IXe siècle. Les mathématiciens proposent des méthodes de résolution sous forme d'algorithme. Les choses ont bien évolué depuis avec le dévéloppement de l'informatique. Aujoud'hui, l'algorithmique se situe en écharpe entre les mathématiques et l'informatique. Les algoithmes sont de plus en plus exécutés par l'ordinateur via les programmes informatiques mais ils peuvent être exécutés par des humains, il faut attendre l'avènement de l'ordinateur pour voir naître les programmes qui permettent de faire. La cryptographie est une belle illustration du chevauchent entre les mathématiques et l'informatique. Autant il s'agit d'analyse, d'arithmétique, il s'agit également d'informatique et de sécurisation des communications.
L'algorithme d'abord
Dans la vie réelle, lorsque nous voulons résoudre un problème, nous l'analysons, nous identifions les resources nécessaires à la résolution, puis nous élaborons un plan qui utlise les ressources afin de résoudre le problème. Une fois le plan bien établi, nous passons à sa mise en oœvre. Dans le monde du dévéloppement informatique, les besoins des utilisateurs constituent les problèmes auxquels le dévéloppeur doit apporter des solutions et pour ce faire, les algorithmes sont au cœur du développement informatique, un développeur ne devrait pas s'attaquer au codage sans définir au préalable ainsi que les structures de données adaptées pour manipuler les données. C'est un travail de modélisation qui fera du codage une simple tâche de traduction. Le développement informatique repose essentiellement sur l'algorithmique. Une étape de modélisation algorithmqiue devrait toujours et systématiquement précéder le codage. En tant qu'étudiant en mathématiques, je pense que maîtriser la modélisation algorithmique fera de vous un bien meilleur développeur (programmeur), meilleur que les étudiants en informatique. L'algorithmique est le terrain parfait pour appliquer le raisonnement mathématique.
Un développeur ne devrait pas s'attaquer au codage sans définir au préalable la méthode de résolution ainsi que les structures de données adaptées pour manipuler les données. C'est un travail de modélisation qui fera du codage une simple tâche de traduction. La notion d'algorithme peut vous sembler étrangère et pourtant les algorithmes sont constamment présents autour de vous. Vous les utilisez tous les jours, vous en concevez d'ailleurs.
Dans la réalité, on shcématise l'algorithme sur du papier voire même dans la tête.
L'algorithme de l'addition
L'algorithme de l'addition est le tout premier algorithme que nous apprenons à l'école primaire. Bien-sûr, l'instituteur . Si jusqu'ici, la notion d'algorithme vous semble toujours étrangère, voici un algorithme qui vous connaissez très bien, l'algorithme d'addition de deux nombres entiers naturels. Rappelez-vous, c'est l'une des premières notions que l'on apprend au cours primaires. L'instituteur décrit les différentes étapes à suivre pour additionner deux nombres.
L’algorithme d’Euclide
L'algorithme d'Euclide est l'un des algorithmes les plus populaires. Pour rappel, cet algorithme permet de déterminer le PGCD de deux nombres entiers (le cours de mathématiques de la cinquième). On l'utilise pour vérifier si deux nombres sont premiers entre eux. En effet, lorsque deux nombres sont premiers entre eux leur PGCD est égal à 1.
Les algorithmes de notre quotidien
Essayons de comprendre ce que c'est qu'un algorithme avec des tâches courantes de la vie.
1. S'habiller
Tous les matins vous vous habillez avant de sortir. Nous allons décrire le différentes étapes à suivre pour atteindre cet objectif. Très facile, n'est-ce pas ? On y va, voici les différentes étapes à suivre:
- Mettre le caleçon
- Mettre le débardeur
- Mettre les chaussettes
- Mettre le pantalon
- Mettre les chaussures
- Mettre la chemise
- Piquer la chemise
- Mettre la ceinture
Cette serie d'actions est bien et bel un algorithme. Il s'agit d'actions effectuées dans un ordre précis.
Algorithme et Cuisine
Les recettes de cuisine sont également de parfaits exemples d’algorithmes. Pour cuisiner un plat, le cuisinier doit suivre des étapes bien précises et ce dans un certain ordre, nous y reviendrons. D'une part, la recette représente l'algorithme et d'autre part les ingrédients et le plat final représentent respectivement les entrées et la sortie de l'algorithme.
- Mettre la marmite au feu
- Verser une quantité X d'eau
- Ajouter du sel
- Attendre pendant 5 minutes
- Verser une quantité Y de riz
- Mélanger le contenu
- Attendre pendant 10 minutes
- Retirer la marmite du feu
Voilà un exemple de recette de cusine. Cuisiner consiste en des étapes bien précises qui aboutissent à un plat final.
3. Se déplacer
Analysons mon parcours chaque matin lorsque j'arrive au bureau. Voici en ordre les différentes étapes de la porte d'entrée à mon bureau:
- Passer la port d'entrée
- Marcher vers l'ascenceur
- Appeler l'ascenceur
- Entrer dans l'ascenceur
- Appuyer sur le numéro de l'étage
- Sortir de l'ascenceur
- Marcher vers la porte de mon bureau
- Vérifier si la porte est ouverte
- Ouvrir à clé si la porte est fermée
- M'asseoir dans mon fauteuil
Dans tous ces trois exemples, il y a un objectif précis au bout des actions, un problème à résoudre ou encore un besoin à satisfaire.
À quoi ressemble un algorithme ?
ALGORITHME SaisirNom
VAR nom : chaîne de caractères
n, i: entiers
DÉBUT
AFFICHER("Saisir votre nom :")
SAISIR(nom)
AFFICHER("Bonjour", nom)
n <- 5
POUR i<-1 JQA n FAIRE
AFFICHER(i)
FPOUR
FIN
Le programme de la formation
Cette formation est un véritable voyage au pays des algorithmes et des structures de données. Elle est organisée en cinq (5) parties, dans la première partie, j'introduis les définitions et les notions de base de l'algorithmique. La deuxième partie est consacrée aux tableaux. La troisième partie est une introduction à la modularité, je montre comment découper les problèmes en de petits problèmes avec les procédures et les fonctions. Enfin, dans la quatrième et dernière partie, je vous parlerai des structures de données qui sont un sujet essentiel en algorithmique.
- Partie 1 : Les bases
- Partie 2 : Les tableaux
- Partie 3 : Procédures et Fonctions
- Partie 4 : Les structures de données
- Partie 5 : Les fichiers
- Partie 6 : Complexité algorithmique
L'algorithmique et les structures de données consituent le socle du dévéloppement informatique et donc un MUST HAVE dans votre parcours Python et Data.
Aucun outil n'est nécessaire pour concevoir des algorithmes si ce n'est du papier et de quoi écrire. L'algorithmique consiste essentiellement en la réflexion. Vous êtes prêts, je vous donne rendez-vous dans la première partie !