4D v16.3For...End for |
||
|
4D v16.3
For...End for
For...End for
La sintaxis formal de la estructura de flujo de control For...End for es: For(Variable_Contador;Expresion_Inicio;Expresion_Fin{;Expresion_Incremento}) El bucle For...End for es un bucle controlado por una variable contador:
Importante: las expresiones numéricas Tip: sin embargo, con fines especiales, puede modificar el valor de la variable dentro del bucle; esto afectará el bucle.
1. El siguiente ejemplo ejecuta 100 iteraciones: For(vContador;1;100) 2. El siguiente ejemplo va a través de todos los elementos del Array unArray: For($vlElem;1;Size of array(unArray)) 3. El siguiente ejemplo va a través de todos los caracteres del texto vtTexto: For($vlCar;1;Length(vtTexto)) 4. El siguiente ejemplo va a través de los registros seleccionados para la tabla [unaTabla]: FIRST RECORD([unaTabla]) La mayoría de los bucles For...End for que usted escriba en sus bases se verán como los que presentamos en estos ejemplos. En algunos casos, podría querer tener un bucle cuyo contador disminuya en lugar de aumentar. Para hacer esto, 5. El siguiente ejemplo ejecuta 100 iteraciones: For(vCounter;100;1;-1) 6. El siguiente ejemplo va a través de todos los elementos del Array unArray: For($vlElem;Size of array(anArray);1;-1) 7. El siguiente ejemplo va a través de todos los caracteres de texto vtTexto: For($vlCar;Length(vtTexto);1;-1) 8. El siguiente ejemplo va a través de los registros seleccionados de la tabla [unaTabla]: LAST RECORD([unaTabla]) Si necesita esto, puede utilizar en Expresion_Incremento un valor (positivo o negativo) cuyo valor absoluto sera mayor que uno. 9. El siguiente bucle se dirigue sólo a los elementos pares del Array unArray: For($vlElem;2;((Size of array(unArray)+1)\2)*2;2) Observe que la expresión ((Size of Array(unArray)+1)\2)*2 trata los arrays pares e impares. En algunos casos, usted podría querer ejecutar un bucle un cierto número de veces, pero luego salir del bucle cuando otra condición sea TRUE. Para hacer esto, puede probar esta condición dentro del bucle y si es TRUE, explicitamente definir la variable contador en un valor superior al valor de la expresión final. 10. En el siguiente ejemplo, se efectúa un bucle entre los registros de una selección hasta llegar al final de la selección o hasta que la variable interproceso <>vbWeStop, inicialmente definida como FALSE, se vuelva TRUE. Esta variable se maneja por un método de proyecto ON EVENT CALL que le permite interrumpir la operación: <>vbWeStop:=False Regresemos al primer ejemplo For...End for: El siguiente ejemplo ejecuta 100 iteraciones: For(vCounter;1;100) Es interesante ver cómo los bucles While...End while y Repeat...Until realizan la misma acción. Este es el bucle While...End while equivalente : $i :=1 ` Inicialización del contador Este es el bucle Repeat...Until equivalente: $i :=1 ` Inicialización del contador Consejo: el bucle For...End for es generalmente más rápido que los bucles While...End while y Repeat...Until , porque 4D prueba la condición internamente para cada ciclo del bucle e incrementa el contador. Por lo tanto, utilice la estructura For...End for cada vez que sea posible. Puede utilizar como contador una variable interproceso, proceso o local de tipo Real, Entero, y Entero largo. Para bucles largos, especialmente en modo compilado, utilice variables locales de tipo entero largo. 11. Este es un ejemplo: C_LONGINT($vlContador) ` uso de una variable local de tipo entero largo Usted puede anidar tantas estructuras de control como necesite. Esto incluye anidamiento de bucles For...End for. Para evitar errores, asegúrese de utilizar una variable contador diferente para cada estructura de bucle Estos son dos ejemplos: 12. El siguiente ejemplo va a través de todos los elementos de un Array de dos dimensiones: For($vlElem;1;Size of array(unArray)) 13. El siguiente ejemplo construye un Array de punteros para todos los campos de tipo Fecha presentes en la base: ARRAY POINTER($apCamposFecha;0)
Ver también
Case of...Else...End case
|
PROPIEDADES
Producto: 4D
HISTORIA
ARTICLE USAGE
Manual de lenguaje 4D ( 4D v16) |