EVALUATION EN ALGORITHMIQUE TEST 06/ XX
CORRECTION
Exercice 01 : Question de Cours (5pts)
- Algorithme : suite finie d’instructions non ambiguës permettant de résoudre un problème bien précis.
Algorithmique : discipline qui étudie la conception, l’analyse (coût/complexité) et la preuve des algorithmes.
Variable : un objet nommée dont la valeur peut changer durant l’exécution d'un algorithme.
Instruction : ordre élémentaire exécuté par l’algorithme (affectation, lecture, écriture, test, boucle…). ou c'est une directive a l'ordinateur.
- Variable : valeur modifiable pendant l’exécution.
Constante : valeur fixée (non modifiable) pendant l’exécution.
- Rôle de l’affectation : stocker une valeur dans une variable (mise à jour de l’état mémoire).
Exemple : a ← 9 met la valeur 9 dans la variable a.
- Opérateur de différence (inégalité) : <>.
Exemple : x <> y signifie “x est différent de y”.
- Types de données classiques :
- Entier
- Réel (flottant)
- Booléen (Vrai/Faux)
- Caractère
- Chaîne de caractères
(+ types structurés : tableau, enregistrement, fichier…)
Exercice 02 : Exécution Manuelle (3pts)
ALGORITHME 01 (GeniusTest1)
a) Potentielles erreurs / remarques
b) Pour h = 10 et m = 57
L’algorithme ajoute 5 minutes à l’heure. Comme 57 ≥ 55, on passe à l’heure suivante et on retire 55 minutes.
| Étape |
h |
m |
Commentaire |
| Après lecture |
10 |
57 |
Entrées utilisateur |
| Test m < 55 |
10 |
57 |
Faux, on va dans le “sinon” |
| Test h < 23 |
10 |
57 |
Vrai |
| Mise à jour |
11 |
2 |
h ← h+1 ; m ← m-55 |
| Affichage |
Affiche Moi: 11 : 2 |
ALGORITHME 02 (GeniusTest2)
c) Potentielles erreurs / remarques
d) Pour nb1 = 3, nb2 = 0, nb3 = -11
Condition de boucle : nb1 ≥ 0 vrai, nb2 ≥ 0 vrai, nb3 ≥ 0 faux.
Donc la boucle ne s’exécute pas. On affiche directement la fin.
| Étape |
nb1 |
nb2 |
nb3 |
S |
Commentaire |
| Après lecture |
3 |
0 |
-11 |
0 |
S ← 0 |
| Test du tantque |
3 |
0 |
-11 |
0 |
Faux (nb3 < 0), donc aucune itération |
| Affichage final |
THE END: 3, 0, -11, 0 ! |
Ce que l’algorithme “essaie” de faire : répéter une phase de jeu tant que les 3 nombres sont non négatifs, cumuler leur somme dans S et afficher “GAME OVER” si S ≤ 0, sinon “GO !!!”.
Exercice 03 : Structure Conditionnelle (3pts)
Un entier naturel de trois chiffres est dit cubique s’il est égal à la somme des cubes de ses chiffres.
Algorithme NombreCubique ;
Var n, c, d, u, s : entier ;
Début
Ecrire("Entrer un entier naturel de 3 chiffres : ") ;
Lire(n) ;
c ← n DIV 100 ;
d ← (n MOD 100) DIV 10 ;
u ← n MOD 10 ;
s ← c*c*c + d*d*d + u*u*u ;
Si (s = n) Alors
Ecrire(n, " est cubique") ;
Sinon
Ecrire(n, " n'est pas cubique") ;
FinSi
Fin.
Exercice 04 : Structure Répétitive (4pts)
Algorithme AnalyseMot ;
Const
MAX = 50 ;
Var
mot : tableau[1..MAX] de caractère ;
c : caractère ;
i : entier ;
Début
i ← 1 ;
Ecrire("Entrer les caractères du mot (terminer par '.') : ") ;
Répéter
Lire(c) ;
Si (c <> '.') Alors
mot[i] ← c ;
i ← i + 1 ;
FinSi
Jusqu’à (c = '.' OU i > MAX)
i ← i - 1 ; // longueur réelle du mot
Si (i = 0) Alors
Ecrire("Aucun mot saisi.") ;
Sinon
Ecrire("Mot saisi : ") ;
Pour j de 1 à i Faire
Ecrire(mot[j]) ;
FinPour
Ecrire("") ;
Ecrire("Première lettre : ", mot[1]) ;
Ecrire("Dernière lettre : ", mot[i]) ;
Ecrire("Longueur du mot : ", i) ;
FinSi
Fin.
Problème : Création d'un Jeu
Idée : 5 joueurs au maximum. À chaque joueur, on lit le poids du marteau. Si un joueur atteint 900Kg ou plus, il gagne 1 000 000 000 FCFA et le jeu s’arrête immédiatement. On affiche une trace (joueur, poids, gain).
Algorithme JeuDuMarteau ;
Const
M ← 5 ;
POIDS_BOULE ← 900 ;
GAIN_MAX ← 1000000000 ;
Var
j : entier ;
p : entier ; // poids marteau
gain : entier ;
stop : booléen ;
Début
stop ← Faux ;
Pour j de 1 à M Faire
Si (stop = Faux) Alors
Ecrire("Joueur ", j, " : entrer le poids du marteau (Kg) : ") ;
Lire(p) ;
Si (p >= POIDS_BOULE) Alors
gain ← GAIN_MAX ;
stop ← Vrai ;
Sinon
gain ← 0 ;
FinSi
Ecrire("Trace -> Joueur:", j, " | Poids:", p, "Kg | Gain:", gain, " FCFA") ;
FinSi
FinPour
Si (stop = Faux) Alors
Ecrire("Aucun joueur n'a cassé la boule. Fin du jeu.") ;
Sinon
Ecrire("Jeu terminé : un joueur a remporté la somme.") ;
FinSi
Fin.