Search this site
Embedded Files
Mon QB64 pas à pas
  • Accueil
  • QBASIC
  • QB64
  • RUBRIQUES
  • LIENS
Mon QB64 pas à pas
  • Accueil
  • QBASIC
  • QB64
  • RUBRIQUES
  • LIENS
  • More
    • Accueil
    • QBASIC
    • QB64
    • RUBRIQUES
    • LIENS

⇨ MENU ⇨ QBASIC 

SHARED

DESCRIPTION.


L' instruction SHARED permet de partager des variables, avec les fonctions personnalisées FUNCTION ou SUB ou de préserver la valeur de variables déclarées dans des fonctions personnalisées FUNCTION ou SUB.




SYNTAXES.


DIM SHARED nom? 

DIM SHARED nom AS type

DIM SHARED AS type noma,  noma, ... , nomn


FUNCTION

...

SHARED noma,  noma, ... , nomn

...

END FUNCTION


SUB

...

SHARED noma,  noma, ... , nomn

...

END SUB




REMARQUES.


nom doit être le nom d'une variable ou d'un tableau de données existant.


Quand l'instruction SHARED est utilisée avec les mots-clés DIM ou REDIM, ce sera toujours dans le code proncipale du programme, c'est-à-dire en dehors de toutes fonctions personnalisées FUNCTION ou SUB. Dans ce cas, les variables et tableaux de données deviennent de portée globale.


Les variables et tableaux de données de portée globale pourront être manipulées, lues et/ou modifiées, dans toutes les fonctions personnalisées FUNCTION ou SUB, sans qu'il soit besoin de les nommer dans les paramètres lors de l'appel d'une fonction personnalisée. Les modifications aui leur seront apportées dans ces procédures seront pérennes à la sortie de la fonction.


Dans une déclaration DIM ou REDIM, la combinaison COMMON SHARED sera utilisée si l'on souhaite partager des variables et des tableau de données avec les modules importés par le script et les fonctions personnalisées de ces modules.


Quand l'instruction SHARED est utilisée dans une fonction personnalisée FUNCTION ou SUB elle ne doit pas être associée aux mots-clés DIM ou REDIM. Dans ce cas, toutes les variables et tableaux de données nommées après le mot-clé SHARED partage leur valeur avec le code du module principale et avec le code de la fonction personnalisée, c'est-à-dire la suite d'instructions en dehors de toute fonctions personnalisée FUNCTION ou SUB.


Quand des variables ou tableaux de données sont partagées à l'intérieur d'une fonction personnalisée FUNCTION ou SUB, leur valeur est partagée pour tout le code principal et uniquement pour la fonction qui l'a déclarée et partagée. Ces variables et tableaux de données ne sont pas accessibles pour les autres fonctions personnalisées FUNCTION ou SUB.


Si la combinaison des mots-clés COMMON SHARED permet de partager les valeurs des items pourront être lues et/ou modifiées dans tous les modules principaux appelés par le programme, ainsi que dans les fonctions personnalisées qu'ils comportent.


Si le type d'une variable ou d'un tableau de données n'est pas indiqué, elle/il est du type SINGLE (!).




RUBRIQUE.


Les tableaux de données pour plus de détails sur la création et l'utilisation des tableaux de données.




EXEMPLES.


DIM SHARED kpartage AS INTEGER

DIM  kbloque AS SINGLE

kmessage$ = "Bonjour le monde !"

kbloque = 25

PRINT "A la declaration des variables :"

PRINT "kpartage ="; kpartage, "kbloque ="; kbloque, "kmessage$ = ;kmessage$ 

FOR kpassage = 0 TO 1 

PRINT

k = FNC_Valeurs(kbloque)

PRINT "A la sortie de la fonction :";kpartage

PRINT "kpartage ="; kpartage, "kbloque ="; kbloque, "kmessage$ = ";kmessage$ 

NEXT kpassage

END


FUNCTION FNC_Valeurs (Q!)

kpartage = kpartage + 1

Q! = Q! / 2

kmessage$ = "Dans la fonction ... "

PRINT "Passage dans la fonction :"; kpartage

PRINT "kpartage ="; kpartage, "kbloque ="; Q!, "kmessage$ = ";kmessage$ 

PRINT

END FUNCTION

retourne :

A la declaration des variables :

kpartage = 0    kbloque = 25    kmessage$ = Bonjour le monde !


Passage dans la fonction : 1

kpartage = 1    kbloque = 12.5    kmessage$ = Dans la fonction ... 


A la sortie de la fonction : 1

kpartage = 1    kbloque = 12.5    kmessage$ = Bonjour le monde !


Passage dans la fonction ::2

kpartage = 2    kbloque = 6.25    kmessage$ = Dans la fonction ... 


A la sortie de la fonction : 1

kpartage = 1    kbloque = 6.25    kmessage$ = Bonjour le monde !




kpassage = 9

kgarde = 8

kperdu = 7

kcontrole = 6

PRINT "Avant l'appel de la fonction ..."

PRINT "Nbr de passage :"; kpassage; " - kgarde :"; kgarde; " - kperdu :"; kperdu; " (controle) :"; kcontrole; ")"

PRINT

FNC_Valeurs

PRINT 

PRINT "A la sortie de la fonction ..."

PRINT "Nbr de passage :"; kpassage; " - kgarde :"; kgarde; " - kperdu :"; kperdu; " (controle) :"; kcontrole; ")"


SUB FNC_Valeurs

STATIC kpassage, kgarde

SHARED kcontrole 

kperdu = 1000

IF kpassage = 0 THEN kgarde = 1000 ELSE kgarde = kgarde / 2

kperdu = kperdu * 2

PRINT "Au passage :"; kpassage; " - kgarde :"; kgarde; " - kperdu :"; kperdu; " (controle) :"; kcontrole; ")"

kpassage = kpassage + 1

kcontrole = kpassage

IF kpassage < 4 THEN FNC_Valeurs

END SUB

retourne :

Avant l'appel de la fonction ..."

Nbr de passage : 9 - kgarde : 8 - kperdu : 7 - (controle : 6)


Au passage : 0 - kgarde : 1000 - kperdu : 2000 - (controle : 0)

Au passage : 1 - kgarde : 500 - kperdu : 2000 - (controle : 1)

Au passage : 2 - kgarde : 250 - kperdu : 2000 - (controle : 2)

Au passage : 3 - kgarde : 125 - kperdu : 2000 - (controle : 3)


A la sortie de la fonction ..."

Nbr de passage : 9 - kgarde : 8 - kperdu : 7 - (controle : 4)


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