EVALUATION EN ALGORITHMIQUE TEST 02/ 10 — CORRECTION
Exercice 1 : Définitions
- Instruction : ordre élémentaire exécutable dans un algorithme (lecture, écriture, affectation, test, boucle…).
- Tableau : structure de données qui regroupe plusieurs valeurs de même type, accessibles par un indice.
- Donnée : valeur brute manipulée par le programme (ex : 7,5 ; “Genius” ; Vrai ; 0).
- Information : donnée interprétée dans un contexte (ex : “7,5 est la plus petite valeur saisie”).
Exercice 2 : Questions / Réponses (avec justification)
-
tab[i] ← 0 : initialise (ou remet) la case i du tableau à zéro.
Rôle : effacer une valeur, préparer un tableau, marquer une case comme “vide”, etc.
-
Différence fondamentale entre si et tantque :
- si (cond) exécute le bloc au plus une fois (structure de décision).
- tantque (cond) exécute le bloc plusieurs fois tant que la condition reste vraie (structure répétitive).
-
Lettre_Mot ← "Genius" est une chaine de caractères (plusieurs caractères),
pas un seul caractère.
-
Différence entre boucle Pour et boucle Répéter :
- Pour : nombre d’itérations généralement connu (ou borné) dès l’entrée dans la boucle.
- Répéter ... Jusqu’à : le bloc s’exécute au moins une fois, puis on teste la condition de terminaison.
-
Différence entre TabCar[i] et TabCar[9] :
- TabCar[i] : désigne la case d’indice i (indice variable).
- TabCar[9] : désigne uniquement la case d’indice 9 (indice fixe).
Exercice 3 : Pair / Impair
Algorithme PairOuNon ;
Var
n : entier ;
Début
Ecrire("Entrer un entier : ") ;
Lire(n) ;
Si (n mod 2 = 0) Alors
Ecrire(n, " est pair") ;
Sinon
Ecrire(n, " est impair") ;
FinSi
Fin.
Exercice 4 : Permuter 3 nombres sans variable temporaire
Choix de permutation : (a, b, c) → (b, c, a) en faisant deux échanges : (a <-> b) puis (b <-> c).
Algorithme PermutationTrois ;
Var
a, b, c : entier ;
Début
Ecrire("Entrer a, b, c : ") ;
Lire(a, b, c) ;
/* Swap(a,b) sans variable temporaire */
a ← a + b ;
b ← a - b ;
a ← a - b ;
/* Swap(b,c) sans variable temporaire */
b ← b + c ;
c ← b - c ;
b ← b - c ;
Ecrire("Après permutation : a=", a, " b=", b, " c=", c) ;
Fin.
Exercice 5 : Série terminée par -1, trouver le minimum
On lit une suite de réels, le marqueur -1 termine la saisie (le -1 n’est pas stocké). On affiche la plus petite valeur (et éventuellement sa position).
Algorithme MinimumSerie ;
Const
NMAX = 200 ;
Var
note : tableau[1..NMAX] de réel ;
k, posMin : entier ;
x, minVal : réel ;
Début
k ← 0 ;
Ecrire("Entrer des nombres (terminer par -1) : ") ;
Lire(x) ;
Tantque (x ≠ -1) Faire
k ← k + 1 ;
note[k] ← x ;
Lire(x) ;
FinTantque
Si (k = 0) Alors
Ecrire("Aucune valeur saisie.") ;
Sinon
minVal ← note[1] ;
posMin ← 1 ;
Pour i de 2 à k Faire
Si (note[i] < minVal) Alors
minVal ← note[i] ;
posMin ← i ;
FinSi
FinPour
Ecrire("Le plus petit élément est ", minVal, " (position ", posMin, ")") ;
FinSi
Fin.
Avec l’exemple de l’énoncé (… 7.89, 9, 90, …, 7.51, …, 7.5, …, -1) : le minimum est 7.5.
Exercice 6 : TETRIS — générer l’état B à partir de l’état A
Dans l’illustration, l’état B correspond à une rotation à 90° dans le sens horaire d’une matrice carrée (ici 3×3) contenant des symboles (ex : '1' et 'x').
Règle de rotation (n×n, indices 1..n) :
EtatB[i,j] ← EtatA[n - j + 1, i]
Algorithme RotationTetris ;
Const
n = 3 ;
Var
EtatA, EtatB : tableau[1..n, 1..n] de caractère ;
Début
Ecrire("Entrer la matrice EtatA (", n, "x", n, ") caractère par caractère :") ;
Pour i de 1 à n Faire
Pour j de 1 à n Faire
Lire(EtatA[i,j]) ;
FinPour
FinPour
/* Rotation 90° horaire */
Pour i de 1 à n Faire
Pour j de 1 à n Faire
EtatB[i,j] ← EtatA[n - j + 1, i] ;
FinPour
FinPour
Ecrire("EtatB obtenu :") ;
Pour i de 1 à n Faire
Pour j de 1 à n Faire
EcrireSansRetour(EtatB[i,j], " ") ;
FinPour
Ecrire("") ;
FinPour
Fin.
Exercice 7 : Échiquier 8×8 (0 et espaces)
On affiche 8 lignes de 8 cases. Une case est noire si (ligne + colonne) est pair (ou impair), selon le choix. Ici : noir = '0' si (i + j) est pair.
Algorithme EchiquierTroie ;
Const
n = 8 ;
Var
i, j : entier ;
Début
Pour i de 1 à n Faire
Pour j de 1 à n Faire
Si ((i + j) mod 2 = 0) Alors
EcrireSansRetour("0") ;
Sinon
EcrireSansRetour(" ") ;
FinSi
FinPour
Ecrire("") ;
FinPour
Fin.
Par Joel_Yk | Contact :+237 652027193