Upload
carlo-coco
View
224
Download
2
Embed Size (px)
Citation preview
09/01/2016
1
Programmation Orientée Objet
par C++
ZAKRANI Abdelali
ENSAM – CASABLANCA
Année universitaire 2013-2014
ZAKRANI / MOO par UML / 13-14 2
Langage de programmation
L’ordinateur est une machine étonnante
et complexe.
Il ne comprend qu'un langage très simple
constitué de 0 et de 1.
Un message tel que :
1010010010100011010101001010
« Affiche une fenêtre à l'écran »
Peut
signifier
Langage binaire
09/01/2016
2
ZAKRANI / MOO par UML / 13-14 3
Langage de programmation
Le compilateur permet de transformer votre code, écrit dans un
langage de programmation, en un vrai programme exécutable.
Le programme écrit
dans un langage de
programmation
Le
programmation
de traduction
traduit en
« binaire »
On obtient un
programme en binaire
que l’ordinateur
comprend:
101001001010001101
Les informaticiens ont créé des langages
intermédiaires, plus simples que le binaire.
Il existe aujourd'hui des centaines de langages
de programmation.
Compilateur
ZAKRANI / MOO par UML / 13-14 4
Langage de programmation C++
Niveaux
des
langages
Langage de haut niveau Plus simple et plus éloigné du
fonctionnement de la machine
Langage de bas niveau Plus complexe et plus proche du
fonctionnement de la machine
0110100110
0101011101
• Java
• C# .net
• Python
• Ruby
• C
• C ++
• Objective - C
• Assembleur
Binaire
09/01/2016
3
ZAKRANI / MOO par UML / 13-14 5
Histoire de C++
Bjarne Stroustrup
créateur de C++
• 1979: Bjarne Stroustrup crée le langage C with class
• 1983: C with class devient C++ après l’ajout des
références, de la surcharge d’opérateurs et les fonctions
virtuelles
• 1989: la version 2.0 de C++ qui apporte l’héritage
multiple et les classes abstraites et d’autres nouveautés
• 1998: la standarisation au niveau
international du langage C++
• 2011: Révision majeure du C++11
ZAKRANI / MOO par UML / 13-14 6
Langage de programmation C++
C++ = C +
Notion de classe
méthodes (ou fonction membre)
héritage
polymorphisme…
D’une façon simpliste: C++ est un sur-ensemble de C.
C++= C + améliorations + orienté objet
09/01/2016
4
Il est très répandu, il fait partie des langages de
programmation les plus utilisés sur la planète.
Il est rapide, ce qui en fait un langage de choix pour les
applications critiques qui ont besoin de performances
Il est portable: un même code source peut
théoriquement être transformé sans problème en
exécutable sous Windows, Mac OS et Linux
Il existe de nombreuses bibliothèques pour le C++.
ZAKRANI / MOO par UML / 13-14 7
Langage C++
ZAKRANI / MOO par UML / 13-14 8
Premier programme C++ directive de préprocesseur: inclure
la bibliothèque iostream
indique que vous allez utiliser l'espace de
noms std dans la suite du fichier de code
Commentaire qui s’étale
sur plusieurs ligne /* …*/
Commentaire sur une
seule ligne Tous les programmes
commencent par la
fonction main
09/01/2016
5
Cout suivi de l’opérateur d’insertion (<<)pour afficher des données à
l’écran
endl: end line provoque un retour à la ligne
ZAKRANI / MOO par UML / 13-14 9
Premier Programme C++
La fonction main() retourne un entier
Si la valeur 0 est retourné indique que le
programme s’est termine correctement
Comme toute fonction en c++, la
fonction main est délimité par { }.
Les instructions entre { et }
constitue un bloc
ZAKRANI / MOO par UML / 13-14 10
Second programme C++
09/01/2016
6
Les identificateurs: servent à désigner les différents
objets manipulés par le programme (variables, fonctions,
objets, structures…)
Ils sont formés d’une suite de caractère choisis parmi
les lettres et les chiffres. Le premier caractère doit être
une lettre
Exemples:
lg_lig, valeur_5, _total, _89
les identificateurs ligne et Ligne désignent deux objets
différents.
ZAKRANI / MOO par UML / 13-14 11
Quelques règles d’écriture
Certains « mots-clés » sont réservés par le langage à
un usage bien défini et ne peuvent pas être utilisés
comme identificateurs
ZAKRANI / MOO par UML / 13-14 12
Quelques règles d’écriture
09/01/2016
7
ZAKRANI / MOO par UML / 13-14 13
Cré
ati
on
d’u
n p
rogra
mm
e C
++
Prog1.cpp
Préprocesseur C++
Fichier temporaire
Compilateur
Prog1.s
Assembleur
Prog1.o
Éditeur de liens
Prog1.exe
1
2
3
4
Inclut les fichiers en-tête
Modules objets pour les fonctions
de la librairie
Fichier source
Le résultat est
toujours un fichier
source
Fichier objet
Les types de base en C++ sont: char, int et float
Les types dérivés:
◦ de types structurés comme les tableaux, les structures
ou les unions, et surtout les classes ;
◦ d’autres types simples comme les pointeurs ou les
énumérations.
ZAKRANI / MOO par UML / 13-14 14
Les types de base de C++
09/01/2016
8
Les entiers
ZAKRANI / MOO par UML / 13-14 15
Les types de base de C++
Les réels
ZAKRANI / MOO par UML / 13-14 16
Les types de base de C++
09/01/2016
9
Typevariable nomvariable;
Exemples: int n;
int n =20;
const float x=0.3;
double y;
bool ok=false;
char c=‘a’;
ZAKRANI / MOO par UML / 13-14 17
Déclarations des variables
Les opérateurs sont des symboles qui permettent de
manipuler des variables, c'est-à-dire effectuer des
opérations, les évaluer, etc.
On distingue plusieurs types d'opérateurs :
les opérateurs de calcul (arithmétiques): addition
(+), multiplication (*), division (/), soustraction (-), unaire
(l’opposé -).
les opérateurs d'assignation (+=, -=, *=, /=)
les opérateurs d'incrémentation/décrémentation
(++, --)
les opérateurs de comparaison (<=, <, >=, >, ==, !=)
ZAKRANI / MOO par UML / 13-14 18
Opérateurs et expressions
09/01/2016
10
Les opérateurs logiques:
&& (ET logique)
|| ( OU logique)
! (NON logique)
L’opérateur relationnel: (? et :)
En C++, l’instruction:
ZAKRANI / MOO par UML / 13-14 19
Opérateurs et expressions
if ( a>b ) max = a ;
else max = b ; max= a>b ? a : b ;
ZAKRANI / MOO par UML / 13-14 20
QUIZ
1. Vérifier la validité des noms des variables
suivants :(valide/invalide)
a) id2
b) 4eme
c) x#y
d) _id
e) no-commande
f) taux change
g) _2344
h) %id
09/01/2016
11
ZAKRANI / MOO par UML / 13-14 21
QUIZ
2. Comment écrire un commentaire sur une seule ligne ?
a) // mon commentaire //
b) // mon commentaire
c) /* mon commentaire */
d) /* mon commentaire
ZAKRANI / MOO par UML / 13-14 22
QUIZ
3. Quel est la première étape de la compilation?
a) Prétraitement par le préprocesseur
b) Assembleur
c) Editeur de liens
d) Compilateur
09/01/2016
12
4. Quel l’en-tête qui permet d’utiliser la
fonction sqrt() en C++?
a) Qmath
b) Cmath
c) Math
ZAKRANI / MOO par UML / 13-14 23
QUIZ
5. Quels sont les mots clés introduits par
C++?
a) Break
b) Private
c) Struct
d) Long int
e) Class
f) new
ZAKRANI / MOO par UML / 13-14 24
Quiz
09/01/2016
13
6. Quels résultats fournit le programme suivant :
ZAKRANI / MOO par UML / 13-14 25
QUIZ
A : i = 1 n = 0
B : i = 11 n = 11
C : i = 21 j = 6 n = 120
D : i = 18 n = 18
E : i = 12 j = 4 n = 12
L’instruction if
Syntaxe if (expression) instruction_1
else instruction_2
Ou
if (expression) instruction_1
Où
expression : expression quelconque
instruction_1 et instruction_2 : instructions
quelconques (simple, bloc ou instruction structurée.)
ZAKRANI / MOO par UML / 13-14 26
Les instructions de contrôle
09/01/2016
14
L’instruction if
Exemple: if ( ++i < limite) cout << "OK" ;
est équivalent à :
◦ i = i + 1 ;
◦ If ( i < limite ) cout << "OK" ;
Questions:
1. if (a = b) { ..... } ?
2. if (a<=b) if (b<=c) cout << "ordonné" ;
else cout << "non ordonné" ;
ZAKRANI / MOO par UML / 13-14 27
Les instructions de contrôle
L’instruction switch:
Syntaxe:
switch (expression)
{ case constante_1 : [ suite_d’instructions_1 ]
case constante_2 : [ suite_d’instructions_2 ]
..............
case constante_n : [ suite_d’instructions_n ]
[ default : suite_d’instructions ]
}
ZAKRANI / MOO par UML / 13-14 28
Les instructions de contrôle
09/01/2016
15
L’instruction do … while
Syntaxe:
do instruction
while (expression) ;
ZAKRANI / MOO par UML / 13-14 29
Les instructions de contrôle
L’instruction for
Syntaxe: for ([ expression_déclaration_1 ] ; [ expression_2 ] ; [ expression_3 ])
instruction
ZAKRANI / MOO par UML / 13-14 30
Les instructions de contrôle
09/01/2016
16
L’instruction break
ZAKRANI / MOO par UML / 13-14 31
Les instructions de branchement
inconditionnel
début tour 1
Bonjour
fin tour 1
début tour 2
bonjour
fin tour 2
début tour 3
bonjour
après la boucle
Le programme a affiché
début tour 3 et bonjour
puis i==3, il sort de la
boucle
L’instruction continue
ZAKRANI / MOO par UML / 13-14 32
Les instructions de branchement
inconditionnel
début tour 1
début tour 2
début tour 3
début tour 4
bonjour
début tour 5
bonjour
Le programme affiche
début tour 1 à 3 puis
i>=4, il affiche bonjour
09/01/2016
17
L’instruction goto
ZAKRANI / MOO par UML / 13-14 33
Les instructions de branchement
inconditionnel
début tour 1
Bonjour
fin tour 1
début tour 2
bonjour
fin tour 2
début tour 3
bonjour
après la boucle
Le programme a affiché
début tour 3 et bonjour
puis i==3, il se banche à
sortie
ZAKRANI / MOO par UML / 13-14 34
Exercices
Détecter le problème?
Détecter l’erreur?
09/01/2016
18
Quelles erreurs ont été commises dans chacun des
groupes d’instructions suivants :
1.
if (a<b) cout << "ascendant"
else cout << "non ascendant" ;
2.
int n ;
...
switch (2*n+1)
{ case 1 : cout << "petit" ;
case n : cout << "moyen" ;
}
ZAKRANI / MOO par UML / 13-14 35
Quiz
L’expression 2*n+1 n’est une
expression constante
Il manque un point-virgule dans la
première instruction
if (a<b) cout << "ascendant« ;
Quelles erreurs ont été commises dans chacun des
groupes d’instructions suivants :
3.
const int LIMITE=100;
int n ;
...
switch (n)
{ case LIMITE-1 : cout << "un peu moins" ;
case LIMITE : cout << "juste" ;
case LIMITE+1 : cout << "un peu plus" ;
}
ZAKRANI / MOO par UML / 13-14 36
Quiz (suite)
OK