1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
!!! Declaration des variables !!
integer :: nLoop ! Nombre de boucles
integer :: iLoop ! Boucle courante
integer :: iMin(nLoop) ! Borne minimale de chaque boucle
integer :: iMax(nLoop) ! Borne maximale de chaque boucle
integer :: iStep(nLoop) ! Incrément de chaque boucle
integer :: i(nLoop) ! Index courant de chaque boucle
!!!!!!!!!!!!!!!!!!!!!!!!
!!! Valeurs a rentrer par le programmeur ou l'utilisateur
iMin(: ) = ...
iMax(: ) = ...
iStep(: ) = ...
!!!!!!!!!!!!!!!!!!!!!!
i = iMin
!!! On fixe la valeur de i a iMin. Mais a quoi va servir ce i ? i est un vecteur ou un entier ?
if (all((iMax => iMin .and. iStep > 0) .or. (iMax <= iMin .and. iStep < 0))) then ! zero trip...
!!! si la borne sup est plus grande que la borne inf et que l'increment est positif ou si l'inverse est vrai alors...
outer:do
!!! ... on fait la chose suivante
Expression sur i(: ) ...
!!! Ca c'est quoi ? Expression sur i(: ), je n'ai pas compris ce que represente i... Quel est son role ?
iLoop = nLoop
!!! On fixe la boucle courante a la valeur de la dernier boucle desiree
i(iLoop) = i(iLoop) + iStep(iLoop)
!!! La derniere valeur de i (qui donc est en fait un vecteur) est incrementee. Mais que vaut i(iLoop) puisque celui-ci n'est pas initialise ?
!!! Du coup, sans comprendre ce qui precede, je peux pas comprendre ce qui suit.
do while((i(iLoop) > iMax(iLoop) .and. iStep(iLoop) > 0) .or. (i(iLoop) < iMax(iLoop) .and. iStep(iLoop) < 0))
i(iLoop) = iMin(iLoop)
iLoop = iLoop - 1
if (iLoop < 1) exit Outer
i(iLoop) = i(iLoop) + iStep(iLoop)
enddo
enddo
endif |
Partager