Saltar navegación

Documentación de FlexPro 2025

Para cada elemento...Fin

Repite una serie de instrucciones para todos los elementos de una lista.

Sintaxis

[Parallel] For Each Element Contador In Lista Do

   [Instrucciones]

End

La sintaxis de la instrucción For Each Element...End consta de las siguientes partes:

Parte

Descripción

Contador

Variable que se utiliza como contador de bucles. No es necesario declarar el contador de bucles con Dim.

Lista

La lista cuyos elementos se van a contar.

Instrucciones

Una o varias instrucciones que se ejecutan para cada elemento de la Lista.

Notas

El bloque For Each Element se ejecuta si hay al menos un elemento en la Lista. En este caso, el programa ejecuta todas las instrucciones del bucle con un Contador igual a cero. El bucle se repite para todos los elementos de la Lista, mientras el contador toma los valores de cero hasta el número de elementos menos uno. A continuación, el programa sale del bucle y continúa la ejecución con la instrucción que sigue a la instrucción End.

Puede cambiar el valor del Contador dentro de un bucle, pero esto hace más difícil entender y probar el código. El Contador se utiliza a menudo dentro del bucle para indexar un elemento de una Lista.

Si antepone la palabra clave Parallel, las pasadas de bucle en las ediciones Professional y Developer Suite de FlexPro se ejecutan simultáneamente en lugar de uno tras otro. FlexPro distribuye entonces la ejecución a un máximo de tantos hilos ejecutándose simultáneamente como núcleos de procesador haya. Esto conlleva la correspondiente multiplicación de la velocidad de procesamiento, siempre que esta no se vea limitada por otros factores, como la recarga de grandes conjuntos de datos desde el disco duro.

La ejecución paralela tiene una serie de consecuencias que debe conocer:

Se crea una instancia independiente para cada hilo para el contador de bucles y para las variables locales que declare dentro del bloque Parallel For Each Element. No se permite el acceso a dicha variable desde fuera del bloque.

Una variable local que declare encima del bloque Parallel For Each Element es compartida por todos los hilos. Si escribe en una variable de este tipo dentro del bloque, su valor también cambia bruscamente para los demás hilos.

Como el orden de las pasadas de bucle no está definido, no se pueden utilizar conceptos como la recogida de resultados individuales con el operador de agrupación. En su lugar, debe dimensionar suficientemente el resultado antes del bucle y, a continuación, introducir los resultados individuales utilizando la asignación indexada.

La instrucción Break no está permitida en un bucle paralelo.

Disponibilidad

FlexPro View, Basic, Professional, Developer Suite

Ejemplo

El siguiente ejemplo proporciona una lista con las derivadas de las señales de la lista pasada como argumento:

Argumentos ArgList

Dim ResultList = List(ArgList, "Derivative")

Parallel For Each Element i In ArgList Do

    ResultList.[i] = Derivative(ArgList.[i])

End

ResultList

Véase también

Instrucción For Each Column...End

Instrucción For Each Row...End

Instrucción For Each Value...End

Instrucción For...End

Instrucción While...End

Instrucción Do...While