______________leon n4: Commandes If, Then, Else, End_________________

Cette leon est un gros moreau pour la programmation. J'espre que mes explications vont tre claires.

Ces 4 commandes sont lies entre elles mais il n'est pas toujours ncessaires d'utiliser les 4  chaque fois.
Voici dj les diffrentes possibilits d'utilisation:

If        If          If
          Then        Then
          End         Else
                      End

La fonction If permet de comparer 2 valeurs ou variables entre elles. Si  cette comparaison vous ne mettez qu'une seule ligne de programme, If suffit, par contre si pour une condition il dcoule plus d'une ligne de programme, vous devez utiliser Then puis End aprs vos lignes concernant la condition. La fonction Else permet d'excuter les lignes entre Else et End si la condition initiale de la fonction If n'est pas vrifie.

Ce sera peut tre plus clai avec un exemple

:ClrHome
:Input E                ; demande une valeur pour E
:If E=10                ; si E=10, dpart d'une boucle
:Then                   ; alors
:ClrHome
:Output(5,4,"E=")       ; affiche E=  l'cran
:Output(5,6,E)          ; affiche la valeur de E
:End                    ; termine la boucle de If
:Stop

Pour ce programme les lignes entre Then et End ne sont excuter que si E=10 sinon la boucle est saute et le programme continue aprs la boucle, l il s'arrte car aprs la fin de boucle il y a Stop.

Autre exemple avec Else:

:ClrHome
:Input E                ; demande une valeur pour E
:If E=10                ; si E=10, dpart d'une boucle
:Then                   ; alors
:ClrHome
:Output(5,4,"E=")       ; affiche E=  l'cran
:Output(5,6,E)          ; affiche la valeur de E
:Else                   ; sinon
:Disp E                 ; affiche la valeur de E
:End                    ; termine la boucle 
:Stop

Si E=10 seul les lignes entre Then et Else seront excutes si E est diffrent de 10, seul les lignes entre Else et End seront excutes.
Ca va c'est comprhensible, non ?

Dernier exemple avec If 'tout seul'

:ClrHome
:Input C
:If C>50                ; si C est suprieur  50
:Disp C                 ; alors affiche la valeur de c
:Stop

La ligne Disp C n'est excute que si votre saisie pour C est suprieure  50 sinon le programme passe  la ligne suivante
Par contre si vous tapez

:ClrHome
:Prompt B,C             ; demande une valeur pour B puis pour C (cette syntaxe ne s'applique pas  la fonction Input !!)
:If C>50                ; si C est suprieur  50
:Disp C                 ; alors affiche la valeur de C
:If B>20                ; si B>20
:Disp B                 ; alors affiche la valaur de B
:Disp C                 ; affiche la valeur de C
:Stop

L'avant dernire ligne du programme est de toute faon excuter car si B n'est pas suprieur  20, le programme saute une seule ligne car il n'y a pas de fonction Then et donc il excute la ligne suivante qui est Disp C. Si C est suprieur  50 et b est suprieur  20 le programme affichera la valeur de C puis B et  nouveau C. Si C est infrieur  50, le programme n'affichera que la valeur de B puis la valeur de C, juste la premire ligne pour afficher C ne sera pas excuter.

Pour terminer sachez que l'on peut imbriquer plusieurs fonctions If les unes dans les autres.
Exemple:

...                     ; vous mettez ce que vous voulez
:If A>10                ; si A>10 (boucle 1)
:Then                   ; alors
:If B=3                 ; si B=3 (boucle 2)
:Then                   ; alors
:ClrHome
:Disp A*B               ; affiche la valeur de A*B
:End                    ; fin de la deuxime boucle
:End                    ; fin de la premire boucle

Attention la premire boucle est la dernire  tre ferme donc vous pouvez rajouter des lignes entre les 2 End, ces lignes seront excutes si la premire condition est vrifie. Par contre si la premire condition n'est pas vrifie, la deuxime ne sera pas teste mme si la elle est vraie les lignes de programmes lui correspondantes ne seront pas excutes.

Voil pour ces 4 commandes. Vous pouvez galement comparer 2 variables entre elles, en les ayant dfinies en amont dans le programme.
Dans la prochaine leon nous verrons les oprateurs logiques. 
