Jusqu'à présent, Authorware exécutait systématiquement chaque instruction de votre programme. Il ne vous était pas possible, si on reprend par exemple l'exercice 6.8, d'afficher alternativement un disque et un carré, car cela implique que l'instruction 'circle' ne soit exécutée qu'une fois sur deux en alternance avec l'instruction 'box'. Pour réaliser cela, vous pouvez dire à Authorware de n'exécuter une instruction que si une condition est vraie. La syntaxe est la suivante:
SI <condition> ALORS <instruction>
En anglais les termes 'SI... ALORS...' se traduisent par 'IF ... THEN'. Par exemple, la ligne ci-dessous déclenche un beep si le pourcentage de réponses correctes est inférieur à 20.
If PercentCorrect < 20 then beep ()
Si la variable PercentCorrect n'est pas inférieure à 20, l'instruction 'beep' ne sera simplement pas lue par Authorware. Une forme de condition un peu plus complexe permet de choisir entre deux instructions:
SI <condition > ALORS <instruction> SINON <instruction>
L'exemple ci-dessus comptabilise les réponses, en ajoutant 3 points au score de l'utilisateur qui répond en moins de 5 secondes et seulement un point s'il répond plus lentement. Notez la présence du 'end if' qui marque la fin de l'expression, de la même manière que le 'end repeat' marque la structure d'une boucle.
Reprenez le programme 6.8 et sauvez le sous 6.9. Modifiez la boucle de telle sorte que les éléments apparaissant sur la diagonale ne soient pas des disques noir mais des carrés blancs.
Attention, à l'examen, un étudiant sur trois commet l'erreur suivante: elle consiste à confondre une condition qui s'exprime par 'N = 2' et une affectation qui s'exprime par 'N := 2'. Il est vrai que les syntaxes sont fort similaires, mais le sens est complètement différent: une condition est une question. ('Est-ce que N est égal à 2?'), alors que l'affectation est un ordre ('Donnez à N la valeur 2'). En informatique, au lieu de question, on utilise le terme prédicat. Il désigne toute expression que le système peut évaluer, c'est-à-dire déterminer si cette expression est vraie ou fausse.
Les conditions plus complexes peuvent se construire par la conjonction (&), la disjonction (|) ou la négation (~) d'autre conditions.
N ≥>= 10 & N <= ≤ 20 N est-il compris entre 10 et 20?
N < 10 | N > 20 N est-il en dehors de l'intervalle 10-20?
~ (N = 5) N n'est pas égal à 5?
N <> 5 N est-il différent de 5?
(N≥ <= 10 & N≤ >= 20)|~(X>0) Est-ce que soit N est compris entre 10 et 20, soit X n'est pas
supérieur à 0?
Pour choisir entre plus de deux instructions, vous pouvez imbriquer des structures IF-THEN les unes dans les autres. Dans l'exemple ci-dessous la condition principale discrimine les scores supérieurs ou inférieurs à 50, ensuite chacune des autres conditions scinde à son tour l'intervalle considéré en deux parties. La figure 6.2 présente l'arbre de décision qui correspond à ces tests imbriqués.
if PercentCorrect < 20 then diagnostique := "Désespéré"