Apprendre à programmer en C pour les nuls
3e édition
Dan Gookin
First Interactive
Introduction
Le langage C est-il encore pertinent ?
1
L'approche « Pour les nuls »
2
Structure et conventions du livre
3
Icônes utilisées
5
Derniers conseils pour la route
6
Remarques concernant cette adaptation française6
Partiel Commencer à programmer en C
Chapitre 1 Visite rapide pour les impatients
11
De quoi avez-vous besoin ?
11
Vos outils pour programmer11
Opter pour un atelier IDE12
L'atelier Code : Blocks
13
Mise en place de Code : Blocks13
Découverte de l'interface de Code : Blocks14
Votre premier projet
16
Démarrage d'un nouveau projet17
Analyse du code source
19
Compiler et exécuter le projet21
Enregistrer et fermer le projet23
Chapitre 2 L'art de programmer
25
Une brève histoire de la programmation
25
Les pionniers de la programmation26
Puis vint le langage C
27
Le processus de programmation
27
Grandes étapes de la programmation27
Rédaction du code source29
Compilation vers le code objet
31
Liaison à la librairie de fonctions C
32
Test de l'exécution
34
Chapitre 3 Anatomie du langage C
37
Les constituants du langage C
37
Mots réservés (ou mots-clés)38
Les fonctions39
Les opérateurs41
Les variables et Les valeurs42
Les instructions et la structure42
Les commentaires44
Aperçu d'un programme C typique
46
Analyse de la structure d'un programme C
46
Création de la fonction principale main ()47
Renvoi d'une valeur au système d'exploitation48
Ajout d'un appel de fonction
50
Partie 2 Les bases du C
Chapitre 4 Essais et corrections
55
Afficher quelque chose
55
Afficher un message de bienvenue55
La fonction puts()56
Afficher un autre texte57
Neutralisation d une instruction par commentaires59
Une erreur volontaire60
Affichez-vous avec printf()
63
Affichage minimal avec printf()63
Présentation de la fonction printf()64
Le mystère du saut de ligne (newline)64
Bienvenue aux séquences d'échappement65
Faire pleurer le lieur67
Chapitre 5 Valeurs et constantes
69
Des valeurs de toutes sortes
69
Des catégories de valeurs70
Afficher des chiffres avec print()71
Bien gérer les zéros en trop73
L'ordinateur est calculateur
74
De l'arithmétique simple74
Retour sur les relations entre entiers et flottants76
Quand rien ne change
77
Réutiliser la même valeur78
Profiter des constantes79
Exploiter une constante80
Chapitre 6 Valeurs et variables
81
Des valeurs sachant varier
81
Un premier exemple82
Les types de variables de base83
Exploiter une variable84
Encore plus de variables
88
Des types de variables plus spécifiques88
Déclaration de variables similaires90
Affectation de valeur lors de la déclaration91
Faites varier les variables, elles adorent !92
Chapitre 7 Entrées et sorties
95
Entrées/sorties caractère
95
Les périphériques d'entrée et de sortie95
Obtenir un caractère avec getchar()96
Exploiter la fonction putchar()99
Utiliser des variables de type char100
Du caractère à la chaîne
102
Stockage d'une chaîne en mémoire102
La fonction de lecture scanf()104
Lecture d'une chaîne avec scanf()105
Lecture d'autres types de valeurs avec scanf()107
Saisie de texte avec fgets()108
Chapitre 8 Le programme décide
113
Si quoi ?
113
Faire une comparaison simple114
Le mot réservé if115
Des opérateurs de comparaison116
Pour bien distinguer = et ==118
Se méfier du point-virgule superflu119
Des décisions multiples
121
Prises de décisions complexes121
Ajouter une troisième branche122
Comparaisons multiples avec logique
123
Écriture d'une comparaison avec opérateurs logiques123
Les opérateurs logiques du C124
Conditions multiples avec switch case
125
Création d'un bloc à conditions multiples125
Synthèse de la structure switch case127
Ne pas prendre de break128
L'étrange opérateur conditionnel ternaire ? :
129
Chapitre 9 Boucles, boucles, boucles
133
Pour obtenir de belles boucles
133
La boucle for
134
Répéter une action x fois134
Principes de la boude for135
Compter avec l'instruction for138
Compter des lettres139
Boucles for imbriquées140
Les joies de la boucle while
142
La structure d'une boucle while142
La variante de boude do while144
Techniques de boucles
145
Une boucle infinie146
Boucles infinies volontaires147
Sortie directe d'une boude par break147
Les boucles vides148
Chapitre 10 Des fonctions qui fonctionnent
151
Anatomie d'une fonction
151
Conception d'une fonction152
Prévoir ou pas un prototype ?155
Variables dans les fonctions
157
Variables locales158
Envoyer une valeur en entrée d'une fonction159
Transmettre plusieurs valeurs à une fonction161
Renvoi d'une valeur par une fonction162
Retour de fonction précoce165
Partie 3 Vers la maîtrise du C
Chapitre 11 Des mathématiques, mais pas trop
169
Les opérateurs mathématiques du C
170
Incrémenter et décrémenter171
Opérateurs ++ et -- en préfixe ou suffixe173
L'opérateur modulo (reste)174
Affectation et opérateurs composés175
Les fonctions mathématiques standard
177
Aperçu de quelques fonctions mathématiques177
Se déboucher les sinus179
Aléatoire ou au hasard ?
182
Générer une valeur numérique aléatoire182
Pour rendre le hasard moins prévisible184
De l'importance de l'ordre des priorités
186
Trouver le bon ordre187
Contrôler l'ordre grâce à des parenthèses188
Chapitre 12 Brosser un tableau
189
Dédramatiser les tableaux
189
Tentative d'évitement des tableaux190
Principes des tableaux191
Initialisation d'un tableau (déclaration]193
Des tableaux qui ont du caractère (les chaînes)194
Déclarer un tableau de caractères vides196
Trier un tableau198
Tableau à plusieurs dimensions
200
Créer un tableau à deux dimensions201
On passe en 3D : un tableau à trois dimensions204
Initialiser un tableau à plusieurs dimensions205
Tableaux et fonctions
207
Transmettre un tableau à une fonction207
Renvoyer un tableau depuis une fonction209
Chapitre 13 Jouer avec le texte
211
Les fonctions de manipulation de caractères
211
Présentation des fonctions CTYPE212
Test de caractères213
Manipuler des caractères215
Un aperçu des fonctions chaîne
216
Une sélection de fonctions chaîne217
Comparaison de chaînes218
Concaténation de chaînes219
Les options de format de printf()
220
Contrôle du format à virgule flottante221
Contrôler la largeur en sortie223
Autres alignements224
Naviguer dans les flux
226
Explorer un flux d'entrée226
Gestion des entrées flux227
Chapitre 14 Des variables composées : les structures
231
Soyez structuré
231
Découverte de la structure232
Principes du type struct233
Initialiser une structure235
Créer un tableau de structures236
Concepts de structure évolués
238
Créer des structures dans des structures238
Transmission d'une structure à une fonction240
Chapitre 15 Une invite en mode texte
241
Ouvrir une fenêtre de Terminal
241
Démarrer une fenêtre de terminal242
Exécuter du code en mode texte243
Les arguments de la fonction main()
244
Lecture de ta ligne de commande244
Maîtriser tes arguments de main()246
L'heure de la sortie
248
Quitter un programme248
Faire démarrer un autre programme249
Chapitre 16 Encore plus variable !
251
Contrôler ses variables
251
Transtypage volontaire ou non ?252
Définir de nouveaux types avec typedef253
Déclarer une variable statique256
Des variables sans frontières (globales)
258
Exploiter les variables globales258
Structure à accès global261
Chapitre 17 Dans 1ère binaire
263
Les fondamentaux du binaire
263
Bits, octets et calculs binaires264
Afficher des valeurs binaires266
Manipulations binaires268
L'opérateur OU binaire ( | )268
L'opérateur ET binaire (&)270
L'opérateur OU exclusif XOR (^)271
Les opérateurs de complément et de négation (- et !)273
Opérateurs de décalage binaire274
Analyse de la fonction binbin()277
Les joies de l'hexadécimal (base 16)
278
Partie 4 La partie ardue
Chapitre 18 Introduction aux pointeurs
285
Le gros problème littéraire des pointeurs
285
Variables et stockage en mémoire
286
Principe de stockage des variables287
Connaître la taille d une variable288
Etudier l'emplacement mémoire d'une variable292
Synthèse des informations de stockage d'une variable295
Dans la jungle des pointeurs
296
Le pointeur : une variable, mais spéciale296
Exploiter les pointeurs299
Chapitre 19 Plus loin dans les pointeurs
303
Pointeurs et tableaux
303
Obtenir l'adresse d'un tableau303
Manipuler la valeur d'un pointeur dans un tableau305
Des pointeurs à la place des indices de tableaux311
Relations entre chaînes et pointeurs
312
Afficher une chaîne avec un pointeur312
Créer une chaîne avec un pointeur313
Construire un tableau de pointeurs314
Trier des chaînes319
Pointeurs et fonctions
320
Transmettre un pointeur en entrée d'une fonction320
Renvoyer un pointeur depuis une fonction322
Chapitre 20 Les listes liées
325
Je veux de la mémoire !
325
La fonction de réservation malloc()326
Réserver de l'espace pour une chaîne328
Libérer l'espace mémoire330
Des listes avec des liens
333
Réserver l'espace d'une structure333
Créer une liste liée335
Modifier le contenu d'une liste liée341
Enregistrer une liste liée346
Chapitre 21 Une question de temps
347
Quelle heure est-il ?
347
Le calendrier des machines348
Les fonctions temporelles du C349
L'heure est venue de programmer l'heure
350
Interroger l'horloge350
Afficher une chaîne de date/heure352
Décomposer une chaîne de date/heure354
Suspension de séance355
Partie 5 Et ce n'est pas fini
Chapitre 22 Fonctions fichiers
359
Accès fichier séquentiels
359
Les accès fichier en langage C360
Écriture de texte dans un fichier361
Lire du texte depuis un fichier362
Ajout de texte en fin de fichier365
Écriture de données binaires366
Lecture depuis un fichier binaire368
Accès fichier directs
371
Écrire une structure dans un fichier371
Lecture et navigation374
Trouver un enregistrement particulier376
Sauvegarder une liste liée dans un fichier378
Chapitre 23 Gestion des fichiers
379
Un labyrinthe de répertoires
379
Consulter un dossier380
Lecture des informations fichier détaillées382
Distinguer les fichiers des sous-dossiers384
Navigation dans une arborescence385
Gestion des fichiers
387
Changer le nom d'un fichier387
Copier un fichier389
Supprimer un fichier390
Chapitre 24 Vers les grands projets
393
Un monstre multimodule
393
Lier deux fichiers de code source394
Partage d'une variable entre modules396
Créer un fichier d'en-tête personnel398
Liaisons avec d'autres librairies
601
Chapitre 25 Dehors, les bogues !
605
Le débogueur de Code :: Blocks
606
Configuration de débogage606
Exploiter le débogueur607
Poser un point d'arrêt610
Surveiller les variables611
Résoudre des problèmes avec printf() et puts()
413
Documenter les problèmes613
Des commentaires pour le futur414
Messages d'erreur améliorés
414
Partie 6 Les dix commandements
Chapitre 26 Dix pièges classiques
421
Les pièges conditionnels
421
== ou bien =
422
Les points-virgules solitaires dans les boucles
423
Virgules dans les boucles for
424
Oubli du break dans une structure switch
424
Oubli de parenthèses et d'accolades
425
Ne négligez pas les avertissements
426
Les boucles infernales
427
Les pièges de scanf()
428
Contraintes des entrées flux
429
Chapitre 27 Dix conseils et suggestions
431
Adoptez une bonne hygiène de programmeur
432
Choisissez des noms suggestifs
432
Profitez des fonctions
433
Retouchez votre code petit à petit
433
Subdivisez les grands projets en modules
436
N'oubliez jamais ce qu'est un pointeur !
436
Rédigez avec de l'espace avant de condenser
435
Sachez passer de if else à switch case
436
Profitez des opérateurs d'affectation composite
437
Quand vous êtes perdu, relisez à voix haute
437
Annexe A Codes ASCII
439
Annexe B Mots-Clés du C
465
Annexe C Opérateurs
447
Annexe D Types de variables
469
Annexe E Séquences d'échappement
450
Annexe F Formateurs de print()
451
Formateurs de sortie452
Annexe G Ordre des priorités entre opérateurs
453
Index455