Search this site
Embedded Files
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
  • More
    • Accueil
    • BBC BASIC
    • BBC OS
    • BBC MODULES
    • RUBRIQUES
    • LIENS

⇨ MENU ⇨ BBC BASIC

LOCAL

DESCRIPTION.


L'instruction LOCAL permet de déclarer des variables de portée locale dans une fonction personnalisée PROC ou FN.


Voir l'instruction LOCAL DATA pour mémoriser la position actuelle du pointeur de données des DATA.




SYNTAXE.


LOCAL knom?




REMARQUES.


knom peut être n'importe quelle combinaison de lettres majuscules ou minuscules et de chiffres, mais commençant par une lettre et qui ne soit pas un mot-clé du BBC BASIC.


? peut être : 

- rien, pour des valeurs numériques variables, entières ou réelles à virgule flottante ;

- &, pour des nombres entiers de 0 à 255 ;

- %, pour des nombres entiers de −2147483648 à 2147483647 ;

- %%, pour des nombres entiers de −9223372036854775808 à 9223372036854775807 ;

- #, pour des nombres réels de ±2,3E−308 à ±1,7E308 ;

- $, pour des chaines de caractères ;


L'instruction LOCAL ne s'utilise que dans des fonctions personnalisées PROC ou FN. 


Dans BBC BASIC, toutes les variables sont de portée globale par défaut, c'est-à-dire qu'une fois qu'elles ont été déclarées dans le module principal ou dans une fonction personnalisée PROC ou FN, leur valeur peut être lue ou modifiée dans le module principal, mais aussi dans toutes les fonctions personnalisées PROC ou FN.


Déclarée une variable avec le mot-clé LOCAL, dans une fonction personnalisée, permet de s'assurer qu'il n'y aura pas de correspondance avec une variable de même nom utilisée dans le module principale. Ainsi si une variable avait le même nom dans le module principale, sa valeur ne serait pas modifiée dans la fonction personnalisée. Cependant, la valeur de la variable du module principale, n'étant plus accessible dans la fonction personnalisée, il ne sera pas possible de la lire non plus.


Il n'est pas obligatoire qu'une variable de même nom existe dans le module principal pour la déclarer de portée locale avec le mot-clé LOCAL dans une fonction personnalisée PROC ou FN. Il est possible de déclarer de portée locale plusieurs variables de même nom dans des fonctions personnalisées différentes, elles seront toutes indépendantes les unes des autres et de celle qui pourrait être déclarée dans le module principal.


Si un tableau de données, ou une structure de données, est déclaré comme étant de portée locale avec le mot-clé LOCAL dans une fonction personnalisée PROC ou FN, il devra être déclaré et dimensionné avec l'instruction DIM pour pouvoir être utilisé dans cette fonction personnalisée sans provoquer d'erreur. Le format d'un tableau de données, ou d'une structure de données, peut être similaire ou différent de celui du module principal.


A la sortie de la fonction personnalisée, toutes les valeurs des variables déclarées avec le mot-clé LOCAL sont perdues. Pour pérenniser ces valeurs, pour une utilisation future avec cette même fonction personnalisée, on utilisera le mot-clé PRIVATE à la place de l'instruction LOCAL.




EXEMPLES.


kprincipal$ = "Principal"

PRINT "Dans le module principal : "; kprincipal$

PROC_Sans

PROC_Avec

PRINT "Dans le module principal : "; kprincipal$

END


REM --- Sans déclarations locales ---

DEF PROC_Sans

kprincipal$ = "non local"

PRINT "Dans la procedure SANS : "; kprincipal$

ENDPROC


REM --- Avec déclarations locales ---

DEF PROC_Avec

LOCAL kprincipal$

kprincipal$ = "local"

PRINT "Dans la procedure AVEC : "; kprincipal$

ENDPROC


retourne

Dans le module principal : Principal

Dans la procedure SANS : non local

Dans la procedure AVEC : local

Dans le module principal : non local



FOR kvaleur = 1 TO 3

kcontrole = 0

PRINT "Execution : "; kvaleur

PROC_Recursive

PRINT

NEXT kvaleur

END


REM --- fonction récursive ---

DEF PROC_Recursive

LOCAL klocal

PRIVATE kprive

kcontrole = kcontrole + 1

klocal = klocal + 10

kprive = kprive + 3

PRINT kcontrole; " - Variable locale : "; klocal; " - Variable prive : "; kprive

IF kcontrole <> 3 THEN PROC_Recursive 

ENDPROC


retourne

Execution : 1

1 - Variable locale : 10 - Variable prive : 3

2 - Variable locale : 10 - Variable prive : 6

3 - Variable locale : 10 - Variable prive : 9


Execution : 2

1 - Variable locale : 10 - Variable prive : 12

2 - Variable locale : 10 - Variable prive : 15

3 - Variable locale : 10 - Variable prive : 18


Execution : 3

1 - Variable locale : 10 - Variable prive : 21

2 - Variable locale : 10 - Variable prive : 24

3 - Variable locale : 10 - Variable prive : 27


Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de

vos remarques, vos commentaires et de vos suggestions.

Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour

TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER

avec un exemple de résolution à télécharger pour vous inspirer.

Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse