Histórico da Página
...
A veces, es necesario interrumpir la ejecución de las instrucciones contenidas dentro del WHILE antes que se llegue al final. Para ello se utiliza el comando LOOP. Este comando permite la interrupción lógica del comando WHILE, volviendo el flujo de ejecución al inicio del mismo. Observe el siguiente ejemplo:
Sem Formato |
---|
// Función de cálculo FUNCTION CalcGrao(nSacas, aAlmox) LOCAL nPos := 0 LOCAL nReserva := 0 LOCAL nSoma := 0 WHILE nPos < LEN(aAlmox) .AND. nReserva < nSacas nPos++ IF aAlmox[nPos, 2] == "N" LOOP ENDIF nSoma := nReserva + aAlmox[nPos] IF nSoma <= nSacas nReserva := nSoma ELSE nReserva := nSacas ENDIF ENDDO RETURN nReserva |
...
Otra manera de interrumpir la repetición del comando WHILE es por medio del comando EXIT (Salida). Este comando es semejante al LOOP. Sin embargo, en lugar de regresar al inicio del WHILE, se finaliza la ejecución de las instrucciones, saliendo del círculo de repetición del WHILE. De esta forma, la ejecución de las instrucciones continuará después del ENDDO. Por ejemplo:
Sem Formato |
---|
// Función de cálculo FUNCTION CalcGrao(nSacas, aAlmox) LOCAL nPos := 0 LOCAL nReserva := 0 LOCAL nSoma := 0 WHILE nPos < LEN(aAlmox) .AND. nReserva < nSacas nPos++ IF aAlmox[nPos, 2] == "N" EXIT ENDIF nSoma := nReserva + aAlmox[nPos] IF nSoma <= nSacas nReserva := nSoma ELSE nReserva := nSacas ENDIF ENDDO RETURN nReserva |
Muchas veces, también es necesario repetir un bloque de instrucciones por una determinada cantidad de veces. Para atender esta necesidad, se requiere de un comando que ejecute un bloque de instrucciones de acuerdo con un contador que controle el número de veces en el cual éste se ejecutó y finalice la ejecución cuando se alcance este límite previsto. Este comando es FOR ... NEXT. Éste repite la ejecución del bloque de instrucciones que esté entre su inicio y su final hasta que un contador alcance su límite especificado, de acuerdo con determinado incremento. Por ejemplo:
Sem Formato | ||
---|---|---|
| ||
FUNCTION CalcGrao(nSacas, aAlmox) LOCAL nPos := 0 LOCAL nReserva := 0 LOCAL nSoma := 0 FOR nPos := 1 TO LEN(aAlmox) nSoma := nReserva + aAlmox[nPos, 1] IF nSoma <= nSacas nReserva := nSoma ELSE nReserva := nSacas ENDIF NEXT nPos RETURN nReserva |
Así como el comando WHILE, el comando FOR ... NEXT también acepta el comando EXIT, que interrumpe las repeticiones aunque el contador aún no haya llegado al límite especificado. Observe el siguiente ejemplo:
Sem Formato |
---|
// Función de cálculo FUNCTION CalcGrao(nSacas, aAlmox) LOCAL nPos := 0 LOCAL nReserva := 0 LOCAL nSoma := 0 FOR nPos := 1 TO LEN(aAlmox) IF nReserva == nSacas .OR. aAlmox[nPos, 2] == "N" EXIT ENDIF nSoma := nReserva + aAlmox[nPos, 1] IF nSoma <= nSacas nReserva := nSoma ELSE nReserva := nSacas ENDIF NEXT nPos RETURN nReserva |