Semestre 1
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) ;
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 :
23
Exercice 3 :
Soit la fonction McCarthy définie pour tout entier naturel de la façon suivante :
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 :
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)
27
Voici notre résultat :
Exercice 5 :
1) a)
Procédure de saisie
d’un nombre entier
28
Résultat Exo5_Q1a :
29
Résultat Exo5_Q1b :
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 :
62
b) Addition de deux réels:
63
3- On considère ici les classes des nombres réels et des nombres complexes
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