Leçon 20 sur 20

Algorithmique pour débutants : Travaux pratiques et projets

TP 1 à TP 8 avec corrections détaillées

De l’initiation aux algorithmes au mini-projet

 

Présentation générale des travaux pratiques

Les huit travaux pratiques consolident progressivement les notions étudiées dans le cours. Chaque séance associe analyse du problème, écriture algorithmique, test manuel et correction argumentée.

TP

Thème

Compétences principales

TP 1

Premiers algorithmes

Entrées-sorties, calculs, conversions, affectation

TP 2

Conditions

Tests, alternatives, choix multiples, équations

TP 3

Boucles

Compteurs, accumulateurs, répétitions, suites

TP 4

Tableaux

Parcours, statistiques, recherche, inversion

TP 5

Chaînes

Parcours, analyse, validation

TP 6

Fonctions et procédures

Modularité, paramètres, validation

TP 7

Recherche et tri

Recherche séquentielle/dichotomique, tris simples

TP 8

Mini-projet

Analyse, conception, modularité, tests, présentation

Convention de pseudo-code

Élément

Notation utilisée

Affectation

variable ← expression

Entrée

Lire(variable)

Sortie

Écrire(expression)

Condition

Si … Alors … Sinon … FinSi

Boucle

Pour, TantQue ou Répéter…Jusqu’à

Tableau

T[0..n−1]

Fonction

Fonction Nom(paramètres) : Type

Important : Les corrections représentent une solution de référence. D’autres algorithmes sont acceptables s’ils sont corrects, terminants, lisibles et correctement testés.

TP 1 — Premiers algorithmes

Élément

Description

Durée indicative

2 à 3 heures

Prérequis

Structure générale, variables, types et opérateurs

Organisation

Travail individuel ou en binôme

Livrable

Pseudo-code, jeux d’essai et réponses aux questions

Objectifs pédagogiques

  • Utiliser les instructions Lire, Écrire et l’affectation.
  • Construire des expressions arithmétiques.
  • Réaliser des conversions d’unités.
  • Comprendre l’échange de deux variables.

Méthode de travail : Lire chaque énoncé, identifier les entrées et sorties, écrire le pseudo-code, effectuer au moins un test manuel, puis comparer avec la correction.

Exercice 1 — Présentation d’un utilisateur

Écrire un algorithme qui demande le prénom et l’âge d’une personne, puis affiche une phrase de bienvenue.

Travail demandé

  • Identifier les types adaptés.
  • Afficher : « Bonjour prénom, vous avez âge ans. »

Jeux d’essai proposés

Entrées

Résultat attendu

prénom = Lina, âge = 19

Bonjour Lina, vous avez 19 ans.

Exercice 2 — Calculs sur deux nombres

Lire deux nombres réels a et b, puis afficher leur somme, leur différence, leur produit et leur moyenne.

Travail demandé

  • Prévoir des variables distinctes pour les résultats.
  • Tester avec des nombres positifs, négatifs et décimaux.

Jeux d’essai proposés

Entrées

Résultat attendu

a = 8, b = 4

somme = 12 ; différence = 4 ; produit = 32 ; moyenne = 6

a = −3, b = 5

somme = 2 ; différence = −8 ; produit = −15 ; moyenne = 1

Exercice 3 — Rectangle

Lire la longueur et la largeur d’un rectangle, puis calculer son périmètre et sa surface.

Travail demandé

  • Écrire les formules utilisées.
  • Vérifier que les valeurs sont exprimées dans la même unité.

Jeux d’essai proposés

Entrées

Résultat attendu

L = 7, l = 3

périmètre = 20 ; surface = 21

Exercice 4 — Conversion de température

Convertir une température exprimée en degrés Celsius en degrés Fahrenheit à l’aide de la formule F = 1,8 × C + 32.

Travail demandé

  • Lire une valeur réelle.
  • Afficher le résultat avec son unité.

Jeux d’essai proposés

Entrées

Résultat attendu

C = 0

F = 32

C = 25

F = 77

C = −10

F = 14

Exercice 5 — Conversion d’une durée

Une durée est donnée en secondes. La convertir en heures, minutes et secondes.

Travail demandé

  • Utiliser la division entière et le modulo.
  • Vérifier la reconstruction de la durée initiale.

Jeux d’essai proposés

Entrées

Résultat attendu

durée = 3672

1 h 1 min 12 s

durée = 59

0 h 0 min 59 s

Exercice 6 — Échange de deux variables

Lire deux valeurs A et B, puis échanger leurs contenus en utilisant une variable temporaire.

Travail demandé

  • Afficher les valeurs avant et après l’échange.
  • Expliquer le rôle de la variable temporaire.

Jeux d’essai proposés

Entrées

Résultat attendu

A = 5, B = 9

Après échange : A = 9, B = 5

Corrections du TP 1

Correction 1 — Présentation

Les deux données sont lues puis utilisées directement dans l’affichage.

Pseudo-code corrigé

Algorithme Presentation
Variables prenom : Chaîne ; age : Entier
Début
     Écrire("Votre prénom : ")
     Lire(prenom)
     Écrire("Votre âge : ")
     Lire(age)
     Écrire("Bonjour ", prenom, ", vous avez ", age, " ans.")
Fin

Correction 2 — Calculs sur deux nombres

La moyenne est obtenue en divisant la somme par 2.

Pseudo-code corrigé

Algorithme CalculsDeuxNombres
Variables a, b, somme, difference, produit, moyenne : Réel
Début
     Lire(a, b)
     somme ← a + b
     difference ← a - b
     produit ← a * b
     moyenne ← somme / 2
     Écrire(somme, difference, produit, moyenne)
Fin

Correction 3 — Rectangle

Le périmètre correspond à deux longueurs et deux largeurs ; la surface est le produit des dimensions.

Pseudo-code corrigé

Algorithme Rectangle
Variables longueur, largeur, perimetre, surface : Réel
Début
     Lire(longueur, largeur)
     perimetre ← 2 * (longueur + largeur)
     surface ← longueur * largeur
     Écrire("Périmètre : ", perimetre)
     Écrire("Surface : ", surface)
Fin

Correction 4 — Température

La formule est appliquée après la lecture de la température Celsius.

Pseudo-code corrigé

Algorithme CelsiusVersFahrenheit
Variables celsius, fahrenheit : Réel
Début
     Lire(celsius)
     fahrenheit ← 1.8 * celsius + 32
     Écrire(fahrenheit, " °F")
Fin

Correction 5 — Durée

La division entière extrait les unités complètes ; le modulo conserve le reste.

Pseudo-code corrigé

Algorithme ConvertirDuree
Variables total, heures, minutes, secondes, reste : Entier
Début
     Lire(total)
     heures ← total div 3600
     reste ← total mod 3600
     minutes ← reste div 60
     secondes ← reste mod 60
     Écrire(heures, " h ", minutes, " min ", secondes, " s")
Fin

À retenir : On doit avoir total = heures × 3600 + minutes × 60 + secondes.

Correction 6 — Échange

Sans variable temporaire, la première valeur serait perdue après la première affectation.

Pseudo-code corrigé

Algorithme Echanger
Variables A, B, temp : Réel
Début
     Lire(A, B)
     temp ← A
     A ← B
     B ← temp
     Écrire(A, B)
Fin

TP 2 — Conditions

Élément

Description

Durée indicative

3 heures

Prérequis

Opérateurs relationnels et logiques, structures conditionnelles

Organisation

Travail individuel ou en binôme

Livrable

Pseudo-code, jeux d’essai et réponses aux questions

Objectifs pédagogiques

  • Choisir entre condition simple, alternative et conditions imbriquées.
  • Ordonner correctement plusieurs tests.
  • Traiter les cas particuliers.
  • Résoudre des problèmes à plusieurs branches.

Méthode de travail : Lire chaque énoncé, identifier les entrées et sorties, écrire le pseudo-code, effectuer au moins un test manuel, puis comparer avec la correction.

Exercice 1 — Maximum de deux puis de trois valeurs

Écrire un algorithme qui détermine d’abord le maximum de deux nombres, puis une seconde version pour trois nombres.

Travail demandé

  • Prévoir le cas de valeurs égales.
  • Éviter les comparaisons inutiles.

Jeux d’essai proposés

Entrées

Résultat attendu

4, 9

maximum = 9

7, 7, 2

maximum = 7

Exercice 2 — Mention

Lire une note comprise entre 0 et 20 et afficher : Ajourné si note < 10, Passable de 10 à moins de 12, Assez bien de 12 à moins de 14, Bien de 14 à moins de 16, Très bien à partir de 16.

Travail demandé

  • Contrôler d’abord que la note est valide.
  • Tester les frontières 10, 12, 14 et 16.

Exercice 3 — Tarif selon des critères

Une salle de sport applique le tarif mensuel suivant : 100 DH pour les moins de 18 ans, 150 DH de 18 à 59 ans et 90 DH à partir de 60 ans. Une réduction supplémentaire de 10 % est accordée aux étudiants.

Travail demandé

  • Lire l’âge et le statut étudiant.
  • Calculer puis afficher le tarif final.

Jeux d’essai proposés

Entrées

Résultat attendu

âge = 16, étudiant = non

100 DH

âge = 22, étudiant = oui

135 DH

âge = 65, étudiant = oui

81 DH

Exercice 4 — Équation du premier degré

Résoudre l’équation ax + b = 0 en traitant les cas a ≠ 0, a = 0 et b = 0.

Travail demandé

  • Distinguer solution unique, aucune solution et infinité de solutions.

Exercice 5 — Équation du second degré

Résoudre ax² + bx + c = 0 dans l’ensemble des réels. Si a = 0, ramener le problème à une équation du premier degré.

Travail demandé

  • Calculer le discriminant Δ = b² − 4ac.
  • Traiter Δ < 0, Δ = 0 et Δ > 0.

Corrections du TP 2

Correction 1 — Maximum

Une variable max est initialisée avec la première valeur, puis mise à jour lorsque nécessaire.

Pseudo-code corrigé

Algorithme MaximumTrois
Variables a, b, c, max : Réel
Début
     Lire(a, b, c)
     max ← a
     Si b > max Alors max ← b FinSi
     Si c > max Alors max ← c FinSi
     Écrire(max)
Fin

Correction 2 — Mention

Les intervalles doivent être testés dans un ordre cohérent et sans chevauchement.

Pseudo-code corrigé

Algorithme Mention
Variables note : Réel
Début
     Lire(note)
     Si note < 0 OU note > 20 Alors
         Écrire("Note invalide")
     SinonSi note < 10 Alors
         Écrire("Ajourné")
     SinonSi note < 12 Alors
         Écrire("Passable")
     SinonSi note < 14 Alors
         Écrire("Assez bien")
     SinonSi note < 16 Alors
         Écrire("Bien")
     Sinon
         Écrire("Très bien")
     FinSi
Fin

À retenir : Lorsque les tests sont effectués par ordre croissant, chaque condition profite des conditions précédemment éliminées.

Correction 3 — Tarif

On détermine d’abord le tarif de base selon l’âge, puis on applique éventuellement la réduction.

Pseudo-code corrigé

Algorithme TarifSalle
Variables age : Entier ; etudiant : Booléen ; tarif : Réel
Début
     Lire(age, etudiant)
     Si age < 18 Alors
         tarif ← 100
     SinonSi age < 60 Alors
         tarif ← 150
     Sinon
         tarif ← 90
     FinSi
     Si etudiant Alors tarif ← tarif * 0.90 FinSi
     Écrire(tarif, " DH")
Fin

Correction 4 — Premier degré

Lorsque a est nul, le terme contenant x disparaît.

Pseudo-code corrigé

Algorithme EquationPremierDegre
Variables a, b, x : Réel
Début
     Lire(a, b)
     Si a ≠ 0 Alors
         x ← -b / a
         Écrire("Solution : ", x)
     SinonSi b = 0 Alors
         Écrire("Infinité de solutions")
     Sinon
         Écrire("Aucune solution")
     FinSi
Fin

Correction 5 — Second degré

Le discriminant détermine le nombre de solutions réelles.

Pseudo-code corrigé

Algorithme EquationSecondDegre
Variables a, b, c, delta, x1, x2 : Réel
Début
     Lire(a, b, c)
     Si a = 0 Alors
         Si b ≠ 0 Alors Écrire(-c / b)
         SinonSi c = 0 Alors Écrire("Infinité de solutions")
         Sinon Écrire("Aucune solution") FinSi
     Sinon
         delta ← b*b - 4*a*c
         Si delta < 0 Alors
            Écrire("Aucune solution réelle")
         SinonSi delta = 0 Alors
            Écrire("x = ", -b / (2*a))
         Sinon
            x1 ← (-b - Racine(delta)) / (2*a)
            x2 ← (-b + Racine(delta)) / (2*a)
            Écrire(x1, x2)
         FinSi
     FinSi
Fin

TP 3 — Boucles

Élément

Description

Durée indicative

3 à 4 heures

Prérequis

Structures Pour, TantQue et Répéter…Jusqu’à

Organisation

Travail individuel ou en binôme

Livrable

Pseudo-code, jeux d’essai et réponses aux questions

Objectifs pédagogiques

  • Utiliser compteurs et accumulateurs.
  • Choisir une boucle adaptée.
  • Contrôler une condition d’arrêt.
  • Construire des suites numériques.

Méthode de travail : Lire chaque énoncé, identifier les entrées et sorties, écrire le pseudo-code, effectuer au moins un test manuel, puis comparer avec la correction.

Exercice 1 — Sommes et produits

Lire un entier positif N, calculer la somme 1 + 2 + … + N et le produit 1 × 2 × … × N.

Travail demandé

  • Utiliser deux accumulateurs correctement initialisés.
  • Comparer le produit obtenu avec la factorielle de N.

Exercice 2 — Factorielle

Calculer N! pour un entier N ≥ 0. Rappeler que 0! = 1.

Travail demandé

  • Valider la saisie.
  • Tester N = 0, 1 et 5.

Exercice 3 — Table de multiplication

Afficher la table de multiplication d’un entier N de N × 0 à N × 10.

Travail demandé

  • Présenter chaque ligne sous une forme lisible.

Exercice 4 — Nombres premiers

Déterminer si un entier N ≥ 2 est premier.

Travail demandé

  • Chercher un diviseur entre 2 et la racine carrée de N.
  • Arrêter la recherche dès qu’un diviseur est trouvé.

Jeux d’essai proposés

Entrées

Résultat attendu

N = 2

premier

N = 21

non premier, divisible par 3

N = 29

premier

Exercice 5 — Suite de Fibonacci

Afficher les N premiers termes de la suite définie par F0 = 0, F1 = 1 et Fn = Fn−1 + Fn−2.

Travail demandé

  • Traiter N = 1 et N = 2.
  • Utiliser trois variables pour faire évoluer les termes.

Corrections du TP 3

Correction 1 — Somme et produit

La somme commence à 0 ; le produit commence à 1, élément neutre de la multiplication.

Pseudo-code corrigé

Algorithme SommeProduit
Variables N, i, somme, produit : Entier
Début
     Lire(N)
     somme ← 0
     produit ← 1
     Pour i allant de 1 à N Faire
         somme ← somme + i
         produit ← produit * i
     FinPour
     Écrire(somme, produit)
Fin

i

somme

produit

initial

0

1

1

1

1

2

3

2

3

6

6

4

10

24

Correction 2 — Factorielle

La validation garantit que le calcul n’est lancé qu’avec un entier non négatif.

Pseudo-code corrigé

Algorithme Factorielle
Variables N, i, fact : Entier
Début
     Répéter
         Lire(N)
     Jusqu’à N ≥ 0
     fact ← 1
     Pour i allant de 2 à N Faire
         fact ← fact * i
     FinPour
     Écrire(fact)
Fin

Correction 3 — Table

Le compteur représente le multiplicateur courant.

Pseudo-code corrigé

Algorithme TableMultiplication
Variables N, i : Entier
Début
     Lire(N)
     Pour i allant de 0 à 10 Faire
         Écrire(N, " × ", i, " = ", N*i)
     FinPour
Fin

Correction 4 — Nombre premier

Il suffit de tester les diviseurs jusqu’à √N. Si N possède un diviseur plus grand, il possède aussi un diviseur associé plus petit.

Pseudo-code corrigé

Algorithme EstPremier
Variables N, d : Entier ; premier : Booléen
Début
     Lire(N)
     Si N < 2 Alors
         premier ← Faux
     Sinon
         premier ← Vrai
         d ← 2
         TantQue d*d ≤ N ET premier Faire
            Si N mod d = 0 Alors premier ← Faux
            Sinon d ← d + 1
            FinSi
         FinTantQue
     FinSi
     Écrire(premier)
Fin

À retenir : L’arrêt anticipé évite les tests inutiles après la découverte d’un diviseur.

Correction 5 — Fibonacci

À chaque tour, le nouveau terme est calculé puis les deux termes précédents sont décalés.

Pseudo-code corrigé

Algorithme Fibonacci
Variables N, i, a, b, suivant : Entier
Début
     Lire(N)
     Si N ≥ 1 Alors Écrire(0) FinSi
     Si N ≥ 2 Alors Écrire(1) FinSi
     a ← 0 ; b ← 1
     Pour i allant de 3 à N Faire
         suivant ← a + b
         Écrire(suivant)
         a ← b
         b ← suivant
     FinPour
Fin

TP 4 — Tableaux

Élément

Description

Durée indicative

3 à 4 heures

Prérequis

Tableaux à une dimension et boucles

Organisation

Travail individuel ou en binôme

Livrable

Pseudo-code, jeux d’essai et réponses aux questions

Objectifs pédagogiques

  • Saisir et afficher un tableau.
  • Calculer minimum, maximum et moyenne.
  • Rechercher une valeur.
  • Inverser les éléments d’un tableau.

Méthode de travail : Lire chaque énoncé, identifier les entrées et sorties, écrire le pseudo-code, effectuer au moins un test manuel, puis comparer avec la correction.

Exercice 1 — Saisie et affichage

Saisir N valeurs réelles dans un tableau T, puis les afficher avec leurs indices.

Travail demandé

  • Vérifier que 1 ≤ N ≤ capacité du tableau.

Exercice 2 — Minimum et maximum

Trouver la plus petite et la plus grande valeur d’un tableau non vide, ainsi que leurs premiers indices.

Travail demandé

  • Initialiser avec le premier élément et non avec une valeur arbitraire.

Exercice 3 — Moyenne

Calculer la moyenne des éléments et compter combien d’éléments sont strictement supérieurs à cette moyenne.

Travail demandé

  • Effectuer deux parcours : calcul de la moyenne, puis comptage.

Exercice 4 — Recherche

Rechercher une valeur x dans le tableau. Afficher le premier indice trouvé ou −1 si elle est absente. Proposer ensuite une version comptant toutes les occurrences.

Travail demandé

  • Utiliser un arrêt anticipé pour la première version.


 

 

Exercice 5 — Inversion

Inverser le tableau sur place : le premier élément échange sa place avec le dernier, le deuxième avec l’avant-dernier, etc.

Travail demandé

  • Effectuer uniquement N div 2 échanges.

Corrections du TP 4

Correction 1 — Saisie et affichage

La même boucle peut être utilisée avec une instruction de lecture puis avec une instruction d’affichage.

Pseudo-code corrigé

Algorithme SaisirAfficherTableau
Variables N, i : Entier ; T : Tableau[0..99] de Réel
Début
     Répéter Lire(N) Jusqu’à 1 ≤ N ET N ≤ 100
     Pour i allant de 0 à N-1 Faire Lire(T[i]) FinPour
     Pour i allant de 0 à N-1 Faire Écrire(i, " : ", T[i]) FinPour
Fin

Correction 2 — Minimum et maximum

L’initialisation avec T[0] rend l’algorithme correct même si toutes les valeurs sont négatives.

Pseudo-code corrigé

Algorithme MinMax
Variables N, i, iMin, iMax : Entier
Variables T : Tableau[0..99] de Réel ; min, max : Réel
Début
     Lire(N) ; Pour i de 0 à N-1 Faire Lire(T[i]) FinPour
     min ← T[0] ; max ← T[0] ; iMin ← 0 ; iMax ← 0
     Pour i allant de 1 à N-1 Faire
         Si T[i] < min Alors min ← T[i] ; iMin ← i FinSi
         Si T[i] > max Alors max ← T[i] ; iMax ← i FinSi
     FinPour
     Écrire(min, iMin, max, iMax)
Fin

Correction 3 — Moyenne et comptage

Le seuil « moyenne » n’est connu qu’après le calcul de la somme ; un second parcours est donc nécessaire.

Pseudo-code corrigé

Algorithme MoyenneEtSuperieurs
Variables N, i, compteur : Entier ; somme, moyenne : Réel
Variables T : Tableau[0..99] de Réel
Début
     Lire(N) ; somme ← 0
     Pour i de 0 à N-1 Faire Lire(T[i]) ; somme ← somme + T[i] FinPour
     moyenne ← somme / N
     compteur ← 0
     Pour i de 0 à N-1 Faire
         Si T[i] > moyenne Alors compteur ← compteur + 1 FinSi
     FinPour
     Écrire(moyenne, compteur)
Fin

Correction 4 — Recherche

La première version mémorise −1 tant qu’aucune occurrence n’a été trouvée.

Pseudo-code corrigé

Algorithme Rechercher
Variables N, i, position, occurrences : Entier ; x : Réel
Variables T : Tableau[0..99] de Réel
Début
     Lire(N) ; Pour i de 0 à N-1 Faire Lire(T[i]) FinPour ; Lire(x)
     position ← -1 ; i ← 0
     TantQue i < N ET position = -1 Faire
         Si T[i] = x Alors position ← i Sinon i ← i + 1 FinSi
     FinTantQue
     occurrences ← 0
     Pour i de 0 à N-1 Faire
         Si T[i] = x Alors occurrences ← occurrences + 1 FinSi
     FinPour
     Écrire(position, occurrences)
Fin

Correction 5 — Inversion

Chaque échange place simultanément deux éléments à leur position finale.

Pseudo-code corrigé

Algorithme InverserTableau
Variables N, i : Entier ; temp : Réel
Variables T : Tableau[0..99] de Réel
Début
     Lire(N) ; Pour i de 0 à N-1 Faire Lire(T[i]) FinPour
     Pour i allant de 0 à (N div 2)-1 Faire
         temp ← T[i]
         T[i] ← T[N-1-i]
         T[N-1-i] ← temp
     FinPour
     Pour i de 0 à N-1 Faire Écrire(T[i]) FinPour
Fin

TP 5 — Chaînes de caractères

Élément

Description

Durée indicative

3 heures

Prérequis

Chaînes, indices, boucles et conditions

Organisation

Travail individuel ou en binôme

Livrable

Pseudo-code, jeux d’essai et réponses aux questions

Objectifs pédagogiques

  • Parcourir une chaîne caractère par caractère.
  • Compter et rechercher des motifs simples.
  • Normaliser une chaîne pour effectuer des comparaisons.
  • Valider un mot de passe selon plusieurs règles.

Méthode de travail : Lire chaque énoncé, identifier les entrées et sorties, écrire le pseudo-code, effectuer au moins un test manuel, puis comparer avec la correction.

Exercice 1 — Comptage des voyelles

Lire une chaîne et compter ses voyelles, sans distinguer majuscules et minuscules.

Travail demandé

  • Considérer a, e, i, o, u et y.
  • Afficher également la longueur de la chaîne.

Exercice 2 — Palindrome

Déterminer si un mot est un palindrome. Une seconde version doit ignorer la casse et les espaces d’une phrase.

Travail demandé

  • Comparer les caractères symétriques.
  • Arrêter dès qu’une différence est trouvée.

Jeux d’essai proposés

Entrées

Résultat attendu

radar

vrai

Kayak

vrai après conversion en minuscules

bonjour

faux

Exercice 3 — Nombre de mots

Compter le nombre de mots d’une phrase, en considérant qu’un mot est une suite de caractères non espaces.

Travail demandé

  • Gérer plusieurs espaces consécutifs et les espaces au début ou à la fin.


 

 

Exercice 4 — Mot de passe

Un mot de passe est valide s’il contient au moins 8 caractères, une majuscule, une minuscule, un chiffre et aucun espace.

Travail demandé

  • Produire un message indiquant les règles non respectées.

Corrections du TP 5

Correction 1 — Voyelles

Chaque caractère est converti en minuscule avant le test.

Pseudo-code corrigé

Algorithme CompterVoyelles
Variables texte : Chaîne ; i, compteur : Entier ; c : Caractère
Début
     Lire(texte)
     compteur ← 0
     Pour i allant de 0 à Longueur(texte)-1 Faire
         c ← Minuscule(texte[i])
         Si c = 'a' OU c = 'e' OU c = 'i' OU c = 'o' OU c = 'u' OU c = 'y' Alors
            compteur ← compteur + 1
         FinSi
     FinPour
     Écrire(Longueur(texte), compteur)
Fin

Correction 2 — Palindrome

Deux indices se déplacent depuis les extrémités vers le centre.

Pseudo-code corrigé

Fonction EstPalindrome(mot : Chaîne) : Booléen
Variables gauche, droite : Entier ; ok : Booléen
Début
     mot ← Minuscule(SupprimerEspaces(mot))
     gauche ← 0 ; droite ← Longueur(mot)-1 ; ok ← Vrai
     TantQue gauche < droite ET ok Faire
         Si mot[gauche] ≠ mot[droite] Alors ok ← Faux
         Sinon gauche ← gauche + 1 ; droite ← droite - 1
         FinSi
     FinTantQue
     Retourner ok
Fin

Correction 3 — Nombre de mots

On compte une entrée dans un mot : caractère courant non espace et caractère précédent espace, ou début de chaîne.

Pseudo-code corrigé

Fonction NombreMots(phrase : Chaîne) : Entier
Variables i, compteur : Entier ; dansMot : Booléen
Début
     compteur ← 0 ; dansMot ← Faux
     Pour i allant de 0 à Longueur(phrase)-1 Faire
         Si phrase[i] ≠ ' ' ET NON dansMot Alors
            compteur ← compteur + 1
            dansMot ← Vrai
         SinonSi phrase[i] = ' ' Alors
            dansMot ← Faux
         FinSi
     FinPour
     Retourner compteur
Fin

Correction 4 — Mot de passe

Quatre indicateurs mémorisent la présence des catégories requises.

Pseudo-code corrigé

Fonction MotDePasseValide(mdp : Chaîne) : Booléen
Variables i : Entier ; maj, min, chiffre, espace : Booléen ; c : Caractère
Début
     maj ← Faux ; min ← Faux ; chiffre ← Faux ; espace ← Faux
     Pour i de 0 à Longueur(mdp)-1 Faire
         c ← mdp[i]
         Si EstMajuscule(c) Alors maj ← Vrai FinSi
         Si EstMinuscule(c) Alors min ← Vrai FinSi
         Si EstChiffre(c) Alors chiffre ← Vrai FinSi
         Si c = ' ' Alors espace ← Vrai FinSi
     FinPour
     Retourner Longueur(mdp) ≥ 8 ET maj ET min ET chiffre ET NON espace
Fin

À retenir : Pour expliquer les erreurs, tester séparément chaque règle et afficher le message correspondant.

TP 6 — Fonctions et procédures

Élément

Description

Durée indicative

4 heures

Prérequis

Modularité, paramètres, tableaux et validation

Organisation

Travail individuel ou en binôme

Livrable

Pseudo-code, jeux d’essai et réponses aux questions

Objectifs pédagogiques

  • Écrire des fonctions courtes et réutilisables.
  • Distinguer fonction et procédure.
  • Utiliser paramètres d’entrée et de sortie.
  • Construire une petite bibliothèque algorithmique.

Méthode de travail : Lire chaque énoncé, identifier les entrées et sorties, écrire le pseudo-code, effectuer au moins un test manuel, puis comparer avec la correction.

Exercice 1 — Bibliothèque mathématique

Créer les fonctions Carre(x), Maximum(a,b), ValeurAbsolue(x), EstPair(n) et PuissanceEntiere(x,n).

Travail demandé

  • Indiquer les types des paramètres et des résultats.
  • Tester chaque fonction indépendamment.

Exercice 2 — Calculs mathématiques

Créer une fonction PGCD(a,b) utilisant l’algorithme d’Euclide et une fonction PPCM(a,b) utilisant le PGCD.

Travail demandé

  • Traiter les valeurs positives.
  • Rappeler : PPCM(a,b) = |a×b| / PGCD(a,b).

Exercice 3 — Manipulation de tableaux

Écrire les modules SaisirTableau, AfficherTableau, SommeTableau, MoyenneTableau, IndiceMaximum et InverserTableau.

Travail demandé

  • Préciser quels modules modifient le tableau.
  • Réutiliser les fonctions dans un programme principal.

Exercice 4 — Validation des entrées

Créer LireEntierIntervalle(min,max) qui répète la saisie jusqu’à obtenir un entier compris dans l’intervalle.

Travail demandé

  • Utiliser cette fonction pour lire une note entre 0 et 20 et un nombre d’étudiants entre 1 et 40.


 

 

Exercice 5 — Programme intégré

Construire un programme modulaire qui saisit les notes d’une classe, calcule la moyenne, affiche la meilleure note et compte les admis.

Travail demandé

  • Un étudiant est admis si sa note est supérieure ou égale à 10.
  • Le programme principal doit rester court et lisible.

Corrections du TP 6

Correction 1 — Bibliothèque mathématique

Chaque fonction réalise une seule opération et renvoie explicitement son résultat.

Pseudo-code corrigé

Fonction Carre(x : Réel) : Réel
Début Retourner x*x Fin

Fonction Maximum(a, b : Réel) : Réel
Début Si a ≥ b Alors Retourner a Sinon Retourner b FinSi Fin

Fonction ValeurAbsolue(x : Réel) : Réel
Début Si x < 0 Alors Retourner -x Sinon Retourner x FinSi Fin

Fonction EstPair(n : Entier) : Booléen
Début Retourner n mod 2 = 0 Fin

Fonction PuissanceEntiere(x : Réel, n : Entier) : Réel
Variables i : Entier ; p : Réel
Début
     p ← 1
     Pour i de 1 à n Faire p ← p*x FinPour
     Retourner p
Fin

Correction 2 — PGCD et PPCM

Le PGCD est calculé par divisions successives. Le PPCM réutilise directement cette fonction.

Pseudo-code corrigé

Fonction PGCD(a, b : Entier) : Entier
Variables r : Entier
Début
     TantQue b ≠ 0 Faire
         r ← a mod b
         a ← b
         b ← r
     FinTantQue
     Retourner a
Fin

Fonction PPCM(a, b : Entier) : Entier
Début
     Retourner ValeurAbsolue(a*b) div PGCD(a,b)
Fin

Correction 3 — Modules de tableau

Les procédures de saisie et d’inversion modifient le tableau ; les fonctions statistiques ne le modifient pas.

Pseudo-code corrigé

Procédure SaisirTableau(Sortie T : Tableau, Entrée N : Entier)
Variables i : Entier
Début Pour i de 0 à N-1 Faire Lire(T[i]) FinPour Fin

Fonction SommeTableau(T : Tableau, N : Entier) : Réel
Variables i : Entier ; s : Réel
Début s ← 0 ; Pour i de 0 à N-1 Faire s ← s + T[i] FinPour ; Retourner s Fin

Fonction MoyenneTableau(T : Tableau, N : Entier) : Réel
Début Retourner SommeTableau(T,N) / N Fin

Fonction IndiceMaximum(T : Tableau, N : Entier) : Entier
Variables i, imax : Entier
Début imax ← 0 ; Pour i de 1 à N-1 Faire Si T[i] > T[imax] Alors imax ← i FinSi FinPour ; Retourner imax Fin

Correction 4 — Validation

La fonction encapsule la répétition de saisie et peut être réutilisée partout.

Pseudo-code corrigé

Fonction LireEntierIntervalle(min, max : Entier) : Entier
Variables valeur : Entier
Début
     Répéter
         Écrire("Entier entre ", min, " et ", max, " : ")
         Lire(valeur)
     Jusqu’à valeur ≥ min ET valeur ≤ max
     Retourner valeur
Fin

Correction 5 — Programme intégré

Le programme principal orchestre les fonctions sans contenir les détails de calcul.

Pseudo-code corrigé

Algorithme GestionNotesModulaire
Variables N, i, admis, imax : Entier ; notes : Tableau[0..39] de Réel ; moyenne : Réel
Début
     N ← LireEntierIntervalle(1,40)
     Pour i de 0 à N-1 Faire notes[i] ← LireReelIntervalle(0,20) FinPour
     moyenne ← MoyenneTableau(notes,N)
     imax ← IndiceMaximum(notes,N)
     admis ← CompterSuperieursOuEgaux(notes,N,10)
     AfficherTableau(notes,N)
     Écrire("Moyenne : ", moyenne)
     Écrire("Meilleure note : ", notes[imax])
     Écrire("Nombre d’admis : ", admis)
Fin

TP 7 — Recherche et tri

Élément

Description

Durée indicative

4 heures

Prérequis

Tableaux, fonctions, complexité élémentaire

Organisation

Travail individuel ou en binôme

Livrable

Pseudo-code, jeux d’essai et réponses aux questions

Objectifs pédagogiques

  • Implémenter deux méthodes de recherche.
  • Comprendre la condition de tri préalable.
  • Implémenter trois tris simples.
  • Comparer les résultats et le nombre d’opérations.

Méthode de travail : Lire chaque énoncé, identifier les entrées et sorties, écrire le pseudo-code, effectuer au moins un test manuel, puis comparer avec la correction.

Exercice 1 — Recherche séquentielle

Écrire une fonction qui renvoie le premier indice de x dans T, ou −1. Ajouter une version qui renvoie le nombre d’occurrences.

Travail demandé

  • Tester un élément présent au début, au milieu, à la fin et absent.

Exercice 2 — Recherche dichotomique

Dans un tableau trié croissant, rechercher x par division successive de l’intervalle.

Travail demandé

  • Écrire une version itérative.
  • Vérifier que les bornes gauche et droite évoluent à chaque tour.

Exercice 3 — Tri par sélection

Trier un tableau dans l’ordre croissant en sélectionnant le minimum de la partie non triée.

Travail demandé

  • Afficher le tableau après chaque passe.

Exercice 4 — Tri à bulles

Trier un tableau en comparant les éléments voisins. Arrêter lorsque aucune permutation n’a eu lieu.

Travail demandé

  • Compter le nombre de comparaisons et d’échanges.

Exercice 5 — Tri par insertion

Insérer chaque élément dans la partie déjà triée du tableau.

Travail demandé

  • Tester avec un tableau presque trié et un tableau inversé.

Corrections du TP 7

Correction 1 — Recherche séquentielle

La recherche de la première occurrence s’arrête dès que la valeur est trouvée.

Pseudo-code corrigé

Fonction RechercheSequentielle(T : Tableau, N : Entier, x : Réel) : Entier
Variables i : Entier
Début
     i ← 0
     TantQue i < N ET T[i] ≠ x Faire i ← i + 1 FinTantQue
     Si i < N Alors Retourner i Sinon Retourner -1 FinSi
Fin

Fonction NombreOccurrences(T : Tableau, N : Entier, x : Réel) : Entier
Variables i, c : Entier
Début c ← 0 ; Pour i de 0 à N-1 Faire Si T[i] = x Alors c ← c+1 FinSi FinPour ; Retourner c Fin

Correction 2 — Recherche dichotomique

La méthode suppose le tableau trié et élimine la moitié de l’intervalle à chaque comparaison.

Pseudo-code corrigé

Fonction RechercheDichotomique(T : Tableau, N : Entier, x : Réel) : Entier
Variables gauche, droite, milieu : Entier
Début
     gauche ← 0 ; droite ← N-1
     TantQue gauche ≤ droite Faire
         milieu ← (gauche + droite) div 2
         Si T[milieu] = x Alors Retourner milieu
         SinonSi x < T[milieu] Alors droite ← milieu - 1
         Sinon gauche ← milieu + 1
         FinSi
     FinTantQue
     Retourner -1
Fin

gauche

droite

milieu

T[milieu]

décision

0

7

3

16

x > 16

4

7

5

27

x < 27

4

4

4

21

trouvé

Correction 3 — Tri par sélection

À la passe i, la plus petite valeur de T[i..N−1] est placée en position i.

Pseudo-code corrigé

Procédure TriSelection(EntréeSortie T : Tableau, Entrée N : Entier)
Variables i, j, imin : Entier ; temp : Réel
Début
     Pour i de 0 à N-2 Faire
         imin ← i
         Pour j de i+1 à N-1 Faire
            Si T[j] < T[imin] Alors imin ← j FinSi
         FinPour
         Si imin ≠ i Alors
            temp ← T[i] ; T[i] ← T[imin] ; T[imin] ← temp
         FinSi
     FinPour
Fin

Correction 4 — Tri à bulles optimisé

Si une passe complète ne produit aucun échange, le tableau est déjà trié.

Pseudo-code corrigé

Procédure TriBulles(EntréeSortie T : Tableau, Entrée N : Entier)
Variables i, j : Entier ; temp : Réel ; echange : Booléen
Début
     i ← N-1
     Répéter
         echange ← Faux
         Pour j de 0 à i-1 Faire
            Si T[j] > T[j+1] Alors
                temp ← T[j] ; T[j] ← T[j+1] ; T[j+1] ← temp
                echange ← Vrai
            FinSi
         FinPour
         i ← i - 1
     Jusqu’à NON echange OU i = 0
Fin

Correction 5 — Tri par insertion

La clé est mémorisée, les valeurs plus grandes sont décalées vers la droite, puis la clé est insérée.

Pseudo-code corrigé

Procédure TriInsertion(EntréeSortie T : Tableau, Entrée N : Entier)
Variables i, j : Entier ; cle : Réel
Début
     Pour i de 1 à N-1 Faire
         cle ← T[i]
         j ← i-1
         TantQue j ≥ 0 ET T[j] > cle Faire
            T[j+1] ← T[j]
            j ← j-1
         FinTantQue
         T[j+1] ← cle
     FinPour
Fin

À retenir : Le tri par insertion est souvent efficace sur un tableau de petite taille ou presque trié.

Comparaison expérimentale

Méthode

Précondition

Meilleur cas

Pire cas

Observation

Recherche séquentielle

Aucune

O(1)

O(n)

Convient aux données non triées

Recherche dichotomique

Tableau trié

O(1)

O(log n)

Très rapide pour de grandes tailles

Sélection

Aucune

O(n²)

O(n²)

Peu d’échanges

Bulles optimisé

Aucune

O(n)

O(n²)

Détecte un tableau déjà trié

Insertion

Aucune

O(n)

O(n²)

Bon sur presque trié

TP 8 — Mini-projet

Élément

Description

Durée indicative

6 à 12 heures

Prérequis

Ensemble du cours

Organisation

Travail individuel ou en binôme

Livrable

Pseudo-code, jeux d’essai et réponses aux questions

Objectifs pédagogiques

  • Analyser un besoin et définir les données.
  • Décomposer l’application en modules.
  • Implémenter un menu et des traitements cohérents.
  • Préparer des jeux d’essai et présenter les résultats.

