Vous êtes sur la page 1sur 1

Sous programmes – Fiche 3

Exercice1: Exercice2: Écrire un programme qui permet de:


Écrire un programme qui permet de saisir deux Analyse de la fonction Fact: -Saisir un réel x entre 0 et 1. -Puis calculer et afficher la valeur
entiers n et p (tq 1≤p≤n) et de calculer puis afficher le DEF FN Fact( a:entier) : entier approché VA de exp(x) avec la formule suivante:
Résultat=Fact  f 2 3 4
nombre de combinaison de p éléments parmi n : CNP x x x x x
n!
[f 1] Pour i de 2 à n faire e =1    ...
p 1! 2! 3! 4!
sachant que: C = f  f*i
n p!∗n− p! Fin Pour xi
FIN Fact Rq: faire le calcul jusqu'à <=0,001
Pour résoudre ce problème on besoin de définir les modules i!
suivants: T.D.O.Locaux: Objet Type/Nature program exponentiel;
• procédure Saisir( n, p) qui permet de saisir n et p. f,i entier uses wincrt;
• fonction Calculer( n, p) permet de calculer la CNP. var x:real;
procedure saisir(var x:real);
• fonction fact( a) permet de calculer la factoriel de a. begin
n,p cnp Programme Pascal :
repeat
P.P Program combinaison;
Writeln('donner un réel entre 0 et 1:');
Saisir n,p n, p Calculer uses wincrt; readln(x);
var n,p,cnp:integer; until (x>=0) and (x<=1);
a f end;
procedure saisir(var n,p:integer); function fact (a:integer):word;
Fact
Devoirs et examens sur : www.Kiteb.net

begin var i:integer; f:word;


Analyse du programme principal: write('n= '); Readln(n); begin
NOM: Combinaison f:=1; for i:=2 to a do
repeat
Résultat=Ecrire("La CNP est",CNP) f:=f*i;
write('p= '); Readln(p);
CNP  FN Calculer (n,p) fact:=f;
until (p in [1..n] );
(n,p)=Proc Saisir(n, p) end; end;
FIN Combinaison function power(x:real;n:integer):real;
Tableau de déclaration des objets:T.D.O. Globaux : var i:integer; p:real;
function fact(a:integer):word;
Objet Type/Nature begin
var i:integer;f:word; p:=1; for i:=1 to n do
Calculer Fonctions begin
n, p,CNP Entier p:=p*x;
f:=1; power:=p;
Saisir Procédure
for i:=2 to a do f:=f*i; end;
Analyse de la procédure saisir: fact:=f; function expo(x:real):real;
end; var i:integer; s,d,k:real;
DEF PROC Saisir( VAR n,p:entier) begin
Résultat=[ n=donnée(" n= " )] Répéter s:=1;i:=0;
p=Donnée("p = ") function calculer(n,p:integer):integer;
begin repeat
Jusqu'à p dans [1..n] i:=i+1;
calculer:=fact(n) div (fact(n-p)*fact(p));
FIN saisir d:=power(x,i)/fact(i);
end;
Analyse de la fonction Calculer: s:=s+d; Répéter le calcul
DEF FN Calculer (n,p : entier) : entier until d<=0.0001 ; jusqu'à:
begin expo:=s; terme (d) soit
Résultat= Calculer  C saisir(n,p); end; <=0.0001
C FN Fact (n) DIV ( FN Fact ( p) * FN Fact(n-p) )
cnp:=calculer(n,p); begin
FIN Calculer write('La CNP est ',cnp); saisir(x);
T.D.O.Locaux: Objet Type/Nature end. writeln('valeurapporoché:',expo(x):10:8);
C Entier writeln('calcul directe :',exp(x):10:8);
fact Fonction end.

Vous aimerez peut-être aussi