FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» I Love You
par Jean Claude Aujourd'hui à 18:16

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Aujourd'hui à 18:08

» mise a jour calculatrice
par joeeee2017 Aujourd'hui à 15:57

» [solved] 3D_LINE How to ?
par Jicehel Aujourd'hui à 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Hier à 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 les sous-programmes, les variables globales et locales

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Jack
Admin
avatar

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

MessageSujet: les sous-programmes, les variables globales et locales   Jeu 13 Sep 2012 - 11: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
Voir le profil de l'utilisateur http://panoramic.free-boards.net
 
les sous-programmes, les variables globales et locales
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» les sous-programmes, les variables globales et locales
» Bibliothèque de sous-programmes
» quels services et programmes puis-je désactiver au démarrage [résolu]
» pc sous vista lent
» suppression des programmes au demarrage [résolu]

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: