vignette|Diagramme de flux de Si
En informatique, une instruction conditionnelle, (aussi appelé expression conditionnelle), est une fonction d'un langage de programmation, qui effectue différents calculs ou actions, en fonction de l'évaluation d'une condition booléenne, à savoir vraie ou fausse.
Dans les langages de programmation impératifs, le terme « instruction conditionnelle » est souvent utilisé, alors qu'en programmation fonctionnelle, le terme « expression conditionnelle » est préféré, parce que ces termes ont tous une signification distincte.
vignette|Un organigramme de programmation de « Si-alors-sinon » (If–then–else en anglais)|gauche
La structure si–alors (parfois appelé si–alors–sinon) est commune à de nombreux langages de programmation. Bien que la syntaxe varie quelque peu selon le langage, la structure de base (sous forme de pseudocode) ressemble à ceci :
If (condition booléenne) Then
(conséquent)
Else
(alternative)
End If
Quand un interprète trouve un Si, il attend une condition booléenne – par exemple, x > 0, ce qui signifie « la variable x contient un nombre qui est supérieur à zéro » – et évalue cette condition. Si la condition est vraie, les instructions suivant le alors sont exécutées. Dans le cas contraire, l'exécution se poursuit jusqu'au branchement suivant – soit au niveau du block sinon (qui est usuellement optionnelle), ou s'il n'y a pas de branchement sinon, alors après le fin Si.
Après qu'un branchement a été exécuté, le contrôle revient au point après fin Si.
Dans les premiers langages de programmation, en particulier certains dialectes du BASIC des ordinateurs personnels des années 1980, une instruction si–alors pouvait seulement contenir des instructions GOTO. Cela a conduit à un style de programmation difficile à lire, connue sous le nom de programmation spaghetti, avec des programmes de ce style appelé code spaghetti. En conséquence, la programmation structurée, qui admet (virtuellement) les instructions arbitraires à l'intérieur d'une instruction si, gagne en popularité, jusqu'à ce qu'elle devienne la norme dans la plupart des programmes en BASIC.