Déclarer une variable
On y arrive. Maintenant, créez un nouveau projet console que vous appellerez "variables".
On va voir comment déclarer une variable, c'est-à-dire demander à l'ordinateur la permission d'utiliser un peu de mémoire.
Une déclaration de variable, c'est très simple maintenant que vous savez tout ce qu'il faut
Il suffit d'indiquer dans l'ordre :
1. Le type de la variable que l'on veut créer
2. Tapez espace
3. Indiquez le nom que vous voulez donner à la variable
4. Et enfin n'oubliez pas le point-virgule
Par exemple, si je veux créer ma variable nombreDeVies de type int, je dois taper la ligne suivante :
Code : C
1
int nombreDeVies;
Et c'est tout !
Quelques autres exemples stupides pour la forme :
Code : C
1
2
3
int noteDeMaths;
double sommeArgentRecue;
unsigned int nombreDeZerosEnTrainDeLireUnNomDeVariableUnPeuLong;
Bon bref, vous avez compris le principe je pense
Ce qu'on fait là s'appelle une déclaration de variable (un vocabulaire à retenir là ^^ )
Vous
devez faire les déclarations de variables au début des fonctions. Comme
pour le moment on n'a qu'une seule fonction (la fonction main), vous
allez déclarer la variable comme ceci :
Code : C
1
2
3
4
5
6
7
8
9
10
11
#include
#include
int main(int argc, char *argv[]) // Equivalent de int main()
{
// Début de la fonction
int nombreDeVies;
return 0;
// Fin de la fonction
}
Si vous lancez le programme ci-dessus, vous constaterez avec stupeur... qu'il ne fait rien o_O
Quelques explications
Alors,
avant que vous ne m'étrangliez en croyant que je vous mène en bateau
depuis tout à l'heure, laissez-moi juste dire une chose pour ma défense
:p
En fait, il se passe des choses, mais vous ne les voyez pas.
Lorsque le programme arrive à la ligne de la déclaration de variable,
il demande bien gentiment à l'ordinateur s'il peut utiliser un peu
d'espace dans la mémoire vive.
Si tout va bien, l'ordinateur répond "Oui bien sûr, fais comme chez toi". Généralement, cela se passe sans problème.
Le
seul problème qu'il pourrait y avoir, c'est qu'il n'y ait plus de place
en mémoire... Mais cela arrive rarement heureusement, car pour remplir
toute la mémoire rien qu'avec des int il faut vraiment être un bourrin
de première ^^
Soyez sans craintes donc, vos variables devraient normalement être créées sans souci.
Une
petite astuce à connaître : si vous avez plusieurs variables du même
type à déclarer, inutile de faire une ligne pour chaque variable. Il
vous suffit de séparer les différents noms de variable par des virgules
sur la même ligne :
Code : C
1
int nombreDeVies, niveau, ageDuJoueur;
Cela créera 3 variables int appelées nombreDeVies, niveau et ageDuJoueur.
Et maintenant ?
Maintenant qu'on a créé notre variable, on va pouvoir lui donner une valeur
Affecter une valeur à une variable
C'est
tout ce qu'il y a de plus bête. Si vous voulez donner une valeur à la
variable nombreDeVies, il suffit de procéder comme ceci :
Code : C
1
nombreDeVies = 5;
Rien de plus à faire. Vous indiquez le nom de la variable, un signe égal, puis la valeur que vous voulez mettre dedans.
Ici, on vient de donner la valeur 5 à la variable nombreDeVies.
Notre programme complet ressemble donc à ceci :
Code : C
1
2
3
4
5
6
7
8
9
10
#include
#include
int main(int argc, char *argv[])
{
int nombreDeVies;
nombreDeVies = 5;
return 0;
}
Là encore, rien ne s'affiche à l'écran, tout se passe dans la mémoire.
Quelque
part dans les tréfonds de votre ordinateur, une petite case de mémoire
vient de prendre la valeur 5. C'est pas magnifique ça ?
Pour un peu on en pleurerait ^^
On peut s'amuser si on veut à changer la valeur par la suite :
Code : C
1
2
3
4
int nombreDeVies;
nombreDeVies = 5;
nombreDeVies = 4;
nombreDeVies = 3;
Dans
cet exemple, la variable va prendre d'abord la valeur 5, puis 4, et
enfin 3. Comme votre ordinateur est très rapide, tout cela se passe
extrêmement vite. Vous n'avez pas le temps de cligner des yeux que
votre variable vient de prendre les valeurs 5, 4 et 3... et ça y est
votre programme est fini :p
La valeur d'une nouvelle variable
Voici une question très importante que je veux vous soumettre :
Quand on déclare une variable, quelle valeur a-t-elle au départ ?
En effet, quand l'ordinateur lit cette ligne :
Code : C
1
int nombreDeVies;
Il
réserve un petit emplacement en mémoire, d'accord. Mais quelle est la
valeur de la variable à ce moment-là ? Y a-t-il une valeur par défaut
(par exemple 0) ?
Eh bien, accrochez-vous : la réponse est non.
Non non et non, il n'y a pas de valeur par défaut. En fait,
l'emplacement est réservé mais la valeur ne change pas. On n'efface pas
ce qui se trouve dans la "case mémoire". Du coup, votre variable prend
la valeur qui se trouvait là avant dans la mémoire, et cette valeur
peut être n'importe quoi !
Si cette zone de la mémoire n'a
jamais été modifiée, la valeur est peut-être 0. Mais vous n'en êtes pas
sûrs, il pourrait très bien y avoir le nombre 363 ou 18 à la place,
c'est-à-dire un reste d'un vieux programme qui est passé par là avant !
Il
faut donc faire très attention à ça si on veut éviter des problèmes par
la suite. Le mieux est d'initialiser la variable dès qu'on la déclare.
En C, c'est tout à fait possible. En gros, ça consiste à combiner la
déclaration et l'affectation d'une variable dans la même instruction :
Code : C
1
int nombreDeVies = 5;
Ici, la variable nombreDeVies est déclarée et elle prend tout de suite la valeur 5.
L'avantage, c'est que vous êtes sûrs après que cette variable contient une valeur correcte, et pas du n'importe quoi
Les constantes
Il
arrive parfois que l'on ait besoin d'utiliser une variable dont on
voudrait qu'elle garde la même valeur pendant toute la durée du
programme. C'est-à-dire qu'une fois déclarée, vous voudriez que votre
variable conserve sa valeur et que personne n'ait le droit de changer
ce qu'elle contient.
Ces variables particulières sont appelées constantes, justement parce que leur valeur reste constante.
Pour
déclarer une constante, c'est en fait très simple : il faut utiliser le
mot "const" juste devant le type quand vous déclarez votre variable.
Par
ailleurs, il faut obligatoirement lui donner une valeur au moment de sa
déclaration comme on vient d'apprendre à le faire. Après, il sera trop
tard : vous ne pourrez plus changer la valeur de la constante.
Exemple de déclaration de constante :
Code : C
1
const int NOMBRE_DE_VIES_INITIALES = 5;
Ce
n'est pas une obligation, mais par convention on écrit les noms des
constantes entièrement en majuscules comme je viens de le faire là.
Cela nous permet ainsi de distinguer facilement les constantes des
variables. Notez qu'on utilise l'underscore _ à la place de l'espace.
A part ça, une constante s'utilise comme une variable normale, vous pouvez afficher sa valeur si vous le désirez.
La
seule chose qui change, c'est que si vous essayez de modifier la valeur
de la constante plus loin dans le programme, le compilateur vous
indiquera qu'il y a une erreur avec cette constante.
Les erreurs de compilation sont affichées en bas de l'écran, dans ce que j'appelle la "zone de la mort", vous vous souvenez ? ^^
Dans
un tel cas, le compilateur vous afficherait un mot doux du genre :
[Warning] assignment of read-only variable ' NOMBRE_DE_VIES_INITIALES'
(traduction : "mais t'es vraiment idiot, pourquoi t'essaies de modifier
la valeur d'une constante ? o_O " )
Afficher le contenu d'une variable
On sait afficher du texte à l'écran avec la fonction printf.
Maintenant, on va voir comment afficher la valeur d'une variable avec cette même fonction.
On
utilise en fait printf de la même manière, sauf que l'on rajoute un
symbole spécial à l'endroit où on veut afficher la valeur de la
variable.
Par exemple :
Code : C
1
printf("Il vous reste %d vies");
Ce
"symbole spécial" dont je viens de vous parler est en fait un % suivi
de la lettre "d". Cette lettre permet d'indiquer ce que l'on doit
afficher. "d" signifie que c'est un nombre entier.
Il existe plusieurs autres possibilités, mais pour des raisons de simplicité on va se contenter de retenir ces deux-là :
Symbole Signification
%d Nombre entier (ex. : 4)
%f Nombre décimal (ex. : 5.18)
Je
vous parlerai des autres symboles en temps voulu. Pour le moment,
sachez que si vous voulez afficher un int vous devez utiliser %d, et
pour un double vous utiliserez %f.
On a presque fini. On a
indiqué qu'à un endroit précis on voulait afficher un nombre entier,
mais on n'a pas précisé lequel ! Il faut donc indiquer à la fonction
printf quelle est la variable dont on veut afficher la valeur.
Pour ce faire, vous devez taper le nom de la variable après les guillemets et après avoir rajouté une virgule, comme ceci :
Code : C
1
printf("Il vous reste %d vies", nombreDeVies);
Le %d sera remplacé par la variable indiquée après la virgule, à savoir nombreDeVies.
On se teste ça un petit coup dans un programme ?
Code : C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include
#include
int main(int argc, char *argv[])
{
int nombreDeVies = 5; // Au départ, le joueur a 5 vies
printf("Vous avez %d vies\\n", nombreDeVies);
printf("**** B A M ****\\n"); // Là il se prend un grand coup sur la tête
nombreDeVies = 4; // Il vient de perdre une vie !
printf("Ah desole, il ne vous reste plus que %d vies maintenant !\\n\\n", nombreDeVies);
return 0;
}
Ca pourrait presque être un jeu vidéo (il faut juste beaucoup d'imagination ^^ ).
Ce programme affiche ceci à l'écran :
Code : Console
Vous avez 5 vies
**** B A M ****
Ah desole, il ne vous reste plus que 4 vies maintenant !
Vous devriez reconnaître ce qui se passe dans votre programme :
1. Au départ le joueur a 5 vies, on affiche ça dans un printf
2. Ensuite le joueur prend un coup sur la tête (d'où le BAM)
3. Finalement il n'a plus que 4 vies, on affiche ça aussi avec un printf
Bref, c'est plutôt simple ^^
Afficher plusieurs variables dans un même printf
Il
est possible d'afficher la valeur de plusieurs variables dans un seul
printf. Il vous suffit pour cela d'indiquer des %d ou des %f là où vous
voulez, puis d'indiquer les variables correspondantes dans le même
ordre, séparées par des virgules.
Par exemple :
Code : C
1
printf("Vous avez %d vies et vous etes au niveau n°%d", nombreDeVies, niveau);
Veillez
à bien indiquer vos variables dans le bon ordre. Le premier %d sera
remplacé par la première variable (nombreDeVies), et le second %d par
la seconde variable (niveau). Si vous vous trompez d'ordre, votre
phrase ne voudra plus rien dire
Allez
un petit test maintenant. Notez que j'enlève les lignes tout en haut
(les directives de préprocesseur commençant par un #), je vais supposer
que vous les mettez à chaque fois maintenant :
Code : C
1
2
3
4
5
6
7
8
int main(int argc, char *argv[])
{
int nombreDeVies = 5, niveau = 1;
printf("Vous avez %d vies et vous etes au niveau n°%d\\n", nombreDeVies, niveau);
return 0;
}
Ce qui affichera :
Code : Console
Vous avez 5 vies et vous etes au niveau n°1
Récupérer une saisie
Les
variables vont en fait commencer à devenir intéressantes maintenant. On
va apprendre à demander à l'utilisateur de taper un nombre dans la
console. Ce nombre, on va le récupérer et le stocker dans une variable.
Une fois que ça sera fait, on pourra faire tout un tas de choses avec, vous verrez
Pour demander à l'utilisateur de rentrer quelque chose dans la console, on va utiliser une autre fonction toute prête : scanf
Cette
fonction ressemble beaucoup à printf. Vous devez mettre un %d pour
indiquer que l'utilisateur doit rentrer un nombre entier (pour les
décimaux je vais y revenir). Puis vous devez indiquer après le nom de
la variable qui va recevoir le nombre.
Voici comment faire par exemple :
Code : C
1
2
int age = 0;
scanf("%d", &age);
On doit mettre le %d entre guillemets.
Par ailleurs, il faut mettre le symbole & devant le nom de la variable qui va recevoir la valeur.
Euh, pourquoi mettre un & devant le nom de la variable o_O ?
Là,
il va falloir que vous me fassiez confiance. Si je dois vous expliquer
ça tout de suite, on n'est pas sortis de l'auberge croyez-moi ^^
Que
je vous rassure quand même : je vous expliquerai un peu plus tard ce
que signifie ce symbole. Pour le moment, je choisis de ne pas vous
l'expliquer pour ne pas vous embrouiller, c'est donc plutôt un service
que je vous rends là
Attention
: si vous voulez faire rentrer un nombre décimal (de type double),
cette fois il ne faut pas utiliser %f comme on pourrait s'y attendre
mais... %lf. C'est une petite différence avec le printf qui lui prenait
%f.
Code : C
1
2
double poids = 0;
scanf("%lf", &poids);
Revenons
à notre programme. Lorsque celui-ci arrive à un scanf, il se met en
pause et attend que l'utilisateur rentre un nombre. Ce nombre sera
stocké dans la variable "age".
Voici un petit programme simple qui demande l'âge de l'utilisateur et qui le lui affiche ensuite :
Code : C
1
2
3
4
5
6
7
8
9
10
int main(int argc, char *argv[])
{
int age = 0; // On initialise la variable à 0
printf("Quel age avez-vous ? ");
scanf("%d", &age); // On demande d'entrer l'age avec scanf
printf("Ah ! Vous avez donc %d ans !\\n\\n", age);
return 0;
}
Code : Console
Quel age avez-vous ? 20
Ah ! Vous avez donc 20 ans !
Le
programme se met donc en pause après avoir affiché la question "Quel
age avez-vous ?". Le curseur apparaît à l'écran, vous devez taper un
nombre entier (votre âge). Tapez ensuite sur Entrée pour valider, et le
programme continuera à s'exécuter.
Ici, tout ce qu'il fait après c'est afficher la valeur de la variable "age" à l'écran ("Ah ! Vous avez donc 20 ans !").
Voilà, vous avez compris le principe
Grâce
à la fonction scanf, on peut donc commencer à interagir avec
l'utilisateur, histoire de lui demander 2-3 informations privées :-°
Notez que rien ne vous empêche de taper autre chose qu'un nombre entier :
* Si vous rentrez un nombre décimal, comme 2.9, il sera automatiquement
tronqué, c'est-à-dire que seule la partie entière sera conservée. Dans
ce cas, c'est le nombre 2 qui aurait été stocké dans la variable.
*
Si vous tapez des lettres au hasard ("éèydf"), la variable ne changera
pas de valeur. Ce qui est bien ici, c'est qu'on avait initialisé notre
variable à 0 au début. Du coup, le programme affichera "0 ans" si ça
n'a pas marché. Si on n'avait pas initialisé la variable, le programme
aurait pu afficher n'importe quoi !
Jeu 28 Nov - 8:07 par arsenepoutsi
» CCNA version 4 français
Dim 31 Mar - 15:15 par kadhouceeee
» Trés important " Livre exercices en langage C ( claude delannoy) "
Jeu 27 Sep - 16:31 par latifa oustouh
» Ulead VideoStudio 11.5.0157.2 Plus + Crack Collection
Jeu 26 Avr - 9:51 par miloduvi
» Langage IDL(Interface Definition Language)
Mar 27 Sep - 13:02 par Abdelkhalek Bakkari
» demande cours PHP
Jeu 2 Juin - 11:23 par elasriahmed
» exemple page web réaliser avec du html et JavaScript
Lun 30 Mai - 4:05 par ouh.rouchan.zakaria
» cours group2_ 2année 2011
Dim 20 Mar - 15:35 par El Maligno Angelo
» Cours : Infrastructures Réseaux 2003 Server
Mar 15 Fév - 6:55 par jettjackson
» cours officiel de CCNA 2
Mar 18 Jan - 13:53 par agares