Partie I

TwitterFacebook
Get flash to fully experience Pearltrees
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 jeux vidéo ! 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 . Vous y trouverez ce cours adapté au format papier avec une série de chapitres inédits. Pourquoi ne pas apprendre le C++ ? http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html

Apprenez à programmer en C !

Un monde de variables

Croyez-moi, cette petite introduction sur la mémoire va nous être plus utile que vous ne le pensez. Maintenant que vous savez ce qu'il faut, on peut retourner programmer On dit qu'elle est "variable" car c'est une valeur qui peut changer pendant le déroulement du programme. http://www.siteduzero.com/tutoriel-3-13940-un-monde-de-variables.html
Il faut savoir qu'en plus de n'être qu'une vulgaire calculatrice, votre ordinateur est une calculatrice très basique puisqu'on ne peut faire que des opérations très simples : Si vous voulez faire des opérations plus compliquées (des carrés, des puissances, des logarithmes et autres joyeusetés) il vous faudra les programmer, c'est-à-dire expliquer à l'ordinateur comment le faire . Fort heureusement, nous verrons plus loin dans ce chapitre qu'il existe une bibliothèque mathématique livrée avec le langage C qui contient plein de fonctions mathématiques toutes prêtes. http://www.siteduzero.com/tutoriel-3-13948-une-bete-de-calcul.html

Une bête de calcul

Les conditions servent à "tester" des variables . On peut par exemple dire "Si la variable machin est égale à 50, fais ceci"... Mais ce serait dommage de ne pouvoir tester que l'égalité ! Il faudrait aussi pouvoir tester si la variable est inférieure à 50, inférieure ou égale à 50, supérieure, supérieure ou égale... http://www.siteduzero.com/tutoriel-3-13956-les-conditions.html

Les conditions

