< Les opérateurs binaires | TutoCFrench | Les itérations >
Notions :
if
else
switch
?:
Dans la vie, on a souvent besoin de décider du déroulement des choses en fonction de certaines conditions. Par exemple : "Si il pleut, je prend mon parapluie" (ceci n'a d'ailleurs de sens que si je souhaite sortir !). De mêmen en C, il est possible de décider de n'exécuter une action que si une condition particulière est remplie.
if
L'instruction if
est l'instruction de base pour n'exécuter une action que si une condition est vraie. \\
La syntaxe est la suivante :
if (
condition)
;
Pour effectuer plusieurs instructions, on les regroupe grâce aux accolades {}
:
if (
condition)
{
;
;
}
Attention, on ne met pas de ;
après l'accolade fermante !
Pour tester si une condition est vraie, on dispose d'opérateurs de comparaison :
a == b
, teste si a et b ont la même valeur
a != b
, teste si a et b sont différents
a < b
, teste si a est strictement inférieur à b
a <= b
, teste si a est inférieur ou égal à b
a >= b
, teste si a est supérieur ou égal à b
a > b
, teste si a est strictement supérieur à b
Quelques exemples :
if (n>20) printf("Vous avez droit au tarif de groupe\n");
if (a == 3) printf("a vaut 3\n");
Des opérateurs logiques permettent de combiner différentes comparaisons :
!
, négation
||
, ou logique
&&
, et logique
Par exemple :
if (a == 1 && n > 3) a++;
if (!majeur && !accompagne) { printf("Les mineurs doivent être accompagnés !\n"); return 1; }
Attention à ne pas confondre :
=
et l'opérateur de comparaison ==
Nous avons vu la syntaxe :
if (
condition)
;
D'une façon plus générale, une condition est une expression qui renvoie :
Et d'une façon plus générale encore, la condition testée peut être n'importe quelle expression. Cette expression est évaluée et :
La condition suivante est donc toujours vraie :
if (1) printf("toujours vrai\n");
Et au contraire :
if (0) printf("ce message n'est jamais affiché\n");
Autre exemple :
if (a) b = 1/a; /* execute que si a est different de 0 */
else
L'instruction else
permet d'exécuter une instruction au cas ou la condition est fausse. C'est l'équivalent du "sinon" (exemple : "si il fait beau, je vais au zoo, sinon je vais au cinéma") :
if (
condition)
;
else
;
Exemple :
if(choix == 'o' || choix == 'O') printf("On va au cinema.\n"); else printf("On va au zoo.\n");
switch
Cette instruction est plus pratique que l'usage de if
et else
dans le cas de choix multiples :
switch (
expression) {
case
constante :
instructions;
case
constante :
instructions;
default :
instructions;
}
Exemple :
switch (choix) { case 't' : printf("vous voulez un triangle"); break; case 'c' : printf("vous voulez un carre"); break; case 'r' : printf("vous voulez un rectangle"); break; default : printf("erreur. recommencez !"); }
Attention, l'instruction break
est indispensable pour sortir du switch
. Si on l'oublie, une fois le branchement effectué, toutes les instructions qui suivent sont exécutées.
?:
Il s'agit en réalité d'un opérateur qui teste une condition et qui renvoie la valeur de la première expression si la condition est vraie ou de la seconde expression si c'est faux :
(
condition)?(
instruction_si_vrai):(
instruction_si_faux);
Exemple :
c = a < b ? 1 : 0; /* si a<b est vrai, on met 1 dans 'c' */
Mais on aurait pu aussi bien écrire :
if (a<b) c = 1; else c = 0;
%
&
#include <stdio.h> int main() { int a; scanf("%d", &a); if (a<18) printf("Trop jeune\n"); else printf("Peut voter\n"); return 0; }
#include <stdio.h> int main() { int a; scanf("%d", &a); if (a % 2 == 0) printf("%d est divisible par 2\n", a); else printf("%d n'est pas divisible par 2\n", a); return 0; }
#include <stdio.h> int main() { int a; scanf("%d", &a); if ((a&1) == 0) printf("%d est divisible par 2\n", a); else printf("%d n'est pas divisible par 2\n", a); return 0; }