Chapitre 1 — Notions fondamentales
Comprendre ce qu’est un algorithme, comment il se conçoit et comment il se représente
Fiche pédagogique du chapitre
Rubrique | Description |
|---|---|
| Objectif général | Acquérir les notions de base permettant de comprendre, décrire, analyser et représenter un algorithme. |
| Prérequis | Aucun prérequis en programmation. Une maîtrise élémentaire des opérations arithmétiques et de la logique est suffisante. |
| Durée indicative | 4 à 6 heures de cours et d’activités, complétées par 2 heures de travaux dirigés. |
| Compétences visées | Identifier les entrées et les sorties d’un problème ; distinguer problème, algorithme et programme ; reconnaître les propriétés d’un bon algorithme ; appliquer une démarche structurée de résolution. |
| Évaluation possible | Questions de compréhension, analyse d’un algorithme, identification des entrées/traitements/sorties et conception d’un algorithme simple. |
Objectifs d’apprentissage
À la fin de ce chapitre, l’étudiant devra être capable de :
- définir avec précision les notions de problème, d’algorithme et de programme ;
- expliquer le rôle de l’algorithmique dans la résolution de problèmes ;
- reconnaître les principales propriétés d’un bon algorithme ;
- appliquer les étapes d’une démarche de résolution structurée ;
- représenter une solution en langage naturel, en pseudo-code, sous forme d’organigramme et sous forme de programme ;
- identifier, pour un problème simple, les données d’entrée, les traitements et les résultats de sortie.
Idée essentielle L’algorithmique ne consiste pas d’abord à apprendre un langage de programmation. Elle consiste à apprendre à raisonner, à organiser une solution et à décrire précisément les actions nécessaires pour résoudre un problème. |
Plan du chapitre
1.1 Définition d’un algorithme
1.2 Propriétés d’un bon algorithme
1.3 Étapes de résolution d’un problème
1.4 Représentation d’un algorithme
Travaux dirigés et éléments de correction
1.1 Définition d’un algorithme
1.1.1 Définition d’un algorithme
Un algorithme est une suite finie, ordonnée et non ambiguë d’instructions permettant de transformer des données d’entrée en résultats de sortie afin de résoudre un problème déterminé.
Cette définition contient plusieurs idées importantes :
- une suite : l’algorithme est constitué de plusieurs actions ;
- ordonnée : les actions doivent être exécutées dans un ordre précis ;
- finie : l’exécution doit s’arrêter après un nombre limité d’étapes ;
- non ambiguë : chaque instruction doit être comprise d’une seule manière ;
- des entrées : l’algorithme peut recevoir des informations à traiter ;
- des sorties : il produit un résultat ou déclenche une action observable.
Définition simplifiée Un algorithme est une méthode précise, décrite étape par étape, permettant de passer d’un problème à une solution. |
Entrées, traitements et sorties
La majorité des algorithmes peuvent être analysés à l’aide du modèle « Entrées — Traitements — Sorties ». Ce modèle aide à comprendre ce que l’algorithme reçoit, ce qu’il effectue et ce qu’il produit.
Élément | Rôle | Exemple |
|---|---|---|
| Entrées | Informations fournies avant ou pendant l’exécution. | Longueur et largeur d’un rectangle. |
| Traitements | Calculs, comparaisons ou transformations appliqués aux entrées. | Calculer 2 × (longueur + largeur). |
| Sorties | Résultats produits ou informations affichées. | Le périmètre du rectangle. |
Exemple introductif : calculer l’aire d’un rectangle
Le problème consiste à calculer l’aire d’un rectangle à partir de sa longueur et de sa largeur. La formule mathématique est : Aire = longueur × largeur.
Premier exemple de pseudo-code
| Algorithme Aire_Rectangle Variables longueur, largeur, aire : Réels Début Lire longueur Lire largeur aire ← longueur × largeur Afficher aire Fin |
Lecture de l’exemple Entrées : longueur et largeur. Traitement : multiplication de la longueur par la largeur. Sortie : aire du rectangle. |
Algorithme, recette et procédure
Une recette de cuisine, un itinéraire ou une notice de montage peuvent ressembler à un algorithme, car ils décrivent une succession d’actions. Cependant, un algorithme informatique exige généralement davantage de précision. Une personne peut interpréter une phrase imprécise grâce à son expérience ; un ordinateur, lui, exécute uniquement les instructions qui lui sont données.
Exemple d’ambiguïté La consigne « ajouter un peu de sucre » peut être acceptable dans une recette destinée à un humain, mais elle est insuffisante pour un programme. Il faut préciser une quantité, par exemple « ajouter 5 grammes de sucre ». |
1.1.2 Origine et rôle de l’algorithmique
Le mot « algorithme » est historiquement lié au nom latinisé du savant persan Muhammad ibn Musa al-Khwarizmi, qui a vécu au IXe siècle. Ses travaux ont contribué à la diffusion des méthodes de calcul utilisant la numération décimale. Au fil du temps, le terme a pris un sens plus général : une méthode systématique permettant de résoudre un problème.
L’algorithmique est la discipline qui étudie la conception, la description, la vérification et l’analyse des algorithmes. Elle cherche à répondre à plusieurs questions :
- Comment transformer un besoin en une suite d’actions exécutables ?
- Comment garantir que la méthode produit toujours un résultat correct ?
- Comment éviter les étapes inutiles ou trop coûteuses ?
- Comment représenter la solution de manière compréhensible et indépendante d’un langage particulier ?
- Comment comparer plusieurs méthodes qui résolvent le même problème ?
Rôle de l’algorithmique en informatique
Avant d’écrire un programme, il est nécessaire de déterminer ce que le programme doit faire et dans quel ordre. L’algorithme joue donc le rôle de pont entre le problème exprimé par un utilisateur et le programme exécutable par une machine.
- Analyser un besoin : comprendre le problème et ses contraintes.
- Structurer la solution : décomposer le problème en étapes plus simples.
- Communiquer : présenter la solution à d’autres personnes sans dépendre d’un langage de programmation.
- Vérifier : tester le raisonnement avant de coder.
- Optimiser : rechercher une solution plus rapide, plus simple ou moins coûteuse en mémoire.
- Réutiliser : adapter une méthode générale à plusieurs situations similaires.
À retenir Un bon programme commence généralement par une bonne analyse. Programmer sans avoir clarifié l’algorithme conduit souvent à des erreurs, à des corrections répétées et à un code difficile à maintenir. |
Domaines d’utilisation
Domaine | Utilisations | Exemple |
|---|---|---|
| Gestion | Calcul de salaires, facturation, gestion de stocks. | Calculer le montant d’une facture. |
| Web | Recherche, recommandation, authentification. | Classer des résultats de recherche. |
| Réseaux | Routage, détection d’erreurs, allocation de ressources. | Choisir un chemin pour transmettre des données. |
| Intelligence artificielle | Apprentissage, classification, planification. | Reconnaître une catégorie d’image. |
| Robotique | Perception, navigation, commande. | Éviter un obstacle. |
| Bases de données | Tri, recherche, jointure, indexation. | Retrouver rapidement un enregistrement. |
1.1.3 Différence entre problème, algorithme et programme
Ces trois notions sont liées, mais elles ne désignent pas la même chose.
Notion | Définition | Exemple |
|---|---|---|
| Problème | Question à résoudre ou objectif à atteindre. | Déterminer le plus grand de trois nombres. |
| Algorithme | Méthode abstraite, structurée et indépendante d’un langage. | Comparer successivement les trois nombres. |
| Programme | Traduction de l’algorithme dans un langage exécutable. | Code Python, C ou Java réalisant les comparaisons. |
Exemple complet : calculer une moyenne
Considérons la situation suivante : un étudiant possède trois notes et l’on souhaite calculer sa moyenne arithmétique.
- Problème : déterminer la moyenne de trois notes.
- Algorithme : lire les trois notes, calculer leur somme, diviser la somme par trois, puis afficher le résultat.
- Programme : écrire ces instructions avec la syntaxe d’un langage, par exemple Python.
| # Exemple de traduction en Python note1 = float(input("Première note : ")) note2 = float(input("Deuxième note : ")) note3 = float(input("Troisième note : ")) moyenne = (note1 + note2 + note3) / 3 print("Moyenne :", moyenne) |
Attention Le programme dépend du langage choisi, tandis que l’idée de la solution peut rester la même. Un même algorithme peut donc être traduit en Python, en C, en Java ou dans un autre langage. |
1.1.4 Exemples d’algorithmes dans la vie quotidienne
Nous appliquons régulièrement des suites d’actions comparables à des algorithmes, parfois sans les nommer ainsi. Ces exemples permettent de comprendre que l’algorithmique repose d’abord sur l’organisation logique des actions.
Exemple 1 : préparer une boisson chaude
1. Prendre une tasse.
2. Faire chauffer de l’eau.
3. Placer le café soluble, le thé ou une autre préparation dans la tasse.
4. Verser l’eau chaude dans la tasse.
5. Ajouter éventuellement du sucre ou du lait.
6. Mélanger.
7. Servir la boisson.
Cet exemple montre une exécution séquentielle : les étapes sont réalisées les unes après les autres. Il peut aussi contenir un choix, par exemple « si la personne souhaite du sucre, ajouter du sucre ».
Exemple 2 : retirer de l’argent à un distributeur
1. Insérer la carte bancaire.
2. Saisir le code confidentiel.
3. Vérifier le code saisi.
4. Si le code est incorrect, demander une nouvelle saisie ou interrompre l’opération.
5. Choisir le montant à retirer.
6. Vérifier que le solde et la limite de retrait sont suffisants.
7. Distribuer les billets.
8. Restituer la carte et, éventuellement, imprimer un reçu.
Cet exemple fait intervenir des conditions, des répétitions éventuelles et des contrôles de sécurité. Il illustre donc un algorithme plus riche qu’une simple suite linéaire d’étapes.
Exemple 3 : choisir un itinéraire
Une application de navigation reçoit un point de départ, une destination et des contraintes éventuelles. Elle analyse plusieurs itinéraires, estime leur coût — distance, durée, péages — puis propose un chemin. Si les conditions de circulation changent, elle peut recalculer la solution.
Activité rapide Choisir une activité quotidienne, par exemple se connecter à un site, commander un repas ou laver du linge. Décrire les étapes, puis identifier au moins une condition et une répétition possibles. |
1.1.5 Exemples d’algorithmes informatiques
Les systèmes informatiques utilisent des algorithmes pour effectuer des calculs, organiser des données, prendre des décisions automatiques ou contrôler des équipements.
Type d’algorithme | Objectif | Exemple |
|---|---|---|
| Recherche | Retrouver un élément dans une collection. | Rechercher un étudiant à partir de son identifiant. |
| Tri | Classer des éléments selon un ordre. | Trier des notes de la plus élevée à la plus faible. |
| Compression | Réduire la taille des données. | Compresser une image ou un fichier. |
| Chiffrement | Transformer des données pour les protéger. | Sécuriser une communication. |
| Routage | Choisir un chemin dans un réseau. | Acheminer un paquet sur Internet. |
| Recommandation | Proposer des éléments selon des préférences. | Recommander un article ou une vidéo. |
| Traitement d’image | Analyser ou modifier une image. | Détecter un visage ou améliorer le contraste. |
| Commande | Piloter un système physique. | Réguler la température d’une salle. |
Exemple : rechercher un nom dans une liste
Une méthode simple consiste à examiner les noms un par un jusqu’à trouver le nom recherché ou atteindre la fin de la liste.
| Algorithme Recherche_Nom Entrées : liste de noms, nom_recherché Début Pour chaque nom de la liste Faire Si nom = nom_recherché Alors Afficher "Nom trouvé" Arrêter la recherche FinSi FinPour Si aucun nom n’a été trouvé Alors Afficher "Nom absent" FinSi Fin |
1.2 Propriétés d’un bon algorithme
Tous les ensembles d’instructions ne constituent pas nécessairement de bons algorithmes. Pour être utilisable, une solution algorithmique doit satisfaire plusieurs propriétés.
1.2.1 Finitude
Un algorithme doit se terminer après un nombre fini d’étapes. Il ne doit pas continuer indéfiniment lorsque les données respectent les conditions prévues.
Exemple Pour afficher les entiers de 1 à 10, le compteur commence à 1, augmente à chaque étape et la répétition s’arrête après 10. |
Point de vigilance Une boucle qui répète une action sans modifier sa condition d’arrêt peut devenir infinie. |
1.2.2 Précision
Chaque instruction doit indiquer exactement l’action à réaliser. Les données, les opérations et les conditions doivent être suffisamment définies.
Exemple « Ajouter 10 au total » est plus précis que « augmenter le total ». |
Point de vigilance Les expressions vagues telles que « traiter rapidement », « choisir une bonne valeur » ou « répéter plusieurs fois » doivent être remplacées par des règles mesurables. |
1.2.3 Clarté
L’algorithme doit être lisible et compréhensible par une personne qui connaît le domaine. La clarté concerne les noms utilisés, l’organisation des étapes et la présentation.
Exemple La variable moyenne_notes est plus explicite que la variable x. |
Point de vigilance Un algorithme peut être correct mais difficile à maintenir s’il utilise des noms obscurs, des étapes trop longues ou une structure désordonnée. |
1.2.4 Correction
Un algorithme est correct s’il produit le résultat attendu pour toutes les données valides appartenant au domaine prévu.
Exemple L’algorithme du périmètre doit calculer 2 × (longueur + largeur), et non longueur × largeur. |
Point de vigilance Tester un seul exemple favorable ne suffit pas à prouver la correction. Il faut aussi examiner les cas limites et les situations particulières. |
1.2.5 Efficacité
Un algorithme efficace utilise raisonnablement le temps de calcul et la mémoire. Cette propriété devient importante lorsque le volume de données augmente.
Exemple Pour rechercher dans une liste courte, une recherche simple peut suffire. Pour des millions d’éléments triés, une méthode plus rapide peut être nécessaire. |
Point de vigilance La solution la plus courte n’est pas toujours la plus efficace, et la solution la plus rapide n’est pas toujours la plus lisible. Il faut rechercher un compromis adapté au besoin. |
1.2.6 Généralité
Un algorithme général résout une famille de problèmes similaires et ne dépend pas uniquement d’un exemple particulier.
Exemple Un algorithme qui calcule le périmètre à partir de deux valeurs L et l est général. Un calcul écrit uniquement pour L = 5 et l = 3 ne l’est pas. |
Point de vigilance La généralité s’obtient en utilisant des données d’entrée, des variables et des règles applicables à plusieurs cas. |
Synthèse des propriétés
Propriété | Question essentielle | Contrôle rapide |
|---|---|---|
| Finitude | L’exécution s’arrête. | Existe-t-il une condition d’arrêt ? |
| Précision | Chaque étape est définie sans ambiguïté. | Une même instruction peut-elle être interprétée de deux façons ? |
| Clarté | La solution est lisible et bien organisée. | Les noms et les étapes sont-ils compréhensibles ? |
| Correction | Les résultats sont conformes au problème. | Les résultats sont-ils justes pour les cas normaux et limites ? |
| Efficacité | Les ressources sont utilisées raisonnablement. | Peut-on éviter des opérations ou des données inutiles ? |
| Généralité | La méthode s’applique à plusieurs cas. | L’algorithme fonctionne-t-il pour différentes valeurs valides ? |
Exemple d’analyse critique
Considérons l’instruction suivante : « Répéter le calcul jusqu’à obtenir une valeur satisfaisante. » Cette phrase ne constitue pas une instruction algorithmique correcte, car :
- le mot « satisfaisante » n’est pas défini : manque de précision ;
- la condition d’arrêt n’est pas mesurable : risque de non-finitude ;
- le calcul à répéter n’est pas indiqué : manque de clarté ;
- on ne peut pas vérifier facilement la correction du résultat.
Une version améliorée serait : « Tant que l’erreur absolue est supérieure à 0,001 et que le nombre d’itérations est inférieur à 100, effectuer une nouvelle approximation. »
1.3 Étapes de résolution d’un problème
La résolution algorithmique d’un problème ne commence pas par l’écriture de code. Elle suit une démarche progressive permettant de réduire les erreurs et de produire une solution compréhensible.
Exemple fil rouge Dans cette section, la démarche est illustrée par le problème suivant : lire trois notes, calculer leur moyenne et indiquer si l’étudiant est admis lorsque la moyenne est supérieure ou égale à 10. |
1.3.1 Compréhension de l’énoncé
Il faut lire attentivement le problème, reformuler le besoin avec ses propres mots et repérer les contraintes. Une mauvaise compréhension conduit à une solution correcte pour un problème différent de celui qui était demandé.
Questions ou actions utiles :
- Quel est l’objectif exact ?
- Quelles règles doivent être respectées ?
- Existe-t-il des cas particuliers ?
- Quelles hypothèses sont autorisées ?
Application à l’exemple fil rouge Reformulation : calculer la moyenne de trois notes comprises entre 0 et 20, puis afficher « Admis » si la moyenne est au moins égale à 10, sinon afficher « Non admis ». Vérifier également que les notes appartiennent à l’intervalle autorisé. |
1.3.2 Identification des données d’entrée
Les données d’entrée sont les informations nécessaires à l’exécution de l’algorithme. Il faut déterminer leur nom, leur type, leur unité et leur domaine de validité.
Questions ou actions utiles :
- Quelles valeurs sont fournies ?
- Sont-elles numériques, textuelles ou logiques ?
- Quelles valeurs sont autorisées ?
- Une donnée peut-elle être absente ?
Application à l’exemple fil rouge Entrées : note1, note2 et note3 ; type : nombres réels ; domaine valide : de 0 à 20 inclus. |
1.3.3 Identification des résultats attendus
Les sorties représentent ce que l’algorithme doit produire. Elles doivent être définies avant la conception du traitement.
Questions ou actions utiles :
- Quel résultat doit être calculé ?
- Sous quelle forme doit-il être présenté ?
- Faut-il afficher un message en cas d’erreur ?
- Le résultat possède-t-il une unité ?
Application à l’exemple fil rouge Sorties : la moyenne numérique et une décision textuelle, « Admis » ou « Non admis ». En cas de note invalide, afficher un message d’erreur. |
1.3.4 Décomposition du problème
Un problème complexe doit être divisé en sous-problèmes plus simples. Chaque sous-problème peut ensuite être conçu, testé et éventuellement réutilisé séparément.
Questions ou actions utiles :
- Lire les données.
- Vérifier les données.
- Calculer le résultat principal.
- Prendre une décision.
- Afficher les résultats.
Application à l’exemple fil rouge Sous-problèmes : saisir les trois notes ; vérifier qu’elles sont comprises entre 0 et 20 ; calculer la moyenne ; comparer la moyenne à 10 ; afficher la moyenne et la décision. |
1.3.5 Conception de la solution
La conception consiste à choisir l’enchaînement logique des actions et les structures nécessaires : séquence, condition, répétition, fonction ou structure de données. À ce stade, on raisonne indépendamment de la syntaxe d’un langage.
Questions ou actions utiles :
- Choisir les formules et les règles.
- Déterminer l’ordre des opérations.
- Prévoir les cas normaux et les erreurs.
- Choisir une méthode suffisamment simple et générale.
Application à l’exemple fil rouge Solution : lire les trois notes ; si une note est invalide, afficher une erreur ; sinon calculer la moyenne ; si moyenne ≥ 10, décision ← « Admis », sinon décision ← « Non admis » ; afficher les résultats. |
1.3.6 Écriture de l’algorithme
La solution est ensuite exprimée sous une forme structurée, le plus souvent en pseudo-code. Les noms doivent être explicites et les étapes correctement indentées.
Questions ou actions utiles :
- Déclarer les données utiles.
- Utiliser des instructions cohérentes.
- Indenter les blocs.
- Ajouter des commentaires uniquement lorsqu’ils apportent une information utile.
Application à l’exemple fil rouge Le pseudo-code complet est présenté après les huit étapes. |
1.3.7 Test et validation
Le test consiste à exécuter mentalement ou réellement l’algorithme sur plusieurs jeux de données. La validation vérifie que les résultats sont conformes au besoin.
Questions ou actions utiles :
- Cas normal.
- Cas limite.
- Cas invalide.
- Valeurs minimales et maximales.
- Cas pouvant révéler une erreur de logique.
Application à l’exemple fil rouge Jeux d’essai : (12, 14, 10) donne moyenne 12 et « Admis » ; (10, 10, 10) teste la limite ; (8, 9, 7) donne « Non admis » ; (21, 10, 12) doit produire une erreur. |
1.3.8 Traduction en programme
Après validation du raisonnement, l’algorithme est traduit dans un langage. Cette étape nécessite de respecter la syntaxe, les types de données et les règles propres au langage choisi.
Questions ou actions utiles :
- Conserver la logique validée.
- Choisir des types adaptés.
- Gérer les erreurs de saisie.
- Tester le programme avec les mêmes jeux d’essai.
Application à l’exemple fil rouge La traduction en Python utilise input pour la saisie, des nombres réels pour les notes, une condition pour la validation et une seconde condition pour la décision. |
Pseudo-code de l’exemple fil rouge
| Algorithme Evaluation_Etudiant Variables note1, note2, note3, moyenne : Réels decision : Chaîne Début Lire note1, note2, note3 Si note1 < 0 ou note1 > 20 ou note2 < 0 ou note2 > 20 ou note3 < 0 ou note3 > 20 Alors Afficher "Erreur : une note est invalide" Sinon moyenne ← (note1 + note2 + note3) / 3 Si moyenne ≥ 10 Alors decision ← "Admis" Sinon decision ← "Non admis" FinSi Afficher moyenne, decision FinSi Fin |
Table de validation
Entrées | Résultat attendu | Type de test |
|---|---|---|
| 12 ; 14 ; 10 | Moyenne = 12 ; Admis | Cas normal |
| 10 ; 10 ; 10 | Moyenne = 10 ; Admis | Cas limite d’admission |
| 8 ; 9 ; 7 | Moyenne = 8 ; Non admis | Cas normal défavorable |
| 0 ; 0 ; 0 | Moyenne = 0 ; Non admis | Valeur minimale valide |
| 20 ; 20 ; 20 | Moyenne = 20 ; Admis | Valeur maximale valide |
| 21 ; 10 ; 12 | Message d’erreur | Entrée invalide |
Erreurs fréquentes dans la démarche
- Commencer immédiatement à coder sans avoir identifié les entrées et les sorties.
- Utiliser une formule incorrecte ou oublier une contrainte de l’énoncé.
- Ne tester qu’un seul jeu de données.
- Oublier les valeurs limites, par exemple une moyenne exactement égale à 10.
- Mélanger l’analyse du problème et les détails syntaxiques d’un langage.
- Produire une solution spécifique à un seul exemple au lieu d’une méthode générale.
1.4 Représentation d’un algorithme
Une même solution peut être représentée de plusieurs manières. Le choix dépend du public, de la complexité du problème et du niveau de précision recherché. Pour comparer les représentations, nous utiliserons le même problème : calculer le périmètre d’un rectangle.
1.4.1 Langage naturel
Le langage naturel décrit les étapes avec des phrases ordinaires. Il est facile à lire, mais il peut contenir des ambiguïtés et manquer de structure lorsque le problème devient complexe.
1. Demander la longueur du rectangle.
2. Demander la largeur du rectangle.
3. Additionner la longueur et la largeur.
4. Multiplier la somme par deux.
5. Afficher le périmètre obtenu.
Aspect | Appréciation |
|---|---|
| Avantages | Accessible aux débutants ; rapide pour expliquer une idée simple ; ne nécessite pas de notation particulière. |
| Limites | Risque d’ambiguïté ; structure parfois difficile à suivre ; peu adapté aux problèmes comportant de nombreuses conditions et répétitions. |
1.4.2 Pseudo-code
Le pseudo-code utilise des mots-clés et une présentation structurée proches de la programmation, sans imposer la syntaxe exacte d’un langage. Il constitue souvent la représentation privilégiée pour apprendre l’algorithmique.
| Algorithme Perimetre_Rectangle Variables longueur, largeur, perimetre : Réels Début Lire longueur Lire largeur perimetre ← 2 × (longueur + largeur) Afficher perimetre Fin |
Aspect | Appréciation |
|---|---|
| Avantages | Structuré ; précis ; indépendant d’un langage ; facilite la traduction en programme. |
| Limites | Il n’existe pas une syntaxe universelle unique ; il doit rester cohérent et suffisamment explicite. |
Conventions de pseudo-code utilisées dans ce cours
Notation | Signification | Exemple |
|---|---|---|
| Lire | Obtenir une valeur fournie par l’utilisateur ou un autre système. | Lire longueur |
| Afficher | Présenter une valeur ou un message. | Afficher perimetre |
| ← | Affecter une valeur à une variable. | perimetre ← 2 × (L + l) |
| Si…Alors…Sinon | Choisir un traitement selon une condition. | Si moyenne ≥ 10 Alors |
| Pour / TantQue | Répéter un bloc d’instructions. | Pour i allant de 1 à 10 |
| Début / Fin | Délimiter l’algorithme ou un bloc. | Début … Fin |
1.4.3 Organigramme ou logigramme
Un organigramme représente graphiquement le déroulement d’un algorithme. Les actions sont placées dans des symboles reliés par des flèches indiquant l’ordre d’exécution.
Symbole | Rôle | Exemple |
|---|---|---|
| Ovale ou rectangle arrondi | Début ou fin | Début, Fin |
| Rectangle | Traitement ou calcul | P ← 2 × (L + l) |
| Parallélogramme | Entrée ou sortie | Lire L ; Afficher P |
| Losange | Test ou décision | L > 0 ? |
| Flèche | Sens d’exécution | Passage d’une étape à la suivante |

