0% ont trouvé ce document utile (0 vote)
119 vues156 pages

Cours CPP Et Concours

Transféré par

Gaming star
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
119 vues156 pages

Cours CPP Et Concours

Transféré par

Gaming star
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi