Cours de C++ -- 1. Introduction au C++
Voici une courte introduction au langage C++. On traitera de la définition et de l’initialisation de variables et de la compilation de programmes C++ au sein d’environnement de type Unix/Linux. Bonne lecture.
Historique
Le C++ est une extension du langage C crée par Brian Kernighan et Dennis Ritchie à la programmation objet. C’est Bjarne Stroustrup en 1982 qui introduit le C++. Les apports principaux de ses travaux ont été d’augmenter les capacités du langage C, sa sécurité et la programmation par objet. Un objet est une structure de données qui possède un état et un comportement:
- les données relatives à sa situation ou à son état sont des champs appelés attributs
- son comportement est caractérisé par des méthodes.
Il faut savoir que c’est un langage très difficile à maîtriser malgré sa facilité apparente !!! Quels sont les avantages d’un tel langage:
- un langage très utilisé
- structuration du code
- encapsulation des données
- modularité accrue
- programmation générique
Les inconvénient du C++ sont peu nombreux mais existent tout de même
- lisibilité des programmes de bas niveaux
- pas de garbage collector en C++ autrement dit, il n’y a pas de recyclage de la mémoire préalablement allouée puis inutilisée.
- l’exécutable produit est plus lourd.
Les fichiers de bases en C++ ont généralement pour extension .cc ou .cpp alors que les bibliothèques de programmes se terminent par .h .
Nous allons voir à présent un premier exemple de code C++ .
Premier code en C++
Voici un programme de base en C++, nommez le {file.cpp} par exemple
Ce programme de base débute par une instruction pré-processing à savoir une directive d’inclusion, en l’occurrence ici on introduit la bibliothèque d’entrée-sortie iostream du C++ c’est à dire l’ensemble des fonctions permettant d’inter-agir avec la machine. Du point de vue programmation, la directive d’inclusion indique au préprocesseur de remplacer la ligne courante par l’ensemble des lignes du fichier nommé en paramètre.
La seconde ligne du programme indique que l’on utilise l’espace standard à savoir std, nous verrons plus tard que signifie cette directive.
main() indique que l’on débute un programme; le main est le programme principal en C++. Il s’agit d’une suite d’instructions délimités par les accolades <html>{}</html> l’ensemble accolades+instructions à l’intérieur des accolades est appelé bloc d’instructions. Un main est donc constitué d’un bloc d’instructions.
Regardons à présent l’instruction
cout « est l’opérateur de flux de sortie. C’est quoi ? Il s’agit d’une commande appartenant à la bibliothèque iostream, elle permet de renvoyer en sortie (à l’écran) un message, le message est ici une chaine de caractères délimitée par des guillemets “ “. à€ noter que cette instruction se termine par un ; Il faut savoir que toutes les instructions en C++ se terminent par un ; excepté les structures de contrôle que nous verrons par la suite.
Compilation d’un programme C++
Nous avons certes écrit un programme C++, mais comment l’exécuter ? Nous nous limiterons ici que dans le cadre des systèmes de type Unix/Linux. Pour les utilisateurs de Windows, je ferai une introduction à Visual Studio C++. Alors pourquoi un site dédié à Linux présenterait il un logiciel Microsoft ? Pour la simple et bonne raison que Visual Studio C++ est incontournable dans le monde de l’entreprise. Un bon programmeur doit s’adapter à différents environnements et c’est dans cette démarche que je m’inscris …
Pour compiler un programme C++, on utilise la commande suivante
où {file.cpp} est votre fichier source, c’est à dire le fichier contenant votre programme. Si tout se passe bien (pas d’erreur de programmation) un exécutable est produit: il s’agit par défaut du fichier a.out . Pour l’exécuter on utilise la commande
On peut évidemment donner un nom à l’exécutable produit, on procède alors comme suit:
Pour l’exécuter, on procède comme précédemment
La commande générale de compilation est donc:
g++ nom_du_fichier_source -o nom_executable
Remarque. Parfois les débutants confondent erreur de compilation et avertissements … Un warning ou un avertissement n’est pas une erreur de compilation, vous pouvez donc exécuter votre programme. Un conseil: analysez toujours les messages qui vous sont renvoyés par le compilateur. Si vous voulez ne plus voir les warnings (avertissements), utilisez l’option -w
Définition de variables
Pour définir une variable, on doit définir son type et lui donner un nom ou un identificateur. L’idenficateur est une chaîne de caractères, faites attention le C++ respecte la casse, c’est à dire que toto est différent de Toto, le C++ fait dont la distinction entre les minuscules et les majuscules. Pour déclarer une variable en C++, on procède comme suit
Regardons à présent les types existants en C++. Rappelons au préalable que les données informatiques occupent un espace mémoire dont l’unité est l’octet, c’est à dire 8 bits. 1 bit représente une unité élémentaire d’information, un bit est l’information de base d’un ordinateur, il correspond à 0 ou 1 soit un circuit fermé ou un circuit ouvert, un ordinateur traite les informations au niveau du bit qui sert ainsi d’unité.
Les types entiers: int, short, long, unsigned
Il existe plusieurs types d’entier en C++, comme le montre le tableau suivant
Type | Définition | Taille en octets | Plage de valeurs |
---|---|---|---|
int | Entier | 2 pour les processeurs 16-bits | -32 768 à 32 767 |
int | Entier | 4 pour les processeurs 32-bits | -2 147 483 648 à 2 147 483 647 |
short int | Entier court | 2 | -32 768 à 32 767 |
unsigned short int | Entier court non signé | 2 | 0 à 65 535 |
unsigned int | Entier non signé | 2 pour les processeurs 16-bits | 0 à 65 535 |
unsigned int | Entier non signé | 4 pour les processeurs 32-bits | 0 à 4 294 967 295 |
long int | Entier long | 4 | -2 147 483 648 à 2 147 483 647 |
unsigned long int | Entier long non signé | 4 | 0 à 4 294 967 295 |
Les types non signés (unsigned) ne possèdent pas de nombre négatif.
Les types réels et décimaux: float, double et long double
De la même manière, on définit les types réels comme suit:
Type | Définition | Taille en octets | Plage de valeurs |
---|---|---|---|
float | Flottant | 4 | -3.410^-38 à 3.410^38 |
double | Flottant double | 8 | -1.710^-308 à 1.710^308 |
long double | Flottant double long | 10 | -3.410^-4932 à 3.410^4932 |
Voici un programme vous permettant suivant votre machine de voir la mémoire alloué aux divers types C++:
La commande sizeof renvoie un entier représentant la taille du type pris en argument.
Le type booléen: bool
Une des particularités du C++ par rapport au C est d’offrir un type booléen. Le type bool ne peut prendre que deux valeurs
- true ou 1
- false ou 0 Néanmoins, le type bool est défini sur un octet (8 bits) or la valeur 0 ou 1 n’occupe que 1 bit, il reste donc 7 octets de libre … Une des conséquences, de cette liberté d’espace est finalement que toute donnée différente de 0 et comportant au plus 8 bits sera considérée comme vraie (true). Le tableau suivant nous donne les opérateurs de comparaison permettant de définir des booléens.
Opérateur | Signification | Exemple | Résultat |
---|---|---|---|
== | égal à | 2==3 | 0 |
!= | différent de | 2!=3 | 1 |
< | strictement inférieur à | 2<3 | 1 |
> | strictement supérieur à | 2>3 | 0 |
<= | inférieur ou égal à | 2<=2 | 1 |
>= | supérieur ou égal à | 2>=0 | 1 |
Le programme suivant
a pour résultat
Le type caractère: char
Un caractère est codé sur 1 octet soit sur 8 bits. Un caractère est un entier particulier situé entre 0 et 255, à la différence près qu’il sert de représentation pour les textes. Autrement dit, la lettre A est représentée en machine par l’entier 65. Voici un exemple:
On a défini les variables letter_1 et letter_2 respectivement par le caractère A et par sa représentation entière; on vérifie ensuite à l’aide d’un booléen si ces deux caractères sont égaux. Le résultat est le suivant:
Il existe comme dans d’autres langages des caractères spéciaux:
Caractère | Action |
---|---|
\n | Passage à la ligne - new line |
endl | Passage à la ligne - new line |
\t | Tabulation |
\b | Retrait - backspace |
\” | Guillemets - double quote |
\’ | Apostrophe - single quote |
\? | Point d’interrogation - question mark |
\\\\ | Backslash |
Tout ces caractères spéciaux sont à mettre entre parenthèses excepté endl.
Par exemple, les commandes
et
entraîneront un passage à la ligne.
Initialisation de variables en C++: = et ()
Après avoir défini des variables, nous allons voir à présent comment les initialiser. Pour assigner une valeur à une variable, on utilise l’opérateur =
On peur créer une variable et l’assigner en même temps:
On peut initialiser et définir plusieurs variables en même temps:
On crée ici trois variables de type int et deux d’entre elles ont été assignées en l’occurrence day et year.
On peut également initialiser une variable en utilisant l’opérateur parenthèse () comme suit:
Créer des alias de type en C++: typedef
Il peut s’avérer parfois pénible de réécrire à chaque création de variable un type tel que unsigned long int. Le C++ permet de contourner ce problème en créant un alias ou un synonyme si vous préférez. Pour créer un alias on utilise le mot clé typedef comme suit
Voici un exemple:
La déclaration d’un alias (typedef) doit se faire avant la déclaration du main (programme principal) ou juste après les directives d’inclusion si vous préférez ! Voici un exemple:
Définition de constantes: const
Pour définir une constante, on utilise le mot clé const suivi de son type, de son identificateur et d’une initialisation. Comme son nom l’indique, une constante n’est pas variable, une fois définie on ne peut plus la modifier.
la commande
entraînera une erreur lors de la compilation de type
Définition de constantes: #define
Une autre manière obsolète de définir une constante est d’utiliser l’instruction pré-processing
#define
On l’utilise avant le main comme suit:
On ne définit pas de type ici, cette instruction signifie que k sera constamment remplacé par le caractère 7 dans le programme, autrement dit
affichera 8. On parle alors de constantes symboliques.
Un type énuméré constant: enum
On peut créer en C++ une énumération constante, en natif les éléments d’une énumération sont des entiers. Pour définir une énumération, on procède comme suit:
Ici COLOR est un type énuméré. Les constantes RED, GREEN, et BLUE sont des constantes symboliques dont les valeurs sont respectivement 0,1 et 2.
Si l’on veut définir des constantes différentes, on procède comme suit:
Si une constante n’a pas été assignéé, alors celle ci est égale à celle qui la précède auquelle on ajoute 1. Ainsi
dans cet exemple WHITE vaut 235.
Conclusion
Ce qu’il faut retenir
- le langage C++ est un langage de programmation objets (POO), nous verrons par la suite comment définir de tels objets
- le C++ est un langage typé: attentions aux types que vous utilisez (sont ils les bons ? Notamment en terme de limites …)
- un programme de base débute par des directives d’inclusion
- on peut définir des alias à l’aide de typedef
- = et () permettent d’affecter une valeur à une variable
- une instruction se termine par ;
- il existe des constantes numériques et symboliques en C++
- la compilation sous Linux se fait à l’aide de g++
- a chaque code source compilé est associé un exécutable qui par défaut est {a.out}
Nous verrons très prochainement les opérateurs et structures de contrôle du C++.
Si vous avez trouvé cet article ou ce site utile et souhaitez soutenir notre travail, veuillez envisager de faire un don. Merci !
Aidez-nousArticles dans la même rubrique
- Cours de C++ -- 2. Opérateurs en C++
- Cours de C++ -- 1. Introduction au C++
- C++
- apahe/
- apahe/php/
- /faq-c/
- /faq-c/c-extra/
-
/faq-c/faq-c-gcc-g/
- Undefined Symbol ___gxx_personality_v0
- gcc /g++ Why some variables are not detected as not used during compilation?
- gcc / g++ preprocessor flags for the compiler version number
- gcc / g++ how to dump all preprocessor definitions
- gcc / g++ find where a header file is included from
- g++ compilation option -Weffc++
- Disable all gcc / g++ warnings
- Code that compiles with gcc but not g++
- Build in release mode with full optimizations in gcc / g++
- C++ - Faq C++ GCC G++
- /faq-c/faq-c-stl/
-
linux/ommande-du-jour/
- Trouver les processus consommant le plus de cpu/mémoire à l'aide de la commande ps
- Trouver/déterminer les options avec lesquelles python a été compilé
- Trouver/déterminer la version de numpy de numpy que j'utilise
- Télécharger de la musique et des vidéos .mp3, .wma, .avi, .mpg , divx avec google
- Taille du disque et de répertoire: df du
- SVN -- Comment ignorer des fichiers ou des répertoires avec subversion?
- Rechercher un fichier: locate, find et which
- Quelle est la version de mon noyau Linux : uname
- Programmation des actions(tâches) régulières: crontab
- phpMyAdmin: rechercher et remplacer dans une base MySQL
- Ouverture et fermeture de session: login, logout et password
- Nombre de lignes, de mots d'un fichier: wc
- Linux Comment supprimer une imprimante en ligne de commande
- Linux comment se connecter à Windows via remote desktop RDP en CentOS 7 / RedHat 7
- Lancer une commande un jour donné, à une heure donnée: at
- How to shut down or reboot: shutdown command
- Historique des commandes: history
- Faire un diff sur des fichiers distants en utilisant ssh
- Effacer l'écran et enlever certains caractères bizarres: clear reset
- Comment synchroniser les données mémoire sur le disque: sync
- Comment générer des certificats auto-signés OpenSSL sous Linux CentOs/RedHat pour Apache/httpd
- Comment faire un déni de service en BASH à l'aide de fork ?
- Comment éteindre ou redémarrer son pc: shutdown
- Comment définir un timeout lors d'une tentative de connexion SSH ?
- Comment chiffrer/déchiffrer un fichier ou un répertoire sous Linux?
- Chronométrer une tâche: time
- Archivage et compression de données: tar
- Affichage du calendrier en ligne de commande: cal
- Accélérer le processus de compilation et de build avec GNU make
- Accéder à une page de manuel: man
- Linux - Commande du jour
- linux/logiiels/
- matematia-pt/
- matematia-pt/derivada-de-funcao/
- matematia/derivada-de-funcao/
- matematia-pt/limites-de-funções-matemáticas/
- matematia-pt/métodos-de-integração-numérica/
- matematia-pt/resolução-de-sistemas-lineares/
- matematia-pt/trigonometria/
- matematia/
- matematia/derivata-di-funzioni/
- matematia/limiti-di-funzioni/
- matematia/trigonometria/
- matematias/
- matematias/derivada-de-funciones/
- matematias/limites/
- matematias/trigonometria/
- mathematis-arabic/derivative-of-a-function-arabic/
- mathematis-arabic/limits-arabic/
- mathematis-arabic/linear-systems-arabic/
- mathematis-arabic/numerical-integration-arabic/
- mathematis-arabic/trigonometry-arabic/
- mathematis/
-
mathematis/derivative-of-a-function/
- Derivative of x power n
- Derivative of u/v
- Derivative of u*v , u times v
- Derivative of tan x
- Derivative of square root of x
- Derivative of sin x
- Derivative of ln x
- Derivative of ln u
- Derivative of inverse functions
- Derivative of exp x, e^x
- Derivative of exp(u) , exp(u(x))
- Derivative of cos x
- Derivative of argsinh(x)
- Derivative of arctan x
- Derivative of arcsin x
- Derivative of arccos x
- Derivative of 1/x
- Derviative of 1/u
- Chain rule proof - derivative of a composite function
- Mathematics - Derivative of a function
- mathematis/derivative-of-function/
- mathematis/group-theory/
- mathematis/group-theory/exercises/
- mathematis/interpolation/
- mathematis/limits/
- mathematis/linear-systems/
- mathematis/numerical-integration/
- mathematis/numerical-solution-of-nonlinear-equations/
- mathematis/taylor-series-expansion/
-
mathematis/trigonometry/
- Trigonometry addition formula sinh(x + y) = sinh x cosh y +cosh x sinh y
- Trigonometry addition formula sinh(x - y) = sinh x cosh y - cosh x sinh y 8080624
- Trigonometry addition formula sin(a-b)=sin a cos b - sin b cos a
- Trigonometry addition formula sin(a+b)=sin a cos b + cos a sin b
- Trigonometry addition formula cosh(x + y) = cosh x cosh y +sinh x sinh y
- Trigonometry addition formula cosh(x - y) = cosh x cosh y - sinh x sinh y 8080622
- Trigonometry addition formula cos(a+b)=cos a cos b - sin a sin b
- Trigonometry addition formula cos(a-b)=cos a cos b + sin a sin b 8080598
- Trigonometric formula sin(2x)=2 sin x cos x
- Tangent is an odd function tan(-x)=-tan x
- Sine is an odd function sin(-x)=-sin x
- Demonstration / proof of cos²x + sin²x=1
- Cosine is even function cos(-x)=cos x
- Mathematics - Trigonometry
- mathematik/grenzwerte-mathematisher-funktionen/
- mathematik/numerishe-integrationsmethoden/
-
mathematiques/derivee-de-fontion/
- Dérivée de x puissance n
- Dérivée de u/v
- Dérivée de u*v, u fois v
- Dérivée de tan x
- Dérivée de sin x
- Dérivée de racine de x
- Dérivée de ln x
- Dérivée de ln u
- Dérivée de fonction réciproque
- Dérivée de fonction composée
- Dérivée de exp x, e^x
- Dérivée de exp(u)
- Dérivée de cos x
- Dérivée de cos(u)
- Dérivée de argsinh x
- Dérivée de arctan x
- Dérivée de arcsin x
- Dérivée de arccos x
- Dérivée de a^x, a puissance x
- Dérivée de 1/x
- Dérivée de 1/u
- Mathématiques - Dérivée de fonction