Tutoriel 05
Conditions et branchements
Nouvelles commandes :
> If = Introduit un test [PRGM] [1]
> Then = Commence une suite
d'instructions exécutées sous condition [PRGM]
[2]
> Else = Commence une suite
d'instructions exécutées si la condition est fausse [PRGM] [3]
> End = Termine une suite
d'instructions If-Then-Else [PRGM] [7]
> Lbl = Insère une
étiquette (label) [PRGM] [9]
> Goto = Branchement du
programme vers une étiquette (aller vers un label) [PRGM] [0]
Introduction :
Nous allons maintenant mettre en pratique ce que nous avons vu dans le dernier tutoriel. Celui-ci sera aussi dur que le dernier... mais bon : on s'y fait et après vous pourrez faire de bons programmes. Des anti-sèches par exemple... Ahh! Je vois que ca vous motive, ça? Alors allons-y pendant que vous êtes prêt.
Condition simple :
Dans notre exemple, nous allons demande d'enter un chiffre. Si
le chiffre est exacte, l'écran affichera "BRAVO".
On pourra utiliser cette partie de code dans un jeu de style
Devine le nombre.
Voici la version simpliste du programme (juste pour comprendre
les tests) :
:Input N Demande
au joueur un d'enter un nombre
:ClrHome Efface
l'écran pour que le joueur deux ne voit pas le chiffre
:Input C Demande
au joueur deux d'enter un nombre
:If C=N Si le
joueur deux a deviné le nombre du joueur 1...
:Disp "BRAVO" ...Alors afficher le message BRAVO
On s'explique : si la condition (C=N)
après If se révèle non nulle (donc
vraie), l'instruction qui suit le test (Disp
"BRAVO") sera exécutée. Si C=N vaut 0 alors l'instruction suivante
n'est pas exécutée. Essayez le programme pour voir...
Maintenant (juste pour voir si vous avez compris), modifiez le
programme pour afficher "FAUX" si les nombres sont
différents et ne rien afficher s'ils sont égaux.
J'attend... Ça y est? Bon, alors voilà la réponse :
:Input N Demande
au joueur un d'enter un nombre
:ClrHome Efface
l'écran pour que le joueur deux ne voit pas le chiffre
:Input C Demande
au joueur deux d'enter un nombre
:If C<>N Si
le joueur deux n'a pasdeviné le nombre du joueur 1...
:Disp "FAUX" ...Alors afficher le message FAUX : Cette ligne
n'est exécutée que si la condition est vraie
Il n'y avait qu'à remplacer C=N par C<>N (<>
est le signe différent) et Disp
"BRAVO" par Disp
"FAUX"! Simple, non? Vous auriez pu, en
utilisant le tutoriel précédent, remplacer "If C=N" par "If
not(C=N)". Si vous y avez pensé, vous irez loin dans
la programmation!! J'espère, cependant, que vous comprenez tous
cette ligne?
Condition à exécution de plusieurs commandes :
Des fois, il vous faudra exécuter une suite de commandes
seulement si une condition est vraie. Dans ce cas, nul besoin de
faire plusieurs fois le test! L'exemple suivant n'est qu'une
partie de code qui, en cas de perte, affiche le score.
Voici le programme :
:18->S Initialise
le score...
:Input V Initialise
le nombre restant de vies pour la démo : Entrez 0 ou un autre
chiffre pour voir les effets
:Début du
programme...
:If V=0 Si le
nombre de vies (V) est à zéro...
:Then ...Alors...
(les instructions qui suivent ne seront exécutées que si le
test se révèlle vrai)
:ClrHome ...Netoyer
l'écran texte, puis...
:Output(5,5,"SCORE:") ...Affiche "SCORE", puis...
:Output(5,11,S) ...Affiche
le score contenu dans S...éro...
:End ...Fin des
instructions exécutées seulement
si le test se révèlle vrai
:Output(8,3,"FIN DE JEU") Si V était différent de zéro, seule cette
instruction est exécutée
Je pense que vous devez comprendre : comme pour le premier
exemple (l'instruction qui suit le test n'est exécutée que si
la condition est vraie) c'est maintenant, non plus une, mais
plusieurs instructions qui sont exécutées si le test est vrai :
celles situées entre le Then et le End.
Else :
Nous allons reprendre le premier exemple et afficher
"EXACT" si le joueur a découvert le bon nombre et
"FAUX" dans le cas contraire. Nous allons utiliser une
structure pratiquemnt similaire au précédent exemple, à savoir
: If-Then-End en rajoutant Else
("Sinon", en français)
Voici le programme :
:Input N Le
joueur 1 inscrit le nombre à deviner
:ClrHome Pour
que le joueur 2 ne voit pas le nombre inscrit
:Input C Le
joueur 1 inscrit un nombre
:If C=N Si le
nombre est exact...
:Then ...Alors...
(si le test se révèlle vrai)
:Disp "EXACT" ...Affiche EXACT, vous devez le savoir
maintenant...
:Else ...Affiche
"SCORE", puis...
:Disp "FAUX" ...Affiche FAUX...
:End ...Fin des
instructions de la boucle
If-Then-Else
À ce stade, cette nouvelle commande a due être facile à
assimiler. Pour les dures de la comprenette qui n'ont pas envi
d'abandonner leur apprentissage, si C=N
est vrai, les instructions (dans l'exemple : une seule) entre Then et Else
sont exécutées. Sinon (si le test est faux) ce sont les
instructions entre Else et End qui sont exécutées. Très simple!
Vous savez désormais tout sur les boucles If-Then-Else. Pour
finir, sachez que ces boucles (comme les autres que nous verrons
plus tard) sont embriquables.
Les branchements :
Encore un petit truc simple et rapide doit être appris pour
pouvoir commencer à faire des programmes. Il s'agit des
instructions Lbl et Goto. La première n'est autre qu'une
étiquette (label en anglais) et la seconde, une commande qui
permet d'aller au label. Les labels ont deux caractères maximum
et sont formés de chiffres ou de lettres ou du 0
(théta).
Voici le programme :
:0->A Initialise
A
:Lbl 0 Étiquette
nomée 0
:A+1->A Augmente
A de 1
:Disp A Affiche A
:If A=10 Si A a attein la valeur
10...
:Goto A ...Aller à l'étiquette A :
Plus tard dans le programme
:Goto 0 Va à l'étiquette 0 (Bien
avant dans le programme) pour augmenter A
:Lbl A Étiquette A
Vous voyez que c'était très simple... mais indispenssable
(enfin presque) pour créer de bons programmes. Vous avez
également vu que l'instruction Goto
peut rediriger l'exécution du programme vers une étiquette
située avant (au début du programme, par exemple) ou après
(pour passer des instructions, par exemple) la ligne actuelle
d'exéuction du programme.
Conclusion :
C'est assimilé? Une fois de plus cette leçon était très importante. Vous pouvez maintenant faire de bons programmes non linéaires (avec des branchements et des répétitions...).
Nous allons donc faire un programme ensemble pour juger de vos
aptitudes de programmeur débutant!
Cliquez ici pour commencer votre
première application concrète. Je vous le recommande
vivement. De plus, ce programme n'est pas comme les exemples : il
est complet
Retour : Sommaire
Aide : Liste
des commandes
Application 1 : Plus petit / plus grand
Précédent : Tutoriel
04 : Les opérateurs logiques
Suivant : Tutoriel
06 : Utiliser les touches dans un programme