From 9b2aa58e1acd3b8e8239d6d868adc18a5886f7a8 Mon Sep 17 00:00:00 2001
From: Vincent Nivoliers <vincent.nivoliers@gmail.com>
Date: Fri, 26 Jan 2018 18:19:04 +0100
Subject: [PATCH] syntaxe C++

---
 README.md | 54 +++++++++++++++++++++++++++---------------------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/README.md b/README.md
index 4e69a43..ac7a635 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@ faut ajouter, puis à rédiger le code sous les commentaires correspondants.
 plusieurs lignes, mais il n'est pas possible de 
 les imbriquer (et donc de placer des `/* ... */` dans un commentaire) :
 
-```C++
+```cpp
 /* commentaire sur une ligne */
 /* commentaire
    sur deux lignes */
@@ -32,7 +32,7 @@ les imbriquer (et donc de placer des `/* ... */` dans un commentaire) :
 Il est aussi possible en plus de rajouter de courts commentaire en utilisant `//`. 
 Une fois écrit `//`, le reste de la ligne n'est plus interprété.
 
-```C++
+```cpp
 int a ; //un commentaire de fin de ligne
 ```
 
@@ -68,7 +68,7 @@ la documentation du `C++`.
 Comme mentionné ci dessus, chaque type primitif est stocké sur un certain nombre
 d'octets en mémoire. Lorsque vous écrirez :
 
-```C++
+```cpp
 int variable = 12 ;
 ```
 
@@ -84,7 +84,7 @@ même type de donnée. Un tableau peut être alloué statiquement ou dynamiqueme
 L'allocation dynamique sera abordée plus tard. Un tableau peut être alloué
 statiquement via :
 
-```C++
+```cpp
 int tableau[4] ;
 ```
 
@@ -98,7 +98,7 @@ dynamique](#alloc_dyn_tableau)
 
 Il est possible d'accéder à un tableau en utilisant les crochets `[` et `]`.
 
-```C++
+```cpp
 int tableau[4] ;
 tableau[0] = 1 ;
 tableau[3] = 2 ;
@@ -111,7 +111,7 @@ tableau[2 = tableau[0] ;
 Les instructions principales permettant de faire varier le fil d'éxécution d'un
 programme en fonction de tests sont les suivantes :
 
-```C++
+```cpp
 if(test) {
   /* code execute en cas de test vrai */
 } else {
@@ -136,7 +136,7 @@ do {
 
 Le comportement par défaut en `C++` est la *copie*. Par exemple dans le code :
 
-```C++
+```cpp
 int a = 5 ;
 int b = a ;
 b = 12 ;
@@ -154,7 +154,7 @@ variable. Dans le code précédent, pour faire en sorte que la variable `b` soit
 une référence sur la variable `a` et partage les mêmes octets, il aurait ainsi
 fallu écrire :
 
-```C++
+```cpp
 int a = 5 ;
 int & b = a ;
 b = 12 ;
@@ -177,7 +177,7 @@ ou à la procédure. Ainsi, une fonction modifiant la valeur de ses paramètre n
 modifiera pas la valeur des variables utilisées pour fournir ces paramètres dans
 la fonction appelante. C'est cette stratégie qui est appliquée en `C++`.
 
-```C++
+```cpp
 void f(int a) {
   a = a+1 ;
 }
@@ -222,7 +222,7 @@ de sa portée, ou si vous voulez éviter la copie de données volumineuses pass
 en paramètre. Vous pouvez pour cela utiliser les références en paramètre de
 fonctions:
 
-```C++
+```cpp
 
 void f(int & ref) {
   ref = ref + 1 ;
@@ -242,14 +242,14 @@ mémoire possède une *adresse*. L'adresse d'un objet en `C++` est l'adresse du
 premier octet servant à stocker cet objet. Vous pouvez manipuler des adresses en
 utilisant le symbole `*`. Per exemple, l'instruction
 
-```C++
+```cpp
 int * a ;
 ```
 
 crée une variable qui stockera *l'adresse* d'un entier. Étant donné un objet en
 `C++`, il est possible d'obtenir son adresse via le symbole `&`. Par exemple :
 
