Touht
Touht
Touht
Encadré par :
Pr. Mme : Samira Touhtouh
1
TP1 : LES ENTREES_SORTIES ET LES INSTRUCTION DE CONTROLE
Introduction :
Un peu d’histoire
• Le langage C++ est créé au début des années 1980 par Bjarne Stroustrup.
• Le C++ est une amélioration du langage C en lui ajoutant la notion de classe.
• C++11 est un véritable renouveau de C++, suivi de C++14 et C++17, ajoutant de nombreuses
fonctionnalités au langage.
Pourquoi le langage C++ ?
• Le C++ est très rapide.
• Langage compilé et proche de la machine.
• Le C++ est très répondu dans le calcul numérique à haute performance (p.ex résoudre des
problèmes physiques et de l’analyse numérique) Intégration numériques.
• Résolution numérique des équations différentielles ordinaires.
• Résolution numérique de systèmes d’équations algébriques ou différentielles.
• Le C++ est un langage multiparadigmes. Programmer de différentes façons : la programmation
procédurale, orientée objet ou générique.
2
EXERICICE 2
Soit le programme suivant :
3
#include <stdio.h>
int main()
{
int n,m,p,s;
printf("saisair les deux nombres \n:");
scanf("%d%d,&n,&m");
s=n+m;
p=n*m;
printf("la somme est %d\n",s);
printf("la Produit est %d\n",p);
return 0;
}
EXERCICE 3 :
Écrire un programme qui calcule les racines carrées de nombres fournis en donnée. Il
s’arrêtera lorsqu’on lui fournira la valeur 0. Il refusera les valeurs négatives. Son exécution se
présentera ainsi:
donnez un nombre positif : 2
sa racine carrée est : 1.414214e+00
donnez un nombre positif : -1
svp positif
donnez un nombre positif : 5
sa racine carrée est : 2.236068e+00
donnez un nombre positif : 0
le execution de programme est :
4
Comparaison entre langage c++ et langage c :
➢ Dans c il ya printf et scanf au lieu de cin et cout dans c++
➢ Il n’ya pa alternative direct dans c
➢ setfill dans c++ peut être remplacer par surprintf dans c
➢ Le langage c pour la programmation procédurale et le langage c++ pour ma programation oriente
objet
5
TP3 : Classes et objets
Exercice 1 :
Création de programme
P est majuscule :
6
Explication de la message d’erreur :
Si on ne fait pas " public :" avant la déclaration de la méthode on ne peut pas faire l'appel à
ces méthodes en dehors de la classe point et il nous affiche l'erreur "private", puisque on ne
pas utiliser les méthodes d’une classe en dehors de la classe, ils sont privés à la classe, et aussi
il existe le problème de ne pas respecter la même notation pour < point> il un écrit en
majusculer et l’autre écrit en minuscule
Proposition de solution :
Afin d’utiliser les méthodes d’une classe en dehors de cette classe en ajoute l’instruction «
public : » avant la définition de la méthode pour que les méthodes soient publics
Avec public et p est minuscule
7
int main()
point point1,point2;
Exercice 2 :
8
TP 4 : constructeur et destructeur
Exercice 1 :
9
Dans cet exercice, on a créé une CLASS qui porte le nom de « point », après on a eu la création de 2
nouveaux fichiers.
Fichier.h
Fichier.cpp
Le premier fichier contient la classe portant le nom -point- dans lequel on peut définir le
programme de notre classe et trouver un destructeur et constructeur par défaut.
Le deuxième fichier porte les corps du constructeur et destructeur.
Point () : est une méthode particulière appelées Le constructeur, porte le nom de
classe qui ne renvoie rien (même pas void) dont son rôle est initialisé les attributs
de la classe.
~Point () : c’est une méthode qui est appelée automatiquement lorsqu’un objet
est détruit, porte le nom de la classe avec le symbole ~, appelées Le destructeur.
10
11
Exercice 2 :
Ecrire une fonction de prototype point test () qui retourne un point . ce point sera initialisé et
affiché dans test puis déplacé et à niveau affiché dans main.
12
Utiliser la class <<point>>de l’exercice 1-1.
Pour écrire une fonction de prototype void test() dans la quelle on déclare un point u ,on
l’initialise, on l’affiche, on déplace et on l’affiche à nouveau
13
14
Il existe ou moins deux méthodes Pour initialiser et déplacer et afficher un point,
Tell la première en créant une fonction qui regroupes les membres de la classe et la déclarer
en main, et la deuxième en déclarant le point directement dans la main.
Constructeur de copie :
Programme A :
15
Programme B :
Programme A : Après l’allocation dynamique d’une case mémoire à l’objet a on a créé une
copie de ce dernier et la nommer b, on remarque dans le programme que la modification du
contenu de a changé aussi le contenu de b ; la copie du pointeur *s ne duplique pas la chaine
pointée : les deux objets La plupart du temps ce partage n'est pas souhaitable, car difficile à
gérer et dangereux : toute modification de l'étiquette d'un des deux points se répercutera
immédiatement sur l'autre(comme dans notre cas).
Fonction amies :
Exercice 1 :
16
ROLE DE LA FONCTION AMIES
Après le test du programme on a remarqué qu’on a pu accéder aux attributs privés de la classe
testée. La méthode amie ( friend int coincide (point, point)) qu’on a déclarée nous a permet
d’utilisés les attributs privés de la classe où elle est déclaré à l’extérieur de cette dernière.
Exercice 2 :
Créer un programme qui additionne deux objets appartenant a deux classes A et B .
Utiliser une fonction ami qui additionne
Commentaire :
la fonction membre de la classe ‘B’ peut accéder aux membres privées de n’importe quel
objet de la classe ‘A’.
Pour compiler correctement la déclaration de la classe ‘A’, contenant une déclaration d’une
fonction amie, il faut : - Définir ‘B’ avant ‘A’. - Déclarer ‘A’ avant ‘B’.
17
TP5 : les fonctions
Généralités :
Pour en faciliter et en améliorer la gestion, les programmes complexes sont décomposés en
sous-programmes plus élémentaires et plus simples appelés fonctions.
En programmation, l’utilisation des fonctions a pour but de :
➢ Simplifier la réalisation et la maintenance des programmes.
➢ Éviter les répétitions.
➢ Favoriser la réutilisabilité des codes.
Le découpage d’un programme en fonctions (modules) est appelée programmation
modulaire.
Fonction :
Définition :
➢ Une fonction est un sous programme du C++ permet de regrouper des instructions et
de lancer leur exécution grâce à un nom.
➢ Une fonction est un sous-programme qui agit sur des données (paramètres) et retourne
une valeur. Déclaration d’une fonction
Déclaration d’une fonction :
➢ La déclaration d’une fonction (prototypage) est désignée sous le nom de prototype de
la fonction.
➢ Un prototype (en-tête de la fonction) donne le nom, le nombre et le type d’arguments
d’entrée ainsi que le type de la valeur retournée par la fonction.
Syntaxe de déclaration : type_retourné nom_fonction ( type1 arg1, type2 arg2, ... ) ;
➢ Toute fonction utilisée dans le programme principal doit être déclarée avant main
Programme 1 :
18
Conclusion :
Lors de l’appel de la fonction, c’est seulement une copie des valeurs des paramètres effectifs
qui est affectées aux paramètres formels c’est le Passage par valeur .
Programme 2 :
Conclusion :
Ici, c’est l’adresse des emplacements mémoire des paramètres réels qui est copiée dans les
paramètres formels c’est le Passage par adresse (Pointeur).
19
Programme 3 :
Conclusion :
Dans ce cas, le paramètre formel est un alias (synonyme) de l’emplacement mémoire du
paramètre réel c’est le Passage par référence.
20
TP 7 : La surcharge des opérateurs
Surcharge d’opérateur
• C++ permet de sur définir les opérateurs tels que +, =, +=, ++, <<, new…
• Fondamentalement, l’appel à un opérateur est identique à l’appel d’une fonction →possibilité de sur
définir
• Le but est de définir ces “fonctions” pour des classes dépourvues de ces opérateurs
Exercice 1 :
Exécution de programme :
La méthode utilisée pour surcharger l’opérateur + est surcharge des opérateurs internes parce qu'il est déclarés à
l'intérieur de la classe.
21
3- Surcharge de l’opérateur –
Exercice 2 :
La méthode utilisée pour surcharger l’opérateur est surcharge externe puisque la définition de l'opérateur ne se
fait plus dans la classe qui l'utilise, mais en dehors de celle-ci.
1-exicution du programme :
22
Si les deux valeurs sont différent :
2-Autres méthode :
3- Surcharge de l’opérateur != :
23
TP 8 : L’ héritagé
L'héritage (en anglais inheritance) est un principe propre à la programmation orientée objet, permettant de créer une
nouvelle classe à partir d'une classe existante. Le nom d'"héritage" (pouvant parfois être appelé dérivation de classe)
provient du fait que la classe dérivée (la classe nouvellement créée) contient les attributs et les méthodes de sa
superclasse (la classe dont elle dérive). L'intérêt majeur de l'héritage est de pouvoir définir de nouveaux attributs et de
nouvelles méthodes pour la classe dérivée, qui viennent s'ajouter à ceux et celles héritées.
Par ce moyen on crée une hiérarchie de classes de plus en plus spécialisées. Cela a comme avantage majeur de ne pas
avoir à repartir de zéro lorsque l'on veut spécialiser une classe existante. De cette manière il est possible d'acheter dans
le commerce des librairies de classes, qui constituent une base, pouvant être spécialisées à loisir (on comprend encore
un peu mieux l'intérêt pour l'entreprise qui vend les classes de protéger les données membres grâce à l'encapsulation...).
EXERCICE 1 :
24
4-teste de programme :
Exercice 2 :
Créer une class personne et une objet pa pour afficher le nom, prénom et l’âge d’une personne .créer ensuite une classe
étudiante qui permet d’afficher en plus du nom ;prénom et l’age ,la note de cet étudiante .
25
26