| ||
auteur : Germain Salvato-Vallverdu | ||
Une variable simple correspond à une zone mémoire et contient une valeur. Il est possible de regrouper sous un
même nom de variable un ensemble de zone mémoire et donc un ensemble de valeurs. Chaque valeur (ou zone
mémoire) de la même variable est alors repérés par un indice.
C'est variables sont, par exemple, des listes (variables à un indices) ou des tableaux (variables à 2 indices)
ect ... Elles sont très largement utilisée dans les programmes.
|
| ||||
auteur : Germain Salvato-Vallverdu | ||||
Pour déclarer une variable indicée, il faut préciser son type (entier, réel, chaîne de caractères ...) et sa
dimension, c'est à dire le nombre d'éléments qu'elle contient.
Pour ce qui est de la dimension, depuis Fortran90 on a deux possibilités : une déclaration statique ou
dynamique. Dans une déclaration statique, la dimension de la variable est donnée au départ et est fixée
pour le reste du programme. A l'exécution du programme une zone mémoire dont la taille dépend de la dimension
est réservée pour toute la durée de l'exécution.
On remarque que lorsqu'on donne la dimension d'une liste ou d'un tableaun, on peut préciser les valeurs min
et max des indices. Ceux-ci ne commencent pas forcément à 1 ou 0. Dans le troisième exemple on ne donne que
la dimension, 10, l'indice commence alors à 1.
Dans une déclaration dynamique, on ne précise que le nombre d'indices souhaités. Puis, pendant l'exécution,
on alloue, avec la commande allocate, la mémoire nécessaire au moment ou on a besoin de
la variable. On peut ensuite libérer la zone mémoire lorsqu'on n'en a plus besoin, avec la commande
deallocate.
L'intérêt d'allouer les variables indicées de façon dynamique est de n'utiliser que la mémoire nécessaire
au moment où on en a besoin. De plus, on peut calculer la dimension d'une variable indicée dans le programme
et avoir une variable indicée de la dimension souhaitée.
Remarque : Dans les sous programmes la déclaration dynamique est impossible, sauf dans le cas des modules.
Dans le cas de la déclaration statique, l'utilisation des paramètres pour déclarer les dimensions des variables
est utile.
|
| ||
auteur : Germain Salvato-Vallverdu | ||
On utilise la même syntaxe que pour une variable normale, sauf qu'il faut préciser le ou les indices.
|
| ||
auteur : Germain Salvato-Vallverdu | ||
En fortran77, pour agir sur plusieurs éléments d'une variable indicée, il faut écrire une instruction
pour chaque élément ou écrire une boucle. Le fortran90 permet d'agir sur plusieurs éléments en une seule
instructions.
Remarque : Il n'est pas nécessaire de préciser les : entre parenthèses, le nom de la variable est
suffisant. Cependant par un souci de clarté et de lisibilité du programme il est préférable de l'écrire.
|
| ||
auteur : Germain Salvato-Vallverdu | ||
Le fortran 90 permet d'additionner et soustraire des variables indicées de même dimension sans
utiliser de boucles. On utilise simplement les opérations standards comme pour une variable normale.
La multiplication ou division de variables indicées ayant un sens particulier (produit scalaire,
produit de matrice), des fonctions spéciales sont disponibles.
Remarque : Il n'est pas nécessaire de préciser les : entre parenthèses, le nom de la variable est
suffisant. Cependant par un souci de clarté et de lisibilité du programme il est préférable de l'écrire.
|
| ||
auteur : Germain Salvato-Vallverdu | ||
On utilise la fonction sum(arg).
|
| ||
auteur : Germain Salvato-Vallverdu | ||
On utilise la fonction product(arg).
|
| ||
auteur : Germain Salvato-Vallverdu | ||
On utilise la fonction transpose(arg).
|
| ||
auteur : Germain Salvato-Vallverdu | ||
On utilise la fonction matmult(arg1,arg2) qui permet de faire un produit de matrice. Il est cependant
nécessaire que le premier indice soit celui de la ligne et le second celui de la colonne.
ATTENTION : Comme dans un produit de matrice, le nombre de colonnes du premier argument de matmult
doit être égal au nombre de lignes du second argument.
|
| ||
auteur : Germain Salvato-Vallverdu | ||
On utilise la fonction dot_product(arg1,arg2), qui calcule le produit scalaire des vecteurs donnés
en arguments 1 et 2.
|
Copyright © 2008 developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.