FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
variables globales - les sous-programmes, les variables globales et locales Emptypar Jack Aujourd'hui à 10:03

» Un autre pense-bête...
variables globales - les sous-programmes, les variables globales et locales Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
variables globales - les sous-programmes, les variables globales et locales Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
variables globales - les sous-programmes, les variables globales et locales Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
variables globales - les sous-programmes, les variables globales et locales Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
variables globales - les sous-programmes, les variables globales et locales Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
variables globales - les sous-programmes, les variables globales et locales Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
variables globales - les sous-programmes, les variables globales et locales Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
variables globales - les sous-programmes, les variables globales et locales Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
variables globales - les sous-programmes, les variables globales et locales Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
variables globales - les sous-programmes, les variables globales et locales Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
variables globales - les sous-programmes, les variables globales et locales Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
variables globales - les sous-programmes, les variables globales et locales Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
variables globales - les sous-programmes, les variables globales et locales Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
variables globales - les sous-programmes, les variables globales et locales Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
LEGO Icons 10331 – Le martin-pêcheur
Voir le deal
35 €

 

 les sous-programmes, les variables globales et locales

Aller en bas 
AuteurMessage
Jack
Admin
Jack


Nombre de messages : 2395
Date d'inscription : 28/05/2007

variables globales - les sous-programmes, les variables globales et locales Empty
MessageSujet: les sous-programmes, les variables globales et locales   variables globales - les sous-programmes, les variables globales et locales EmptyJeu 13 Sep 2012 - 10:41

Tutoriel écrit par papydall sur les sous-programmes et les variables globales et locales.

J’ai remarqué une certaine confusion dans la compréhension du fonctionnement de sous-programmes.
Je vous propose, ici, une petite explication de la chose.
J’espère qu’elle éclairera vos lanternes.

Un sous-programme est une partie indépendante d’un programme principal ou des autres sous-programmes.
Sa tâche doit être parfaitement définie. Il est souhaitable qu’il soit indépendant du corps principal du programme.
Chaque fois que vous l’appelez, les instructions de la routine sont exécutées comme si elles figuraient à l’emplacement du nom des sous-programmes dans le corps principal.

L’indépendance d’un sous-programme permet en plus de l’intégrer dans d’autres programmes.
Il est inutile de réinventer, à chaque fois, la roue !

En général, il existe 2 types de sous-programmes : les procédures et les fonctions.
Actuellement PANORAMIC connait les procédures et j’espère que les fonctions ne vont pas tarder !
La distinction fondamentale entre procédure et fonction se base sur le fait qu’une fonction retourne TOUJOURS une valeur à l’appelant.
Cela n’a rien de systématique dans le cas des procédures, elles réalisent des tâches diverses.

Variables locales et globales :
====================
Le qualificatif de « global », lorsqu’il est appliqué à un identificateur ou une variable indique que le symbole est accessible à la totalité du programme, y compris la totalité des sous-programmes. Lorsqu’une variable est déclarée dans le programme principal (c.à.d. en dehors des sous-programmes), il s’agit d’une variable globale.

Par contre, un symbole « local » n’est connu que du sous-programme où il est déclaré par DIM_LOCAL, et non des autres sous-programmes ni du programme principal.
Cela signifie que ces derniers ne peuvent en exploiter le contenu.
PANORAMIC autorise la déclaration d’un identificateur à la fois en tant que symbole local et global.
Le symbole local est alors PRIORITAIRE sur le symbole global.

Exemple :
La variable globale X déclarée dans le programme principal n’est accessible à un sous-programme que s’il ne déclare pas lui-même une variable X.
Si c’est le cas, les opérations exploitant X se réaliseront avec le contenu de la variable locale X. La variable globale de même nom ne sera ni prise en compte ni modifiée.

Utilisez tant que faire se peut des variables locales dans vos sous-programmes. Vos routines deviennent alors relativement indépendantes du programme principal, ce qui vous permet de les reprendre dans d’autres programmes.

Transmission par valeur de paramètres à une procédure
==========================================

PANORAMIC permet de transmettre des valeurs de l’appelant (programme principal ou sous-programme) à la procédure appelée.
La procédure traitera ensuite les valeurs reçues. Cela augmente les possibilités de réemploi d’un sous-programme, chaque programme pouvant transmettre des valeurs propres à la routine. De même, au sein d’un seul programme les appels peuvent se multiplier, car ils se distinguent par la transmission de valeurs différentes.

