Suiv.: Structures de Données
Sup.: Généralités
Préc.: Fonctions interprétées
Index
Table des matières
La notion de tableau dynamique concerne le développeur de nouveaux modules plutôt que l' utilisateur de modules existants. Ce dernier doit uniquement écrire un programme principal, comme indiqué dans la figure 1.2.
Figure 1.2: Exemple de programme principal
Ce programme principal comprend :
Pour le développeur de nouveaux modules, la notion de tableau est très courante en programmation. Cependant, les tableaux Fortran ont l'inconvénient d'être entièrement statiques : il est impossible, par exemple, de lire un entier N et de déclarer ensuite un tableau T de N réels. ( Ceci s'écrirait en C : t = (float *)malloc(n*sizeof(float)) ;) L'approche qui consiste à surdimensionner chaque tableau devient rapidement inutilisable lorsque le nombre de tableaux est trop important. Une autre approche, adoptée par Modulef, consiste à gérer tous les tableaux dynamiques à l'intérieur d'un même tableau statique (figure 1.3).
Figure 1.3: Tableaux dynamiques Modulef
Ce tableau statique unique, appelé super-tableau M, est déclaré dans le programme principal et passé en paramètre à tout module. Cependant, quelques modules échappent à cette règle, ce qui explique l'emploi de l'instruction COMMON.
Un certain nombre d'utilitaires sont fournis pour créer, supprimer, ou ``visualiser'' les tableaux dynamiques. Cette gestion est facilitée par l'emploi d'un nom symbolique associé à chaque tableau (cf. TAB, annexe A). En réalité, chaque tableau est repéré par son adresse IATAB dans le super-tableau : l'utilitaire de création retourne un indice IATAB tel que M(IATAB) repère le premier élément du tableau créé.
Le super-tableau est amené à contenir des tableaux de types différents (entier, réel, double précision, ...). Par suite, quelques précautions sont nécessaires :
CALL SP(M(IA), ...)
et de déclarer le sous-programme SP par :
SUBROUTINE SP(D, ...)
DOUBLE PRECISION D(*)
D est alors manipulé comme un tableau Fortran classique.