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.