Série 1 : Sous-Programmes
Exercice 1
Soit l'algorithme suivant qui saisi les moyennes des élèves d'une classe, détermine et affiche la moyenne minimale, la moyenne maximale, la moyenne de la classe et le nombre d'élèves qui ont eu au dessus de la moyenne.
0. Début Exercice 1. Répéter Ecrire("Donner le nombre d'élèves : ") Lire(n) Jusqu'à n dans [3..20] 2. Pour i de 1 à n Faire Répéter Ecrire("Donner la note du ", i, "ème élève : ") Lire(t[i]) Jusqu'à (t[i] ≥ 0) et (t[i] ≤ 20) Fin Pour 3. m ⟵ CalcMoy(t, n) 4. min ⟵ t[1] pour i de 2 à n Faire Si t[i] < min alors min ⟵ t[i] fin si fin pour 5. max ⟵ CalcMax(t, n) 6. nbe ⟵ 0 Pour ide 1 à n Faire si t[i] ≥ m alors nbe ⟵ nbe + 1 fin si fin pour 7. Ecrire("La moyenne minimale est : ", min) Ecrire("La moyenne maximale est : ", max) Ecrire("La moyenne de la classe est : ", m) Ecrire("Le nombre d'élèves qui ont au dessus de la moyenne est : ", nbe) 8. Fin Exercice
Travail demandé
- Transformer l'étape (1) en une procédure Saisir.
- Transformer l'étape (2) en une procédure Remplir.
- Développer la fonction CalcMoy qui calcule la moyenne arithmétique des éléments du tableau.
- Transformer l'étape (4) en une fonction CalcMin.
- Développer la fonction CalcMax qui calcule la valeur maximale dans un tableau.
- Transformer l'étape (6) en une fonction NbreEleves qui calcule le nombre d'élèves qui ont obtenu une moyenne au dessus d'une valeur quelconque notée m.
- Réécrire le programme en utilisant les modules développés précédemment.
Exercice 2
Corriger les sous-programmes suivants :
{ N° 1 } procedure permuter(a, b : integer); begin aux := a; a := b; b := aux; end;
{ N° 2 } function PlusPetit(a, b : entier); begin if a > b then PlusPetit := b; else PlusPetit := a; end;
{ N° 3 } procedure PlusGrand(a, b):integer; begin sup := (a + b + abs(a - b)) div 2; end;
{ N° 4 } procedure RemplirParImpair(t, tp, ti : tab ; n, np, ni : entier); begin np := 0; ni := 0; for i:=1 to n do if t[i] mod 2 = 0 then np := np + 1; tp[np] := t[i]; else ni := ni + 1; ti[ni] := t[i]; end;