4. Traitement conditionnel

On appelle traitement conditionnel, une portion de code qui n'est pas exécutée systématiquement, c'est-à-dire des instructions dont l'exécution est conditionnée par le succès d'un test.

4-1. if()

Principe

En algorithmique un traitement conditionnel se rédige de la sorte:

si(condition) alors

  instruction

FinSi

Si la condition est vérifiée, alors les instructions sont exécutés, sinon, elles ne sont pas exécutées. L'exécution de l'algorithme se poursuit en ignorant les instructions se trouvant entre le "alors" et le "Finsi". Un traitement conditionnel se code de la sorte, en C:

if(condition)
{
  instruction;
}

Notez bien qu'il n'y a pas de point-virgule après la parenthèse du if.

Comparaisons

La formulation d'une condition se fait souvent à l'aide des opérateurs de comparaison. Les opérateurs de comparaison disponibles sont:

  • == : égalité;
  • != : non-égalité (différent);
  • <, <=, :inférieur à, inférieur ou égal à;
  • >, >= : supérieur à, supérieur ou égal à;

Par exemple, la condition a==b est vérifiée si et seulement si a et b ont la même valeur au moment où le test est évalué.

#include < stdio.h >
main()
{
int n ;
  printf ("Entrer un nombre: ");
  scanf("%d", &n);
  if(i==0)
   printf ("Vous avez saisi une valeur nulle !");
}

4-2. if()....else

Il existe une forme étendue de traitement conditionnel, on la note en algorithmique de la façon suivante:

si(condition) alors
  instruction
sinon
  instruction
FinSi

Les instructions délimitées par "alors" et "sinon" sont exécutées si le test est vérifié, et les instructions délimitées par sinon et Finsi sont exécutées si le test n'est pas vérifié. On traduit cela, en C, comme suit:

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

Connecteurs logiques

On formule des conditions davantage élaborées en utilisant des connecteurs logiques "et" et "ou". La condition A et B est vérifiée si les deux conditions A et B sont vérifiées simultanément. La condition A ou B est vérifiée si au moins une de ces deux conditions A et B est vérifiée. Le "et" s'écrit && et le "ou" s'écrit || en C.

Voici un programme C qui nous donne le signe de a*b sans les multiplier.

#include < stdio.h >
main()
{
int a , b;
  printf ("Entrer a: ");
  scanf("%d", &a);
  printf ("Entrer b: ");
  scanf("%d", &b);
if((a<0 && b<0) || (a>0 && b>0))
   printf("Le produit de %d et %d est positif", a, b);
else if(a==0 || b==0)
   printf("Le produit de %d et %d est nul", a, b);
else
   printf("Le produit de %d et %d est negatif", a, b);
}

Résultat

Résultat du programme précédent