PROGRAMMATION ORIENTEE OBJET
TP n° 1
Objectifs :
1. Factorielle
Ecrire une fonction récursive permettant de calculer la factorielle d'un nombre entier, selon la formule
n ! = n* (n-1) ! et 0 !=1
2. Combinaison Cnp
La théorie des ensembles a montré que le nombre total de combinaisons de p éléments pour un ensemble de n éléments est Cnp = n ! / (p ! * (n-p) !)
Ecrire une fonction Cnp permettant de calculer cette combinaison.
Ecrire un programme permettant de tester cette fonction.
Constater que cette fonction donne un résultat faux lorsque Cnp deviend grand (exemple n=13 et p=6)
Pourquoi ?
3. Simplification
On montre que le calcul de Cnp peut être simplifié : Cnp = n*(n-1)*(n-2)**(n-p+1) / p!
Programmer cette formule. Est-elle plus efficace ?
Pourquoi cette formule permet-elle de calculer des Cnp plus grands ?
4. Cnp récursif
On montre que Cnp = Cn-1p + Cn-1p-1 et C0p=1 et Cpp=1.
Programmer cette formule. Peut-on calculer des Cnp plus grands qu'avec les fonctions précédentes ?
Est-elle très efficace ?
5. Triangle de Pascal
La formule précédente est en fait l'interprétation du triangle de Pascal :
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Ecrire une fonction utilisant un tableau à 2 dimensions permettant de calculer Cnp grâce au triangle de Pascal. Pourquoi cette méthode est-elle plus efficace que la fonction récursive précédente ?
6. Triangle de Pascal simplifié
Il est possible d'écrire une fonction n'utilisant un tableau qu'à 1 seule dimension permettant de calculer Cnp grâce au triangle de Pascal