SlideShare une entreprise Scribd logo
1  sur  409
Télécharger pour lire hors ligne
Apprenez à
programmer en C !
Par Mathieu Nebra (Mateo21)
www.openclassrooms.com
Licence Creative Commons 6 2.0
Dernière mise à jour le 8/01/2013
Sommaire
2
Sommaire ...........................................................................................................................................
6
Lire aussi ............................................................................................................................................
8
Apprenez à programmer en C ! ..........................................................................................................
8
Partie 1 : Les bases de la programmation en C ..................................................................................
9
Vous avez dit programmer ? .............................................................................................................................................
9
Programmer, c'est quoi ? ............................................................................................................................................................................................
10
Programmer, dans quel langage ? ............................................................................................................................................................................
10
Un peu de vocabulaire ..............................................................................................................................................................................................
11
Pourquoi choisir d'apprendre le C ? ..........................................................................................................................................................................
12
Programmer, c'est dur ? ............................................................................................................................................................................................
13
Ayez les bons outils ! .......................................................................................................................................................
14
Les outils nécessaires au programmeur ...................................................................................................................................................................
14
Choisissez votre IDE .................................................................................................................................................................................................
15
Code::Blocks (Windows, Mac OS, Linux) ..................................................................................................................................................................
15
Télécharger Code::Blocks .........................................................................................................................................................................................
17
Créer un nouveau projet ............................................................................................................................................................................................
19
Visual C++ (Windows seulement) .............................................................................................................................................................................
20
Installation .................................................................................................................................................................................................................
20
Créer un nouveau projet ............................................................................................................................................................................................
23
Ajouter un nouveau fichier source .............................................................................................................................................................................
24
La fenêtre principale de Visual ..................................................................................................................................................................................
25
Xcode (Mac OS seulement) ......................................................................................................................................................................................
25
Xcode, où es-tu ? ......................................................................................................................................................................................................
25
Lancement de Xcode ................................................................................................................................................................................................
26
La fenêtre de développement ...................................................................................................................................................................................
27
Ajouter un nouveau fichier ........................................................................................................................................................................................
28
En résumé .................................................................................................................................................................................................................
28
Votre premier programme ...............................................................................................................................................
29
Console ou fenêtre ? .................................................................................................................................................................................................
29
Les programmes en fenêtres ....................................................................................................................................................................................
30
Les programmes en console .....................................................................................................................................................................................
31
Un minimum de code ................................................................................................................................................................................................
31
Demandez le code minimal à votre IDE ....................................................................................................................................................................
32
Analysons le code minimal ........................................................................................................................................................................................
34
Testons notre programme .........................................................................................................................................................................................
35
Écrire un message à l'écran ......................................................................................................................................................................................
36
Dis Bonjour au Monsieur ...........................................................................................................................................................................................
37
Les caractères spéciaux ...........................................................................................................................................................................................
38
Le syndrome de Gérard ............................................................................................................................................................................................
39
Les commentaires, c'est très utile ! ...........................................................................................................................................................................
41
Un monde de variables ...................................................................................................................................................
41
Une affaire de mémoire .............................................................................................................................................................................................
41
Les différents types de mémoire ...............................................................................................................................................................................
42
La mémoire vive en photos .......................................................................................................................................................................................
43
Le schéma de la mémoire vive .................................................................................................................................................................................
45
Déclarer une variable ................................................................................................................................................................................................
45
Donner un nom à ses variables ................................................................................................................................................................................
45
Les types de variables ...............................................................................................................................................................................................
47
Déclarer une variable ................................................................................................................................................................................................
48
Affecter une valeur à une variable .............................................................................................................................................................................
49
La valeur d'une nouvelle variable ..............................................................................................................................................................................
50
Les constantes ..........................................................................................................................................................................................................
50
Afficher le contenu d'une variable .............................................................................................................................................................................
52
Afficher plusieurs variables dans un même printf .....................................................................................................................................................
52
Récupérer une saisie ................................................................................................................................................................................................
55
Une bête de calcul ...........................................................................................................................................................
55
Les calculs de base ...................................................................................................................................................................................................
56
La division .................................................................................................................................................................................................................
57
Le modulo .................................................................................................................................................................................................................
57
Des calculs entre variables .......................................................................................................................................................................................
58
Les raccourcis ...........................................................................................................................................................................................................
59
L'incrémentation ........................................................................................................................................................................................................
59
La décrémentation ....................................................................................................................................................................................................
60
Les autres raccourcis ................................................................................................................................................................................................
60
La bibliothèque mathématique ..................................................................................................................................................................................
61
fabs ............................................................................................................................................................................................................................
62
ceil .............................................................................................................................................................................................................................
62
floor ...........................................................................................................................................................................................................................
62
pow ............................................................................................................................................................................................................................
62
sqrt ............................................................................................................................................................................................................................
63
sin, cos, tan ...............................................................................................................................................................................................................
63
asin, acos, atan .........................................................................................................................................................................................................
63
exp .............................................................................................................................................................................................................................
63
log ..............................................................................................................................................................................................................................
63
log10 ..........................................................................................................................................................................................................................
2/410
www.openclassrooms.com
63
En résumé .................................................................................................................................................................................................................
63
Les conditions .................................................................................................................................................................
64
La condition if... else .................................................................................................................................................................................................
64
Quelques symboles à connaître ................................................................................................................................................................................
64
Un if simple ...............................................................................................................................................................................................................
66
Le else pour dire « sinon » ........................................................................................................................................................................................
67
Le else if pour dire « sinon si » .................................................................................................................................................................................
67
Plusieurs conditions à la fois .....................................................................................................................................................................................
69
Quelques erreurs courantes de débutant ..................................................................................................................................................................
69
Les booléens, le coeur des conditions ......................................................................................................................................................................
69
Quelques petits tests pour bien comprendre ............................................................................................................................................................
70
Des explications s'imposent ......................................................................................................................................................................................
70
Un test avec une variable ..........................................................................................................................................................................................
71
Cette variable majeur est un booléen .......................................................................................................................................................................
71
Les booléens dans les conditions .............................................................................................................................................................................
72
La condition switch ....................................................................................................................................................................................................
72
Construire un switch ..................................................................................................................................................................................................
73
Gérer un menu avec un switch ..................................................................................................................................................................................
75
Les ternaires : des conditions condensées ...............................................................................................................................................................
75
Une condition if... else bien connue ..........................................................................................................................................................................
75
La même condition en ternaire ..................................................................................................................................................................................
76
En résumé .................................................................................................................................................................................................................
76
Les boucles .....................................................................................................................................................................
77
Qu'est-ce qu'une boucle ? .........................................................................................................................................................................................
77
La boucle while ..........................................................................................................................................................................................................
79
Attention aux boucles infinies ....................................................................................................................................................................................
80
La boucle do… while .................................................................................................................................................................................................
80
La boucle for ..............................................................................................................................................................................................................
81
En résumé .................................................................................................................................................................................................................
82
TP : Plus ou Moins, votre premier jeu .............................................................................................................................
82
Préparatifs et conseils ...............................................................................................................................................................................................
82
Le principe du programme ........................................................................................................................................................................................
82
Tirer un nombre au sort .............................................................................................................................................................................................
83
Les bibliothèques à inclure ........................................................................................................................................................................................
83
J'en ai assez dit ! .......................................................................................................................................................................................................
84
Correction ! ................................................................................................................................................................................................................
84
La correction de « Plus ou Moins » ...........................................................................................................................................................................
84
Exécutable et sources ...............................................................................................................................................................................................
85
Explications ...............................................................................................................................................................................................................
85
Idées d'amélioration ..................................................................................................................................................................................................
86
Les fonctions ...................................................................................................................................................................
87
Créer et appeler une fonction ....................................................................................................................................................................................
88
Schéma d'une fonction ..............................................................................................................................................................................................
88
Créer une fonction .....................................................................................................................................................................................................
89
Plusieurs paramètres, aucun paramètre ...................................................................................................................................................................
90
Appeler une fonction .................................................................................................................................................................................................
93
Des exemples pour bien comprendre .......................................................................................................................................................................
93
Conversion euros / francs .........................................................................................................................................................................................
94
La punition .................................................................................................................................................................................................................
95
Aire d'un rectangle ....................................................................................................................................................................................................
96
Un menu ....................................................................................................................................................................................................................
97
En résumé .................................................................................................................................................................................................................
98
Partie 2 : Techniques « avancées » du langage C ............................................................................
98
La programmation modulaire ..........................................................................................................................................
98
Les prototypes ...........................................................................................................................................................................................................
98
Le prototype pour annoncer une fonction ..................................................................................................................................................................
99
Les headers ...............................................................................................................................................................................................................
99
Plusieurs fichiers par projet .......................................................................................................................................................................................
100
Fichiers .h et .c ........................................................................................................................................................................................................
103
Les include des bibliothèques standard ..................................................................................................................................................................
104
La compilation séparée ...........................................................................................................................................................................................
106
La portée des fonctions et variables .......................................................................................................................................................................
106
Les variables propres aux fonctions ........................................................................................................................................................................
107
Les variables globales : à éviter ..............................................................................................................................................................................
108
Variable statique à une fonction ..............................................................................................................................................................................
109
Les fonctions locales à un fichier ............................................................................................................................................................................
109
En résumé ...............................................................................................................................................................................................................
111
À l'assaut des pointeurs .................................................................................................................................................
111
Un problème bien ennuyeux ....................................................................................................................................................................................
112
La mémoire, une question d'adresse ......................................................................................................................................................................
112
Rappel des faits .......................................................................................................................................................................................................
113
Adresse et valeur .....................................................................................................................................................................................................
114
Le scoop du jour ......................................................................................................................................................................................................
115
Utiliser des pointeurs ...............................................................................................................................................................................................
115
Créer un pointeur .....................................................................................................................................................................................................
118
À retenir absolument ...............................................................................................................................................................................................
119
Envoyer un pointeur à une fonction .........................................................................................................................................................................
120
Une autre façon d'envoyer un pointeur à une fonction ............................................................................................................................................
122
Qui a dit : "Un problème bien ennuyeux" ? .............................................................................................................................................................
123
En résumé ...............................................................................................................................................................................................................
123
Les tableaux ..................................................................................................................................................................
Sommaire 3/410
www.openclassrooms.com
124
Les tableaux dans la mémoire ................................................................................................................................................................................
124
Définir un tableau ....................................................................................................................................................................................................
126
Les tableaux à taille dynamique ..............................................................................................................................................................................
127
Parcourir un tableau ................................................................................................................................................................................................
128
Initialiser un tableau ................................................................................................................................................................................................
128
Une autre façon d'initialiser .....................................................................................................................................................................................
129
Passage de tableaux à une fonction .......................................................................................................................................................................
130
Quelques exercices ! ...............................................................................................................................................................................................
132
En résumé ...............................................................................................................................................................................................................
133
Les chaînes de caractères ............................................................................................................................................
133
Le type char .............................................................................................................................................................................................................
133
Afficher un caractère ...............................................................................................................................................................................................
134
Les chaînes sont des tableaux de char ...................................................................................................................................................................
136
Création et initialisation de la chaîne ......................................................................................................................................................................
138
Récupération d'une chaîne via un scanf .................................................................................................................................................................
138
Fonctions de manipulation des chaînes ..................................................................................................................................................................
139
Pensez à inclure string.h .........................................................................................................................................................................................
139
strlen : calculer la longueur d'une chaîne ................................................................................................................................................................
140
strcpy : copier une chaîne dans une autre ..............................................................................................................................................................
142
strcat : concaténer 2 chaînes ..................................................................................................................................................................................
143
strcmp : comparer 2 chaînes ...................................................................................................................................................................................
144
strchr : rechercher un caractère ..............................................................................................................................................................................
145
strpbrk : premier caractère de la liste ......................................................................................................................................................................
146
strstr : rechercher une chaîne dans une autre ........................................................................................................................................................
147
sprintf : écrire dans une chaîne ...............................................................................................................................................................................
148
En résumé ...............................................................................................................................................................................................................
148
Le préprocesseur ..........................................................................................................................................................
149
Les include ..............................................................................................................................................................................................................
150
Les define ................................................................................................................................................................................................................
152
Un define pour la taille des tableaux .......................................................................................................................................................................
153
Calculs dans les define ...........................................................................................................................................................................................
153
Les constantes prédéfinies .....................................................................................................................................................................................
153
Les définitions simples ............................................................................................................................................................................................
154
Les macros ..............................................................................................................................................................................................................
154
Macro sans paramètres ...........................................................................................................................................................................................
155
Macro avec paramètres ...........................................................................................................................................................................................
157
Les conditions .........................................................................................................................................................................................................
157
#ifdef, #ifndef ...........................................................................................................................................................................................................
158
#ifndef pour éviter les inclusions infinies .................................................................................................................................................................
159
En résumé ...............................................................................................................................................................................................................
159
Créez vos propres types de variables ...........................................................................................................................
160
Définir une structure ................................................................................................................................................................................................
160
Exemple de structure ..............................................................................................................................................................................................
161
Tableaux dans une structure ...................................................................................................................................................................................
162
Utilisation d'une structure ........................................................................................................................................................................................
162
Le typedef ................................................................................................................................................................................................................
163
Modifier les composantes de la structure ................................................................................................................................................................
164
Initialiser une structure ............................................................................................................................................................................................
165
Pointeur de structure ...............................................................................................................................................................................................
166
Envoi de la structure à une fonction ........................................................................................................................................................................
167
Un raccourci pratique et très utilisé .........................................................................................................................................................................
168
Les énumérations ....................................................................................................................................................................................................
168
Association de nombres aux valeurs ......................................................................................................................................................................
169
Associer une valeur précise ....................................................................................................................................................................................
169
En résumé ...............................................................................................................................................................................................................
170
Lire et écrire dans des fichiers ......................................................................................................................................
171
Ouvrir et fermer un fichier ........................................................................................................................................................................................
171
fopen : ouverture du fichier ......................................................................................................................................................................................
175
Tester l'ouverture du fichier .....................................................................................................................................................................................
176
fclose : fermer le fichier ...........................................................................................................................................................................................
177
Différentes méthodes de lecture / écriture ..............................................................................................................................................................
177
Écrire dans le fichier ................................................................................................................................................................................................
180
Lire dans un fichier ..................................................................................................................................................................................................
184
Se déplacer dans un fichier .....................................................................................................................................................................................
184
ftell : position dans le fichier ....................................................................................................................................................................................
184
fseek : se positionner dans le fichier .......................................................................................................................................................................
185
rewind : retour au début ..........................................................................................................................................................................................
186
Renommer et supprimer un fichier ..........................................................................................................................................................................
186
rename : renommer un fichier .................................................................................................................................................................................
186
remove : supprimer un fichier ..................................................................................................................................................................................
187
L'allocation dynamique ..................................................................................................................................................
188
La taille des variables ..............................................................................................................................................................................................
190
Une nouvelle façon de voir la mémoire ...................................................................................................................................................................
193
Allocation de mémoire dynamique ..........................................................................................................................................................................
193
malloc : demande d'allocation de mémoire .............................................................................................................................................................
194
Tester le pointeur .....................................................................................................................................................................................................
194
free : libérer de la mémoire .....................................................................................................................................................................................
195
Exemple concret d'utilisation ...................................................................................................................................................................................
196
Allocation dynamique d'un tableau ..........................................................................................................................................................................
198
En résumé ...............................................................................................................................................................................................................
199
TP : réalisation d'un Pendu ...........................................................................................................................................
199
Les consignes .........................................................................................................................................................................................................
Sommaire 4/410
www.openclassrooms.com
199
Déroulement d'une partie ........................................................................................................................................................................................
202
Dictionnaire de mots ...............................................................................................................................................................................................
204
La solution (1 : le code du jeu) ................................................................................................................................................................................
204
Analyse de la fonction main ....................................................................................................................................................................................
207
Analyse de la fonction gagne ..................................................................................................................................................................................
207
Analyse de la fonction rechercheLettre ...................................................................................................................................................................
208
La solution (2 : la gestion du dictionnaire) ...............................................................................................................................................................
209
Préparation des nouveaux fichiers ..........................................................................................................................................................................
209
La fonction piocherMot ............................................................................................................................................................................................
211
La fonction nombreAleatoire ....................................................................................................................................................................................
212
Le fichier dico.h .......................................................................................................................................................................................................
212
Le fichier dico.c .......................................................................................................................................................................................................
213
Il va falloir modifier le main ! ....................................................................................................................................................................................
217
Idées d'amélioration ................................................................................................................................................................................................
217
Télécharger le projet ...............................................................................................................................................................................................
217
Améliorez le Pendu ! ...............................................................................................................................................................................................
218
La saisie de texte sécurisée ..........................................................................................................................................
219
Les limites de la fonction scanf ...............................................................................................................................................................................
219
Entrer une chaîne de caractères avec des espaces ...............................................................................................................................................
220
Entrer une chaîne de caractères trop longue ..........................................................................................................................................................
221
Récupérer une chaîne de caractères ......................................................................................................................................................................
221
La fonction fgets ......................................................................................................................................................................................................
222
Créer sa propre fonction de saisie utilisant fgets ....................................................................................................................................................
227
Convertir la chaîne en nombre ................................................................................................................................................................................
227
strtol : convertir une chaîne en long ........................................................................................................................................................................
229
strtod : convertir une chaîne en double ...................................................................................................................................................................
229
En résumé ...............................................................................................................................................................................................................
230
Partie 3 : Création de jeux 2D en SDL ............................................................................................
231
Installation de la SDL ....................................................................................................................................................
231
Pourquoi avoir choisi la SDL ? ................................................................................................................................................................................
231
Choisir une bibliothèque : pas facile ! .....................................................................................................................................................................
231
La SDL est un bon choix ! .......................................................................................................................................................................................
232
Les possibilités offertes par la SDL .........................................................................................................................................................................
233
Téléchargement de la SDL ......................................................................................................................................................................................
234
Créer un projet SDL : Windows ...............................................................................................................................................................................
234
Création d'un projet SDL sous Code::Blocks ..........................................................................................................................................................
238
Création d'un projet SDL sous Visual C++ ..............................................................................................................................................................
240
Créer un projet SDL : Mac OS (Xcode) ...................................................................................................................................................................
244
Créer un projet SDL : Linux .....................................................................................................................................................................................
245
En résumé ...............................................................................................................................................................................................................
246
Création d'une fenêtre et de surfaces ...........................................................................................................................
246
Charger et arrêter la SDL ........................................................................................................................................................................................
246
SDL_Init : chargement de la SDL ............................................................................................................................................................................
247
SDL_Quit : arrêt de la SDL ......................................................................................................................................................................................
248
Canevas de programme SDL ..................................................................................................................................................................................
248
Gérer les erreurs .....................................................................................................................................................................................................
249
Ouverture d'une fenêtre ..........................................................................................................................................................................................
250
Choix du mode vidéo ..............................................................................................................................................................................................
251
Mettre en pause le programme ...............................................................................................................................................................................
253
Changer le titre de la fenêtre ...................................................................................................................................................................................
255
Manipulation des surfaces .......................................................................................................................................................................................
255
Votre première surface : l'écran ..............................................................................................................................................................................
257
Colorer une surface .................................................................................................................................................................................................
261
Dessiner une nouvelle surface à l'écran .................................................................................................................................................................
265
Centrer la surface à l'écran .....................................................................................................................................................................................
266
Exercice : créer un dégradé ....................................................................................................................................................................................
267
Correction ! ..............................................................................................................................................................................................................
269
« Je veux des exercices pour m'entraîner ! » ..........................................................................................................................................................
269
En résumé ...............................................................................................................................................................................................................
269
Afficher des images .......................................................................................................................................................
270
Charger une image BMP .........................................................................................................................................................................................
270
Le format BMP ........................................................................................................................................................................................................
270
Charger un Bitmap ..................................................................................................................................................................................................
272
Associer une icône à son application ......................................................................................................................................................................
273
Gestion de la transparence .....................................................................................................................................................................................
273
Le problème de la transparence .............................................................................................................................................................................
275
Rendre une image transparente ..............................................................................................................................................................................
277
La transparence Alpha ............................................................................................................................................................................................
279
Charger plus de formats d'image avec SDL_Image ................................................................................................................................................
280
Installer SDL_image sous Windows ........................................................................................................................................................................
282
Installer SDL_image sous Mac OS X ......................................................................................................................................................................
282
Charger les images .................................................................................................................................................................................................
284
En résumé ...............................................................................................................................................................................................................
284
La gestion des événements ..........................................................................................................................................
285
Le principe des événements ...................................................................................................................................................................................
285
La variable d'événement .........................................................................................................................................................................................
286
La boucle des événements .....................................................................................................................................................................................
286
Récupération de l'événement ..................................................................................................................................................................................
287
Analyse de l'événement ..........................................................................................................................................................................................
288
Le code complet ......................................................................................................................................................................................................
289
Le clavier .................................................................................................................................................................................................................
289
Les événements du clavier .....................................................................................................................................................................................
Sommaire 5/410
www.openclassrooms.com
289
Récupérer la touche ................................................................................................................................................................................................
291
Exercice : diriger Zozor au clavier ...........................................................................................................................................................................
291
Charger l'image .......................................................................................................................................................................................................
292
Schéma de la programmation événementielle ........................................................................................................................................................
293
Traiter l'événement SDL_KEYDOWN .....................................................................................................................................................................
295
Quelques optimisations ...........................................................................................................................................................................................
298
La souris ..................................................................................................................................................................................................................
299
Gérer les clics de la souris ......................................................................................................................................................................................
301
Gérer le déplacement de la souris ..........................................................................................................................................................................
302
Quelques autres fonctions avec la souris ...............................................................................................................................................................
303
Les événements de la fenêtre .................................................................................................................................................................................
303
Redimensionnement de la fenêtre ..........................................................................................................................................................................
303
Visibilité de la fenêtre ..............................................................................................................................................................................................
305
En résumé ...............................................................................................................................................................................................................
306
TP : Mario Sokoban .......................................................................................................................................................
306
Cahier des charges du Sokoban .............................................................................................................................................................................
306
À propos du Sokoban ..............................................................................................................................................................................................
307
Le cahier des charges .............................................................................................................................................................................................
307
Récupérer les sprites du jeu ...................................................................................................................................................................................
309
Le main et les constantes .......................................................................................................................................................................................
309
Les différents fichiers du projet ...............................................................................................................................................................................
309
Les constantes : constantes.h .................................................................................................................................................................................
311
Le main : main.c ......................................................................................................................................................................................................
312
Le jeu .......................................................................................................................................................................................................................
312
Les paramètres envoyés à la fonction ....................................................................................................................................................................
313
Les déclarations de variables ..................................................................................................................................................................................
316
Initialisations ............................................................................................................................................................................................................
318
La boucle principale ................................................................................................................................................................................................
322
Fin de la fonction : déchargements .........................................................................................................................................................................
322
La fonction deplacerJoueur .....................................................................................................................................................................................
325
Chargement et enregistrement de niveaux .............................................................................................................................................................
325
chargerNiveau .........................................................................................................................................................................................................
327
sauvegarderNiveau .................................................................................................................................................................................................
328
L'éditeur de niveaux ................................................................................................................................................................................................
328
Initialisations ............................................................................................................................................................................................................
329
La gestion des événements ....................................................................................................................................................................................
332
Blit time ! .................................................................................................................................................................................................................
333
Résumé et améliorations ........................................................................................................................................................................................
333
Alors résumons ! .....................................................................................................................................................................................................
334
Améliorez ! ..............................................................................................................................................................................................................
335
Maîtrisez le temps ! .......................................................................................................................................................
335
Le Delay et les Ticks ...............................................................................................................................................................................................
335
SDL_Delay ..............................................................................................................................................................................................................
336
SDL_GetTicks .........................................................................................................................................................................................................
337
Utiliser SDL_GetTicks pour gérer le temps .............................................................................................................................................................
342
Les timers ................................................................................................................................................................................................................
342
Initialiser le système de timers ................................................................................................................................................................................
342
Ajouter un timer .......................................................................................................................................................................................................
344
En résumé ...............................................................................................................................................................................................................
345
Écrire du texte avec SDL_ttf .........................................................................................................................................
346
Installer SDL_ttf .......................................................................................................................................................................................................
346
Comment fonctionne SDL_ttf ? ...............................................................................................................................................................................
346
Installer SDL_ttf .......................................................................................................................................................................................................
346
Configurer un projet pour SDL_ttf ...........................................................................................................................................................................
347
La documentation ....................................................................................................................................................................................................
347
Chargement de SDL_ttf ...........................................................................................................................................................................................
347
L'include ..................................................................................................................................................................................................................
347
Démarrage de SDL_ttf ............................................................................................................................................................................................
348
Arrêt de SDL_ttf .......................................................................................................................................................................................................
348
Chargement d'une police ........................................................................................................................................................................................
350
Les différentes méthodes d'écriture ........................................................................................................................................................................
352
Exemple d'écriture de texte en Blended ..................................................................................................................................................................
353
Code complet d'écriture de texte .............................................................................................................................................................................
355
Attributs d'écriture du texte ......................................................................................................................................................................................
356
Exercice : le compteur .............................................................................................................................................................................................
359
En résumé ...............................................................................................................................................................................................................
360
Jouer du son avec FMOD .............................................................................................................................................
360
Installer FMOD ........................................................................................................................................................................................................
360
Pourquoi FMOD ? ...................................................................................................................................................................................................
360
Télécharger FMOD ..................................................................................................................................................................................................
361
Installer FMOD ........................................................................................................................................................................................................
361
Initialiser et libérer un objet système .......................................................................................................................................................................
361
Inclure le header ......................................................................................................................................................................................................
362
Créer et initialiser un objet système ........................................................................................................................................................................
363
Fermer et libérer un objet système ..........................................................................................................................................................................
363
Les sons courts .......................................................................................................................................................................................................
363
Trouver des sons courts ..........................................................................................................................................................................................
364
Les étapes à suivre pour jouer un son ....................................................................................................................................................................
366
Exemple : un jeu de tir ............................................................................................................................................................................................
369
Les musiques (MP3, OGG, WMA…) .......................................................................................................................................................................
369
Trouver des musiques .............................................................................................................................................................................................
370
Les étapes à suivre pour jouer une musique ..........................................................................................................................................................
372
Code complet de lecture du MP3 ............................................................................................................................................................................
Sommaire 6/410
www.openclassrooms.com
374
En résumé ...............................................................................................................................................................................................................
375
TP : visualisation spectrale du son ................................................................................................................................
375
Les consignes .........................................................................................................................................................................................................
375
1/ Lire un MP3 .........................................................................................................................................................................................................
376
2/ Récupérer les données spectrales du son ..........................................................................................................................................................
378
4/ Réaliser le dégradé .............................................................................................................................................................................................
379
La solution ...............................................................................................................................................................................................................
383
Idées d'amélioration ................................................................................................................................................................................................
385
Partie 4 : Les structures de données ..............................................................................................
385
Les listes chaînées ........................................................................................................................................................
385
Représentation d'une liste chaînée .........................................................................................................................................................................
386
Construction d'une liste chaînée .............................................................................................................................................................................
386
Un élément de la liste ..............................................................................................................................................................................................
386
La structure de contrôle ...........................................................................................................................................................................................
387
Le dernier élément de la liste ..................................................................................................................................................................................
388
Les fonctions de gestion de la liste .........................................................................................................................................................................
388
Initialiser la liste .......................................................................................................................................................................................................
389
Ajouter un élément ..................................................................................................................................................................................................
391
Supprimer un élément .............................................................................................................................................................................................
392
Afficher la liste chaînée ...........................................................................................................................................................................................
393
Aller plus loin ...........................................................................................................................................................................................................
393
En résumé ...............................................................................................................................................................................................................
394
Les piles et les files .......................................................................................................................................................
394
Les piles ..................................................................................................................................................................................................................
394
Fonctionnement des piles .......................................................................................................................................................................................
396
Création d'un système de pile .................................................................................................................................................................................
400
Les files ...................................................................................................................................................................................................................
400
Fonctionnement des files ........................................................................................................................................................................................
400
Création d'un système de file ..................................................................................................................................................................................
402
À vous de jouer ! .....................................................................................................................................................................................................
402
En résumé ...............................................................................................................................................................................................................
404
Les tables de hachage ..................................................................................................................................................
404
Pourquoi utiliser une table de hachage ? ................................................................................................................................................................
404
Qu'est-ce qu'une table de hachage ? ......................................................................................................................................................................
406
Écrire une fonction de hachage ..............................................................................................................................................................................
407
Gérer les collisions ..................................................................................................................................................................................................
408
L'adressage ouvert ..................................................................................................................................................................................................
408
Le chaînage .............................................................................................................................................................................................................
408
En résumé ...............................................................................................................................................................................................................
Lire aussi 7/410
www.openclassrooms.com
Apprenez à programmer en C !
Par Mathieu Nebra (Mateo21)
Mise à jour : 08/01/2013
Difficulté : Intermédiaire Durée d'étude : 2 mois, 15 jours
1 visites depuis 7 jours, classé 26/807
Vous aimeriez apprendre à programmer, mais vous ne savez pas par où commencer ?
(autrement dit : vous en avez marre des cours trop compliqués que vous ne comprenez pas ? )
C'est votre jour de chance !
V
ous venez de tomber sur un cours de programmation pour débutants, vraiment pour débutants.
Il n'y a aucune honte à être débutant, tout le monde est passé par là, moi y compris.
Ce qu'il vous faut est pourtant simple. Il faut qu'on vous explique tout, progressivement, depuis le début :
Comment s'y prend-on pour créer des programmes comme des jeux, des fenêtres ?
De quels logiciels a-t-on besoin pour programmer ?
Dans quel langage commencer à programmer ? D'ailleurs, c'est quoi un langage ?
Ce tutoriel est constitué de 2 parties théoriques sur le langage C (parties I et II) suivies d'une partie pratique (partie III) portant
sur la bibliothèque SDL dans laquelle vous réutiliserez tout ce que vous avez appris pour créer des jeuxvidéo !
Exemples de réalisations tirés de la partie III sur la SDL
Ce cours vous plaît ?
Si vous avez aimé ce cours, vous pouvez retrouver le livre "Apprenez à programmer en C" du même
auteur, en vente sur le Site du Zéro, en librairie et dans les boutiques en ligne comme Amazon.fr et
FNAC.com. V
ous y trouverez ce cours adapté au format papier avec une série de chapitres inédits.
Plus d'informations
Lire aussi 8/410
www.openclassrooms.com
Partie 1 : Les bases de la programmation en C
Vous avez dit programmer ?
V
ous avez déjà entendu parler de programmation et nul doute que si vous avez ce livre entre les mains, c'est parce que vous
voulez « enfin » comprendre comment ça fonctionne.
Mais programmer en langage C… ça veut dire quoi ? Est-ce que c'est bien pour commencer ? Est-ce que vous avez le niveau
pour programmer ? Est-ce qu'on peut tout faire avec ?
Ce chapitre a pour but de répondre à toutes ces questions apparemment bêtes et pourtant très importantes.
Grâce à ces questions simples, vous saurez à la fin de ce premier chapitre ce qui vous attend. C'est quand même mieuxde savoir à
quoi sert ce que vous allez apprendre, vous ne trouvez pas ?
Programmer, c'est quoi ?
On commence par la question la plus simple qui soit, la plus basique de toutes les questions basiques.
Si vous avez l'impression de déjà savoir tout ça, je vous conseille de lire quand même, ça ne peut pas vous faire de mal ! Je pars
de zéro pour ce cours, donc je vais devoir répondre à la question :
Que signifie le mot « programmer » ?
Programmer signifie réaliser des « programmes informatiques ». Les programmes demandent à l'ordinateur d'effectuer des
actions.
V
otre ordinateur est rempli de programmes en tous genres :
la calculatrice est un programme ;
votre traitement de texte est un programme ;
votre logiciel de « chat » est un programme ;
les jeuxvidéo sont des programmes.
Clone de Metal Slug réalisé par le membre joe78
En bref, les programmes sont partout et permettent de faire a priori tout et n'importe quoi sur un ordinateur. V
ous pouvez inventer
un logiciel de cryptage révolutionnaire si ça vous chante, ou réaliser un jeu de combat en 3D sur Internet, peu importe. V
otre
ordinateur peut tout faire (sauf le café, mais j'y travaille).
Attention ! Je n'ai pas dit que réaliser un jeu vidéo se faisait en claquant des doigts. J'ai simplement dit que tout cela était
Apprenez à programmer en C ! 9/410
www.openclassrooms.com
possible, mais soyez sûrs que ça demande beaucoup de travail.
Comme vous débutez, nous n'allons pas commencer en réalisant un jeu 3D. Ce serait suicidaire.
Nous allons devoir passer par des programmes très simples. Une des premières choses que nous verrons est comment afficher
un message à l'écran. Oui, je sais, ça n'a rien de transcendant, mais rien que ça croyez-moi, ce n'est pas aussi facile que ça en a
l'air.
Ça impressionne moins les amis, mais on va bien devoir passer par là. Petit à petit, vous apprendrez suffisamment de choses pour
commencer à réaliser des programmes de plus en plus complexes. Le but de ce cours est que vous soyez capables de vous en
sortir dans n'importe quel programme écrit en C.
Mais tenez, au fait, vous savez ce que c'est vous, ce fameux« langage C » ?
Programmer, dans quel langage ?
V
otre ordinateur est une machine bizarre, c'est le moins que l'on puisse dire. On ne peut s'adresser à lui qu'en lui envoyant des 0
et des 1.Ainsi, si je traduis « Fais le calcul 3 + 5 » en langage informatique, ça pourrait donner quelque chose comme (j'invente, je
ne connais quand même pas la traduction informatique par cœur) :
0010110110010011010011110
Ce que vous voyez là, c'est le langage informatique de votre ordinateur, appelé langage binaire (retenez bien ce mot !). V
otre
ordinateur ne connaît que ce langage-là et, comme vous pouvez le constater, c'est absolument incompréhensible.
Donc voilà notre premier vrai problème :
Comment parler à l'ordinateur plus simplement qu'en binaire avec des 0 et des 1 ?
V
otre ordinateur ne parle pas l'anglais et encore moins le français. Pourtant, il est inconcevable d'écrire un programme en langage
binaire. Même les informaticiens les plus fous ne le font pas, c'est vous dire !
Eh bien l'idée que les informaticiens ont eue, c'est d'inventer de nouveauxlangages qui seraient ensuite traduits en binaire pour
l'ordinateur. Le plus dur à faire, c'est de réaliser le programme qui fait la « traduction ». Heureusement, ce programme a déjà été
écrit par des informaticiens et nous n'aurons pas à le refaire (ouf !). On va au contraire s'en servir pour écrire des phrases comme
: « Fais le calcul 3 + 5 » qui seront traduites par le programme de « traduction » en quelque chose comme : «
0010110110010011010011110 ».
Le schéma suivante résume ce que je viens de vous expliquer.
Un peu de vocabulaire
Là j'ai parlé avec des mots simples, mais il faut savoir qu'en informatique il existe un mot pour chacune de ces choses-là. Tout au
long de ce cours, vous allez d'ailleurs apprendre à utiliser un vocabulaire approprié.
Non seulement vous aurez l'air de savoir de quoi vous parlez, mais si un jour (et ça arrivera) vous devez parler à un autre
programmeur, vous saurez vous faire comprendre. Certes, les gens autour de vous vous regarderont comme si vous êtiez des
extra-terrestres, mais ça il ne faudra pas y faire attention !
Reprenons le schéma que l'on vient de voir.
La première case est « V
otre programme est écrit dans un langage simplifié ». Ce fameux« langage simplifié » est appelé en fait
langage de haut niveau.
Il existe plusieurs niveauxde langages. Plus un langage est haut niveau, plus il est proche de votre vraie langue (comme le
français). Un langage de haut niveau est donc facile à utiliser, mais cela a aussi quelques petits défauts comme nous le verrons
Apprenez à programmer en C ! 10/410
www.openclassrooms.com
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf
96858965apprenez-a-programmer-en-c.pdf

Contenu connexe

Similaire à 96858965apprenez-a-programmer-en-c.pdf

464494 administrez-vos-bases-de-donnees-avec-mysql
464494 administrez-vos-bases-de-donnees-avec-mysql464494 administrez-vos-bases-de-donnees-avec-mysql
464494 administrez-vos-bases-de-donnees-avec-mysqlLahcen Amourgh
 
Apprenez à monter votre ordinateur
Apprenez à monter votre ordinateurApprenez à monter votre ordinateur
Apprenez à monter votre ordinateurFouad Root
 
4477 comprendre-la-messagerie-electronique
4477 comprendre-la-messagerie-electronique4477 comprendre-la-messagerie-electronique
4477 comprendre-la-messagerie-electroniqueMarcenot Justice
 
Apprenez a-creer-votre-site-web-avec-html5-et-css3
Apprenez a-creer-votre-site-web-avec-html5-et-css3Apprenez a-creer-votre-site-web-avec-html5-et-css3
Apprenez a-creer-votre-site-web-avec-html5-et-css3Annabi Gihed
 
119239 programmation-en-java-api
119239 programmation-en-java-api119239 programmation-en-java-api
119239 programmation-en-java-apiWiem Ben Harrath
 
Debutez dans-la-3d-avec-blender
Debutez dans-la-3d-avec-blenderDebutez dans-la-3d-avec-blender
Debutez dans-la-3d-avec-blenderAbd Elfetah
 
The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88Mahmoud Samir Fayed
 
The Ring programming language version 1.9 book - Part 1 of 210
The Ring programming language version 1.9 book - Part 1 of 210The Ring programming language version 1.9 book - Part 1 of 210
The Ring programming language version 1.9 book - Part 1 of 210Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202Mahmoud Samir Fayed
 
Manuel d'accessibilité du web (extrait)
Manuel d'accessibilité du web (extrait)Manuel d'accessibilité du web (extrait)
Manuel d'accessibilité du web (extrait)pprem
 
Apprenez à créer votre site Web avec HTML5 et CSS3
Apprenez à créer votre site Web avec HTML5 et CSS3Apprenez à créer votre site Web avec HTML5 et CSS3
Apprenez à créer votre site Web avec HTML5 et CSS3Mehdi Sisyphe
 

Similaire à 96858965apprenez-a-programmer-en-c.pdf (20)

apprenez-a-programmer-en-java
 apprenez-a-programmer-en-java apprenez-a-programmer-en-java
apprenez-a-programmer-en-java
 
464494 administrez-vos-bases-de-donnees-avec-mysql
464494 administrez-vos-bases-de-donnees-avec-mysql464494 administrez-vos-bases-de-donnees-avec-mysql
464494 administrez-vos-bases-de-donnees-avec-mysql
 
Apprenez à monter votre ordinateur
Apprenez à monter votre ordinateurApprenez à monter votre ordinateur
Apprenez à monter votre ordinateur
 
JavaScript
JavaScript JavaScript
JavaScript
 
Dej 1 30
Dej 1 30Dej 1 30
Dej 1 30
 
Les applications-web-avec-javafx
Les applications-web-avec-javafxLes applications-web-avec-javafx
Les applications-web-avec-javafx
 
Administration joomla2 5
Administration joomla2 5Administration joomla2 5
Administration joomla2 5
 
Programmation en-java-api
Programmation en-java-apiProgrammation en-java-api
Programmation en-java-api
 
4477 comprendre-la-messagerie-electronique
4477 comprendre-la-messagerie-electronique4477 comprendre-la-messagerie-electronique
4477 comprendre-la-messagerie-electronique
 
Apprenez a-creer-votre-site-web-avec-html5-et-css3
Apprenez a-creer-votre-site-web-avec-html5-et-css3Apprenez a-creer-votre-site-web-avec-html5-et-css3
Apprenez a-creer-votre-site-web-avec-html5-et-css3
 
119239 programmation-en-java-api
119239 programmation-en-java-api119239 programmation-en-java-api
119239 programmation-en-java-api
 
Debutez dans-la-3d-avec-blender
Debutez dans-la-3d-avec-blenderDebutez dans-la-3d-avec-blender
Debutez dans-la-3d-avec-blender
 
The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88The Ring programming language version 1.3 book - Part 1 of 88
The Ring programming language version 1.3 book - Part 1 of 88
 
The Ring programming language version 1.9 book - Part 1 of 210
The Ring programming language version 1.9 book - Part 1 of 210The Ring programming language version 1.9 book - Part 1 of 210
The Ring programming language version 1.9 book - Part 1 of 210
 
The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84The Ring programming language version 1.2 book - Part 1 of 84
The Ring programming language version 1.2 book - Part 1 of 84
 
The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202The Ring programming language version 1.8 book - Part 1 of 202
The Ring programming language version 1.8 book - Part 1 of 202
 
Manuel d'accessibilité du web (extrait)
Manuel d'accessibilité du web (extrait)Manuel d'accessibilité du web (extrait)
Manuel d'accessibilité du web (extrait)
 
Deviens un Ninja avec Angular2
Deviens un Ninja avec Angular2Deviens un Ninja avec Angular2
Deviens un Ninja avec Angular2
 
Jmetertest
JmetertestJmetertest
Jmetertest
 
Apprenez à créer votre site Web avec HTML5 et CSS3
Apprenez à créer votre site Web avec HTML5 et CSS3Apprenez à créer votre site Web avec HTML5 et CSS3
Apprenez à créer votre site Web avec HTML5 et CSS3
 

Dernier

Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...M2i Formation
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptssusercbaa22
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxlamourfrantz
 
présentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurprésentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurdinaelchaine
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxssuserbd075f
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfMICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfssuser40e112
 
Grammaire pour les élèves de la 6ème.doc
Grammaire pour les élèves de la  6ème.docGrammaire pour les élèves de la  6ème.doc
Grammaire pour les élèves de la 6ème.docKarimKhrifech
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxssusercbaa22
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptxMalikaIdseaid1
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptssusercbaa22
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 

Dernier (20)

Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
Formation M2i - Intelligence Artificielle Comment booster votre productivité ...
 
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.pptMécanique Automobile LE TURBOCOMPRESSEUR.ppt
Mécanique Automobile LE TURBOCOMPRESSEUR.ppt
 
Cours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptxCours-irrigation_et_drainage_cours1.pptx
Cours-irrigation_et_drainage_cours1.pptx
 
présentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteurprésentation sur l'échafaudage dans des travaux en hauteur
présentation sur l'échafaudage dans des travaux en hauteur
 
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptxSUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
SUPPORT DE SUR COURS_GOUVERNANCE_SI_M2.pptx
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdfMICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
MICROBIOLOGIE ENDODONTIQUE english and frensh 25 nov 2020.pdf
 
Grammaire pour les élèves de la 6ème.doc
Grammaire pour les élèves de la  6ème.docGrammaire pour les élèves de la  6ème.doc
Grammaire pour les élèves de la 6ème.doc
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptxApproche-des-risques-par-l’analyse-des-accidents-1.pptx
Approche-des-risques-par-l’analyse-des-accidents-1.pptx
 
presentation l'interactionnisme symbolique finale.pptx
presentation l'interactionnisme symbolique  finale.pptxpresentation l'interactionnisme symbolique  finale.pptx
presentation l'interactionnisme symbolique finale.pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
MaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.pptMaintenanceLa Maintenance Corrective.ppt
MaintenanceLa Maintenance Corrective.ppt
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 

96858965apprenez-a-programmer-en-c.pdf

  • 1. Apprenez à programmer en C ! Par Mathieu Nebra (Mateo21) www.openclassrooms.com Licence Creative Commons 6 2.0 Dernière mise à jour le 8/01/2013
  • 2. Sommaire 2 Sommaire ........................................................................................................................................... 6 Lire aussi ............................................................................................................................................ 8 Apprenez à programmer en C ! .......................................................................................................... 8 Partie 1 : Les bases de la programmation en C .................................................................................. 9 Vous avez dit programmer ? ............................................................................................................................................. 9 Programmer, c'est quoi ? ............................................................................................................................................................................................ 10 Programmer, dans quel langage ? ............................................................................................................................................................................ 10 Un peu de vocabulaire .............................................................................................................................................................................................. 11 Pourquoi choisir d'apprendre le C ? .......................................................................................................................................................................... 12 Programmer, c'est dur ? ............................................................................................................................................................................................ 13 Ayez les bons outils ! ....................................................................................................................................................... 14 Les outils nécessaires au programmeur ................................................................................................................................................................... 14 Choisissez votre IDE ................................................................................................................................................................................................. 15 Code::Blocks (Windows, Mac OS, Linux) .................................................................................................................................................................. 15 Télécharger Code::Blocks ......................................................................................................................................................................................... 17 Créer un nouveau projet ............................................................................................................................................................................................ 19 Visual C++ (Windows seulement) ............................................................................................................................................................................. 20 Installation ................................................................................................................................................................................................................. 20 Créer un nouveau projet ............................................................................................................................................................................................ 23 Ajouter un nouveau fichier source ............................................................................................................................................................................. 24 La fenêtre principale de Visual .................................................................................................................................................................................. 25 Xcode (Mac OS seulement) ...................................................................................................................................................................................... 25 Xcode, où es-tu ? ...................................................................................................................................................................................................... 25 Lancement de Xcode ................................................................................................................................................................................................ 26 La fenêtre de développement ................................................................................................................................................................................... 27 Ajouter un nouveau fichier ........................................................................................................................................................................................ 28 En résumé ................................................................................................................................................................................................................. 28 Votre premier programme ............................................................................................................................................... 29 Console ou fenêtre ? ................................................................................................................................................................................................. 29 Les programmes en fenêtres .................................................................................................................................................................................... 30 Les programmes en console ..................................................................................................................................................................................... 31 Un minimum de code ................................................................................................................................................................................................ 31 Demandez le code minimal à votre IDE .................................................................................................................................................................... 32 Analysons le code minimal ........................................................................................................................................................................................ 34 Testons notre programme ......................................................................................................................................................................................... 35 Écrire un message à l'écran ...................................................................................................................................................................................... 36 Dis Bonjour au Monsieur ........................................................................................................................................................................................... 37 Les caractères spéciaux ........................................................................................................................................................................................... 38 Le syndrome de Gérard ............................................................................................................................................................................................ 39 Les commentaires, c'est très utile ! ........................................................................................................................................................................... 41 Un monde de variables ................................................................................................................................................... 41 Une affaire de mémoire ............................................................................................................................................................................................. 41 Les différents types de mémoire ............................................................................................................................................................................... 42 La mémoire vive en photos ....................................................................................................................................................................................... 43 Le schéma de la mémoire vive ................................................................................................................................................................................. 45 Déclarer une variable ................................................................................................................................................................................................ 45 Donner un nom à ses variables ................................................................................................................................................................................ 45 Les types de variables ............................................................................................................................................................................................... 47 Déclarer une variable ................................................................................................................................................................................................ 48 Affecter une valeur à une variable ............................................................................................................................................................................. 49 La valeur d'une nouvelle variable .............................................................................................................................................................................. 50 Les constantes .......................................................................................................................................................................................................... 50 Afficher le contenu d'une variable ............................................................................................................................................................................. 52 Afficher plusieurs variables dans un même printf ..................................................................................................................................................... 52 Récupérer une saisie ................................................................................................................................................................................................ 55 Une bête de calcul ........................................................................................................................................................... 55 Les calculs de base ................................................................................................................................................................................................... 56 La division ................................................................................................................................................................................................................. 57 Le modulo ................................................................................................................................................................................................................. 57 Des calculs entre variables ....................................................................................................................................................................................... 58 Les raccourcis ........................................................................................................................................................................................................... 59 L'incrémentation ........................................................................................................................................................................................................ 59 La décrémentation .................................................................................................................................................................................................... 60 Les autres raccourcis ................................................................................................................................................................................................ 60 La bibliothèque mathématique .................................................................................................................................................................................. 61 fabs ............................................................................................................................................................................................................................ 62 ceil ............................................................................................................................................................................................................................. 62 floor ........................................................................................................................................................................................................................... 62 pow ............................................................................................................................................................................................................................ 62 sqrt ............................................................................................................................................................................................................................ 63 sin, cos, tan ............................................................................................................................................................................................................... 63 asin, acos, atan ......................................................................................................................................................................................................... 63 exp ............................................................................................................................................................................................................................. 63 log .............................................................................................................................................................................................................................. 63 log10 .......................................................................................................................................................................................................................... 2/410 www.openclassrooms.com
  • 3. 63 En résumé ................................................................................................................................................................................................................. 63 Les conditions ................................................................................................................................................................. 64 La condition if... else ................................................................................................................................................................................................. 64 Quelques symboles à connaître ................................................................................................................................................................................ 64 Un if simple ............................................................................................................................................................................................................... 66 Le else pour dire « sinon » ........................................................................................................................................................................................ 67 Le else if pour dire « sinon si » ................................................................................................................................................................................. 67 Plusieurs conditions à la fois ..................................................................................................................................................................................... 69 Quelques erreurs courantes de débutant .................................................................................................................................................................. 69 Les booléens, le coeur des conditions ...................................................................................................................................................................... 69 Quelques petits tests pour bien comprendre ............................................................................................................................................................ 70 Des explications s'imposent ...................................................................................................................................................................................... 70 Un test avec une variable .......................................................................................................................................................................................... 71 Cette variable majeur est un booléen ....................................................................................................................................................................... 71 Les booléens dans les conditions ............................................................................................................................................................................. 72 La condition switch .................................................................................................................................................................................................... 72 Construire un switch .................................................................................................................................................................................................. 73 Gérer un menu avec un switch .................................................................................................................................................................................. 75 Les ternaires : des conditions condensées ............................................................................................................................................................... 75 Une condition if... else bien connue .......................................................................................................................................................................... 75 La même condition en ternaire .................................................................................................................................................................................. 76 En résumé ................................................................................................................................................................................................................. 76 Les boucles ..................................................................................................................................................................... 77 Qu'est-ce qu'une boucle ? ......................................................................................................................................................................................... 77 La boucle while .......................................................................................................................................................................................................... 79 Attention aux boucles infinies .................................................................................................................................................................................... 80 La boucle do… while ................................................................................................................................................................................................. 80 La boucle for .............................................................................................................................................................................................................. 81 En résumé ................................................................................................................................................................................................................. 82 TP : Plus ou Moins, votre premier jeu ............................................................................................................................. 82 Préparatifs et conseils ............................................................................................................................................................................................... 82 Le principe du programme ........................................................................................................................................................................................ 82 Tirer un nombre au sort ............................................................................................................................................................................................. 83 Les bibliothèques à inclure ........................................................................................................................................................................................ 83 J'en ai assez dit ! ....................................................................................................................................................................................................... 84 Correction ! ................................................................................................................................................................................................................ 84 La correction de « Plus ou Moins » ........................................................................................................................................................................... 84 Exécutable et sources ............................................................................................................................................................................................... 85 Explications ............................................................................................................................................................................................................... 85 Idées d'amélioration .................................................................................................................................................................................................. 86 Les fonctions ................................................................................................................................................................... 87 Créer et appeler une fonction .................................................................................................................................................................................... 88 Schéma d'une fonction .............................................................................................................................................................................................. 88 Créer une fonction ..................................................................................................................................................................................................... 89 Plusieurs paramètres, aucun paramètre ................................................................................................................................................................... 90 Appeler une fonction ................................................................................................................................................................................................. 93 Des exemples pour bien comprendre ....................................................................................................................................................................... 93 Conversion euros / francs ......................................................................................................................................................................................... 94 La punition ................................................................................................................................................................................................................. 95 Aire d'un rectangle .................................................................................................................................................................................................... 96 Un menu .................................................................................................................................................................................................................... 97 En résumé ................................................................................................................................................................................................................. 98 Partie 2 : Techniques « avancées » du langage C ............................................................................ 98 La programmation modulaire .......................................................................................................................................... 98 Les prototypes ........................................................................................................................................................................................................... 98 Le prototype pour annoncer une fonction .................................................................................................................................................................. 99 Les headers ............................................................................................................................................................................................................... 99 Plusieurs fichiers par projet ....................................................................................................................................................................................... 100 Fichiers .h et .c ........................................................................................................................................................................................................ 103 Les include des bibliothèques standard .................................................................................................................................................................. 104 La compilation séparée ........................................................................................................................................................................................... 106 La portée des fonctions et variables ....................................................................................................................................................................... 106 Les variables propres aux fonctions ........................................................................................................................................................................ 107 Les variables globales : à éviter .............................................................................................................................................................................. 108 Variable statique à une fonction .............................................................................................................................................................................. 109 Les fonctions locales à un fichier ............................................................................................................................................................................ 109 En résumé ............................................................................................................................................................................................................... 111 À l'assaut des pointeurs ................................................................................................................................................. 111 Un problème bien ennuyeux .................................................................................................................................................................................... 112 La mémoire, une question d'adresse ...................................................................................................................................................................... 112 Rappel des faits ....................................................................................................................................................................................................... 113 Adresse et valeur ..................................................................................................................................................................................................... 114 Le scoop du jour ...................................................................................................................................................................................................... 115 Utiliser des pointeurs ............................................................................................................................................................................................... 115 Créer un pointeur ..................................................................................................................................................................................................... 118 À retenir absolument ............................................................................................................................................................................................... 119 Envoyer un pointeur à une fonction ......................................................................................................................................................................... 120 Une autre façon d'envoyer un pointeur à une fonction ............................................................................................................................................ 122 Qui a dit : "Un problème bien ennuyeux" ? ............................................................................................................................................................. 123 En résumé ............................................................................................................................................................................................................... 123 Les tableaux .................................................................................................................................................................. Sommaire 3/410 www.openclassrooms.com
  • 4. 124 Les tableaux dans la mémoire ................................................................................................................................................................................ 124 Définir un tableau .................................................................................................................................................................................................... 126 Les tableaux à taille dynamique .............................................................................................................................................................................. 127 Parcourir un tableau ................................................................................................................................................................................................ 128 Initialiser un tableau ................................................................................................................................................................................................ 128 Une autre façon d'initialiser ..................................................................................................................................................................................... 129 Passage de tableaux à une fonction ....................................................................................................................................................................... 130 Quelques exercices ! ............................................................................................................................................................................................... 132 En résumé ............................................................................................................................................................................................................... 133 Les chaînes de caractères ............................................................................................................................................ 133 Le type char ............................................................................................................................................................................................................. 133 Afficher un caractère ............................................................................................................................................................................................... 134 Les chaînes sont des tableaux de char ................................................................................................................................................................... 136 Création et initialisation de la chaîne ...................................................................................................................................................................... 138 Récupération d'une chaîne via un scanf ................................................................................................................................................................. 138 Fonctions de manipulation des chaînes .................................................................................................................................................................. 139 Pensez à inclure string.h ......................................................................................................................................................................................... 139 strlen : calculer la longueur d'une chaîne ................................................................................................................................................................ 140 strcpy : copier une chaîne dans une autre .............................................................................................................................................................. 142 strcat : concaténer 2 chaînes .................................................................................................................................................................................. 143 strcmp : comparer 2 chaînes ................................................................................................................................................................................... 144 strchr : rechercher un caractère .............................................................................................................................................................................. 145 strpbrk : premier caractère de la liste ...................................................................................................................................................................... 146 strstr : rechercher une chaîne dans une autre ........................................................................................................................................................ 147 sprintf : écrire dans une chaîne ............................................................................................................................................................................... 148 En résumé ............................................................................................................................................................................................................... 148 Le préprocesseur .......................................................................................................................................................... 149 Les include .............................................................................................................................................................................................................. 150 Les define ................................................................................................................................................................................................................ 152 Un define pour la taille des tableaux ....................................................................................................................................................................... 153 Calculs dans les define ........................................................................................................................................................................................... 153 Les constantes prédéfinies ..................................................................................................................................................................................... 153 Les définitions simples ............................................................................................................................................................................................ 154 Les macros .............................................................................................................................................................................................................. 154 Macro sans paramètres ........................................................................................................................................................................................... 155 Macro avec paramètres ........................................................................................................................................................................................... 157 Les conditions ......................................................................................................................................................................................................... 157 #ifdef, #ifndef ........................................................................................................................................................................................................... 158 #ifndef pour éviter les inclusions infinies ................................................................................................................................................................. 159 En résumé ............................................................................................................................................................................................................... 159 Créez vos propres types de variables ........................................................................................................................... 160 Définir une structure ................................................................................................................................................................................................ 160 Exemple de structure .............................................................................................................................................................................................. 161 Tableaux dans une structure ................................................................................................................................................................................... 162 Utilisation d'une structure ........................................................................................................................................................................................ 162 Le typedef ................................................................................................................................................................................................................ 163 Modifier les composantes de la structure ................................................................................................................................................................ 164 Initialiser une structure ............................................................................................................................................................................................ 165 Pointeur de structure ............................................................................................................................................................................................... 166 Envoi de la structure à une fonction ........................................................................................................................................................................ 167 Un raccourci pratique et très utilisé ......................................................................................................................................................................... 168 Les énumérations .................................................................................................................................................................................................... 168 Association de nombres aux valeurs ...................................................................................................................................................................... 169 Associer une valeur précise .................................................................................................................................................................................... 169 En résumé ............................................................................................................................................................................................................... 170 Lire et écrire dans des fichiers ...................................................................................................................................... 171 Ouvrir et fermer un fichier ........................................................................................................................................................................................ 171 fopen : ouverture du fichier ...................................................................................................................................................................................... 175 Tester l'ouverture du fichier ..................................................................................................................................................................................... 176 fclose : fermer le fichier ........................................................................................................................................................................................... 177 Différentes méthodes de lecture / écriture .............................................................................................................................................................. 177 Écrire dans le fichier ................................................................................................................................................................................................ 180 Lire dans un fichier .................................................................................................................................................................................................. 184 Se déplacer dans un fichier ..................................................................................................................................................................................... 184 ftell : position dans le fichier .................................................................................................................................................................................... 184 fseek : se positionner dans le fichier ....................................................................................................................................................................... 185 rewind : retour au début .......................................................................................................................................................................................... 186 Renommer et supprimer un fichier .......................................................................................................................................................................... 186 rename : renommer un fichier ................................................................................................................................................................................. 186 remove : supprimer un fichier .................................................................................................................................................................................. 187 L'allocation dynamique .................................................................................................................................................. 188 La taille des variables .............................................................................................................................................................................................. 190 Une nouvelle façon de voir la mémoire ................................................................................................................................................................... 193 Allocation de mémoire dynamique .......................................................................................................................................................................... 193 malloc : demande d'allocation de mémoire ............................................................................................................................................................. 194 Tester le pointeur ..................................................................................................................................................................................................... 194 free : libérer de la mémoire ..................................................................................................................................................................................... 195 Exemple concret d'utilisation ................................................................................................................................................................................... 196 Allocation dynamique d'un tableau .......................................................................................................................................................................... 198 En résumé ............................................................................................................................................................................................................... 199 TP : réalisation d'un Pendu ........................................................................................................................................... 199 Les consignes ......................................................................................................................................................................................................... Sommaire 4/410 www.openclassrooms.com
  • 5. 199 Déroulement d'une partie ........................................................................................................................................................................................ 202 Dictionnaire de mots ............................................................................................................................................................................................... 204 La solution (1 : le code du jeu) ................................................................................................................................................................................ 204 Analyse de la fonction main .................................................................................................................................................................................... 207 Analyse de la fonction gagne .................................................................................................................................................................................. 207 Analyse de la fonction rechercheLettre ................................................................................................................................................................... 208 La solution (2 : la gestion du dictionnaire) ............................................................................................................................................................... 209 Préparation des nouveaux fichiers .......................................................................................................................................................................... 209 La fonction piocherMot ............................................................................................................................................................................................ 211 La fonction nombreAleatoire .................................................................................................................................................................................... 212 Le fichier dico.h ....................................................................................................................................................................................................... 212 Le fichier dico.c ....................................................................................................................................................................................................... 213 Il va falloir modifier le main ! .................................................................................................................................................................................... 217 Idées d'amélioration ................................................................................................................................................................................................ 217 Télécharger le projet ............................................................................................................................................................................................... 217 Améliorez le Pendu ! ............................................................................................................................................................................................... 218 La saisie de texte sécurisée .......................................................................................................................................... 219 Les limites de la fonction scanf ............................................................................................................................................................................... 219 Entrer une chaîne de caractères avec des espaces ............................................................................................................................................... 220 Entrer une chaîne de caractères trop longue .......................................................................................................................................................... 221 Récupérer une chaîne de caractères ...................................................................................................................................................................... 221 La fonction fgets ...................................................................................................................................................................................................... 222 Créer sa propre fonction de saisie utilisant fgets .................................................................................................................................................... 227 Convertir la chaîne en nombre ................................................................................................................................................................................ 227 strtol : convertir une chaîne en long ........................................................................................................................................................................ 229 strtod : convertir une chaîne en double ................................................................................................................................................................... 229 En résumé ............................................................................................................................................................................................................... 230 Partie 3 : Création de jeux 2D en SDL ............................................................................................ 231 Installation de la SDL .................................................................................................................................................... 231 Pourquoi avoir choisi la SDL ? ................................................................................................................................................................................ 231 Choisir une bibliothèque : pas facile ! ..................................................................................................................................................................... 231 La SDL est un bon choix ! ....................................................................................................................................................................................... 232 Les possibilités offertes par la SDL ......................................................................................................................................................................... 233 Téléchargement de la SDL ...................................................................................................................................................................................... 234 Créer un projet SDL : Windows ............................................................................................................................................................................... 234 Création d'un projet SDL sous Code::Blocks .......................................................................................................................................................... 238 Création d'un projet SDL sous Visual C++ .............................................................................................................................................................. 240 Créer un projet SDL : Mac OS (Xcode) ................................................................................................................................................................... 244 Créer un projet SDL : Linux ..................................................................................................................................................................................... 245 En résumé ............................................................................................................................................................................................................... 246 Création d'une fenêtre et de surfaces ........................................................................................................................... 246 Charger et arrêter la SDL ........................................................................................................................................................................................ 246 SDL_Init : chargement de la SDL ............................................................................................................................................................................ 247 SDL_Quit : arrêt de la SDL ...................................................................................................................................................................................... 248 Canevas de programme SDL .................................................................................................................................................................................. 248 Gérer les erreurs ..................................................................................................................................................................................................... 249 Ouverture d'une fenêtre .......................................................................................................................................................................................... 250 Choix du mode vidéo .............................................................................................................................................................................................. 251 Mettre en pause le programme ............................................................................................................................................................................... 253 Changer le titre de la fenêtre ................................................................................................................................................................................... 255 Manipulation des surfaces ....................................................................................................................................................................................... 255 Votre première surface : l'écran .............................................................................................................................................................................. 257 Colorer une surface ................................................................................................................................................................................................. 261 Dessiner une nouvelle surface à l'écran ................................................................................................................................................................. 265 Centrer la surface à l'écran ..................................................................................................................................................................................... 266 Exercice : créer un dégradé .................................................................................................................................................................................... 267 Correction ! .............................................................................................................................................................................................................. 269 « Je veux des exercices pour m'entraîner ! » .......................................................................................................................................................... 269 En résumé ............................................................................................................................................................................................................... 269 Afficher des images ....................................................................................................................................................... 270 Charger une image BMP ......................................................................................................................................................................................... 270 Le format BMP ........................................................................................................................................................................................................ 270 Charger un Bitmap .................................................................................................................................................................................................. 272 Associer une icône à son application ...................................................................................................................................................................... 273 Gestion de la transparence ..................................................................................................................................................................................... 273 Le problème de la transparence ............................................................................................................................................................................. 275 Rendre une image transparente .............................................................................................................................................................................. 277 La transparence Alpha ............................................................................................................................................................................................ 279 Charger plus de formats d'image avec SDL_Image ................................................................................................................................................ 280 Installer SDL_image sous Windows ........................................................................................................................................................................ 282 Installer SDL_image sous Mac OS X ...................................................................................................................................................................... 282 Charger les images ................................................................................................................................................................................................. 284 En résumé ............................................................................................................................................................................................................... 284 La gestion des événements .......................................................................................................................................... 285 Le principe des événements ................................................................................................................................................................................... 285 La variable d'événement ......................................................................................................................................................................................... 286 La boucle des événements ..................................................................................................................................................................................... 286 Récupération de l'événement .................................................................................................................................................................................. 287 Analyse de l'événement .......................................................................................................................................................................................... 288 Le code complet ...................................................................................................................................................................................................... 289 Le clavier ................................................................................................................................................................................................................. 289 Les événements du clavier ..................................................................................................................................................................................... Sommaire 5/410 www.openclassrooms.com
  • 6. 289 Récupérer la touche ................................................................................................................................................................................................ 291 Exercice : diriger Zozor au clavier ........................................................................................................................................................................... 291 Charger l'image ....................................................................................................................................................................................................... 292 Schéma de la programmation événementielle ........................................................................................................................................................ 293 Traiter l'événement SDL_KEYDOWN ..................................................................................................................................................................... 295 Quelques optimisations ........................................................................................................................................................................................... 298 La souris .................................................................................................................................................................................................................. 299 Gérer les clics de la souris ...................................................................................................................................................................................... 301 Gérer le déplacement de la souris .......................................................................................................................................................................... 302 Quelques autres fonctions avec la souris ............................................................................................................................................................... 303 Les événements de la fenêtre ................................................................................................................................................................................. 303 Redimensionnement de la fenêtre .......................................................................................................................................................................... 303 Visibilité de la fenêtre .............................................................................................................................................................................................. 305 En résumé ............................................................................................................................................................................................................... 306 TP : Mario Sokoban ....................................................................................................................................................... 306 Cahier des charges du Sokoban ............................................................................................................................................................................. 306 À propos du Sokoban .............................................................................................................................................................................................. 307 Le cahier des charges ............................................................................................................................................................................................. 307 Récupérer les sprites du jeu ................................................................................................................................................................................... 309 Le main et les constantes ....................................................................................................................................................................................... 309 Les différents fichiers du projet ............................................................................................................................................................................... 309 Les constantes : constantes.h ................................................................................................................................................................................. 311 Le main : main.c ...................................................................................................................................................................................................... 312 Le jeu ....................................................................................................................................................................................................................... 312 Les paramètres envoyés à la fonction .................................................................................................................................................................... 313 Les déclarations de variables .................................................................................................................................................................................. 316 Initialisations ............................................................................................................................................................................................................ 318 La boucle principale ................................................................................................................................................................................................ 322 Fin de la fonction : déchargements ......................................................................................................................................................................... 322 La fonction deplacerJoueur ..................................................................................................................................................................................... 325 Chargement et enregistrement de niveaux ............................................................................................................................................................. 325 chargerNiveau ......................................................................................................................................................................................................... 327 sauvegarderNiveau ................................................................................................................................................................................................. 328 L'éditeur de niveaux ................................................................................................................................................................................................ 328 Initialisations ............................................................................................................................................................................................................ 329 La gestion des événements .................................................................................................................................................................................... 332 Blit time ! ................................................................................................................................................................................................................. 333 Résumé et améliorations ........................................................................................................................................................................................ 333 Alors résumons ! ..................................................................................................................................................................................................... 334 Améliorez ! .............................................................................................................................................................................................................. 335 Maîtrisez le temps ! ....................................................................................................................................................... 335 Le Delay et les Ticks ............................................................................................................................................................................................... 335 SDL_Delay .............................................................................................................................................................................................................. 336 SDL_GetTicks ......................................................................................................................................................................................................... 337 Utiliser SDL_GetTicks pour gérer le temps ............................................................................................................................................................. 342 Les timers ................................................................................................................................................................................................................ 342 Initialiser le système de timers ................................................................................................................................................................................ 342 Ajouter un timer ....................................................................................................................................................................................................... 344 En résumé ............................................................................................................................................................................................................... 345 Écrire du texte avec SDL_ttf ......................................................................................................................................... 346 Installer SDL_ttf ....................................................................................................................................................................................................... 346 Comment fonctionne SDL_ttf ? ............................................................................................................................................................................... 346 Installer SDL_ttf ....................................................................................................................................................................................................... 346 Configurer un projet pour SDL_ttf ........................................................................................................................................................................... 347 La documentation .................................................................................................................................................................................................... 347 Chargement de SDL_ttf ........................................................................................................................................................................................... 347 L'include .................................................................................................................................................................................................................. 347 Démarrage de SDL_ttf ............................................................................................................................................................................................ 348 Arrêt de SDL_ttf ....................................................................................................................................................................................................... 348 Chargement d'une police ........................................................................................................................................................................................ 350 Les différentes méthodes d'écriture ........................................................................................................................................................................ 352 Exemple d'écriture de texte en Blended .................................................................................................................................................................. 353 Code complet d'écriture de texte ............................................................................................................................................................................. 355 Attributs d'écriture du texte ...................................................................................................................................................................................... 356 Exercice : le compteur ............................................................................................................................................................................................. 359 En résumé ............................................................................................................................................................................................................... 360 Jouer du son avec FMOD ............................................................................................................................................. 360 Installer FMOD ........................................................................................................................................................................................................ 360 Pourquoi FMOD ? ................................................................................................................................................................................................... 360 Télécharger FMOD .................................................................................................................................................................................................. 361 Installer FMOD ........................................................................................................................................................................................................ 361 Initialiser et libérer un objet système ....................................................................................................................................................................... 361 Inclure le header ...................................................................................................................................................................................................... 362 Créer et initialiser un objet système ........................................................................................................................................................................ 363 Fermer et libérer un objet système .......................................................................................................................................................................... 363 Les sons courts ....................................................................................................................................................................................................... 363 Trouver des sons courts .......................................................................................................................................................................................... 364 Les étapes à suivre pour jouer un son .................................................................................................................................................................... 366 Exemple : un jeu de tir ............................................................................................................................................................................................ 369 Les musiques (MP3, OGG, WMA…) ....................................................................................................................................................................... 369 Trouver des musiques ............................................................................................................................................................................................. 370 Les étapes à suivre pour jouer une musique .......................................................................................................................................................... 372 Code complet de lecture du MP3 ............................................................................................................................................................................ Sommaire 6/410 www.openclassrooms.com
  • 7. 374 En résumé ............................................................................................................................................................................................................... 375 TP : visualisation spectrale du son ................................................................................................................................ 375 Les consignes ......................................................................................................................................................................................................... 375 1/ Lire un MP3 ......................................................................................................................................................................................................... 376 2/ Récupérer les données spectrales du son .......................................................................................................................................................... 378 4/ Réaliser le dégradé ............................................................................................................................................................................................. 379 La solution ............................................................................................................................................................................................................... 383 Idées d'amélioration ................................................................................................................................................................................................ 385 Partie 4 : Les structures de données .............................................................................................. 385 Les listes chaînées ........................................................................................................................................................ 385 Représentation d'une liste chaînée ......................................................................................................................................................................... 386 Construction d'une liste chaînée ............................................................................................................................................................................. 386 Un élément de la liste .............................................................................................................................................................................................. 386 La structure de contrôle ........................................................................................................................................................................................... 387 Le dernier élément de la liste .................................................................................................................................................................................. 388 Les fonctions de gestion de la liste ......................................................................................................................................................................... 388 Initialiser la liste ....................................................................................................................................................................................................... 389 Ajouter un élément .................................................................................................................................................................................................. 391 Supprimer un élément ............................................................................................................................................................................................. 392 Afficher la liste chaînée ........................................................................................................................................................................................... 393 Aller plus loin ........................................................................................................................................................................................................... 393 En résumé ............................................................................................................................................................................................................... 394 Les piles et les files ....................................................................................................................................................... 394 Les piles .................................................................................................................................................................................................................. 394 Fonctionnement des piles ....................................................................................................................................................................................... 396 Création d'un système de pile ................................................................................................................................................................................. 400 Les files ................................................................................................................................................................................................................... 400 Fonctionnement des files ........................................................................................................................................................................................ 400 Création d'un système de file .................................................................................................................................................................................. 402 À vous de jouer ! ..................................................................................................................................................................................................... 402 En résumé ............................................................................................................................................................................................................... 404 Les tables de hachage .................................................................................................................................................. 404 Pourquoi utiliser une table de hachage ? ................................................................................................................................................................ 404 Qu'est-ce qu'une table de hachage ? ...................................................................................................................................................................... 406 Écrire une fonction de hachage .............................................................................................................................................................................. 407 Gérer les collisions .................................................................................................................................................................................................. 408 L'adressage ouvert .................................................................................................................................................................................................. 408 Le chaînage ............................................................................................................................................................................................................. 408 En résumé ............................................................................................................................................................................................................... Lire aussi 7/410 www.openclassrooms.com
  • 8. Apprenez à programmer en C ! Par Mathieu Nebra (Mateo21) Mise à jour : 08/01/2013 Difficulté : Intermédiaire Durée d'étude : 2 mois, 15 jours 1 visites depuis 7 jours, classé 26/807 Vous aimeriez apprendre à programmer, mais vous ne savez pas par où commencer ? (autrement dit : vous en avez marre des cours trop compliqués que vous ne comprenez pas ? ) C'est votre jour de chance ! V ous venez de tomber sur un cours de programmation pour débutants, vraiment pour débutants. Il n'y a aucune honte à être débutant, tout le monde est passé par là, moi y compris. Ce qu'il vous faut est pourtant simple. Il faut qu'on vous explique tout, progressivement, depuis le début : Comment s'y prend-on pour créer des programmes comme des jeux, des fenêtres ? De quels logiciels a-t-on besoin pour programmer ? Dans quel langage commencer à programmer ? D'ailleurs, c'est quoi un langage ? Ce tutoriel est constitué de 2 parties théoriques sur le langage C (parties I et II) suivies d'une partie pratique (partie III) portant sur la bibliothèque SDL dans laquelle vous réutiliserez tout ce que vous avez appris pour créer des jeuxvidéo ! Exemples de réalisations tirés de la partie III sur la SDL Ce cours vous plaît ? Si vous avez aimé ce cours, vous pouvez retrouver le livre "Apprenez à programmer en C" du même auteur, en vente sur le Site du Zéro, en librairie et dans les boutiques en ligne comme Amazon.fr et FNAC.com. V ous y trouverez ce cours adapté au format papier avec une série de chapitres inédits. Plus d'informations Lire aussi 8/410 www.openclassrooms.com
  • 9. Partie 1 : Les bases de la programmation en C Vous avez dit programmer ? V ous avez déjà entendu parler de programmation et nul doute que si vous avez ce livre entre les mains, c'est parce que vous voulez « enfin » comprendre comment ça fonctionne. Mais programmer en langage C… ça veut dire quoi ? Est-ce que c'est bien pour commencer ? Est-ce que vous avez le niveau pour programmer ? Est-ce qu'on peut tout faire avec ? Ce chapitre a pour but de répondre à toutes ces questions apparemment bêtes et pourtant très importantes. Grâce à ces questions simples, vous saurez à la fin de ce premier chapitre ce qui vous attend. C'est quand même mieuxde savoir à quoi sert ce que vous allez apprendre, vous ne trouvez pas ? Programmer, c'est quoi ? On commence par la question la plus simple qui soit, la plus basique de toutes les questions basiques. Si vous avez l'impression de déjà savoir tout ça, je vous conseille de lire quand même, ça ne peut pas vous faire de mal ! Je pars de zéro pour ce cours, donc je vais devoir répondre à la question : Que signifie le mot « programmer » ? Programmer signifie réaliser des « programmes informatiques ». Les programmes demandent à l'ordinateur d'effectuer des actions. V otre ordinateur est rempli de programmes en tous genres : la calculatrice est un programme ; votre traitement de texte est un programme ; votre logiciel de « chat » est un programme ; les jeuxvidéo sont des programmes. Clone de Metal Slug réalisé par le membre joe78 En bref, les programmes sont partout et permettent de faire a priori tout et n'importe quoi sur un ordinateur. V ous pouvez inventer un logiciel de cryptage révolutionnaire si ça vous chante, ou réaliser un jeu de combat en 3D sur Internet, peu importe. V otre ordinateur peut tout faire (sauf le café, mais j'y travaille). Attention ! Je n'ai pas dit que réaliser un jeu vidéo se faisait en claquant des doigts. J'ai simplement dit que tout cela était Apprenez à programmer en C ! 9/410 www.openclassrooms.com
  • 10. possible, mais soyez sûrs que ça demande beaucoup de travail. Comme vous débutez, nous n'allons pas commencer en réalisant un jeu 3D. Ce serait suicidaire. Nous allons devoir passer par des programmes très simples. Une des premières choses que nous verrons est comment afficher un message à l'écran. Oui, je sais, ça n'a rien de transcendant, mais rien que ça croyez-moi, ce n'est pas aussi facile que ça en a l'air. Ça impressionne moins les amis, mais on va bien devoir passer par là. Petit à petit, vous apprendrez suffisamment de choses pour commencer à réaliser des programmes de plus en plus complexes. Le but de ce cours est que vous soyez capables de vous en sortir dans n'importe quel programme écrit en C. Mais tenez, au fait, vous savez ce que c'est vous, ce fameux« langage C » ? Programmer, dans quel langage ? V otre ordinateur est une machine bizarre, c'est le moins que l'on puisse dire. On ne peut s'adresser à lui qu'en lui envoyant des 0 et des 1.Ainsi, si je traduis « Fais le calcul 3 + 5 » en langage informatique, ça pourrait donner quelque chose comme (j'invente, je ne connais quand même pas la traduction informatique par cœur) : 0010110110010011010011110 Ce que vous voyez là, c'est le langage informatique de votre ordinateur, appelé langage binaire (retenez bien ce mot !). V otre ordinateur ne connaît que ce langage-là et, comme vous pouvez le constater, c'est absolument incompréhensible. Donc voilà notre premier vrai problème : Comment parler à l'ordinateur plus simplement qu'en binaire avec des 0 et des 1 ? V otre ordinateur ne parle pas l'anglais et encore moins le français. Pourtant, il est inconcevable d'écrire un programme en langage binaire. Même les informaticiens les plus fous ne le font pas, c'est vous dire ! Eh bien l'idée que les informaticiens ont eue, c'est d'inventer de nouveauxlangages qui seraient ensuite traduits en binaire pour l'ordinateur. Le plus dur à faire, c'est de réaliser le programme qui fait la « traduction ». Heureusement, ce programme a déjà été écrit par des informaticiens et nous n'aurons pas à le refaire (ouf !). On va au contraire s'en servir pour écrire des phrases comme : « Fais le calcul 3 + 5 » qui seront traduites par le programme de « traduction » en quelque chose comme : « 0010110110010011010011110 ». Le schéma suivante résume ce que je viens de vous expliquer. Un peu de vocabulaire Là j'ai parlé avec des mots simples, mais il faut savoir qu'en informatique il existe un mot pour chacune de ces choses-là. Tout au long de ce cours, vous allez d'ailleurs apprendre à utiliser un vocabulaire approprié. Non seulement vous aurez l'air de savoir de quoi vous parlez, mais si un jour (et ça arrivera) vous devez parler à un autre programmeur, vous saurez vous faire comprendre. Certes, les gens autour de vous vous regarderont comme si vous êtiez des extra-terrestres, mais ça il ne faudra pas y faire attention ! Reprenons le schéma que l'on vient de voir. La première case est « V otre programme est écrit dans un langage simplifié ». Ce fameux« langage simplifié » est appelé en fait langage de haut niveau. Il existe plusieurs niveauxde langages. Plus un langage est haut niveau, plus il est proche de votre vraie langue (comme le français). Un langage de haut niveau est donc facile à utiliser, mais cela a aussi quelques petits défauts comme nous le verrons Apprenez à programmer en C ! 10/410 www.openclassrooms.com