s
19 708 Pages

C ++
auteur Bjarne Stroustrup
Date d'origine 1983
dernière version ++ 98 C, 03 C ++, C ++ 11 et 14 C ++
utilisation générique
paradigmes Multi-paradigme, de procédure, fonctionnel, Orienté objet
dactylographie statique
extensions commun .h .hh .hpp .HXX .h .c ++ ++ .cc cpp .cxx
influencé par C, Objective-C, Simula, Algol, Ada, CLU, ML
Il a influencé Java, C #, python, rouille, Perl, PHP
Mise en oeuvre de référence
site Web

la C ++ est un langage de programmation orienté objet, avec typage statique. Il a été développé (à l'origine sous le nom de la classe « C ») à Bjarne Stroustrup à bell Labs en 1983 comme une amélioration de la langage C. Parmi les principales améliorations que nous incluons: l'introduction du paradigme de la programmation orientée objet, fonctions virtuelles, surcharge opérateurs, l'héritage multiple, modèle et la gestion des exceptions.

introduction

Le C ++ a été normalisée en 1998 (ISO / IEC 14882: 1998 "Technologies de l'information - Langages de programmation - C ++", mis à jour à 2003). 11 C ++, Aussi connu sous C ++ 0x, est la nouvelle norme pour le langage de programmation C ++ qui remplace la révision de 2003. Après une révision mineure en 2014 (C ++ 14), la dernière version de la norme (connue officieusement 17 C ++) a été publié en 2017 .

Histoire de la langue

C ++
Bjarne Stroustrup, auteur de la langue.

Bjarne Stroustrup Il a commencé à travailler sur C ++ 1979. L'idée de créer une nouvelle langue son origine dans ses expériences de programmation lors de la réalisation de la thèse. Stroustrup a constaté que la Simula Il a des caractéristiques utiles pour le développement de grands projets logiciels, mais la langue était trop lent pour une utilisation pratique, alors que le BCPL Il est avéré rapide mais trop bas niveau pour le développement de grandes applications. Lorsque Stroustrup a commencé à travailler à Bell Labs, il a été chargé d'analyser la noyau de Unix dans le domaine de l'informatique distribuée. Se souvenant de la thèse, il a décidé d'ajouter à la langue C avec des caractéristiques semblables à Simula. C a été choisi parce qu'il était une langue d'usage général portable et rapide. En plus de C et Simula, il a été inspiré par les langues telles que l 'ALGOL 68, Ada, CLU et langage ML. Dans un premier temps, la fonctionnalité de classe, classe dérivée, vérification stricte de type et l'argument par défaut ont été ajoutés au C Cfront. La première version commerciale a été publié en Octobre 1985.[1]

En 1983, le nom de la langue a été changé de « C avec des classes » en C ++. De nouvelles fonctionnalités ont été ajoutées, y compris fonctions virtuelles, surcharge des fonctions et des opérateurs, référence, constantes, contrôle utilisateur de gestion de la mémoire, vérification de type améliorés et des commentaires dans le nouveau style ( « // »). il a publié en 1985, la première édition de Le langage C ++ de programmation, qui a fourni une référence importante à la langue, qui n'a pas encore été officiellement normalisé. En 1989, il a été publié la version 2.0 de C ++, dont les innovations incluent le 'l'héritage multiple, la classes abstraites, la fonctions membres statiques, fonctions membres const, et membres protégés. En 1990, il a été publié Le annotés C du Manuel de référence, à condition que les bases de la future norme. Le dernier ajout de fonctionnalités inclus la modèle, la exceptions, la espace de noms, nouveaux types de jeter et type de données booléen.

En plus de la langue, même la bibliothèque standard a évolué. Le premier ajout à la bibliothèque standard C était de la bibliothèque ruisseau E / S qui a fourni des installations pour remplacer la bibliothèque traditionnelle C (par exemple printf et scanf). Plus tard, parmi les ajouts les plus importants il y avait le Standard Template Library.

Après des années de travail, un comité qui a présenté aux membres ANSI et ISO Ils ont normalisé en C ++ 1998 (ISO / IEC 148821998). Depuis quelques années qui ont suivi la publication officielle de la norme, le comité a suivi le développement du langage et publié dans le 2003 une version corrigée de la norme.

Il remonte à 2005 un rapport technique, intitulé « Rapport technique 1 » (abrégé de TR1) qui, bien que pas officiellement partie de la norme contient un certain nombre d'extensions à la bibliothèque standard 11 C ++.

Il est propriétaire C ++, qui peut être mis en œuvre sans payer de redevances. Le document de normalisation lui-même, cependant, est disponible moyennant des frais.

Le nom de la langue

la prononciation C ++ et [OUI plʌs plʌs] (en anglais).

Le nom a été suggéré par Rick Mascitti le milieu 1983, quand la langue a été utilisée pour la première fois en dehors des centres de recherche. Auparavant, la langue appelée "C avec des classes" (classes C).

Le nom est un jeu de mots avec une construction de C (où la double signe positif est l'opérateur d'incrémentation, ce qui augmente par une la valeur d'une variable), conjointement avec la convention commune de l'ajout d'un signe plus pour indiquer une version amélioré. Selon Stroustrup: « ++ est l'opérateur de l'augmentation de C ... le nom exprime la nature évolutive des changements de C ». L'emploi jeu de mots il évite aussi le problème que « C + » a déjà été utilisé pour une langue sans aucun lien avec C ++ (sans mentionner qui est généralement associée à une évaluation d'un peu plus que suffisant dans un rendement scolaire).

Lorsque, en 1992, les explications ont été posées de façon informelle sur le nom, Rick Mascitti a dit avoir donné la suggestion dans l'esprit goliardico, et il ne pense pas que cela deviendrait le nom officiel de la langue.

Stroustrup a également suggéré une interprétation a posteriori plus "orwellien« Nom, en référence au » Dictionnaire C " novlangue (Dans le roman le dictionnaire des termes techniques, le seul vestige d'un langage scientifique) décrit dans l'annexe de 1984 et le préfixe doubleplus (arcipiù dans l'édition italienne), utilisé en novlangue pour le superlatif. Bien qu'il ne soit pas fidèle à la syntaxe fictive définie dans le roman avec une extrême précision, le nom sonnerait comme « C-Issimo » et connote, cependant, le C ++ (peut-être ajouter un gradient d'efficacité inhumaine) que l'amélioration intense de C.[2]

La bibliothèque standard

la standard C ++ de 1998 Il se compose de deux parties: le langage de base et de la norme C ++ bibliothèque; celui-ci comprend la majeure partie de la Standard Template Library et une version de la bibliothèque standard C légèrement modifiée pour une utilisation plus confortable. Il existe de nombreuses bibliothèques pour C ++ qui ne font pas partie de la norme; et il est possible, en utilisant la liaison externe, utilisez également des bibliothèques écrites pour le langage C

La STL était à l'origine une bibliothèque tiers, développé par HP et suivi Silicon Graphics, avant qu'elle ne soit incorporée dans la norme C. La norme ne se réfère pas comme le « STL », car il est tout simplement partie de la bibliothèque complète, mais beaucoup continuent à utiliser le terme pour le distinguer du reste de la bibliothèque (tels que les flux d'E / S, l'internationalisation, les fonctions de diagnostic, etc.).

La plupart des compilateurs fournit également une implémentation de la bibliothèque standard, y compris la STL. Il existe également des versions indépendantes du compilateur STL, comme le STLPort.[3]

compilateurs

Certains compilateurs pour C ++ sont: bruit (Multiplatform) GCC (Disponible pour de nombreuses plates-formes différentes) MinGW (portage GCC pour windows) et DJGPP. En dehors de ces derniers il y a les compilateurs commerciaux comme VisualC ++, Embarcadero C ++ Builder (initialement réalisé par Borland). Sous OS MacOS, vous pouvez utiliser le programme Xcode d'écrire du code en langage C ++. Bien que C est pas un sous-ensemble de C ++ dans le sens strict du mot, vous pouvez remplir dans de nombreux programmes de C écrites en C.

anciens numéros

Traditionnellement, les compilateurs C + ont eu un certain nombre de problèmes. La norme C ne précise pas de la mise en œuvre des noms de la décoration, la gestion des exceptions et d'autres fonctions spécifiques à la mise en œuvre, ce qui rend l'incompatibilité code objet produit par des compilateurs différents. Cependant, il existe des normes de tiers pour des machines particulières ou systèmes d'exploitation qui cherchent à normaliser les compilateurs pour ces plates-formes, comme le 'ABI C ++, et maintenant de nombreux statisticiens ont normalisé ces éléments.

Depuis de nombreuses années les différents compilateurs ont mis en œuvre la norme C avec différents niveaux de précision, en particulier la spécialisation de modèle partiel. Les versions récentes des compilateurs les plus utilisés prennent en charge presque tous de la norme C ++ 1998.

Des exemples de programmes

Bonjour tout le monde!

icône Loupe mgx2.svg Le même sujet en détail: Bonjour tout le monde.

Exemple du programme Bonjour tout le monde qui utilise le La bibliothèque standard C (Non STL), le flux de sortie cout pour afficher un message et se termine, le retour ( « retour ») d'une valeur à la fonction d'appel, dans ce cas, le système d'exploitation qui a lancé le programme.

#include   // à EXIT_SUCCESS
#include  // pour std :: Cout et std :: endl
int principal()
{
std::cout << « Bonjour tout le monde!\ n";
retour EXIT_SUCCESS;
}

note: La std suivi par le double signe « deux points » (::) Indique le espace de noms à utiliser pour résoudre les symboles du programme. en particulier std Il indique d'utiliser le symbole qui est dans la espace de noms la norme C ++. L'écriture au début du programme espace de noms à l'aide std Il évite d'avoir à préciser std :: avant chaque symbole.

Somme des nombres entiers

programme simple qui demande à l'utilisateur d'entrer deux nombres entiers, les additionne et affiche le résultat.

Le C ++ (ainsi que le C la norme C99) Met en œuvre les commentaires sur une ligne par double barre oblique: //. Pour des commentaires sur plusieurs lignes en utilisant la même syntaxe de C, à savoir: / * (Commentaire) * /.

#include   // pour EXIT_SUCCESS macro
#include  // pour std :: Cout, std :: cin et std :: endl
en utilisant espace de noms std;
int principal()
{
// Insérer sur la chaîne de flux de sortie standard (imprimer le message à l'écran)
// std :: endl, en plus d'introduire une nouvelle ligne au courant, même vider le tampon
cout << « Entrez un entier » << endl;
// définition d'une variable et son type (entier)
// Il est important que les définitions sont le début du bloc de code
int nombre1;
// lecture du flux standard d'une entrée entière à stocker dans la variable « number1 »
cin >> nombre1;
cout << « Entrez un autre entier » << endl;
int nombre2;
cin >> nombre2;
// La variable « somme » est initialisé avec la somme des chiffres lire
int somme(nombre1 + nombre2);
cout << somme << endl;
retour EXIT_SUCCESS;
}

plus grand nombre

Le programme demande aux numéros multiples utilisateurs et montre le plus grand parmi ceux insérés (interrompre l'exécution lorsqu'il est inséré un nombre négatif ou nul). En plus de 'int, c ++ utilise également la flotteur de déclarer des variables entières ou non entières.

#include 
en utilisant espace de noms std;
int principal()
{
flotteur m(0,0);
flotteur x;
faire
{
cout << « Entrez un positif (négatif ou nul à quit): »;
cin >> x;
si (x > m)
m = x;
} tandis que (x > 0,0);
cout << « Le nombre le plus élevé était » << m << endl;
retour 0;
}

zone rectangulaire

Le calcul de la superficie d'une figure plane que le rectangle est ici sous-exposition:

#include 
en utilisant espace de noms std;
flotteur base,hauteur,arearettangolo;
/ * Voici vos commentaires sur le programme * /
int principal()
{
cout << « Ce programme calcule la surface d'un rectangle. » << endl;
cout << « Ce qui est la base? »;
cin >> base;
cout << endl; // Permet de lancer une nouvelle ligne après la cin
cout << « Combien il est la hauteur? » << endl;
cin >> hauteur;
cout << endl;
arearettangolo= base * hauteur;
cout << « La région est: » << arearettangolo << endl;
retour 0;
}

Définition de classe

#include 
en utilisant espace de noms std;
classe message
{
public:
message(const chaîne sujet, const chaîne de) :
subject_(sujet) From_(de) {}
const chaîne sujet() const { retour subject_; }
const chaîne de() const { retour From_; }
privé:
chaîne subject_;
chaîne From_;
};

Il est précisé std comment espace de noms En règle générale, il est nécessaire d'indiquer la espace de noms pour la résolution de chaque symbole (std ::).

Random Number Generator

#include 
#include 
#include 
en utilisant espace de noms std;
int principal()
{
// Initialiser le générateur de nombres aléatoires
srand(non signé(temps(NULL)));
// Initialisation de la variable « aléatoire » à un nombre aléatoire
int aléatoire = (rand()%100) + 1;
// Aviser le nombre aléatoire généré
cout << « Nombre généré au hasard » << aléatoire;
// Sortie:
// nombre aléatoire généré: 45
retour 0;
}

Le programme dans ce cas génère une nombre aléatoire entre 100 et 1.

pour la boucle

#include 
en utilisant espace de noms std;
int principal()
{
pour(int nombre = 1; nombre < 10; nombre++)
{
// Aviser le nombre
cout << « Non » << nombre << endl;
// Sortie:
// "Numéro 1"
// "numéro 2"
// "numéro 3"
// "Numéro 4"
// "Nombre: 5"
// "Numéro 6"
// "Numéro 7"
// "Numéro 8"
// "Numéro 9"
}
retour 0;
}

jusqu'à ce que nombre est pas égal à 10, le programme continue de répéter la chaîne Nombre: 1 l'augmentation de la valeur nombre a.

La commande d'entrée

Une construction qui se trouve souvent dans la programmation en C ++ est:

faire { ... }
tandis que ( état );

utilisé pour répéter l'exécution d'une partie du programme des employés d'une condition spécifique, énoncée dans le temps.

la construction do-while Cela implique que le cycle est exécuté au moins une fois, puisque la condition est testée à la fin de l'instruction spécifiée par l'organisme do.

L'utilisation de l'individu tandis que Au contraire, il implique que le cycle peut également être exécuté jamais, si la condition qu'il ne devait pas être immédiatement vérifiée.

programme: compte tenu de deux chiffres et un opérateur (+ - * /) pour calculer le résultat:

#include 
#include 
en utilisant espace de noms std;
int principal()
{
double à, b, r;
// Entrée d'entrée: opérandes et signe
carboniser s;
cout << « Entrez le premier opérande »;
cin >> à;
cout << "\ nEntrez le deuxième opérande ";
cin >> b;
cout << "\ nEntrez un signe: ";
faire
{
cin >> s;
si ( s != '+'  s != '-'  s != '*'  s != '/' )
{
cerr << "\ nErreur: signe incorrect ". << endl;
cout << « Insérer une marque »;
}
}
tandis que ( s != '+'  s != '-'  s != '*'  s != '/' ); //! = Signifie « ne correspond pas à »,  Elle correspond à la Boolean ET
// Calcul des résultats, en fonction de l'entrée de signe
interrupteur (s) {
maisons '+':
r = à + b;
pause;
maisons '-':
r = à - b;
pause;
maisons '*':
r = à * b;
pause;
par défaut: // Si aucune des conditions ci-dessus se produisent ...
r = à / b;
}
cout << "\ nLe résultat "<<(carboniser)0x8A <<":"<< r << endl;
// 0x8A 8A montre le caractère ASCII (138 en hexadécimal) ou 'et' accent grave (il est)
// (char) entre parenthèses indique une « opération de coulée, la conversion forcée.
cin.ignorer(numeric_limits<streamsize> ::max() '\ N');
cin.obtenir();
retour 0;
}

Dans ce cas, l'éducation faire Il a été utilisé pour empêcher le programme de poursuivre l'exécution d'une valeur de paramètre s Incorrect.

notes

  1. ^ Stroustrup: FAQ, public.research.att.com.
  2. ^ Bjarne Stroustrup, « Note au lecteur », en C ++ - Langue, bibliothèque standard, les principes de programmation, Addison-Wesley, 2000.
  3. ^ STLport: Bienvenue!, stlport.org.

bibliographie

  • (FR) Bjarne Stroustrup, Le langage C ++ de programmation, Addison-Wesley, ISBN 978-0-201-70073-2.
  • Bjarne Stroustrup, C ++. Langue, la bibliothèque standard, les principes de programmation, Pearson, 2015, p. 1279 ISBN 978-8865184486.
  • Agostino Lorenzi, Marco Ambrosini, Sara Foresti, la programmation orientée objet et C ++, Atlas, 2004, p. 384, ISBN 978-8826811956.
  • Harvey M. Deitel, Paul J. Deitel, C ++. Principes de programmation, Apogée, 2014, p. 768, ISBN 978-8838785719.
  • Andrea Domenici, Graziano Frosini, Introduction à la programmation et éléments de structures de données avec C ++, Franco Angeli Editore, 2013, p. 480, ISBN 978-8846462022.

Articles connexes

D'autres projets

liens externes

autorités de contrôle LCCN: (FRsh87007505 · GND: (DE4193909-8 · BNF: (FRcb12139768z (Date)

Activité wiki récente

Aidez-nous à améliorer BooWiki
Commencez