Introduction :
Les fonctions permettent de découper un programme en plusieurs "parties". Cela évite surtout d'alourdir la procédure
Main(). En gambas, Vous avez 2 types de "fonctions" :
* Les procédures : ne retournent pas de valeur
* Les fonctions : retournent une valeur
Les procédures :
Pour commencer, vous avez déjà vu la première fois une procédure, qui est le
Main(). Cette procédure est un peu spéciale car lorsque vous exécutez un programme, c'est cette procédure qui est lue la première. Voici comment on définit une procédure :
1
2
3
| PUBLIC SUB nom_procedure(argument)
END
|
Les
arguments permettent de passer des paramètres à la procédure. Si vous ne devez spécifier aucun arguments, il vous suffit de laisser une paire de parenthèses vide. Exemple d'utilisation :
1
2
3
4
5
6
7
8
9
10
11
| PUBLIC SUB bonjour() PRINT "Hello !" END
PUBLIC SUB Main()
bonjour() END
|
Résultat :
Hello !
L'appel d'une procédure s'effectue simplement en appelant son nom :-) . Maintenant, autre exemple mais avec des arguments :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| PUBLIC SUB infoUtilisateur (prenom AS STRING, age AS INTEGER) PRINT "Prénom : " prenom PRINT "Age : " & age END
PUBLIC SUB Main()
DIM prenom AS STRING DIM age AS INTEGER PRINT "Quel est votre prénom ? " INPUT prenom PRINT "Quel est votre age ?" INPUT age infoUtilisateur(prenom, age) END
|
Résultat :
Quel est votre prénom ?
François
Quel est votre age ?
21
Prénom : François
Age : 21
Les noms de variable passés à la procédure peuvent être les même que les noms de variable des arguments de la procédure. Comme vous le voyez, ça ne pose aucun problème à Gambas ;-) . Mais attention quand même,
ce n'est pas la même variable qui est utilisée! Ce sont bien 2 variables distinctes.
Les Fonctions :
Les fonctions ne se différencient pas tellement des procédures. Elle s'utilisent et se déclarent de la même façon. La différence majeure est que les fonctions retournent une valeur (suivant ainsi la définition mathématique d'une fonction : F(x) = 2x par exemple). Il faut juste indiquer quel type de valeur sera retourné. Pour l'exemple, on va demander un nombre à l'utilisateur et on lui affichera le carré de la valeur qu'il a saisi :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| PUBLIC SUB Main()
DIM nombre AS INTEGER PRINT "Entrez un nombre : " INPUT nombre PRINT "Le carré de " nombr " est de carre(nombre) END
FUNCTION carre (nombre AS INTEGER) AS INTEGER RETURN nombre * nombre 'indique la valeur que la fonction carre retournera à la procédure qu'il l'avait appelé END
|
Pour stocker la valeur retournée par RETURN, il suffit, dans la procédure appelante, de la stocker dans une variable du même type :-).
Vous trouverez des exemples pratiques de fonctions dans ce wiki. Gambas ne fournissant pas nativement de fonctions financière vous en trouverez à cette page : [[Fonctions Financières|Les fonctions financières]]
L'accessibilité :
La procédure
Main() contient le mot clé [[gambas public|PUBLIC]] devant. Pour cette procédure, c'est la signature. Mais pour les procédures que vous définissez vous-même, ce mot clé permet de définir l'accessibilité. C'est à dire, si vous avez plusieurs modules (nous verrons la programmation modulaire dans un prochain chapitre), cela permet de pouvoir appeler vos fonctions/procédures depuis d'autre modules.
Si par contre, vous souhaitez que la fonction ou la procédure ne peut être appelée que dans le module où elle a été définie, indiquez le mot clé
PRIVATE devant la procédure ou la fonction.
Page rédigée par Garulfounix====================
Navigation :
<-- Liens du Wiki : <--<-- Sommaire du WIKI : <-- <-- Rappels de Programmation <--====================
Documentation :
====================