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
» Je teste PANORAMIC V 1 beta 1
les sous-programmes, les variables globales et locales Emptypar papydall Aujourd'hui à 2:48

» bouton dans autre form que 0
les sous-programmes, les variables globales et locales Emptypar leclode Hier à 13:59

» KGF_dll - nouvelles versions
les sous-programmes, les variables globales et locales Emptypar Klaus Hier à 11:41

» Gestion d'un système client-serveur.
les sous-programmes, les variables globales et locales Emptypar Klaus Hier à 10:23

» PANORAMIC V 1
les sous-programmes, les variables globales et locales Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
les sous-programmes, les variables globales et locales Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
les sous-programmes, les variables globales et locales Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
les sous-programmes, les variables globales et locales Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
les sous-programmes, les variables globales et locales Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
les sous-programmes, les variables globales et locales Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
les sous-programmes, les variables globales et locales Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
les sous-programmes, les variables globales et locales Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
les sous-programmes, les variables globales et locales Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
les sous-programmes, les variables globales et locales Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
les sous-programmes, les variables globales et locales Emptypar jjn4 Lun 22 Avr 2024 - 13:43

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

 

 les sous-programmes, les variables globales et locales

Aller en bas 
AuteurMessage
Jack
Admin
Jack


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

les sous-programmes, les variables globales et locales Empty
MessageSujet: les sous-programmes, les variables globales et locales   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
» bug SEVERE fnc+sub n°3: pb avec variables locales
» bug SEVERE fnc+sub n°4: pb n°2 avec variables locales
» Fonctions Chaine et 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: