Branchements, tests et boucles
Les branchements vont vous permettre d’interrompre le déroulement ligne à ligne du programme en sautant à une ligne spécifiée.
Les sauts
L’instruction GOTO effectue un saut inconditionnel à la ligne spécifiée en paramètre. Par exemple :
10 PRINT "BONJOUR"
20 GOTO 10
30 END
A la ligne 20, l’instruction GOTO 10 va commander à l’interpréteur de poursuivre l’exécution à la ligne 10. Ainsi, la chaîne de caractère "BONJOUR" sera affichée à l’infini (la saisie de CTRL-C interrompe le programme).
Les tests
Il est très souvent nécessaire d’effectuer des sauts conditionnels ou d’exécuter une suite d’instructions à la condition qu’une expression logique soit vraie. L’instruction IF est faite pour cela :
IF <expr_logique> THEN <suite d'instructions>
La suite d'instruction figurant après le mot-clé THEN est exécutée si l'expression logique est vraie.
IF <expr_logique> THEN ligne
Il s'agit d'une variante ; si exp_logique est vraie, le programme saute à la ligne spécifiée après le THEN
Voir un exemple :
10 PRINT "Entrez A ";:INPUT A
20 PRINT "Entrez B ";:INPUT B
30 IF A=B THEN T$ = "egal"
40 IF A>B THEN T$ = "superieur"
50 IF A<B THEN T$ = "inferieur"
70 PRINT "A est ";T$;" a B"
100 END
Les boucles FOR
La commande FOR...NEXT permet d’exécuter une boucle en itérant sur une variable réelle ou entière. Le plus simple est de partir d’un exemple.
10 REM ***** Exemple de boucle FOR ****
15 PRINT "Affichage des carres de 1 a 10"
20 FOR I=1 TO 10
30 PRINT I;" x ";I;" = ";I*I
40 NEXT I
50 END
La boucle FOR commence à la ligne 20 et se termine à la ligne 40, avec l’instruction NEXT. Le fonctionnement est le suivant :
- Ligne
20, la variableIest initialisée à1 - Puis
Iest comparée à la valeur située après le mot-cléTO, soit10dans notre exemple. - Comme
Iest inférieur ou égal à10, l’interpréteur poursuit l’exécution à la ligne30puis à la ligne40 - La ligne
40contient l’instructionNEXT Iqui termine la boucle.Iest incrémenté de1puis l’interpréteur revient à la ligne20. - Tant que
Iest inférieure ou égale à10, la boucle continue à être exécutée. - Dès que
Idépasse10, le programme sort de la boucle et passe à la ligne située juste après leNEXT(la ligne50).
La syntaxe générale est :
FOR var = val_init TO val_limite STEP pas
...
...
NEXT var
La variable var est initialisée à val_init puis incrémentée de pas à la ligne contenant l'instruction NEXT var, jusqu'à ce qu'elle soit supérieure ou égale à val_limite (les numéros de ligne ne sont pas représentés ici).
Il est possible de faire décroître la variable var, si val_limite < val_init et pas est négatif.
L’équivalent en C de la bouche FOR...NEXT est :
for( var = var_int ; var <= val_limite ; var += pas) {
...
...
}
Les sous-routines
Il n’y a pas de fonction ni de procédure en BASIC. Le langage comprend une notion de sous-routines (subroutine en anglais) permettent d’appeler une section du programme puis de reprendre l’exécution juste après l’instruction d’appel, à la fin de la sous-routine. L’appel se fait grâce à l’instruction GOSUB, en précisant le numéro de ligne où se trouve la sous-routine. La fin de la sous-routine est définie par l’instruction RETURN. Le plus simple est de voir un exemple :
1 REM ***** Exemple de sous-routine *****
10 CLS:PRINT "Ce programme est une demo de l'utilisation de sous-routine"
20 GOSUB 100
30 PRINT "La sous-routine peut etre appelee autant de fois que necessaire."
40 GOSUB 100
50 PRINT "Et elle evite de la redondance de code."
60 GOSUB 100
70 PRINT "Elle est très utilisee en BASIC."
80 GOSUB 100
90 END
99 REM ***** Sous-routine *****
100 PRINT "Pressez une touche pour continuer. ";
110 INPUT X$
120 CLS
130 RETURN
La sous-routine débute à la ligne 100 et se termine à la ligne 130 avec l’instruction RETURN. Elle affiche un texte, attend une saisie par l’opérateur puis efface l’écran. Elle est appelée plusieurs fois, aux lignes 20, 40, 60 et 80, grâce à l’instruction GOSUB.