-```C++
+```cpp
 int a = 10 ;
 int * pa = &a ;
 ```
@@ -259,7 +259,7 @@ Attention ici `a` et `pa` ne sont pas deux noms pour la même chose : la variabl
 `pa` est le nom d'une case mémoire contenant l'adresse d'une autre case mémoire
 contenant un entier.
 
-```C++
+```cpp
 int a = 10 ;
 int * pa = &a ;
 // pa = 10 ; //erreur : pb n'est pas un entier
@@ -269,7 +269,7 @@ L'opération consistant à utiliser une adresse pour accéder à la case mémoir
 correspondante s'appelle le *déréférencement*. Cette opération est réalisée en
 utilisant également le symbole `*`.
 
-```C++
+```cpp
 int a = 10 ;
 int * pa = &a ;
 int b = *pa ; //b prend la valeur 10
@@ -300,7 +300,7 @@ de sa *portée*, matérialisée par les accolades (`{`, `}`).
 Les paramètres d'une fonction sont également limités à la portée de cette
 fonction :
 
-```C++
+```cpp
 int f(int a) {
   int b = 10 ;
   int c = 0 ;
@@ -346,7 +346,7 @@ l'adresse de la zone allouée est perdue, et vous ne pourrez plus accéder à la
 zone, ou la libérer pour faire de la place en mémoire. Une allocation typique
 d'un objet sur le tas a donc la forme :
 
-```C++
+```cpp
 int * a = (int *) malloc(sizeof(int)) ;
 ```
 
@@ -362,7 +362,7 @@ des autres, il n'y a pas d'espace vide entre les données). Il est donc possible
 de réserver un tableau dans le tas en allouant simplement le nombre d'octets
 nécessaire pour *l'ensemble* des données du tableau :
 
-```C++
+```cpp
 /* allocation d'un tableau de 10 entiers */
 int * tab = (int *) malloc(10*sizeof(int)) ;
 ```
@@ -370,7 +370,7 @@ int * tab = (int *) malloc(10*sizeof(int)) ;
 Les données sont ensuite accessibles comme d'habitude en utilisant les crochets
 (`[`, `]`) :
 
-```C++
+```cpp
 for(int i = 0; i < 10; ++i) {
   tab[i] = 2*i ;
 }
@@ -387,7 +387,7 @@ nombre d'octets à libérer. Quelque part, en sous main, le nombre d'octets
 correspondants à l'adresse a été enregistré. Vous pouvez ainsi libérer la
 mémoire allouée par les deux instructions précédentes via :
 
-```C++
+```cpp
 free(a) ;
 free(tab) ;
 ```
@@ -405,7 +405,7 @@ produit une adresse qu'il faut récupérer. À la différence de `malloc` cette
 adresse est correctement typée par rapport au type de l'objet alloué.
 
 <a name="alloc_dyn_tableau"></a>
-```C++
+```cpp
 int * a = new int ;
 int * tab = new int[10] ;
 ```
@@ -414,7 +414,7 @@ new suffit. Comme précédemment, chaque utilisation de `new` doit être un
 jour compensée par l'utilisation de `delete`. La suppression des variables
 précédentes se fait via :
 
-```C++
+```cpp
 delete a ;
 delete[] tab ;
 ```
@@ -432,7 +432,7 @@ méthodes pour manipuler votre nouveau type de données.
 
 Les classes et structures se déclarent via
 
-```C++
+```cpp
 class nom_classe {
   /* ... */
 } ;
@@ -445,7 +445,7 @@ struct nom_structure {
 Dans la définition d'une classe ou d'une structure, les mots clé `public` et
 `private` permettent de définir ce qui sera accessible ou non pour votre classe
 
-```C++
+```cpp
 class nom_classe {
 
   /* ... */ //ici tout est inaccessible
@@ -479,7 +479,7 @@ dans une classe tout est privé, alors que dans une structure tout est public.
 
 Un exemple de déclaration de structure pourrait être :
 
-```C++
+```cpp
 class Fusee {
 
   public :
@@ -515,7 +515,7 @@ class Fusee {
 
 Le code des méthodes de cette structure devra ensuite être fourni via
 
-```C++
+```cpp
 
 Fusee::Fusee() {
   /* ... */
@@ -551,7 +551,7 @@ structure, et vous pourrez l'obtenir via `sizeof(Fusee)`.  Il est ensuite
 possible de déclarer un objet de type structure et d'accéder à ses champs via la
 syntaxe :
 
-```C++
+```cpp
 /* allocation sur la pile */
 Fusee f ;
 /* le . permet d'acceder aux champs et methodes de la structure */
@@ -572,7 +572,7 @@ Une classe peut être définie récursivement, tant qu'elle ne contient que des
 *adresses* ou des *références* sur des structures similaires. Sinon, il serait bien impossible
 de déterminer le `sizeof` de la structure pour cause de récursion
 
-```C++
+```cpp
 class Personne {
   int num_secu ;
   Personne * parent1 ;
-- 
GitLab