while ( /* Condition */ ) { // Instructions à répéter } C'est aussi simple que cela While signifie "Tant que". On dit donc à l'ordinateur " Tant que la condition est vraie : répète les instructions entre accolades ". Je vous propose de faire un test simple : on va demander à l'utilisateur de taper le nombre 47. Tant qu'il n'a pas tapé le nombre 47, on recommence à lui demander le nombre.

Les boucles

http://www.siteduzero.com/tutoriel-3-13968-les-boucles.html#ss_part_3
Nous avons vu dans les tous premiers chapitres qu'un programme en C commençait par une fonction appelée "main". Je vous avais d'ailleurs même fait un schéma récapitulatif, pour vous rappeler quelques mots de vocabulaire. Attendez que je retrouve ce schéma En haut, les directives de préprocesseur (un nom barbare sur lequel on reviendra d'ailleurs). http://www.siteduzero.com/tutoriel-3-13982-les-fonctions.html

Les fonctions

La programmation modulaire

Dans la pratique, vos programmes ne seront pas tous écrits dans ce même fichier main.c. Bien sûr, c'est possible de le faire, mais ce n'est jamais très pratique de se balader dans un fichier de 10000 lignes (enfin personnellement je trouve ). Non, vous avez pas déjà oublié ? Bon allez je vous le réexplique, parce qu'il est important qu'on soit bien d'accord entre nous là http://www.siteduzero.com/tutoriel-3-13993-la-programmation-modulaire.html
Quelle que soit la réponse, je vous recommande très vivement d'aller relire la première partie de ce chapitre, intitulée "Une affaire de mémoire". Bien entendu, je ne peux pas vous obliger à le faire, mais ne venez pas pleurnicher ensuite en me disant que vous ne comprenez rien La première ligne représente la "cellule" du tout début de la mémoire vive. Chaque cellule a un numéro, c'est son adresse (hyper important le vocabulaire là !). La mémoire comporte un grand nombre d'adresses, commençant à l'adresse numéro 0 et se terminant à l'adresse numéro (insérez un très grand nombre ici) . Votre mémoire n'est faite que pour stocker des nombres.

A l'assaut des pointeurs

http://www.siteduzero.com/tutoriel-3-14005-a-l-assaut-des-pointeurs.html
Supposons que je veuille maintenant afficher les valeurs de chaque case du tableau. Je pourrais faire autant de printf qu'il n'y a de cases. Mais bon, c'est répétitif, un peu lourd, et imaginez le bazar si le tableau contenait 8000 nombres int main ( int argc , char * argv []) { int tableau [ 4 ], i = 0 ; tableau [ 0 ] = 10 ; tableau [ 1 ] = 23 ; tableau [ 2 ] = 505 ; tableau [ 3 ] = 8 ; for ( i = 0 ; i Code : Console - Sélectionner http://www.siteduzero.com/tutoriel-3-14015-les-tableaux.html#ss_part_4

Les tableaux

Déclaration Un tableau de tableaux (appelé tableau à plusieurs dimensions) se déclare par précision de la taille de chaque "dimension". Si par exemple je souhaite déclarer un tableau "tridimensionnel" alors je ferais ainsi : http://www.siteduzero.com/tutoriel-3-321485-tableaux-pointeurs-et-allocation-dynamique.html

Tableaux, pointeurs et allocation dynamique

Les chaînes de caractères

Les chaînes de caractères sont, vous vous en doutez, fréquemment utilisées. Tous les mots, tous les textes que vous voyez à votre écran sont en fait des tableaux de char en mémoire qui fonctionnent de la manière que je viens de vous expliquer (ah on ne voit plus son ordinateur de la même façon du coup hein ? ) Afin de nous aider un peu à manipuler les chaînes, on nous fournit dans la bibliothèque string.h une pléthore de fonctions dédiées aux calculs sur des chaînes. Je ne peux pas vraiment toutes vous les présenter ici, ce serait un peu long et elles ne sont pas toutes forcément indispensables. Je vais me contenter de vous parler des principales dont vous aurez très certainement besoin dans peu de temps, ce qui fait déjà pas mal
Attention, malgré les apparences (notamment le nom que l'on a l'habitude de mettre en majuscules) c'est très différent des constantes que nous avons étudiées jusqu'ici, telles que : const int NOMBRE_VIES_INITIALES = 3 ; Les constantes occupaient de la place en mémoire. Même si la valeur ne changeait pas, votre nombre "3" était stocké quelque part dans la mémoire. Ce n'est pas le cas des constantes de préprocesseur

Le préprocesseur

Une macro peut être redéfinie autre part dans le programme à la seule condition que celle-ci soit exactement pareille, seul quelques espaces peuvent être rajoutés. Exemple : Notez que les parenthèses sont très importantes dans les macros dues à la priorité des opérateurs. Certaines peuvent être omises, d'autres non. Pour être sûr de ne pas avoir de mauvaise surprise je vous conseille d'abuser des parenthèses pour ne laisser aucune ambiguïté possible ! Il faut faire très attention aux effets de bords.

Le préprocesseur

Créez vos propres types de variables !

Maintenant que notre structure est définie dans le .h, on va pouvoir l'utiliser dans une fonction de notre fichier .c. Voici comment créer une variable de type Coordonnees (la structure qu'on a définie plus haut) : Code : C - Sélectionner

Lire et écrire dans des fichiers

Pour lire et écrire dans des fichiers, nous allons nous servir de fonctions situées dans la bibliothèque stdio que nous avons déjà utilisée. Oui, cette bibliothèque-là contient aussi les fonctions printf et scanf que nous avons longuement utilisées jusqu'ici ! Mais elle ne contient pas que ça : il y a aussi d'autres fonctions, notamment des fonctions faites pour travailler sur des fichiers. Toutes les bibliothèques que je vous ai fait utiliser jusqu'ici (stdlib.h, stdio.h, math.h, string.h...) sont ce qu'on appelle des bibliothèques standard .