1)La condition "if... else":
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...Ne vous inquiétez pas, le C a tout prévu.
(mais vous n'en doutiez pas hein)
Pour étudier les conditions "if... else", nous allons suivre le plan suivant :
- Quelques symboles à connaître avant de commencer
- Le test if
- Le test else
- Le test "else if"
- Plusieurs conditions à la fois
- Quelques erreurs courantes à éviter
Quelques symboles à connaître
Voici un petit tableau de symboles du langage C à connaître par coeur.Symbole | Signification |
---|---|
== | Est égal à |
> | Est supérieur à |
< | Est inférieur à |
>= | Est supérieur ou égal à |
<= | Est inférieur ou égal à |
!= | Est différent de |
Faites très attention, il y a bien 2 symboles "=" pour tester l'égalité. Une erreur courante que font les débutants est de ne mettre qu'un symbole =, ce qui n'a pas la même signification en C. Je vous en reparlerai un peu plus bas.
Un if simple
Attaquons maintenant sans plus tarder.
Nous allons faire un test simple, qui va dire à l'ordinateur :
Citation : Test simple
SI la variable vaut ça
ALORS fais ceci
ALORS fais ceci
En anglais, le mot "si" se traduit par "if". C'est celui qu'on utilise en langage C pour introduire une condition.
Ecrivez donc un if. Ouvrez ensuite des parenthèses : à l'intérieur de ces parenthèses vous devrez écrire votre condition.
Ensuite, ouvrez une accolade { et fermez-la un peu plus loin }. Tout ce qui se trouve à l'intérieur des accolades sera exécuté uniquement si la condition est vérifiée.
Cela nous donne donc à écrire :
Code : C
1 2 3 4 | if (/* Votre condition */) { // Instructions à exécuter si la condition est vraie } |
A la place de mon commentaire "Votre condition", on va écrire une condition pour tester une variable.
Par exemple, on pourrait tester une variable "age" qui contient votre âge. Tenez pour s'entraîner, on va tester si vous êtes majeur, c'est-à-dire si votre âge est supérieur ou égal à 18 :
Code : C
1 2 3 4 | if (age >= 18) { printf ("Vous etes majeur !"); } |
Le symbole >= signifie "Supérieur ou égal", comme on l'a vu dans le tableau tout à l'heure.
S'il n'y a qu'une instruction entre les accolades, alors celles-ci deviennent facultatives. Vous pouvez donc écrire :
Code : C
1 2 | if (age >= 18) printf ("Vous etes majeur !"); |
Tester ce code
Si vous voulez tester les codes précédents pour voir comment le if fonctionne, il faudra placer le if à l'intérieur d'une fonction main et ne pas oublier de déclarer une variable age à laquelle on donnera la valeur de notre choix.Ca peut paraître évident pour certains, mais apparemment ça ne l'était pas pour tout le monde aussi ai-je rajouté cette explication.
Voici un code complet que vous pouvez tester :
Code : C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int age = 20; if (age >= 18) { printf ("Vous etes majeur !\n"); } return 0; } |
Ici, la variable age vaut 20, donc le "Vous êtes majeur !" s'affichera.
Essayez de changer la valeur initiale de la variable pour voir. Mettez par exemple 15 : la condition sera fausse, et donc "Vous êtes majeur !" ne s'affichera pas cette fois.
Servez-vous de ce code de base pour tester les prochains exemples du chapitre.
Une question de propreté
La façon dont vous ouvrez les accolades n'est pas importante, votre programme marchera aussi bien si vous écrivez tout sur une même ligne. Par exemple :Code : C
1 | if (age >= 18) { printf ("Vous etes majeur !"); } |
Pourtant, même si c'est possible d'écrire comme ça, c'est ultra déconseillé (notez que quand j'écris plus gros, en gras rouge souligné, c'est généralement parce que c'est vraiment important )
En effet, tout écrire sur une même ligne rend votre code difficilement lisible. Si vous ne prenez pas dès maintenant l'habitude d'aérer votre code, plus tard quand vous écrirez de plus gros programmes vous ne vous y retrouverez plus !
Essayez donc de présenter votre code source de la même façon que moi : une accolade sur une ligne, puis vos instructions (précédées d'une tabulation pour les "décaler vers la droite"), puis l'accolade de fermeture sur une ligne.
Il existe plusieurs bonnes façons de présenter son code source. Ca ne change rien au fonctionnement du programme final, mais c'est une question de "style informatique" si vous voulez.
Si vous voyez un code de quelqu'un d'autre présenté un peu différemment, c'est qu'il code avec un style différent. Le principal, c'est que son code reste aéré et lisible.
Le "else" pour dire "sinon"
Maintenant que nous savons faire un test simple, allons un peu plus loin : si le test n'a pas marché (il est faux), on va dire à l'ordinateur d'exécuter d'autres instructions.En français, nous allons donc écrire quelque chose qui ressemble à cela :
Citation : Test avec sinon
SI la variable vaut ça
ALORS fais ceci
SINON fais cela
ALORS fais ceci
SINON fais cela
Il suffit de rajouter le mot else après l'accolade fermante du if.
Petit exemple :
Code : C
1 2 3 4 5 6 7 8 | if (age >= 18) // Si l'âge est supérieur ou égal à 18 { printf ("Vous etes majeur !"); } else // Sinon... { printf ("Ah c'est bete, vous etes mineur !"); } |
Les choses sont assez simples : si la variable age est supérieure ou égale à 18, on affiche le message "Vous êtes majeur !", sinon on affiche "Vous êtes mineur".
Le "else if" pour dire "sinon si"
On a vu comment faire un "si" et un "sinon". Il est possible aussi de faire un "sinon si" pour faire un autre test si le premier test n'a pas marché. Le "sinon si" se met entre le if et le else.On dit dans ce cas à l'ordinateur :
Citation : Avec un sinon si
SI la variable vaut ça ALORS fais ceci
SINON SI la variable vaut ça ALORS fais ça
SINON fais cela
SINON SI la variable vaut ça ALORS fais ça
SINON fais cela
Traduction en langage C :
Code : C
1
2
3
4
5
6
7
8
9
10
11
12 | if (age >= 18) // Si l'âge est supérieur ou égal à 18 { printf ("Vous etes majeur !"); } else if ( age > 4 ) // Sinon, si l'âge est au moins supérieur à 4 { printf ("Bon t'es pas trop jeune quand meme..."); } else // Sinon... { printf ("Aga gaa aga gaaa gaaa"); } |
L'ordinateur fait les tests dans l'ordre :
- D'abord il teste le premier if : si la condition est vraie, alors il exécute ce qui se trouve entre les premières accolades.
- Sinon, il va au "sinon si" et fait à nouveau un test : si ce test est vrai, alors il exécute les instructions correspondantes entre accolades.
- Enfin, si aucun des tests précédents n'a marché, il exécute les instructions du "sinon".
Le "else" et le "else if" ne sont pas obligatoires. Pour faire une condition, il faut juste au moins un "if" (logique me direz-vous, sinon il n'y a pas de condition !)
Notez qu'on peut mettre autant de "else if" que l'on veut. On peut donc écrire :
Notez qu'on peut mettre autant de "else if" que l'on veut. On peut donc écrire :
Citation : Plusieurs else if
SI la variable vaut ça
ALORS fais ceci
SINON SI la variable vaut ça ALORS fais ça
SINON SI la variable vaut ça ALORS fais ça
SINON SI la variable vaut ça ALORS fais ça
SINON fais cela
ALORS fais ceci
SINON SI la variable vaut ça ALORS fais ça
SINON SI la variable vaut ça ALORS fais ça
SINON SI la variable vaut ça ALORS fais ça
SINON fais cela
Plusieurs conditions à la fois
Il peut aussi être utile de faire plusieurs tests à la fois dans votre if. Par exemple, vous voudriez tester si l'âge est supérieur à 18 ET si l'âge est inférieur à 25.Pour faire cela, il va falloir utiliser de nouveaux symboles :
&& | ET |
|| | OU |
! | NON |
Test ET
Si on veut faire le test que j'ai mentionné plus haut, il faudra écrire :Code : C
1 | if (age > 18 && age < 25) |
Les deux symboles "&&" signifient ET. Notre condition se dirait en français : "Si l'âge est supérieur à 18 ET si l'âge est inférieur à 25"
Test OU
Pour faire un OU, on utilise les 2 signes ||. Je dois avouer que ce signe n'est pas facilement accessible sur nos claviers. Pour le taper sur un clavier AZERTY français, il faudra faire Alt Gr + 6. Sur un clavier belge, il faudra faire Alt Gr + &.Imaginons un programme débile qui décide si une personne a le droit d'ouvrir un compte en banque. C'est bien connu, pour ouvrir un compte en banque il vaut mieux ne pas être trop jeune (on va dire arbitrairement qu'il faut avoir au moins 30 ans) ou bien avoir plein d'argent (parce que là même à 10 ans on vous acceptera à bras ouverts)
Notre test pour savoir si le client a le droit d'ouvrir un compte en banque pourrait être :
Code : C
1 2 3 4 5 6 7 8 | if (age > 30 || argent > 100000) { printf("Bienvenue chez PicsouBanque !"); } else { printf("Hors de ma vue, miserable !"); } |
Ce test n'est valide que si la personne a plus de 30 ans ou si elle possède plus de 100 000 euros.
Test NON
Le dernier symbole qu'il nous reste à tester est le point d'exclamation. En informatique, le point d'exclamation signifie "Non".Vous devez mettre ce signe avant votre condition pour dire "Si cela n'est pas vrai" :
Code : C
1 | if (!(age < 18)) |
Cela pourrait se traduire par "Si la personne n'est pas mineure".
Si on avait enlevé le "!" devant, cela aurait signifié l'inverse : "Si la personne est mineure".
Quelques erreurs courantes de débutant
N'oubliez pas les 2 signes ==
Si on veut tester si la personne a tout juste 18 ans, il faudra écrire :Code : C
1 2 3 4 | if (age == 18) { printf ("Vous venez de devenir majeur !"); } |
N'oubliez pas de mettre 2 signes "égal" dans un if, comme ceci : ==
Si vous ne mettez qu'un seul signe =, alors votre variable prendra la valeur 18 (comme on l'a appris dans le chapitre sur les variables). Nous ce qu'on veut faire ici, c'est tester la valeur de la variable, pas la changer ! Faites très attention à cela, beaucoup d'entre vous n'en mettent qu'un quand ils débutent et forcément... leur programme ne marche pas comme ils voudraient.
Le point-virgule de trop
Une autre erreur courante de débutant : vous mettez parfois un point-virgule à la fin de la ligne d'un if. Or, un if est une condition, et on ne met de point-virgule qu'à la fin d'une instruction et non d'une condition.
Le code suivant ne marchera pas comme prévu car il y a un point-virgule à la fin du if :
Code : C
1 2 3 4 | if (age == 18); // Notez le point-virgule ici qui ne devrait PAS être là { printf ("Tu es tout juste majeur"); } |