Simscript III/Dictionnaire des instructions/RESERVE

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

L’énoncé reserve alloue dynamiquement l’espace mémoire pour un tableau à k-dimensions. Si l’expression by * est utilisée, seulement l’espace pour le pointeur au tableau est réservé.

Syntaxe :


quantitéi est un expression arithmétique indiquant le nombre d’éléments pour une dimension donnée du tableau. Si l’expression arithmétique est une valeur réelle, cette valeur sera arrondi en entier.


Exemple :

reserve Flotte(*) as 50;
reserve Matrice (*, *) as n by m ;
reserve A(*)       as 50,
        m(*, *)    as 2*n by m / 4 ,
        b(*)       as s/t+4,
        x(*, *, *) as n  by n by k;
reserve code (*, *) as 10 by * ;
for i = 1 to dim.f(triangl(*, *)),
    reserve triangl (i, *) as i ;


Les blocs de mémoire réservés permettent de stocker les éléments d’un tableau de façon consécutive en mémoire.

  • Pour un tableau à une dimension, le pointeur de base pointe vers un vecteur d’éléments de données.
  • Pour un tableau à deux dimensions, le pointeur de base pointe vers un vecteur de pointeurs qui pointe vers les éléments de données d’une ligne du tableau.
  • Pour un tableau à trois dimensions, le pointeur de base pointe vers un vecteur de pointeurs vers une ligne, chacun pointant vers un vecteur de pointeurs à une colonne qui pointe vers les éléments de données de la colonne.
  • Pour un tableau de dimension supérieure, on applique le même raisonnement.