Souvent les problèmes nécessitent l’étude de plusieurs situations qui ne peuvent pas être traitées par les séquences d’actions simples. Puisqu’on a plusieurs situations, et qu’avant l’exécution, on ne sait pas à quel cas de figure on aura à exécuter, dans l’algorithme on doit prévoir tous les cas possibles.

Ce sont les structures conditionnelles qui le permettent, en se basant sur ce qu’on appelle prédicat ou condition.

 

L’instruction « if »

L’instruction if évalue une expression logique et exécute un groupe d’instructions lorsque l’expression logique est vraie.

Les instructions facultatives elseif et else permettent d’imbriquer des boucles conditionnelles supplémentaires. L’instruction end, clôture la structure conditionnelle if.

if conditions
  instruction (si les conditions sont vérifiées)
elseif conditions
  instruction (si les conditions ne sont pas vérifiées)
end

 

L’exemple suivant permet de vérifier si un entier naturel donné n est pair ou impair.

function pair_impair (n)
if rem (n,2) == 0
  disp ('nombre pair')
else
  disp ('nombre impair')
end

 

L’exécution donne :

>> pair_impair(2)
nombre pair

>> pair_impair(5)
nombre impar
  • rem :    retourne le reste de la division de deux nombre,
  • disp :     afficher le message spécifié sous forme d’une chaine de caractères.

 

L’instruction « switch » et « case »

L’instruction switch exécute un groupe d’instructions relatives à la valeur prise par une variable. Les instructions case et otherwise délimitent les groupes.

Le end est obligatoire à la fin de la structure.

switch variable_de_choix
  case constante 1
    séquence d’instructions 1
  case constante 2
    séquence d’instructions 2
  …
  case constante N
    séquence d’instructions N
  otherwise 
    séquence d’instructions par défaut
end

 

Ci-dessous, un exemple de programme qui affiche un texte en fonction de la valeur de nombre.

function exemple_switch(nombre)
switch nombre
    case -1
        disp('valeur négative un');
    case 0
        disp('valeur zéro');
    case 1
        disp('valeur positive un');
    otherwise
        disp('Autre valeur');
end

 

L’exécution donne :

>> exemple_switch(1)
valeur positive un

>> exemple_switch(0)
valeur zéro

>> exemple_switch(3)
Autre valeur