Figure 1 — Organigramme du calcul du périmètre d’un rectangle
Aspect | Appréciation |
|---|---|
| Avantages | Vision globale ; lecture intuitive ; utile pour présenter les choix et les enchaînements. |
| Limites | Peut devenir volumineux ; modification moins rapide que le pseudo-code ; moins pratique pour les algorithmes très détaillés. |
1.4.4 Programme informatique
Le programme est la traduction exécutable de l’algorithme dans un langage de programmation. Contrairement au pseudo-code, il doit respecter une syntaxe stricte et les règles du langage choisi.
| # Traduction en Python longueur = float(input("Longueur : ")) largeur = float(input("Largeur : ")) perimetre = 2 * (longueur + largeur) print("Périmètre :", perimetre) |
Aspect | Appréciation |
|---|---|
| Avantages | Exécutable et testable sur une machine ; permet d’automatiser réellement le traitement. |
| Limites | Dépend d’un langage ; exige une syntaxe correcte ; peut masquer l’idée générale derrière des détails techniques. |
Comparaison des quatre représentations
Représentation | Usage principal | Niveau de précision |
|---|---|---|
| Langage naturel | Explication simple à un public large. | Faible à moyenne |
| Pseudo-code | Conception et communication d’un algorithme. | Élevée |
| Organigramme | Visualisation de l’enchaînement et des décisions. | Moyenne à élevée |
| Programme | Exécution par un ordinateur. | Très élevée, selon la syntaxe du langage |
Choix conseillé Pour apprendre l’algorithmique, il est utile de commencer par une reformulation en langage naturel, de construire ensuite le pseudo-code, d’utiliser un organigramme lorsque la logique comporte des décisions importantes, puis de traduire la solution en programme. |
Travaux dirigés
Les exercices suivants permettent de vérifier la compréhension des notions du chapitre. Il est conseillé de rédiger d’abord les réponses individuellement, puis de les comparer en groupe.
TD 1 — Décrire l’algorithme permettant de préparer une boisson
On souhaite décrire de manière algorithmique la préparation d’une boisson chaude, par exemple un thé. La personne peut choisir d’ajouter ou non du sucre.
Travail demandé :
1. Identifier les principales données d’entrée.
2. Décrire les étapes en langage naturel.
3. Introduire une condition correspondant au choix du sucre.
4. Proposer une version en pseudo-code.
5. Vérifier la finitude, la précision et la clarté de la solution.
Éléments de correction du TD 1
Analyse Entrées possibles : type de boisson, quantité d’eau, choix du sucre, quantité de sucre. Traitements : chauffer l’eau, placer la préparation dans la tasse, verser l’eau, ajouter éventuellement le sucre, mélanger. Sortie : boisson prête à être servie. |
| Algorithme Preparer_The Variables ajouter_sucre : Booléen quantite_sucre : Réel Début Prendre une tasse Faire chauffer la quantité d’eau prévue Placer le thé dans la tasse Verser l’eau chaude Lire ajouter_sucre Si ajouter_sucre = Vrai Alors Lire quantite_sucre Ajouter quantite_sucre de sucre FinSi Mélanger Afficher "Boisson prête" Fin |
Vérification des propriétés Finitude : le nombre d’étapes est limité et aucune répétition infinie n’est présente. Précision : les choix sont explicités ; la quantité de sucre doit être mesurable. Clarté : les actions sont décrites dans l’ordre. Généralité : la quantité d’eau et la quantité de sucre peuvent varier. |
TD 2 — Calculer le périmètre d’un rectangle
Concevoir un algorithme qui demande la longueur et la largeur d’un rectangle, vérifie qu’elles sont strictement positives, calcule le périmètre et affiche le résultat.
Travail demandé :
1. Identifier les entrées, le traitement et la sortie.
2. Écrire la formule utilisée.
3. Rédiger l’algorithme en pseudo-code.
4. Préparer au moins quatre jeux d’essai, dont un cas invalide.
5. Traduire éventuellement l’algorithme dans un langage de programmation.
Éléments de correction du TD 2
Élément | Description | Exemple |
|---|---|---|
| Entrées | longueur et largeur, nombres réels strictement positifs | 5 et 3 |
| Traitement | perimetre ← 2 × (longueur + largeur) | 2 × (5 + 3) = 16 |
| Sortie | périmètre ou message d’erreur | 16 |
| Algorithme Perimetre_Rectangle_Valide Variables longueur, largeur, perimetre : Réels Début Lire longueur, largeur Si longueur ≤ 0 ou largeur ≤ 0 Alors Afficher "Erreur : dimensions invalides" Sinon perimetre ← 2 × (longueur + largeur) Afficher perimetre FinSi Fin |
Longueur ; largeur | Résultat attendu | Nature du test |
|---|---|---|
| 5 ; 3 | 16 | Cas normal |
| 2,5 ; 4 | 13 | Valeurs réelles |
| 1 ; 1 | 4 | Petites valeurs positives |
| 0 ; 4 | Message d’erreur | Valeur invalide |
| -2 ; 5 | Message d’erreur | Valeur négative |
TD 3 — Identifier les entrées, traitements et sorties
Pour chaque situation, identifier les données d’entrée, les traitements et les résultats de sortie.
1. Calculer le prix total d’un achat à partir du prix unitaire et de la quantité.
2. Convertir une température exprimée en degrés Celsius vers des degrés Fahrenheit.
3. Déterminer si une personne est majeure à partir de son âge.
4. Calculer la durée d’un trajet à partir de l’heure de départ et de l’heure d’arrivée.
5. Déterminer la plus grande de trois valeurs.
Éléments de correction du TD 3
Problème | Entrées | Traitement | Sortie |
|---|---|---|---|
| Prix total | Prix unitaire, quantité | Multiplier le prix unitaire par la quantité | Prix total |
| Conversion de température | Température en °C | F ← 1,8 × C + 32 | Température en °F |
| Majorité | Âge | Comparer l’âge à 18 | « Majeur » ou « Mineur » |
| Durée d’un trajet | Heure de départ, heure d’arrivée | Calculer la différence en tenant compte du format | Durée |
| Maximum de trois valeurs | Trois nombres | Effectuer des comparaisons | La plus grande valeur |
Exercices complémentaires
1. Expliquer pourquoi l’instruction « répéter suffisamment de fois » manque de précision.
2. Donner un exemple d’algorithme correct mais peu efficace.
3. Transformer la phrase « si la température est élevée, activer le ventilateur » en une instruction plus précise en choisissant un seuil.
4. Décrire un problème pouvant avoir plusieurs algorithmes différents.
5. Écrire en langage naturel puis en pseudo-code un algorithme permettant de convertir une durée en minutes vers des heures et des minutes.
Synthèse du chapitre
- Un problème exprime un objectif ; un algorithme décrit la méthode ; un programme exécute cette méthode dans un langage précis.
- Un algorithme transforme des entrées en sorties au moyen de traitements organisés.
- Un bon algorithme doit être fini, précis, clair, correct, efficace et général.
- La résolution d’un problème suit une démarche : comprendre, identifier les données et les résultats, décomposer, concevoir, écrire, tester, valider et programmer.
- Une solution peut être représentée en langage naturel, en pseudo-code, par un organigramme ou sous forme de programme.
Question de révision Avant de programmer une solution, êtes-vous capable de répondre clairement aux trois questions suivantes : quelles sont les entrées, quels traitements faut-il réaliser et quelles sorties sont attendues ? |
Mini-évaluation formative
1. Donner une définition complète d’un algorithme.
2. Citer et expliquer quatre propriétés d’un bon algorithme.
3. Expliquer la différence entre un algorithme et un programme.
4. Présenter les huit étapes de résolution d’un problème.
5. Comparer le pseudo-code et l’organigramme.
6. Pour le calcul du volume d’un pavé droit, identifier les entrées, le traitement et la sortie.
Réponses attendues — résumé
Éléments essentiels 1. Suite finie, ordonnée et non ambiguë d’instructions transformant des entrées en sorties pour résoudre un problème. 2. Finitude, précision, clarté, correction, efficacité et généralité. 3. L’algorithme est une méthode abstraite ; le programme est sa traduction dans un langage exécutable. 4. Comprendre, identifier les entrées, identifier les sorties, décomposer, concevoir, écrire, tester et valider, traduire en programme. 5. Le pseudo-code est textuel et facile à modifier ; l’organigramme est graphique et donne une vue globale. 6. Entrées : longueur, largeur, hauteur ; traitement : volume ← longueur × largeur × hauteur ; sortie : volume. |