next up previous contents
Next: Construction et initialisation de Up: Les tableaux Previous: Les tableaux   Contents

Les sections de tableaux

Il est possible d'affecter une partie d'un tableau (section) à une autre partie d'un tableau du même profil.

W = Q(1:5)           ! est equivalent a
                     ! DO i = 1, 5
                     !    W(i) =  Q(i)
                     ! ENDDO
W = Q(4:8)           ! DO i = 1, 5
                     !    W(i) =  Q(i+3)
                     ! ENDDO
U=5./V +A(3:7,5)     ! DO i = 1, 5
                     !    U(i) =  5./V(i)+A(i+2,5)
                     ! ENDDO
La correspondance entre deux tableaux est déterminée par la position à l'intérieur de l'étendue et non pas par les valeurs des indices.
 
       D(4:9,6:10)=A(2:7,5:9) + B(1:6,14:18)
chaque section est une matrice de profil (6,5). Ceci est équivalent
     DO i = 4, 9
        DO j = 6, 10 
           D(i,j) = A(i-2,j-1) + B(i-3,j+8)
        ENDDO
     ENDDO
$ \ominus$ En cas de ``recoupement''. Considérons par exemple :

 
       Q(2:9) = Q(1:8) +  Q(3:10)
Ici $ Q(2) = Q(1)+Q(3)$, $ Q(3) = Q(2)+Q(4)$; $ Q(3)$ recoit lui même une valeur dépendant de $ Q(2)$ et $ Q(4)$. De quel $ Q(2)$ s'agit-il? de l'ancienne valeur ou de la nouvelle? La règle adoptée par le fortran est la suivante : La valeur d'une expression tableau est entiérement évalué avant d'être affectée. L'exemple précédent est équivalent à
       Qbis = Q     ! Qbis est tableau de meme taille que Q
       DO i = 2, 9 
          Q(i) = Qbis(i-1)+Qbis(i+1)
       ENDDO
Il est déconseillé d'utiliser ce type de recoupement pour la lisibilité du programme.



Mazen Saad 2002-12-12