Les structures de contrôle - Opérateur conditionnel ternaire

Écrit par Jean-Michel CHRISOSTOME. Publié dans Blog

En complément des articles sur les bases de la programmation, voici une structure de contrôle particulière qui mérite qu'on s'y attarde et qui permet en quelque sorte d'attribuer un contenu conditionnel aux variable. Il s'agit de l'opérateur conditionnel ternaire. (Ternary operator in english)

Voici ce que cela donne d'un point de vue logique

ma_variable=(condition) ? Valeur si condition vrai:Valeur si condition fausse ;

Cela revient à écrire la structure suivante :
Si (condition est vrai) {
	ma_variable= valeur si condition vrai
}
Sinon {
	ma_variable= valeur si condition fausse
}
// La même en version courte
SI (condition) { ma_variable=valeur } SINON { ma_variable=valeur }

L'intérêt est double... Cela permet de gagner en lisibilité car le code de départ tient souvent en une seule ligne alors qu'une structure de contrôle if peut prendre souvent plus de place et demande de réécrire certaines portions de code plusieurs fois. Cela permet également de gagner quelques octets dans les scripts et programmes interprétés. Sur ces milliers de lignes et des millions de boucles, cela peut faire une différence conséquente.

Voici comment cet opérateur s'utilise en C

 
#define <stdio.h>
#define <stdlib.h>
 
int main(void) {
  int a=5 ;
  /* Si a est supérieur à 4, alors la valeur de b sera 6, sinon ce sera 2 */
  /* Dans le cas présent la valeur de b sera 6 */
  int b=(a > 4) ? 6:2 ;
}
 

En Javascript

 
var a=5 ;
var b=(a > 4) ? 'Attention !' :'Tout va bien' ;
console.log(b + ' Valeur = ' + a) ;  // Affichera : Attention ! Valeur = 5
 

En PHP

 
&lt ;?PHP
$a=4 ;
b=($a > 4) ? 'Alerte !' :'Ok' ;
 
echo "$b Valeur = $a" ;  // Affichera : Ok Valeur = 4
?&gt ;
 

En Perl

 
#!/usr/bin/perl
 
use strict;
 
my $a=5;
my $b=($a > 4) ? 'Alerte!':'Ok';
 
print $b." Valeur: $a\n";  # Affichera : Alerte! Valeur: 5