1 - Programmer en C

Telechargé par somdaaristide182
Apprenez à
programmer en C !
Par Mathieu Nebra (M@teo21)
www.siteduzero.com
Licence Creative Commons BY-NC-SA 2.0
Dernière mise à jour le 12/11/2012
Sommaire
2Sommaire ...........................................................................................................................................
6Lire aussi ............................................................................................................................................
8 Apprenez à programmer en C ! ..........................................................................................................
8Partie 1 : Les bases de la programmation en C ..................................................................................
9Vous avez dit programmer ? .............................................................................................................................................
9Programmer, c'est quoi ? ............................................................................................................................................................................................
10Programmer, dans quel langage ? ............................................................................................................................................................................
10Un peu de vocabulaire ..............................................................................................................................................................................................
11Pourquoi choisir d'apprendre le C ? ..........................................................................................................................................................................
12Programmer, c'est dur ? ............................................................................................................................................................................................
13Ayez les bons outils ! .......................................................................................................................................................
14Les outils nécessaires au programmeur ...................................................................................................................................................................
14Choisissez votre IDE .................................................................................................................................................................................................
15Code::Blocks (Windows, Mac OS, Linux) ..................................................................................................................................................................
15Télécharger Code::Blocks .........................................................................................................................................................................................
17Créer un nouveau projet ............................................................................................................................................................................................
19Visual C++ (Windows seulement) .............................................................................................................................................................................
20Installation .................................................................................................................................................................................................................
20Créer un nouveau projet ............................................................................................................................................................................................
23Ajouter un nouveau fichier source .............................................................................................................................................................................
24La fenêtre principale de Visual ..................................................................................................................................................................................
25Xcode (Mac OS seulement) ......................................................................................................................................................................................
25Xcode, où es-tu ? ......................................................................................................................................................................................................
25Lancement de Xcode ................................................................................................................................................................................................
26La fenêtre de développement ...................................................................................................................................................................................
27Ajouter un nouveau fichier ........................................................................................................................................................................................
28En résumé .................................................................................................................................................................................................................
28Votre premier programme ...............................................................................................................................................
29Console ou fenêtre ? .................................................................................................................................................................................................
29Les programmes en fenêtres ....................................................................................................................................................................................
29Les programmes en console .....................................................................................................................................................................................
31Un minimum de code ................................................................................................................................................................................................
31Demandez le code minimal à votre IDE ....................................................................................................................................................................
32Analysons le code minimal ........................................................................................................................................................................................
34Testons notre programme .........................................................................................................................................................................................
35Écrire un message à l'écran ......................................................................................................................................................................................
36Dis Bonjour au Monsieur ...........................................................................................................................................................................................
37Les caractères spéciaux ...........................................................................................................................................................................................
38Le syndrome de Gérard ............................................................................................................................................................................................
39Les commentaires, c'est très utile ! ...........................................................................................................................................................................
40Un monde de variables ...................................................................................................................................................
41Une affaire de mémoire .............................................................................................................................................................................................
41Les différents types de mémoire ...............................................................................................................................................................................
42La mémoire vive en photos .......................................................................................................................................................................................
43Le schéma de la mémoire vive .................................................................................................................................................................................
45Déclarer une variable ................................................................................................................................................................................................
45Donner un nom à ses variables ................................................................................................................................................................................
45Les types de variables ...............................................................................................................................................................................................
47Déclarer une variable ................................................................................................................................................................................................
48Affecter une valeur à une variable .............................................................................................................................................................................
49La valeur d'une nouvelle variable ..............................................................................................................................................................................
50Les constantes ..........................................................................................................................................................................................................
50Afficher le contenu d'une variable .............................................................................................................................................................................
52Afficher plusieurs variables dans un même printf .....................................................................................................................................................
52Récupérer une saisie ................................................................................................................................................................................................
54Une bête de calcul ...........................................................................................................................................................
55Les calculs de base ...................................................................................................................................................................................................
56La division .................................................................................................................................................................................................................
57Le modulo .................................................................................................................................................................................................................
57Des calculs entre variables .......................................................................................................................................................................................
59Les raccourcis ...........................................................................................................................................................................................................
59L'incrémentation ........................................................................................................................................................................................................
59La décrémentation ....................................................................................................................................................................................................
60Les autres raccourcis ................................................................................................................................................................................................
60La bibliothèque mathématique ..................................................................................................................................................................................
61fabs ............................................................................................................................................................................................................................
62ceil .............................................................................................................................................................................................................................
62floor ...........................................................................................................................................................................................................................
62pow ............................................................................................................................................................................................................................
62sqrt ............................................................................................................................................................................................................................
62sin, cos, tan ...............................................................................................................................................................................................................
63asin, acos, atan .........................................................................................................................................................................................................
63exp .............................................................................................................................................................................................................................
63log ..............................................................................................................................................................................................................................
63log10 ..........................................................................................................................................................................................................................
2/399
www.siteduzero.com
63En résumé .................................................................................................................................................................................................................
63Les conditions .................................................................................................................................................................
64La condition if... else .................................................................................................................................................................................................
64Quelques symboles à connaître ................................................................................................................................................................................
64Un if simple ...............................................................................................................................................................................................................
66Le else pour dire « sinon » ........................................................................................................................................................................................
67Le else if pour dire « sinon si » .................................................................................................................................................................................
67Plusieurs conditions à la fois .....................................................................................................................................................................................
68Quelques erreurs courantes de débutant ..................................................................................................................................................................
69Les booléens, le coeur des conditions ......................................................................................................................................................................
69Quelques petits tests pour bien comprendre ............................................................................................................................................................
70Des explications s'imposent ......................................................................................................................................................................................
70Un test avec une variable ..........................................................................................................................................................................................
71Cette variable majeur est un booléen .......................................................................................................................................................................
71Les booléens dans les conditions .............................................................................................................................................................................
72La condition switch ....................................................................................................................................................................................................
72Construire un switch ..................................................................................................................................................................................................
73Gérer un menu avec un switch ..................................................................................................................................................................................
75Les ternaires : des conditions condensées ...............................................................................................................................................................
75Une condition if... else bien connue ..........................................................................................................................................................................
75La même condition en ternaire ..................................................................................................................................................................................
76En résumé .................................................................................................................................................................................................................
77Les boucles .....................................................................................................................................................................
77Qu'est-ce qu'une boucle ? .........................................................................................................................................................................................
77La boucle while ..........................................................................................................................................................................................................
79Attention aux boucles infinies ....................................................................................................................................................................................
80La boucle do… while .................................................................................................................................................................................................
80La boucle for ..............................................................................................................................................................................................................
81En résumé .................................................................................................................................................................................................................
81TP : Plus ou Moins, votre premier jeu .............................................................................................................................
82Préparatifs et conseils ...............................................................................................................................................................................................
82Le principe du programme ........................................................................................................................................................................................
82Tirer un nombre au sort .............................................................................................................................................................................................
83Les bibliothèques à inclure ........................................................................................................................................................................................
83J'en ai assez dit ! .......................................................................................................................................................................................................
84Correction ! ................................................................................................................................................................................................................
84La correction de « Plus ou Moins » ...........................................................................................................................................................................
84Exécutable et sources ...............................................................................................................................................................................................
85Explications ...............................................................................................................................................................................................................
85Idées d'amélioration ..................................................................................................................................................................................................
86Les fonctions ...................................................................................................................................................................
87Créer et appeler une fonction ....................................................................................................................................................................................
88Schéma d'une fonction ..............................................................................................................................................................................................
88Créer une fonction .....................................................................................................................................................................................................
89Plusieurs paramètres, aucun paramètre ...................................................................................................................................................................
90Appeler une fonction .................................................................................................................................................................................................
93Des exemples pour bien comprendre .......................................................................................................................................................................
93Conversion euros / francs .........................................................................................................................................................................................
94La punition .................................................................................................................................................................................................................
95Aire d'un rectangle ....................................................................................................................................................................................................
96Un menu ....................................................................................................................................................................................................................
97En résumé .................................................................................................................................................................................................................
98Partie 2 : Techniques « avancées » du langage C ............................................................................
98La programmation modulaire ..........................................................................................................................................
98Les prototypes ...........................................................................................................................................................................................................
98Le prototype pour annoncer une fonction ..................................................................................................................................................................
99Les headers ...............................................................................................................................................................................................................
99Plusieurs fichiers par projet .......................................................................................................................................................................................
100Fichiers .h et .c ........................................................................................................................................................................................................
103Les include des bibliothèques standard ..................................................................................................................................................................
104La compilation séparée ...........................................................................................................................................................................................
106La portée des fonctions et variables .......................................................................................................................................................................
106Les variables propres aux fonctions ........................................................................................................................................................................
107Les variables globales : à éviter ..............................................................................................................................................................................
108Variable statique à une fonction ..............................................................................................................................................................................
109Les fonctions locales à un fichier ............................................................................................................................................................................
109En résumé ...............................................................................................................................................................................................................
111À l'assaut des pointeurs .................................................................................................................................................
111Un problème bien ennuyeux ....................................................................................................................................................................................
112La mémoire, une question d'adresse ......................................................................................................................................................................
112Rappel des faits .......................................................................................................................................................................................................
113Adresse et valeur .....................................................................................................................................................................................................
114Le scoop du jour ......................................................................................................................................................................................................
115Utiliser des pointeurs ...............................................................................................................................................................................................
115Créer un pointeur .....................................................................................................................................................................................................
118À retenir absolument ...............................................................................................................................................................................................
119Envoyer un pointeur à une fonction .........................................................................................................................................................................
120Une autre façon d'envoyer un pointeur à une fonction ............................................................................................................................................
122Qui a dit : "Un problème bien ennuyeux" ? .............................................................................................................................................................
123En résumé ...............................................................................................................................................................................................................
123Les tableaux ..................................................................................................................................................................
Sommaire 3/399
www.siteduzero.com
124Les tableaux dans la mémoire ................................................................................................................................................................................
124Définir un tableau ....................................................................................................................................................................................................
126Les tableaux à taille dynamique ..............................................................................................................................................................................
127Parcourir un tableau ................................................................................................................................................................................................
128Initialiser un tableau ................................................................................................................................................................................................
128Une autre façon d'initialiser .....................................................................................................................................................................................
129Passage de tableaux à une fonction .......................................................................................................................................................................
130Quelques exercices ! ...............................................................................................................................................................................................
132En résumé ...............................................................................................................................................................................................................
132Les chaînes de caractères ............................................................................................................................................
133Le type char .............................................................................................................................................................................................................
133Afficher un caractère ...............................................................................................................................................................................................
134Les chaînes sont des tableaux de char ...................................................................................................................................................................
136Création et initialisation de la chaîne ......................................................................................................................................................................
138Récupération d'une chaîne via un scanf .................................................................................................................................................................
138Fonctions de manipulation des chaînes ..................................................................................................................................................................
139Pensez à inclure string.h .........................................................................................................................................................................................
139strlen : calculer la longueur d'une chaîne ................................................................................................................................................................
140strcpy : copier une chaîne dans une autre ..............................................................................................................................................................
142strcat : concaténer 2 chaînes ..................................................................................................................................................................................
143strcmp : comparer 2 chaînes ...................................................................................................................................................................................
144strchr : rechercher un caractère ..............................................................................................................................................................................
145strpbrk : premier caractère de la liste ......................................................................................................................................................................
146strstr : rechercher une chaîne dans une autre ........................................................................................................................................................
147sprintf : écrire dans une chaîne ...............................................................................................................................................................................
148En résumé ...............................................................................................................................................................................................................
148Le préprocesseur ..........................................................................................................................................................
149Les include ..............................................................................................................................................................................................................
150Les define ................................................................................................................................................................................................................
152Un define pour la taille des tableaux .......................................................................................................................................................................
153Calculs dans les define ...........................................................................................................................................................................................
153Les constantes prédéfinies .....................................................................................................................................................................................
153Les définitions simples ............................................................................................................................................................................................
154Les macros ..............................................................................................................................................................................................................
154Macro sans paramètres ...........................................................................................................................................................................................
155Macro avec paramètres ...........................................................................................................................................................................................
157Les conditions .........................................................................................................................................................................................................
157#ifdef, #ifndef ...........................................................................................................................................................................................................
158#ifndef pour éviter les inclusions infinies .................................................................................................................................................................
159En résumé ...............................................................................................................................................................................................................
160Créez vos propres types de variables ...........................................................................................................................
160Définir une structure ................................................................................................................................................................................................
160Exemple de structure ..............................................................................................................................................................................................
161Tableaux dans une structure ...................................................................................................................................................................................
162Utilisation d'une structure ........................................................................................................................................................................................
162Le typedef ................................................................................................................................................................................................................
163Modifier les composantes de la structure ................................................................................................................................................................
164Initialiser une structure ............................................................................................................................................................................................
165Pointeur de structure ...............................................................................................................................................................................................
166Envoi de la structure à une fonction ........................................................................................................................................................................
167Un raccourci pratique et très utilisé .........................................................................................................................................................................
168Les énumérations ....................................................................................................................................................................................................
169Association de nombres aux valeurs ......................................................................................................................................................................
169Associer une valeur précise ....................................................................................................................................................................................
169En résumé ...............................................................................................................................................................................................................
170Lire et écrire dans des fichiers ......................................................................................................................................
171Ouvrir et fermer un fichier ........................................................................................................................................................................................
171fopen : ouverture du fichier ......................................................................................................................................................................................
175Tester l'ouverture du fichier .....................................................................................................................................................................................
176fclose : fermer le fichier ...........................................................................................................................................................................................
177Différentes méthodes de lecture / écriture ..............................................................................................................................................................
177Écrire dans le fichier ................................................................................................................................................................................................
180Lire dans un fichier ..................................................................................................................................................................................................
184Se déplacer dans un fichier .....................................................................................................................................................................................
184ftell : position dans le fichier ....................................................................................................................................................................................
184fseek : se positionner dans le fichier .......................................................................................................................................................................
185rewind : retour au début ..........................................................................................................................................................................................
185Renommer et supprimer un fichier ..........................................................................................................................................................................
186rename : renommer un fichier .................................................................................................................................................................................
186remove : supprimer un fichier ..................................................................................................................................................................................
187L'allocation dynamique ..................................................................................................................................................
188La taille des variables ..............................................................................................................................................................................................
190Une nouvelle façon de voir la mémoire ...................................................................................................................................................................
193Allocation de mémoire dynamique ..........................................................................................................................................................................
193malloc : demande d'allocation de mémoire .............................................................................................................................................................
194Tester le pointeur .....................................................................................................................................................................................................
194free : libérer de la mémoire .....................................................................................................................................................................................
195Exemple concret d'utilisation ...................................................................................................................................................................................
196Allocation dynamique d'un tableau ..........................................................................................................................................................................
198En résumé ...............................................................................................................................................................................................................
199TP : réalisation d'un Pendu ...........................................................................................................................................
199Les consignes .........................................................................................................................................................................................................
Sommaire 4/399
www.siteduzero.com
199Déroulement d'une partie ........................................................................................................................................................................................
202Dictionnaire de mots ...............................................................................................................................................................................................
204La solution (1 : le code du jeu) ................................................................................................................................................................................
204Analyse de la fonction main ....................................................................................................................................................................................
207Analyse de la fonction gagne ..................................................................................................................................................................................
207Analyse de la fonction rechercheLettre ...................................................................................................................................................................
208La solution (2 : la gestion du dictionnaire) ...............................................................................................................................................................
209Préparation des nouveaux fichiers ..........................................................................................................................................................................
209La fonction piocherMot ............................................................................................................................................................................................
211La fonction nombreAleatoire ....................................................................................................................................................................................
212Le fichier dico.h .......................................................................................................................................................................................................
212Le fichier dico.c .......................................................................................................................................................................................................
213Il va falloir modifier le main ! ....................................................................................................................................................................................
217Idées d'amélioration ................................................................................................................................................................................................
217Télécharger le projet ...............................................................................................................................................................................................
217Améliorez le Pendu ! ...............................................................................................................................................................................................
218La saisie de texte sécurisée ..........................................................................................................................................
219Les limites de la fonction scanf ...............................................................................................................................................................................
219Entrer une chaîne de caractères avec des espaces ...............................................................................................................................................
220Entrer une chaîne de caractères trop longue ..........................................................................................................................................................
221Récupérer une chaîne de caractères ......................................................................................................................................................................
221La fonction fgets ......................................................................................................................................................................................................
222Créer sa propre fonction de saisie utilisant fgets ....................................................................................................................................................
227Convertir la chaîne en nombre ................................................................................................................................................................................
227strtol : convertir une chaîne en long ........................................................................................................................................................................
229strtod : convertir une chaîne en double ...................................................................................................................................................................
229En résumé ...............................................................................................................................................................................................................
230Partie 3 : Création de jeux 2D en SDL ............................................................................................
231Installation de la SDL ....................................................................................................................................................
231Pourquoi avoir choisi la SDL ? ................................................................................................................................................................................
231Choisir une bibliothèque : pas facile ! .....................................................................................................................................................................
231La SDL est un bon choix ! .......................................................................................................................................................................................
232Les possibilités offertes par la SDL .........................................................................................................................................................................
233Téléchargement de la SDL ......................................................................................................................................................................................
234En résumé ...............................................................................................................................................................................................................
234Création d'une fenêtre et de surfaces ...........................................................................................................................
235Charger et arrêter la SDL ........................................................................................................................................................................................
235SDL_Init : chargement de la SDL ............................................................................................................................................................................
236SDL_Quit : arrêt de la SDL ......................................................................................................................................................................................
237Canevas de programme SDL ..................................................................................................................................................................................
237Gérer les erreurs .....................................................................................................................................................................................................
238Ouverture d'une fenêtre ..........................................................................................................................................................................................
239Choix du mode vidéo ..............................................................................................................................................................................................
240Mettre en pause le programme ...............................................................................................................................................................................
242Changer le titre de la fenêtre ...................................................................................................................................................................................
244Manipulation des surfaces .......................................................................................................................................................................................
244Votre première surface : l'écran ..............................................................................................................................................................................
245Colorer une surface .................................................................................................................................................................................................
250Dessiner une nouvelle surface à l'écran .................................................................................................................................................................
254Centrer la surface à l'écran .....................................................................................................................................................................................
255Exercice : créer un dégradé ....................................................................................................................................................................................
256Correction ! ..............................................................................................................................................................................................................
258« Je veux des exercices pour m'entraîner ! » ..........................................................................................................................................................
258En résumé ...............................................................................................................................................................................................................
258Afficher des images .......................................................................................................................................................
259Charger une image BMP .........................................................................................................................................................................................
259Le format BMP ........................................................................................................................................................................................................
259Charger un Bitmap ..................................................................................................................................................................................................
261Associer une icône à son application ......................................................................................................................................................................
262Gestion de la transparence .....................................................................................................................................................................................
262Le problème de la transparence .............................................................................................................................................................................
264Rendre une image transparente ..............................................................................................................................................................................
266La transparence Alpha ............................................................................................................................................................................................
268Charger plus de formats d'image avec SDL_Image ................................................................................................................................................
269Installer SDL_image sous Windows ........................................................................................................................................................................
270Installer SDL_image sous Mac OS X ......................................................................................................................................................................
271Charger les images .................................................................................................................................................................................................
273En résumé ...............................................................................................................................................................................................................
273La gestion des événements ..........................................................................................................................................
274Le principe des événements ...................................................................................................................................................................................
274La variable d'événement .........................................................................................................................................................................................
275La boucle des événements .....................................................................................................................................................................................
275Récupération de l'événement ..................................................................................................................................................................................
276Analyse de l'événement ..........................................................................................................................................................................................
277Le code complet ......................................................................................................................................................................................................
278Le clavier .................................................................................................................................................................................................................
278Les événements du clavier .....................................................................................................................................................................................
278Récupérer la touche ................................................................................................................................................................................................
280Exercice : diriger Zozor au clavier ...........................................................................................................................................................................
280Charger l'image .......................................................................................................................................................................................................
281Schéma de la programmation événementielle ........................................................................................................................................................
282Traiter l'événement SDL_KEYDOWN .....................................................................................................................................................................
Sommaire 5/399
www.siteduzero.com
1 / 398 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !