Outils pour utilisateurs

Outils du site


code_language:c

Ceci est une ancienne révision du document !


C++

Synthèse de début

  • Install Visual Studio Code following this link : Visual Studio Code
  • Install the C/C++ extension for VS code, to see the Extension view in visual studio press (Ctrl+Shift+X)
  • Installing the compilator ( here MinGW-w64 toolchain = following this link : MSYS2

Variable

Type variable Type in code Contenance
Booléan bool true or false
charactère char un caractère
Entier int un nombre entier
unsigned int unsigned int entier positif ou nul
double double nombre a virgule
chaine caractère string une chaine de caractère
  • Pour déclarer une variable:
  • TYPE NOM(VALEUR);
    •  int ageUtilisateur(16); 
  • Pour déclarer une variable non modifiable:
    • TYPE const NOM(VALEUR);
    •  int const nombreNiveaux(10); 
  • Afficher une variable ( en console )
    • int main()
      {
          int ageUtilisateur(16);
          cout << "Votre age est : ";
          cout << ageUtilisateur;
          return 0;
      }
  • Utilisez les reference:
    • Une reference est un alias qui pointera sur la variable utilisable a tout autre endroit du code.
    • int main()
      {
          int ageUtilisateur(16);  //Déclaration d'une variable.
       
      int& maVariable(ageUtilisateur); //Déclaration d'une référence nommée maVariable qui est accrochée à la variable ageUtilisateur
      }
    • La reference doit imperativement être du meme type que la variable à laquelle elle est accrochee.
    • int main()
      {
          #include <iostream>
      using namespace std;
       
      int main()
      {
          int ageUtilisateur(18); //Une variable pour contenir l'âge de l'utilisateur
       
          int& maReference(ageUtilisateur); //Et une référence sur la variable 'ageUtilisateur'
       
          //On peut utiliser à partir d'ici
          //'ageUtilisateur' ou 'maReference' indistinctement
          //Puisque ce sont deux étiquettes de la même case en mémoire
       
          cout << "Vous avez " << ageUtilisateur << "  ans. (via variable)" << endl;
          //On affiche, de la manière habituelle
       
          cout << "Vous avez " << maReference << " ans. (via reference)" << endl;
          //Et on affiche en utilisant la référence
       
          return 0;
      }
      }
    • Une fois qu'elle a été declarée, on peut manipuler la reference comme si on manipulait la variable elle-meme. Il n'y aucune difference entre les deux.
Include Bibliotheque
  • Pour pouvoir utiliser et executé des fonctions predefinie dans le C++ on doit forcement inclure les bibliotheque contenant la dite fonction.
  •  #include <iostream> 
  • Stocker une info d'utilisateur dans variable ( en console ):
    • Flux sortant et entrant ( cout et cin )
      • cout «
      • cin »
    • Example:
      •  #include <iostream>
        using namespace std;
         
        int main()
        {
            cout << "Quel age avez-vous ?" << endl;
         
            int ageUtilisateur(0); //On prépare une case mémoire pour stocker un entier
         
            cin >> ageUtilisateur; //On fait entrer un nombre dans cette case
         
            cout << "Vous avez " << ageUtilisateur << " ans !" <<  endl; //Et on l'affiche
         
            return 0; 
    • L'utilisation de la fonction
       getline() 
    • La fonction getline() permet de récuper toute une ligne qu'un utilisateur a saisie.
    •  #include <iostream>
      #include <string>
      using namespace std;
       
      int main()
      {
          cout << "Quel est votre nom ?" << endl;
          string nomUtilisateur("Sans nom"); //On crée une case mémoire pour contenir une chaine de caractères
          getline(cin, nomUtilisateur); //On remplit cette case avec toute la ligne que l'utilisateur a écrit
       
          cout << "Combien vaut pi ?" << endl;
          double piUtilisateur(-1.); //On crée une case mémoire pour stocker un nombre réel
          cin >> piUtilisateur; //Et on remplit cette case avec ce qu'écrit l'utilisateur
       
          cout << "Vous vous appelez " << nomUtilisateur << " et vous pensez que pi vaut " << piUtilisateur << "." << endl;
       
          return 0;
      } 
  • Attention si on utilise un cin » (chevrons) avant un getline(), il faut mettre entre les deux un cin.ignore(); Sinon le getline() ne fonctionne pas.
  •  #include <iostream>
    #include <string>
    using namespace std;
     
    int main()
    {
        cout << "Combien vaut pi ?" << endl;
        double piUtilisateur(-1.); //On crée une case mémoire pour stocker unnombre réel
        cin >> piUtilisateur; //Et on remplit cette case avec ce qu'écritl'utilisateur
     
        cin.ignore();
     
        cout << "Quel est votre nom ?" << endl;
        string nomUtilisateur("Sans nom"); //On crée une case mémoire pour contenir une chaine de caractères
        getline(cin, nomUtilisateur); //On remplit cette case avec toute la ligne que l'utilisateur a écrit
     
        cout << "Vous vous appelez " << nomUtilisateur << " et vous pensez que pi vaut " << piUtilisateur << "." << endl;
     
        return 0;
    } 
  • MODIFICATION DE VALEUR DE VARIABLE:
    • nom_variable = valeur_variable;
    •  int unNombre(0); //Je crée une case mémoire nommée 'unNombre' et qui contient le nombre 0
       
      unNombre = 5; //Je mets 5 dans la case mémoire 'unNombre' 

* OPERATION DE VALEUR DE VARIABLE:

Operation Symbole Exemple
Additon +
 resultat = a + b; 
Soustraction -
 resultat = a - b; 
Multiplication *
 resultat = a * b; 
Division /
 resultat = a / b; 
Modulo %
 resultat = a % b; 
incrément ++Variable;
 int nombreJoueur(4); //Il y a 4 joueurs dans la partie
++nombreJoueur;
//À partir d'ici, il y a 5 joueurs 
decrément –Variable;
 int nombreJoueur(4); //Il y a 4 joueurs dans la partie
--nombreJoueur;
//À partir d'ici, il y a 3 joueurs 

* Les Racourcie d'operation sur une variable elle meme:

  • nomVariable += valeur;
  • nomVariable -= valeur;
  • nomVariable *= valeur;
  • nomVariable /= valeur;
  • nomVariable %= valeur;
Déclaration, type et fonction

window

Propriété
Méthodes

document

Propriétés
Propriétés
Méthodes

Array

Propriétés
Methodes

Lecture de la propriété length

Date

Méthode

Error

Function

Propriétés

Image

Propriétés
Méthode

Math

Propriétés
Méthode
Nom de la fonction Symbole Fonction Mini-Exemple
Racine carree sqrtx
 sqrt() 
 resultat = sqrt(valeur); 
Sinus sin(x)
 sin() 
 resultat = sin(valeur); 
Cosinus cos(x)
 cos() 
 resultat = cos(valeur); 
Tangente tan(x)
 tan() 
 resultat = tan(valeur); 
Exponentielle ex
 exp() 
 resultat = exp(valeur); 
Logarithme neperien lnx
 log() 
 resultat = log(valeur); 
Logarithme en base 10 log10x
 log10() 
 resultat = log10(valeur); 
Valeur absolue
 fabs() 
 resultat = fabs(valeur); 
Arrondi vers le bas floor()
 floor() 
 resultat = floor(valeur); 
Arrondi vers le haut ceil()
 ceil() 
 resultat = ceil(valeur); 
Puissance pow(a,b)
 pow() 
 resultat = pow(valeur1, valeur2); 

Number

Propriétés

Opérateurs arithmétiques

Addition et soustraction

Structure de contrôle

if

les operateurs logique
Symbole signification
== Est égal à
> Est superieur a
< Est inferieur a
>= Est superieur ou égale a
Est inferieur ou égal a
!= Est different de

Combinaisons: and , or , not.

Syntaxesymbolesignification
and && ET
or double pipe OU
not ! NON
exemple de boucle if else
 #include <iostream>
 
using namespace std;
 
int main()
{
    int nbAnimaux(0);
 
    if (nbAnimaux > 0)
    {
        cout << "Super ! Les animaux de compagnie ca change la vie !" << endl;
    }
    else
    {
        cout << "Vous n'avez pas d'animaux de compagnie" << endl;
    }
 
    cout << "Fin du programme" << endl;
    return 0;
} 
exemple de boucle if elseif
 #include <iostream>
 
using namespace std;
 
int main()
{
    int nbAnimaux(2);
 
    if (nbAnimaux == 0)
    {
        cout << "Vous n'avez pas d'animaux de compagnie" << endl;
    }
    else if (nbAnimaux == 1)
    {
        cout << "C'est super d'avoir un fidele compagnon !" << endl;
    }
    else if (nbAnimaux == 2)
    {
        cout << "Ca doit en faire du monde a la maison !" << endl;
    }
    else
    {
        cout << "Votre budget croquettes doit etre important" << endl;
    }
 
    cout << "Fin du programme" << endl;
    return 0;
}

switch

exemple de code avec switch

 #include <iostream>
 
using namespace std;
 
int main()
{
    int nbAnimaux(2);
 
    switch (nbAnimaux)
    {
        case 0:
            cout << "Vous n'avez pas d'animaux de compagnie" << endl;
            break;
 
        case 1:
            cout << "C'est super d'avoir un fidele compagnon !" << endl;
            break;
 
        case 2:
            cout << "Ca doit en faire du monde a la maison !" << endl;
            break;
 
        default:
            cout << "Votre budget croquettes doit etre important" << endl;
            break;
    }
 
    return 0;
} 
  • Attention switch ne fonctionne pas sur des double.

break

default

for

Exemple de boucle for:

 int main()
{
    int compteur(0);
 
    for (compteur = 0 ; compteur < 10 ; compteur++)
    {
        cout << compteur << endl;
    }
 
    return 0;
} 

do

Exemple de boucle do …while

 do
{
    /* Instructions */
} while (condition); 

return

while

Exemple de boucle while:

 while (condition)
{
    /* Instructions à répéter */
} 

continue

Gestion des erreurs

throw

try ... catch ... finally

Opérateur

in

new

instanceof

typeof

delete

Valeurs spéciales

this

true

false

null

undefined

Fonctions

Declaration

  • Fonction avec paramètre:
    •  int addition(int a, int b)
      {
          return a+b;
      }
       
      double multiplication(double a, double b, double c)
      {
          return a*b*c;
      } 
  • Fonction avec paramètre dont certain ont une valeur par défaut c'est a dire ne sont pas obligatoire:
    •  #include <iostream>
       
      using namespace std;
       
      // Prototype avec les valeurs par défaut
      int nombreDeSecondes(int heures, int minutes = 0, int secondes = 0);
       
      // Main
      int main()
      {
          cout << nombreDeSecondes(1, 10, 25) << endl;
       
          return 0;
      }
       
      // Définition de la fonction, SANS les valeurs par défaut
      int nombreDeSecondes(int heures, int minutes, int secondes)
      {
          int total = 0;
       
          total = heures * 60 * 60;
          total += minutes * 60;
          total += secondes;
       
          return total;
      } 
  • Ici on voit que l'on met les valeur par défaut uniquement dans la déclaration de la fonction dans le fichier .hpp. Attention si on fait appelle une fonction avec 3 paramètre, on ne peut pas renseigner le premier et le dernier ( INTERDIT), si on veut renseigné le dernier paramètre sans celui du milieu on est obligé de déclarer le paramètre du milieu avec notamment une valeur par défaut.
  • Fonction sans paramètre:
    •  string demanderNom()
      {    
           cout << "Entrez votre nom : ";
           string nom;
           cin >> nom;
           return nom;
      } 
  • Fonction qui ne renvoie rien:
    •  void direBonjour()
      {
          cout << "Bonjour !" << endl;
          //Comme rien ne ressort, il n'y a pas de return !
      }
       
      int main()
      {
          direBonjour();
          //Comme la fonction ne renvoie rien
          //On l'appelle sans mettre la valeur de retour dans une variable
       
          return 0;
      } 

Utilisez Plusieurs fichiers

Fichier source et fichier d'en-tête

  • Un fichier source dont l'extension est .cpp contient le code source de la fonction.
    • Le fichier math.cpp doit contenir un include “math.hpp” pour que les deux fichier soit lié:
      •  #include "math.hpp"
         
        int ajouteDeux(int nombreRecu)
        {
            int valeur(nombreRecu + 2);
         
            return valeur;
        } 
  • Un fichier d'en-tête dont l'extension est .hpp contient uniquement la description de la fonction, ce qu'on appelle le prototype de la fonction.
    • Le fichier doit contenir ses trois lignes pour empêcher d'inclure plusieurs fois le même .cpp
      • #ifndef MATH_HPP_INCLUDED
        #define MATH_HPP_INCLUDED
         
        #endif // MATH_HPP_INCLUDED
  • voici un exemple de déclaration de fonciton:
    • #ifndef MATH_HPP_INCLUDED
      #define MATH_HPP_INCLUDED
       
      int ajouteDeux(int nombreRecu);
       
      #endif // MATH_HPP_INCLUDED 
  • Si le paramètre de notre fonction est de type string il faut ajouté en include les string et faire précedé le type par son nom de domaine, ici std:
    • #ifndef MATH_HPP_INCLUDED
      #define MATH_HPP_INCLUDED
       
      #include <string>
       
      void afficherMessage(std::string message);
       
      #endif // MATH_HPP_INCLUDED 
  • L'autre élément important est l'ajout de std:: devant le mot string . Il s'agit de la marque d'un espace de nom.
  • std apparaît dans tous nos fichiers source via la ligne using namespace std . Comme il n'y a pas de telle ligne ici (et qu'il est très vivement déconseillé de la mettre dans un fichier d'en-tête), il nous faut utiliser le nom complet du type string , qui est std::string
  • Inclure tout cela dans la fichier main.cpp
    •  #include <iostream>
      #include "math.hpp"
      using namespace std;
       
      int main()
      {
          int a(2),b(2);
          cout << "Valeur de a : " << a << endl;
          cout << "Valeur de b : " << b << endl;
          b = ajouteDeux(a);                     //Appel de la fonction
          cout << "Valeur de a : " << a << endl;
          cout << "Valeur de b : " << b << endl;
       
          return 0;
      } 
  • Dans le fichier .hpp il est recommander de mettre en commantaire ce que fait la fonction, la liste des arguments, les caracteristique de la valeur retournée.

Programmation avancée

Argument de fonction passé par Valeur

  • Lorsqu'on passe dans le paramètre d'une fonction une variable classique contenant une valeur:
    •  #include <iostream>
      using namespace std;
       
      int ajouteDeux(int a)
      {
          a+=2;
          return a;
      }
       
      int main()
      {
          int nombre(4), resultat;
          resultat = ajouteDeux(nombre);
       
          cout << "Le nombre original vaut : " << nombre << endl;
          cout << "Le resultat vaut : " << resultat << endl;
          return 0;
      } 
  • Dans ce cas la la variable nombre est copiée ans une nouvelle case mémoire et sa valeur n'est pas changé.

Argument de fonction passé par Reference

  • Lorsqu'on passe dans le paramètre d'une fonction une reference à une variable classique contenant une valeur:
    •  int ajouteDeux(int& a) //Notez le petit & !!!
      {
          a+=2;
          return a;
      } 
  • Dans ce cas la , la variable nombre a une reference “a” qui point vers elle, ainsi nombre et a sont confondue, de cette façon la fonction modifie directement la variable nombre.

Argument de fonction passé par Reference constante

  • Lorsqu'on passe dans le paramètre d'une fonction une reference à une variable classique contenant une valeur mais qu'on ne souhaite pas que la fonction puisse modifier la valeur de la variable classique. Cela est nécessaire lorsqu'on ne veut pas copie en paramètre une valeur a gros volume pour faire fonctionner la fonction (passage par valeur proscris pour cause de dégradation de performance):
    •  void f1(string const& texte) //Pas de copie et pas de modification possible
      {
      }
  • Dans ce cas la , la variable passé en paramètre n'est pas copié, on y fait reference mais la variable n'est pas modifiable.

Tableaux statiques

Declarer un tableau statique d'un type

#include <iostream>
using namespace std;
 
int main()
{
   int meilleurScore[5];       //Déclare un tableau de 5 int 
 
   double anglesTriangle[3];   //Déclare un tableau de 3 double
 
   return 0;
}

Tableaux dynamiques

Lire et modifier des fichiers

Declaration de pointeurs

Paradigme de programmation classe/objet

Premier exemple:

Deuxième exemple:

Troisième exemple:

Quatrième exemple avec Imbrications:

Création d'une classe:

Methode de classe

Frameworks

Visual Studio Code

Code::block

Développement POO avec C++

code_language/c.1761942019.txt.gz · Dernière modification: 2025/10/31 20:20 de 74.7.227.242