Leçon 1 sur 20

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éralAcquérir les notions de base permettant de comprendre, décrire, analyser et représenter un algorithme.
PrérequisAucun prérequis en programmation. Une maîtrise élémentaire des opérations arithmétiques et de la logique est suffisante.
Durée indicative4 à 6 heures de cours et d’activités, complétées par 2 heures de travaux dirigés.
Compétences viséesIdentifier 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 possibleQuestions 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éesInformations fournies avant ou pendant l’exécution.Longueur et largeur d’un rectangle.
TraitementsCalculs, comparaisons ou transformations appliqués aux entrées.Calculer 2 × (longueur + largeur).
SortiesRé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

GestionCalcul de salaires, facturation, gestion de stocks.Calculer le montant d’une facture.
WebRecherche, recommandation, authentification.Classer des résultats de recherche.
RéseauxRoutage, détection d’erreurs, allocation de ressources.Choisir un chemin pour transmettre des données.
Intelligence artificielleApprentissage, classification, planification.Reconnaître une catégorie d’image.
RobotiquePerception, navigation, commande.Éviter un obstacle.
Bases de donnéesTri, 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èmeQuestion à résoudre ou objectif à atteindre.Déterminer le plus grand de trois nombres.
AlgorithmeMéthode abstraite, structurée et indépendante d’un langage.Comparer successivement les trois nombres.
ProgrammeTraduction 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

RechercheRetrouver un élément dans une collection.Rechercher un étudiant à partir de son identifiant.
TriClasser des éléments selon un ordre.Trier des notes de la plus élevée à la plus faible.
CompressionRéduire la taille des données.Compresser une image ou un fichier.
ChiffrementTransformer des données pour les protéger.Sécuriser une communication.
RoutageChoisir un chemin dans un réseau.Acheminer un paquet sur Internet.
RecommandationProposer des éléments selon des préférences.Recommander un article ou une vidéo.
Traitement d’imageAnalyser ou modifier une image.Détecter un visage ou améliorer le contraste.
CommandePiloter 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

FinitudeL’exécution s’arrête.Existe-t-il une condition d’arrêt ?
PrécisionChaque é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 ?
CorrectionLes 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 ; 10Moyenne = 12 ; AdmisCas normal
10 ; 10 ; 10Moyenne = 10 ; AdmisCas limite d’admission
8 ; 9 ; 7Moyenne = 8 ; Non admisCas normal défavorable
0 ; 0 ; 0Moyenne = 0 ; Non admisValeur minimale valide
20 ; 20 ; 20Moyenne = 20 ; AdmisValeur maximale valide
21 ; 10 ; 12Message d’erreurEntré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

AvantagesAccessible aux débutants ; rapide pour expliquer une idée simple ; ne nécessite pas de notation particulière.
LimitesRisque 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

AvantagesStructuré ; précis ; indépendant d’un langage ; facilite la traduction en programme.
LimitesIl 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

LireObtenir une valeur fournie par l’utilisateur ou un autre système.Lire longueur
AfficherPrésenter une valeur ou un message.Afficher perimetre
Affecter une valeur à une variable.perimetre ← 2 × (L + l)
Si…Alors…SinonChoisir un traitement selon une condition.Si moyenne ≥ 10 Alors
Pour / TantQueRépéter un bloc d’instructions.Pour i allant de 1 à 10
Début / FinDé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 arrondiDébut ou finDébut, Fin
RectangleTraitement ou calculP ← 2 × (L + l)
ParallélogrammeEntrée ou sortieLire L ; Afficher P
LosangeTest ou décisionL > 0 ?
FlècheSens d’exécutionPassage d’une étape à la suivante

 

Figure 1 — Organigramme du calcul du périmètre d’un rectangle

Aspect

Appréciation

AvantagesVision globale ; lecture intuitive ; utile pour présenter les choix et les enchaînements.
LimitesPeut 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

AvantagesExécutable et testable sur une machine ; permet d’automatiser réellement le traitement.
LimitesDé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 naturelExplication simple à un public large.Faible à moyenne
Pseudo-codeConception et communication d’un algorithme.Élevée
OrganigrammeVisualisation de l’enchaînement et des décisions.Moyenne à élevée
ProgrammeExé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éeslongueur et largeur, nombres réels strictement positifs5 et 3
Traitementperimetre ← 2 × (longueur + largeur)2 × (5 + 3) = 16
Sortiepérimètre ou message d’erreur16

 

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 ; 316Cas normal
2,5 ; 413Valeurs réelles
1 ; 14Petites valeurs positives
0 ; 4Message d’erreurValeur invalide
-2 ; 5Message d’erreurValeur 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 totalPrix unitaire, quantitéMultiplier le prix unitaire par la quantitéPrix total
Conversion de températureTempérature en °CF ← 1,8 × C + 32Température en °F
MajoritéÂgeComparer l’âge à 18« Majeur » ou « Mineur »
Durée d’un trajetHeure de départ, heure d’arrivéeCalculer la différence en tenant compte du formatDurée
Maximum de trois valeursTrois nombresEffectuer des comparaisonsLa 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.