La déclaration d’une procédure avec transmission par valeur de paramètres se fait avec une liste de paramètres entre parenthèses qui suit le nom de la procédure. Cette liste énumère les valeurs à transmettre ainsi que leur type.
exemple :
Code:
SUB NomProcedure(<liste des paramètres>)


END_SUB
Admettons qu’une procédure TEST reçoive 2 valeurs A% et B% de type entier. Voici un exemple de déclaration :

Code:
SUB test(A%,B%)

END_SUB

Si, la procédure TEST devait en plus recevoir une valeur C$ de type chaine, la déclaration deviendrait :

Code:
SUB test(A%,B%,C$)

END_SUB

Une fois cette dernière déclaration effectuée, la procédure TEST sera appelée en lui transmettant très précisément 2 valeurs de type entier et une valeur de type string, STRICTEMENT DANS CET ORDRE.
A%, B%,C$ seront traités comme des variables locales à la procédure TEST. Elles reçoivent les valeurs transmises. Ce sera au travers de ces noms que vous traiterez les valeurs dans la procédure.

Le système affectera la 1ère valeur reçue à la variable A%, la seconde à B%, et la troisième à C$.
Voici un exemple de la manière dont nous appellerons la procédure TEST à partir d’un programme :

Code:
test(2,3, "salut")

Ce qui entrainerait les affectations :
A% < ---- 2
B% < ----3
C$ < ---- "salut"

REMARQUE :
L’expression « transmission par valeur » ne signifie pas que nous devons explicitement préciser la valeur car la transmission peut également porter sur des variables contenant la valeur. Mais précisons que seule la valeur, c'est à dire l’information contenue par la variable est alors transmise.
Un programme qui utiliserait « également les variables A%,B% et C$ (qui sont ici globales) et leur affecterait des valeurs, pourrait appeler la procédure TEST de la manière suivante :


Code:
A% = 2 : B% = 3 : C$ = "salut"
test(a%,b%,c$)
L’effet serait semblable à celui de l’exemple précédent. La procédure reçoit les valeurs 2,3 et "salut" et les stocke dans les variables locales A%,B% et C$.
Les identificateurs globaux ne doivent pas à tout prix être les mêmes que les symboles locaux.
Un programme qui utiliserait les variables X%,Y% et Z$, pourait appeler la procédure TEST de la manière suivante :

Code:

X% = 2 : Y% = 3 : Z$ = "salut"
test(X%,Y%,Z$)

Présentons ce que nous venons de dire d’une manière condensée.
Considérons comme acquises une déclaration et une affectation cohérente des variables, les appels de la procédure TEST, ci-dessous ont tous le même effet :

Code:
test(2,3, "salut")
test(a%,b%,c$)
test(x%,y%,z$)

PANORAMIC dépose sur la pile (la pile est une zone de la mémoire vive) une COPIE de chaque paramètre de type « valeur » transmis.
Une fois la routine exécutée, lors du retour au programme appelant, le système ELIMINERA les paramètres de la pile. Ces valeurs sont en fait des COPIES TEMPORAIRES, les valeurs d’origines connues du programme appelant NE SONT PAS MODIFIEES par l’exécution de la procédure.

Transmissions de paramètres par adresse
===============================
La version actuelle de PANORAMIC ne permet pas la transmission de paramètre par adresse.
Lorsque cela sera possible, je vous donnerais les informations utiles.

LES FONCTIONS
============
Dans la version actuelle, les déclarations de sous-programmes de type FONCTION n’est pas encore implémentée.
Disons simplement ceci :
Les fonctions ne se distinguent de procédures que par le fait qu’elles retournent systématiquement un résultat au programme appelant, ce qui permet de les utiliser dans des expressions.
La transmission de paramètres par valeur et par adresse se réalise, pour les fonctions, strictement de la même manière que pour les procédures.
Nous en parlerons peut-être une autre fois.


J’espère que j’ai éclairé un tant soit peu vos lanternes
Revenir en haut Aller en bas
https://panoramic.1fr1.net
 
les sous-programmes, les variables globales et locales
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» bug SEVERE fnc+sub n°2: variables globales corrompus
» Variables locales et DIM dynamique
» Fonctions Chaine et variables locales
» sous-programmes et fonctions
» bug SEVERE fnc+sub n°3: pb avec variables locales

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Tutoriels et éclaircissements-
Sauter vers: