L'algorithmique : principes, bases et fonctions
- Fiche de cours
- Quiz et exercices
- Vidéos et podcasts
- Connaitre le vocabulaire et les principes liés à l’algorithmique.
- Savoir quand et pourquoi utiliser un algorithme.
- Connaitre la structure de base d’un algorithme en pseudo-code.
- Savoir utiliser les variables, les expressions mathématiques et les fonctions en pseudo-code.
- Savoir utiliser les instructions d’affectation, de lecture et d’écriture en pseudo-code.
- Un algorithme est composé d’une suite d'instructions à exécuter pour atteindre un objectif. L'algorithmique est l'ensemble des principes, règles et techniques qui permettent d'écrire un algorithme.
- Pour concevoir un programme informatique, on utilise le plus souvent le pseudo-code.
- Une variable permet de mémoriser et de manipuler des données. L'instruction d’affectation permet de donner une nouvelle valeur à une variable. On peut aussi affecter le résultat d’une expression mathématique.
- L’instruction de lecture permet au système
de demander à l'humain de lui fournir une
information.
L’instruction d’écriture permet au système de donner une information à l’utilisateur humain. - Les fonctions permettent de réaliser des tâches complexes. Elles renvoient un résultat et peuvent prendre des arguments.
- Variable
- Instruction
- Affectation
- Fonction
En informatique, ou dans le cadre de la création de systèmes qui ont une composante numérique, on réalise des algorithmes afin de concevoir, ou de décrire, un programme informatique.
Bien que l'informatique soit assez récente, l'algorithmique existe depuis longtemps. Elle tire ses origines des méthodes de résolution d'équations mathématiques mises au point par le mathématicien arabe Al-Khwârizmî au IXe siècle. Le mot « algorithme » est d’ailleurs issu du nom d'Al-Khwârizmî.
Un algorithme n'est pas encore un programme informatique, c'est simplement un mode opératoire, une série d'instructions structurées.
Une fois l'algorithme écrit et validé, il faut donc, dans un second temps :
- le traduire dans un langage informatique (C++, Python, Javascript, etc.) ;
- éventuellement, l’adapter aux composants matériels du système numérique.
On obtient alors un programme informatique qui implémente l’algorithme.
Concrètement, cela signifie qu’un même algorithme, une fois écrit, pourrait servir à la fois pour un PC sous Windows, pour un Mac, pour un robot et pour une machine à laver intelligente. Le langage informatique, et la manière dont serait traduit l’algorithme en programme informatique, seraient à chaque fois un peu différent, mais l’algorithme en lui-même serait identique.
Plusieurs méthodes permettent de créer un algorithme.
- On peut écrire l'algorithme dans un langage appelé pseudo-code. Le pseudo-code ressemble à un langage humain simplifié et formaté.
- On peut dessiner un algorigramme. Un algorigramme est un algorithme sous forme de diagramme.
- On peut écrire l'algorithme directement dans un langage informatique (C, PHP, Java, etc.).
Le pseudo-code et l'algorigramme sont à prioriser lorsqu'on conçoit un programme informatique.
Leurs avantages sont les suivants.
- Ils ne dépendent pas d’un langage de programmation : pseudo-code et algorigramme sont universels, ils n'utilisent aucun principe ou règle propre à un langage de programmation en particulier.
- Ils sont plus lisibles : les langages informatiques contiennent des symboles spéciaux ({, $, ", etc.) et des conventions d'écriture parfois contre-intuitives. Cela peut gêner la lisibilité de l'algorithme, surtout si l'algorithme doit par la suite être présenté à des non-spécialistes.
Certains langages, comme Python, propose une syntaxe très simple avec une bonne lisibilité. Il reste néanmoins préférable d'utiliser le pseudo-code ou l'algorigramme pour concevoir un algorithme, car les algorithmes écrits en Python ne sont pas indépendants (c’est-à-dire qu’ils comportent certaines instructions, propres à Python, qui n’ont pas d’équivalent dans d’autres langages informatiques).
Les atouts du pseudo-code, qui font qu'on le choisit souvent plutôt que l’algorigramme, sont les suivants.
- Il conserve une bonne lisibilité, même lorsque l’algorithme s'allonge et que sa structure se complexifie.
- Il est plus adapté pour présenter de l’information textuelle (par exemple, pour écrire des phrases qu’un ordinateur exécutant l'algorithme écrirait sur l’écran).
- La traduction vers un langage de programmation est plus directe, car les langages de programmation ont globalement la même structure que le pseudo-code.
- Il est plus adapté pour la conception de programmes purement informatiques, dédiés aux ordinateurs, mobiles, web, etc.
L’algorigramme présente également des avantages.
- Il est plus facile à lire et à comprendre pour un non-spécialiste.
- Il convient davantage à une présentation orale, car il est plus visuel.
- Il est plus adapté à la manière de penser de certaines personnes.
- Il est souvent plus adapté à la conception des programme des produits pluritechniques, dont la partie numérique est assez simple. En effet, il met bien en valeur les entrées/sorties de données liées aux capteurs/actionneurs.
Dans certains cas, on peut donc privilégier l'algorigramme par rapport au pseudo-code.
On va maintenant voir comment se servir du pseudo-code pour écrire des algorithmes, en commençant par apprendre à manipuler des données.
Les principaux types de variables sont les suivants.
- Nombre, pour les variables qui contiennent des nombres.
- Booléen, pour les variables qui contiennent des valeurs binaires, qui peuvent valoir vrai ou faux.
- Chaine, qui vient de « chaine de caractères » pour les variables qui contiennent des caractères alphanumériques, des mots, des phrases, etc.
Les conventions d’écriture varient d'un auteur à l'autre, d'un manuel à l'autre : il n'y a pas une seule et unique façon d'écrire en pseudo-code.
- Variable age, prix : nombre
- Variable estMajeur : booléen
- Variable nom, prenom : chaine
- Le type nombre est parfois scindé en un type entier pour les nombres entiers, et en un type réel pour les nombres réels.
- On essaie toujours de donner des noms explicites aux variables, pour que quelqu'un qui lit l'algorithme comprenne immédiatement leur rôle.
L'instruction d’affectation s'écrit en indiquant le nom de la variable, suivi de l'opérateur d'affectation ← et de la nouvelle valeur à donner à la variable. Cette valeur doit respecter le type de la variable.
- Pour les variables de type booléen, les valeurs possibles sont vrai et faux.
- Pour les variables de type chaine, les valeurs sont entourées de guillemets “.
- age ← 28
- prix ← 5,76
- estMajeur ← faux
- prenom ← "Tom"
Il est aussi possible d'affecter une expression mathématique à une variable de type nombre. Les expressions peuvent contenir des valeurs numériques, d'autres variables de type nombre, ou un mélange des deux.
Les expressions mathématiques s'écrivent avec les opérateurs mathématiques suivants.
- + qui est l’opérateur d'addition.
- - qui est l’opérateur de soustraction.
- * qui est l’opérateur de multiplication.
- / qui est l’opérateur de division.
- ( et )qui permettent de structurer les expressions complexes.
- prixPromo ← prix * 0,6
- surface ← (base * hauteur)/2
Le système numérique qui exécute l'algorithme aura surement besoin d'interagir avec l’extérieur pour :
- dialoguer avec un utilisateur humain ;
- récupérer des informations qui viennent de capteurs ou piloter des actionneurs (moteurs, pompe, lampe, etc.) ;
- communiquer sur un réseau de données.
Cette instruction permet au système numérique :
- de demander à l’utilisateur de lui fournir une information ;
- de récupérer des données qui proviennent d’un capteur ;
- de recevoir des données qui proviennent d’un réseau.
La valeur de cette information est affectée à une variable, dont le nom suit le mot-clé Lire.
On parle aussi d’instruction d’entrée, car Lire permet de faire entrer une information dans le système.
- Lire age
- Lire prix
- Dans le cas où le système est un ordinateur, ce qui sera le cas dans les prochains exemples, l’information est entrée par l'utilisateur grâce au clavier.
- La valeur lue prend le type de la variable à laquelle elle est affectée.
Cette instruction permet au système numérique :
- d’afficher une information à destination de l’utilisateur ;
- d’envoyer une commande à un actionneur ;
- d’envoyer des données sur un réseau.
Après le mot Écrire, on indique ce qui sera transmis. Cela peut être la valeur d'une variable, une chaine ou un mélange des deux.
On parle aussi d’instruction de sortie, car Écrire permet de faire sortir une information du système.
- Écrire “Quel est votre nom ?”
- Écrire “Votre prénom est ”, prenom, “.”
- Dans le cas où le système est un ordinateur, ce qui sera le cas dans les prochains exemples, l’information est affichée sur l’écran.
- La valeur écrite doit être de type chaine.
- Plusieurs chaines peuvent être écrites à la suite, en les séparant par des virgules.
- Pour ne pas se tromper sur le rôle de l’instruction lecture et le rôle de l’instruction écriture, il faut se rappeler que l’algorithme est destiné à être exécuté par un système numérique. C’est donc le point de vue du système qu’il faut adopter quand on écrit les instructions. Quand le système exécute l’instruction Lire, il récupère ainsi une information. Quand le système exécute l'instruction Écrire, il écrit quelque chose à l’écran.
Voici ci-dessous un algorithme complet qui utilise les instructions de lecture et d’écriture. Le système pour lequel cet algorithme est dédié est un ordinateur. Il demande à l'utilisateur son prénom et son nom, puis le salue à l'écran.
Variable
prenom, nom : chaines
de caractères
Début
Lire prenom
Écrire “Quel est votre nom?”
Lire nom
Écrire “Bonjour ”, prénom,“ ”,nom
Cet exemple permet de voir la structure complète
d’un algorithme.
On note les éléments suivants.
- On utilise les mots-clés Début et Fin, pour encadrer l'algorithme à proprement parler. Les variables sont déclarées juste avant, à part.
- Les instructions de l’algorithme sont décalées vers la droite par rapport aux mots Début et Fin. C’est ce qu’on appelle l'indentation. L’indentation permet de rendre l'algorithme plus lisible en mettant en évidence les groupes d’instructions de même niveau.
- Une fonction reçoit aucun, un ou plusieurs
arguments, qu’on transmet à la
fonction.
Un argument est une valeur ou une variable. - Une fonction réalise une série d’opérations à partir des arguments : calculs, conversions, manipulations de chaine, etc.
- Une fonction renvoie ensuite un
résultat, qui est une valeur.
Ce résultat peut être affecté à une variable, utilisé dans une instruction de lecture ou d’écriture.
Voici quelques exemples de fonctions.
- max(arg1,arg2) renvoie le plus grand nombre parmi les deux nombres passés en arguments.
- alea(arg1,arg2) donne un nombre entier aléatoire, compris entre arg1 et arg2.
- long(arg) calcule la longueur, en nombre de caractères, d’une chaine.
- concat(arg1,arg2) met bout à bout deux chaines.
- chaine(arg) convertit un nombre ou un booléen en chaine.
- nombre(arg) convertit une chaine en nombre.
- Il n y a pas de fonctions universelles en pseudo-code. Les fonctions qui peuvent être utilisées seront indiquées dans l’énoncé.
- Les fonctions sont en réalité des morceaux de code déjà écrits, parfois longs et complexes, qu’on utilise pour faciliter l’écriture d’algorithmes plus élaborés.
Début
Lire longueur
Écrire “Quelle est la largeur du rectangle ?”
Lire largeur
aire ← longueur * largeur
Écrire “L'aire du rectangle vaut ”, chaine(aire),“ m2.”
La fonction chaine(arg) permet de convertir la valeur de la variable aire (de type nombre) en chaine. Cette fonction est indispensable, car l’instruction d’écriture ne peut afficher que des chaines de caractères, or aire est un nombre.
Le programme ci-dessous propose à
l’utilisateur de générer un nombre
aléatoire, entre deux bornes choisies par
l’utilisateur.
Variable
borneInf, borneSup,
nombreAleatoire : nombre
Début
Écrire “Veuillez entrer la borne inférieure.”
Lire borneInf
Écrire “Veuillez entrer la borne supérieure.”
Lire borneSup
nombreAleatoire ← alea(borneInf,borneSup)
Écrire “Le nombre aléatoire est : “,
chaine(nombreAleatoire)
Il est possible d’écrire ses propres fonctions. Ce sont en fait des petits algorithmes, séparés de l’algorithme principal.
Plutôt que de commencer par le mot-clé Début, une fonction personnalisée commence par le mot-clé Fonction, suivi du nom qu’on donne à la fonction, puis des éventuels arguments de la fonction.
Le mot-clé Renvoyer permet de préciser la valeur que la fonction renvoie.
La fonction peut posséder ses propres variables internes.
Voici l’écriture d’une fonction qui permet de calculer le cube d’un nombre. Elle se nomme cube, et prend un seul argument, de type nombre, qu’on nomme arg. La valeur renvoyée est la variable résultat, de type nombre.
Fonction cube(arg : nombre)
Renvoyer resultat
Des quiz et exercices pour mieux assimiler sa leçon
La plateforme de soutien scolaire en ligne myMaxicours propose des quiz et exercices en accompagnement de chaque fiche de cours. Les exercices permettent de vérifier si la leçon est bien comprise ou s’il reste encore des notions à revoir.
Des exercices variés pour ne pas s’ennuyer
Les exercices se déclinent sous toutes leurs formes sur myMaxicours ! Selon la matière et la classe étudiées, retrouvez des dictées, des mots à relier ou encore des phrases à compléter, mais aussi des textes à trous et bien d’autres formats !
Dans les classes de primaire, l’accent est mis sur des exercices illustrés très ludiques pour motiver les plus jeunes.
Des quiz pour une évaluation en direct
Les quiz et exercices permettent d’avoir un retour immédiat sur la bonne compréhension du cours. Une fois toutes les réponses communiquées, le résultat s’affiche à l’écran et permet à l’élève de se situer immédiatement.
myMaxicours offre des solutions efficaces de révision grâce aux fiches de cours et aux exercices associés. L’élève se rassure pour le prochain examen en testant ses connaissances au préalable.
Des vidéos et des podcasts pour apprendre différemment
Certains élèves ont une mémoire visuelle quand d’autres ont plutôt une mémoire auditive. myMaxicours s’adapte à tous les enfants et adolescents pour leur proposer un apprentissage serein et efficace.
Découvrez de nombreuses vidéos et podcasts en complément des fiches de cours et des exercices pour une année scolaire au top !
Des podcasts pour les révisions
La plateforme de soutien scolaire en ligne myMaxicours propose des podcasts de révision pour toutes les classes à examen : troisième, première et terminale.
Les ados peuvent écouter les différents cours afin de mieux les mémoriser en préparation de leurs examens. Des fiches de cours de différentes matières sont disponibles en podcasts ainsi qu’une préparation au grand oral avec de nombreux conseils pratiques.
Des vidéos de cours pour comprendre en image
Des vidéos de cours illustrent les notions principales à retenir et complètent les fiches de cours. De quoi réviser sa prochaine évaluation ou son prochain examen en toute confiance !