- Codeblock
-
Los Codeblocks reciben su nombre a partir del término inglés CodeBlock, que significa literalmente "Bloque de Código". Un Codeblock sirve esencialmente para diferir la ejecución de una rutina o conjunto de instrucciones. Si se siguen las normas de la programación estructurada, su uso se torna innecesario.
Contenido
Origen
Con la aparición de miniprocesadores más potentes, la programación planificada pierde sus fundamentos en favor de la programación de sistemas dirigidos por datos. Esto marca el final del uso de la programación monolítica gobernada por Assembler, C, Pascal y fundamentalmente COBOL. Con la liberación de su Clipper versión 5.0, (en 1990) Nantucket proporciona un nuevo tipo de datos al cual llamó CodeBlock. Este nace de la necesidad de suprimir el uso de macroinstrucciones o macrosubstituciones. Estas macroinstrucciones o macrosubstituciones también se abreviaron para pasar a llamarse simplemente "macros". En la actualidad existen otros lenguajes de programación que encontraron útiles la definición y conceptos subyacentes en el término CodeBlock.
bBloqueDeCodigo:= { | <ListaDeParametros,...> | Código Clipper Ejecutable }
Sea un arreglo con datos, el recorrido iterativo del mismo se produce con la instrucción AEVAL(), la cual posee la sintaxis:
AEval( <aArreglo>, <bBloqueDeCodigo>, [<nInicio>], [<nCantidad>], [<lAsignar>] ) --> aArreglo
Parámetros
<aArreglo>
<aArreglo> es un arreglo cuyos elementos se pasan al bloque de código.
<bBloqueDeCodigo>
<bBloqueDeCodigo> es un bloque de código que se ejecuta para cada elemento del arreglo.
<nInicio>
<nInicio> es un valor numérico especificando el primer elemento del arreglo <aArreglo> para elcual el bloque de código se ejecutará. El valor predeterminado es 1.
<nCantidad>
<nCantidad> es un valor numérico indicando el número de elementos pasados al bloque de código comenzando desde la posición <nInicio>. Si falta <nCantidad>, se pasarán al bloque de código secuencialmente todos los elementos desde <nInicio> hasta el último del <aArreglo>.
<lAsignar>
La expresión lógica <lAsignar> determina cuando se permitirá una asignación dentro del bloque de código. Si <lAsignar> es Verdadero (.T.), el elemento del arreglo se pasa por referencia. Si se realiza una asignación en el bloque de código, ésta se reflejará en el correspondiente elemento del arreglo.
Sea una porción de código ejecutable agrupado en una rutina llamada "Procedimiento()".PROCEDURE Procedimiento() LOCAL nEleccion LOCAL aAcciones = {; { || Altas() },; { || Bajas() },; { || Modificaciones() },; { || nEleccion:= 0 }; } nEleccion:= -1 WHILE nEleccion <> 0 @ 10, 10 PROMPT "Altas" @ 11, 10 PROMPT "Bajas" @ 12, 10 PROMPT "Modificaciones" @ 13, 10 PROMPT "Salir" MENU TO nEleccion IF nEleccion > 0 EVAL( aAcciones[nEleccion] ) ENDIF ENDDO RETURN
- En el ejemplo dado, el ciclo WHILE...ENDDO será cerrado mientras el usuario no realice elección alguna.
- Si el usuario presiona la tecla ESC, nElección será asignado con un 0 y el ciclo se romperá.
- Cuando el usuario elija alguno de los elementos del menú entonces nEleccion será distinto de cero pero tendrá un valor entre 1 y 4.
- En ese caso será evaluada positivamente la comparación nEleccion > 0 y será evaluado el bloque de código almacenado en el arreglo aAcciones.
- Préstese especial atención al último elemento de aAcciones, el cual implica una asignación en tiempo de ejecución.
- Esa asignación produce la ruptura del ciclo.
Eval( <bBloqueDeCodigo>, [<ListaDeExpresiones,...>]) --> xUltimoValor
Parámetros
<bBloqueDeCodigo>
<bBloqueDeCodigo> es un bloque de código que se ejecutará.
<ListaDeExpresiones,...>
<ListaDeExpresiones,...> es una lista de expresiones cuyos valores serán pasados al Bloque de Código como parámetros.
Beneficios
Los Bloques de Código son el intento de substituto de las macroinstrucciones de Clipper. Las macros tienen fundamento de existencia en la necesidad de crear variables dinámicamente, construir expresiones regulares y ejecutarlas en tiempo de ejecución.
Consecuencias
Esa posibilidad, sobreexplotada, ocasiona una gran carga en los mantenimientos de los sistemas desarrollados con estas macros debido a que ocultan las fallas en tiempo de desarrollo y detonan en tiempo de ejecución, en el ambiente del usuario final. Generalmente las macros son preferidas para el desarrollo de aplicaciones con escasa o nula planificación.
Referencias
Categoría:- Partes de programas
Wikimedia foundation. 2010.