Bases de C++
Pour les concours BAC+2
By: Kamal TAGHLAOUI
C++ ?
C++ ?
C++ est un langage compilé.
C++ a été développé par Bjarne Stroustrup.
C++ offre un niveau de contrôle élevé sur les
ressources système et la mémoire par les pointeurs.
Bjarne Stroustrup
C vs C++
C vs C++
C++ est une extension du langage C (C with classes).
C++ prend en charge les classes et les objets, tandis
que C ne le fait pas.
C vs C++
C++
C
C++ pour les concours
Structure
de code C++
Input.. Output
Input.. Output
Les commentaires
Les variables: Identificateur
Identificateur (nome de variable):
• Composé de : lettres, chiffres, _ (underscore)
• Ne peut pas commencer par un chiffre
• Ne doit pas utiliser un mot réservé (return, if, …)
Les variables: Identificateur
Mots
Réservé
En C++
Source: [Link]
Les variables: Types
namespace
Instructions conditionnelles
Instructions conditionnelles
if
Instructions conditionnelles
Opérateur ternaire
Instructions conditionnelles
switch
Boucles
Boucles
for
Boucles
while
Boucles
Do-While
Contrôle de flux
Contrôle de flux
Continue
et Break
Tableaux
Tableaux
Tableau unidimensionnel: Syntax
Tableaux
Tableau unidimensionnel: Exemple
Tableaux
Tableau multidimensionnel: Syntax
Tableaux
Tableau
multidimensionnel:
Exemple
Autres Structure de données
Autres Structure de données
Vector
Références et pointeurs
Références et pointeurs
Références
Références et pointeurs
Références
y
12
x
Références et pointeurs
Pointeurs
Références et pointeurs
Pointeurs
y x
12
0x1A2B34F5678EC
Références et pointeurs
Pointeurs
y x
0x1A2B34F5678EC 12
0x1A2B34F5678EC
Références et pointeurs
Pointeurs
y x
0x1A2B34F5678EC 12
0x1A2B34F5678EC
Fonctions et récursion
Fonctions et récursion
Fonction: Exemple
Fonctions et récursion
Fonction Récursive:
Exemple
Fonctions sur les chaînes de caractères
Fonctions sur les chaînes de caractères
Les fonctions très utilisées
length()
substr()
append()
compare()
empty()
…
Fonctions Math
Fonctions Math
Les fonctions
très utilisées
POO
(programmation orientée objet)
POO
POO ?
POO
POO ?
Classe Objets
POO
POO ?
Classe Objets
POO
POO ?
Classe Objets
POO
Attention!
POO
Attention!
C++ Compiler:
Remarque:
En C++
class = struct
Private Public
par default par default
POO
Concepts de POO
Classe – décrit la structure.
Objet – un exemple spécifique de cette structure (instance).
Instance – autre nom pour objet.
Instanciation – création d’un objet à partir d’une classe.
Membres de données – variables associées à la classe.
Méthodes – fonctions associées à la classe.
Classe parente (classe de base) – celle dont on hérite.
Classe enfant (classe dérivée) – celle qui hérite de la classe parente.
POO
Concepts de POO
Classe
Objet
Instance
Instanciation
Membres de données
Méthodes
qui hérite de la classe parente.
POO
Concepts de POO
Classe
Objet
Instance
Instanciation
Membres de données
Méthodes
qui hérite de la classe parente.
POO
Concepts de POO
Classe
Objet
Instance
Instanciation
Membres de données
Méthodes
qui hérite de la classe parente.
POO
Concepts de POO
Classe
Objet
Instance
Instanciation
Membres de données
Méthodes
qui hérite de la classe parente.
POO
Concepts de POO
Classe
Objet
Instance
Instanciation
Membres de données
Méthodes
qui hérite de la classe parente.
POO
Concepts de POO
Classe
Objet
Instance
Instanciation
(attributs) Membres de données
Méthodes
qui hérite de la classe parente.
POO
Concepts de POO
Classe
Objet
Instance
Instanciation
Membres de données
Méthodes
qui hérite de la classe parente.
POO
Concepts de POO
Classe parente (classe de base)
Classe enfant (classe dérivée)
POO
Concepts de POO
Classe parente (classe de base)
Classe enfant (classe dérivée)
POO
Concepts de POO
Classe parente (classe de base)
Classe enfant (classe dérivée)
POO
Les 4 piliers de la POO
Abstraction – concept qui consiste à simplifier l’utilisation en
cachant la complexité.
Encapsulation – restriction de l’accès aux données privées via
des interfaces publiques contrôlées.
Héritage – possibilité de créer des classes dérivées qui héritent
des propriétés d’une classe parente.
Polymorphisme – possibilité de traiter différents objets comme
s’ils étaient du type de la classe de base.
POO
Accesseurs, Mutateurs
(getters & setters)
POO
Accesseurs, Mutateurs
(getters & setters)
Contrôler l’affichage (output)
POO
Constructeur
Affectation dans le corps
1 du constructeur
Liste d'initialisation du constructeur
2 ou Liste d'initialisation des membres
POO
Constructeur par default: Création
2
POO
Constructeur par default: Instanciation
POO
Constructeur par default: Instanciation
Comme:
prototype de fonction
POO
Constructeur par default: Instanciation
POO
Instanciation
Remarque:
Les valeurs par défaut pour les attributs :
➢ Les nombres (int, float…) ont une valeur de déchets
mémoire (garbage).
➢ Les chaînes de caractères (string) sont initialisées à Chaîne
vide ("").
POO
Héritage
POO
Héritage
Héritage public (le plus courant)
POO
Héritage
Héritage public (le plus courant)
POO
Héritage
Remarque:
POO
Héritage
POO
Héritage
POO
Héritage
POO
Héritage
POO
Héritage
C’est toujours le cas pour private!!!!
POO
Remarque
est facultative
dans certain situations
Compiler behavior:
Current scope Outer scope Global scope
POO
Remarque
sont facultatives
dans certain situations (pas de conflit)
Compiler behavior:
Outer scope
Current scope Global scope
(+ Parent class)
POO
Remarque
Explicite ()صريح
implicite ()ضمني
POO
Héritage: override (Redéfinir)
Classe de base Classe dérivée
(Parent) (enfant)
POO
Héritage: override (Redéfinir)
Classe de base Classe dérivée
(Parent) (enfant)
POO
Polymorphism
POO
Polymorphism
Remarque:
=
POO
Static: Méthode
POO
Static: Méthode
Mot Clé
(Keyword)
opérateur de résolution de portée
POO
Static: Variable
POO
Définition de fonction membre en dehors de la classe
(out-of-class member function definition)
POO
Fonction Amie (Friend Function)
POO
Classes Amie (Friend Class)
Utilisation:
POO
Classes Amie (Friend Class)
Utilisation:
POO
Surcharge d’opérateur
(Operator overloading)
?
POO
Surcharge d’opérateur
(Operator overloading)
Unless..
POO
Surcharge d’opérateur
(Operator overloading)
POO
Surcharge d’opérateur
(Operator overloading)
Éléments utiles
Éléments utiles
Portée des variables
Éléments utiles
Portée globale
Éléments utiles
Variable statique dans une fonction
Éléments utiles
Opérateur de résolution de portée
(avec la portée globale)
Éléments utiles
Littéraux entiers (Integer Literals)
Éléments utiles
Littéraux entiers avec suffixe
(Integer Literals with suffix)
Éléments utiles
Littéraux entiers avec suffixe
(Integer Literals with suffix)
Suffixes:
• u / U → unsigned int
• l / L → long
• ll / LL → long long
• ul / UL → unsigned long
• ull / ULL → unsigned long long
• f / F → float
• l / L (sur un littéral flottant) → long double
Éléments utiles
Conversion de type
Éléments utiles
Conversion de type
First 16 bits
Éléments utiles
Conversion de type
Éléments utiles
Conversions de type forces (casting/cassage)
Éléments utiles
Conversions de type (Promotion de type)
Éléments utiles
Caractères d’échappement
(Escape characters)
Source: [Link]
Éléments utiles
Priorité des opérateurs
Source: Arabic Competitive Programming (on Youtube)
C++ en pratique
QCM d'anciens concours BAC+2 (aka Licence)
By: Kamal TAGHLAOUI
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Identifiez les cas où le constructeur de copie est
utilisé (que vous pouvez considérer comme défini):
Rectangle r1;
Rectangle r2(r1);
Rectangle r1 = 2;
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Identifiez les cas où le constructeur de copie est
utilisé (que vous pouvez considérer comme défini):
Rectangle r1; constructeur par défaut
Rectangle r2(r1); constructeur de copie (copie r1)
Rectangle r1 = 2; constructeur de conversion (int vers Rectangle / doit étre crée)
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Identifiez les cas où le constructeur de copie est
utilisé (que vous pouvez considérer comme défini):
Rectangle r1; constructeur par défaut
Rectangle r2(r1); constructeur de copie (copie r1)
Rectangle r1 = 2; constructeur de conversion (int vers Rectangle / doit étre crée)
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Si le constructeur par défaut n'est pas spécifié :
il ne sera pas possible de créer une instance de cette classe à l'aide de ce
constructeur
le compilateur va en générer un automatiquement, si aucun autre
constructeur n'est spécifié
il est alors interdit de définir un destructeur
il est nécessaire de définir au moins un constructeur, avec ou sans arguments
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Si le constructeur par défaut n'est pas spécifié :
il ne sera pas possible de créer une instance de cette classe à l'aide de ce
constructeur
le compilateur va en générer un automatiquement, si aucun autre
constructeur n'est spécifié
il est alors interdit de définir un destructeur
il est nécessaire de définir au moins un constructeur, avec ou sans arguments
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Les opérateurs binaires peuvent être définis :
seulement entre deux instances de la même classe
entre n'importe quelles classes
seulement si l'on définit tous les opérateurs
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Les opérateurs binaires peuvent être définis :
seulement entre deux instances de la même classe; Faux. On peut
définir un opérateur binaire entre une instance de classe et un autre type
entre n'importe quelles classes
seulement si l'on définit tous les opérateurs; Faux. On peut définir
seulement ceux qui nous intéressent, indépendamment des autres.
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Choisissez la définition correcte pour la
surcharge de l’opérateur "+" afin qu'il
retourne un nouveau rectangle.
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Choisissez la définition correcte pour la
surcharge de l’opérateur "+" afin qu'il
retourne un nouveau rectangle.
Où est la définition ?
C’est l’opérateur ‘++’
(la question sur ‘+’)
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Choisissez la définition correcte pour la
surcharge de l’opérateur "+" afin qu'il
retourne un nouveau rectangle.
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Étant donné la classe parente
suivante:
Quels champs et méthodes
sont accessibles depuis la sous-
classe Car :
serialNumber
weight registration
getRegistration()
owner.
EST Essaouira
Test écrit de la licence Professionnelle : Ingénierie des Systèmes Informatiques et Logiciels (ISIL)
Étant donné la classe parente
suivante:
Quels champs et méthodes
sont accessibles depuis la sous-
classe Car :
serialNumber
weight registration
getRegistration()
owner.
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
L’héritage permet de:
Gérer le partage des données.
La réutilisation du code.
La création de plusieurs classes dérivées d’une seule classe de
base.
Réduire les données de la classe mère.
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
L’héritage permet de:
Gérer le partage des données.
La réutilisation du code.
La création de plusieurs classes dérivées d’une seule classe de
base.
Réduire les données de la classe mère.
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Une référence est une:
Adresse d’une autre variable
Un alias d’une autre variable
Une variable dynamique
Une Variable statique
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Une référence est une:
Adresse d’une autre variable
Un alias d’une autre variable
Une variable dynamique
Une Variable statique
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Sur un objet constant on peut:
Appeler une fonction membre constante
Appeler une fonction membre non constante
Une fonction membre statique
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Sur un objet constant on peut:
Appeler une fonction membre constante
Appeler une fonction membre non constante
Une fonction membre statique
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Une classe peut avoir:
Plusieurs constructeurs
Plusieurs destructeurs
Plusieurs classes derivées
Plusieurs classes amies
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Une classe peut avoir:
Plusieurs constructeurs
Plusieurs destructeurs; Non, une classe ne peut avoir qu’un seul
destructeur. Sa signature est unique : ~NomClasse().
Plusieurs classes derivées
Plusieurs classes amies
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Qu’affiche le code suivant:
10
12
0
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Qu’affiche le code suivant:
10
12
0
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Quelle est la valeur affichée après l’exécution du
code suivant:
2
setx() doit être const erreur
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Quelle est la valeur affichée après l’exécution du
code suivant:
Doit être comme:
2
void setx(int a) const { x = a; }
Un objet constant ne peut utiliser 4
les méthodes non constantes
setx() doit être const erreur
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Quelle est la valeur affichée après l’exécution du
code suivant:
Doit être comme:
2
void setx(int a) const { x = a; }
Un objet constant ne peut utiliser 4
les méthodes non constantes
setx() doit être const erreur
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Qu’affiche le programme suivant:
7a
10a
10
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Qu’affiche le programme suivant:
7a
10a
10
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Qu’affiche le programme suivant:
10a
10
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
b1: valeur
d: valeur lettre
10 7 a
copie uniquement la partie
b1 = d; Base1 de d — appelé slicing
d’objet en C++.
b1: valeur
7
ENS Marrakech
Concours d’accès à la licence professionnelle de qualification dans les métiers de l’éducation, option INFORMATIQUE
Qu’affiche le programme suivant:
10a
10
ENS Marrakech
Licence Professionnelle de Qualification aux Métiers de l’Enseignement, spécialité INFORMATIQUE
Concours d’accès en semestre 5
Cocher l’appel qui cause une erreur de compilation ?
ENS Marrakech
Licence Professionnelle de Qualification aux Métiers de l’Enseignement, spécialité INFORMATIQUE
Concours d’accès en semestre 5
Cocher l’appel qui cause une erreur de compilation ?
ENS Marrakech
Licence Professionnelle de Qualification aux Métiers de l’Enseignement, spécialité INFORMATIQUE
Concours d’accès en semestre 5
Pour qu’une variable locale d’une fonction conserver
sa valeur entre des appels, elle doit être déclarée en
utilisant le mot clé:
static
global
dynamic
const
*Je pense que cette question concerne PHP, mais elle peut être généralisée à d'autres langages comme C++.
ENS Marrakech
Licence Professionnelle de Qualification aux Métiers de l’Enseignement, spécialité INFORMATIQUE
Concours d’accès en semestre 5
Pour qu’une variable locale d’une fonction conserver
sa valeur entre des appels, elle doit être déclarée en
utilisant le mot clé:
static
global
dynamic
const
*Je pense que cette question concerne PHP, mais elle peut être généralisée à d'autres langages comme C++.
C’est fini!
Practice..
Practice..
Practice..
Bonne chance
à tous et à toutes
Done by: Kamal TAGHLAOUI