SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Plan
 Introduction
 Passage par valeur
 Passage par adresse
 Passage par référence
 Conclusion
Introduction
Passage par valeur
     Principe
       Les arguments sont copiés dans des objets
    temporaires qui sont crées lors du passage d'arguments
    et qui sont détruit à la fin de l'exécution de la fonction .

 Toutes les modifications effectuées sur ces objets
    temporaires seront donc perdues à la fin de la fonction
    et n'auront aucune incidence sur l'objet passé en
    argument lors de l'appel de la fonction.
Passage par valeur
       Exemple:
void incremente(int i) /* i est la copie de la valeur passée en
    paramètre */
{
         i++; /* Modifie i, mais pas la variable fournie par l'appelant. */
 }
int main() {
     int j = 12;
     incremente(j); /* Le contenu de j est copié dans i. j n'est pas
    modifié. Il vaut toujours 12. */
         cout << j << endl;            // Affiche 12
}
Passage par adresse
 Notion d’adresse:
      Tout objet manipulé par l'ordinateur est stocké dans
    sa mémoire. On peut considérer que cette mémoire est
    constituée d'une série de « cases », cases dans
    lesquelles sont stockées les valeurs des variables ou les
    instructions du programme. Pour pouvoir accéder à un
    objet, c'est-à-dire au contenu de la case mémoire dans
    laquelle cet objet est enregistré, il faut connaître le
    numéro de cette case. Autrement dit, il faut connaître
    l'emplacement en mémoire de l'objet à manipuler. Cet
    emplacement est appelé l'adresse de la case mémoire.
Passage par adresse
 Principe:
       Les arguments sont des pointeurs qui contiennent
    l'adresse en mémoire des objets que l'on veut
    manipuler. Il n'y a donc plus de copie, plus de variable
    locale. Toute modification du paramètre dans la
    fonction appelée entraîne la modification de la
    variable passée en paramètre.
Passage par adresse
  Exemple:
void incremente(int * i) { /*incremente attend l’adresse d’un entier*/
        (*i)++;
 }
  int main() {
      int j = 12;
      incremente(&j);     /* On passe l'adresse de j en paramètre. */
      cout << j << endl; // Affiche 13
}
 Cependant, plusieurs problèmes se posent au niveau
 syntaxique pour le passage par adresse :

   la syntaxe est lourde dans la fonction, à cause de
    l'emploi de l'opérateur * devant les paramètres ;
   la syntaxe est dangereuse lors de l'appel de la fonction,
    puisqu'il faut systématiquement penser à utiliser
    l'opérateur & devant les paramètres.
Passage par référence
  Notion de référence:

   Les références sont des synonymes d'identificateurs.
 Elles permettent de manipuler une variable sous un
 autre nom que celui sous laquelle cette dernière a été
 déclarée.
Passage par référence
   Notion de référence:

    Toute référence doit se référer à un identificateur : il
 est donc impossible de déclarer une référence sans
 l'initialiser. De plus, la déclaration d'une référence ne
 crée pas un nouvel objet comme c'est le cas pour la
 déclaration d'une variable par exemple. En effet, les
 références se rapportent à des identificateurs déjà
 existants.
Passage par référence
   Principe:

 La fonction appelée manipule directement l'objet qui
 lui est passé par référence. Il n'y a pas de copie ni de
 construction d'objet temporaire lors de ce type de
 passage.
Passage par référence
        Exemple:
void incremente(int & i) {
 i++;          // Modifie le paramètre passé en référence
 }
int main() {
   int j = 12;
   incremente(j); // L'opérateur & n'est pas nécessaire pour appeler
    incremente
    cout << j << endl;       // Affiche 13
}
Conclusion
Présentation ppt

Weitere ähnliche Inhalte

Was ist angesagt?

Csharp1 : quelques elements de base
Csharp1 :  quelques elements de baseCsharp1 :  quelques elements de base
Csharp1 : quelques elements de baseAbdoulaye Dieng
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en PythonABDESSELAM ARROU
 
Eléments syntaxiques du langage java-Jihen HEDHLI
Eléments syntaxiques du langage java-Jihen HEDHLIEléments syntaxiques du langage java-Jihen HEDHLI
Eléments syntaxiques du langage java-Jihen HEDHLIJihenHedhli1
 
Introduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsIntroduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsAurélien Regat-Barrel
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA Asmaa BENGUEDDACH
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptAbdoulaye Dieng
 
Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle Marine Karam
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateursAziz Darouichi
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en pythonMariem ZAOUALI
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmiqueAbdoulaye Dieng
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptMicrosoft
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaAziz Darouichi
 
Cours algorithme: structures répétitives
Cours algorithme: structures répétitivesCours algorithme: structures répétitives
Cours algorithme: structures répétitivesInforMatica34
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 

Was ist angesagt? (20)

Csharp1 : quelques elements de base
Csharp1 :  quelques elements de baseCsharp1 :  quelques elements de base
Csharp1 : quelques elements de base
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Eléments syntaxiques du langage java-Jihen HEDHLI
Eléments syntaxiques du langage java-Jihen HEDHLIEléments syntaxiques du langage java-Jihen HEDHLI
Eléments syntaxiques du langage java-Jihen HEDHLI
 
Introduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsIntroduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomics
 
Les bases de la programmation en JAVA
Les bases de la programmation  en JAVA   Les bases de la programmation  en JAVA
Les bases de la programmation en JAVA
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle Introduction à la programmation fonctionnelle
Introduction à la programmation fonctionnelle
 
Chapitre6: Surcharge des opérateurs
Chapitre6:  Surcharge des opérateursChapitre6:  Surcharge des opérateurs
Chapitre6: Surcharge des opérateurs
 
Chap3 programmation modulaire en python
Chap3 programmation modulaire en pythonChap3 programmation modulaire en python
Chap3 programmation modulaire en python
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Ns algo 3
Ns algo 3Ns algo 3
Ns algo 3
 
Theme 6
Theme 6Theme 6
Theme 6
 
Ns algo 2
Ns algo 2Ns algo 2
Ns algo 2
 
Initiation à l'algorithmique
Initiation à l'algorithmiqueInitiation à l'algorithmique
Initiation à l'algorithmique
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
Chapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en JavaChapitre 11: Expression Lambda et Référence de méthode en Java
Chapitre 11: Expression Lambda et Référence de méthode en Java
 
Cours java script
Cours java scriptCours java script
Cours java script
 
Cours algorithme: structures répétitives
Cours algorithme: structures répétitivesCours algorithme: structures répétitives
Cours algorithme: structures répétitives
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 

Andere mochten auch

Antonella Casellato, Pavillon de l’Arsenal
Antonella Casellato, Pavillon de l’ArsenalAntonella Casellato, Pavillon de l’Arsenal
Antonella Casellato, Pavillon de l’ArsenalGares & Connexions
 
T. Jacquinod "Témoignage d'un directeur de gare"
T. Jacquinod "Témoignage d'un directeur de gare"T. Jacquinod "Témoignage d'un directeur de gare"
T. Jacquinod "Témoignage d'un directeur de gare"Gares & Connexions
 
Filippo Medolago, Institut Français d’Urbanisme (IFU)
Filippo Medolago, Institut Français d’Urbanisme (IFU)Filippo Medolago, Institut Français d’Urbanisme (IFU)
Filippo Medolago, Institut Français d’Urbanisme (IFU)Gares & Connexions
 
Renaud Charles "Une histoire de la gare du XXIème siècle"
Renaud Charles "Une histoire de la gare du XXIème siècle"Renaud Charles "Une histoire de la gare du XXIème siècle"
Renaud Charles "Une histoire de la gare du XXIème siècle"Gares & Connexions
 
F. de Jouvenel, directeur d’études à Futuribles &quot;La gare et ses métiers ...
F. de Jouvenel, directeur d’études à Futuribles &quot;La gare et ses métiers ...F. de Jouvenel, directeur d’études à Futuribles &quot;La gare et ses métiers ...
F. de Jouvenel, directeur d’études à Futuribles &quot;La gare et ses métiers ...Gares & Connexions
 
Philippe Gargov "Gare grandes lignes : l'heure des choix"
Philippe Gargov "Gare grandes lignes : l'heure des choix"Philippe Gargov "Gare grandes lignes : l'heure des choix"
Philippe Gargov "Gare grandes lignes : l'heure des choix"Gares & Connexions
 
Juliette Maulat "La gare périurbaine du XXIè siècle"
Juliette Maulat "La gare périurbaine du XXIè siècle"Juliette Maulat "La gare périurbaine du XXIè siècle"
Juliette Maulat "La gare périurbaine du XXIè siècle"Gares & Connexions
 
Etienne Riot " Villes gares, nouveau siècle"
Etienne Riot " Villes gares, nouveau siècle"Etienne Riot " Villes gares, nouveau siècle"
Etienne Riot " Villes gares, nouveau siècle"Gares & Connexions
 
Samyak Vaidyak Dr. Shriniwas Kashalikar
Samyak Vaidyak Dr. Shriniwas KashalikarSamyak Vaidyak Dr. Shriniwas Kashalikar
Samyak Vaidyak Dr. Shriniwas KashalikarSadanand Patwardhan
 

Andere mochten auch (10)

Antonella Casellato, Pavillon de l’Arsenal
Antonella Casellato, Pavillon de l’ArsenalAntonella Casellato, Pavillon de l’Arsenal
Antonella Casellato, Pavillon de l’Arsenal
 
T. Jacquinod "Témoignage d'un directeur de gare"
T. Jacquinod "Témoignage d'un directeur de gare"T. Jacquinod "Témoignage d'un directeur de gare"
T. Jacquinod "Témoignage d'un directeur de gare"
 
Filippo Medolago, Institut Français d’Urbanisme (IFU)
Filippo Medolago, Institut Français d’Urbanisme (IFU)Filippo Medolago, Institut Français d’Urbanisme (IFU)
Filippo Medolago, Institut Français d’Urbanisme (IFU)
 
Renaud Charles "Une histoire de la gare du XXIème siècle"
Renaud Charles "Une histoire de la gare du XXIème siècle"Renaud Charles "Une histoire de la gare du XXIème siècle"
Renaud Charles "Une histoire de la gare du XXIème siècle"
 
F. de Jouvenel, directeur d’études à Futuribles &quot;La gare et ses métiers ...
F. de Jouvenel, directeur d’études à Futuribles &quot;La gare et ses métiers ...F. de Jouvenel, directeur d’études à Futuribles &quot;La gare et ses métiers ...
F. de Jouvenel, directeur d’études à Futuribles &quot;La gare et ses métiers ...
 
Philippe Gargov "Gare grandes lignes : l'heure des choix"
Philippe Gargov "Gare grandes lignes : l'heure des choix"Philippe Gargov "Gare grandes lignes : l'heure des choix"
Philippe Gargov "Gare grandes lignes : l'heure des choix"
 
Juliette Maulat "La gare périurbaine du XXIè siècle"
Juliette Maulat "La gare périurbaine du XXIè siècle"Juliette Maulat "La gare périurbaine du XXIè siècle"
Juliette Maulat "La gare périurbaine du XXIè siècle"
 
Etienne Riot " Villes gares, nouveau siècle"
Etienne Riot " Villes gares, nouveau siècle"Etienne Riot " Villes gares, nouveau siècle"
Etienne Riot " Villes gares, nouveau siècle"
 
Evidence based ayurveda
Evidence based ayurvedaEvidence based ayurveda
Evidence based ayurveda
 
Samyak Vaidyak Dr. Shriniwas Kashalikar
Samyak Vaidyak Dr. Shriniwas KashalikarSamyak Vaidyak Dr. Shriniwas Kashalikar
Samyak Vaidyak Dr. Shriniwas Kashalikar
 

Ähnlich wie Présentation ppt

02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSSAyoubElmrabet6
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHPAbdoulaye Dieng
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScriptKristen Le Liboux
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Fahad Golra
 
03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdfAhmed12314
 
Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelleMICHRAFY MUSTAFA
 
Bases de php - Partie 3
Bases de php - Partie 3Bases de php - Partie 3
Bases de php - Partie 3Régis Lutter
 
Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1Laurent BUNIET
 
Formation java script
Formation java scriptFormation java script
Formation java scriptRomdhani Asma
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryneuros
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCSiratiSoufiane
 
Debuter en Python.ppt
Debuter en Python.pptDebuter en Python.ppt
Debuter en Python.pptSofienBoutaib
 

Ähnlich wie Présentation ppt (20)

POO en C++: Les fonctions
POO en C++: Les fonctionsPOO en C++: Les fonctions
POO en C++: Les fonctions
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSS
 
Php4 Mysql
Php4 MysqlPhp4 Mysql
Php4 Mysql
 
Python chapitre 4.pdf
Python chapitre 4.pdfPython chapitre 4.pdf
Python chapitre 4.pdf
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Notions de base de JavaScript
Notions de base de JavaScriptNotions de base de JavaScript
Notions de base de JavaScript
 
Seance 3- Programmation en langage C
Seance 3- Programmation en langage C Seance 3- Programmation en langage C
Seance 3- Programmation en langage C
 
03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf
 
Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelle
 
Bases de php - Partie 3
Bases de php - Partie 3Bases de php - Partie 3
Bases de php - Partie 3
 
Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1Cours de C++, en français, 2002 - Cours 2.1
Cours de C++, en français, 2002 - Cours 2.1
 
Formation java script
Formation java scriptFormation java script
Formation java script
 
Chapitre 04 : les fonctions
Chapitre 04 : les fonctionsChapitre 04 : les fonctions
Chapitre 04 : les fonctions
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
La première partie de la présentation PHP
La première partie de la présentation PHPLa première partie de la présentation PHP
La première partie de la présentation PHP
 
Cours 3 les directives
Cours 3 les directivesCours 3 les directives
Cours 3 les directives
 
Javascript ne se limite pas à jquery
Javascript ne se limite pas à jqueryJavascript ne se limite pas à jquery
Javascript ne se limite pas à jquery
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 
Tp introduction java
Tp introduction javaTp introduction java
Tp introduction java
 
Debuter en Python.ppt
Debuter en Python.pptDebuter en Python.ppt
Debuter en Python.ppt
 

Présentation ppt

  • 1.
  • 2. Plan  Introduction  Passage par valeur  Passage par adresse  Passage par référence  Conclusion
  • 4. Passage par valeur Principe  Les arguments sont copiés dans des objets temporaires qui sont crées lors du passage d'arguments et qui sont détruit à la fin de l'exécution de la fonction .  Toutes les modifications effectuées sur ces objets temporaires seront donc perdues à la fin de la fonction et n'auront aucune incidence sur l'objet passé en argument lors de l'appel de la fonction.
  • 5. Passage par valeur Exemple: void incremente(int i) /* i est la copie de la valeur passée en paramètre */ { i++; /* Modifie i, mais pas la variable fournie par l'appelant. */ } int main() { int j = 12; incremente(j); /* Le contenu de j est copié dans i. j n'est pas modifié. Il vaut toujours 12. */ cout << j << endl; // Affiche 12 }
  • 6. Passage par adresse Notion d’adresse:  Tout objet manipulé par l'ordinateur est stocké dans sa mémoire. On peut considérer que cette mémoire est constituée d'une série de « cases », cases dans lesquelles sont stockées les valeurs des variables ou les instructions du programme. Pour pouvoir accéder à un objet, c'est-à-dire au contenu de la case mémoire dans laquelle cet objet est enregistré, il faut connaître le numéro de cette case. Autrement dit, il faut connaître l'emplacement en mémoire de l'objet à manipuler. Cet emplacement est appelé l'adresse de la case mémoire.
  • 7. Passage par adresse Principe:  Les arguments sont des pointeurs qui contiennent l'adresse en mémoire des objets que l'on veut manipuler. Il n'y a donc plus de copie, plus de variable locale. Toute modification du paramètre dans la fonction appelée entraîne la modification de la variable passée en paramètre.
  • 8. Passage par adresse Exemple: void incremente(int * i) { /*incremente attend l’adresse d’un entier*/ (*i)++; } int main() { int j = 12; incremente(&j); /* On passe l'adresse de j en paramètre. */ cout << j << endl; // Affiche 13 }
  • 9.  Cependant, plusieurs problèmes se posent au niveau syntaxique pour le passage par adresse :  la syntaxe est lourde dans la fonction, à cause de l'emploi de l'opérateur * devant les paramètres ;  la syntaxe est dangereuse lors de l'appel de la fonction, puisqu'il faut systématiquement penser à utiliser l'opérateur & devant les paramètres.
  • 10. Passage par référence Notion de référence: Les références sont des synonymes d'identificateurs. Elles permettent de manipuler une variable sous un autre nom que celui sous laquelle cette dernière a été déclarée.
  • 11. Passage par référence Notion de référence: Toute référence doit se référer à un identificateur : il est donc impossible de déclarer une référence sans l'initialiser. De plus, la déclaration d'une référence ne crée pas un nouvel objet comme c'est le cas pour la déclaration d'une variable par exemple. En effet, les références se rapportent à des identificateurs déjà existants.
  • 12. Passage par référence Principe:  La fonction appelée manipule directement l'objet qui lui est passé par référence. Il n'y a pas de copie ni de construction d'objet temporaire lors de ce type de passage.
  • 13. Passage par référence Exemple: void incremente(int & i) { i++; // Modifie le paramètre passé en référence } int main() { int j = 12; incremente(j); // L'opérateur & n'est pas nécessaire pour appeler incremente cout << j << endl; // Affiche 13 }