Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > Calculatrices > Ti > Le Ti-Basic > Notions "avancées" > Labels & Goto > Lecture du tutoriel

Labels & Goto

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : Lanfeust 313
Visualisations : 11 186

Plus d'informations Plus d'informations
Nous avons déja plusieurs types de boucles avec les Repeat & les Whiles qui permettaient de revenir en arrière dans votre programme.

Mais je vais vous apprendre à vous servir d'un autre type de "boucle" : Les Goto.

Pourquoi ? Eh bien c'est ce que nous allons voir ! :p
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Lbl & Goto

Explication



Pour faire ce type de boucles, nous avons besoin de deux instructions, en fait :


Le principe de ces instructions est très simple : elles marchent par paires.

Un Goto permet de passer directement à la ligne d'instruction d'un Label.

Mais si on a plusieurs Goto et Labels, comment fait-on pour les différencier ? o_O

C'est très simple : chaque Goto et Label doit être associé à un indice (un chiffre allant de 0 à 99 ou une lettre allant de A à Z + le têta).
Voilà la syntaxe :
Code : Pascal
1
2
:Lbl [indice]
:Goto [indice]

Par exemple :
Code : Pascal
1
2
:Lbl 15
:Goto 15


Mais je crois que le mieux est de sortir un joli schéma pour expliquer tout ça ! :D



Image utilisateur

Commentons ce code point par point : :)


Exemple



Un premier exemple concret : comment sortir d'une boucle While en plein milieu ? ... Avec un Goto, bien sûr ! :p
Code : Pascal
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
:0->A
:While 1 // une boucle infinie ! A bannir ou à utiliser avec précaution
:Disp "COUCOU"
:If A=4:Goto 1
:Disp "COUCOU 2"
:A+1->A
:End
:Lbl 1
:Disp "FIN"
:Output(1,1,"

Quand A est égal à 4, alors on sort de la boucle pour aller jusqu'au label 1. le "COUCOU 2" ne s'affiche pas, mais le texte "FIN" s'affiche !

Contre-exemple



Même si les Goto peuvent sembler très pratiques, je vous conseille d'abord de vous habituer à utiliser les While, qui sont souvent moins lourds. :)
Code : Pascal
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
:Lbl A
:Disp "TEST"
:If A=B:Goto B
:Goto A
:Lbl B
:Disp "FIN"
// Ce code équivaut à celui-ci !
:Repeat A = B
:Disp "TEST"
:End
:Disp "FIN"

La sentence est sans appel ! Le Repeat est plus pratique, plus lisible et moins lourd ! :D

Les Goto sont donc à utiliser avec parcimonie. Très pratiques sur des gros programmes, ils peuvent parfois fabriquer de gros bugs difficilement détectables (oubli d'un label, mauvais indice,...)

On retient donc : utiliser les boucles While et Repeat dès que possible, sinon les Goto ! :)

Menu

Bien ! Je vais vous poser un autre problème : si vous me codiez un joli menu ? Avec une jolie liste et plein d'options... :p Compliqué, non ?

Eh bien, votre Ti vous propose une fonction tout prête pour faire ça, et elle marche avec les Goto ! C'est la fonction Menu.

Et voilà ce que ça donne ! Pas mal non ? ;)

Image utilisateur


Vous trouverez le menu en faisant [PRGM] + CLT + C.
Ce qu'il faut savoir, c'est que chaque choix (numéroté de 1 à 7) est associé à un label. Quand vous choisissez une option en utilisant les flèches directionnelles et Enter, vous allez sauter directement à un label bien déterminé. :)

Pour écrire le menu, il faut d'abord indiquer son titre entre guillemets, puis pas plus de 7 fois : un nom d'option entre guillemets puis un label associé à cette option.
Code : Pascal
1
:Menu("titre","option 1",[label],"option 2",[label],...

Par exemple :
Code : Pascal
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
:Menu("MENU DU SDZ","CHOIX 1",A,"CHOIX 2",B,"CHOIX 3",15
:Lbl A
:Disp "CHOIX 1"
:Goto 99
:Lbl B
:Disp "CHOIX 2"
:Goto 99
:Lbl 15
:Disp "CHOIX 3"
:Lbl 99
:Disp "FIN"

Plusieurs options peuvent pointer vers un même label ! :D

Pensez à prévoir la suite du comportement du programme, pour qu'il n'exécute pas des portions de codes non désirés ! C'est source de beaucoup d'erreurs !


Exercice



Allez : un petit exo tout simple. Ecrivez un programme (contenant un menu) permettant de calculer la surface de plusieurs figures géométriques.

A vos Ti... :p

Et voici la correction (je n'ai fait que 2 figures, à vous de rajouter les autres).
Notez l'apparition de l'instruction Pause ([PRGM]+Clt+8), qui permet de mettre le programme en pause jusqu'à l'appui d'une touche.
Secret (cliquez pour afficher)
Code : Pascal
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
:0->C:0->H
:Lbl 0
:ClrHome
:Menu(" GEOMETRIE ","RECTANGLE",A,"TRIANGLE",B,"QUITTER",99
:Lbl A
:Input "LONGUEUR:",C
:Input "HAUTEUR:",H
:Disp C*H
:Pause
:Goto 0
:Lbl B
:Input "BASE:",C
:Input "HAUTEUR:",H
:Disp (C*H)/2
:Pause
:Goto 0
:Lbl 99
:ClrHome
:Output(1,1,"


Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 06/05/2006 à 10:10:28
Modifié : le 22/08/2008 à 15:51:00
Avancement : 0%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 463 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0707s (0.0583s)