CPR Informatique (poste 3159 ou 3164) 24 septembre 2000 P Pr ro og gr ra am mm

CPR Informatique (poste 3159 ou 3164) 24 septembre 2000 P Pr ro og gr ra am mm me er r e en n C C + + + + a av ve ec c l le e … … IGN / ENSG / Cellule Pédagogique et de Recherche en Informatique 29/06/01 page 2/59 Table des matières 1. PRÉSENTATION DU LANGAGE C++................................................................................................. 3 2. HISTORIQUE DU C / C++.................................................................................................................. 4 3. OUVRAGES DE RÉFÉRENCE............................................................................................................ 4 4. LE LANGAGE C : LES BASES DU C++.............................................................................................. 5 4.1. LES SOURCES ET LES COMMENTAIRES........................................................................................................................................5 4.2. LES TYPES SIMPLES DE DONNÉES ...................................................................................................................................................7 4.3. LES INSTRUCTIONS : DE L’ALGORITHME AU PROGRAMME..............................................................................................9 4.4. LES CONVERSIONS ET LES TRANSTYPAGES ............................................................................................................................11 4.5. TABLEAUX ET CHAÎNES DE CARACTÈRES...............................................................................................................................12 4.6. LES TYPES "COMPLEXES" ET PRÉDÉFINIS..............................................................................................................................13 4.7. LA REDÉFINITION D'UN TYPE ...........................................................................................................................................................14 4.8. LES FONCTIONS ET LE PASSAGE DES PARAMÈTRES.........................................................................................................15 4.9. LES POINTEURS ........................................................................................................................................................................................20 4.10. LES FICHIERS.........................................................................................................................................................................................22 4.11. L’ALLOCATION PROGRAMMÉE EN C..........................................................................................................................................25 5. PROGRAMMER EN C++.................................................................................................................. 27 5.1. LES SOURCES ET LES COMMENTAIRES.....................................................................................................................................27 5.2. LES TABLEAUX..........................................................................................................................................................................................29 5.3. LES FONCTIONS........................................................................................................................................................................................30 5.4. L'ALLOCATION PROGRAMMÉE EN C++.......................................................................................................................................33 5.5. L'ENCAPSULATION ET LES FONCTIONS AMIES......................................................................................................................37 5.6. LES CONSTRUCTEURS ET LE DESTRUCTEUR (D'UNE CLASSE) ....................................................................................42 5.7. LA SURCHARGE D'OPÉRATEUR ET LES FONCTIONS "INLINE"......................................................................................46 5.8. LE CONSTRUCTEUR DE COPIE .........................................................................................................................................................48 5.9. LA GÉNÉRICITÉ ........................................................................................................................................................................................48 5.10. L'HÉRITAGE..............................................................................................................................................................................................49 5.11. LES FLUX ...................................................................................................................................................................................................54 5.12. LES EXCEPTIONS...................................................................................................................................................................................57 INDEX ................................................................................................................................................. 59 IGN/ ENSG / Cellule Pédagogique et de Recherche en Informatique 29/06/01 page 3/59 1. Présentation du langage C++ Le C++ est une extrapolation du langage C, lui-même inventé pour écrire le système d'exploitation UNIX et très répandu dans l'industrie. Le C++ est un langage compilé relativement structuré : le C étant très proche du système d'exploitation, on peut accéder directement à la mémoire et c'est même parfois nécessaire. Le C++ est considéré comme un langage orienté objet car il répond aux trois principes fondamentaux : encapsulation, polymorphisme et héritage. En plus, des types simples et complexes du C, on peut définir des classes qui sont des structures évoluées dont certains champs (appelés membres) sont des fonctions (appelées méthodes) selon le principe d'encapsulation. Le programmeur doit gérer l'accessibilité aux champs des classes qu'il définit : certains membres peuvent être rendus accessibles directement comme un champ d'une structure. En C++, deux fonctions peuvent avoir le même nom (principe de polymorphisme) si leurs paramètres ont des types différents. Elles peuvent également avoir des paramètres facultatifs dont la valeur par défaut est mentionnée dans le prototype (appelé signature). Les classes peuvent être définies à partir d'autres classes selon le principe d'héritage multiple. De même, il est possible de définir des fonctions ou des classes génériques dont le comportement dépendra, lors de l'édition de lien dynamique, d'un type fourni par l'utilisateur : la fonction min(x,y) est générique car elle compare deux valeurs x et y de même type et renvoie la plus petite des 2 valeurs. Pour montrer comment programmer en C++, ce support de cours utilisera comme fil conducteur la manipulation de tableaux (ensembles de cases contiguës de même type). Le premier programme sera écrit de la manière la plus simple possible jusqu'à l'écriture d'un véritable gestionnaire de tableaux avec sauvegarde sur fichiers. Chaque programme apportera son lot de précisions ou de nouveautés… IGN/ ENSG / Cellule Pédagogique et de Recherche en Informatique 29/06/01 page 4/59 2. Historique du C / C++ Le langage C est un langage de type déclaratif comme le Pascal. Il a été créé dans les années 70 par une seule personne Dennis Ritchie (AT & T). Son but était de réécrire le système d'exploitation UNIX en langage évolué car Ken Thompson avait écrit UNIX en B : langage non évolué qui posait des problèmes de portage sur d'autre machine que PDP-11. Le C n'a pas été créé pour concurrencer Fortran ou Pascal, mais le succès d'UNIX a contribué à sa popularité. La réussite incontestable du C comme langage de programmation système lui a forgé une fausse réputation de langage portable. Le C diffère du Pascal ou de l'ADA en ce sens qu'il est plus proche de la machine (plus bas niveau) : - il demande plus au programmeur ; - il permet de mieux comprendre certains mécanismes systèmes. En 1978, Brian Kernnighan et D. Ricthie publient la "bible du C", le fameux "K&R" qui fait référence ("norme", 2ème édition en 1987). Parallèlement en 1982, l'American National Standards Institute lance le comité de normalisation du C, ce qui a donné la Norme Ansi en 1989 et les meilleurs compilateurs. L'évolution naturelle est le C++. Les programmes écrits en ANSI-C sont censés pouvoir être recompilés n’importe où … Le langage C++ a été conçu en 1983 par Rick Mascitti pour être utilisé dans le même environnement que le C. Une version du C avec "classes" existe depuis 1980. Ce langage est considéré comme une extension du langage C, il s'appelle C++ par référence à l'opérateur d'incrémentation du C. 3. Ouvrages de référence On peut citer comme ouvrages de référence : - L'incontournable : Le Langage C (2ème édition) de "K&R" - Pour l'apprentissage : Langage C - Norme ANSI de Ph.Drix - Pour les problèmes de portage : Le Manuel de Référence de Harbison-Steele. IGN/ ENSG / Cellule Pédagogique et de Recherche en Informatique 29/06/01 page 5/59 4. Le langage C : les bases du C++ 4.1. Les sources et les commentaires Un programme écrit en C est un ensemble de fichiers textes documentés (appelés sources) respectant une grammaire précise, bien qu'il existe toujours plusieurs façons d'écrire la même chose. Ce document présente la solution préconisée mais aussi les alternatives les plus fiables sous forme de commentaires (c'est-à-dire une suite de caractères, de préférence non accentués, qui seront ignorés par le compilateur et ne servent qu'à documenter le programme). On indique le début des commentaires et la fin, éventuellement sur des lignes différentes : /* ce symbole indique le debut d'un commentaire qui peut etre sur plusieurs lignes et ne se terminera qu'apres le symbole */ Un source est organisé de la manière suivante : /* Commentaires sur le contenu du fichier */ /* Indications des fichiers qui devront etre inclus par le compilateur */ /* Definitions des constantes et des types complexes utilises par la suite */ /* Prototypes des fonctions qui seront decrites plus loin */ /* Corps des fonctions */ /* Fonction principale (appelee "main") si ce fichier est celui qui contient le "programme principal" */ L'affichage et la saisie sont gérés par la bibliothèque stdio.h Les fonctions printf et scanf sont utilisées respectivement pour l’affichage à l’écran et la saisie au clavier. Dans ce chapitre, nous ne présenterons que la fonction printf, car l’utilisation de la fonction scanf requiert des notions que nous verrons plus tard (cf. chapitre 4.9 – Les pointeurs) La fonction printf permet de formater l’affichage à l ‘écran. Il s’agit d’une fonction à arguments variables (on peut avoir autant de paramètres que l’on veut). Dans le format d’affichage, chaque "%" annonce l’utilisation d’un paramètre fourni par la suite. Exemples : printf ("Bonjour") ; affiche "Bonjour" à l’écran. printf ("Bonjour\n") ; affiche "Bonjour" à l’écran et effectue un retour à la ligne. printf ("la somme de 2 et 3 fait %d\n",n) ; affiche à l’écran : La somme de 2 et 3 fait 5, si la variable n vaut 5. printf ("la somme de %d et %d fait %d\n",a,b,n) ; affiche à l’écran : La somme de 2 et 3 fait 5, si les variables a, b et n valent respectivement 2, 3 et 5. %d représente ici le format d’affichage d’une variable de type entière. Il existe un format d’affichage pour chaque type simple de données (cf. chapitre suivant 4.2). IGN/ ENSG / Cellule Pédagogique et de Recherche en Informatique 29/06/01 page 6/59 L’exemple qui suit montre l’utilisation de la fonction printf dans un programme simple calculant la somme de deux entiers. /* Ce fichier presente un exemple d’affichage d’une somme de 2 entiers a l’ecran */ #include <stdio.h> int main () { /* Declaration des variables */ int a,b,c; a=2 ; b=3 ; c=0 ; printf ("a = %d\n",a); printf ("b = %d\n",b); c = a + b ; printf ("La somme %d + %d = %d\n",a,b,c); return 0 ; } /* main */ Pour permettre la saisie et l'affichage, il est nécessaire d’inclure le fichier stdio.h. Le symbole # indique une directive (un ordre) de précompilation qui est donc effectuée en priorité. Le fichier à inclure étant fourni avec le compilateur, son nom est indiqué entre chevrons car il n'est pas nécessairement présent sur le répertoire courant. on affecte des valeurs aux variables a et b t i iti li on renvoie la valeur 0 au système, ce qui signifie que le programme s’est correctement terminé a = 2 b = 3 à l’écran La somme 2 + 3 = 5 à l’écran IGN/ ENSG / Cellule Pédagogique et de Recherche en Informatique 29/06/01 page 7/59 4.2. Les types simples de données 4.2.1 - La déclaration des variables déclaration : <type> <identificateur> ; <identificateur> : - lettres non accentuées (attention minuscules ≠ majuscules) - uploads/Science et Technologie/ cplusplus.pdf

  • 20
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager