Commençons par une fonction appelée Add() qui pourrait ressembler à ça en VB.Net:

' On l'appelle:
msgbox Add( 5, 6 )

' La fonction elle même:
Function Add( ByVal x as Integer, ByVal y as Integer )
	Return x + y
End Function

La méthode pour simuler les paramètres est d'utiliser une pile. De cette manière les fonctions peuvent être appelée de manière récursivement en toute sécurité, si c'est nécessaire.

Small Basic possède une classe Stack avec des méthodes PushValue et PopValue. Vous pouvez avoir plusieurs piles, si vous le voulez. Si nous appelons notre pile "p" (p pour Paramètre), alors pour empiler et dépiler les valeurs, la syntaxe va ressembler à ce qui suit:

Stack.PushValue( "p", 1 )
Stack.PushValue( "p", 2 )
Stack.PushValue( "p", 3 )

TextWindow.WriteLine( Stack.PopValue( "p" ) )
TextWindow.WriteLine( Stack.PopValue( "p" ) )
TextWindow.WriteLine( Stack.PopValue( "p" ) )

Cet exemple affichera: 3 2 1

Notez que Stack est une pile LIFO ("Last In First Out" - Dernier Entré Premier Sorti), donc nous dépilons les valeurs dans l'ordre inverse qu'elles ont été empilées.

Revenons à notre fonction Add(). Cette fonction à deux paramètres x et y. Donc se que nous devons faire c'est de créer une sous-routine appelée Add, et avant de l'appeler, empiler deux paramètres dans la pile, dans l'ordre inverse. Comme ceci:

Stack.PushValue( "p", 6 )
Stack.PushValue( "p", 5 )
Add()

Ainsi dans la sous-routine Add, lorsque nous appelons Stack.PopValue nous obtenons le premier paramètre. La seconde fois que nous appelons Stack.PopValue, nous obtenons le second paramètre, et ainsi de suite.

Donc l'expression VB:
x + y

Sera traduite en:
Stack.PopValue( "p" ) + Stack.PopValue( "p" )

Maintenant, comment vous allez simuler la valeur de retour. Nous pouvons décider, par convention, que la valeur de retour d'une sous-routine est empilée dans la pile avec de sortir de la sous-routine, et l'appelant de la sous-routine doit dépiler la valeur pour obtenir la valeur de retour. Donc appeler notre sous-routine Add, et afficher le résultat va finir par ressembler à ça:

Stack.PushValue( "p", 6 )
Stack.PushValue( "p", 5 )
Add()
TextWindow.WriteLine( Stack.PopValue( "p" ) )

et la sous-routine Add doit ressembler à:

Sub Add
  Stack.PushValue( Stack.PopValue( "p" ) + Stack.PopValue( "p" ) )
End Sub

Donc, c'est ainsi que vous pouvez simuler les paramètres dans Small Basic.

Pour simuler des Variables Locales, voir Small Basic: Comment Simuler des Variables Locales.

Par Kenny Kasajian http://kasajian.com

Autres Langues