Méthode de travail : Lire chaque énoncé, identifier les entrées et sorties, écrire le pseudo-code, effectuer au moins un test manuel, puis comparer avec la correction.

Organisation générale du mini-projet

L’étudiant choisit un sujet parmi les huit propositions. Le projet peut être réalisé uniquement en pseudo-code ou traduit ensuite en Python, C ou Java selon les objectifs de la formation.

Livrables attendus

  • Fiche d’analyse : besoin, utilisateurs, entrées, sorties et contraintes.
  • Structure des données utilisées.
  • Découpage en fonctions et procédures.
  • Pseudo-code complet et commenté.
  • Au moins six jeux d’essai, dont des cas limites et incorrects.
  • Brève présentation des choix réalisés et des améliorations possibles.

Fonctions communes recommandées

AfficherMenu()
LireChoix(min, max)
Ajouter(...)
Modifier(...)
Supprimer(...)
Rechercher(...)
AfficherTous(...)
CalculerStatistiques(...)
SauvegarderOuQuitter()

Sujet A — Gestion des notes d’une classe

Gérer les étudiants, leurs notes, moyennes, décisions et classement.

  • Données : numéro, nom, prénom, tableau de notes, moyenne et décision.
  • Fonctions : ajouter, saisir notes, calculer moyenne, classer, rechercher et afficher statistiques.

Sujet B — Gestion d’une bibliothèque

Gérer livres, disponibilités, emprunts et recherches.

  • Données : code, titre, auteur, catégorie et disponibilité.
  • Interdire l’emprunt d’un livre déjà emprunté.

Sujet C — Gestion d’un stock

Gérer produits, quantités, mouvements et alertes de seuil.

  • Données : référence, désignation, quantité, prix et seuil minimum.
  • Alerter lorsque la quantité devient inférieure ou égale au seuil.

Sujet D — Gestion des réservations

Gérer ressources, créneaux, clients et conflits de réservation.

  • Données : identifiant, client, date, heure de début, durée et ressource.
  • Refuser deux réservations incompatibles sur la même ressource.

Sujet E — Gestion d’une file d’attente

Ajouter, servir et afficher les clients selon le principe FIFO.

  • Données : numéro, nom, heure d’arrivée et priorité éventuelle.
  • Version de base : file FIFO simple.

Sujet F — Analyse de mesures de capteurs

Saisir des mesures, calculer statistiques, détecter seuils et anomalies.

  • Données : date/heure, température, humidité ou autre mesure.
  • Calculer moyenne, minimum, maximum et nombre de dépassements.

Sujet G — Jeu de devinette

Faire deviner un nombre avec indications, compteur d’essais et niveaux.

  • L’ordinateur choisit un nombre dans un intervalle.
  • Afficher « trop petit » ou « trop grand » et compter les tentatives.

Sujet H — Morpion simplifié

Gérer un plateau 3×3, deux joueurs, validation des coups et détection de victoire.

  • Plateau : matrice 3×3 contenant vide, X ou O.
  • Détecter lignes, colonnes, diagonales, égalité et saisies invalides.

Correction complète de référence — Gestion des notes

1. Analyse et structures

Élément

Choix proposé

Capacité

40 étudiants maximum

Étudiant

numéro, nom, prénom, notes[0..4], moyenne, décision

Règle de moyenne

moyenne arithmétique des notes saisies

Décision

Admis si moyenne ≥ 10, sinon Ajourné

Classement

Moyenne décroissante

Contrôles

note entre 0 et 20, numéro unique, effectif valide

2. Type et fonctions principales

Type Etudiant = Enregistrement
     numero : Entier
     nom, prenom : Chaîne
     notes : Tableau[0..4] de Réel
     moyenne : Réel
     decision : Chaîne
FinEnregistrement

Fonction CalculerMoyenne(e : Etudiant) : Réel
Fonction RechercherNumero(classe, n, numero) : Entier
Procédure AjouterEtudiant(classe, EntréeSortie n)
Procédure ModifierNotes(EntréeSortie classe, n)
Procédure TrierParMoyenne(EntréeSortie classe, n)
Procédure AfficherClasse(classe, n)
Procédure AfficherStatistiques(classe, n)

3. Modules corrigés

Fonction CalculerMoyenne(e : Etudiant) : Réel
Variables i : Entier ; somme : Réel
Début
     somme ← 0
     Pour i de 0 à 4 Faire somme ← somme + e.notes[i] FinPour
     Retourner somme / 5
Fin

Procédure MettreAJourResultat(EntréeSortie e : Etudiant)
Début
     e.moyenne ← CalculerMoyenne(e)
     Si e.moyenne ≥ 10 Alors e.decision ← "Admis"
     Sinon e.decision ← "Ajourné"
     FinSi
Fin

Fonction RechercherNumero(classe : Tableau, n, numero : Entier) : Entier
Variables i : Entier
Début
     Pour i de 0 à n-1 Faire
         Si classe[i].numero = numero Alors Retourner i FinSi
     FinPour
     Retourner -1
Fin

Procédure AjouterEtudiant(EntréeSortie classe : Tableau, EntréeSortie n : Entier)
Variables i : Entier
Début
     Si n = 40 Alors Écrire("Classe complète") ; Retour FinSi
     Répéter Lire(classe[n].numero) Jusqu’à RechercherNumero(classe,n,classe[n].numero) = -1
     Lire(classe[n].nom, classe[n].prenom)
     Pour i de 0 à 4 Faire
         Répéter Lire(classe[n].notes[i]) Jusqu’à 0 ≤ classe[n].notes[i] ≤ 20
     FinPour
     MettreAJourResultat(classe[n])
     n ← n + 1
Fin

Procédure TrierParMoyenne(EntréeSortie classe : Tableau, n : Entier)
Variables i, j : Entier ; cle : Etudiant
Début
     Pour i de 1 à n-1 Faire
         cle ← classe[i]
         j ← i-1
         TantQue j ≥ 0 ET classe[j].moyenne < cle.moyenne Faire
            classe[j+1] ← classe[j]
            j ← j-1
         FinTantQue
         classe[j+1] ← cle
     FinPour
Fin

Procédure AfficherStatistiques(classe : Tableau, n : Entier)
Variables i, admis : Entier ; somme, meilleure : Réel
Début
     Si n = 0 Alors Écrire("Aucune donnée") ; Retour FinSi
     somme ← 0 ; admis ← 0 ; meilleure ← classe[0].moyenne
     Pour i de 0 à n-1 Faire
         somme ← somme + classe[i].moyenne
         Si classe[i].decision = "Admis" Alors admis ← admis + 1 FinSi
         Si classe[i].moyenne > meilleure Alors meilleure ← classe[i].moyenne FinSi
     FinPour
     Écrire("Moyenne de classe : ", somme/n)
     Écrire("Admis : ", admis, " / ", n)
     Écrire("Meilleure moyenne : ", meilleure)
Fin

4. Programme principal

Algorithme GestionClasse
Variables classe : Tableau[0..39] de Etudiant
Variables n, choix, numero, position : Entier
Début
     n ← 0
     Répéter
         Écrire("1 Ajouter | 2 Modifier notes | 3 Rechercher | 4 Afficher | 5 Classer | 6 Statistiques | 0 Quitter")
         choix ← LireEntierIntervalle(0,6)
         Selon choix Faire
            Cas 1 : AjouterEtudiant(classe,n)
            Cas 2 :
                Lire(numero) ; position ← RechercherNumero(classe,n,numero)
                Si position ≠ -1 Alors ModifierNotes(classe[position]) Sinon Écrire("Introuvable") FinSi
            Cas 3 :
                Lire(numero) ; position ← RechercherNumero(classe,n,numero)
                Si position ≠ -1 Alors AfficherEtudiant(classe[position]) Sinon Écrire("Introuvable") FinSi
            Cas 4 : AfficherClasse(classe,n)
            Cas 5 : TrierParMoyenne(classe,n) ; AfficherClasse(classe,n)
            Cas 6 : AfficherStatistiques(classe,n)
         FinSelon
     Jusqu’à choix = 0
Fin

5. Jeux d’essai de validation

Test

Données

Résultat attendu

Ajout valide

numéro 101, notes 12, 14, 9, 15, 10

moyenne 12 ; Admis

Numéro dupliqué

ajouter à nouveau 101

nouvelle saisie demandée

Note invalide

note 23 puis 18

23 refusée ; 18 acceptée

Classe vide

statistiques avec n = 0

message Aucune donnée

Classement

moyennes 11, 16, 8

ordre 16, 11, 8

Recherche absente

numéro 999

Introuvable

Corrections de référence pour les autres sujets

Bibliothèque — Architecture corrigée

Type Livre = Enregistrement
     code : Entier ; titre, auteur, categorie : Chaîne ; disponible : Booléen
FinEnregistrement

AjouterLivre ; RechercherParCode ; RechercherParTitre
EmprunterLivre : autorisé seulement si disponible = Vrai
RetournerLivre : disponible ← Vrai
AfficherDisponibles ; CompterParCategorie
Menu principal jusqu’au choix Quitter

Règles essentielles : La correction doit empêcher les codes dupliqués, l’emprunt d’un livre indisponible et le retour d’un livre déjà disponible.

Stock — Architecture corrigée

Type Produit = Enregistrement
     reference : Entier ; designation : Chaîne
     quantite : Entier ; prix, seuil : Réel
FinEnregistrement

EntreeStock(produit,q) : quantite ← quantite + q
SortieStock(produit,q) : acceptée si q ≤ quantite
ValeurStock : somme(quantite × prix)
AfficherAlertes : produits tels que quantite ≤ seuil
TrierParDesignation ou TrierParQuantite

Réservations — Détection de conflit

Deux réservations de la même ressource sont incompatibles lorsque leurs intervalles temporels se chevauchent.

Fonction Conflit(debut1, fin1, debut2, fin2 : Entier) : Booléen
Début
     Retourner debut1 < fin2 ET debut2 < fin1
Fin

Avant l’ajout :
Pour chaque réservation existante de la même ressource
     Si même date ET Conflit(...) Alors refuser
FinPour

File d’attente — Correction

Enfiler(file, fin, client) : fin ← fin+1 ; file[fin] ← client
Defiler(file, debut, fin) :
     Si debut > fin Alors afficher "File vide"
     Sinon afficher file[debut] ; debut ← debut+1
Tête : file[debut]
NombreEnAttente : fin - debut + 1

Mesures de capteurs — Correction

Saisir N mesures valides
Calculer somme, moyenne, minimum et maximum
Compter les mesures dépassant un seuil
Rechercher la première anomalie
Afficher un rapport : N, moyenne, min, max, dépassements
Option : trier les mesures ou afficher leur chronologie

Jeu de devinette — Correction

secret ← NombreAleatoire(min,max)
essais ← 0
Répéter
     proposition ← LireEntierIntervalle(min,max)
     essais ← essais + 1
     Si proposition < secret Alors Écrire("Trop petit")
     SinonSi proposition > secret Alors Écrire("Trop grand")
     FinSi
Jusqu’à proposition = secret OU essais = limite
Afficher le résultat et le nombre d’essais

Morpion — Correction

Initialiser plateau 3×3 avec espaces
joueur ← 'X'
Répéter
     AfficherPlateau
     Répéter Lire(ligne,colonne) Jusqu’à case valide et vide
     plateau[ligne][colonne] ← joueur
     Si Gagne(plateau,joueur) Alors victoire ← Vrai
     Sinon joueur ← AutreJoueur(joueur)
     FinSi
Jusqu’à victoire OU plateau plein
Afficher victoire ou match nul

La fonction Gagne vérifie les trois lignes, les trois colonnes et les deux diagonales.

Grille d’évaluation du mini-projet

Critère

Indicateurs

Points

Analyse du besoin

Entrées, sorties, contraintes et cas particuliers correctement identifiés

3

Structures de données

Choix cohérents, champs et tailles justifiés

3

Modularité

Fonctions courtes, paramètres clairs, responsabilités séparées

4

Correction algorithmique

Résultats corrects et traitements complets

4

Validation

Contrôles de saisie et gestion des erreurs

2

Jeux d’essai

Cas normal, limites, incorrects et résultats attendus

2

Lisibilité et présentation

Noms explicites, indentation, commentaires utiles

2

Synthèse des compétences pratiques

Compétence

TP concernés

Lire, afficher et calculer

TP 1

Décider selon des conditions

TP 2

Répéter et contrôler la terminaison

TP 3

Traiter des collections de valeurs

TP 4

Analyser des textes

TP 5

Décomposer en modules

TP 6

Rechercher, trier et comparer

TP 7

Concevoir une application complète

TP 8

Auto-évaluation finale

Pour chaque affirmation, cocher le niveau correspondant.

Compétence

Acquis

En cours

À revoir

J’identifie les entrées, traitements et sorties.

J’écris des conditions sans oubli de cas.

Je choisis une boucle adaptée.

Je parcours et modifie un tableau.

Je traite une chaîne caractère par caractère.

Je crée des fonctions réutilisables.

Je réalise une recherche et un tri.

Je construis et teste un mini-projet modulaire.

Conclusion : La réussite des travaux pratiques repose autant sur la méthode et les tests que sur l’écriture du pseudo-code. Une solution simple, claire et vérifiée est préférable à une solution complexe non maîtrisée.