1. Exercice : Écrire un programme qui permet de :
-Saisir un entier n (entre 2 et 20)
-Remplir un tableau T au hasard par n entiers de valeurs
entre 0 et 100
-Afficher les éléments de T puis son maximum.
Pour résoudre ce problème on va définir les modules suivants:
* Procédure Saisie(n) :permet de saisir la taille de T entre 2 et 20.
* Procédure Remplit( T, n) permet de remplir T par n entiers au
hasard (entre 0 et 100).
* Procédure Affiche( T, n) permet d’afficher le tableau T.
* Fonction Maxi(T,n) permet de donner le maximum du tableau.
n
Devoirs et examens sur : www.Kiteb.net
Saisie
n
Maxi
P.P
T
T,n
T,n
Maxi
T,n
Remplit
Affiche
Analyse du programme principal:
NOM: Maximum
Résultat=Ecrire("Le max est",Max)
Max FN Maxi (T,n)
Proc Affiche(T, n)
T=PROC Remplit(T,n)
n=PROC Saisie(n)
FIN Maximum
Tableau de déclaration des nouveaux types:
TYPE
TAB=Tableau de 20 entiers
Tableau de déclaration des objets:T.D.O. Globaux :
Objet
Type/Nature
Maxi
Fonctions
T
TAB
n, Max
Entier
Remplit,
Procédure
Saisie,Affiche
Analyse de la procédure saisie:
DEF PROC Saisie( VAR nb:entier)
Résultat=[ ] Répéter
nb=Donnée("Donner n: ", nb)
Jusqu'à nb dans [2..20]
FIN saisie
Analyse de la procédure remplit:
DEF PROC Remplit(Var Tb:TAB, nbr:entier)
Résultat= [ ] Pour i de 1 à nbr faire
Tb[i] Hasard(101)
Fin pour
Fin Remplit
Sous programmes – Fiche 2- Les tableaux
Analyse de la procédure Affiche:
DEF PROC Affiche( T:TAB, n:entier)
Résultat= [ ] Pour j de 1 à n faire
Ecrire("L’entier n°",j, "est ",T[j])
Fin Pour
FIN Affiche
Analyse de la fonction Maxi:
DEF FN Maxi(T:TAB, n:entier) : entier
Résultat=Maxi Ma
Ma= [MaT[1]] Pour k de 2 à n faire
Si T[k]>Ma alors MaT[k]
Fin pour
FIN Maxi
T.D.O.Locaux:
Objet
Type/Nature
k, Ma
entier
Algorithme du programme principal:
0) Début Maximum
1) Proc Saisie(n)
2) Proc Remplit(T, n)
3) Proc Affiche(T, n)
4) MaxFn maxi(T, n)
5) Ecrire("Le Max est : ", Max)
6) Fin Maximum
Algorithme de la procédure saisie:
0) DEF PROC Saisie( VAR nb:entier)
1) Répéter
Ecrire("Donner n: ", nb), lire(nb)
Jusqu'à nb dans [2..20]
2) FIN saisie
Algorithme de la procédure Remplit:
0) DEF PROC Remplit(Var Tb:TAB, nbr:entier)
1) Pour i de 1 à nbr faire
Tb[i] Hasard(101)
Fin pour
2) FIN Remplit
Algorithme de la procédure Affiche:
0) DEF PROC Affiche( T:TAB, n:entier)
1) Pour j de 1 à n faire
Ecrire("L’entier n° ",j, " est ",T[j]) ;
Fin pour
2) FIN Affiche
Algorithme de la fonction Maxi:
0) DEF FN Maxi(T:TAB, n:entier) : entier
1) MaT[1]
Pour k de 2 à n faire
Si T[k]>Ma alors MaT[k] FinSi
Fin pour
2) Maxi Ma
3) FIN Maxi
Programme Pascal :
program maximum;
uses wincrt;
type tab=array [1..20] of integer;
var n,max:integer; t:tab;
procedure saisie (var nb:integer);
begin
repeat
write('donner un entier(entre 2 et 20):');
readln(nb);
until (nb>=2) and (nb<=20);
end;
procedure remplit(var tb:tab;nbr:integer);
var
i:integer;
begin
for i:=1 to nbr do
Tb[i]:=random(101);
end;
procedure Affiche(t:tab;n:integer);
var j:integer;
begin
for j:=1 to n do
writeln('L''entier n°',j, 'est ',T[j]);
end;
function maxi(t:tab;n:integer):integer;
var k,ma:integer;
begin
Ma:=t[1];
for k:=2 to n do
if T[k]>ma then ma:=T[k];
maxi:=ma;
end;
begin
saisie(n);
RANDOMIZE;
remplit(t,n);
affiche(t,n);
max:= maxi(t,n);
writeln('le maximum est ',max);
end.