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;