Vous êtes sur la page 1sur 66

CHEF D’ŒUVRE A L’ATTENTION DE MR PHILIPP

Semestre 1

Macky Diarra Juouadjo Christian F

Mouhamed Fall

1
TABLE DES MATIERES

Introduction : P3

Exercice 1 : P4-P19

Exercice 2 : P20-P23

Exercice 3 : P24-P26

Exercice 4 : P27-P28

Exercice 5 : P28-P45

Exercice 6 : P46-P50

Exercice 7 : P50-P61

Exercice 8 : P62-66

2
Introduction :
Pour ce module de Programmation Orienté Objet, on procèdera à la réalisation d’un Chef
d’œuvre reposant sur l’apprentissage du langage C++, en se servant du logiciel de
programmation Dev C++.
Pour répondre aux questions posées nous allons; à partir de codes sources, ainsi que par
illustration de captures d’écran, répondre aux questions posées.

3
Exercice 1 :
1) Exécutons le programme suivant :

Résultat Exo1_Q1 :

4
.
2) Analyse ligne par ligne de ce programme :

5
.Organigramme :

6
7
8
9
10
3) Algorithme du calcul du nombre d’Euler :

11
4) Programme du calcul du nombre d’Euler :

Résultat Exo1_Q4 :

12
5-a) La procédure void pi(double) calcule une valeur approchée du nombre "Pi" à partir d’un seuil de
convergence donné, ce seuil est stocké dans la variable seuil. Le nombre est calculé grâce à une boucle

qui exécute la somme de 1/n^2 tant que n est inférieur au nombre d’itération maximum et tant que la valeur de
1/n^2 est supérieur au seuil de convergence donné.

Puis, en faisant appel à la fonction sqrt() de la bibliothèque de “math.h“ nous pouvons déterminer la valeur
approchée de pi en faisant la racine carrée du produit de 6 et de la somme calculée précédemment :
sqrt(6*somme) ;

Enfin, la fonction affiche la valeur approchée de pi, le coût et la précision.

13
b)

14
Résultat Exo1_Q5

15
16
17
c) Comparons le coût de convergence et la précision de l’approximation obtenue par ces deux
algorithmes :

Coût

50000

40000

30000

20000

10000

pi e

18
CONCLUSION : Nous remarquons que le coût augmente à mesure que le seuil diminue
et la précision diminue lorsque le seuil diminue. Lorsque le seuil de convergence
diminue, la précision tend vers 0 et le coût atteint un maximum dans chacun des 2
cas.
Ainsi, on conclut que l’algorithme d’Euler est moins couteux et plus précis que celui de .

L’algorithme d’Euler est donc beaucoup plus efficace que celui de pi.

19
Exercice 2 :
Programme initial :

20
On obtient comme résultat :

21
Après avoir compléter le programme précédent, qui constitue un histogramme de
fréquence de caractères dans un fichier texte, on obtient :

22
Résultat :

Conclusion : On constate que dans le programme initial les caractères accentués


n’avaient pas été traités, et dans le programme que nous avons modifié, nous avons la
prise en compte de ces mêmes caractères. (Exemple avec « Marché de fruits »)

23
Exercice 3 :
Soit la fonction McCarthy définie pour tout entier naturel de la façon suivante :

1) Programmons cette fonction et appelons-la, pour n compris entre 0 et 115.

24
Résultat Exo3 :

Conclusion : On constate que la fonction McCarthy = 91 pour tout entier naturel N <=
101 et pour N >=102 on obtient l’un à la suite de l’autre 92, 93, 94 ; etc…

25
2) Démontrons Mathématiquement le résultat obtenu :

Prenons 3 comme exemple et notons f, la fonction :


Comme 3 < 100, le résultat de f(3) sera f(f(3+11)) = f(f(14))
Mais f(14) = 91 donc f(3) = f(f(14))=f(91).

- Maintenant f(91) = f(f(91+11))


=f(f(102))
= > « f(91) = f(92) »

Et par le même raisonnement


f(92) = f(f(92+11))
= f(f(103))
=> « f(92)=f(93) »

Donc : f(3) = f(91) = … = f(93) = 91

Finalement pour 2, on a f(2) = f(f(2+11))


= f(f(13))
=> «f(2)=f(90) »

Par contre pour n = 102 on a :

f(102) = 102-10 = 92*

Ici, on constate une différence de résultat.

D’où : On conjecture que f(n) vaut 91 pour tout n<=101.

26
Exercice 4 :
Ecrivons la fonction volume (rayon) qui appelle la fonction surface (rayon) qui appelle la
fonction circonférence (rayon).

Après initialisation des fonctions, on appellera la fonction main qui va nous permettre
d’appeler les autres fonctions (Surface & Circonférence)

Voici notre programme :

27
Voici notre résultat :

Exercice 5 :
1) a)
Procédure de saisie
d’un nombre entier

28
Résultat Exo5_Q1a :

b) Procédure d’affichage d’un nombre entier :

29
Résultat Exo5_Q1b :

c) Ecrivons une fonction d’addition de deux entiers :

30
31
32
Résultat Exo5_Q1c :

2)
Complétons les fonctions et procédures précédentes, en remplaçant les int par des float :

33
Résultat Exo5_Q2 :

34
3)
Complétons les fonctions et procédures précédentes, en remplaçant les float par des
complexes

35
Résultat Exo5_Q3 :

36
4) Ajoutons des fonctions de multiplication et division de deux nombres de même nature
(entiers, réels, complexes).

37
38
39
Résultat Exo5_Q4

40
5)
Ecrivons une fonction main qui appelle les fonctions et procédures précédentes
pour :

a) Saisie puis affichage de deux nombres entiers, affichage de leur somme, produit,
division respectives.

41
Résultat Exo5_Q5a :

b) Saisie puis affichage de deux nombres réels, affichage de leur somme, produit,
division respectives.

42
Résultat Exo5_Q5b :

43
c) Saisie puis affichage de deux nombres complexes, affichage de leur somme, produit,
division respectives.

44
Résultat Exo5_Q5c :

45
Exercice 6 :
Ce problème amusant, illustre à la fois l’élégance d’une formulation récursive tout en
mettant en évidence sa complexité exponentielle et la formulation itérative induite, moins
intuitive, finalement beaucoup plus simple et de complexité linéaire.
Nous allons implémenter ce programme, pour n<10 :

46
A la suite de l’exécution du code précédent, nous obtenons :

Somme toute, nous nous sommes efforcés de comprendre ce qui s’est réellement passé.
Ceci nous a conduit à établir des schémas simples, pratiques et facilement exploitable par
quiconque :

47
48
49
Conclusion : Nous nous rendons de l’efficacité dudit code, qui, d’après nos
schémas nous ramène à la réalité des faits.

Exercice 7 :
1- Complétons la Classe Entiers pour pouvoir effectuer le produit, la division
entière, la division modulo de deux nombres entiers.

50
51
Résultat Exo7_Q1 :

2) Complétons le code précédent par une classe de nombres réels dotés les mêmes
traitements :

52
53
54
Résultat Exo7_Q2 :

55
3) Complétons par une classe de nombres complexes dotée de mêmes traitements, le
programme précédent :

56
57
58
59
60
Résultat Exo7_Q3 :

61
Exercice 8 :

1) a) Instanciation à partir du constructeur par défaut:

b) Instanciation à partir d’une valeur arbitraire fournie par l’utilisateur:

c) Instanciation d'un tableau de nombres:

2- Surdéfinition des opérateurs d'addition, multiplication, division de 2 nombres de


même nature.

a) Addition de deux complexes:

62
b) Addition de deux réels:

c) Multiplication de deux complexes :

d) Multiplication de deux réels:

e) Division de deux complexes:

f) Division de deux réels:

63
3- On considère ici les classes des nombres réels et des nombres complexes

Addition d'un réel à un complexe (vice versa) :

4- Surdéfinition de l’opérateur de multiplication pour effectuer la multiplication d'un


Complexe par un nombre entier ou flottant puis l’inverse :

64
5- Surdéfinition de l'opérateur < pour comparer les modules de deux nombres (même
type ou de type différent (entier, réel, complexe) : tous les cas de figure peuvent se
produire)).

a) De même nature:

b) De nature différente:

6- Surdéfinition des opérateurs d'addition et d'affectation pour qu'ils opèrent sur des
tableaux d'instances et constater que c'est difficile :

65
Conclusion : Parvenu au terme de notre Chef d’œuvre, nous avons appris les bases
du langage orienté objet C+ : à manipuler des objets, à les instancier, les surdéfinir, à
effectuer des opérations arithmétiques, etc…
Ce qui nous a permis, de traité avec aisance et facilité les exercices dudit Chef
d’œuvre.

66

Vous aimerez peut-être aussi