next up previous
Next: Directiva INDEPENDENT Up: Estructuras FORALL y DO Previous: Estructuras FORALL y DO

Interpretación del FORALL

La estructura FORALL se ejecuta en cuatro pasos:

  1. Calcular el conjunto de índices. Los índice en el conjunto pueden tener cualquier orden.
  2. Definir el subconjunto de índices activos. Esta acción se realiza siempre y cuando exista una condicion en el FORALL
  3. Evaluar el lado derecho de las asignaciones. Esta acción se realiza para cada uno de los elementos del conjunto activo de índices.
  4. Asignar los valores calculados en el paso anterior haciendo corresponder el índice del lado derecho con el del lado izquierdo. La asignación puede ser hecha en cualquier orden.

Por ejemplo para siguiente código:

  a = (/ 4, -1, 2, -6, 0, -2,  5, -4  /)
  FORALL(i=1:12:2,a(i) /= 0) b(i) = 1.0/a(i)

Primero se calcula el conjunto de índices en base a la tripleta que los define i=1:12:2


displaymath49

luego define el subconjunto de índices válidos de acuerdo a la condición lógica a(i) /= 0


displaymath53

despues evalua todos los valores del lado derecho de la asignación 1.0/a(i)


displaymath56

por último asigna los valores a las variables respectivas del lado izquierdo


displaymath58

Un código equivalente al anterior escrito utilizando la estructura DO es el siguiente:

  a = (/ 4, -1, 2, -6, 0, -2,  5, -4  /)
  DO i=1,8,2
    IF (a(i) =/ 0.0)
      b(i) = 1.0/a(i)
  END DO

Al comparar los gráficos de precedencia del DO, a la izquierda, y del FORALL, a la derecha, se ve claramente la gran diferencia que existe entre estos dos constructores.

figure63

Miestras que el DO ejecuta una iteración despues de otra, el FORALL ejecuta un pasos y cuando finalice su ejecución para cada uno de los elementos que intervienen en el se ejecuta el paso siguiente.

La estructura FORALL ... END FORALL permite además de asignaciones, estructuras WHERE y FORALL.



Kay A. Tucci K.
Tue Apr 13 11:25:14 GMT-0400 1999