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