====== C++ ======
Lien source: https://developer.mozilla.org/fr/docs/web/javascript/data_structures
====== Synthèse de début ======
*Install Visual Studio Code following this link : [[https://code.visualstudio.com/download|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 : [[https://www.msys2.org/|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
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
* Stocker une info d'utilisateur dans variable ( en console ):
* Flux sortant et entrant ( cout et cin )
* cout <<
* cin >>
* Example:
* #include
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
#include
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
#include
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 ==
=== navigator ===
== 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.
^Syntaxe^symbole^signification^
| and | && | ET |
| or | double pipe | OU |
| not | ! | NON |
== exemple de boucle if else ==
#include
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
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
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
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;
}
=== 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
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
#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
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.
=== 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++ =====
Documentation: https://openclassrooms.com/fr/courses/1894236-apprenez-a-programmer-en-c/7674626-declarez-une-variable-et-affichez-sa-valeur