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= [MaT[1]] Pour k de 2 à n faire
Si T[k]>Ma alors MaT[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) MaxFn 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) MaT[1]
Pour k de 2 à n faire
Si T[k]>Ma alors MaT[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.

Fiche2 ex-sous-programme

  • 1.
    Exercice : Écrireun 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= [MaT[1]] Pour k de 2 à n faire Si T[k]>Ma alors MaT[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) MaxFn 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) MaT[1] Pour k de 2 à n faire Si T[k]>Ma alors MaT[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.