print · rss · source

< Les opérateurs binaires | TutoCFrench | Les itérations >


Les branchements conditionnels

Notions :

  • if
  • else
  • opérateurs de comparaison
  • opérateurs logiques
  • 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.

L'instruction 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)
instruction;

Pour effectuer plusieurs instructions, on les regroupe grâce aux accolades {} :

if (condition)
{
instruction;
...
instruction;
}

Attention, on ne met pas de ; après l'accolade fermante !

Tester si une condition est vrai

Les opérateurs de comparaison

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");

Les opérateurs logiques

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;
}

Quelques pièges à éviter

Attention à ne pas confondre :

  • l'opérateur d'affectation = et l'opérateur de comparaison ==
  • les opérateurs logiques avec les opérateurs binaires

Notion avancée

Nous avons vu la syntaxe :

if (condition)
instruction;

D'une façon plus générale, une condition est une expression qui renvoie :

  • 1 si elle est vraie
  • 0 si elle est fausse

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 :

  • si a valeur renvoyée est !=0, la condition est vraie
  • si la valeur renvoyée est 0, la condition est fausse

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 */

L'instruction 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)
instruction;
else
autre instruction;

Exemple :

if(choix == 'o' || choix == 'O')
    printf("On va au cinema.\n");
else
    printf("On va au zoo.\n");

L'instruction 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.

Un opérateur très particulier ?:

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;

Exercices

  1. "vote.c" : programme qui demande l'âge de la personne. Si la personne a au moins 18 ans, alors on affiche "peut voter", sinon, on affiche "ne peut pas voter"
  2. "div2_a.c" : programme qui indique si un nombre est divisible par 2 en utilisant l'opérateur modulo %
  3. "div2_b.c" : programme qui indique si un nombre est divisible par 2 en utilisant l'opérateur binaire &

Solutions

vote.c

#include <stdio.h>

int main()
{
    int a;

    scanf("%d", &a);
    if (a<18)
        printf("Trop jeune\n");
    else
        printf("Peut voter\n");

    return 0;
}

div2_a.c

#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;
}

div2_b.c

#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;
}

< Les opérateurs binaires | TutoCFrench | Les itérations >

print · rss · source
Page last modified on January 31, 2008, at 11:44 AM