Gambas France BETA


Pas de compte ? Incription

Les Fonctions :

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 :



====================