informaticie...
mehdidou99
La programmation en C++ moderne
31 août 2020
0
Table des matières
I. Remerciements 14
II. Le début du voyage 16
II.1. Le C++, qu’est-ce que c’est ? 18
II.1.1. Petite mise au point . . . 18
II.1.1.1. Développer, un métier à part entière . . . 18
II.1.1.2. Votre part du travail . . . 18
II.1.1.3. Les mathématiques, indispensables? . . . 19
II.1.1.4. L’anglais, indispensable? . . . 19
II.1.2. Tour d’horizon du C++ . . . 19
II.1.2.1. L’histoire du C++ . . . 19
II.1.2.2. Pourquoi apprendre le C++? . . . 20
II.1.3. La documentation. . . 21
II.1.3.1. En résumé . . . 21
II.2. Le minimum pour commencer 22 II.2.1. Des outils en ligne . . . 22
II.2.2. Des outils plus poussés . . . 23
II.2.2.1. Visual Studio Community . . . 24
II.2.2.2. Qt Creator. . . 28
II.2.2.3. Pour les autres outils . . . 30
II.2.3. Un mot concernant Windows . . . 31
II.2.4. Un mot concernant GNU/Linux . . . 31
II.2.4.1. Un éditeur de texte . . . 32
II.2.4.2. Un compilateur . . . 32
II.2.4.3. En résumé . . . 32
II.3. Rencontre avec le C++ 33 II.3.1. Compilons notre premier programme . . . 33
II.3.2. Démystification du code . . . 34
II.3.2.1. Inclure des fonctionnalités déjà codées . . . 34
II.3.2.2. Le point d’entrée . . . 34
II.3.2.3. Voici mes instructions… . . . 35
II.3.3. Les commentaires . . . 36
II.3.3.1. La syntaxe . . . 37
II.3.3.2. En résumé . . . 37
Contenu masqué . . . 38
1
Table des matières
II.4. Une super mémoire 39
II.4.1. Les littéraux. . . 39
II.4.1.1. Les caractères . . . 39
II.4.1.2. Les nombres . . . 42
II.4.2. Les variables. . . 44
II.4.2.1. Comment créer des variables en C++? . . . 44
II.4.2.2. Un peu de constance, voyons! . . . 49
II.4.2.3. Manipulation de variables . . . 50
II.4.3. Qu’en déduisez-vous? . . . 52
II.4.3.1. Avec const . . . 53
II.4.3.2. Le cas de std::string . . . 54
II.4.3.3. Les avantages . . . 54
II.4.4. Les entrées. . . 55
II.4.4.1. Gestion des erreurs . . . 55
II.4.4.2. En résumé . . . 57
Contenu masqué . . . 57
II.5. Le conditionnel conjugué en C++ 60 II.5.1. Les booléens . . . 60
II.5.2. if—Si, et seulement si… . . . 62
II.5.2.1. À portée . . . 63
II.5.3. else—Sinon… . . . 64
II.5.4. else if—La combinaison des deux précédents . . . 66
II.5.5. Conditions imbriquées . . . 67
II.5.6. [T.P] Gérer les erreurs d’entrée—Partie I . . . 69
II.5.7. La logique booléenne . . . 70
II.5.7.1. AND—Tester si deux conditions sont vraies . . . 70
II.5.7.2. OR—Tester si au moins une condition est vraie . . . 71
II.5.7.3. NOT—Tester la négation . . . 72
II.5.8. Tester plusieurs expressions . . . 73
II.5.8.1. Évaluation en court-circuit . . . 75
II.5.9. Exercices. . . 76
II.5.9.1. Une pseudo-horloge . . . 76
II.5.9.2. Score . . . 76
II.5.9.3. XOR—Le OU exclusif . . . 77
II.5.9.4. En résumé . . . 77
Contenu masqué . . . 77
II.6. Des boucles qui se répètent, répètent, répètent… 84 II.6.1. while—Tant que… . . . 84
II.6.2. Exercices. . . 87
II.6.2.1. Une laverie . . . 87
II.6.2.2. PGCD . . . 87
II.6.2.3. Somme de nombres de 1 à n . . . 87
II.6.3. do while—Répéter … tant que . . . 88
II.6.4. [T.P] Gérer les erreurs d’entrée—Partie II . . . 89
II.6.5. for—Une boucle condensée . . . 89
II.6.6. Boucles imbriquées . . . 91
Table des matières
II.6.7. Convention de nommage . . . 92
II.6.8. Contrôler plus finement l’exécution de la boucle . . . 92
II.6.8.1. break—Je m’arrête là . . . 92
II.6.8.2. continue—Saute ton tour! . . . 94
II.6.8.3. En résumé . . . 94
Contenu masqué . . . 95
II.7. Au tableau ! 101 II.7.1. Un tableau c’est quoi? . . . 101
II.7.2. std::vector—Mais quel dynamisme! . . . 101
II.7.2.1. Déclarer un std::vector . . . 101
II.7.2.2. Manipuler les éléments d’un std::vector . . . 103
II.8. Accès aux éléments 104 II.8.1. Exercices. . . 112
II.8.1.1. Calcul de moyenne . . . 112
II.8.1.2. Minimum et maximum . . . 112
II.8.1.3. Séparer les pairs des impairs . . . 113
II.8.1.4. Compter les occurrences d’une valeur . . . 113
II.8.2. std::array—Le tableau statique . . . 113
II.8.2.1. Déclarer un std::array . . . 113
II.8.2.2. Remplir un tableau . . . 114
II.8.2.3. Accéder aux éléments . . . 115
II.8.2.4. Connaître la taille . . . 116
II.8.2.5. Vérifier si le tableau est vide . . . 116
II.8.3. std::string—Un type qui cache bien son jeu . . . 117
II.8.3.1. Connaître la taille d’une chaîne . . . 117
II.8.3.2. Accéder à un caractère . . . 118
II.8.3.3. Premier et dernier caractère . . . 118
II.8.3.4. Vérifier qu’une chaîne est vide . . . 119
II.8.3.5. Ajouter ou supprimer un caractère à la fin . . . 119
II.8.3.6. Supprimer tous les caractères . . . 120
II.8.3.7. Boucler sur une chaîne . . . 120
II.8.3.8. En résumé . . . 121
Contenu masqué . . . 121
II.9. Déployons la toute puissance des conteneurs 126 II.9.1. Le socle de base: les itérateurs . . . 126
II.9.1.1. Déclaration d’un itérateur . . . 126
II.9.1.2. Début et fin d’un conteneur . . . 127
II.9.1.3. Accéder à l’élément pointé . . . 127
II.9.1.4. Se déplacer dans une collection . . . 128
II.10. Déplacement vers l’élément suivant 129 II.10.0.1. const et les itérateurs . . . 131
II.10.0.2. Itérer depuis la fin . . . 132
II.10.0.3. Utilisation conjointe avec les conteneurs . . . 134
II.10.1. Des algorithmes à gogo! . . . 135
II.10.1.1. std::count—Compter les occurrences d’une valeur. . . 135 3