else if
On va pouvoir simplifier le code précédent grâce à la règle suivante :
Lorsque le bloc du else
contient lui-même une structure if
, on peut enlever les délimiteurs du bloc begin
et end
. Dans ce cas, il faut aussi enlever le point-virgule terminant le bloc imbriqué.
Enlevons donc le begin
et le end
, ainsi que le point-virgule après le print_string "autre valeur"
:
let x = read_int() in if x = 4 then print_string "égal 4" else if x = 8 then print_string "égal 8" else print_string "autre valeur" ;
Dans un tel cas, afin de mettre en valeur la symétrie entre les trois cas possibles, on présentera le code de la manière suivante :
let x = read_int() in if x = 4 then print_string "égal 4" else if x = 8 then print_string "égal 8" else print_string "autre valeur" ;
On appelle cela une structure if
avec des else if
. Généralisons ce principe.
Voici une structure avec des else if
:
if (...1ere condition...) then (...bloc du 1er then...) else if (...2ème condition...) then (...bloc du 2eme then...) else if (...3ème condition...) then (...bloc du 3eme then...) ... ... else ( ...bloc du else...) ;
Remarques : on peut mettre autant de else if
que l'on souhaite, le dernier else
pouvant être enlevé si le bloc associé est vide, et la réduction des blocs contenant une seule instruction fonctionne toujours.
Fonctionnement de la structure if
avec des else if
:
if
.then
juste après,else if
qui suit et on recommence à appliquerif
n'a été réalisée, alorselse
. Ce bloc peut être implicite, et dans un tel
cas on ne fait rien.